Skip to content

Commit b55447a

Browse files
committed
docs(config): update STANDING EXCEPTION retirement rationale and path back (#799)
1 parent 43bedda commit b55447a

1 file changed

Lines changed: 47 additions & 27 deletions

File tree

‎config.live-sandbox.yaml‎

Lines changed: 47 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -73,38 +73,58 @@ allowlist:
7373
- DOGE
7474

7575
# ---------------------------------------------------------------------------------------------
76-
# STANDING EXCEPTION: the five live rules bypassed the promotion gate, deliberately, and stay.
76+
# STANDING EXCEPTION -- RETIRED 2026-09-15. The five live-seeded rules are now `paper`.
7777
#
78-
# keel-live.db rules 1-5 were seeded straight to `status=live` on 2026-07-24 with promoted_at
79-
# NULL. `keel rules seed` printed "Do not leave live-seeded rules in place afterwards." They have
80-
# been left in place. That is a decision, reviewed 2026-08-08 and recorded here rather than left
81-
# silent -- the same standard docs/experiments/2026-07-20-allowlist-screen-first-run.md set for
82-
# PAXG: "The one thing not to do is leave it silently exempt because it was already there."
78+
# HISTORY. keel-live.db rules 1-5 were seeded straight to `status=live` on 2026-07-24 with
79+
# promoted_at NULL. `keel rules seed` printed "Do not leave live-seeded rules in place
80+
# afterwards." They were left in place deliberately, reviewed 2026-08-08, on this reasoning:
81+
# the promotion floor is min_trades=100 PER RULE and the strategy cannot reach it (BTC/ETH
82+
# ~2.59 trades/yr -> ~39 years; XLM ~63; ADA ~84; PAXG ~31), so waiting for the gate was "not a
83+
# slower path to the same place; it is no path," and the sandbox existed to accumulate the live
84+
# evidence the gate demands and cannot itself produce. That argument was sound and is NOT
85+
# what retired it.
8386
#
84-
# WHY KEEP THEM. The promotion floor is min_trades=100 PER RULE. This strategy cannot reach it.
85-
# Measured 2026-08-08 by backtesting each rule over ~5.02 years of daily bars:
86-
# BTC 13 trades = 2.59/yr -> 100 trades in ~39 years
87-
# ETH 13 trades = 2.59/yr -> ~39 years
88-
# XLM 8 trades = 1.59/yr -> ~63 years
89-
# ADA 6 trades = 1.19/yr -> ~84 years
90-
# PAXG 4 trades = 3.20/yr -> ~31 years
91-
# Waiting for the gate is not a slower path to the same place; it is no path. The sandbox exists
92-
# to accumulate the live evidence the gate demands and cannot itself produce. Demoting these
93-
# rules would end the experiment without substituting anything for it.
87+
# WHAT RETIRED IT. Two of this block's own REVISIT triggers fired at once on 2026-09-15:
9488
#
95-
# WHAT BOUNDS THE RISK. Not the promotion gate -- it never ran. Instead: the caps below
96-
# (max_exposure_usd 200 total at once, max_per_order_usd 100), the 18 un-overridable guards.py
97-
# rails, rail 1's allowlist above, and rail 14's monthly subscription allowance. The bypass is of
98-
# the EVIDENCE gate, not of the SAFETY rails, and those are separate mechanisms.
89+
# 1. CAPS WERE RAISED past this sandbox's scale -- 200/100 -> 400/200 (see the caps note
90+
# below). The trigger read "caps are raised above this sandbox's few-dollars-of-damage
91+
# scale," and $400 is that. The raise was needed for a different reason entirely: guard 6
92+
# was vetoing the weekly $50 DCA because BTC exposure ($101.81) already exceeded the old
93+
# $100 per-asset ceiling. DCA, not the Turtle, is what needed the headroom.
9994
#
100-
# WHAT THIS IS NOT. Not a precedent for adding assets (see the allowlist note above), not a
101-
# reason to raise caps, and not a claim these rules are validated -- they are not, and neither
102-
# `promoted_at` nor any backtest here says otherwise.
95+
# 2. AN EXIT-LIFECYCLE DEFECT CAME TO LIGHT (issue #799). On 2026-08-25 rule 3's PAXG entry
96+
# FILLED ($61.71, order id=4) and the protective SELL preview then threw
97+
# `decimal.InvalidOperation`, aborting before `open_position` ran. There is no `positions`
98+
# row, so no channel exit and no 2xATR stop can ever fire for that holding, its computed
99+
# stop (4521.76) exists only in the log, and guard 6 still counts the $61.71 forever
100+
# because it reads `orders`, not `positions`. A trend rule whose exits cannot fire is not
101+
# running the experiment this block was protecting -- it is accumulating unmanaged spot.
102+
# The fix landed on the retired `cb_client.py` and NOT on the adapter #524 migrated to, so
103+
# the same failure would recur today.
103104
#
104-
# REVISIT IF: caps are raised above this sandbox's few-dollars-of-damage scale; the rule set
105-
# changes; a rule starts trading materially more often than the table above; or this sandbox is
106-
# treated as evidence for anything beyond itself. Full working:
107-
# docs/experiments/2026-08-07-unvalidated-skip-set-reassessment.md and docs/go-live-runbook.md §3.
105+
# The evidence question is unchanged and still points the same way: on 2026-09-15
106+
# `research significance` returned "not distinguishable from zero" for every rule tested
107+
# (BTC n=13 -> 5.05 effective, p=0.3963; ADA p=0.3218; XLM p=0.1593), at both fee regimes.
108+
# That was ALREADY conceded here ("not a claim these rules are validated") and is not new
109+
# grounds for demotion -- it is the reason the cap raise must not be read as sizing them up.
110+
#
111+
# WHAT BOUNDS THE RISK NOW. Only rule 6 (dca, BTC) is live, and DCA is fixed-budget
112+
# accumulation rather than an edge claim. The caps below, the 18 un-overridable guards.py
113+
# rails, rail 1's allowlist above, and rail 14's monthly allowance all still apply.
114+
#
115+
# WHAT THIS IS NOT. Not a judgement that the 2026-08-08 decision was wrong -- it was right on
116+
# its facts, and rules 3 and 5 did place live orders (2026-08-25 and 2026-08-22), so the
117+
# experiment was functioning, not inert. Not a precedent for adding assets. Not a claim these
118+
# rules are validated.
119+
#
120+
# THE PATH BACK. Re-promote to `live` when #799 is fixed AND verified on the adapter path (a
121+
# filled entry must produce a position row or an explicitly UNBRACKETED one), AND order id=4 is
122+
# reconciled, AND caps are either returned to the few-dollars scale or a fresh significance
123+
# verdict justifies the size. Re-promoting on the $400 caps without that is the mistake this
124+
# block now exists to prevent. DOGE (rule 7) is excluded from any such promotion for the reason
125+
# in its own allowlist note: no configuration is net-positive at the 1.2% taker rate.
126+
# Full working: docs/experiments/2026-08-07-unvalidated-skip-set-reassessment.md,
127+
# docs/go-live-runbook.md §3, and issues #797/#798/#799.
108128
# ---------------------------------------------------------------------------------------------
109129

110130
target_weights:

0 commit comments

Comments
 (0)