Skip to content

Research cycle

Research here is pre-registered. A round's rules are hashed before any score is computed. Every trial counts in the deflated Sharpe's N, whether it ran or not. A survivor is frozen once, and then reads its holdout once. Generations of models share the book: a newcomer starts small and earns capital on a fixed glide, while a decaying or tripped generation loses it.

from aether_quant import cycle

policy = cycle.GlidePolicy(glide_sessions=252, entry_share=0.30, retire_share=0.05)
shares = {"old": 1.0, "new": 0.0}
for _ in range(126):
    shares = cycle.update_generation_shares(shares, {"old": "active", "new": "ramping"}, {}, {}, policy)
print(shares)
book = cycle.blend_generation_rows({"old": {"BTCUSD": 0.02}, "new": {"ETHUSD": 0.02}}, shares)
Piece Where
A round: score, placebo, gate, PBO, freeze, hold, report cycle.RoundSpec and the stage_* functions; aq cycle research <stage>
What is due today cycle.due_actions; aq cycle status
Decay of a generation's record cycle.decay_state (CUSUM against its expected Sharpe)
Admission: who may hold capital cycle.next_stage, cycle.share_cap (R-ADMIT1, proved in Admission.lean)
The forward record cycle.resolve_session; the scheduled forward-ledger.yml workflow

The ledger rows are hash-chained, and the chain is checked before any figure is read.