ThetaTracker Pro · Decision Support
You do not need to know what delta is to use this tool. You need to know what you are trying to get done.
Roll Choices and New Position both open on a plain question at the top: What are you trying to get done? Answer it, say where you want to start, press the search button, and read two cards. The rest of the screen is there when you are ready for it.
Guided is a short list of steps, in order. On Roll Choices: 1 tick the position you want to work on (the list shows each short with what protects it, and the one closest to expiry is ticked for you; a line under it says how many shorts it is showing and how many a department filter is hiding, and Open the settings there lets you tick another department or search against a position you do not hold); 2 choose what you want to get done; 3 optionally pick a starting point; 4 optionally pick a search style (Cautious, Balanced or Aggressive); then press the one Find button. The answer opens right under the button and the page scrolls to it. New Position follows the same order, with the structure, the underlying and the number of contracts asked on the same screen. The old settings form, the long how-to text and a second Find button are not on the Guided screen; they are in Explore and Full control, and Show the settings opens the form in place if you need it once.
| Your goal | What it does |
|---|---|
| Roll a position | A short you hold is near expiry or under pressure. The engine prices every roll and ranks them. |
| Add a position | You want new inventory. The engine searches the live chain for the structure you pick. |
| Balance my delta | Your account leans too far one way. The standout is the row that moves your whole book closest to the middle of your delta range. |
| Bring in cash | The standout is the row that collects the most credit. The cards also show what that credit costs in risk. |
| Protect buying power | The standout frees the most buying power (a roll) or ties up the least cash (a new position). |
| Lessen a loss | The standout is the row that collects the most credit or costs the least, since that is what shrinks the hole. |
A goal never changes the engine's numbers. It tells the screen which row to feature as the standout for you, and which structures to suggest next.
To buy more time on a protective long put, choose the tile Roll my long on the first screen. You do not need Explore or any form. Tick the position in the list at the top (each line shows the long that protects the short; a short with no long says so), then press Find the best roll for this long. Three cards come back, each priced the same careful way as everywhere else (closing your long at the bid, opening the new one at the ask): the cheapest per week of time bought, the cheapest that keeps your strike, and the roll that frees the most buying power while staying inside your weekly limit. Each card gives the new strike and date, the days added, the total cost, the cost per contract per week against your limit, and what the roll frees or uses in buying power. Choosing Roll a position again puts the tool back on the short. Explore shows every row the cards were picked from.
Every trade has a few dials: a strike, an expiration, a credit and a risk level. Fix one and the others fall into place around it. Pick the one you already know:
After the search you see Best overall: the highest score the engine found. It is always shown, whatever you chose. If you chose a starting point, a second card, Your starting point, shows the best row that fits it. Under the two cards a short note says which one wins on what: cash, buying power, how far from the money the short sits, and time. If the two are within 5 points the note says they are effectively tied.
| Level | What you see |
|---|---|
| Guided | The two cards with cash in or out and buying power, a plain-words note, and the structure cards. The filter forms and the engine's tables are tucked away. Show the full table opens the table in place and Show the settings opens the form in place; neither changes your level, and each button turns into Hide when it is open. To change level, use the Guided, Explore and Full control buttons at the top of the screen; the Find button also says which level you are on. |
| Explore | Opens with one plain sentence about what the tool does. Adds delta (assignment risk), the 0 to 100 score, the full table of rolls or positions, and the filters: the position picker, the on/off criteria and the search style. |
| Full control | Adds days added, the requirement after the roll, the engine's own description of the search, the long “How to read this tool” text, and the Advanced settings (pricing, search depth, portfolio steering, net credit range and buying power ceiling). |
Your level is remembered separately for Roll Choices and New Position, so setting Explore in one never changes the other. Nothing about the search changes between levels; only how much of it you see.
Under the results, a row of cards teaches each structure: what it is, when it pays, when it hurts. Ones that fit your goal are marked. The live structures are rolls, credit call and put spreads, debit call and put spreads, iron condors, strangles, straddles and Weekly Income sets. A single long call or put is marked Coming soon: it is not priced by the engine yet, so the card teaches it without offering a search.
Tap a structure on the New Position screen and the form sets itself to search for it.
Guided hides the filter boxes, so a limit you saved earlier (a strike range, a cash range, a ceiling) could empty a search with nothing on screen to explain it. The screen now lists Limits in force in plain words, and each limit that can empty a search has a Remove button that switches it off exactly as unticking its box would. On Roll Choices that covers the cash in or out, the buying power freed, the delta band and the margin cap. When the search comes back empty, the same list appears under Nothing passed your limits, together with a Closest to passing card for the single nearest row and what it misses by. Removing a limit after an empty result runs the search again for you.
If you like to keep your whole book near neutral and lean it up or down as the market asks, choose the goal Balance my delta. The screen then shows your book's delta right now and three buttons: Lean down, Neutral and Lean up. Neutral is a range from about −500 to +500; Lean up is 0 to 1,000; Lean down is −1,000 to 0. Two boxes let you type any range of your own. The range is shared by Roll Choices and New Position and is remembered. Choosing the goal also turns on steering: rows that pull your book toward the range score higher, so Best overall can change. Untick it and the range only filters.
When you roll a long option, each row shows what the roll costs per contract, per week of time it buys: the net cost divided by contracts, divided by the weeks added. It turns green with inside your limit or red with over your limit. The limit is the weekly limit set in the Roll Watch settings (starting at $100). A roll that pays you shows a credit, so no weekly cost, and a roll that buys no time shows buys no time. This lets you compare a short extension with a long one on the same footing.
Roll Watch now shows, for each long it watches, the buying power the best roll frees or uses. Rolling to a lower strike widens the spread and uses buying power; rolling to a higher strike narrows it and frees some. Below the best roll it also shows the best roll that moves the strike up and the best that moves it down, when they differ from the best overall. Two boxes in the Roll Watch settings, The strike may move up and The strike may move down, let you leave one direction out. They only matter when Strike may move is above zero. A third box, Watch Weekly Income longs only (on by default), keeps put credit spreads that sit in other departments off the radar; a note under the table says how many longs were skipped.
Roll Watch has three levels too, remembered on their own. Guided shows the one switch (Watch my longs), Check now, and the table of your longs with the best roll for each. Explore adds desktop alerts, email watching while you are away, the settings that decide when it speaks, and the recent alerts. Full control adds the long explanation of how it works. The buttons at the top of the screen change the level.
A box above the results on Roll Choices and New Position answers one question: if the market gapped down, would the account stay inside the loss you can accept? See Part 19 for how it works.
Five steps, then the rest of this guide explains why.
| Search style | Delta band | What it means |
|---|---|---|
| Cautious | 0.05 – 0.15 | Short strikes further from the money. Smaller premium, lower chance of finishing in the money. Target 0.10 |
| Balanced | 0.08 – 0.25 | The starting point, and the middle of what the author's own history used. Target 0.15 |
| Aggressive | 0.15 – 0.35 | Short strikes nearer the money. Bigger premium, higher chance of finishing in the money. Target 0.25 |
Narrower than a scanner, wider than it used to be.
Give it one position you hold. It returns ranked ways to roll one leg of it, each already priced against the live chain and tested against your live account.
| It does | It does not |
|---|---|
| One position at a time | Scan the whole book for trouble |
| Puts and calls, either leg | Handle condors, strangles, or stock |
| Any department you hold shorts in | Pair legs across departments |
| Judge against live portfolio state | Judge the roll in a vacuum |
| Rank, group and explain | Place, stage, or recommend an order |
| Quote rates measured from your history | Forecast what the market will do |
Which leg moves changes everything else about the search.
At the top of the panel, which leg moves. The two are not settings on one search — they are different searches, because a defensive roll and an opportunity roll are judged on opposite things.
| Short leg — defense | Long leg — opportunity | |
|---|---|---|
| Why you are here | Something has gone against you | Protection has got cheap |
| Precondition | Must be in defense territory, or nothing is enumerated | None. The position is healthy by definition |
| Money flows | Usually a credit in | Usually a debit out |
| Judged on | Credit, buying power, delta — three criteria you switch on and off | Value per dollar, measured differently for each shape |
| Delta band | Applies to the short leg's own delta | Does not apply. It was calibrated on short puts |
| Timing signal | The position itself | VIX low and the index high |
Structure builds the list. A department filter narrows it.
Every short option you hold appears — puts and calls, any department — paired with the nearest long beyond it in the same department.
A long is beyond a short when it sits further from the money on the same side: below for puts, above for calls. Of those, the engine takes the nearest — the highest long below a short put, the lowest long above a short call — because that is the leg that actually bounds the risk.
The long must be in the same department as the short. A Protection long was bought to protect the book, not to cap an Other Income short, and pairing them would report a width and a requirement for a spread that exists only in the engine's head.
A short with no long on either side is listed and flagged undefined-risk, not hidden — it is the position most likely to need a roll. Width and requirement read as unavailable, and the engine declines to enumerate until you enter a bound by hand, rather than pricing against a leg that does not exist.
Because the pairing is derived rather than stored, everything questionable about it gets its own sentence when you select a row: a long from another department that was passed over, legs on different expirations, a long covering fewer contracts than the short, and one long claimed as the nearest leg by two shorts — at most one of those pairings can be real.
The requirement formula changes with the shape. Getting this wrong is not cosmetic.
One quantity carries all of it: the signed width.
Positive width is a credit spread: the long is the far leg and the risk is defined by the distance between them. Negative width is inverted: the long sits on the near side, the structure is a debit spread, and it cannot lose more than it cost.
| Shape | Requirement | Reading |
|---|---|---|
| Credit spread | width × 100 − credit taken | Defined risk. The number your broker charges |
| Inverted | the net debit | Modelled, not quoted — brokers differ on how they margin it |
| Undefined | — | No long leg. Nothing bounds the loss and no width exists |
Opening the long above the short buys weeks of fully covered weekly income. The short rolls up in strike each week chasing premium, closing the gap from below; while the long stays above it, a breach is harmless because the long is deeper in the money than the short is.
When the short passes the long it reverts to an ordinary credit spread, and width and buying power start binding again. The inversion is a runway, and placing the long high is buying weeks of it.
Premiums are per share. Everything the engine reports is in dollars.
What the roll puts in or takes out. Positive is a credit.
The general definition is simply how much the requirement falls:
For a short-leg roll where both states are credit spreads that reduces exactly to the familiar two-term form — and the strike term mirrors by right, because a short put frees buying power by rolling down and a short call by rolling up. Both are "move the short further from the money and the spread narrows."
The general form is used because it is the only one that stays right when the basis changes — crossing out of an inverted state switches the requirement from a net debit to a width, and no single formula spans that.
The journal stores position delta, which is why a short put reads positive and a short call negative. The swing is computed on signed contributions, not magnitudes — identical arithmetic for puts, and the opposite sign for calls.
Haircut 100% by default, on both modes.
At full haircut the engine assumes you pay the ask to close and take the bid to open. Mid is shown alongside but never gated or ranked on.
Turn the haircut down to see the optimistic case, by all means — but rank on the number you can actually fill.
Short-leg mode only. It exists so the engine never manufactures a roll.
Before a single chain is requested, the position must be in defense territory. Any one of these is enough:
The short is breached. Spot below the strike for a put, above it for a call. Mirrored, because a short call is breached from the other side.
Within 1% of the money, approaching from the side that matters for that right.
Delta at or above the band ceiling — 0.25. The number that says "too much delta to hold" is deliberately the same number the band rejects on, rather than a second constant.
At the weekly roll point and underwater — seven days or fewer, with the position at a loss.
Refusing costs nothing: the check runs before any chain call, so a position that was never a candidate does not spend fifteen metered requests to tell you so. If you want to plan against a healthy position anyway, tick search even if not in defense; the result is labelled a planning run so it can never be mistaken for a defensive one.
One chain call per expiration, against a metered vendor. So the set is chosen, not swept.
Every expiration the engine considers costs a real request to ThetaData. The duration ceiling decides how far out it will look, the chain cap decides how many of those it will actually pay for, and one expiration is exempt from both.
The failure this rule exists for. A put credit spread, short 755 and long 752, both expiring 12/31/2026 — 106 days out. The ceiling defaulted to 90. Every expiration inside 90 days was loaded and paid for; the position's own was not, because 106 is more than 90. With no quote for the leg being bought back, every candidate's credit was unknown, and the panel refused with all of that work already spent.
The ceiling is now 150 days, and the held expiration is exempt from it. But 150 is still a number, and the exemption — not the larger default — is what makes the panel safe on a position you opened a long way out.
An expiration is identified by its date. That sounds like pedantry and is not: the ThetaData bridge computes days-to-expiry on its own server and the journal computes its own in your browser, so the two disagree whenever they land either side of a midnight. Matching a leg to its own chain on those two numbers being equal works almost always, which is worse than working never — it fails silently, on a day you cannot predict, and the symptom is a panel that says it cannot price your position.
A roll to an earlier expiration than the one you hold is shown, with the days as a negative and a warning that it shortens duration. It is not a defensive roll — it collects less and buys no time — but it is a real trade: it is how a position opened months out gets brought back onto a weekly cadence. Calling that a restructure rather than a defense is the whole point of showing it labelled instead of hiding it.
| Direction tag | What it says about time |
|---|---|
| down and out | Strike lower, expiration later. The classic defensive roll |
| up and out | Strike higher, expiration later. Income, or an inverted position buying runway |
| down | Strike lower, same expiration. No time changes hands |
| pure time | Same strike, later expiration. You are buying days and nothing else |
| down and in / up and in | Expiration earlier. A restructure — you are giving time back |
| same strike, shortened | Same strike, earlier expiration. Rarely what you meant |
At a 150-day ceiling XSP can list fifty expirations, and fifty metered calls per search is not a reasonable price for one answer. Above the chain cap the list is sampled: the expiration you hold, the nearest, the furthest, and an even spread between. The footer states how many of how many were used, so a thin-looking result set can always be read back to the number of chains that produced it.
Short-leg mode. Your priorities change with the market, so they are inputs.
Credit/debit, buying power and delta each switch on to filter or off to leave the decision — and their values still show on every row either way. One is nominated lead and sorts the results.
| Criterion | Default | What switching it off means |
|---|---|---|
| Credit / debit | min 0, no max | Debits become findable. Set a negative min to allow one down to a limit |
| Buying power | min 0 | Rolls that consume buying power are shown |
| Delta | 0.08 – 0.25 | Strikes outside the band appear, with their delta stated |
Liquidity and the resulting margin cap are standing guards, not criteria. They are about tradeability and absolute risk rather than preferences that shift with the market, so they sit apart and stay on by default. A bid-ask spread wider than 10% of mid is rejected — but never a spread of ten cents or less, on percentage alone.
The single most important behaviour in the engine, and it runs both ways.
A roll can free buying power, collect a fat credit, pass the credit-and-buying-power test completely — and leave you in a worse position. This is the worked example the whole gate structure was built around.
Short 5600 put over a 5400 long, spot 5580 — breached. Roll the short up to 5620 and out 45 days:
It pays you $3,500 and frees $1,500, and it moves the short deeper into the money. The delta band is the only thing standing between you and it.
Short 5600 call under a 5800 long, spot 5620 — breached from above. Roll the short down to 5580 and out. Identical arithmetic, opposite direction: −$2,000 of width, +$3,500 of credit, +$1,500 freed, delta 0.42, rejected.
"A few extra weeks" is computable, from your own rolls.
For an inverted position, the useful readout is not "in defense territory" but how many more weeks of covered income the structure has left.
Each roll's new contract is chained to the next roll that closes it, giving a lineage: one short, tracked through however many rolls it took, over however many days it actually took. How far that strike travelled, divided by the elapsed weeks.
| Filter | Rolls | Lineages | Median |
|---|---|---|---|
| All XSP put rolls | 196 | 21 | +3.07 pts/wk |
| Only those still routed to Weekly Income | 54 | 6 | +3.54 pts/wk |
Two filters sharing no selection logic, agreeing at about three points a week. That agreement is the reason to trust the number.
An 8-point gap at 3.07 a week reads "Runway 2.6 weeks to crossover", with the gap, the rate, and the sample size stated — and labelled a historical drift rate, not a forecast. Every candidate row also carries the runway it would leave, which is the number that actually decides between two inverted rolls.
Opportunity, not defense. The short is held and the long moves.
Strike up or down, with or without a change of expiration — one grid, no direction filter. Your 68 long rolls went up 43 times, down 15, and held strike 11, so a mode that searched only upward-and-outward would miss a quarter of what you do.
Because the shapes buy different goods, results come back grouped, each sorted by its own metric in its own direction. Ranking them all on one number would hide the thing worth seeing.
| Shape | What a dollar buys | How it is scored |
|---|---|---|
| Narrows the spread | buying power | width removed per $1 — break-even at 1.00× |
| Narrows and buys days | both | the ratio is shown; no pass/fail is issued |
| Buys time outright | days | cost per day |
| Buys time by giving up width | days, paid for twice | all-in cost per day, counting the surrendered width |
| Takes cash out | nothing — it sells protection back | cash, with what it gives up stated beside it |
And the finding that makes this mode worth opening.
Width and days cannot be compared without an exchange rate between them — and there is one in your history: the rolls where the strike did not move, so a day is the only thing being bought.
Tight enough to use. With it, every shape collapses to one all-in ratio: what a dollar bought, counting both width and time, against what it cost, counting both cash and width given up. Below three samples the engine quotes nothing and reports width and days separately.
The same-strike group's own ratios cluster at 1.00× by construction, since the rate is its median. Stated rather than hidden.
| How the time was bought | Median, per contract |
|---|---|
| Rolling out at an unchanged strike | $13.02 a day |
| Rolling down and out — trading floor height for time | $25.33 a day, all-in |
Roughly double, and all ten of those rolls priced below your own going rate for a day. It hides in the cash: two of them were outright credits — money in, time gained, free on the cash line and the dearest time in the book once the surrendered floor is counted. That comparison was not previously possible, because the two shapes had never been measured in the same terms.
Shown, never gated.
Long-roll results open with VIX and the index, each with its percentile against its own last year.
A bare "VIX 14.2" means nothing without knowing whether 14.2 is low. The percentile is the smallest honest way to say it.
You are buying the price difference between two strikes. When the market has run away from your floor, both strikes sit further out of the money where premium is thin, so moving up ten points costs less. A low VIX thins both further. Rolling up while the market is high also locks in a higher floor than you could afford later.
Rejected candidates stay visible. That is the point.
| What you see | What it means |
|---|---|
| credit + BP freed | Cleared every enabled criterion and satisfies credit ≥ 0 with buying power freed |
| accepted | Cleared everything you asked for, but does not pay a credit and free buying power — a deliberate debit, most often |
| minimal buying power relief | A survivor that frees almost nothing next to the best available. Said plainly rather than badged as passing |
| delta above / below band | The specific rejection worth reading. Above is the dangerous direction |
| delta unavailable | No delta came back for that strike. Not a delta of zero |
| inverted | Negative width. A debit spread, margined on the net debit |
| net debit · modelled | The requirement is modelled rather than quoted — brokers differ |
| ⚠ no long cost on file | An inverted requirement is the long's cost. Without it the figure is understated |
| ⚠ shortens duration | The expiration is earlier than the one you hold. A restructure, not a defense |
| clears break-even | Long mode: removed more width than it cost |
| below your going rate | Long mode: bought time above $13.02 a day, all-in |
The footer always states what actually filtered, what was ranked on, the haircut, the number of metered calls made, and your measured strike drift — so a surprising result set can be read back to the settings that produced it.
An empty result should teach what your book will permit.
It never goes dark. When nothing clears, the nearest misses are shown with how far outside each one sits — so the answer to "why nothing?" is a distance, not a shrug.
Read this list as carefully as the rest.
It does not place orders. Nothing it shows you is staged, routed or transmitted anywhere.
It does not predict. Every rate it quotes is a historical measurement of your own filled trades, labelled as such. Your strikes drifted +3.07 a week; they are not required to keep doing so.
It does not model early assignment, dividends or pin risk.
It does not quote your broker's margin. A defined-risk requirement is arithmetic and will match. An inverted requirement is modelled as the net debit, and brokers differ — check yours before sizing on it.
It does not pair legs across departments. If two legs belong together, route them together.
It does not scan the book. One position at a time, chosen by you.
It does not see every expiration. Above the chain cap the surface is sampled, so a candidate can exist that was never loaded. The footer always says how many of how many.
It does not calibrate a call delta band. There is no short-call population in your history yet. The put band is borrowed and says so.
Roll Choices ranks rolls of a position you hold. New Position searches the chain for one you do not.
How much cover is enough, worked out from your own positions.
A fixed rule such as "one protection spread for every five positions" ignores what you actually hold. The Protection check replaces it with arithmetic: it reprices your whole book for a market gap and compares the loss with a limit you set.
The check reads the VIX the screen already fetches and compares it with your buy level (16 to start). At or below it, protection is cheap relative to the last year and the screen says so. Above it, protection costs more and the screen suggests buying part of the amount or waiting. Nothing is blocked either way.
If a protection spread has 14 days or fewer left, the screen reminds you to roll it only if the roll pays you a credit, and otherwise to let it go and buy again when volatility is low. The Protection check counts only the protection spreads you have routed to the Protection department.
Find the protection spread opens New Position as a debit put spread, with the days, the width and a bought-leg delta of about 0.50 already filled in. The normal engine then prices real quotes and ranks them. You choose.
A Protection Check tile sits between Protection and Other Income in the department row. It shows the same gap loss, the limit and the number of protection spreads needed. Click it to open the Market Drop Check.
| Setting | Starts at | What it does |
|---|---|---|
| Gap tested | 10% | How far the market is assumed to fall. A bigger gap shows a bigger loss. |
| Loss limit | 15% of the account | The loss you can accept. A tighter limit needs more protection. |
| Buy when VIX is at or below | 16 | Your line between cheap and dear protection. |
| Width | 50 points | Distance between the two puts of the protection spread. |
| Days out | 90 | How long the protection spread has to run. |
For the full picture, open Tools › Market Drop Check. It shows eight market moves (−20%, −15%, −10%, −5%, −2%, +2%, +5%, +10%) and what each would do to your whole account, in dollars and as a percent of the account, two ways: repriced right now, and held to expiry, where every option is worth only what it is in the money. The held-to-expiry column understates the protection from a long put that still has months to run.
Under the first note the Market Drop Check now gives a verdict against your loss limit: it uses the same fall and the same limit as the Protection check, so the two always agree to the dollar. It says Adequate (the fall costs less than your limit) or Not adequate (over it, by how much), and when it is not adequate it offers Find the protection spread. To change the fall or the limit, use the boxes in the Protection check on Roll Choices or New Position.
The page to keep.
| Setting | Default | If you change it |
|---|---|---|
| Haircut | 100% | Lower shows the optimistic fill. Rank on what you can fill |
| Search style | Balanced | Cautious 0.05 – 0.15, Balanced 0.08 – 0.25, Aggressive 0.15 – 0.35 |
| Delta band | 0.08 – 0.25 | The gate that rejects most. Target 0.15 |
| Quote life | 90 seconds | Older quotes are dropped. Press Refresh quotes |
| Duration ceiling — short | 150 days | An absolute cap from today. Your own expiration is exempt |
| Duration ceiling — long | 400 days | Longs run far further out; one of yours added 169 days |
| Max chains — short mode | 14 | Each one is a metered call. Above this the list is sampled |
| Max chains — long mode | 12 | Each one is a metered call. Above this the list is sampled |
| Buying-power floor | $0 | Auto-raised when BP used is over your warning level |
| Margin cap | 1.5 × current | Blank means 1.5×, not zero |
| Liquidity guard | 10% of mid | Never rejects a spread of $0.10 or less |
| Break-even floor — long mode | 1.00× | Width removed per dollar spent |
| Example figures from the author's history | Value | Sample |
|---|---|---|
| Strike drift | +3.07 pts/wk | 21 lineages across 196 rolls |
| Price of a day | $13.02 /day /contract | 9 same-strike roll-outs, 1.6× spread |
| Roll-up value | $4.24 per $1 | 32 rolls, $94,500 of width for $22,309 |
| Down-and-out, all-in | $25.33 /day | 10 rolls, all above the going rate |
| Delta band | 0.08 – 0.25 | 121 short-put observations. Borrowed on calls |