Cash-secured put calculator — premium yield and return on capital

Compute premium yield, annualized return on cash at risk, and what your cost basis would be if you're assigned. Built for theta-gang and wheel-strategy traders.

Trade Inputs

$
Load chain to populate
Pick an expiration first
$
Auto-fills from chain; override to model your own price
For assignment-risk model

Results

Cash at risk
Strike × shares
Premium income
Premium yield
— annualized ROC
Effective cost basis
— vs current
Breakeven
If assigned
Days to expiry

Payoff Diagram

Ad slot — rectangle

How a cash-secured put works

' + '
Data SourceStored locally on your device.
' + '
' + '' + '' + '' + '' + '
' + '
' + '
' + '
' + '
' + '' + '

Keys saved to localStorage on this device only.

' + '
' + '
'; el.querySelectorAll('[data-prov]').forEach(function (btn) { btn.onclick = function () { setProvider(btn.dataset.prov); mountSettings(el); document.dispatchEvent(new CustomEvent('oit:provider-changed')); }; }); var save = el.querySelector('#oit-save-keys'); if (save) save.onclick = function () { setKeys({ polygon: el.querySelector('#oit-key-polygon').value.trim(), tradier: el.querySelector('#oit-key-tradier').value.trim() }); localStorage.setItem(TRADIER_ENV_KEY, el.querySelector('#oit-tradier-env').value); save.textContent = 'Saved ✓'; setTimeout(function () { save.textContent = 'Save'; }, 1500); document.dispatchEvent(new CustomEvent('oit:keys-changed')); }; } Connector.mountSettings = mountSettings; // Expose connector on multiple globals (different scripts in the project expect different names) global.DataConnector = Connector; global.OITApi = Connector; global.OIT = global.OIT || {}; global.OIT.api = Connector; })(window);