# FlashAlpha options expansion v2 — all 50 strategy samples This separate release extends the audited v1 sample. The original article, archive and six-strategy ranking remain unchanged. **Data generation is complete for all 50 catalogue entries; profitability has not been proved.** ## Start with the data - `results/coverage.csv`: every strategy, sample size, cohort, limitations and file path. - `results/strategies/.csv`: one directly inspectable dataset per strategy, including the wheel. - `results/trades.csv` / `legs.csv`: all 7,265 quote simulations and 17,003 legs; raw filename and zero-based source row references are embedded in each leg. - `results/attempts.csv` / `selection_ledger.csv`: completed and excluded strategy/windows, selected contracts and the first failing reason. - `results/signal_decisions.csv`: every proposed signal-filter decision, including rejected or unavailable signals. - `results/wheel_ledger.csv`, `wheel_attempts.csv`, `wheel_summary.csv`: the 106-cycle inventory and cash ledger with explicit expiry-assignment assumptions. - `results/event_windows.csv`, `events.json`: the 12 issuer-sourced earnings dates and both entry/exit schedules. - `results/source_index.csv`: exact SQL, source fingerprints, retrieval timestamps and row counts. - `results/verification.json`: independent raw-quote and cash-accounting checks. ## Three research cohorts — do not merge into one performance ranking | Cohort | Profiles | Scope | Interpretation | |---|---:|---|---| | Monthly ETF option trades | 42 | SPY, QQQ, IWM; 216 possible monthly windows, 2020–2025 | Fixed ten-session quote simulations; includes five research signal proxies. | | Earnings | 7 | AAPL, MSFT, AMZN; four events each in 2025 | Small retrospective event studies, 6–12 completed observations per profile. | | Wheel | 1 | Three separate $100,000 accounts, 2020–2025 | Stateful expiry-only physical-assignment simulation; 35, 35 and 36 cycles. | The term-structure filter has **four** completed observations. It and every earnings profile are marked `tiny_sample_under_30`. Thirty is a display warning threshold, not a claim of statistical adequacy. No automatic cross-cohort ranking is supplied. ## Fixed rules Monthly dates, delta targets, quote validity, fee assumptions and common reference notional match v1. Select at the first observed monthly close; enter at the second close; exit at the twelfth close. Front expiration targets 35 days (30–45), back targets 65 (55–80). Signal precedes entry. Buy at ask, sell at bid, fee $0.65 per contract per side. All contract quantities are explicit. Original v1 output values are checked against `baseline_reference.csv`. Additional constructions are defined in `expand.py EXTRA`: - Symmetric butterflies target 3% of signal spot on either side of the ATM body, 1:-2:1 sizing. - Broken-wing call butterflies use a 1:2 width ratio below/above ATM; put butterflies reverse those widths. The narrow wing targets 3% of spot. - Single-right condors use ATM ± one/two widths, targeting 1.5% of spot per width. Geometry must exist on the actual strike grid, within 65–135% of the width target; otherwise the role is unavailable. Width ties prefer smaller widths. - Double calendars combine same-strike call and put calendars. Double diagonals combine 25-delta front shorts with 50-delta back longs. - Risk reversals use 25-delta calls and puts. Ratio spreads buy one 50-delta option and sell two 25-delta options; backspreads invert those quantities. No neutrality, credit or margin constraint is implied. - Poor man's covered call: short front 25-delta call, long 80-delta call in the expiration nearest 365 days (270–540), with the long strike below the short. This is a **ten-session position sample**, not an annually rolled PMCC program. - The standard monthly extract spans strikes 75–125% of signal spot and expirations 25–80 days. The added long-call extract spans strikes 40–125% and expirations 270–540 days. ## Five signal proxies — not production endpoint validation These thresholds are frozen for this sample, without optimization: | Profile | Rule | |---|---| | Vol-carry spread / condor | Signal-day mean ATM call/put IV divided by trailing 20-return realized volatility >= 1.20. | | Skew vertical | Absolute 25-delta put-IV minus call-IV >= 0.03; sell the rich side through a 25/10-delta credit spread. | | Tail pricing | 10-delta put IV minus ATM put IV >= 0.05; use a 25/10-delta put credit spread. | | Term-structure calendar | Back 50-delta call IV minus front 50-delta call IV >= 0.02; buy the call calendar. | IV differences are decimal volatility units, not percentages of IV. RV uses sample standard deviation of 20 log **unadjusted** underlying returns × sqrt(252), available at signal date; missing/invalid inputs prevent a signal. These are transparent research proxies for strategy families. They **do not replay or certify FlashAlpha's endpoint scores**. ## Earnings rules and source limitation `events.json` records actual issuer results-release dates, URLs and verification dates. The database calendar probe is preserved in `earnings_calendar_probe.json`: sampled 2025 rows used quarter-end dates and were rejected for alignment. These event dates were sourced retrospectively in 2026; the package does not establish when investors originally learned the schedule. For six event-spanning profiles, select contracts two observed sessions before the event, enter one session before, and exit one session after. The interval spans the complete announcement date without relying on an unverified intraday release time. For pre-earnings buildup, select eleven sessions before, enter ten before, and exit one before. Front expiration is nearest seven calendar days **after the event** (2–14); back is nearest 35 days after (28–60). The extraction spans 65–135% of signal spot. All positions close before expiry. The five named earnings structures use straddle, strangle, condor, call calendar and call diagonal constructions. Pre-earnings buildup uses a long straddle; post-earnings volatility crush uses a short straddle spanning the event. These are examples of specific rules, not assertions that the event always causes the named effect. The AAPL EOD view lacks quote-size columns. For a consistent cohort, earnings queries explicitly store size as **null**, and `displayed_size_verified` is false. They retain positive uncrossed quotes and signal spread filters but **do not enforce displayed depth**. Monthly ETF trades retain the size checks. Do not describe the earnings sample as depth-verified execution. ## Wheel rules Each ETF starts with $100,000 cash and zero shares. On a monthly signal date with no open option, select the same 35-day/25-delta put while holding cash, or call while owning 100 shares. Enter at the following observed close, selling at bid with a $0.65 option fee. One contract only; require cash >= strike × 100 for a put. If the preceding option is still open at signal time, do not enter another. Hold to expiry. Using the observed underlying midpoint on expiry, assume physical assignment of every strictly ITM option at the strike: puts acquire 100 shares; calls deliver them. ATM/OTM options expire without assignment. No early assignment or exercise fee is modeled. Accrue historical dividends while shares are held, including idle periods. Stop opening contracts expiring after 2025-12-31; liquidate remaining shares at that date's underlying bid, with zero stock commission. Missing future settlement quotes are recorded as exclusions; this is still complete-case research. The ledger reconciles premiums, fees, dividends, strike settlement, shares, idle-period equity changes, cycle P&L and terminal liquidation. The wheel's account return uses initial cash; monthly option P&L uses 100 shares of entry underlying value. These denominators and holding periods are different. ## Audit, reproduction and limitations Use CPython 3.13.14 (standard library only): ```text python reproduce.py check python reproduce.py run ``` The runner hashes all raw inputs, source code, event metadata and expected results, then rebuilds every result in fresh directories with networking and child processes blocked inside calculation steps. It compares the complete output hashes across two different Python hash seeds. No credentials or archive access are needed for reproduction. Only explicit maintenance `seal` changes the frozen release lock. To regenerate before sealing: `python expand.py analyze`, then `python expand.py verify`. `collect` is an optional read-only archive extraction command on an authorized FlashAlpha machine; it is not part of offline reproduction. This is an auditable taster. EOD prices are not guaranteed synchronized fills. American-option early assignment, realistic margin, financing, impact and full daily drawdowns remain unmodeled. Greek values and event dates are archived/researched inputs, not independently certified point-in-time calculations. The event date source links allow external inspection; the issuer websites themselves are not mirrored in the package. Hashes freeze saved evidence and do not authenticate vendor accuracy. External human/statistical review remains outstanding. No article claims or strategy rankings from v1 were replaced.