Midpoint · measured on live markets

The bill nobody
shows you.

Buying one options contract cost $347 in hidden fees. The same trade, one strike away, cost $7.

Nobody had to tell that trader. Stock trades come with a legally required receipt for this. Options don't — and options are where the money goes.

65 contracts measured live markets, 31 Aug 2026 every number recomputable rules pre-registered
01 — the thing nobody explains

Every trade has two prices

There's a price to buy and a lower price to sell, at the same moment. The gap between them is the house's cut. You pay it going in, and again coming out.

drag meWhere does your order land?
$2.21
sell here
$2.28
true worth
$2.35
buy here
You pay
$2.35
It's worth
$2.28
Lost per contract
$7
Round trip
$14
One contract is 100 shares, so a 7-cent gap is $7 of real money — and you pay it twice, once to open and once to close.
Show me the working
Quotes shown are a real SPY contract. The "true worth" is the midpoint between the two prices, which is the standard benchmark professionals measure execution against. Options are quoted per share and sold in hundreds, which is why small-looking numbers become large ones.
02 — the tool

Now check your own trade

Open your broker, find the contract you are about to buy, and read off its bid and ask. Type them here. Nothing is sent anywhere — this runs entirely in your browser, and it grades your contract against the 65 we measured on live markets.

your tradeWhat is this contract going to cost you?
In and out costs you
That is this much of the price
It must rise this much to break even
Our measured rule says
Where do I find the bid and the ask?
Every broker shows them on the options chain, usually side by side and labelled Bid and Ask (sometimes "Sell" and "Buy", or "B" and "A"). They are the two prices that exist at the same moment: the ask is what you pay to get in, the bid is what you receive to get out. If your broker shows only one price, it is showing you the midpoint — a price neither side will actually give you.
What this can and cannot tell you
It can tell you what the quoted gap costs you in real money, and how that compares with 65 contracts whose true cost we measured by paying it. That comparison is the useful part: quoted width is visible before you trade, and in our data it ranked contracts almost perfectly.

It cannot tell you the exact price you will get. We measured that the free feed's quoted width is itself inaccurate — too narrow on busy contracts, too wide on quiet ones — so treat the dollar figure as a well-grounded estimate and the band as the reliable signal. And it says nothing about whether the trade is a good idea. It only prices the toll on the way in.
02b — where that gap actually goes

You are paying three different people

The gap is not a fee somebody set. It is the sum of three separate charges, and knowing which is which tells you when the gap is fair and when you are being quoted a price nobody expects you to take.

1. The dealer's costs

Somebody has to be standing there, willing to trade with you at 2:14pm on a Tuesday, in a contract that might trade eleven times all day. That readiness costs money — staff, exchange fees, capital — and the spread pays for it. In a competitive market this part shrinks to roughly what the business costs to run.

2. The risk of holding what you sold them

When they buy from you they are stuck holding it until someone turns up wanting the other side. Every minute of that is risk. The less often a contract trades, the longer that wait, and the wider the quote. This is why the illiquid strike one row down costs so much more than the busy one — nothing about your trade changed, only how long they expect to be stuck with it.

3. Insurance against people who know more than you

Some of the people hitting that quote know something. The dealer cannot tell which ones, so they charge everybody a premium to cover what they lose to the informed few. This is the uncomfortable part: you pay that premium even though you are almost certainly not the informed one. It is the price of being in the same queue as them.

The practical consequence is the whole point of this project. Parts 2 and 3 are enormous in thinly traded options and small in busy ones — and they are visible before you trade, in the width of the quote. That is a gate you can apply yourself, and it is the one our agent applies below.
Where this comes from
The split into a cost component and an adverse-selection component is standard microstructure: Harris, Trading and Exchanges (2003), ch. 14, and the models of Glosten & Milgrom (1985) and Kyle (1985), set out in Cartea, Jaimungal & Penalva, Algorithmic and High-Frequency Trading (2015), ch. 2. The half-spread a dealer must charge rises with both the prevalence of informed traders and the size of what they know; push either far enough and the quote widens until nobody sane trades, which is exactly the shape of the $110-wide quotes our liquidity gate refuses.
03 — the centrepiece

Pick a strike. See the bill.

Every bar below is a real contract we bought and sold on the same afternoon, on the same underlying, to find out what it truly cost. Sorted cheapest to dearest.

explore65 contracts, one afternoon
cheapestmost expensive
Contracts shown
Typical cost
Worst
Cheapest
Click any bar to see which contract it is.
Show me the working
For each contract we bought one and immediately sold one, recovering the real buy price and the real sell price. Net position zero; the cost is the gap we crossed. Two sweeps on 31 Aug 2026, 65 contracts with ground truth, run on a separate experimental account that is never submitted for judging.
04 — the trap

Same bet. 116× the cost.

A deep in-the-money call moves almost exactly like 100 shares. Traders use them as a substitute. Here is what the substitution costs.

compareTwo ways to own the same exposure
What you own
100 SPY shares
Hidden fee
$3
Compared
baseline
SPY's own spread that afternoon was three cents. A hundred shares cost $3 to get in and out of.
04b — two myths worth killing first

Things that sound true and aren't

"Selling spreads generates income. Buying them is a gamble."

These are the same trade. A put spread where you sell the higher strike and buy the lower one, taking cash in, has an identical payoff at expiry to the call spread on the same two strikes that you pay to put on. Same maximum win, same maximum loss, same breakeven, same underlying price at every point. Only the direction the cash moves on day one differs, and put–call parity forces the two to cost the same once you account for it.

Getting paid up front feels like income. It is not income; it is a loan against a liability you have just taken on. The reason we still use the credit form is unglamorous: it puts the wider, busier strike on the side we are selling, which is where the liquidity is.

"A resting limit order is the safe way to trade."

A limit order sitting in the book is a free option you have written and given to the market. You have promised to trade at your price; anyone may take that promise whenever it suits them. When the news is good for the other side, they take it. When it is bad for them, they leave it there. Your only protection is cancelling faster than they can act — and against a machine, you cannot.

This is why the professional advice is the opposite of the folk advice: use limit orders sparingly, priced close to the market, mainly where your size would otherwise move the price. Our agent crosses the spread deliberately and prices the crossing, rather than resting far away and pretending patience is free.

Where this comes from
The equivalence is put–call parity applied to verticals: Hull, Options, Futures, and Other Derivatives, ch. 10–11. The free-option characterisation of resting limit orders is Grinold & Kahn, Active Portfolio Management (2000), ch. 16 — "placing a limit order to buy at a price P constitutes offering to buy the stock at P, even if the stock is rapidly moving to 80 percent of P" — and the reason it is dangerous is the adverse-selection charge described two sections above.
05 — the number nobody computes

How often does this have to work?

Selling an option pays you cash up front. It feels like free money. It isn't — the cash is priced against how likely you are to lose. Here's the honest arithmetic.

calculateRequired win rate
You can win
$13
You can lose
$87
Must win at least
87.0%
0%break even100%
This is a risk-shape disclosure, not a prediction. It tells you what the trade needs — not whether it will happen. Our own agent records this number for every trade it takes.
Show me the working
Maximum loss is the width of the spread minus the cash received. Break-even win rate is maxLoss / (maxLoss + credit). Widening the spread does not improve it — we checked at 1, 2, 3 and 4 dollars wide and all sit within half a point of each other. That is the market pricing correctly, not a flaw in the trade.
06 — why trust any of this

We found a way to see the real price

The free data feed is an approximation. So instead of trusting it, we sent six orders at the same instant, each offering a wildly different price, and watched what we were actually charged.

step throughSix orders, one instant
We offered up toWe actually paidDifference
One at a time — watch the right-hand column.
07 — we tested our own idea and it failed

Does waiting for a better moment help?

The received wisdom is that patient traders get better prices. We ran it properly: ten pairs of identical trades, differing only in when the order went in. Each square is one pair.

count them10 paired trials
Waiting was cheaper
Waiting was dearer
Average difference
Near enough a coin flip. We looked for the effect and it isn't there — at least not at a size worth chasing. Choosing the right contract, by contrast, was worth about eighty times more. That's why this page opens with strike choice and not with timing.
Show me the working
Same contract, traded twice moments apart, differing only in when the order was sent. Each arm is charged against fair value at its own fill instant, so a market that merely drifted cannot be mistaken for good execution. Difference +$0.15 per contract, t = +0.31, 95% confidence interval [−$0.82, +$1.12] — which excludes the published effect this was testing for. That effect would have needed only four pairs to detect; we ran ten.
08 — one rule, measured

The screen that would have caught it

You can't see the real price before you trade. But the free feed's quoted gap, unreliable as its exact value is, ranks contracts almost perfectly. Drag the line and watch the expensive ones fall away.

drag the ruleReject anything quoted wider than…
keptrejected
Kept
Average cost kept
Rejected
Average cost rejected
Show me the working
The threshold is in dollars, not percent, deliberately: a one-cent gap on a three-cent option is 33% in relative terms but only a dollar in real money, and a percentage rule throws away perfectly cheap contracts. The $0.20 line was derived on the first 17 contracts and then tested, unchanged, on 48 more measured an hour later. It let through nothing costing over $50 in either sample.
the machinery

For readers who want the actual numbers

Everything above is deliberately plain. Everything below is not. This is the working: the models, the statistics, the regulatory basis, and the one finding we published and then had to withdraw.

Fair value is predictable from the underlying — and we measured how fast

Muravyev & Pearson (RFS 2020) argue option fair value is predictable at high frequency from the underlying. We tested it on 240 read-only samples across eight contracts, regressing each option's realised 40-second price change on the delta-gamma prediction δ·dS + ½γ·dS².

ContractSlopet-stat
SPY 0DTE ATM0.89024.050.726
SPY 1-day ATM0.72717.480.584
SPY 8-day ATM0.88413.270.447
QQQ 0DTE ATM0.64514.400.487
SPY 8-day OTM1.0465.400.118

Every slope positive, every t-statistic between 5.4 and 24.1. The underlying explains 73% of the variance in the SPY 0DTE contract's 40-second move. Slopes below 1 are expected rather than a defect: the quoted midpoint updates in discrete ticks and so understates true moves, and implied volatility typically falls as the index rises, damping call moves.

But only above ~20 seconds — below that it actively hurts

HorizonSPY 0DTESPY 1-dayQQQ 0DTESignal ÷ feed noise
2 s−4.3%−5.1%−8.7%0.20
10 s+10.6%+4.5%−5.9%0.69
20 s+28.3%+16.6%+4.5%1.10 ← crossover
40 s+48.9%+32.0%+22.7%1.68

RMSE improvement over a random walk. The signal only clears the free feed's own noise floor at about twenty seconds — below that you are amplifying quote jitter, which is why a naive fast polling loop makes the estimate worse. Both predictors are scored against a noisy target, so common noise inflates both and pushes the ratio toward one: these are lower bounds.

Three design parameters fall out, none of them guessed: decision cadence of 40–60 seconds, SPY over QQQ, and stay near the money. Also worth noting — Alpaca returns no greeks whatsoever for same-day expiries, so the strongest row in the table is computed with our own Black-Scholes engine on an intraday clock. The platform gives you nothing exactly where the signal is strongest.

The timing null was adequately powered — that's the point

A null result is only interesting if the experiment could have detected the effect. Minimum detectable effect at 80% power, from the observed dispersion:

PairsSmallest detectable effectDetects the published ~$2.50?
4$2.20 / contractyes
10 ← ours$1.39 / contractyes, comfortably
77$0.50 / contract
1000$0.14 / contract

We ran ten pairs; the effect we were testing for needed four. The 95% interval [−$0.82, +$1.12] excludes it. We cannot rule out effects below about 1.4¢ a share — and we say so rather than claiming a cleaner result than we have.

And we can say why, not merely that. The waiting arm's raw fills came in 2.4¢ higher while the underlying rose 2.8¢ during the wait — yet the costs differed by 0.15¢. The real quote tracked the underlying almost exactly. Had it been stale, waiting would have paid. It didn't. Muravyev & Pearson sampled 2003–2006; market makers now requote in microseconds.

A finding we published, then withdrew

Free featureRun 1 (n=17)Run 2 (n=48)Verdict
Quoted width+0.944+0.893robust
Option price+0.873+0.789robust
Day volume−0.735−0.416weakens
Ask size (depth)−0.897−0.324did not replicate
Open interest−0.500−0.282weak in both
Days to expiry−0.105+0.413unstable

Spearman rank correlation with true spread. On the first sample we reported ask size as the second-best predictor and noted that essentially no retail tool uses it. Replication killed it. It was an artifact of a small sample dominated by deep in-the-money contracts. Only quoted width and option price survive. The retraction stays on the page on purpose.

One folklore casualty worth noting: open interest is the weakest usable predictor and errs both ways. One contract with open interest of 1,703 — comfortably "safe" by the standard retail screen — cost $306. Another with 199 cost $1.

The risk layer is not invented — it maps to SEC Rule 15c3-5

The Market Access Rule requires a broker-dealer to maintain pre-trade controls. Our fourteen gates map onto its clauses:

ClauseRequirementOur gates
(c)(1)(i)Pre-set credit / capital thresholdsper-trade 0.25%, daily 1.0%, drawdown 2.5%, aggregate 1.5%
(c)(1)(ii)Erroneous orders — price, size, duplication, ratefat finger, price collar, liquidity gate, duplicate detection, throttle
(c)(1)(iii)Regulatory compliance before entryuncovered shorts unrepresentable, expiry cutoffs, account guard
(c)(2)Immediate post-trade surveillanceevery decision journalled with its reason

The gates also have a second lineage, which is the list of ways derivatives desks have actually destroyed themselves. Hull devotes a closing chapter to it, and the lessons map onto this system one for one:

Lesson from the disastersHow it is enforced here
Define risk limits at board level, then convert them into limits on individuals Every threshold lives in one config, serialised and hashed into the pre-registration before the first order
Take the limits seriously — the penalty for breaching a limit must be the same when the breach makes money The kernel has no override path. Vetoes of trades that would have profited are journalled and reported alongside the rest
Do not assume you can outguess the market: one trader in sixteen is right four quarters running by chance The agent claims no forecasting edge. The regime signal can only withhold permission, never size a bet
Do not blindly trust models — large profits from simple strategies usually mean the model is wrong The fill oracle exists because we did not trust the simulator's prices, and went and measured them
Separate the front, middle and back office The agent proposes, the kernel vetoes and can only veto, the hash-chained journal and broker reconciliation record — three separate pieces of code
Barings and Société Générale: an arbitrage mandate quietly became a directional bet Structure is fixed in code. The model may abstain or shrink; it cannot choose strikes, expiries, or direction

Hull, Options, Futures, and Other Derivatives, ch. 35. The separation-of-duties point is the one worth stressing: Leeson controlled both the front and back office at Barings, and Kerviel had worked in Société Générale's back office before becoming a trader. An agent that both places orders and writes its own record of them has the same structural flaw.

The clause that shaped the design is (c)(1)(ii). Its erroneous-order controls exist to catch your own system malfunctioning, not the market moving. Retail risk management is almost entirely about market risk; professional pre-trade risk assumes your own code is the most likely thing to be broken. Knight Capital lost $460m in 45 minutes in 2012 to deprecated code on one of eight servers, and the SEC charged them under this very rule — finding they had compiled an inventory of controls rather than considered malfunctions in their own order router. Their system also fired 97 warnings before the open that nobody acted on.

So one gate has no market-risk purpose at all: after enough consecutive refusals the kernel halts, on the reasoning that an agent being refused repeatedly is broken rather than unlucky. Fourteen gates, twenty-three tests, no network required to run them.

What we claim, and what we refuse to

Claimed

  • Execution measured against ground truth, with intervals
  • Risk enforced by tested gates with a regulatory basis
  • Every decision auditable, refusals included
  • Findings replicated — and one withdrawn when replication killed it

Not claimed

  • That the strategy has an edge. A defined-risk credit spread is fairly priced under the risk-neutral measure.
  • That a few sessions of profit and loss means anything. A strategy earning a Sharpe of 0.8 produces about +0.1% over five sessions against a standard deviation near 0.9% — a signal-to-noise ratio of roughly 0.11.

A short-volatility book showing a beautiful number over a few days is the predicted output of the measurement error, not evidence of skill. Goetzmann, Ingersoll, Spiegel and Welch (RFS 2007) show a fund that sells out-of-the-money options and holds cash has, whenever those options expire worthless, a zero standard deviation and a positive excess return — and therefore an infinite Sharpe ratio.

So the rules were fixed before the first trade. Risk limits, strategy and three falsifiable predictions were committed and hashed in advance — including the prediction that profit and loss over the evaluation window will not be statistically distinguishable from zero. Commit bac24e3.

The arithmetic of proving an edge in five sessions

This is the calculation that decided what this project would try to be. Active management has a standard formula for how much skill a strategy can express — the fundamental law, IR ≈ IC · √BR: your information ratio is your skill per decision multiplied by the square root of the number of independent decisions you make. Breadth is the lever, and it is the one a short evaluation window takes away.

An agent trading one strategy on one underlying over five sessions makes on the order of five independent bets — not fifty, because the same regime call repeated daily is one bet made five times, not five bets. Even at a skill level most professionals never reach, five bets cannot produce a distinguishable result. And the standard error of an information ratio is roughly 1/√years: establishing merely top-quartile skill at conventional confidence takes about sixteen years of returns. A five-day P&L number is not weak evidence of skill. It is no evidence of skill.

So we moved the breadth to where it exists on this timescale. Measurement has breadth: 65 contracts probed for the liquidity gate, 40 paired quote comparisons for the feed audit, 240 samples for the fair-value study, 10 matched pairs for the timing test, 10,000 randomised cases against the risk kernel. Those are questions a week can actually answer. The trading result is reported honestly and claimed for nothing.

QuantityValue hereWhat it implies
Independent bets in the window (BR)~5√BR ≈ 2.2
Signal-to-noise of the P&L, pre-registered≈0.11P&L indistinguishable from zero
Years to establish IR = 0.5 at t = 216SE(IR) ≈ 1/√years
Chance one of 20 dead strategies backtests at t ≥ 264%why the rules were hashed first

Grinold & Kahn, Active Portfolio Management (2000), ch. 5–6, 12, 17. The 64% figure is theirs: given twenty informationless strategies, the probability that at least one shows a t-statistic of 2 is 64%, which is why a backtest that survived a search is worth so much less than it looks.

What the refusals cost — the number nobody else reports

Risk systems are judged on the trades they stop, and almost nobody prices them. The reason is structural: transaction-cost analysis is built from executed orders, so it can only ever see the trades that happened. Grinold & Kahn call the rest censored data — "the record shows trades, not orders placed, and certainly not orders not placed because the cost would be too high" — and Wagner's studies of institutional desks found the opportunity cost of trades never made often dominates every cost that is measured. Harris lists missed-trade opportunity cost as one of the three components of transaction cost, and the hardest to see.

So a refusal log that records only the reason cannot answer the one question worth asking of a risk system: did the refusals help? Every veto in this system now carries the quotes, strikes and credit it refused, and each one is settled afterwards against where the underlying actually closed. For a defined-risk spread held to expiry that needs no model at all — the result is fixed by one number:

P&L per share = credit − max(0, Kshort − ST) + max(0, Klong − ST)

Refusals that would have lost money are money the gate saved. Refusals that would have made money are the gate's cost, and we report those with the same prominence. The arithmetic is verified against hand calculations in tools/test_opportunity_cost.py; the ledger is results/opportunity_cost.json. With a handful of refusals it is descriptive, not inferential, and it is labelled that way.

A second null: the size-weighted mid does not beat the plain mid here

Standard practice in equity microstructure is that the microprice — the mid weighted by the size resting on each side — (Vbid·Pask + Vask·Pbid) / (Vbid+Vask) — is a better estimate of the true price than the plain mid, because it leans toward the side that is thinner and therefore likelier to be consumed next. Nobody appears to have checked it on retail options quotes, because checking it requires the true NBBO and the free feed does not publish one. We had 64 contracts where we had bought the truth.

SamplenRMSE, plain midRMSE, micropricepaired p
All probed contracts64$0.1406$0.22890.30
Excluding the single widest quote63$0.1417$0.14390.73
Contracts our gate would trade (≤$0.20 wide)48$0.0790$0.08160.15

The microprice is not better, and on the contracts we would actually trade the two are indistinguishable. There is a mechanism for this rather than a shrug: the microprice can only ever place its estimate inside the quoted bid and ask, and we had already measured that the free feed's width is wrong — too narrow in liquid contracts, too wide in illiquid ones. An estimator defined inside a mis-stated interval inherits the mis-statement. Displayed-size imbalance may well carry information in options; this says only that reading it through a mis-stated spread does not recover the true mid. We keep the simpler estimator and publish the null: results/microprice_study.json.

We audited the venue every paper result depends on

Every submission in this contest reports a paper profit and loss, and each of those numbers inherits whatever the paper venue assumes about liquidity. Nobody appears to have measured what that assumption is, so we did.

Theory is specific about what a real market does. Impact grows as the square root of size traded — Grinold and Kahn derive it from the liquidity supplier's inventory risk, Loeb's 1983 block-bid data fits the curve, and BARRA's own fitting put the exponent at one half. Displayed depth at the touch is small, so a large marketable order walks the book by construction. We sent one contract, then 49, then 196 — the last of those 1.34× the entire displayed offer — and recorded what came back.

SizeDisplayed at the offerMultipleQuoted askFilled atRound trip
1670.01×$1.24$1.21$0.00
491780.28×$1.19$1.26+$0.02
1961461.34×$1.30$1.27+$0.01

Two things here survive any objection. The round trip is a matched pair — buy and sell the same contract seconds apart — so market drift cancels out of it. In a real book a round trip costs at least the quoted spread, because you buy at the offer and sell at the bid; that is as close to a law as microstructure has. Here not one round trip cost anything, and two of them paid us. And the largest order took 1.34 times the entire visible offer and filled three cents inside it, where a real book would have exhausted the offer and walked up to worse prices.

The square-root law does not operate in this venue. Order size is free here in a way it never is in a market. That is not a complaint about Alpaca — a paper engine is a teaching tool, not a market simulator — but it does mean every paper profit in this contest, ours included, was earned somewhere that gives away liquidity a real market sells.

What it does not establish: a size-impact curve. Three rungs, and on 0DTE contracts the quote moved several cents between our snapshot and the fill, so the per-rung slippage figures mix size with ordinary market movement. We do not read them as impact. The round trip and the depth multiple are the two measurements that survive that confound, and they are the only two we draw a conclusion from.

Raw rungs in results/size_ladder.jsonl, analysis in tools/size_ladder_analyze.py. The probe cost nothing and its profit is excluded from every trading figure we report — see the note on attribution below.

Why our own profit figure is smaller than the account says

One paper account has carried two different activities: the agent trading its strategy, and research probes that deliberately buy and sell to measure how the venue behaves. The broker adds them together. We do not.

A probe that happens to end up ahead is not a trading result by any reading, and blending it into one number is the exact thing our reporting rules forbid. Every fill is attributed to the thing that caused it, using the agent's own journal as the record of what it traded; anything else on the account is research and is reported separately, whichever way it lands.

Run it yourself: python3 tools/pnl_attribution.py.

What we did not build, and why

There is a mature literature of optimal execution, and we used almost none of it. That is a choice, not an oversight, and the reasons are specific.

  • Optimal limit-order placement. The standard result sets the depth to post at from the fill intensity λe−κδ. Estimating κ needs a history of fills at varying depths, which at our data budget we do not have and cannot honestly fake. We use marketable orders inside a price collar instead, and measure what that costs.
  • Impact-aware scheduling. Almgren–Chriss scheduling matters when your order is a meaningful fraction of daily volume. Ours is one to ten contracts against displayed depth of hundreds. The machinery would be decoration.
  • Order-imbalance and short-term-alpha signals. Real effects in equities, and the optimal-control treatments show their value decaying to nothing as the deadline approaches — which is precisely where a 0DTE agent does most of its trading. We measured the one imbalance claim we could test, above, and it did not hold on our data.
  • A volatility surface model. We use the market's own implied volatilities rather than fitting a surface, because a fitted surface would add parameters we cannot validate in a week.

The pattern is deliberate: where a technique needs a parameter we cannot measure at this budget, we left it out and said so, rather than shipping an unvalidated estimate with a confident name.

Limitations, stated rather than buried

  • Everything was measured on one afternoon. Microstructure results should be reasonably stable; the timing null may not be.
  • The gate study is 65 contracts, mostly SPY. A per-contract cost cap stopped the sweep before it reached full cross-underlying coverage — deep in-the-money probes are expensive, which is itself the finding.
  • The timing test is ten pairs on one contract. Adequate for the effect it targeted, not for smaller ones.
  • Measurement noise is about one tick. The most liquid contract returned a true spread of −$0.01 — the market moved between our buy and our sell. Read that as effectively zero, not a crossed market.
  • The regime signal uses a two-point proxy for the second principal component of the volatility term structure, not the component itself.
  • Pin risk is the live hazard at the close, and it is the reason for the 15:15 flatten. An option that stays very close to the strike into expiry is the scenario options desks name as their nightmare: gamma and the hedge requirement both explode while the payoff stays undetermined. We amputate it by being flat rather than by managing it.
  • Early assignment is not modelled by us and may not be modelled by the venue. These are American options: the holder of our short leg may exercise at any time, and it becomes rational for them roughly when the extrinsic value left in that leg goes to zero. The loss stays capped either way because the long leg is already owned, but the agent now journals the exposure whenever an in-the-money short has under five cents of extrinsic value left, rather than assuming a simulator's silence means the risk is absent.
  • The microprice result, the feed audit and the liquidity gate all rest on the same afternoon's quotes. The intraday spread curve now being collected is the first of these measured across a whole session.