Find your most profitable roll.
A cash-secured put carries one core risk: assignment — being put the shares at your strike. Every roll you can make moves that risk in a knowable direction. You can roll the Expiration OUT (later) or IN (nearer), roll the Strike DOWN or UP, or combine the two: OUT + DOWN, OUT + UP, IN + DOWN, IN + UP.
The catch: those moves are priced in three different units — strike distance, calendar days, and cash. This tool converts each into the same unit, dollars per share. Risk added or removed by the strike becomes Stk $'s, time committed or freed by the expiration becomes Exp $'s, and the roll ticket's cash is Prem $'s. With all three in dollars, every listed roll — up, down, out, in, or any combination, with illiquid low-open-interest contracts filtered out — compares apples to apples, and sums to a single score: the Net Strategy Value (NSV).
How the model works — in plain English
When you roll a cash-secured put, you're really juggling three things at once: how much cash the roll pays you (the premium), how much the new strike changes your assignment risk, and how many extra days your money stays tied up (or gets freed early, if you roll to a nearer date). The problem is that these are measured in different currencies — dollars, "distance," and days — so comparing two rolls by gut feel is like comparing a price in dollars to a price in euros without checking the exchange rate.
This tool converts all three into the same currency: dollars per share. Add them up and you get one number, the Net Strategy Value. That makes every candidate roll directly comparable.
Which rolls are compared?
All of them. The tool pulls the live option chain for your ticker and scores every listed put contract — every strike above or below yours, every expiration further out or nearer in — with no built-in bias toward "defensive" moves. Two filters keep the list honest: contracts with little or no open interest are excluded (you can't get a fair fill in a market nobody trades), and the grid is bounded to strikes reasonably near the stock price and expirations inside six months. If the live chain is unreachable, the tool falls back to a theoretical grid of standard strikes and dates, clearly labeled as such.
The three ingredients, translated
Prem $'s is the cash the roll ticket pays (or costs) you: the mid-price of the new contract minus the mid-price to buy back your current one — taken from the live chain whenever it's available, so it matches what your broker shows.
Stk $'s answers: "what is moving my strike actually worth?" The answer depends on the odds. Dropping $5 below a strike that had a 60% chance of being assigned is worth a lot; dropping $5 below one that had a 3% chance is nearly worthless — and raising your strike shows up as a negative, because it adds risk. The tool multiplies the strike change by the assignment odds (from Black-Scholes). That converts "distance" into dollars, in either direction.
Exp $'s answers: "what does it cost me to keep my collateral locked up for more days?" Each added day is charged at your hurdle rate on the collateral; rolling to a nearer date scores positive, because it frees your capital sooner. That converts "days" into dollars, in either direction.
Where do the prices come from?
When the live chain is available, premiums are real bid/ask mids — actual market prices, skew and all. The Black-Scholes model is used for what markets don't quote directly: the probability of assignment behind Stk $'s, and the auto-computed delta and theta shown in the position form. When the chain is unavailable, Black-Scholes also fills in for the premiums, using the feed's implied volatility (or a 30% default); those theoretical prices are good estimates but ignore volatility skew, so treat them as rankings rather than quotes.
The full math
Everything below is implemented verbatim in this page's JavaScript — no server, no library. Notation: S = spot, K₀/K₁ = current/proposed strike, T₀/T₁ = current/proposed time to expiry in years (DTE/365), σ = implied volatility (annualized, decimal), r = risk-free rate (4.5% assumed), Φ = standard normal CDF.
1 · Candidate universe
No directional assumption is made: strikes above and below K₀ and expirations nearer and further than T₀ are all scored. If the live chain is unavailable, a theoretical grid is generated over standard strike increments and DTE offsets and priced with Black-Scholes (open-interest filtering is then impossible and the matrix is labeled accordingly).
2 · Black-Scholes core (European put, no dividends)
The distinction between Φ(−d1) and Φ(−d2) matters: delta is not the probability of finishing in-the-money — it's biased high by σ√T. NSV uses the correct Φ(−d2). Each candidate's own chain-reported IV is used for its probability when available; otherwise the position-level IV.
3 · NSV components (per share)
Signs work in both directions. Rolling the strike up makes Stk $'s negative (added assignment exposure); rolling to a nearer expiration makes Exp $'s positive (capital freed early). Nothing in the scoring privileges defense.
Why the trapezoid average of the two probabilities? The strike term is really the change in expected assignment loss, ∫(prob × loss) between the two strikes. Averaging the endpoint probabilities is a first-order (trapezoidal) approximation of that integral — very close for typical strike moves.
Why hurdle-rate time cost instead of theta? Because the premium already prices the time value of the added days — charging theta on top would double-count it. What the premium does not price is your personal opportunity cost of collateral: K₁ × 100 idle for ΔDays more. Charging that at the hurdle rate h keeps the three terms disjoint.
4 · Spot, IV, and auto-computed Greeks
On load and on every ticker change the app queries the CBOE proxy for the live spot, the chain, and implied volatility. The demo position's strike is seeded once at boot at spot × 1.15 (an underwater short put); entering your own symbol never overwrites your strike. Delta and daily theta shown in the position form are computed from the formulas above. If the live feed is unreachable, spot is inferred by inverting the delta definition at a 0.65 delta assumption:
Φ is computed with the Zelen–Severo polynomial (≈1e-7 accuracy) and Φ⁻¹ with Acklam's rational approximation — both inlined in the page source.
5 · Model assumptions & limitations
- Mids assume fair fills. Prem $'s uses the bid/ask midpoint; wide markets may fill worse than mid even on liquid strikes.
- European exercise, no dividends in all BSM quantities; American puts carry early-exercise premium the formula ignores.
- Flat volatility in fallback mode. When the chain is unavailable, one σ prices every strike and date; real chains have skew and term structure.
- Risk-neutral probabilities. Φ(−d2) is the probability under the risk-neutral measure, not the real-world one.
- Constant r. Hardcoded at 4.5% (one constant in the source:
RISK_FREE_RATE). - Open-interest threshold. Contracts below 100 OI are excluded (constant
MIN_OPEN_INTEREST); OI is reported by the chain with a one-day lag.
About CashSecuredPuts.app
CashSecuredPuts.app is a free, browser-based educational tool for options traders who sell cash-secured puts. Its single job is to make roll decisions comparable: every roll changes the Strike, the Expiration, and the Premium at once, and those three impacts are measured in different units. This tool converts each impact into per-share dollars — Stk $'s, Exp $'s, and Prem $'s — and sums them into one score, the Net Strategy Value (NSV), so every listed roll on the option chain can be ranked apples to apples.
Where the data comes from
Quotes, implied volatility, and open interest are sourced from delayed CBOE market data via our data gateway. Premiums use bid/ask midpoints from the live chain when available; probabilities and Greeks are computed in your browser with the Black-Scholes model. Everything runs client-side — the numbers you see are computed on your own device.
What this tool is not
It is not investment advice, a brokerage, or a trading system. All outputs are theoretical models built on delayed data and simplifying assumptions (documented on page). Options trading involves significant risk, and you are solely responsible for your own trading decisions.
Contact
Questions, corrections, or feedback: contact@cashsecuredputs.app
Privacy Policy
Effective date: July 19, 2026
Information we collect
CashSecuredPuts.app does not require accounts and does not ask for your name, email, or any personal information. The position details you enter (ticker, strike, expiration, hurdle rate) are processed entirely in your browser and are not stored or transmitted to our servers. The ticker symbol you enter is sent to our market-data gateway solely to retrieve quotes for that symbol.
Cookies and advertising
We do not set first-party tracking cookies. This site displays advertising served by Google AdSense. Google and its partners may use cookies and similar technologies to serve ads based on your visits to this and other websites, and to measure ad performance. You can learn how Google uses data at policies.google.com/technologies/partner-sites, and manage ad personalization at adssettings.google.com. Users in regions with consent requirements (e.g., EEA/UK) will be shown a consent message before personalized ads are served.
Analytics
We use GoatCounter, a privacy-friendly analytics service, to count page views in aggregate. GoatCounter does not use cookies, does not store full IP addresses, and does not track individuals across websites; it records only anonymous statistics such as page viewed, referrer, browser type, and country. Our hosting provider and data gateway may additionally log standard technical information (such as IP address and request time) for security and reliability purposes.
Children
This site is intended for adults and is not directed at children under 13. We do not knowingly collect information from children.
Changes and contact
We may update this policy as the site evolves; the effective date above will change when we do. Questions about this policy: contact@cashsecuredputs.app