Delphi

0DTE SPY iron condor agent on Alpaca paper, conformal risk control, 31 hard gates
Competition paper account PA31SEVJV9P9: brand-new, dedicated, $100,000 starting balance, options level 3; only the submitted agent has ever traded on it (from 2026-09-03). The 2026-09-02 pilot ran on a separate development account and is shown further down, labelled.
All times on this page are US/Eastern market time (ET; CEST is ET + 6 h). The audit log itself stores UTC. The page is regenerated from the log, not streamed: the last record above says how fresh it is.
We do not claim a statistically detectable edge. We claim a risk process that behaved exactly as specified.
agent statemarket closedlast record 09-03 16:31 ET
equity100,000.00 USDsession P&L +0.00, campaign +0.00
open positions0opened 0, closed 0
sessions on this account12026-09-03
code / configf715b88 / e027d9e92c252188 audit records; every record carries both hashes
halts / kill events0 / 0halts stop new risk, kills flatten

The account over the day

-13 $-6 $+0 $+6 $+13 $10:0011:0012:0013:0014:0015:0016:00+0.00 $Session 2026-09-03: equity change since the first mark (mark-to-market), 1169 marks, times ET
equity first 100,000.00, last 100,000.00, low 100,000.00, high 100,000.00; agent's session P&L at the last mark +0.00 $; position held in 0 of 1169 marks (no position all day: the flat line is the point); marks are written only while the market is open, 09:30 to 16:00 ET, because the account cannot change after the close

The certificate

Trade only if credit / wing at the expected fill ≥ β* + margin = 0.10 + 0.05 = 0.15, with the short strikes at or beyond the radius certified at β* (conformal risk control on the buyer's expected payout as a fraction of the wing). The margin is the modelled round-trip cost, so a passing trade is certified, in expectation and under exchangeability, not to lose after that cost. It is not a profit claim, and the guarantee is marginal while the gate selects (docs/THEORY.md, Theorem 3 remark v). A closed gate is the mechanism working.
certified level β*0.10expected payout / wing, bound by construction
calibrated sessions620daily.csv:ratio_1030 2024-01-02..202
realised payout ratio0.080mean over the set; by year 2024: 0.521, 2025: 0.468, 2026: 0.409
mean realised move / implied0.469score r before the radius is subtracted
online level β_t0.164may only tighten; above β* it has no effect
coverage level α_t0.215target 0.20; the coverage track, reported only
calibrated through2026-09-03last session k 0.557, outside
today's interval committed10:15 ETsession 2026-09-03, rule crc
anchor spot768.49VIX prev 15.20 → implied ref move 5.87 $
certified radius k0.557k_crc 0.557, k_cov 0.598, n 250
short strikes at or beyond765.22 / 771.76radius 3.27 $, wing 4.00 $
End-of-day scoring of the committed interval (every session counts, traded or not):
sessionrealised ratiokpayout ratioβ updatecoverageα update
2026-09-030.7880.5570.3380.1647 → 0.1635outside0.2190 → 0.2150

The ledger: P versus Q (gate 31)

Q = credit / wing at the expected fill, the market's price of the band (Breeden-Litzenberger). P = the empirical payout ratio at the candidate's strikes over the calibration set. The gate compares Q with β* + margin; P is shown for the reader, never used to trade. One row per candidate strike pair per session; n counts evaluations of that pair.
committed (ET)sessionrulebeta_tk_crcalpha_tk_covnk usedVIX previmplied ref move $anchor spot
09-03 10:152026-09-03crc0.16470.5570.21900.5982500.55715.25.87768.49
Interval committed; no candidate strike pair has reached gate 31 yet.
entry window 10:15-11:00 ETentry window 12:30-13:30 ET0.000.050.100.150.200.250.3009:3010:3011:3012:3013:3014:3015:30beta* = 0.10 (certified payout / wing)gate: credit / wing ≥ beta* + margin = 0.15offered by the market for the balanced condor at wing 4 $: 0.005 to 0.072 of the wing, 87 evaluations, never at the gateSession 2026-09-03: what the market paid for the band versus the gatetime (ET); y = credit / wing at the expected fill; the gate opens only above the black line
Session 2026-09-03: every evaluation cycle the strategy prices the balanced condor at the configured wing; the red points are what the market offered as a fraction of the wing, the black line is the gate. Regenerate: python scripts/band_price.py --session 2026-09-03.

What a trade looks like: development pilot 2026-09-02 on account PA314NYH4H7G (not the competition account, not counted above)

One-contract pilot on a separate development account, under the fixed 1.10x strike rule, before the conformal rule, the re-quoting ladder and the gate at the expected fill went live. It is shown because it exercised the whole path once: regime vote, gates, critic, ladder, fill, exit. Its lessons are in docs/CONFIG_CHANGES.md; its full report is docs/report_2026-09-02.md. Under the rule that now runs, this day would not have traded either: the fill was 0.147 of the wing, the gate needs 0.15.
gate evaluations2
positions opened / closed1 / 1
realised P&L+14.00 USD
halts1
-7 $-1 $+5 $+11 $+17 $10:0011:0012:0013:0014:0015:0016:00+13.80 $open 0.44 x 1close 0.30, +14 $Session 2026-09-02: equity change since the first mark (mark-to-market), 1158 marks, times ETnet delta of the book (SPY shares equivalent)-5.2+0.0+11.3+0.7net theta ($ per day)+0.0+0.0+62.7+34.4
equity first 100,000.00, last 100,013.80, low 99,995.90, high 100,013.90; agent's session P&L at the last mark +14.00 $; position held in 148 of 1158 marks; marks are written only while the market is open, 09:30 to 16:00 ET, because the account cannot change after the close
entry window 10:00-11:00 ETentry window 12:30-13:30 ET0.000.050.100.150.200.250.3009:3010:3011:3012:3013:3014:3015:30beta* = 0.10 (certified payout / wing)gate: credit / wing ≥ beta* + margin = 0.15offered by the market at wing 4 $: 0.092 to 0.130 of the wing, 43 evaluationsfilled at 0.147Session 2026-09-02: what the market paid for the band versus the gatetime (ET); y = credit / wing at the expected fill; the gate opens only above the black line

Anatomy of the trade, from the audit log

ETsteprecord
10:41:11regime vote3 calls, unanimous True: low / chop / scheduled_minor → IRON_CONDOR_0DTE, veto False
10:41:14gates20 of 20 passed; condor 760/763/769/772, credit mid 0.49, natural 0.47, max loss 251 $
10:41:18criticPASS: All inputs are consistent, the low-volatility chop regime aligns with the strategy rationale, and no concrete
10:41:18ladder rung 0open-SPY: limit 0.49 (signed -0.49), qty 1
10:41:51ladder rung 1open-SPY: limit 0.48 (signed -0.48), qty 1
10:42:24ladder rung 2open-SPY: limit 0.47 (signed -0.47), qty 1
10:42:58ladder exhaustedunfilled after 3 rungs, last price 0.47; the natural credit fell faster than the ladder (fixed: every rung is re-quoted now)
10:44:22gates20 of 20 passed; condor 760/763/769/772, credit mid 0.45, natural 0.43, max loss 255 $
10:44:27criticPASS: All inputs are consistent, the regime is calm with no directional trend against a wing, and the short strikes
10:44:27ladder rung 0open-SPY: limit 0.45 (signed -0.45), qty 1
10:45:00ladder rung 1open-SPY: limit 0.44 (signed -0.44), qty 1
10:45:02filledopen-SPY: rung 1 at 0.44
10:45:02position opened1 contract(s), credit 0.44, max loss 255 $, S769C, B772C, S763P, B760P
10:45:06haltposition reconciliation mismatch: SPY260902P00760000: book 1 vs broker -1; SPY260902C00772000: book 1 vs broker -1 (a false mismatch: side strings compared case-sensitively; new risk stopped as designed; fixed in cb441a8)
11:34:07exittake profit 50% of credit: close mid 0.22, natural 0.26, ladder [0.22, 0.24, 0.26, 0.33]
11:34:07ladder rung 0close-a2f50e: limit 0.22 (signed 0.22), qty 1
11:34:40ladder rung 1close-a2f50e: limit 0.24 (signed 0.24), qty 1
11:35:14ladder rung 2close-a2f50e: limit 0.26 (signed 0.26), qty 1
11:35:47ladder rung 3close-a2f50e: limit 0.33 (signed 0.33), qty 1
11:35:49filledclose-a2f50e: rung 3 at 0.3
11:35:49position closedtake profit 50% of credit: entry 0.44, exit 0.30, P&L +14.00 $

Decisions

gate evaluations / rejections0 / 0all 31 gates run on every candidate
positions opened / closed0 / 0ladder: mid-1 tick, natural, natural
realised P&L (closed)+0.00 USD
entry slippage vs mid+0.00 USD
LLM decisions unanimous0 / 0disagreement is abstention
NO_TRADE cycles315108 distinct reasons
Gate ledger: no candidate evaluated yet.

NO_TRADE reasons

countreason
10strategy: short leg quoted wider than 5 ticks: ['SPY260903P00765000']
9strategy: no acceptable wing: wing 4: credit 0.23 < 1.20 (15% of wing x ratio 2)
9strategy: no acceptable wing: wing 4: credit 0.09 < 0.60 (15% of wing); wing 3:
9strategy: no acceptable wing: wing 4: credit 0.08 < 0.60 (15% of wing); wing 3:
8strategy: no acceptable wing: wing 4: credit 0.12 < 1.20 (15% of wing x ratio 2)
8strategy: no acceptable wing: wing 4: credit 0.10 < 1.20 (15% of wing x ratio 2)
7strategy: no acceptable wing: wing 4: credit 0.14 < 1.20 (15% of wing x ratio 2)
7strategy: no acceptable wing: wing 4: credit 0.07 < 1.80 (15% of wing x ratio 3)
7strategy: no acceptable wing: wing 4: credit 0.06 < 0.60 (15% of wing); wing 3:
6strategy: no acceptable wing: wing 4: credit 0.21 < 0.60 (15% of wing); wing 3:
6strategy: no acceptable wing: wing 4: credit 0.09 < 1.80 (15% of wing x ratio 3)
6strategy: no acceptable wing: wing 4: credit 0.06 < 1.80 (15% of wing x ratio 3)
5strategy: no acceptable wing: wing 4: credit 0.11 < 1.80 (15% of wing x ratio 3)
5strategy: no acceptable wing: wing 4: credit 0.17 < 0.60 (15% of wing); wing 3:
5strategy: no acceptable wing: wing 4: credit 0.11 < 1.20 (15% of wing x ratio 2)
5strategy: no acceptable wing: wing 4: credit 0.15 < 1.20 (15% of wing x ratio 2)
5strategy: no acceptable wing: wing 4: credit 0.10 < 0.60 (15% of wing); wing 3:
5strategy: no acceptable wing: wing 4: credit 0.07 < 0.60 (15% of wing); wing 3:
4strategy: no acceptable wing: wing 4: credit 0.24 < 1.80 (15% of wing x ratio 3)
4strategy: no acceptable wing: wing 4: credit 0.19 < 0.60 (15% of wing); wing 3:

Positions

none

LLM

regime decisions 0 (families {}); critic verdicts {}; regime call latency ms min/median/max: - / - / -. The models return categories only (regime, family, veto); every number comes from code.
no LLM calls yet

Term-structure event variance (Dubinsky et al. 2019)

sigma_event None between 2026-09-03 and 2026-09-04; ATM IV 0.05367867990274362 vs 0.12835
last chain: 92 contracts, 76 quotable, feed Greeks 0, model Greeks 61

Evidence at T = 3: two e-processes and a ceiling

Risk process (evidence against the certificate, null E[payout ratio | past] ≤ beta*): over 620 calibrated sessions the running maximum is 2.66, anytime-valid p-value 0.38 (below 0.05 would reject the certificate). Reported, never used to halt.
Profit process: no traded session with a closed payout ratio yet.
Ceiling: T perfect sessions at credit/wing g give at most (1/(1-g))^T; at g = 0.20 three perfect sessions reach 1.95, i.e. p ≥ 0.51, and p ≤ 0.05 needs 14 consecutive perfect packages. That is why no Sharpe ratio appears on this page. Details: docs/evidence.md.

The rule in one picture

Payout ratio of the condor buyer vs. radius of the interval (trailing 250 sessions, wing = 0.68 implied moves) 0.0 0.1 0.2 0.3 0.4 0.5 0.00 0.25 0.50 0.75 1.00 1.25 1.50 short-strike distance k, in implied moves (|close / entry - 1| / VIX-implied E|move|) expected payout / wing beta* = 0.10 (pre-registered) k_hat = 0.562: smallest radius certified at beta* short strikes at spot +- k_hat x implied move (rounded outward) R_n(k): empirical payout ratio of the calibration set n/(n+1) R_n(k) + 1/(n+1): the certified curve (Theorem 3)
The buyer's expected payout as a fraction of the wing falls with the radius; where the finite-sample-inflated curve first crosses beta* is the certified radius, and the short strikes go there. Regenerate: python scripts/risk_curve.py.

Configuration changes since the first live cycle

Every pre-registered parameter changed after 2026-09-02 10:00 ET, with date, evidence and effect: docs/CONFIG_CHANGES.md. Each audit record carries the config hash that produced it.

Journal (last entries)

no journal entries yet

Not reported, on purpose

Sharpe ratio, win rate, annualised return, profit factor. With a handful of observations these are noise: the minimum track record to certify an annualised Sharpe of 1.0 at 95 % with skew -1.5 and kurtosis 6 is 751 daily observations (Bailey & Lopez de Prado 2014).