What to Look at Before Returns: The Path of Losses and Trading Costs
Evidence and scope — Illustrative return and cost calculations
The code and figures calculate educational, fictional return and cost scenarios. They do not measure actual strategy performance or market trading costs. Real-order spreads, slippage, and market impact require separate evidence.
If two strategies have the same return, ask how each earned it—and whether the performance survives after real-world trading costs
In Part 4, we discussed how to define a hypothesis and validation procedure before seeing the results, then run a backtest in chronological order. But passing that process does not complete the evaluation. We still need to determine how much the strategy lost along the way, how substantially it changed its positions, and whether any performance remains after costs.
When I first opened a backtest report, I looked at the highest cumulative return. The strategy with the largest ending portfolio value seemed like the best one. But strategies with the same ending return can experience losses in different sequences and follow very different recovery paths. Commissions and differences between assumed and actual execution prices can also reduce live results relative to a backtest.[S7] [S9] [S10]
So I now frame the question differently:
If two strategies have the same return, how did each earn it—and does that return survive after accounting for tradable scale and costs?
All code and numbers in this article are hypothetical examples for educational and research purposes. They do not represent the performance of an actual strategy or actual market trading costs. Nothing here is a recommendation of any security, an instruction to trade, a guarantee of returns, or investment advice.
Reading returns correctly: addition is not compounding
Suppose an investment records +10% and then -10% over two periods.
| Period | Return | Portfolio value |
|---|---|---|
| Start | — | 100 |
| Period 1 | +10% | 110 |
| Period 2 | -10% | 99 |
If we simply add the periodic returns, the result is 0%.
+10% - 10% = 0%Actual portfolio value, however, is calculated by multiplying returns sequentially. A 10% gain takes 100 to 110. The following 10% loss is then calculated from 110, not 100.
1.10 × 0.90 - 1 = -1%The ending portfolio value is therefore 99, and the compounded cumulative return is -1%. Compounding applies each new return to a portfolio value that already incorporates all earlier gains and losses, not just to the original principal.[S1]
For this reason, a backtest should distinguish at least among:
- The simple sum of periodic returns
- The cumulative return based on the actual compounded portfolio value
- The annualized compounded return over the observation period
Annualized compounded return can generally be calculated by raising the ending portfolio value to the reciprocal of the number of observed years.[S1] But the reporting should also disclose the observation frequency, start and end dates, total period, whether costs were deducted, and the exact formula. In particular, mechanically annualizing a short sample does not produce a forecast of the next year’s return.[S5]
Costs should be viewed in the same context. A cost deducted today does more than reduce today’s return: it also reduces the portfolio value on which all subsequent returns compound.[S1] [S7]
Volatility does not measure losses alone
Volatility generally summarizes, using standard deviation, how widely periodic returns are dispersed around their mean. It incorporates returns both below and above the mean.[S2]
“High volatility” and “large losses” therefore do not mean the same thing. A strategy can also have high volatility because it frequently experiences large gains.[S2]
Volatility describes the overall degree of fluctuation in periodic returns. When calculated at the same frequency using the same formula, it can help compare how much different strategies fluctuate. It does not directly answer questions such as:
- How far did the portfolio fall from a peak to a subsequent trough?
- How many consecutive periods did losses continue?
- How long did it take to recover the previous peak?
- Was the loss still unrecovered at the end of the evaluation?
- How severe might future tail losses be?
When reporting volatility, disclose whether the calculation uses daily, weekly, or monthly returns; simple or log returns; sample or population standard deviation; and how the result was annualized. Metrics such as maximum drawdown and downside deviation are needed to examine losses more directly.[S2]
Maximum drawdown shows the deepest decline
Maximum drawdown is the largest percentage loss from a peak in cumulative portfolio value to a subsequent trough during a specified evaluation period.[S3]
In this article, drawdown is calculated as follows and reported as a negative value.
Drawdown = Current portfolio value / Previous peak portfolio value - 1For example, if the previous peak portfolio value was 100 and the subsequent trough was 80, the drawdown would be -20%.
Maximum drawdown offers an intuitive answer to the question, “How far did this backtest fall from its previous peak?” But because it summarizes only the single worst episode, it does not explain how often drawdowns occurred, how long they persisted, when recovery happened, or whether the strategy remained underwater when the evaluation ended.[S3]
It is therefore better to report the following information alongside maximum drawdown:
- Evaluation start and end dates
- Calculation frequency, such as daily, weekly, or monthly
- Peak and trough dates of the drawdown
- Date on which the previous peak was recovered
- If it was not recovered, the underwater period through the evaluation end date
Maximum drawdown summarizes a loss between an observed peak and trough within a specified historical evaluation period.[S3] Even if the historical path eventually recovered, maximum drawdown alone cannot establish that a future recovery is likely.
Reproducible experiment 1: the same ending return, different loss paths
The following six-month returns are hypothetical educational data, not observations from a real market. Both paths contain the same six monthly returns, but in a different order.
| Path | Sequence of monthly returns |
|---|---|
| A: Concentrated losses | +10%, +8%, -12%, -8%, +7%, +6% |
| B: Dispersed losses | +7%, +8%, -12%, +6%, +10%, -8% |
The calculation assumptions are:
- Frequency: monthly
- Sample: six months
- Risk-free return: 0% per month
- Volatility: monthly sample standard deviation (
ddof=1), annualized by multiplying by√12 - Sharpe ratio: mean monthly return divided by monthly sample standard deviation, then multiplied by
√12 - Maximum drawdown: calculated from cumulative portfolio value, including a starting value of 1
- Drawdown convention: negative values
import numpy as npimport pandas as pdpaths = pd.DataFrame({ "A: Concentrated losses": [0.10, 0.08, -0.12, -0.08, 0.07, 0.06], "B: Dispersed losses": [0.07, 0.08, -0.12, 0.06, 0.10, -0.08],})def path_metrics(r): wealth = pd.concat( [pd.Series([1.0]), (1 + r).cumprod()], ignore_index=True, ) drawdown = wealth / wealth.cummax() - 1 return pd.Series({ "Ending cumulative return": wealth.iloc[-1] - 1, "Annualized return": wealth.iloc[-1] ** (12 / len(r)) - 1, "Annualized volatility": r.std(ddof=1) * np.sqrt(12), "Maximum drawdown": drawdown.min(), "Sharpe": r.mean() / r.std(ddof=1) * np.sqrt(12), })result = paths.apply(path_metrics).Tprint(result)The results are:
| Path | Ending cumulative return | Annualized return | Annualized volatility | Maximum drawdown | Sharpe |
|---|---|---|---|---|---|
| A: Concentrated losses | 9.0879% | 19.0017% | 32.3790% | -19.0400% | 0.6795 |
| B: Dispersed losses | 9.0879% | 19.0017% | 32.3790% | -12.0000% | 0.6795 |
Because only the order of the periodic returns changed, their compounded product and ending cumulative return are identical. The return samples themselves are also identical, so their arithmetic means, standard deviations, and Sharpe ratios calculated under the stated method are the same.
In Path A, however, the -12% and -8% losses occur consecutively. The second loss is applied to a portfolio value already reduced by the first, producing a maximum drawdown of -19.04%. Path B’s maximum drawdown is -12%.
In other words, two paths can have the same ending return, volatility, and Sharpe ratio while suffering different peak-to-trough losses. Maximum drawdown still does not fully describe the duration of losses or the time required to recover, so the cumulative portfolio-value curve and recovery status should be examined as well.[S3]
The annualized return of 19.0017% merely extends a six-month hypothetical sample under a calculation rule that assumes the same pace continues. It must not be interpreted as a forecast of performance over the next year. The simply annualized Sharpe ratio warrants the same caution because it does not account for autocorrelation or other characteristics of the sample.[S5]
These are results from two hypothetical sequences. They cannot be generalized to the performance or risk characteristics of actual strategies.
The Sharpe ratio is a starting point, not a standalone verdict
The Sharpe ratio is a risk-adjusted performance measure calculated by dividing average excess return by the standard deviation of the differential return.[S4]
Sharpe ratio= Mean(strategy return - benchmark return) / Standard deviation(strategy return - benchmark return)For a beginner, it can be read as: “How much average excess return did the strategy earn per unit of volatility?” Here, however, risk does not mean losses alone. Because the denominator is standard deviation, it reflects fluctuations in both upward and downward directions.[S2] [S4]
At minimum, a Sharpe ratio comparison should disclose:
- Return measurement frequency
- Evaluation start and end dates
- Number of observations
- Risk-free or benchmark return used
- Whether returns are before or after costs
- Annualization method
- Whether autocorrelation was adjusted for
Both the mean and standard deviation in a sample Sharpe ratio are estimated from observed data. Estimation error can vary with the sample period, measurement frequency, time-series dependence, and return distribution.[S5]
In particular, multiplying a monthly Sharpe ratio by √12 is not universally valid. If monthly returns are autocorrelated, this simple conversion can produce a distorted figure.[S5] Nor did this research find a basis for claiming that the Sharpe ratio alone adequately captures non-normal return distributions and tail risk.
This research also did not identify a universal minimum sample length beyond which a Sharpe ratio can be considered stable. Rather than using Sharpe alone to establish a definitive strategy ranking, we should read it alongside maximum drawdown, loss duration, turnover, and cost sensitivity.[S3] [S5] [S6]
Trade count and turnover are different
Trade count records the number of events such as orders, executions, or rebalances. Turnover is a size-based measure of how much of a portfolio’s holdings changed relative to portfolio value over a given period.[S6]
Changing only 10% of a position during one rebalance and replacing the entire position can both count as one trade. But they do not involve the same traded amount or the same exposure to costs.
For U.S. SEC fund disclosures, portfolio turnover is generally calculated by taking the lesser of purchases or sales during the fiscal year and dividing it by the monthly average value of portfolio securities.[S6] This article’s research backtest instead uses the following change in portfolio weights.
turnover_t = Σ_i |w_i,t - w_i,t-1|These formulas are not equivalent. Rather than comparing figures solely because both are called turnover, disclose the definition and calculation formula used.[S6]
A turnover report should also specify:
- Numerator and denominator
- Per-period formula and aggregation method
- One-way or two-way interpretation
- Whether the initial entry from cash is included
- Treatment of cash movements
- Treatment of short positions and derivatives
- Whether the result is annualized
For consistency and reproducibility, the next article in this series will use the following internal project convention:
Monthly turnover = Σ_i |w_i,t - w_i,t-1|Cost = One-way cost rate × Monthly turnoverThe calculation includes the initial entry from cash. If a position in one asset changes directly from +1 to -1, turnover is recorded as 2. This is not a regulatory standard. It is an internal convention for comparing the examples and the forthcoming baseline consistently.
The SEC explains that high portfolio turnover can indicate higher trading costs and, in taxable accounts, the potential for increased taxes.[S6] That guidance alone, however, cannot determine the exact costs or taxes of an individual backtest.
Do not bundle every trading cost into one term
Writing “10bp trading cost” in a backtest does not tell the reader what was deducted. Commissions, taxes, the bid-ask spread, slippage, and market impact arise for different reasons and can use different calculation bases.
| Item | Meaning in this article | What the calculation should disclose |
|---|---|---|
| Commissions | Explicit payments for brokerage or trading services[S7] [S12] | Applicable instruments and what the quoted cost includes |
| Taxes | This research did not verify one rate and set of conditions applicable across markets, products, and account types | Conditions applicable to the specific case must be checked separately |
| Bid-ask spread | An indirect cost arising from the difference between the bid and ask prices[S8] | Quote timestamp and direction of the trade |
| Slippage | Difference between a stated reference price and the actual average execution price[S9] | Reference price, execution price, and scope of the deduction |
| Market impact | The effect of a large order consuming limited depth across the order book and changing its average execution price[S11] | Order size and available depth |
A commission is a directly charged expense. The bid-ask spread is an indirect cost an investor may bear when buying and immediately selling. The bid is the highest price a buyer is willing to pay, while the ask is the lowest price a seller is willing to accept; the difference is the spread.[S8]
A market order prioritizes the likelihood of execution, but it is not guaranteed to execute at the price expected when the order was submitted. Any slippage calculation should therefore identify the reference price and actual execution price being compared.[S9]
When cost components are estimated separately, check whether their scopes overlap. This research does not establish that spread or market impact is always included in a particular slippage formula. Disclosing the reference price, definition of each component, and scope of each deduction lets readers assess whether any cost has been deducted twice.
This research did not verify a single tax rate or actual commission level that applies across markets, products, and account types. For a specific application, the relevant cost information and eligibility rules must be checked separately. The phrase “zero commission” also does not mean that no other costs or sources of broker revenue exist.[S12]
No particular tax or cost rate should therefore be presented as universal. The 0, 5, 10, and 20bp figures below are educational scenarios for testing cost sensitivity, not verified ranges of actual trading costs.
Does cost remain proportional as position size grows?
A fixed-basis-point model offers a simple way to represent higher costs as position changes grow. It is useful as an initial sensitivity test when comparing several strategies under a common rule.
Actual execution, however, can depend on order size, order-book depth, liquidity, order type, and realized execution prices. An order that is large relative to available depth may fill across several price levels, changing its average execution price. The order type and execution venue can also affect the price paid and total trading cost.[S9] [S10] [S11]
It is similar to the difference between buying one item from a well-stocked shelf and trying to buy the shelf’s entire inventory: there is no reason to assume every unit will be available on identical terms.
Before treating a fixed-basis-point model as a realistic estimate of execution costs, distinguish at least the following conditions.[S9] [S10] [S11]
- Order size
- Available depth at each price level
- Market liquidity
- Order type, such as market or limit
- Expected or reference price versus actual execution price
Results from a small educational example with fixed costs must not be generalized to the realistic execution cost of a large order. A fixed-basis-point model can answer only a narrower question: “At the same turnover, how sensitive is the result to the assumed cost?”
The simple model cannot determine:
- The actual average execution price of an order
- The functional form and coefficients of market impact by order size
- Future order-book depth and liquidity
This research did not identify a universal method for translating partial fills, unfilled orders, and order participation rates into backtest costs. Adding these elements requires separate execution data and validated assumptions.
Nor did this research identify a market-impact function and set of coefficients that apply to every market and asset. A more concrete assessment of operational feasibility could additionally examine order size, order-book depth, and execution prices, then incorporate them into conservative scenarios.[S10] [S11]
Reproducible experiment 2: what remains after applying 0, 5, 10, and 20bp?
We now apply different cost rates to the same hypothetical strategy returns and position changes. The data do not come from a real strategy or market.
The calculation assumptions are:
- Frequency: monthly, for 12 months
gross_return: return before costs for the month- Position: units of
-1,0, or1 - Initial position:
0in cash - Monthly turnover:
abs(position[t] - position[t-1]) - The initial
0 → 1entry is included - A
1 → -1reversal, if present, has turnover of2 - Cost rate: one-way cost applied to each unit of traded notional position
- Net return:
gross_return - turnover × cost_rate - Risk-free return: 0% per month
- Volatility: monthly sample standard deviation (
ddof=1), annualized by multiplying by√12 - Sharpe: mean monthly return divided by monthly sample standard deviation, then multiplied by
√12 - Autocorrelation adjustment: none
- Maximum drawdown: includes a starting portfolio value of 1 and is reported as a negative value
The displayed costs are one-way rates. A simple round trip that enters and exits at the same price has total turnover of 2, so it incurs twice the displayed number of basis points. For example, at a one-way cost of 5bp, a 0 → 1 → 0 round trip deducts 10bp in total.
In this fixed-basis-point example, commissions, taxes, spread, slippage, and market impact are not modeled separately. They are combined into a single hypothetical cost rate. An application to actual data should state which components the rate includes.
import numpy as npimport pandas as pddf = pd.DataFrame({ "gross_return": [ 0.025, -0.015, 0.030, 0.010, -0.020, 0.040, -0.010, 0.020, 0.015, -0.025, 0.035, 0.010, ], "position": [1, 1, 0, -1, -1, 0, 1, 1, 0, -1, 0, 1],})# The position is 0 before initial entry, and initial entry is included in turnover.previous = df["position"].shift(1, fill_value=0)df["turnover"] = (df["position"] - previous).abs()def metrics(monthly_return): wealth = (1 + monthly_return).cumprod() running_peak = pd.concat([ pd.Series([1.0]), wealth.reset_index(drop=True), ]).cummax().iloc[1:].reset_index(drop=True) drawdown = ( wealth.reset_index(drop=True) / running_peak - 1 ) years = len(monthly_return) / 12 annualized_return = wealth.iloc[-1] ** (1 / years) - 1 annualized_volatility = ( monthly_return.std(ddof=1) * np.sqrt(12) ) sharpe = ( monthly_return.mean() / monthly_return.std(ddof=1) * np.sqrt(12) ) return { "Cumulative return": wealth.iloc[-1] - 1, "Annualized return": annualized_return, "Annualized volatility": annualized_volatility, "Maximum drawdown": drawdown.min(), "Sharpe": sharpe, }rows = []for cost_bp in [0, 5, 10, 20]: cost_rate = cost_bp / 10_000 net_return = ( df["gross_return"] - df["turnover"] * cost_rate ) rows.append({ "One-way cost (bp)": cost_bp, "Total turnover": df["turnover"].sum(), **metrics(net_return), })result = pd.DataFrame(rows)print(df)print(result)The results are:
| One-way cost | Total turnover | Cumulative return | Annualized return | Annualized volatility | Maximum drawdown | Sharpe |
|---|---|---|---|---|---|---|
| 0bp | 9.0 | 11.8268% | 11.8268% | 7.6915% | -2.5000% | 1.4952 |
| 5bp | 9.0 | 11.3315% | 11.3315% | 7.6608% | -2.5500% | 1.4424 |
| 10bp | 9.0 | 10.8382% | 10.8382% | 7.6308% | -2.6000% | 1.3891 |
| 20bp | 9.0 | 9.8574% | 9.8574% | 7.5729% | -2.7000% | 1.2809 |
The simple sum of the monthly gross returns is 11.5%, while multiplying the periodic returns produces a cumulative return of about 11.83%. This again shows that the simple sum and compounded result are not necessarily equal.
Even with identical hypothetical returns and positions, increasing the assumed cost reduced the after-cost cumulative return and Sharpe ratio. Maximum drawdown also became slightly deeper. The precise differences result only from this hypothetical sequence, the timing of the cost deductions, and the stated turnover definition. They cannot be generalized to actual strategies.
The sample also contains only 12 months, and volatility and Sharpe were annualized using √12 without an autocorrelation adjustment. They are educational summary statistics, not robust estimates.[S5]
The fixed-basis-point calculation does not account for differences caused by order size, order-book depth, liquidity, order type, or actual execution prices.[S9] [S10] [S11] This research also did not identify a universal method for incorporating partial fills and unfilled orders into costs. Even if readers replace gross_return and position in the code with their own backtest data, they should document the cost definition and execution assumptions separately.
A combined risk-and-cost evaluation table
When returns and risk metrics are calculated in separate files or under different assumptions, important conditions can easily disappear during comparison. Starting with the simple momentum baseline in the next article, I plan to review performance, the loss path, trading activity, and costs in one table.
| Area | Metrics to report | Assumptions that must be disclosed |
|---|---|---|
| Performance | Cumulative return, annualized compounded return | Frequency, period, compounding formula, before or after costs[S1] |
| Fluctuation | Annualized volatility | Simple or log returns, ddof, annualization formula[S2] [S5] |
| Loss path | Maximum drawdown | Frequency, sign convention, evaluation start and end dates[S3] |
| Recovery | Longest underwater period, recovery status | Definition of recovery and treatment at the evaluation end date[S3] |
| Risk-adjusted performance | Sharpe ratio | Comparison return, sample size, annualization formula, cost treatment[S4] [S5] |
| Trading activity | Trade count, turnover | Formula, one-way or two-way convention, initial entry[S6] |
| Cost sensitivity | Performance before and after 0, 5, 10, and 20bp costs | Included costs and how turnover is applied[S7] [S8] [S9] |
| Tradability | Order-size and liquidity review | Order-book depth, order type, and execution-price assumptions[S9] [S10] [S11] |
This is not a scorecard claiming that any particular strategy is superior. It is a project specification for comparing strategies under the same calculation conditions beginning with the next article.
The following note can be fixed beneath the code and results table:
Return frequency:Evaluation start and end dates:Number of observations:Annualized return formula:Volatility formula and ddof:Maximum drawdown sign convention and calculation frequency:Peak, trough, and recovery dates for maximum drawdown:Benchmark or risk-free return used for Sharpe:Sharpe annualization method:Whether autocorrelation is adjusted for:Turnover formula:Whether initial entry is included:Interpretation of one-way or round-trip costs:Cost components included in each basis-point assumption:Timing of cost deductions:Order size and liquidity assumptions:If partial fills or unfilled orders are modeled, their definitions and supporting rationale:That note makes it possible to verify whether metrics with the same name were actually calculated in the same way.
How my judgment changed: from the highest return to survival after costs
| Stage | My current record |
|---|---|
| Previous view | At first, I looked for the highest cumulative return in a backtest. I assumed that a larger ending number meant a better strategy. |
| What I verified this time | Even with the same ending return, volatility, and Sharpe, the order of losses can produce different maximum drawdowns.[S2] [S3] [S5] When positions change frequently, even small costs are deducted repeatedly; if the turnover definition changes, the cost calculation changes as well.[S6] [S7] |
| Current judgment | Before comparing returns, I first examine maximum drawdown, volatility, turnover, cost sensitivity, recovery status, and tradability. After disclosing those conditions, I compare compounded performance after costs. |
| What I still do not know | A single backtest cannot reveal the future spread, slippage, market impact, or liquidity of real orders, nor can it establish whether a future recovery will follow a historical drawdown.[S3] [S9] [S10] [S11] This research also did not identify a universal way to connect partial fills and unfilled orders to a cost model. |
My focus has shifted from “finding the largest number” to asking what losses and trading activity produced that number—and whether anything remains after realistic costs.
Calculating more risk metrics does not eliminate uncertainty. It does, however, help distinguish what each number explains from what it cannot explain.
Columns to add to your next backtest
Consider adding the following items to your own backtest results:
- Report cumulative return separately from annualized compounded return.[S1]
- Calculate volatility and maximum drawdown at the same frequency.[S2] [S3]
- Record the peak, trough, recovery date, and unrecovered status of the maximum drawdown.[S3]
- Disclose the comparison return, sample size, and annualization method used for the Sharpe ratio.[S4] [S5]
- Report trade count and turnover in separate columns.[S6]
- Record the turnover formula and whether it includes the initial entry.
- Compare cost sensitivity at 0, 5, 10, and 20bp using the same turnover definition.
- State whether the displayed basis-point cost is one-way or round-trip.
- Specify whether the fixed-basis-point rate includes commissions, taxes, spread, slippage, or market impact.[S7] [S8] [S9]
- Review assumptions about order size, order-book depth, liquidity, order type, and actual execution prices separately.[S9] [S10] [S11]
The 0, 5, 10, and 20bp scenarios are not a universal range of actual costs. The point is not to select one number as the correct answer. It is to compare a strategy’s sensitivity under a consistent turnover definition and a clearly stated scope of included costs.
Conclusion: return is the beginning of an evaluation, not the end
Compounded return shows how much the ending portfolio value changed, but it does not fully describe fluctuations along the way or losses from prior peaks.[S1] Volatility summarizes both upward and downward movements, while maximum drawdown identifies the single deepest observed decline during the evaluation period.[S2] [S3] The Sharpe ratio is a useful starting point for comparing excess return relative to volatility, but it is sensitive to the sample period, frequency, comparison return, autocorrelation, and distribution.[S4] [S5]
We should also calculate turnover—the amount of position replacement—not merely count trades, and deduct costs according to the disclosed turnover definition.[S6] Depending on order size, order-book depth, liquidity, and order type, execution-price differences can arise that a fixed-basis-point model cannot adequately explain.[S9] [S10] [S11]
Return is only the starting point. A strategy can be compared meaningfully only when we also examine its loss path, tradability, and the performance left after costs.
This article is for educational and research purposes. It does not represent the performance or costs of an actual strategy and is not investment advice.
In the next article, we will build a simple momentum strategy as the first common baseline to which this evaluation table will be applied.
Before seeing the results, how should we define that baseline’s signal, holding rules, rebalancing frequency, and cost assumptions?
Sources
- [S1] Introduction to Investing | U.S. Securities and Exchange Commission, Investor.gov | No verifiable publication or revision date shown on the page | https://www.investor.gov/introduction-investing ↩
- [S2] Measurement and Management of Returns and Risk | CAIA Association Research Foundation | 2018 | https://www.cfainstitute.org/sites/default/files/-/media/documents/book/rf-publication/2018/rf-v2018-n1-1.pdf ↩
- [S3] GIPS Standards for Fiduciary Management Providers Handbook | CFA Institute, Global Investment Performance Standards | 2020 | https://www.gipsstandards.org/wp-content/uploads/2021/06/gips-standards-fmp-handbook.pdf ↩
- [S4] The Sharpe Ratio | William F. Sharpe; republished by Stanford University | Fall 1994 | https://web.stanford.edu/~wfsharpe/art/sr/SR.htm ↩
- [S5] The Statistics of Sharpe Ratios | Andrew W. Lo | July/August 2002 | https://traders.berkeley.edu/papers/The-Statistics-of-Sharpe-Ratios.pdf ↩
- [S6] Form N-1A | U.S. Securities and Exchange Commission | 2024 public version | https://www.sec.gov/files/form-n-1a.pdf ↩
- [S7] How Fees and Expenses Affect Your Investment Portfolio – Investor Bulletin | U.S. Securities and Exchange Commission, Office of Investor Education and Assistance | 2025-07-23 | https://www.investor.gov/introduction-investing/general-resources/news-alerts/alerts-bulletins/investor-bulletins/updated ↩
- [S8] Updated Investor Bulletin: Exchange-Traded Funds (ETFs) | U.S. Securities and Exchange Commission, Investor.gov | 2023 | https://www.investor.gov/introduction-investing/general-resources/news-alerts/alerts-bulletins/investor-bulletins-24 ↩
- [S9] Market Order | U.S. Securities and Exchange Commission, Investor.gov | No verifiable publication or revision date shown on the page | https://www.investor.gov/introduction-investing/investing-basics/glossary/market-order ↩
- [S10] Trade Execution | U.S. Securities and Exchange Commission | No verifiable publication or revision date shown on the page | https://www.sec.gov/about/reports-publications/investorpubstradexec ↩
- [S11] Regulation NMS: Minimum Pricing Increments, Access Fees, and Transparency of Better Priced Orders | U.S. Securities and Exchange Commission; Federal Register | 2024-10-08 | https://www.govinfo.gov/content/pkg/FR-2024-10-08/pdf/2024-21867.pdf ↩
- [S12] Fees and Commissions | Financial Industry Regulatory Authority | No verifiable publication or revision date shown on the page | https://www.finra.org/investors/investing/investing-basics/fees-commissions ↩
Report an error or share feedback
Open a draft with this article’s title and URL. Review the message and recipient before sending.
Open email draftIf no email app opens, copy these details into your usual email service.
Related posts
Quant & Data Research Would Adding Transaction Costs Change the Conclusion? Checking Accounting and Risk Paths in a Synthetic Portfolio
Use a synthetic portfolio to check transaction-cost accounting and distinguish what ending returns, turnover, and maximum drawdown reveal.
Quant & Data Research What the Reruns Confirmed: Where the Quant Research System Stands and AI’s Role