WheelHouse runs a scan on a fixed schedule and looks at options contracts on a watchlist of stocks. For each one it considers two kinds of trade: a cash secured put, where you agree to buy a stock at a set price and get paid for the promise, and a covered call, where you already own the stock and get paid for agreeing to sell it at a set price.
Every candidate is scored from 0 to 100 on fifteen signals: things like how much premium the contract pays relative to the strike price, how many days remain until expiry, and how liquid the contract is. The score is a summary of how good the setup looks at that moment.
The important part is the order of events. The score is published before anyone knows how the trade turns out. Nothing is scored after the fact, and no past score is ever rewritten. That is the whole point: a track record only means something if the predictions were recorded first.
Each signal adds or subtracts points. Positive signals describe an attractive setup; negative ones are penalties that push a candidate down or out.
| Signal | What it measures | Points | |
|---|---|---|---|
| 1 | Premium % of strike | How much the contract pays relative to the strike price. The single heaviest signal. | up to 40 |
| 2 | Days to expiry | How long until the contract expires. Preferred windows differ for puts and calls. | up to 30 |
| 3 | Capital efficiency | Lower strike prices tie up less collateral for the same structure. | up to 17 |
| 4 | IV rank | How expensive options on this stock are versus their own recent history. | up to 10 |
| 5 | Volume | How actively the contract traded. Thin contracts are harder to exit. | up to 5 |
| 6 | Delta alignment | Whether the contract sits in the intended risk band. | up to 3 |
| 7 | Support levels | Whether the strike sits near a price the stock has held before. | up to +3 |
| 8 | Proven ticker | A bonus for tickers with an established record in this system. | up to +8 |
| 9 | Market conditions | A broad-market adjustment, applied differently to puts and calls. | −10 to +10 |
| 10 | Ticker intelligence | An adjustment from accumulated per-ticker history. | −10 to +10 |
| 11 | Bid/ask spread | Tight spreads are rewarded; wide ones are penalised. | −8 to +3 |
| 12 | Open interest | How many contracts are outstanding. A liquidity check. | −8 to +3 |
| 13 | Covered call momentum | A penalty only. A stock in a strong uptrend is a poor covered call candidate, because the shares get called away just as they run. | 0 to −15 |
| 14 | Earnings proximity | A penalty near earnings, and a hard exclusion if earnings fall inside the contract's life. See section 5. | 0 to −15 |
| 15 | Open position penalty | A penalty only. Discourages stacking more of a ticker already held. | 0 to −25 |
If every positive signal fired at once the total would be 140, not 100. The engine takes the sum and clamps it into the 0–100 range, so a score of 100 means the total hit the cap, not that every signal was perfect. Several different combinations of signals reach 100, and the score alone does not tell you which one you are looking at.
Scoring a setup and acting on it are separate steps. Every setup that scores 90 or above is published on the daily board, but only some are added to the tracked portfolio. The rest are shown with the reason they were held back, because a system that only publishes what it acted on is not a record. It is a highlight reel.
Tracked means the setup was added to the paper portfolio and its outcome will be recorded when it closes or expires. Declined means the engine flagged it but a portfolio rule held it back. These are the reasons:
| Reason | What it means |
|---|---|
| Ranking | The setup scored 90+ but other setups of the same type ranked higher that day. Only the top of each list is tracked. |
| Diversification cap | The portfolio already holds the maximum number of positions in that ticker for the rolling seven-day window. |
| Too many expiries | Two other expiry dates for the same ticker were already added in this scan. Three per ticker per scan is the ceiling. |
| Duplicate | A matching position (same ticker, strike and expiry) already exists in the portfolio. |
| Blacklisted | The ticker is excluded from the portfolio on the basis of its own past results. The engine still surfaces its setups for visibility. |
| Pricing anomaly | The quoted premium and the calculated premium disagreed, so the setup was not tracked rather than tracked on a number that could not be trusted. |
A seventh outcome, below_score, exists in the engine for setups under the tracking threshold. It never appears on the board, because the board only shows setups scoring 90 and above.
These are the things a reader would otherwise have to reverse-engineer from the data. They are stated here because the daily board does not state them.
The tracking threshold has not always been 90. It was raised to 90 on 14 April 2026. Trades recommended before that date ran under a looser rule, and they are excluded from the published track-record figures. Nothing scoring below 90 has been logged since 14 April.
This matters more than it sounds. The pre-14-April trades are a launch-period batch scored under different rules, so any figure that pooled them with current ones would be describing two different engines at once. The published figures describe the engine as it runs today.
Where the site shows a history line for a single ticker (a win rate and a running total), that figure combines cash secured puts and covered calls into one number. They are different trades with different risks, and the per-ticker line does not separate them. Read it as a summary of everything done on that ticker, not as a verdict on either strategy.
A defect in the engine, fixed on 8 June 2026, meant that for earlier trades the premium used to score a setup and the premium recorded when the trade opened were taken from two different prices. The recorded outcome is unaffected, because it was always calculated from the same price the trade used. What changed is the basis of the score itself.
Affected trades are flagged rather than deleted or rescored: 32 as quote_basis_severe (the two prices differed by more than 5%) and 49 as quote_basis_moderate (3–5%). Published scores are never rewritten, because a score that was published before the outcome was known is a matter of record even when the method behind it later improves.
The flag is currently applied when building the signal-performance dataset. It is not applied to the headline track-record figures, which include these trades.
The score describes an options setup, not a company. The engine reads prices, volatility, liquidity and dates. It does not read financial statements, revenue, debt, margins or valuation, and it has no opinion on whether a business is good or a stock is cheap.
A score of 100 means the setup is attractive and nothing in the engine's checks is flagging. It is not a recommendation to own the company. If you would not want to hold a stock, a high score on its options does not change that: with a cash secured put, being assigned means buying the shares.
Two specific limits worth naming:
Earnings are refused outright. If a company reports earnings before the contract expires, the setup is excluded entirely: not penalised, not scored lower, but removed from consideration. A separate penalty applies when earnings fall shortly after expiry. The engine will not take a position across an earnings announcement.
There is no view on direction. The engine does not forecast whether a stock will rise or fall. It assesses whether an options setup is well-priced and well-structured, which is a different question and a narrower one.
All results published on this site are simulated paper trades, not real money.
The fifteen signals and their weights were chosen by judgment, not fitted to data. That is deliberate. An engine tuned on its own history will look good on that history and prove nothing. But it means the weights are a starting hypothesis, and the point of publishing every score before the outcome is to accumulate the evidence that tests them.
The rule is that weights change on evidence, not on hunches. A change requires a stated reason, a measurable prediction of what it should do, and enough closed trades for the measurement to mean anything. Any change is recorded in the corrections section below, with the date and the reasoning. No past score is rewritten to match.
A first review of signal performance was scheduled at 300 closed trades and has begun. What it finds will be published here whether or not it supports the current weights.
Corrections to previously published figures are recorded here, with the date and what changed.
Corrected 5 September 2026.
A covered call is two positions held together: 100 shares of a stock, and a call option sold against those shares. Until now this site recorded only the option half.
That produces a specific error. When the option expired worthless or was bought back cheaply, the trade was recorded as a gain, even in cases where the shares had fallen by more than the premium collected. The position lost money and the record said it made money.
Cash secured puts are not affected. A cash secured put has no share position, so the option result is the whole result. Those figures are unchanged.
Measured on closed trades scoring 90 or above, as of 5 September 2026:
| As published | Corrected | |
|---|---|---|
| All closed trades (356) | +$118,262 · 83.7% | +$103,951 · 74.4% |
| Cash secured puts (254) | +$110,272 · 87.4% | Unchanged |
| Covered calls (102) | +$7,990 · 74.5% | -$6,321 · 42.2% |
The entire difference is covered calls. On the corrected basis that book is a loss rather than a profit, and fewer than half of those trades made money.
The correction applies to every covered call in the record, not only those at 90 and above. Trades scoring below 90 also move, and they move upward: those bands were recorded as losses and are profits on the corrected basis.
Those bands are not a fair comparison and should not be read as one. Every trade below 90 was opened between 2 and 14 April 2026, before the scoring floor was raised, so they are a two week window rather than a track record. They also hold a much higher share of covered calls than the 90+ population, which is why the accounting change moves them further. The figures above are scoped to 90 and above because that is what the engine recommends today.
These figures are a snapshot taken on the date above and are not updated here. Current totals are on the receipts page. The correction is being applied across the site one surface at a time, so some pages may still show the old basis for a short period.
On 30 August 2026 new covered calls stopped being added to the tracked portfolio. They are still scored and still appear on the daily board, tagged as paused.
The reason comes from the same analysis. The engine scores a covered call on how well the sold call is likely to perform, and a sold call performs best when the stock goes sideways or falls. So a higher score reliably selected for a weaker stock, and the shares are most of what a covered call is worth. The engine scored the option side heavily, and where it did consider the stock it counted a rising price against the trade, which is the direction a covered call needs. So it was good at one half of a two part position and was working against itself on the other. Cash secured puts are unaffected and continue as normal.
Section 6 of this page says that what the signal review finds will be published whether or not it supports the current weights. This is the first thing it found.