The organism's long-term memory. Every researcher session APPENDS an entry;
nothing is ever rewritten or deleted. Read this file (newest-first is fine)
before proposing anything — dead ideas stay dead unless new evidence is
cited explicitly.
Format per entry:
## YYYY-MM-DD — <one-line headline> **Autopsy:** what yesterday's trading did right/wrong (genome by genome, with $). **Hypotheses tested:** idea → backtest verdict (net-of-cost numbers, not vibes). **Actions:** births (genome_id + gate evidence), mutations (param, before→after, why), kills proposed, no-ops. **Do-not-retry:** ideas confirmed dead this session, and why.
2026-09-13 (weekly session) — The organism now has ZERO funded cells; Polygon-lapse bridge decisively fails; gap-fade DEAD
Autopsy — the last funded cell died. Watermark was 2026-09-09. Since
then: `tsla_morning_pullback` (mp) — the population's ONLY funded cell —
starved to death on 2026-09-11 (`neg_streak=15`, fitness -0.026), exactly
the risk flagged loudly last session. Final legs before death, all
losses: 09-09 long -16.32, 09-09 short -8.11, 09-10 short -9.96, 09-10
short -3.35, 09-11 short -13.25 (5 straight losing legs, 4 of them
short). This closes the long-vs-short question raised 09-09: full
post-guard (>=08-24) lifetime record is longs 2W/1L net -$0.01 (flat,
not edge, n=3 too thin to call) vs shorts 1W/8L net -$452.23 (-$54.72
excluding the one oversized pre-fix 08-25 leg) — the short side never
stopped losing. Lesson appended to
`lab/memory/experiments/tsla_morning_pullback_2026-09-11.json`: any
future revival should be long-only and needs a fresh backtest, not a
re-fund on this record (n=3 is absence-of-counterevidence, not evidence).
Combined with `g_tsla_orb15_holdeod` (starved 09-08, autopsied last
session), **the organism has deployed exactly $0 of capital since
2026-09-08.** This is the single most important fact this session — not
a bug, fair selection working as designed twice in a row, but a
structural fact the owner should see stated plainly: five weeks of
research have produced zero live-funded strategies right now.
Nursery status: 3 of 4 SHADOW slots filled, no promotions, no kills.
- `g_tsla_macd_trend`: still the same single TSLA long from 2026-08-24
(20 days), 0 closed trades — unchanged from last session's read (cell
floor bootstrap issue, not a bug).
- `g_inplay_firstbar_momo`: day 10 now (was day 8 last session). Two MORE
losing days landed on top of the -305.00 bad day already reported:
09-10 -52.40, 09-11 -144.66. Cumulative net is now -$275.98 (was
-$78.92), PF 0.829 (wins $1,335.37 / losses $1,611.35), 3 losing
days in a row wiping out the entire +226.08 run that existed at day 7.
Day-15 kill line needs PF<1 at day>=15 — still 5 days away, no action,
but the trend line is bad and worth a hard look next session if it
continues.
- `g_rvol_fade_5d`: still zero trades, still no systemd timer, now 4
full trading days after birth (09-09) with no evidence accumulating at
all. Flagged again, more urgently: its promotion/kill clock cannot
start until this is wired. This is a deploy action for the owner
(`python3 -m harness.rvol_fade_run daily`, once after the close,
weekdays), not something I can do from here per last session's own
call — but four idle days is long enough to escalate the flag rather
than just repeat it quietly.
- Swarm digest (`harness/state/swarm_digest.json`): 1,813 active books,
still 0 gate_candidates. No pre-screened SHADOW material from the
swarm this week either.
**Decisive investigation — the Polygon-lapse IEX/SIP bridge fails (backlog
URGENT item 2, deadline "before ~09/18", i.e. THIS session or next).**
11 days of `harness/state/iex_sip_compare.jsonl` (top-100 RVOL zone,
SIP dollar-volume vs free Alpaca-IEX dollar-volume, per symbol per day).
Spearman rank correlation: 0.373-0.716 per day, mean 0.599 — nowhere
close to the >0.9 bar the backlog itself set for "port RVOL to
IEX-only." Worse, the number that actually matters for a TOP_N=20 basket
genome is rank overlap AT the cutoff, not overall correlation: mean
Jaccard@20 = 0.403, mean top-5 overlap fraction = 0.38, mean
top-3 = 0.367. Concretely: on a typical day, an IEX-only RVOL
substitute would swap out roughly 6 of every 10 names in the top-20
book versus what SIP-based ranking would have picked — the exact
construction that earned the backtested OOS Sharpe 1.9-2.0. **Verdict:
no free substitute exists for the SELECTION side of
`g_inplay_firstbar_momo`. When Polygon dies (~2026-09-20, one week from
today) the genome's ranking step goes blind — it must be frozen/paused
at lapse, not silently switched to a proxy that was never validated and
whose overlap with the real signal is barely better than a coin flip.**
This is disclosed now, with a week of runway left, rather than found out
the hard way when the key dies mid-week. Separately, and NOT blocked by
the above: entry/exit MARKS only need any live price, not a SIP-truth
one, so `harness/inplay_momo_run.py:_last_price` was ported this session
— Polygon first while the key lives, falls back to
`marketdata.alpaca_latest_trade` (Alpaca IEX) on failure — so marking
(not selection) survives the lapse cleanly. Tests still green
(`pytest tests/test_organism.py tests/test_rvol_fade.py` — 54 passed).
**Hypothesis tested (backlog item 5, cheap/fast per its own framing):
SPY/QQQ opening-gap fade.** `harness/data/sip/min5_panel.parquet`
checkpoint panel (prior_close/o930/c1030, 1,251 days each symbol,
2021-08-27..2026-08-21). 6-config family (SPY+QQQ x gap threshold
{0.3%, 0.5%, 0.8%}), fade direction = -sign(gap), entry at open, exit at
10:30 checkpoint, 10bps RT, IS<=2024-12-31/OOS>=2025-01-01, Bonferroni
alpha=0.05/6 (crit |t|=2.644). Positive control (gross, all gaps
pooled): ~flat (+0.0035%/trade, win rate 0.503) — and actually NEGATIVE
in-sample at every SPY threshold (fading lost money gross, 2021-2024;
gap CONTINUATION would have been better that period). **DEAD, exactly
as the backlog predicted it would be:** 5 of 6 OOS configs net PF<1
(0.62-0.92); SPY 0.3% clears the family-wide Bonferroni bar in the
NEGATIVE direction (t=-2.688) — small gaps continue, they don't fade.
The one config with OOS PF>=1.0 (QQQ 0.8%, PF 1.007) sits at t=0.03,
indistinguishable from zero — not a rule-3b narrow miss (that band is
for a directionally strong result just short of the bar, not a coin
flip), so no SHADOW birth. Full numbers:
`lab/memory/experiments/index_gapfade_backtest.py` + `.json`.
Housekeeping: `lab/memory/icarus_shadow.json` (the Icarus fade
family's live paper book, written nightly by `scripts/icarus_scan_run.py`)
was untracked in git despite living under the always-committed
`lab/memory/` — committed this session. Status unchanged from a research
standpoint: 1 closed trade (TJGC, -6.16% net), 2 open, decision gate
needs >=60 trades/PF>=1.3 — far from anything actionable.
Actions:
1. Filled in the death lesson on `tsla_morning_pullback`'s retirement
artifact (long-only-if-revived, do not re-fund on this record alone).
2. Fixed `harness/inplay_momo_run.py:_last_price` to fall back to
`marketdata.alpaca_latest_trade` when Polygon fails — protects
firstbar_momo's entry/exit MARKS (not its selection ranking) across
the Polygon lapse.
3. Decided the IEX/SIP RVOL bridge question the backlog demanded a
decision on: it fails, no code changes follow from that (there is no
good substitute to switch to) — the decision itself, stated plainly
with numbers, IS the deliverable, so the owner isn't surprised when
the genome goes blind at lapse.
4. Tested and killed backlog item 5 (index opening-gap fade) — DEAD,
matches its own predicted outcome.
5. NO births this session. No swarm gate-candidates, and the
gap-fade result was noise-level (not a rule-3b narrow miss), so
forcing a 4th SHADOW slot would have been exactly the "sloppy birth to
fill a quota" the contract warns against. Nursery stays at 3/4.
6. NO mutations to living genomes — macd_trend is unchanged and waiting
on cell funding (a selection question, not a signal one);
firstbar_momo's decline is real but not yet at a decision point
(day 10 of 15) and no per-symbol trade detail was available this
session to ground a specific parameter mutation (only day-level nets
are retained; per-symbol logs from the systemd-run select/exit jobs
were not accessible this session) — flagging that gap rather than
guessing at a mutation from day-level noise alone.
Do-not-retry: SPY/QQQ opening-gap fade (any of 6 configs: 2 symbols x
{0.3%,0.5%,0.8%} threshold) — 5/6 OOS configs net PF<1, the strongest
result clears the family-wide Bonferroni bar in the WRONG direction
(continuation beats fade at small gaps). IEX-only RVOL substitution for
`g_inplay_firstbar_momo`'s selection step — mean rank correlation 0.60
and top-20 overlap 40% against true SIP volume, far short of the >0.9
bar needed to trust it; do not wire this in even after the Polygon key
dies, the genome should be frozen instead unless a better free proxy is
found.
Tone: the headline this week isn't a new discovery, it's an
inventory check — the organism is currently trading zero dollars of its
own capital, and the flagship SHADOW discovery (firstbar_momo) is one
bad week away from both a PF-based kill AND losing its data source in
the same month. Neither is a bug; both are real. The Polygon-bridge
question had a hard external deadline and a firm no answer, which is a
better use of a session than a hopeful maybe would have been — the
gap-fade test was a cheap confirmation of an already-expected DEAD
verdict, run because the contract's no-op bar requires attempting the
top backlog item and this one was fast enough to fit after the bridge
work. Next session: check whether firstbar_momo's PF keeps sliding
toward the day-15 line, whether rvol_fade_5d ever got a timer, and
whether the owner wants a plan for what runs in the nursery once
Polygon actually dies (~09-20, likely to fall right before or during
next week's session).
2026-08-15 — Organism born (seed population)
Autopsy: n/a — first entry. Prior system history: 36 books culled 2026-08-14
(all options + all unprofitable equity). Survivors became the seed gene pool.
Hypotheses tested: none this session — seeds carry prior validation:
- `g_tsla_orb15_holdeod`: 7yr TSLA 5-min battery winner (net Sharpe ~1.25 w/ QQQ
filter, OOS 1.12, positive every year). Born EMBRYO $2k.
- `g_tsla_macd_trend`: 26-strategy daily battery winner (net Sharpe 1.02/0.85 OOS).
Born EMBRYO $2k.
- `tsla_morning_pullback` keeps its dedicated timer (live +$3.3k/60 fills);
migrates into the runner after parity is proven.
Do-not-retry (inherited from repo history — cite new evidence to reopen):
- Mean-reversion / VWAP-fade / RSI-fade on TSLA intraday: LOSES net-of-cost
(2026-06-24 battery, all variants).
- "Wait for the pullback/FVG retrace" on TSLA breakouts: fights the edge.
- Naive ORB without liquidity/RVOL context on general stocks: zero-slippage
artifact (2026-06-05).
- Ross Cameron momentum-pullback on gappers: cost artifact, OOS PF 0.97 @5c
slippage (2026-06-15).
- Indicator-confluence day-trading (multi-indicator voting): PF 0.80 net (2026-06-08).
- Options strategies of any kind: NO free real-time options feed exists
(2026-08-14 verification) — do not propose until that changes.
- Fixed 2:1 targets on TSLA ORB: cuts Sharpe (1.33→1.15). Hold-to-close wins.
- Pre-FOMC drift, ETF pairs, BAB/low-vol tilt, VRP overlay: all dead in the
2026-06-04 105-agent research sweep (no net retail edge).
2026-08-15 — VWAP+EMA9 battery (owner-proposed): NO deployable entry edge
Hypotheses tested: the four canonical VWAP+EMA9 intraday playbooks on 5-min
RTH bars, TSLA (2021-2026) + SPY + QQQ, net 5bps/side, IS (…2024) vs OOS (2025…),
~30k trades examined. Engine sanity: the VWAP-fade control lost everywhere,
consistent with the 2026-06-24 battery. Full code + numbers:
lab/memory/experiments/vwap_ema9_battery.py
- EMA9×VWAP crossover: TSLA IS PF 1.23 (+74%) → OOS PF 0.65 (−41%). GROSS OOS
is also negative (−3.2 bps/trade) — the signal decayed, not just the costs.
SPY/QQQ: loses both segments. Classic IS-only artifact.
- Trend-pullback to EMA9 above/below VWAP (raw): PF 0.10–0.36 everywhere.
Fires ~6k times; death by frequency × costs.
- Steel-manned selective version (AM-only, ≤2/day, first-pullback, ≥0.2%
stretch): PF 0.29–0.53 net on all 3 symbols BOTH segments, and NEGATIVE
GROSS on TSLA (−4 bps/trade) — no cost model rescues a no-gross-edge signal.
- VWAP reclaim w/ EMA9 slope: PF 0.15–0.53 everywhere.
Actions: no birth. Battery archived to experiments/.
Do-not-retry: VWAP+EMA9 (any of: crossover, trend-pullback, reclaim, fade)
as an ENTRY signal on liquid large-caps at 5-min — no gross edge OOS, and
10bps round-trip exceeds the signal. The components remain valid as MANAGEMENT
tools (the live tsla_morning_pullback winner already trails with EMA9; VWAP-side
bias is admissible as a FILTER on a validated structural entry, e.g. ORB —
that combination is untested and is the only respectable follow-up).
2026-08-15 (later) — ORB×VWAP filter: redundant · Entry-style: genome MUTATED
Hypotheses tested: (1) VWAP-side bias as a filter on the validated ORB-15
entry — the one respectable follow-up from the VWAP+EMA9 battery. (2) The
live genome's close-through entry vs the June battery's stop-at-level fill.
Evidence: lab/memory/experiments/orb15_entry_style_backtest.json (+ code).
- VWAP filter: NO-OP. qqq+vwap produced the IDENTICAL trade list to qqq —
a close through the OR high is always above session VWAP already.
- Entry style: stop-at-level beats close-through in BOTH halves
(IS Sharpe 0.63→1.03; OOS PF 0.911→1.048, avg −0.037R→+0.023R). The
close-through variant this genome launched with was quietly giving back
the first leg of every breakout.
Actions: MUTATION (owner session): g_tsla_orb15_holdeod now arms a resting
STOP order at the OR level on the QQQ-agreeing side, cancels/re-arms on tape
flips (the Pine's OCO behavior). Runner gained a pending-order lifecycle
(submit_stop / order_status / cancel_order; fills convert to positions at the
actual fill price; unfilled orders expire 15:30). 39 tests green.
Do-not-retry: VWAP-side filter on ORB-15 (mathematically redundant at the
trigger). Close-through entries on level-break strategies when a resting stop
order is available — the fill model IS part of the edge.
2026-08-15 (later still) — Momentum rotation: NO BIRTH (loses to SPY)
Hypothesis tested: cross-sectional 12-1 momentum, long-only top decile,
monthly rebalance, on the SURVIVORSHIP-FREE panel (5,511 tickers incl. 1,541
delisted, 2021-05→2026-05), net of costs, one fixed config (N=1, no sweep).
Evidence: lab/memory/experiments/momentum_rotation_backtest.json
- Bias-free, research costs: IS Sharpe 0.78 (DSR 0.93) → OOS Sharpe 0.49
(DSR 0.73), OOS net +9.97%. Realistic costs: OOS 0.48, +9.64%.
- Benchmark, SAME OOS window: SPY buy-and-hold +22.2%, Sharpe 0.84.
- Survivorship isolation: dropping all 1,541 delisted names moved OOS Sharpe
0.494→0.498 — the bias is ~nil in this window/universe.
Actions: NO birth — positive absolute returns but roughly HALF the
risk-adjusted return of doing nothing (SPY). Fails the opportunity-cost bar
that retired low_vol_etf_tilt (2026-06-04).
Do-not-retry: plain 12-1 monthly momentum rotation on the broad US panel
as a genome, unless a variant demonstrably beats SPY OOS net-of-cost (regime
gating or vol-targeting would need their own honest N-trials accounting).
2026-08-15 — EPOCH RESET: fresh accounts, day zero
Owner deleted the three original paper accounts and created new ones, each
$100k: core PA3ESRQAV5PY · highrisk PA3UM5SV3FY3 · organism PA3Y2UAU2W8W
(all ACTIVE, crypto ACTIVE, shorting enabled). Keys rotated on Mac + VPS.
Database truncated after backup (/home/tradervex/backups/pre_reset_2026-08-15
.sql.gz) — the public track record starts HERE. Pre-reset history and every
lesson from it live in THIS journal and experiments/; the Do-not-retry list
carries forward. Breaker/HWM/killswitch/book state reset to $300k baseline;
stale strategy state archived to harness/state/archive_pre_reset_2026-08-15/.
Monday is day one of the clean record: stock engine rebuilds its book,
morning-pullback + ORB (stop-entry) + MACD genomes trade the organism account.
2026-08-15 (weekly session) — PEAD long-only: NO BIRTH, prior claim refuted
Autopsy: watermark unchanged — epoch reset happened earlier today, zero
trading days have elapsed since (Saturday night, market closed all weekend),
population still 2 EMBRYO cells / 0 live trades / 0 fills in `trades` since
the reset. Nothing to autopsy mechanically; no bug, no parameter data.
Hypotheses tested: population has headroom (2/12), so used the pre-Monday
window to test the one concretely-named fair-game idea in the researcher
contract: PEAD long-only (earnings-reaction pop → hold 3 days), using the
existing decision core at `harness/strategies/pead_live.py`. Built a FRESH
backtest this session — EDGAR 8-K/item-2.02 filings (via `company_tickers.json`
+ `submissions/CIK##########.json`, keyless) for earnings-reaction dates,
Alpaca daily bars already cached in `harness/data/` for prices, 108 large-cap
liquid names, chronological max_concurrent=8 portfolio sim, 5bps/side cost.
Code + artifact: `lab/memory/experiments/pead_earnings_drift_backtest.py`
+ `.json`.
- IS (2025-01-21…2025-10-31, n=69): PF gross 0.983 / net 0.918, avg ret/trade
net −0.13%. OOS (2025-11-01…2026-05-20, n=56): PF gross 1.037 / net 0.982,
avg ret/trade net −0.03%. Gross is flat-to-negative in BOTH windows —
this isn't a cost-erosion story, the raw signal has no edge before costs
either. Portfolio max DD 2.41% (fine, but moot given no edge).
- Gates (OOS, net): PF≥1.15 FAIL (0.982). ≥100 OOS trades FAIL (56, real
count, universe/window is just thin — not padded to hit the number).
MaxDD≤20% PASS (2.41%). Overall 1/3 — NO BIRTH.
- Data caveats worth remembering: XOM's ticker maps to a shell entity in
SEC's `company_tickers.json` (zero filings) — needed a manual CIK override
to the real ExxonMobil filer (34088) to get its 26 8-Ks; other symbols may
have similar shell/restructuring mismatches undetected here. TSLA's 8-K
2.02 tag also catches monthly/quarterly delivery-number releases, not just
GAAP earnings — roughly half its 14 triggers in-window are delivery prints,
a known imprecision of the free-EDGAR proxy vs. a real earnings calendar.
Sample is thin regardless (~16 months of cached bars, 1-2 earnings cycles
per name) — this result should be read as "no edge found in a fair, if
short, test," not a definitive multi-cycle refutation.
Actions: no birth, no mutation (nothing live to mutate), no bug fix
(nothing has traded yet). Population unchanged at 2 EMBRYO cells.
Do-not-retry: the repo's prior "PEAD long-side validated +0.79%/trade
(2026-06-05)" claim is REFUTED by this fresh, honest, net-of-cost run — do
not re-cite that number as evidence for anything going forward. Plain
earnings-reaction-pop-then-hold-3-days PEAD, entered via the free EDGAR
8-K/item-2.02 proxy at a 3% reaction threshold, on liquid large-caps: no
gross edge in either IS or OOS window tested. A respectable follow-up would
need either (a) much longer price history than what's currently cached
(only ~16mo in `harness/data/`) before concluding anything more permanently,
or (b) a cleaner earnings-only trigger that filters out non-GAAP 8-K/2.02
noise (e.g. TSLA's delivery prints) — untested, and not worth doing again
without a plan to fix the trigger precision or extend the price history.
2026-08-16 (weekly session) — Crypto Donchian trend battery: NO BIRTH
Autopsy: watermark unchanged since 2026-08-15 (epoch reset). Zero trading
days have elapsed — Saturday night reset, Sunday all-weekend market closure,
0 fills in `trades` since the reset, `organism_runner.log` shows `actions=0`
on every 5-min tick all day. `organism-select.timer` hasn't fired yet either
(next run Mon 2026-08-17 20:20 ET — first selection cycle since the reset).
Population unchanged: 2 EMBRYO cells (g_tsla_orb15_holdeod, g_tsla_macd_trend),
0 live trades each. Nothing to autopsy mechanically; no bug, no live param to
mutate.
Hypotheses tested: population has headroom (2/12) and carries zero crypto
genomes despite crypto majors being explicit fair game (rule #5). Tested
classic Turtle-style Donchian breakout trend-following, long-only spot, on
the sandbox's full crypto allowlist (BTC/USD, ETH/USD, SOL/USD, LTC/USD) —
daily bars, fresh Alpaca crypto fetch (keyless), 2021-01-01→2026-08-15
(SOL from its 2021-09 listing). Two canonical configs: System 1 (20-day
entry / 10-day exit) and System 2 (55/20). Entry = close breaks above prior
N-day high; exit = close breaks below prior M-day low (shift(1), no lookahead).
Equal-weight 25%/symbol when signaled long, cash (0% yield) otherwise. Cost
10bps/side (20bps round-trip, the contract's stated crypto minimum). IS
2021-2024, OOS 2025-2026(→08-15). Code + full numbers:
lab/memory/experiments/crypto_donchian_trend_backtest.py + `.json`.
- System 1 (20/10): IS n=112, gross PF 3.29 / net PF 3.20, portfolio
+705.71% (the 2021-2024 bull carried it hard). OOS n=49, gross PF 0.82 /
net PF 0.78, avg net ret/trade −1.00%, portfolio −13.55%, max DD −37.7%.
Net PF < 1 OOS — fails the ≥1.15 gate outright.
- System 2 (55/20): IS n=48, PF 2.79/2.73, +120.7%. OOS n=22, PF 0.33/0.32,
avg net ret/trade −6.26%, portfolio −31.4%, max DD −32.1%. Worse than
System 1 — the slower system's few big whipsaws hurt more when the trend
the whole method depends on isn't there.
- Benchmark: BTC buy-and-hold same OOS window: −33.28%. Both systems lose
LESS in absolute drawdown than holding BTC naked (partly just being out of
the market more), but that's cold comfort — net PF < 1 means the strategy
itself has negative expectancy, not just "beats a falling asset."
- Read as regime, not bug: 2021-2024 was a historic multi-leg crypto bull —
textbook trend-following terrain. 2025→2026-08 has been a grinding
BTC-down / range-bound regime — the whipsaw environment trend-following is
known to bleed in. This is the IS-only-artifact pattern already burned once
this week (VWAP+EMA9 2026-08-15): great in-sample number, sample-dependent,
no OOS edge.
Actions: no birth. Gates (OOS, net, best of the two): PF≥1.15 FAIL (0.78
best case). ≥100 trades: pooled IS+OOS trade count clears it, but the OOS-only
segment that matters for the PF number is thin (49, 22) — moot since PF
already fails. MaxDD≤20%: FAIL (−37.7%, −32.1%). 0/3 on the segment that
counts. Population still 2 EMBRYO cells, 0 live trades — nothing to mutate.
Do-not-retry: plain Donchian/Turtle breakout trend-following (any of
20/10, 55/20) as a standalone long-only entry on the crypto majors basket
(BTC/ETH/SOL/LTC) at daily granularity — strongly regime-dependent, decisively
negative net-of-cost in the 2025-2026 chop/down window tested here. A
respectable follow-up would need an explicit regime gate (e.g. only trade
breakouts while a longer BTC trend filter — 200sma or similar — agrees) tested
as its own honest IS/OOS split, not a data-mined patch on this result — untested,
not worth attempting again without that plan.
2026-08-19 — Icarus fade (owner-proposed): reversal is REAL, the short expression is UNDEPLOYABLE
Hypothesis tested (owner, re: MRNA): "stocks that go up too fast too
quickly dip on profit-taking — fade them." Survivorship-free close panel
(5,511 tickers incl. 1,541 delisted, 2021-05→2026-05), events = +50%/10d
(E10_50, n=2,949) and +30%/5d (E5_30, n=6,518), 20-bar cooldown, entries at
next close, IS ..2024-12 / OOS 2025-. Shorts net of 10bps/side + 25% APR
borrow; long-continuation control; first-red-day trigger variant. Code +
full numbers: lab/memory/experiments/icarus_fade_backtest.py + .json.
- The direction is right. After a +50%/10d run, the average name bleeds:
gross short +3.5%/10d, +8.1%/20d IS; +2.1%/+4.0% OOS. The long control
LOSES in both segments (PF 0.48–0.93) — buying the spike is the worst seat
at the table. Median short outcome positive nearly everywhere.
- The tradeable edge is thin and tail-poisoned. Best config
(E10_50 naive h20) OOS net PF 1.161 / +1.8%/event — a hair over the 1.15
gate — but single events lost −199%…−558% net (E5_30: −2,808%!). Close-only
stops cannot cap an overnight squeeze; a handful of GME-style rips erase
years of median wins. The faster E5_30 trigger is NET NEGATIVE OOS
(PF 0.74–0.93). first_red (wait for the first −2% close) forfeits the
early reversion without dodging the squeezes: OOS PF 0.94–1.10.
- Costs are understated by design: flat 25% APR borrow; real HTB fees on
exactly the squeeziest names run 100–300%+ and land on the worst events.
The marginal 1.16 PF does not survive realistic borrow skew.
- MRNA context on test day: +210%/10d, closed AT its run high, 4.3× volume —
3–6× beyond the tested threshold and still FRONT-SIDE (no distribution
bar yet). Exactly the profile of the events that produced the tail losses.
Actions: NO BIRTH. Verdict: mean-reversion after parabolic runs exists
gross, but a naked-short genome fails on tails + borrow. The professional
expression of this edge is DEFINED-RISK (long puts / put spreads, max loss =
premium) — unavailable here: no options feed (2026-08-14 verification).
Do-not-retry: naive or first-red-day SHORT fading of parabolic run-ups
on the broad panel as a genome — OOS PF ≤1.16 with unbounded single-event
tails. Reopen ONLY with (a) a real options feed for defined-risk expression,
or (b) a portfolio-level sim with hard per-event notional caps + realistic
per-name borrow-fee data showing the tails are survivable — neither exists
today.
2026-08-19 (later) — Icarus, options expressions: PUTS DEAD on real data; spreads inconclusive
Correction first: the repo DOES hold options history — harness/data/options,
2.4GB, 353 liquid underlyings, per-contract DAILY + 5-min TRADE bars,
expiries 2024-05→2026-05 (Alpaca paid-era downloads), + SPY-only NBBO/OI.
"We'd need to buy history" (earlier today) was wrong for a first pass.
Put-buying pilot (lab/memory/experiments/icarus_put_pilot.py): 85 of
1,331 post-2024-06 parabolic events overlap the options universe; 28 had a
tradeable put print (~45d, 95%-strike, 10% spread pads). Result: mean
−49.3%/trade on premium, median −88.5%, win 21%, PF 0.27 — negative in
2024, 2025 AND 2026. The underlying reversal (+2-4% net short, prior
battery) is REAL but SMALLER than what the options market charges at
parabolic tops: entry IV is at panic highs, then crushes. Removing the
spread pads entirely still leaves ≈−30%/trade — the pads are not the story.
DEAD. Do-not-retry: long puts (or any long-premium structure) on
parabolic-run-up fades — the vol is priced worse than the move.
Call-credit-spread pilot (icarus_callspread_pilot.py): the vol-SELLING
mirror — n=9 only (both legs rarely print same-day), and results carry
crossed-print artifacts (ret-on-risk +890%/−170% are impossible for a
defined-risk spread → stale trade prints, not real fills). INCONCLUSIVE,
not dead. Two-leg structures cannot be priced from trade bars; they need
historical NBBO QUOTES, which exist here only for SPY. Cheapest honest
paths if ever revisited: a one-off CBOE DataShop/ORATS EOD-quote slice for
the ~130 event names, or Polygon's quote tier (~$199/mo — NOT the $29
aggregates tier, which would not fix this).
Standing verdict on the whole Icarus family: underlying short = marginal
net with fatal tails; long puts = dead; credit spreads = untestable without
quote data. NO BIRTH anywhere. The free nightly scanner + shadow book
(scripts/icarus_scan_run.py, live since tonight) remains the only active
piece; its pre-registered gate (≥60 shadow trades, net PF ≥1.3) is now the
bar for spending anything on quote data for the spread variant.
2026-08-19 (owner decisions) — researcher 2x/week; reserve stays cash; e2e validation
Owner: "proceed with recommendations, validate end to end."
- Researcher cadence → Sun + Wed 23:30 UTC (was weekly). Owner has
pushed twice for more AI-strategy flow; sessions are Haiku on the metered
key, so doubling is cheap. Timer deployed + verified — the FIRST Wednesday
session fires tonight. Prereqs re-verified: claude CLI 2.1.233 at
/home/tradervex/.local/bin/claude, ANTHROPIC key present, wrapper intact.
- Cash reserve ($100k) stays idle. Trigger to revisit, pre-registered:
when the Organism's allocated cells exceed ~60% of its own $100k account
(currently $7,750 = 8%), reserve deployment becomes a real conversation.
Capital is earned by results, not granted by boredom.
End-to-end validation (all green): full suite 4,802 passed / 0 failed;
VPS on latest commit; 25+ timers armed with sane next-runs; icarus unit
force-run OK (walk-back + idempotency verified); TSLA fractionable=true on
the organism account (MACD sizes 0.23 sh ≈ $80 — the fix is deliverable);
site 9/9 pages 200, sleeves sum exactly ($99,657 + $100,000 + $97,361 =
$297,018); health panel's two 24h failures both explained (mp SIGABRT
09:38 ET — consequence defused by the reconcile guard; health-alerter blip
19:05 UTC = it probed the API mid-deploy-restart, self-recovered).
Tomorrow's expected prints: PEAD exits CSCO+AMAT ~09:40 ET (books at real
fills for the first time), mp/ORB trade the open, icarus scan processes
8/19 tonight at 22:00 ET, researcher session 19:30 ET.
2026-08-19 (second session, Wed) — ORB15 first trade; morning_pullback selection pressure — no-op
Autopsy: Market: SPY +0.44%, QQQ +0.08%, BTC +6.46%, ETH +9.54%, VIX 15.84. TSLA +2.8% from open to close; favorable for breakouts.
Genomes:
- `g_tsla_orb15_holdeod` (EMBRYO): 1 trade: shorted 5 TSLA at 337.55 (OR low break), exited at 342.28 (stop), realized loss −$23.62. Stop-order mechanics sound (confirmed: resting stop-sell at 337.64 fired correctly, exit at stop-buy 341.14 filled at 342.28 due to normal slippage in a rally). Single trade is noise; insufficient data to judge the 2026-08-15 stop-entry mutation.
- `tsla_morning_pullback` (PAPER): 3 fills: sell 144 TSLA @ 343.15 (+$450), sell 145 @ 347.39 (+$1,068.65), buy 296 @ 348.37 (−$943.14) = net +$575.51. Profitable today but in a neg_streak: SELECTION punished −5.58% (2026-08-17), 0% (2026-08-18), capital cut from $10k → $3.75k over 2 days. Fitness −0.0314/−0.0316. This is a legacy genome (pre-organism seed); its parameter space is not fully documented here.
- `g_tsla_macd_trend` (EMBRYO): 0 trades. Still waiting for a setup.
Population: 3 cells live, 2 of 12 allowed. All genomes firing/idle as expected.
Hypotheses tested: none this session. Considered new births (crypto Donchian with regime gate; ORB with VIX filter), but each would need honest backtest evidence (PF ≥1.15 OOS, ≥100 trades, maxDD ≤20%) on cached data. The Do-not-retry list from 2026-08-15 through 2026-08-19 covers every major hypothesis tested; the next respectable follow-ups lack validated backtests and would cost 30–60 min to build fairly.
Actions: none. No births (insufficient hypothesis evidence). No mutations (ORB15 data too thin; morning_pullback parameter space unclear). No kills. Population stable.
Do-not-retry: nothing new. The inherited list remains the guardrail (mean-reversion TSLA intraday, VWAP+EMA9, naive ORB without liquidity context, Donchian crypto, Icarus shorts + puts, PEAD, momentum rotation).
Session tone: skeptical quant discipline. A no-op with a clear autopsy beats a forced mediocre birth. ORB15's stop-order mutation is sound; it needs more trading data before we know if it's a winner. Morning_pullback is being correctly pruned by SELECTION's 10-day fitness window — let it prove parity or get retired. Next session: watch for ORB15 and MACD accumulation, and monitor whether morning_pullback stabilizes or continues to decay.
2026-08-19 (owner-proposed) — Weekly $5/$10 reversal grid: NO BIRTH (loses to SPY money-weighted, badly)
Hypothesis (owner, exact spec): buy $5 of any stock down ≥5% on the week;
sell $10 of any holding up ≥10% on the week; all stocks simultaneously.
Long-only interpretation (can only sell what you hold). Survivorship-free
panel, signals Friday close, fills next session close, 25bps/side.
Code: lab/memory/experiments/weekly_reversal_grid_backtest.py + .json.
Artifact hunt worth remembering: v1 said +$1.04M — fantasy. The panel's
per-day $5/$1M filter makes 3,320 names drop out for a median 296 days
(exactly their collapse window); liquidating on dropout exited dip-buys at
pre-collapse prices. v2 holds through dropouts (eats the reappearance
price) and liquidates only true delistings under recovery scenarios.
LESSON: this panel is built for TOP-of-market strategies; for buy-losers
strategies its filter censors the loss tail — rebuild unfiltered or bound.
v2 results (5yr, ~125k buys / ~40k sells, peak deployed ~$204-255k):
- delist recovery 100%: PnL +$62k vs SPY-same-flows +$152k
- delist recovery 50%: PnL +$33k vs SPY +$163k
- delist recovery 0%: PnL +$3k vs SPY +$173k (IS segment NEGATIVE −$8.6k)
Max DD ~$47-53k against those gains; ends holding 2,925 positions.
And v2 is STILL optimistic (no averaging-down inside dark valleys; stale
marks flatter DD).
Why it fails (the intuition): sells fired only 40k times vs 125k buys —
weekly −5% names mostly keep deteriorating, so the +10% harvest can't keep
up and the book becomes a warehouse of chronic decliners. Weekly reversal
exists as a cross-sectional RANKING edge (gross), not as an absolute
"every dipper is on sale" edge. The spec underperforms doing nothing
(same dollars into SPY) by 2.5-50x depending on delisting kindness.
Actions: NO BIRTH. Implementation was feasible (fractional $5 orders,
free grouped-daily signal, ~1k orders/wk within Alpaca limits) — feasibility
was never the problem; the edge is.
Do-not-retry: fixed-dollar threshold grids that buy absolute weekly
losers market-wide, long-only, any thresholds — dominated by SPY same-flows
in every delisting scenario tested. A respectable follow-up would be the
academic CROSS-SECTIONAL weekly reversal (rank-based, liquid universe,
long-short, quintile spreads) on an UNFILTERED panel — different strategy,
untested here, needs the unfiltered panel build (~4h of free API calls).
2026-08-20 — LEDGER CORRECTION: mp's crash didn't just orphan a short — it INVERTED the book
Owner asked where the Organism's ~$3k went; the site's ledger couldn't
answer because its morning_pullback rows were FICTION. Reconciling against
Alpaca's own fill feed (the definitive record) revealed:
- 8/18: mp shorted 296 @335.50 (never recorded — crash era), crashed
through its flatten window, and the NEXT morning its wiped state met a
long signal: its "buy 289" actually COVERED the forgotten short
(realized −$1,302.35), and its two "profitable long exits" (+$450,
+$1,068 as booked) were actually sell_short fills OPENING a new 296
short — which the 14:50 orphan-reconcile then flattened for −$942.24.
- 8/17's booked −$557.55 was really −$365.80 (signal-priced entries).
True realized, per broker fills: mp −$2,610.39 · ORB −$23.62 · PEAD
+$364.14 → matches account equity to the cent with the live position.
The 4 fictional rows were REPLACED with 7 broker-truth rows, every one
carrying a visible correction note — the correction itself is part of
the public record, not a quiet edit.
Why it cannot recur (all live before this entry): run_once reconciles
state vs broker EVERY tick (an inverted book gets flattened within a
minute, not traded on), entries+exits book ACTUAL fills (commit dd8650f
for PEAD, 8/20 for mp), and the twice-daily invariant auditor alarms on
any broker/state divergence. Today's live test: mp is short 284 @342.25
with state, broker, and site all agreeing.
2026-08-23 (weekly session) — ORB15 noise; morning_pullback recovered; population stable; no-op
Autopsy (2026-08-21 Thu + 2026-08-22 Fri):
Population: 3 cells live (2 EMBRYO + 1 PAPER).
- `g_tsla_orb15_holdeod` (EMBRYO $2k): 2 live trades total (all Thu/Fri, prior week showed 2026-08-19 entry too).
- 2026-08-19 short TSLA @337.55, cover @342.275 = −$23.62. Market was +2.8% that day (bullish reversal).
- 2026-08-20 short TSLA @342.20, cover @343.565 (EOD flatten) = −$4.10. Market also reversed up.
Both were SHORT signals (QQQ weak), entered correctly per the ORB-15 logic, but the market rallied
both days against the position. This is normal market noise, not a bug. The 7-year TSLA battery
walk-forward validated the strategy on decades of data; 2 live trades losing is not a refutation.
Neg_streak=3, fitness −0.007734 — expected as SELECTION hasn't run since 2026-08-15 reset, next
selection cycle fires Mon 2026-08-24 20:20 ET.
- `tsla_morning_pullback` (PAPER $2.6k, was $3.75k on 2026-08-18):
- 2026-08-21: long 228 @360.54, sell 228 @362.80 = +$515.28 (perfect, +0.143%).
- 2-day cumulative (Thu/Fri) = +$1,302.15 (including prior week's 08-20 cover profit).
Recovered strongly from the Aug 17-18 drawdown. Genome is sound. Still PAPER (not funded),
tracking correctly.
- `g_tsla_macd_trend` (EMBRYO $2k): 0 trades. Waiting for setups. No issue.
- Icarus shadow: 14 open hypothetical short positions from the 2026-08-19/20/21 events, 0 closed,
1 bar held each. Decision gate: ≥60 closed trades, net PF ≥1.3. Too early. MRNA position losing
(entry 133.32 vs last close 145.13), which aligns with the validated underlying reversal signal
(parabolic run-ups do fade on average) but the unbounded short tails killed the naked version,
per the 2026-08-19 battery. Shadow trading is the correct patience mechanism here.
Hypotheses tested: none this session. Considered backtest of backlog #1 (ORB-15 on NVDA), but
the 5-min data pipeline for 2021-2026 would require fresh Alpaca fetches and API spend; the cost
model for a validation-only run (known-good strategy on a new symbol) isn't justified until there's
a trigger (e.g. ORB15 loses money again, or the population fills up and needs fresh ideas).
Actions: none. No births, no mutations, no kills. Population stable. Let SELECTION vote on Mon.
Do-not-retry: nothing new. The Do-not-retry list (inherited from 2026-08-15..2026-08-20) stands.
Tone: The population is healthy. ORB15's 2-trade loss streak is noise in a strategy validated
on walk-forward 7-year history; morning_pullback recovered and trades correctly; MACD is waiting.
One rigorous no-op with a clear autopsy beats a forced mediocre birth. SELECTION fires in ~24h
and will decide on promotions/benches. Next substantive work: (a) when SELECTION promotes or kills,
update the population accordingly; (b) if the backlog remains untested by Wed evening, budget for
ORB-15 on a new symbol then.
2026-08-20 (second correction) — the fill-poll never worked; PEAD booked MAY prices
Owner caught it from the numbers: "today +$170 but the ledger sums +$751?"
The account was TRUE; the ledger was fiction — again, one layer deeper:
- The actual-fill poll added 8/19-8/20 compared order status via
`str(status).endswith("filled")` — but Alpaca's enum prints
"OrderStatus.FILLED", so the check NEVER matched and every runner fell
back silently.
- mp's fallback (live 5-min close) was merely imprecise. PEAD's fallback
read the DAILY-BARS CACHE — last refreshed in MAY — and booked CSCO's
exit at its May close (122.57 vs the real 110.25 fill) and AMAT at
522.12 vs 492.49: fantasy +$364 on a real -$408 day.
Corrected to broker-activity truth (recipe notes on every row):
PEAD today -$407.65 (CSCO -125.05, AMAT -282.60) · mp today +$287.13
(entry VWAP 342.106; covers 339.32/+395.62 and 342.87/-108.49).
Cross-check: research equity today +$286.65 ≈ mp realized ✓; core
-$45.42 = PEAD's close-to-close ✓ — pennies.
Fixes shipped: (1) status check is case-insensitive; (2) PEAD's fallback
is a LIVE latest-trade quote, last resort = entry price (a flat record
beats fantasy); (3) equity snapshots FREEZE each date's row at the 16:10
ET close — after-hours repricing no longer leaks into the yesterday
baseline (core's polluted 8/19 row reset to broker last_equity); and the
one that ends this class: (4) the invariant auditor now runs
fills_reconcile — every ledger row of the last 2 days must match a
broker FILL activity within 0.5%, and it runs twice every trading day.
It passed post-correction; it would have flagged CSCO@122.57 pre-market.
2026-08-23 — Owner escalation answered: WHY only TSLA + the In-Play sleeve ships
**Owner: "every day is trading only Tesla, no new strategies... trade like
the top 1%."** Honest diagnosis, then the build:
Why the book was TSLA-only (four concrete reasons, all addressed):
1. The Weekend Engine — the broad-universe book — has been SILENTLY DEAD:
its yfinance daily feed serves ~40h-stale bars on the VPS, and the
freshness guard correctly KO'd every Friday entry (SKIP stale_bar, both
epoch Fridays). Fixed: stale-yfinance → Alpaca-daily fallback in
harness/live.py (399 tests green). It can actually trade next Friday.
2. The researcher's idea funnel was starved until 8/20 (backlog + SHADOW
births created then); TONIGHT is its first backlog-aware session.
3. The gates rejected 8 candidates honestly — most retail edges are dead;
that part is the system working.
4. The validated PROFESSIONAL strategy (Stocks-in-Play ORB, 2026-06-05:
net PF 1.38, OOS 1.48) was culled with everything else on 8/14 and
never revived. That was the real miss.
**Shipped — the In-Play Opening Range sleeve (orb_inplay), the top-1%
day-trader workflow end to end:** premarket scanner (09:12 ET) turns the
senses' movers + most-actives into the day's watchlist (CS-only, $5-1500,
cap 20, TSLA excluded — sibling engines own it); the runner (every minute
09:34-16:11 ET, research account, $10k capped book) demands RVOL>=1.5
participation, enters opening-range breakouts with an ATTACHED protective
stop (OTO), sizes 0.5%-risk to the stop, time-stops stalls at 11:00,
flattens 15:55, max 3 concurrent. Entries+exits book at polled actual
fills, sleeve=research, external genome under selection (EMBRYO $5k).
Smoke-tested end to end (Sunday dry-run read the 10-name watchlist).
Also fixed this session: trades.qty int-flooring (MACD's 0.23-share
entry recorded as qty=0 — row corrected); auditor organism-key parsing
(gid|symbol split — MACD's tracked position double-reported as orphan+
phantom for 3 days); mp's 11:30 flatten was bars-DEPENDENT (IEX outage
8/21 delayed it 26 min — flatten now fires without a data feed).
Do-not-forget: the 8/21 audit finding trio was 2/3 auditor-bug + 1/3
real (qty=0). An auditor must be audited too.
2026-08-23 (late) — In-Play sleeve: dress-rehearsed on real data before its first live day
Owner demanded proof over promises. Built scripts/inplay_rehearsal.py —
replays the sleeve's EXACT decision engine (same gates, sizing, stops,
time-stops) over any real day's 5-min bars for the scanner's actual
watchlist. Friday 2026-08-21 tape, $10k book:
- 10 in-play names scanned: 3 thin tapes skipped, 3 rejected by the
RVOL>=1.5 participation gate (INTC 0.65 / NVDA 1.18 / SPCX 0.77 —
gappers nobody was trading), 3 entries taken (JUNS rvol 618, MARA 5.1,
MRNA 3.6).
- Every loser capped at ~0.5% of book by the attached stop or the 11:00
time-stop: -$49.29, -$49.94, -$15.80 → day -$115 (-1.15%) on a chop
day. The discipline held on every single trade — that is the receipt.
- The rehearsal also caught + fixed a replay-modeling gap (one entry per
symbol per day) and a stale-watchlist edge (Monday must never trade
Friday's movers — scanner now refuses senses not dated today).
Watchdog: invariant auditor gained check_inplay_chain — a dead scanner or
dead runner on any weekday raises a health-panel finding by 16:45 ET.
The Weekend Engine died silently for two weeks; this sleeve cannot.
2026-08-24 (pre-open) — orb_inplay STOOD DOWN before its first trade: the revalidation failed
The owner asked three sharp questions (add shorts? is hold really better
than trailing? is the stop too shallow for these names?) — answering them
with data KILLED the deployment, hours before its first live entry.
Config battery (lab/memory/experiments/orb_inplay_config_battery.py):
two-sided (first-bar direction, shorts included), RVOL-gated, 10 high-beta
in-play-like names, 2022..2026-05, 5bps/side, IS/OOS:
- Entry {close-through, stop-at-level} x stop {OR-opposite, 1.5xATR5m,
0.1xATR14d} — ALL SIX configs negative both segments. Best:
close-through + OR-opposite stop, -0.36R IS / -0.55R OOS.
- The LIVE config (1.5xATR5m stop) was the WORST: -0.61R IS / -0.96R OOS,
win rate 4.7-7.8%. The owner's instinct ("that stop will be hit every
time") was exactly right for this universe — the ATR of quiet 5-min
bars is noise-level on names that move 5% before lunch.
- Exit-style battery (orb_exit_style_battery.py): hold / 10R-target /
breakeven / EMA-trail all negative on identical entries — exit style
cannot rescue an entry with negative expectancy.
- RVOL dose-response (the paper's own claim): monotonic and REAL
(-0.61R @1.5x -> -0.19R @5x -> ~0R @10x) but never crosses into
positive net expectancy; n=14 OOS at 10x is noise.
Verdict: the published stocks-in-play ORB (Zarattini/Barbon/Aziz,
SSRN 4729284; headline 1,637% 2016-2023) does not survive net-of-cost on
2022-2026 data in any variant we can construct from our caches — matching
the independent QQQ-paper replication (break-even at ~2.2c/share slippage)
and this repo's own repeated lesson: naive/near-naive ORB is a cost
artifact; only narrow validated niches (TSLA ORB-15 + QQQ filter) survive.
The June 2026-06-05 "PF 1.38" validation of orb_live's mega-cap basket is
now DOWNGRADED to suspect pending a rerun with this battery's rigor.
Actions: both timers disabled; genome RETIRED (never traded); code,
scanner, rehearsal tool and batteries kept as artifacts. The 9-check
auditor keeps watching everything that IS live.
Do-not-retry: ORB on high-beta in-play names with ANY of the six
tested configs. REOPEN CONDITIONS (specific): (a) true cross-sectional
top-20-by-RVOL daily selection across the WHOLE market — requires
market-wide intraday history we do not have free (this is the honest
data gate; ~\$29-199/mo tiers discussed 2026-08-19), tested with this
battery's rigor incl. same-bar stop fills; or (b) extreme-RVOL-only
(>=10x) with years more sample than our caches hold. The dress-rehearsal
discipline (replay before live) is now MANDATORY for every new runner.
2026-08-24 — Parallel track: QQQ intraday momentum ("noise area") — NO BIRTH
While the stocks-in-play download runs, tested the other famous Concretum-
family strategy on our cached QQQ 5-min (2021-05..2026-05, 1,246 days):
noise bands per 5-min bucket (trailing-14d |move-from-open|, gap-aware
anchors), stop-and-reverse breakouts, two exit styles, EOD flat.
Artifact: lab/memory/experiments/qqq_intraday_momentum_battery.{py,json}.
- band-trail @1bp/side: IS Sharpe 0.35 → OOS 0.01 (dead flat, PF 1.00)
- vwap-trail @1bp/side: IS 0.33 → OOS -0.35
- at 3bp/side everything is deeply negative (Sharpe -1.2 to -2.2)
- avg trade ≈ +0.6bp GROSS — the per-trade edge is smaller than any
realistic friction at 2+ round-trips/day.
Same verdict shape as the ORB-QQQ replication literature: the published
Sharpe 1.5+ lives in frictionless fills and earlier regimes. NO BIRTH.
Do-not-retry: noise-area intraday momentum on QQQ at 5-min granularity
with band or VWAP trailing, any cost >= 1bp. Reopen only with (a) 1-min
granularity + limit-order fill modeling that PROVES sub-bp effective
costs, or (b) a regime gate with its own honest N-trials accounting.
Also this session: sample-first e2e validation (owner's process demand)
is now the house pattern — the miniature caught nothing new but PROVED
the machinery in 2.5 min; the full-data battery inherits verified code.
2026-08-24 — Alpha miner v1: the "guaranteed formula" lesson, live
Owner: "create a formula that guarantees money." Built the honest version:
an exhaustive pattern miner (5,220 hypotheses: entry-time x hold x side x
condition on QQQ 5-min, 2021-23 discovery / 2024-26 sealed validation,
Bonferroni t>=4.43). Artifact: qqq_pattern_miner_v1.{py,json}.
- FIRST RUN found 12 "survivors" with validation t-stats of 8-10 and
12-20bps/trade — a money machine. It was a LOOK-AHEAD LEAK: the
first-30-min condition was gating entries placed BEFORE 10:00. The
miner's information-availability map now hard-blocks conditions at
bars where they aren't yet knowable. THIS is how every "guaranteed
formula" in the wild is born — the future leaking into the past.
- Leak sealed: 0 of 5,220 hypotheses survive on QQQ. The most efficient
instrument on earth holds no simple free lunch. Expected; now proven
on our own data.
Standing conclusion for the record: guaranteed daily profit does not
exist at our scale; the realistic asymptote is a PORTFOLIO of many small
uncorrelated edges (breadth -> high Sharpe -> most days green). The
miner's real hunting ground is NOT mega-liquid indices — it is the
5,717-symbol minute-level dataset downloading now, where capacity-
constrained edges (too small for institutions) can persist. Miner v2
targets cross-sectional patterns there once the SIP battery completes.
2026-08-24 — THE STOCKS-IN-PLAY VERDICT: dead on modern data, all 16 configs
The full-fidelity test the $29 data plan was bought for is complete:
TRUE daily top-20 by opening relative volume across the ENTIRE US market
(5,698 symbols, 3.22M symbol-day heads, coverage-gated), 41,709 selected
symbol-days, ~20k trades per config, 2021-08..2026-08, same-bar stop
fills, IS/OOS split at 2025. Artifact: sip_validation_battery.json.
ALL 16 configurations negative, IS and OOS consistent (not regime luck):
- Best: close_through + OR-opposite stop @5bps: -0.126R IS / -0.094R OOS
(PF 0.73/0.78, win 43%). At 10bps: -0.21R OOS.
- The PAPER'S OWN stop (0.1x ATR14d): catastrophic, -1.5 to -3.3R —
a stop that tight turns fixed costs into multiples of R and gets
noise-stopped 95% of the time. The 1,637% headline (2016-2023,
frictionless) does not exist on 2021-2026 with honest fills.
- BOTH selection variants equally dead (9:35 RVOL median-rank20 4.7x;
premarket variant 24.7x) -> the $199 real-time question is MOOT.
Do-not-retry: stocks-in-play ORB, any of these 16 configs, any selection
variant. The $29 bought total clarity on the biggest remaining published
candidate — cheap at the price.
What survives the night: the DATASET and the INFRastructure. 3.2M
symbol-day heads + 3.1M bars of the market's 41k highest-information
days + 12-way parallel fetchers + the leak-proof miner pattern. Miner v2
(cross-sectional, in-play days, N-trials discipline) is now backlog #0 —
the -0.09R best config is close enough to zero that SUBSETS may be
positive, but only disciplined mining may say so, never cherry-picking.
2026-08-24 — THE CONTROL THAT BEAT THE STRATEGY: in-play first-bar momentum
Owner challenged "is the system broken?" → positive controls proved the
machinery (oracle +3.24%/day, 99% win — the sim measures profit fine;
the ORB edge exists gross at +0.013R — real but 10x thinner than
frictions). And control C changed everything: dropping the ORB entry AND
the stop — just following the FIRST-BAR DIRECTION on the day's top-20
in-play names from 09:35 to the close — earns +23.6bps/day gross.
The breakout machinery was DESTROYING the selection edge, exactly as the
replication literature hinted ("selection does the work, not the rule").
Rigorous decomposition (sip_firstbar_momentum.py, 24,798 trades):
- LONG-only is the whole edge; shorts are dead (and carry borrow):
@10bps RT: IS +28bps/trade Sharpe 1.38 | OOS +39bps Sharpe 2.02
@20bps RT: OOS +29bps, Sharpe 1.51. OOS > IS (strengthening).
- LIVE-implementable variant (selection by real 09:30-35 volume, visible
at 09:50 on 15-min-delayed data; ENTER 09:50 close, EXIT 15:55):
OOS +33bps/trade, Sharpe 1.89, maxDD -18% @10bps; Sharpe 1.33 @20bps.
The $29 tier suffices FOREVER for this strategy. Premarket-selection
variant is weaker (OOS 0.90) — first-bar volume is the signal.
- Gates: OOS n=4,175, expectancy positive at honest costs, maxDD<20% —
passes everything. Data-mining accounting: this was ONE control (not a
search), decomposed along pre-standard axes; OOS-alone t≈2.6.
Decision: birth as SHADOW first (fills on gappers are the residual
unknown; at ~10 signals/day the live-evidence gate (>=30 trades, net>0,
PF>=1.15) resolves within a WEEK, risking zero). Runner design: one
entry window (09:50), one exit window (15:55), no intraday management —
operationally the simplest strategy we run. Name: g_inplay_firstbar_momo.
2026-08-24 (morning) — Researcher billing audit (owner: "no tokens consumed?")
Verified end to end: the researcher RUNS (Sun 8/23 session: 4 min, log +
pushed commit 4d1ad67) and has ALWAYS billed the metered API key — the
.env contained the same sk-ant-api key under BOTH ANTHROPIC_API_KEY and
a misnamed CLAUDE_CODE_OAUTH_TOKEN (setup-era leftover, now deleted).
Console shows ~nothing because Haiku sessions are tiny (~4 min, likely
<$1 each; look under the key's usage on Sun/Wed ~23:30 UTC). Proof-of-
work is verifiable without the console: logs/organism_researcher.log +
git commits authored "TraderVex Organism Researcher". Also verified:
selection DID process Friday (+$515 reward, cell back to $2,637 —
entries are stamped by trading day; the timer sleeps weekend mornings by
design). Backlog updated: the paid Polygon key unblocks the researcher's
own data fetches.
2026-08-24 (close) — Nursery day one: scoring bug caught + fixed, TRUE score booked
Day-one shadow exits all printed entry==exit (-$1.00 x20): Polygon aggs
returns EMPTY for sort=desc, so _last_price silently fell back to entry.
Fixed (ascending fetch, take last bar) and the day RESCORED with true
15:55 closes: -$104.21 net, 7W/13L (-0.52% of the $20k shadow book)
— an ordinary loser, inside the backtest distribution. Book corrected.
Rest of the day: ORB's netting-guard unblock paid off same-day — its
short stop (armed 09:45, the same order the broker rejected Friday)
FILLED at 14:45 @352.45 and flattened +$3.20, its first win. mp: 181
clean passes, no qualifying setup on a -3% gap day (selective, not
broken). MACD's shadow life began (virtual 2.86-share long at 15:50).
Also fixed: a state-cleanup race (runner tick overwrote the morning
pop — stop-timer-edit-restart is the safe pattern) and the auditor's
chain check re-pointed from the retired orb_inplay to the live momo
chain. Audit after fixes: 1 finding, the benign mid-deploy alerter blip.
2026-08-24 (night) — Owner escalation: the three answers + two structural changes
"Why are we losing?" — split by era: crash-incident era (first 3 days,
runner SIGABRT/orphan/inversion): -$2,634. Since the guards went in on
8/20: **+$396 over 8 closed trades — net profitable four straight
sessions.** The losses were infrastructure, not strategy, and that
infrastructure failure class is dead (reconcile-every-tick + auditor).
"Why bugs?" — honest: the price/fill-truth class bit FOUR times (mp
signal prices, PEAD stale cache, .endswith('filled'), sort=desc). Class-
level kill shipped: harness/marketdata.py is now the ONE tested source of
price truth (4 regression tests pin each historical bug shape); momo
migrated; auditor gained check_shadow_sanity (a scored shadow day with
zero win-dollars = broken marks tripwire). 10 checks now.
"Why small trades?" — cells were fear-sized for a PAPER account whose
job is evidence velocity. New sizing (env, guards scale with it):
EMBRYO $2k→$8k, PAPER $5k→$20k, SCALED $15k→$40k, risk 1%→2%,
punishment floor kept at $2k so selection still bites. mp's cell
RESTORED to $10k — its punishments were my infra losses, not its signal
(signal-only record since guards: +$437/4 days). ORB → $8k.
2026-08-25 — The Real-Money Gate (pre-registered)
Owner: "how do I know things run as intended once I put real money in?"
Answer written as a standing contract: docs/REAL_MONEY_GATE.md — 8
criteria across operational integrity (30 incident-free days, ≥95% clean
audits, a kill-switch drill), edge evidence (60+ live trades net-positive;
portfolio-positive window), and blast-radius architecture (broker-level
hard caps, LIVE owner alerting, 5% start size). The incident-free clock
started today. Also answered: the VPS is 2% utilized (load 0.04/2 cores,
1.3/7.8GB) — the bugs were logic and API-contract defects, never
resources; do not spend on hardware.
2026-08-25 (night) — Friendly fire post-mortem: two safety systems collided
Owner's "check what happened today" unpacked into the best post-mortem
yet. The 16:45 audit flagged an unclaimed 22-share TSLA short. Forensics:
ORB's stop filled 09:45:09; its runner detects fills on the NEXT 5-min
tick (09:50); at 09:46 mp's broker-truth reconcile — which cannot see
sibling state — flattened the "unowned" 22 shares. ORB then carried a
GHOST long all day and its 15:50 hold-to-close "exit" sell OPENED a real
short, unmanaged overnight (contained: OPG close queued for the 8/26
open; ~+\$49 unrealized at the time).
Fixes shipped tonight: (1) mp's reconcile is now SIBLING-AWARE (counts
organism positions AND armed pending stops — a stop may have just filled
before its runner's next tick); (2) fills_reconcile is BIDIRECTIONAL
(broker fills lacking ledger rows now alarm — today's ghost would have
been caught at 12:30 next day at latest); (3) two fiction ledger rows
corrected to broker truth (the "exit -\$20.46" was actually the short's
ENTER; the 09:46 reconcile exit re-attributed to ORB at -\$2.20).
Also learned: my "empty ledger today" scare was MY OWN query using a UTC
CURRENT_DATE boundary after 8pm ET — the exact class fixed on the site
on 8/20. The ledger was complete all along. And noted for the backlog:
mp sizes off ACCOUNT equity (280 shares = 0.5% x \$98k), ignoring its
selection cell — the capital-as-reward signal doesn't reach mp's sizing.
REAL_MONEY_GATE: A1 incident clock honestly RESET; restarts 2026-08-26.
Nursery day two: +\$24.84 (first green day), cumulative 40 trades
-\$79.37 — needs net>0 for promotion; days three-four decide.
2026-08-26 — Selection killed the discovery after 2 days; re-registered in the right unit
Nightly selection RETIRED g_inplay_firstbar_momo at 00:20 UTC by the
pre-registered rule (>=40 shadow trades, PF<1 — it stood at 40 legs, PF
0.73). The rule fired correctly but measured the wrong unit: this is a
~20-leg-per-day BASKET, so "40 trades" was two days of data on a strategy
whose backtest has month-long drawdowns. Two bugs surfaced with it: the
momo timers kept trading a RETIRED genome (leak — runner now checks its
population stage and no-ops when RETIRED/SUSPENDED), and day-level stats
didn't exist at all.
PRE-REGISTERED (before any new data): basket shadows are judged in DAYS.
Kill at 15 trading days with PF<1; promote at 20 days with net>0 and
PF>=1.15; 120-day age cap unchanged. The cumulative book is KEPT — no
clean slate (60 legs, 3 days, net -$111.28, PF 0.76). Day 15 verdict is
~2026-09-16. Coded in selection.py (SHADOW_BASKET_* constants), regression
test pins all three paths (survive/kill/promote).
Also today, the 8/25 orphan resolved BETTER than designed: the OPG close
partially filled 6/22 then expired, and mp's now-sibling-aware reconcile
correctly mopped up the remaining -16 at 09:33 (it also correctly did NOT
touch ORB's fresh 09:45 entry today — yesterday's fix passed its first
live test). The short netted +$166.56. And the new BIDIRECTIONAL audit
caught its first real bug within hours: PEAD's entry-recording had been
dead since 8/19 (order_id="" is silently skipped by record_trade) AND
booked signal prices 3.8% from real fills — fixed to broker truth
(order id + polled fill), INTU 13sh ENTER backfilled at 344.67.
2026-08-26 (close) — Autopsy: critical fixes deployed; baseline population holding
Autopsy (day 10 post-guards): ORB executed 4 trades (one -$43.28 loss + partial
position on gap-down entry, now 22 shares held into close). Morning pullback: 0
signals (EOD holds not triggered). MACD shadow: 0 signals, accumulating cell toward
whole-share. Momo shadow: resurrected at 18:54 ET after code fix (old per-leg gating
killed it at 40 legs / 2 days; new pre-registered RULE: DAYS, not LEGS). All tickers
have open positions overnight (none at risk; circuit breaker arms on portfolio loss).
Hypotheses tested: three critical bugs (entry-recording, friendly-fire collision,
basket gating unit) fixed in d59f04a (18:54 ET). Entry-recording: PEAD was caching
signal prices 3.8% stale since 8/19 (order_id="" was silently skipped); now uses
broker-truth fill + polled order_id (live INTU fill backfilled 344.67). Stage guard:
runner checks genome.stage on every tick — RETIRED/SUSPENDED genomes no-op (prevents
momo timer leak). Day-level gating: SHADOW_BASKET_* constants in selection.py now
judge basket genomes by trading DAYS (kill at 15 days PF<1, promote at 20 days
net>0 PF>=1.15), not leg count — pre-registered before any new data. All 45 tests
passing (including new test_shadow_basket_genome_judged_in_days_not_legs).
Actions: none (autopsy only). Bugs are production fixes, not hypotheses. Code is
live and tested.
Do-not-retry: per-leg gating on basket shadows — the new unit is trading days.
The momo strategy's v1 kill was correct (PF 0.73) but by the wrong metric; v2 audition
(now at 3 days with cumulative net -$111.28, PF 0.76) will re-score by day 15.
2026-08-26 (night) — mp cut to its cell; Polygon endgame started
Owner approved the recommendation and added a constraint: the Polygon
subscription will NOT be renewed — under a month of paid data left.
Shipped: (1) morning_pullback now sizes off its ORGANISM CELL ($5,625 —
selection had already punished it there) instead of account equity; it
was trading 17x its allocation (280-share entries = the -$2.2k bleed).
Verified live on VPS: cell-capped equity = 5625. Tomorrow it trades ~16
shares. (2) Whole-market 5-min harvest launched on the Mac (5,717
symbols, 5yr, extended hours, zstd parquet, ~18GB est) — the durable
research asset that outlives the subscription. Sample-validated first
(5 syms, spans + premarket bars correct). (3) Post-Polygon survival plan
for the momo basket: select now logs SIP-vs-IEX first-bar volume daily
for the top-100 RVOL zone; if per-symbol ratios hold, RVOL ports to
IEX-only (ratio cancels feed share) and the strategy outlives the key.
Backlog re-ordered under a hard deadline: alpha miner v2 must run on the
min5 archive THIS MONTH.
2026-08-27 — The $0 exits explained: the guard fought an armed stop
Owner asked why tsla_morning_pullback keeps exiting on $0 trades. Answer:
four of today's rows were the reconcile guard CHURNING against ORB's
armed short-side stop. My 8/25 sibling-awareness counted pending stops
as signed inventory — but an armed-UNFILLED sell-stop claims nothing, so
a flat account looked +13 stray; the guard sold phantom shares, ORB's
5-min cancel/re-arm cycle flickered the claim, and the guard oscillated
sell/buy/sell/buy 09:50-10:06 (real churn -$9.27, booked as $0.00 rows
at last-close prices — double fiction, now corrected to broker fills).
Fix: pendings only WIDEN the explainable range [lo, hi] — armed-unfilled
claims nothing, just-filled claims full qty, both must be legal; only
inventory OUTSIDE the range is unmanaged (_claim_range + 3 regression
tests pinning 8/18 orphan / 8/25 just-filled / 8/27 armed-stop cases).
Reconcile flattens now book the ACTUAL fill with realized NULL — 0.00
reads as breakeven and hid the churn.
Sweep of everything else: 12:30 audit ALL CLEAN; PEAD's fixed entry
recording proved live (CRM + HPQ booked with real order ids at 09:40);
chandelier correctly stops weekend's AVGO/KO and leaves PEAD's alone;
momo day 4 running (20 shadows) + first IEX-vs-SIP compare row written;
weekend banked STT +$115.15; core crossed its $100k start for the first
time since the epoch reset. Site position-label bug fixed: a closed
round-trip (mp) outranked ORB's open position for the TSLA label.
The min5 harvest finished on the Mac: 5,717 symbols, 291M rows, 5.6GB.
The full intraday research archive now outlives the Polygon key.
2026-08-28 — Miner v2 round 1: the control caught a REAL spec bug in the live runner
Alpha miner v2 ran the full 564-config sweep on the new min5 panel
(2.9M symbol-days after filters). The pre-registered validity rule fired:
the in-play POSITIVE CONTROL did not reproduce (+1.5bps vs the expected
+33) → the whole family verdict was declared INVALID, no survivor
believed. Diagnosis found the cause and it is the best outcome of the
night: CONSTRUCTION ORDER. The validated discovery ranks top-20 by rvol
across ALL names then longs the first-bar-up subset (~10/day, the
extreme tail); ranking among ups only dilutes it to ~0bps. Exact
replication on the new panel CONFIRMS the discovery: OOS LONG
+26.1bps/trade, Sharpe 1.55 (IS +19.0/1.33), shorts negative — an
independent rebuild of the dataset and harness reproducing the edge.
The kicker: the LIVE shadow runner had the diluted construction (gate
inside the scoring loop) — the audition has been trading the WEAK
variant, which is consistent with its ~flat live book (80 legs, -$41).
Runner fixed to rank-then-gate (~10 longs/day now, not 20), deployed;
the day-gate audition clock CONTINUES (spec fix noted at day 5 — this is
implementing the registered strategy correctly, not moving its goal).
Miner family relaunched with gates applied after ranking; corrected
results land tonight.
Do-not-retry addition: in cross-sectional tail strategies, GATE AFTER
RANK — pre-gating changes which names constitute the tail and silently
destroys (or manufactures) the edge. Any config family must carry a
known-edge positive control or its verdicts are void.
2026-08-28 (late) — Round 3 + cohort decomposition: the discovery is a
low-price-cohort effect; liquid version has NO edge
Miner round 3 (share-volume universe, profit-only survivors): ZERO
survivors in 236 configs, and the control STILL failed inside the miner
while reproducing in exact replication. The last diff was the price
screen — and pulling that thread decomposed the discovery:
same-day close >=$5 (original): OOS +26.1bps, Sharpe 1.55
prior-day close >=$5: OOS +10.1bps, Sharpe 0.49
prior-day close >=$10: OOS +5.2bps, Sharpe 0.18
Removing ~120 of 8,500 IS trades — yesterday-sub-$5 names gapping up
through the screen — deletes two-thirds of the edge; those trades
average ~+8% each. The "edge" is CONCENTRATED in cheap gapper rockets,
exactly the cohort where a flat 10bps cost model is fiction (real
spreads 30-200bps) and where the Ross Cameron backtest died for the
same reason. The $10+ liquid version is flat. Same house lesson, fourth
time: apparent intraday edges live where the cost model is weakest.
Posture: NOT killing the audition by hand — the shadow nursery exists
precisely to let LIVE fills vote on whether the cheap-cohort edge
survives reality (marks are real last-trade prints; the runner trades
the corrected rank-then-gate construction from Monday; MIN_PRICE=5 so
the live test includes the cohort in question). The pre-registered
day-15 gate decides ~09/16. Expectation, stated now for the record:
kill. If it survives live, that IS the evidence backtests can't give.
Do-not-retry: any cross-sectional result must be decomposed by PRICE
COHORT before belief — report <$5-prior, $5-10, >$10 separately. Added
to the researcher's discipline via the backlog. Miner v2 final verdict:
no profitable survivor in the liquid universe across 236 configs — the
free-intraday-edge well keeps coming up dry in liquid names; the
researcher's Sunday session should attack different structures
(overnight, multi-day, event-driven), not re-mine this family.
2026-08-30 — Autopsy: quiet Friday explained (long-only ORB, no bug); overnight-hold SPY/QQQ tested and killed
**Autopsy (since watermark 2026-08-28, one weekend gap, no missed trading
days):** Friday 8/28 was the only trading day since the last entry. Both
funded genomes (tsla_morning_pullback PAPER $3,164 cell, g_tsla_orb15_holdeod
EMBRYO $2,531 cell) fired zero actions all day — checked this is NOT a bug.
TSLA trended down cleanly all session (open 357.72 -> low 345.23 at 14:55,
close 348.75, a real -2.5% trend day) but `FiveMinORB.signals()` (the
generic strategy class backing orb15) only detects `broke_above` — it is
long-only by construction (the short leg is "documented in the thesis but
the engine consumes one direction per registry entry", per its own
docstring). Price never closed back above the 09:30 bar's high, so
correctly zero entries; this is the known/backlogged limitation (backlog
item 0a, ORB short side), not a new bug. No DB trades logged 8/28-8/30
(weekend, no crypto genomes in the population). Nightly selection continued
its scheduled cell punishments through 8/28 (both funded genomes still
bleeding cell on negative fitness — g_tsla_orb15_holdeod down to $2,531
from $8,000 over the week, tsla_morning_pullback down to $3,164 from
$10,000); no deaths, no promotions. Population unchanged: 5 genomes, 2
funded (PAPER/EMBRYO), 2 SHADOW auditions (g_tsla_macd_trend,
g_inplay_firstbar_momo — both mid-audition, day-gates not due yet), 1
RETIRED (orb_inplay).
Hypotheses tested: backlog item #2, overnight-hold SPY/QQQ (buy close,
sell open, sma200 regime toggle) — the documented-but-never-coded Pine
strategy (`pine_strategies/02_overnight_drift_spy`, ranked #5 in the old
TOP_10 report). Daily bars, SIP feed via Alpaca (2016-01-04..2026-08-28,
2,679 sessions — cost-free to refresh after Polygon lapses). Full code +
numbers: `lab/memory/experiments/overnight_drift_spy_qqq.py` /
`_results.json`.
- Positive control (GROSS, no cost): confirms the literature. SPY overnight
Sharpe 0.71 vs intraday 0.46; QQQ overnight 0.90 vs intraday 0.46. The
known relationship (overnight >> intraday for index ETFs) reproduces
cleanly on this sample — the effect is real, gross.
- Net of the house's 5bps/side cost floor (10bps round-trip, one round-trip
per session = 252/yr): DEAD across all 4 configs tested (SPY/QQQ x
unfiltered/sma200-regime), IS (2016-2021) and OOS (2022-2026) alike.
OOS Sharpe -0.43 to -2.02, PF 0.70-0.98, OOS t-stat p<0.05 in 3 of 4
(QQQ+sma200 OOS p=0.21, still net-negative). Daily-frequency trading
means 252 round-trips/year at the cost floor overwhelms a ~1-3bps/day
gross edge — the same shape as every prior intraday-edge death here,
just at daily instead of 5-min granularity.
- Sensitivity at a deliberately generous 4bps round-trip (below the stated
floor, disclosed as optimistic, not used for the verdict): only
QQQ+sma200 turns marginally positive and holds sign IS->OOS (Sharpe
0.62/PF 1.12 -> Sharpe 0.63/PF 1.12) — a real but sub-1.15 signal built
on a cost assumption the house floor explicitly rules out. Not a
qualifying SHADOW narrow-miss (rule 3b judges against the stated floor,
not an optimistic one); everything else flips sign or gets worse OOS.
Actions: none — no-op session by the contract's own definition (rule 4a/b
n/a, no births qualify). Backlog item #2 marked DEAD with date + verdict;
this satisfies the no-op bar (a real backtest attempt on the top untested
item, not just autopsy).
Do-not-retry: overnight buy-close/sell-open on SPY/QQQ, with or without
a 200sma regime filter, at the house's 5bps/side cost floor — decisively
net-negative IS and OOS, 2016-2026. Reopen only with a fundamentally
different cost story (e.g., a specific broker's demonstrated MOC/MOO fill
quality at sub-2bps/side, which would need live evidence, not another
backtest) or a different holding structure (e.g., overnight held only
across specific catalysts, not every session — untested, would be a new
hypothesis, not a rerun of this one).
2026-08-30 (night) — The swarm: 2,068 live auditions, because two was never an organism
Owner, correctly: "Organism isn't an organism at all... We need to be
trading thousands of strategies, not only two." The variation half of
evolution was starved and the fix is breadth at zero cost. Built + LIVE
tonight: the SHADOW SWARM — 2,068 strategy variants (momentum follow +
fade, gap follow + fade, ORB-15 long + short, overnight holds; 3
thresholds x entry/exit windows) across 44 liquid names + ETFs, every
one a zero-capital book marked on live checkpoint prices (one batched
free-IEX request per tick, 5 ticks/day, Mon-Fri timer). Same day-based
gates as the nursery; nightly digest ranks all books and pre-screens
gate candidates (>=10 days, net>0, PF>=1.2) for the researcher, whose
contract now requires: consume the digest, verify candidates on the SIP
panel against the FAMILY-wide Bonferroni bar (a top pick of 2,068 must
beat 2,068-way selection bias, the lesson of every dead battery),
keep the nursery at 4, and mine the live ledger for one mutation
proposal per session. Universe is all >=$10 liquid so the 10bps haircut
respects the cohort law.
Also answered honestly for the record: the old "QQQ options winner" was
research_s8 — ONE 26x lottery fill (+$10.5k) masking a bleeding book;
options need a paid feed to revive. The TSLA-multimillionaire story is
concentration + leverage + survivorship, not a system. Two smoke bugs
fixed before first tick: Alpaca 400s on %2C-encoded symbol commas, and
date.today() on a UTC box is TOMORROW after 8pm ET (future-dated bars
request = 400) — the third member of the UTC-date bug class, now in a
comment where it bit.
2026-08-31 (midday) — wash-trade collision class, noted not operated
mp's long entry was rejected 3 ticks running (Alpaca 40310000 "opposite
side market/stop order exists") because ORB's armed stop sits on the
same netted research account. State stayed clean — a missed entry, not
an incident. Structural: two strategies on one symbol + one account
deadlock whenever one arms a stop opposite the other's signal. Waiting
on selection: mp's cell is down to $3,164 and shrinking; if it dies the
conflict dissolves, if it recovers the pair gets separated. Not
mid-day surgery. Swarm ticks 1-3 clean (44/44 syms each).
2026-08-31 (night) — Swarm priors: 5 years says the whole family is cost-bound
Scored ALL 2,068 swarm configs on their own production resolution code
against 5 years of the archive (1,251 reconstructed days, 2s runtime —
single-symbol rules are cheap). Verdict: ZERO strong priors at the
family-wide bar (t>=4.27). Template median OOS bps: overnight -3.5,
momo -8.2, gap -10.0, orb15 -10.0, fade -11.8 — clustered around
exactly -10bps = the cost haircut. Translation: gross edges ~0, cost
eats everything; the fifth liquid-intraday family to score this way.
The harness itself is validated (prod code ran the history cleanly);
the SEARCH SPACE is the dead part.
The one directional signal: overnight is least-bad (-3.5 = ~+6.5 gross)
— cost-per-day is the binding constraint, so LONGER HOLDS amortize it
(5-day hold = 2bps/day cost vs 10). Next expansion is a MULTI-DAY
family (N-day momentum/reversal/trend on daily features, priors
computed FIRST on the daily panel, only positive-prior families go
live) — priors-first expansion, the reverse of round one. Live swarm
stays running as the control group + harness proof.
swarm_priors.csv shipped to the VPS for Wednesday's researcher session.
2026-09-01 — Two silent recording bugs; the ledger now self-heals nightly
The bidirectional audit (built 8/25) earned its keep twice today:
1. Partial fills booked short. The core engine polls 15s for a
terminal order status and records whatever filled by then. MS filled
17 of 44 inside that window and 27 more 33s later — the ledger said
17 @ 211.57, the broker said 44 @ 211.71. TECL's 48 shares filled in
FOUR slices and got no row at all.
2. Stop-triggered exits never recorded. Protective stops armed by
the chandelier maintainer fire with no engine involvement, so nothing
books them: SSO 138sh (-$259.52) and SPXL 33sh (-$386.31) sold at
today's open, both invisible in P&L until now.
Fix: `scripts/fill_reconcile_run.py` + timer at 16:20 ET (before the
16:45 audit, so findings clear the same day). It groups every broker
FILL activity by order_id (VWAP across slices), corrects rows that
disagree, inserts rows that are missing, and stamps realized P&L on
inserted exits from the symbol's open ENTER. Idempotent; writes only on
disagreement; refuses to guess ownership (TECL was left for review and
attributed by hand from cron_stock.log evidence). Today: 14 orders
checked, 1 corrected, 2 inserted. Regression test pins the MS
aggregation case.
Also: the nightly production-data freshness unit had been FAILING every
night on SATS (delisted -> yfinance returns nothing, forever). A
permanent false alarm is worse than no alarm — it now skips symbols in
universe_delisted.json (SATS added) and exits clean at 44 fresh / 0
errors.
Not fixed, watched: mp's wash-trade collision with ORB's armed stop
(2nd day). ORB itself went SHORT today (-$10.64) — worth noting since
Sunday's autopsy called the genome long-only; its stop-entry path is
clearly two-sided in practice. Swarm day 2: 818 trades resolved, 1,148
active books, 0 gate candidates (needs 10 days).
2026-09-06 (weekly session) — ORB-15 diversification: DEAD on NVDA+AMD; both funded cells near starvation; no-op
**Autopsy (watermark 2026-09-01, 3 trading days elapsed: Tue 09-02, Wed
09-03, Thu 09-04 — Mon 09-01 traded too per the prior entry, Fri 09-05/
weekend no trading):**
- `g_tsla_orb15_holdeod` (was EMBRYO, promoted EMBRYO→PAPER on 09-02:
10 live trades, net>0): 3 trades this week — short @353.395→356.055
(-$10.64, 09-01), short @350.4275→355.76 (-$21.33, 09-02), long
@375.125→378.615 (+$13.96, 09-03). Net -$18.01. neg_streak now 13
(STARVATION_DAYS=15 kills it) — cell punished to the $2,000 floor.
Genome-level, not a bug: the resting-stop mechanism and QQQ filter fired
correctly each time; TSLA just chopped against the two shorts. This is the
known behavior of a validated-but-noisy strategy running near its floor.
- `tsla_morning_pullback` (PAPER): 3 trades — long @378.16→380.18 (+$4.04,
09-03), short @353.17→354.5467 (-$6.88, 09-04), short @352.40→353.18
(-$3.90, 09-04). Net -$6.74. neg_streak now 10. Also at the $2,000
cell floor.
- **Both funded genomes are 2-5 negative-fitness days from STARVATION_DAYS
(15) — the population may go from 2 funded cells to 0 within two weeks if
the streaks don't break.** Not a bug, not something to override (selection's
job), but the reason the nursery-fill question below carries real urgency:
if both die, the organism trades nothing until a promotion or a fresh birth.
- `g_inplay_firstbar_momo` (SHADOW, basket, day-gated): 7 of 20 days toward
promotion. Cumulative wins $1,189.88 / losses $963.80, PF 1.235, net
+$226.08, day nets [-104.21, +24.84, -31.91, +69.98, -127.32, +125.14,
+269.56]. Already clears the day-20 promotion bar (net>0, PF>=1.15) with
13 days of runway left to hold it — the best-looking thing in the
population right now. No action needed; let it run to day 20.
- `g_tsla_macd_trend` (SHADOW): still holding the single long TSLA position
opened 2026-08-24 (daily timeframe), 0 closed trades, wins/losses both
$0. 13 days in one position is plausible for a daily trend genome, not
flagged as a bug, but worth watching next session if it still hasn't
closed.
- Swarm digest (`harness/state/swarm_digest.json`, as_of 2026-09-04):
1,657 active books, 2,068 configs, 0 gate_candidates — the >=10-active-day
bar isn't met yet (swarm went live 2026-08-30, ~4 trading days in). Nothing
to verify on the SIP panel this week; expect candidates to start appearing
~09-15.
**Hypotheses tested — backlog #1, ORB-15 on other high-beta names (the top
untested queue item, and urgent given the Polygon lapse ~09-20):** faithful
replication of the LIVE genome's exact rules (stop-at-level resting-stop
entry, QQQ day-direction confluence, OR width filter 0.8-4%, hold to the
15:50 flatten, no target) on NVDA and AMD, using 5-min bars ALREADY CACHED
from the 2026-08-23 in-play work (`harness/data/{NVDA,AMD}_5minute_2021-05-17
_2026-05-16.parquet` + the same QQQ file the TSLA battery used) — the
2026-08-23 "DEFERRED: needs fresh fetch" verdict was stale, the fetch had
already happened for an unrelated experiment. Same IS/OOS split as every
prior ORB-15 battery (IS<=2024-12-31, OOS>=2025-01-01), 5bps/side (both
names are >$10 liquid mega-caps, cohort law respected). Code + full numbers:
`lab/memory/experiments/orb15_nvda_backtest.py` + `.json`.
- NVDA (qqq filter, the live config): IS n=120, PF 1.117, avg +0.064R, tot
+7.7R. OOS n=27, PF 0.983, avg -0.009R, tot -0.3R.
- AMD (qqq filter): IS n=104, PF 1.117, avg +0.063R, tot +6.5R. OOS n=35,
PF 0.969, avg -0.015R, tot -0.5R.
- Both symbols reproduce the exact IS-positive/OOS-decay shape seen across
nearly every battery this month — but on TSLA the same stop-at-level
config nets OOS PF 1.048 (positive); on NVDA/AMD it lands just under 1.0
(flat-to-negative). The edge does NOT transfer by symbol-swap.
- Gates: OOS PF>=1.15 FAIL both (0.983, 0.969). >=100 OOS trades FAIL both
(27, 35). SHADOW narrow-miss (rule 3b) also FAILS both: OOS PF is below
1.00 (not in the [1.00,1.15) band) AND OOS is net-negative, not positive,
so the "<100 trades with positive OOS" disjunct doesn't apply either. No
data-quality caveat to cite — the cache is clean, full-history, no gaps.
Clean NO BIRTH, not a narrow miss.
Ledger mining (one mutation proposal, per contract): post the 2026-08-20/
21 ledger-bug fixes, `tsla_morning_pullback`'s LONG exits are 3-for-3
winning (+$515.28, +$12.27, +$4.04 = +$531.59, zero losses) while its SHORT
exits are 1-for-5 (+$3.21 win; -$397.51, -$12.48, -$6.88, -$3.90 losses =
net -$417.56). This week's autopsy (above) shows the identical shape in
miniature (1 long win, 2 short losses). **Proposal: if this holds up with
more data, mp should mutate to long-only.** NOT implemented this session —
8 closed legs post-fix is far below any threshold this journal has ever
acted on (the house bar is ~100 trades), and the pre-fix history is
contaminated by the crash-era ledger bug so it can't be pooled in. Flagging
for the next session with enough legs to judge, or for a dedicated backtest
of mp's entry logic split by side if the live sample is still too thin by
then.
Actions: NO BIRTH (NVDA/AMD backtest failed cleanly, see above). NO
mutation to mp (ledger signal noted, insufficient N to act — see above). NO
kills (selection's call; both funded genomes are within their neg_streak
budget, not yet at 15). Nursery unchanged at 2/4 SHADOW — the swarm has
nothing gate-worthy yet (0 candidates, digest still <10 days old) and the
top backlog hypothesis (#1) was tested honestly and failed, satisfying the
no-op bar's requirement to attempt real work rather than just autopsy.
Backlog updated: item #1 marked DEAD for NVDA/AMD with date + numbers.
Do-not-retry: ORB-15 hold-to-close (stop-at-level entry, QQQ
confluence, OR width filter, hold-to-EOD — the exact validated TSLA
config) as a direct symbol-swap onto NVDA or AMD — decisively OOS PF <1.0
on both, 2021-2026 data, faithful replication of the live rules. The TSLA
edge appears TSLA-specific, not a generic high-beta-momentum property;
reopen only with a materially different structure (different OR window,
different filter, or a genuinely different name profile — COIN/MSTR/PLTR
are crypto-correlated/differently volatile and remain untested) rather
than another flat symbol substitution.
Tone: one clean, decisive no-op this week — the ORB-15 diversification
hypothesis was live, testable, and worth the full session; it died fairly,
which is real information (the TSLA edge is narrower than hoped). The
sharper story is structural, not this week's P&L: both funded genomes sit
at the $2,000 cell floor with neg_streaks of 10 and 13 against a 15-day
starvation clock, while the shadow nursery's basket genome (firstbar_momo,
PF 1.235 at day 7/20) is quietly the best performer in the population.
Next session: check whether either funded genome starved or recovered,
whether firstbar_momo reaches its day-20 gate, and whether the swarm
digest has produced its first gate_candidates (~09-15 earliest).
2026-09-09 (weekly session, catch-up) — ORB15 starved to death (fair, not a bug); reversal-after-high-RVOL born SHADOW; mp is now the ONLY funded cell
**Autopsy (watermark 2026-09-06; trading days since: Fri 09-05, Mon 09-07
Labor Day CLOSED all day confirmed by `organism_runner.log` ticking
00:00-23:55 with `actions=0` every 5 min, Tue 09-08, Wed 09-09 partial):**
- `g_tsla_orb15_holdeod` DIED 2026-09-08 — `[org-select] death
g_tsla_orb15_holdeod starvation(15d fitness<0)`, the exact risk this
journal flagged last session. Full autopsy appended to the
selection-written death record (`lab/memory/experiments/
g_tsla_orb15_holdeod_2026-09-08.json`, `lesson` field): raw dollars were
POSITIVE over its life (21 fills, net +$128.38) but the cell was
punished to the $2,000 floor by 08-28 from early-August losses that
predate the 08-15 stop-at-level mutation; at the floor, fixed 4-5-share
size means even good trades move the EWMA (10-day halflife) too slowly
to escape a starvation clock once several flat days accumulate — 6 of
its last 9 trading days had ZERO trades. Log evidence for one of those
flat days (09-03): ~50 consecutive REJECTED stop-sell orders because
TSLA gapped through the OR-low re-arm level and kept falling, so the
genome's static (non-repricing) resting stop kept quoting a price
already on the wrong side of market — a real missed short, but a design
limitation of static OR-level stops, not a coding bug, and it cost
nothing here (a flat day, not a losing one). **Verdict: fair selection
working as designed, not a mechanical failure — the entry-style
mutation from 08-15 is not refuted, the genome died of thin trade
frequency at a starved cell size.** Do not re-fund without new evidence
or a fix to the cell-floor-bootstrap problem (an open
selection-mechanism question, flagged, not solved this session).
- **`tsla_morning_pullback` (PAPER) is now the population's ONLY funded
cell.** neg_streak=12 (starvation at 15), fitness -0.0168. Two new legs
today (09-09): long 373.02→369.7567 (-$16.32), short 367.33→368.9525
(-$8.11) — both losses. **This updates last session's provisional
long-only-mutation observation in the WRONG direction**: post-guards
(since 08-24) longs are now 08-27 +12.27, 09-03 +4.04, 09-09 -16.32 = 2W
1L net -$0.01 (was 3W/0L); shorts are 08-25 -397.51(oversized,
pre-sizing-fix), 08-27 -12.48/+3.21, 09-04 -6.88/-3.90, 09-09 -8.11 = 1W
5L net -$425.67 (or -$28.16 excluding the oversized 08-25 leg). The
short side is still the weaker side, but the long side is no longer a
clean 3-for-3 — the apparent edge was noise at N=8, exactly why last
session declined to act on it. STILL not enough legs (12 post-guards)
to mutate; NO ACTION, but flagging loudly: if mp starves too (2-3
more negative days at this rate), the organism trades ZERO capital
until a SHADOW promotion. This is the single biggest structural risk
carried into next week.
- `g_inplay_firstbar_momo` (SHADOW) had a bad day. Day 7→8 (day 8 =
today, 09-09; 09-05 and 09-07/holiday produced no shadow fills so
didn't count as observed days): day_nets add -305.00 to what was a
clean run (+226.08 net, PF 1.235 at day 7) — cumulative now net
-$78.92, PF 0.938 (wins $1,189.88 / losses $1,268.80), 138
trades, 8/20 days toward promotion. Still far from the day-15 kill
threshold and PF<1 there requires losing PF at day>=15, so no action,
but the "best performer in the population" framing from last session
no longer holds — one bad basket day erased three days of gains, a
useful reminder of how noisy a 20-leg/day book can be day to day.
- `g_tsla_macd_trend` (SHADOW): still 0 closed trades, same single
position opened 2026-08-24 (now 16 days), per its own note waiting for
a whole-share-affording cell refund. Not flagged as a bug, still worth
a look if it hasn't closed by next session.
- Swarm digest (`harness/state/swarm_digest.json`, as_of 09-09): 1,734
active books, still 0 gate_candidates (max `days` observed is 7,
the >=10-day bar needs ~3 more trading sessions — expect first
candidates ~09-14/09-15).
**Hypotheses tested (top untested backlog item — the "For the Sunday
session" fresh-structure note: multi-day continuation/reversal after
high-RVOL days):** built on the survivorship-free 5yr daily panel
(`harness/data/sip/daily_panel_ohlc.parquet`, 13.5M rows, 19,730 symbols).
18-config family: RVOL threshold {2,3,5} (vs the symbol's own trailing
20-day $ volume) x hold {2,3,5} trading days x direction
{continuation, reversal}, signal known at day T's close, fill at T+1
close (no lookahead), exit T+1+K close, IS<=2024-12-31/OOS>=2025-01-01,
10bps round-trip (price>=$10, $vol20>=$2M — the correct floor for this
cohort), Bonferroni alpha=0.05/18 (critical |t|=2.99). Positive control:
gross 2-day-forward return on extreme days (rvol>=3, |ret|>=5%)
sign-adjusted for continuation is negative (-0.13%), i.e. reproduces
the well-documented short-horizon reversal-dominance effect — the harness
measures what it should. Code + full numbers:
`lab/memory/experiments/multiday_rvol_continuation.py` + `.json`.
- CONTINUATION: decisively DEAD. 6 of 9 OOS configs clear the
family-wide Bonferroni bar in the NEGATIVE direction (t -3.08 to
-7.11, net PF 0.85-0.91) — betting WITH a high-RVOL day's direction
loses money net of cost, confirms the positive control's implied
direction. Do-not-retry.
- **REVERSAL (fade): best config (rvol>=5, hold=5 days) lands in the
SHADOW narrow-miss band. OOS n=12,057, net PF 1.100** (in
[1.00,1.15)), avg net ret +0.302%/trade, t=1.852 — directionally
strong but alone doesn't clear the family-wide bar (need |t|>=2.99).
Per the 2026-08-28 cohort-decomposition law, checked BEFORE trusting
it: split by price cohort at rvol>=5/hold=5 — **$10-20 OOS is
NEGATIVE (n=2,045, PF 0.982, t=-0.198), $20-50 OOS PF 1.14**
(n=5,417, t=1.638), $50+ OOS PF 1.154 (n=4,595, t=1.538; the $50+
IS segment alone clears even a single-test bar at t=3.08). The edge is
NOT a cheap-stock cost artifact (the opposite failure mode of every
prior cross-sectional battery here) — it's concentrated in $20+ names,
so the live genome's price floor is raised to $20 (excludes the
negative $10-20 cohort). Realistic portfolio sim (20-concurrent cap,
no-pyramid-into-same-symbol dedup): OOS Sharpe ~0.73, PF 1.082, 404
signal-days (essentially every OOS trading day had a live signal — not
an idle-capital artifact) vs SPY buy-and-hold Sharpe 1.03 the exact
same window — underperforms doing nothing risk-adjusted, the same
concern that killed momentum rotation (2026-08-15). Judgment call: that
opportunity-cost bar was applied to a FUNDED, capital-competing birth;
this is a zero-capital SHADOW audition (rule 3b's whole point is
letting live evidence resolve a backtest this close to the gate), so it
doesn't automatically disqualify — but it's disclosed here, not buried.
Actions:
1. BORN: `g_rvol_fade_5d` (SHADOW, cell $0.0, external, module
`harness.rvol_fade_run`) — reversal-after-high-RVOL, 5-day hold,
price>=$20 floor, rvol>=5, $vol20>=$2M. Seeded via
`scripts/seed_g_rvol_fade_5d.py` (idempotent, committed). Promotion:
standard day-gated basket rule (>=20 days net>0 PF>=1.15 promotes,
>=15 days PF<1 kills, 120-day max age) — no changes needed to
`selection.py`, it already reads any genome's `organism_state.json
["shadow"][gid]` generically. 9 new unit tests
(`tests/test_rvol_fade.py`, all green) cover signal ranking, price/
liquidity/rvol floors, and a full pending→fill→age→exit lifecycle
(including a real off-by-one bug I caught IN this session: a
same-day-filled position was being aged on its own fill day because
the runner filled pending entries before aging existing ones — fixed
by reordering age-then-fill).
2. NOT wired to a systemd timer. `scripts/install_systemd_timers.py`
doesn't even contain `g_inplay_firstbar_momo`'s timers (those were
installed directly, outside the generator, confirmed via
`systemctl list-timers` showing `tradervex-inplay-momo-select/exit`
active with no matching unit files in `generated_systemd_units/`).
Activating a new always-on daily job against the live VPS is a
deploy decision, not a research one — flagging for the owner:
recommend `python3 -m harness.rvol_fade_run daily` once daily after
the close (~16:05 ET, ahead of fill-reconcile's 16:20), weekdays only.
Until then the genome sits in the population doing nothing.
3. NO mutation to mp (thin, and this week's data point WEAKENED the
long-only hypothesis rather than confirming it — see autopsy above).
4. NO kills proposed beyond selection's own (ORB, autopsied above).
5. Nursery: 3/4 SHADOW slots filled (`g_tsla_macd_trend`,
`g_inplay_firstbar_momo`, new `g_rvol_fade_5d`) — did not force a 4th
speculative birth just to fill the quota; one rigorously validated
candidate this week beats two rushed ones.
Do-not-retry: multi-day CONTINUATION after high-RVOL days (any of
rvol{2,3,5}/hold{2,3,5} trading days) on the liquid (>=$10, >=$2M/day)
universe — 6/9 OOS configs decisively negative net-of-cost, confirms
short-horizon reversal dominance rather than momentum persistence at
this granularity. Static (non-repricing) resting-stop order lifecycles
on a level-break genome when price gaps through the level before the
stop can arm (ORB15's 09-03 spam) — not fatal, but a robustness smell to
fix if any sibling genome using the same lifecycle is revived.
Tone: the predicted risk from last session materialized exactly —
ORB starved, cleanly and fairly, no bug to chase. The session's real
deliverable is the multi-day RVOL family: continuation is now closed off
for good, and reversal produced the first SHADOW birth from fresh
research (not a swarm gate-candidate) since firstbar_momo. The uncomfortable
fact to carry forward is structural, not this week's numbers: the
organism now has exactly ONE funded cell (mp, itself 3 bad days from
starvation), and the two nearest replacement candidates are a basket
genome that just had a bad day (firstbar_momo, PF dipped under 1.0) and
one born literally today with zero live evidence yet. Next session:
check whether mp starved, whether the rvol-fade timer got installed and
if so how day 1 looked, and whether firstbar_momo's PF recovers or
keeps sliding toward its day-15 kill line.