How the scoring engine works

Forward-tracked, not backtested. Every recommendation since April 2026 was logged publicly before the outcome was known.

1. What the engine does

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.

2. The fifteen signals

Each signal adds or subtracts points. Positive signals describe an attractive setup; negative ones are penalties that push a candidate down or out.

SignalWhat it measuresPoints
1Premium % of strikeHow much the contract pays relative to the strike price. The single heaviest signal.up to 40
2Days to expiryHow long until the contract expires. Preferred windows differ for puts and calls.up to 30
3Capital efficiencyLower strike prices tie up less collateral for the same structure.up to 17
4IV rankHow expensive options on this stock are versus their own recent history.up to 10
5VolumeHow actively the contract traded. Thin contracts are harder to exit.up to 5
6Delta alignmentWhether the contract sits in the intended risk band.up to 3
7Support levelsWhether the strike sits near a price the stock has held before.up to +3
8Proven tickerA bonus for tickers with an established record in this system.up to +8
9Market conditionsA broad-market adjustment, applied differently to puts and calls.−10 to +10
10Ticker intelligenceAn adjustment from accumulated per-ticker history.−10 to +10
11Bid/ask spreadTight spreads are rewarded; wide ones are penalised.−8 to +3
12Open interestHow many contracts are outstanding. A liquidity check.−8 to +3
13Covered call momentumA 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
14Earnings proximityA penalty near earnings, and a hard exclusion if earnings fall inside the contract's life. See section 5.0 to −15
15Open position penaltyA penalty only. Discourages stacking more of a ticker already held.0 to −25
0–100 is a ceiling, not a scale

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.

3. Tracked versus declined

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:

ReasonWhat it means
RankingThe setup scored 90+ but other setups of the same type ranked higher that day. Only the top of each list is tracked.
Diversification capThe portfolio already holds the maximum number of positions in that ticker for the rolling seven-day window.
Too many expiriesTwo other expiry dates for the same ticker were already added in this scan. Three per ticker per scan is the ceiling.
DuplicateA matching position (same ticker, strike and expiry) already exists in the portfolio.
BlacklistedThe ticker is excluded from the portfolio on the basis of its own past results. The engine still surfaces its setups for visibility.
Pricing anomalyThe 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.

4. Disclosures

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.

Published results cover trades scoring 90 and above

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.

Per-ticker history pools both trade types

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.

Quote-basis exclusion

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.

5. What the engine does not do

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.

6. How the engine changes

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.

7. Corrections

Corrections to previously published figures are recorded here, with the date and what changed.

Covered call results were overstated

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 publishedCorrected
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.

What changed because of it

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.

Why this is here

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.

Educational content only. Nothing here is financial advice, and none of it is a recommendation to buy or sell any security. Options trading carries risk, including the loss of more than your initial investment. Past performance does not guarantee future results. Figures on this site come from simulated paper trades.
Structure and thresholds described here were last reviewed 30 August 2026.