Skip to content

docs(experiments): the hourly turtle over five years -- 4,871 trades, 0 of 19 positive at the fee paid (#823) - #827

Merged
eaitbrahim merged 2 commits into
mainfrom
docs/hourly-turtle-5year-backtest
Sep 26, 2026
Merged

eaitbrahim merged 2 commits into
mainfrom
docs/hourly-turtle-5year-backtest

Conversation

@eaitbrahim

Copy link
Copy Markdown
Contributor

Refs #823 (closed with its result). Records the run with its complete per-trade dataset and the fee-to-risk arithmetic behind it.

Files

  • docs/experiments/2026-09-26-hourly-turtle-5year-backtest.md: the record.
  • …-5year-backtest.py: the driver. It uses the same code path as keel simulate's edge pass (report.edge_table, simulate.load_sim_candles, per-product slippage), reads the database read-only, and replays the exact window of the original run.
  • …-5year-backtest.jsonl: all 4,871 trades, each with its R at the 1.20%, 0.60% and 0% fee levels, plus per-product and pooled summaries. It's 1.5 MB, the largest file in docs/experiments/. The README says bulk sweep output isn't committed; this is the run's recorded output rather than a sweep, and it was asked for as the complete dataset. Happy to drop it to summaries only if you'd rather not carry the size.
  • docs/experiments/README.md: the index entry.

Findings

  • The driver reproduces the Experiment: 5-year backtest of the hourly Turtle for a per-asset sample (N > 100), at the fees actually paid #823 run exactly: N = 4,871, −1.178 R at 1.20% and −0.696 R at 0.60%. It asserts that the trade set is identical across fee levels.
  • 0 of 19 products are positive at 1.20% or 0.60%. At a measured 0% fee, only BTC, ETH and SOL are, the three products with 5–11 bp slippage. Pooled at 0% it's −0.215 R.
  • Mechanism: the 2×ATR hourly stop sits a median 2.75% from entry, so a 2.40% round trip costs about 0.87 R per trade, matching the measured 0%→1.20% difference. The daily stop sits a median 11.6% away, so the same round trip costs about 0.21 R there.
  • Relationship to earlier records: consistent with 2026-08-11. It reconciles 2026-08-12's "profitable at zero fee" (priced at a flat 5 bp) with per-product slippage.

Honesty notes

  • Not pre-registered: it records a run already made.
  • Corrects an earlier figure. My Experiment: 5-year backtest of the hourly Turtle for a per-asset sample (N > 100), at the fees actually paid #823 comment's zero-fee number (about −0.2 R) was extrapolated; the record replaces it with the measured −0.215 R.
  • States what it doesn't show. Daily strategies have no demonstrated edge either. "Regime-filtered daily strategies" is a hypothesis this record motivates, not one it tests. Weekly DCA is accumulation, not an edge claim.
  • Records the decommissioning of the hourly paper account (2026-09-26): both launchd jobs unloaded, 19 rules disabled, one paper BCH position frozen.

Verification

  • Full suite: 6769 passed, 3 skipped.
  • tests/test_experiment_cost_pointers.py passes: the record points at the per-product restatement.
  • ruff is clean on the driver.

🤖 Generated with Claude Code

eaitbrahim and others added 2 commits September 26, 2026 17:25
… 0 of 19 positive at the fee paid (#823)

Records the #823 run with its complete per-trade dataset and driver. At
1.20% and 0.60% taker, in R at per-product slippage, every product loses;
at a measured 0% only BTC, ETH and SOL (5-11 bp slippage) are positive.
The hourly 2xATR stop sits a median 2.75% from entry, so the round-trip
fee costs ~0.87 R per trade, against ~0.21 R on the daily stop.

Not pre-registered. Corrects the #823 comment's extrapolated zero-fee
figure with a measured one, and records the decommissioning of the
hourly paper account that followed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ment

The cost-pointer rule applies to any record that reports a profit factor
beside a slippage assumption. This one is already priced per product; the
pointer says so, and that the flat-priced records it compares against keep
their verdicts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@eaitbrahim eaitbrahim added research Measurement, validation or KB work (Research & validation) experiment A pre-declared experiment and its result (Research & validation) docs Documentation (Docs, CI & tooling) labels Sep 26, 2026
@eaitbrahim
eaitbrahim merged commit 6be00e5 into main Sep 26, 2026
1 check passed
@eaitbrahim
eaitbrahim deleted the docs/hourly-turtle-5year-backtest branch September 26, 2026 21:38
eaitbrahim added a commit that referenced this pull request Sep 26, 2026
…oled evaluation as policy (#828)

MINOR: #826 changes what promotion decides (G2 and #338's pooled path
judge in R; min_expectancy is an R threshold; a sample with no R is
refused), and #825 adds report sections. No schema change since 0.17.0.

What lands:
  #826 (#820) -- edge table, G2 and promotion in R; negative-risk flip
  fixed; pooled rows in exit-time order.
  #825 (#821) -- simulate buys DCA once per completed day (was 24x per
  cadence day), no forming-day look-ahead, DCA sleeve reported.
  #824 (#822) -- ADR 0006: daily strategies evaluated on the pooled sample.
  #827 (#823) -- experiment record: hourly turtle, 4,871 trades.
  #819 -- live per-asset ceiling config mirrored (0.50 -> 0.75).

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation (Docs, CI & tooling) experiment A pre-declared experiment and its result (Research & validation) research Measurement, validation or KB work (Research & validation)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant