Worked research note

A 200-day trend rule: an evidence audit

The recorded path is reproducible; taxes, nearby parameters, and later-window tests are not part of the evidence.

By ArthaPilot Research

Published 2026-10-11

Research question

One SPY-or-SHY moving-average backtest with recorded turnover and robustness evidence the fixture cannot supply.

Scope: The report evaluates one long-only U.S. equity-or-short-Treasury rule and one moving-average length.

One center rule produced an attractive but incomplete record

The configured rule holds SPY when its price is above a 200-day moving average and SHY otherwise. In the recorded backtest from January 3, 2017 through December 31, 2024, it produced 11.21% CAGR, a 0.752 Sharpe ratio, and a 25.07% maximum drawdown.

Those three figures describe one realized path. Without adjacent lookbacks or held-out windows, they cannot distinguish a durable relationship from a favorable parameter and sample combination.

Exhibit 01

Content-pinned result

The recorded 200-day result

The verified return and risk summary from the single committed SPY/SHY fixture.

What return and drawdown did the recorded 200-day SPY-or-SHY rule produce on its full path?

Construction. Evaluate the configured state condition on the daily schedule and apply the recorded allocation path. Calculate CAGR and maximum drawdown from the resulting portfolio-value series. Report Sharpe separately in the result ledger because it is not a percentage metric.

The recorded 200-day result. bar chart with 1 series. Exact values are available in the table following the figure.
Value (%)
0%5%10%15%20%25%CAGRMaximum drawdown
Recorded outcome
The recorded 200-day result. bar chart with 1 series. Exact values are available in the table following the figure.
CategoryFull-path metric
CAGR11.21%
Maximum drawdown25.07%

Source and construction: Recorded ArthaPilot Strategy Builder fixture; 2017-01-03 through 2024-12-31; engine 1.0.0; response hash 969f807dc429… .

How this figure was calculated

Inputs

  • A daily 200-day SPY simple-moving-average condition with SPY risk-on and SHY otherwise.
  • The committed total-return response from 2017-01-03 through 2024-12-31 with zero costs and slippage.
  • A $10,000 starting principal and no inflation adjustment, so every figure is nominal.

Calculation

  1. Evaluate the configured state condition on the daily schedule and apply the recorded allocation path.
  2. Calculate CAGR and maximum drawdown from the resulting portfolio-value series.
  3. Report Sharpe separately in the result ledger because it is not a percentage metric.

What this step cannot establish

These are full-path results for one parameter. They are not parameter, holdout, cost, or tax evidence.

Exact values behind the figure
Exact plotted values shown in Exhibit 01
SeriesRecorded outcomeValue (%)
Full-path metricCAGR11.21%
Full-path metricMaximum drawdown25.07%

The center rule is reproducible but not validated across parameter choices. The first conclusion is about evidence quality rather than strategy quality.

Nothing in this fixture supports a comparison with buy-and-hold, another lookback, or another defensive asset.

The state path reveals the implementation burden

The strategy spent 82.75% of days in SPY and 17.25% in SHY. It changed state 44 times. Total one-way turnover was 44.0 and annual one-way turnover was 5.510934, using the engine's decimal convention in which 1.0 means 100%.

That turnover is part of the strategy, not a secondary statistic. Yet the recorded request set transaction costs and slippage to zero and did not enable investor taxes. The path tells us how much trading occurred; it does not tell us what that trading would have cost a household.

Exhibit 02

Content-pinned result

Exposure and turnover behind the headline

The recorded state occupancy and transition statistics, with the engine's turnover units made explicit.

How was the recorded path divided between SPY and SHY states?

Construction. Count response days assigned to each state and divide by total state-classified days. Convert the state fractions to percentages and verify they sum to 100%. Keep transition count and turnover in the adjacent ledger rather than mixing their units into the chart.

Exposure and turnover behind the headline. bar chart with 1 series. Exact values are available in the table following the figure.
Time in state (%)
0%20%40%60%80%SPY risk-onSHY default
Portfolio state
Exposure and turnover behind the headline. bar chart with 1 series. Exact values are available in the table following the figure.
CategoryState occupancy
SPY risk-on82.75%
SHY default17.25%

Note: The chart shows exposure time; the result ledger reports 44 transitions and 5.510934 annual turnover.

Source and construction: Same recorded ArthaPilot fixture; transaction costs, slippage, and investor taxes disabled.

How this figure was calculated

Inputs

  • The response's Risk-On and Default state occupancy fractions.
  • The recorded 44 transitions and one-way turnover fields used as implementation context.

Calculation

  1. Count response days assigned to each state and divide by total state-classified days.
  2. Convert the state fractions to percentages and verify they sum to 100%.
  3. Keep transition count and turnover in the adjacent ledger rather than mixing their units into the chart.

What this step cannot establish

State occupancy describes exposure. It does not price the trades created by the 44 transitions.

Exact values behind the figure
Exact plotted values shown in Exhibit 02
SeriesPortfolio stateTime in state (%)
State occupancySPY risk-on82.75%
State occupancySHY default17.25%

A strategy that turns the portfolio over more than five times per year cannot be said to survive costs or taxes on the basis of a zero-friction run.

That is not evidence that costs or taxes would erase the result. It is evidence that the omitted tests are financially material and must be run before answering the title question.

The recorded result cannot answer the title

The fixture contains one moving-average length, one full historical window, and zero configured transaction costs or slippage. Investor taxes are disabled.

Those settings support a narrow negative conclusion: the recorded backtest does not establish parameter, temporal, cost, or tax survival.

Exhibit 03

Method note

Scope of the insufficiency finding

The claims excluded by the request and response fields in the committed fixture.

How much turnover did the one recorded trend path generate before the omitted cost and tax tests?

Construction. Read total_turnover as the cumulative multiple of portfolio value traded across the full path. Read turnover_per_year as the engine's annualized turnover multiple; do not convert either value to a performance return.

Scope of the insufficiency finding. bar chart with 1 series. Exact values are available in the table following the figure.
Portfolio-value multiple
0×10×20×30×40×Full-path totalAnnualized
Turnover measure
Scope of the insufficiency finding. bar chart with 1 series. Exact values are available in the table following the figure.
CategoryRecorded turnover
Full-path total44×
Annualized5.511×

Note: The fixture records zero configured trading costs and slippage and no investor-tax result.

Source and construction: Scope boundary derived from the configured and omitted fields in the committed ArthaPilot fixture.

How this figure was calculated

Inputs

  • Total turnover and annual turnover from the recorded tactical response.
  • The request's zero trading-cost and slippage inputs and the response's null tax result.

Calculation

  1. Read total_turnover as the cumulative multiple of portfolio value traded across the full path.
  2. Read turnover_per_year as the engine's annualized turnover multiple; do not convert either value to a performance return.

What this step cannot establish

Turnover shows the implementation burden that requires cost and tax tests. It does not estimate the return drag those omitted tests would produce.

Exact values behind the figure
Exact plotted values shown in Exhibit 03
SeriesTurnover measurePortfolio-value multiple
Recorded turnoverFull-path total44×
Recorded turnoverAnnualized5.511×

The content-pinned evidence supports a reproducible 200-day result and an equally reproducible insufficiency finding.

The report does not convert absent comparisons into implied results.

Method and constraints

Method

The displayed 200-day SPY/SHY results reconcile to one committed request and response fixture.

Verification: Preserve the fixture path, source commit, engine version, and request/response SHA-256 hashes with the note.

Verification: Reconcile displayed state percentages, transitions, and turnover units to the committed response.

Verification: Do not place any tax-aware or cost-friction label on the recorded metrics.

Assumptions held fixed

  • The worked case is the committed 200-day SPY/SHY strategy response covering 2017-01-03 through 2024-12-31.
  • The report uses only the recorded CAGR, Sharpe ratio, maximum drawdown, state occupancy, transition count, and turnover facts.
  • The engine reports turnover in decimal units, where 1.0 means 100% one-way turnover.
  • Transaction costs, slippage, and investor taxes were disabled in the recorded request.

What this study establishes

The honest answer is not yet. The committed case shows that one 200-day SPY-or-SHY rule produced 11.21% CAGR, a 25.07% maximum drawdown, and a 0.752 Sharpe ratio from January 2017 through December 2024. It does not show that nearby lookbacks behaved similarly, that the rule held up in later test windows, or that it survived taxes.

The fixture is still useful because it exposes the implementation path behind the headline: 82.75% of days in SPY, 17.25% in SHY, 44 state transitions, and 5.510934 annual one-way turnover under the engine's decimal convention. With transaction costs, slippage, and investor taxes all disabled, those figures define the tests the strategy has yet to pass.

Limitations
  • The report evaluates one long-only U.S. equity-or-short-Treasury rule and one moving-average length.
  • It contains no parameter grid, walk-forward fold, start-year matrix, transaction-cost stress, or tax-aware replay.
  • The 2017–2024 history is one realized market sequence and is not an independent forecast trial.
  • The result does not replicate diversified futures trend following across asset classes.
Sources and prior research
Evidence and reproducibility

trend-following-robustness-recorded-demo-fixture

A descriptive worked note reporting one zero-friction 200-day SPY/SHY backtest and concluding that it cannot establish parameter, temporal, cost, or tax survival.

Evidence date: 2026-08-17. Basis and units are stated in each recorded fact.

note=2d71feada64cd2933119894b3b6d53bc1b38569cca57d2903a41cd431d26046c; request=73ed0528a6df917a7305f7bcd3928471d8c547d94627023a94d3fd07052e0ded; response=969f807dc4299351a4bb7243f783041c275ec8e80269ab61735d0dd19d6ee774

Source: web/src/data/research/portfolio/fixtures/strategy-builder.record.json. Versions: fixture1=69daa3e2f3fd5efe2faa78e6b08748eee1bc250c@1.0.0.

  • A result for another moving-average length
  • A walk-forward or start-year finding
  • A claim that the strategy survives transaction costs, slippage, or investor taxes

Inspect the same question with your own inputs

The linked tools expose the assumptions, dates, and result tables behind this report.

  • Inspect the signal Test how an indicator lines up with future returns before placing it inside an allocation rule.
  • Build and stress the rule Run nearby parameters, walk-forward windows, and explicit execution assumptions.
  • Browse strategies Compare published strategy definitions and historical results with their stated assumptions.