Skip to main content
FAINTRADING_

// Options education and paper trading for learners worldwide.

[PRODUCT]
  • Features
  • Pricing
  • Strategies
  • Tools
  • Release Notes
[RESOURCES]
  • School
  • Blog
  • Glossary
  • Formulas
  • FAQ
[COMPANY]
  • About
  • Contact
[LEGAL]
  • Privacy Policy
  • Terms of Service
  • Risk Disclaimer
  • Cookie Policy
  • Accessibility
// © 2026 FainTrading. All rights reserved.
FAINTRADING_
[FEATURES][PRICING][ABOUT][BLOG]
> TRY FOR FREE

Methodology

Honest-fill backtesting

Published 2026-09-01 · Version 1.0

Every backtest on FainTrading runs twice over the same historical bars: an ideal run (fills at the modeled mid, no commissions, textbook assignment) and a realistic run degraded by three documented frictions — spread capture, commissions, and late assignment. The result reports both equity curves plus the divergence between them, so the number you quote is the one that survives real-world costs. This page publishes every constant in the model (shipped in app/services/backtesting/friction.py).

1. Spread capture by delta and DTE

A seller crossing the bid-ask spread does not receive the mid. The fraction of mid captured on entry is 1 − half_spread(|delta|, DTE), looked up in this table. It encodes the empirically robust pattern that cheap, far-OTM, short-dated options carry the widest relative spreads — a $0.10 far-OTM weekly with a $0.02-wide market gives up 20%+ of its mid — while near-ATM and longer-dated options are relatively tighter. Deltas are Black-Scholes deltas at an assumed flat 30% IV and 5% risk-free rate, consistent with the flat premium model below.

Delta bucketDTE < 14DTE 14–45DTE > 45
|delta| < 0.1588% of mid(half-spread 12%)92% of mid(half-spread 8%)94% of mid(half-spread 6%)
0.15 – 0.3094% of mid(half-spread 6%)96% of mid(half-spread 4%)97% of mid(half-spread 3%)
0.30 – 0.5097% of mid(half-spread 3%)98% of mid(half-spread 2%)98% of mid(half-spread 2%)
≥ 0.5098% of mid(half-spread 2%)98.5% of mid(half-spread 1.5%)99% of mid(half-spread 1%)

Exit flips the direction: closing a position pays intrinsic × (1 + half-spread). The whole table scales by a user-facing slippage multiplier (0 = free mid fills, 3 = very wide markets, default 1.0).

2. Commissions and fees

  • $0.65 per contract per option fill, capped at $10 per fill — tastytrade-style per-contract pricing, and the same constants the paper engine and the Live-Readiness cost replay use.
  • Equity legs are $0 (assignment, rebuys), matching tastytrade's commission-free stock trading.
  • Overridable per backtest: per-contract $0–5, cap $0–50. The ideal run always pays $0.

3. Assignment model

Short options are American-style, and deep-ITM shorts get assigned once remaining extrinsic value is negligible. On the final day of each cycle, an ITM short whose estimated remaining time value — entry_mid × (dte_remaining / cycle_days) × e^(−intrinsic / entry_mid) (flat time decay × exponential moneyness decay, so deep-ITM shorts retain almost none while barely-ITM shorts keep most) — is below $0.05/share is assigned and the stock transacts at the strike. If time value is still meaningful, the realistic path must instead buy the option back at intrinsic × (1 + half-spread) plus commission — a cost the ideal path never pays. Mid-cycle (true "early") assignment is deliberately out of scope.

4. Earnings IV crush

The earnings-crush strategy applies a per-symbol crush ratio — the mean historical post-earnings IV drop from our stored per-symbol earnings history — to short-straddle extrinsic value on the day after each event. The ratio needs at least 4 symbol-specific observations; below that the platform-wide average is applied and flagged as a fallback. Ratios are clamped to 5–95%, with a 35% default when no data exists anywhere. Both the percent (25.0) and fraction (0.25) column conventions are accepted.

Assumptions and limits

Stated plainly, because a backtest that hides its simplifications is marketing, not measurement:

  • Premium estimation is intentionally simplified — a flat percentage of stock price per cycle. This is an educational backtester, not production quant finance; the honesty budget went into the fill model, not the pricing model.
  • Daily closing prices only (yfinance), no intraday bars or intraday spreads.
  • Strategies covered: covered call, cash-secured put, buy-and-hold baseline, and earnings IV crush. Multi-leg structures are not simulated.
  • Per-trade P&L covers the option leg only; the stock leg's effect appears in the aggregate equity figures.
  • Assignment is estimated, not simulated from exercise notices; early assignment is excluded.
  • Deltas for the spread table come from Black-Scholes at an assumed flat IV, not live surfaces.
Live-Readiness Score methodologyNVDA earnings IV crush historyPaper trading & strategy lab