Updated September 2026
Every figure this tool shows comes from a small set of fixed formulas applied to what you enter, plus one live data source for option prices. Nothing is estimated, smoothed, or adjusted for "typical" scenarios — this page documents exactly what runs, so you can trust the number without treating it as a black box.
For every open short put: cash required = strike × 100 × contracts. This is summed across all open puts within each account tag, and again across all accounts for the portfolio total shown in the hero metric at the top of the dashboard. It's compared directly to the cash figure you've entered for that account.
For every open short call: shares required = 100 × contracts, tracked per ticker within each account tag — 100 shares of one stock and 100 of another are never combined, since a call can only be covered by shares of that exact underlying. You enter held shares per ticker/account, and the tracker flags any call position where held shares fall short ("naked").
For a short put: in the money when the current stock price is below the strike (assignment risk). For a short call: in the money when the current price is above the strike. The price cell is colored red (ITM) or green (OTM) accordingly, with percentage distance from strike shown underneath.
Stock and option prices are fetched from a public delayed options-chain feed (CBOE, roughly 15 minutes behind the market), matched to your specific contract by ticker, expiration, strike, and type. When a live option quote is available, the mark price used is the bid/ask midpoint (or last trade if no active quote exists): P/L = premium collected − (mark × 100 × contracts) — in plain terms, what you'd net if you bought the position back and closed it right now. The percentage shown alongside is P/L divided by premium collected, so "+$149 (99%)" means you've realized 99% of the original premium as of this moment.
Some contracts — thinly traded strikes, unusual expirations — don't return a live mark from the feed. Rather than showing nothing, the tracker falls back to an intrinsic-value estimate: max(0, strike − price) for a put or max(0, price − strike) for a call, times 100 times contracts, subtracted from premium the same way. This estimate is always visibly marked with a "~" prefix and an "est" label, so it's never confused with a real, live-quoted figure.
Only computed when you supply an entry date alongside the expiration date — without one, the field is simply left blank rather than guessing a holding period. The formula: (premium ÷ basis) ÷ days held × 365 × 100, where basis is strike × 100 × contracts and days held is the actual calendar span from your entry date to expiration. This measures the real trade you made, not a generic annualization that assumes every position runs a full year.
Computed as the difference between now and the expiration date at market close (4pm), rounded to the nearest day. A position is treated as expired, and moved out of active cash/share coverage math, the moment its DTE goes negative.
Positions, account tags, cash balances, held shares, and premium figures are stored only in your browser's local storage — there's no account and no server-side database. The only data sent to a server at all is the ticker symbol, expiration date, strike, and option type for each open position, used solely to fetch that contract's current market price. Dollar amounts, account names, and premium collected never appear in that request. See the privacy policy for the full picture.