2f4f2ccbbe
research/ is a hard silo (README rules): read-only tape, no bot imports, own launchd (com.jaxperro.research-nightly 09:15, after daily ingest). - tape.py: proxy-resolution (the 742/742-validated method), niche + crypto strike/expiry/sprint parsers, tick loaders - sim.py: FAK execution replayer; hold_s=3 fitted on 29 real labeled live attempts (79% fill/miss classification), price noise 2-4c, measured OPTIMISM BIAS -2c/fill carried into every verdict threshold - requote.py: crater refill timing per niche (crypto 94% <4s, esports 83% <10s, sports needs ~25s, geo/politics minutes) -> params/requote_timing.json - study_flow.py + robustness: in-play surge momentum. Identity NULL result: 10 pooled controls +23.85/fill == informed +23.68 -> hypothesis revised at freeze, surge-EV primary, identity secondary (#16) - study_oracle.py: oracle digital fair value. 86% craters, winner's-curse inversion at big edges, nothing frozen (no cell at 30 fills) (#17) - forward.py + nightly.sh: re-scores frozen studies on last 3 tape days, appends forward_ledger.jsonl; verdicts ONLY from post-freeze rows Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
32 lines
1.7 KiB
Markdown
32 lines
1.7 KiB
Markdown
# research/ — the edge factory (SILO)
|
|
|
|
Standing rules (user directive 2026-07-20: "built in a silo to not affect
|
|
anything on the live bot"):
|
|
|
|
- **Nothing here is imported by, or imports, the bot** (`copybot.py`,
|
|
`copytrade.py`, their configs). The Fly workers run pinned entrypoints;
|
|
this directory is inert to them.
|
|
- **Tape access is read-only** (`duckdb.connect(..., read_only=True)`).
|
|
- The ONE shared write: `live/cache.duckdb::resolutions` via `live/payouts.py`
|
|
— append-only immutable chain facts, the same store the daily pipeline
|
|
already feeds. Nothing else in `live/` is touched.
|
|
- The existing paper bot is the live test's CONTROL — graduated edges get
|
|
their own paper harness here, never that one.
|
|
- Studies are pre-registered (GitHub issue per study: hypothesis, params,
|
|
verdict + kill criteria) BEFORE their forward window opens. Exploration
|
|
happens on already-collected tape; **verdicts only come from
|
|
`forward_ledger.jsonl` rows dated after the params freeze commit.**
|
|
|
|
Layout:
|
|
tape.py read-only loaders · tape proxy-resolution (terminal-VWAP +
|
|
sibling veto, the 742/742 chain-validated method) · title
|
|
parsers (niche, crypto strike/expiry/sprint)
|
|
sim.py execution replayer calibrated on OUR live fills ledger
|
|
(lag, FAK no-match, protected band, 3% taker fee)
|
|
study_flow.py Study A — informed-flow state signal
|
|
study_oracle.py Study B — crypto oracle fair value vs the book
|
|
requote.py crater→requote timing measurement (retry tuning)
|
|
forward.py scores frozen studies on new tape days → forward_ledger.jsonl
|
|
params/ frozen study parameters (committed = frozen)
|
|
nightly.sh manual/launchd runner (separate from daily.sh)
|