Optionora
Know when your trade is actually ready. And prove why.
Most trading tools tell you what to buy. Optionora tells you whether the setup you are looking at is complete, which conditions are still missing, and what the historical record actually says about the strategy you are about to run — including when the honest answer is that it has not been shown to work.
Open the Decision Prism → Run the real app See the measured results How we raise accuracy
Python rule engine · 801 tests · React front end · five market-data providers
The problem
A signal you cannot audit is a guess with better typography.
Short-dated single-leg options move fast enough that most of the damage is done before you have finished reading the chart. The tools built for this either fire alerts with no stated basis, or bury the basis so deep that nobody checks it. Either way the trader ends up trusting a number whose provenance they cannot see.
What Optionora is
- A decision-readiness layer: is this setup complete, and which condition is missing?
- A record of what each strategy actually did, net of costs, with intervals.
- A hard separation between real, paper, simulated and research state.
What it is not
- Not a signal seller. It never claims a win rate it has not measured.
- Not an execution bot. It places no orders; market data is read-only.
- Not a backtest that flatters itself. Costs are charged on every trade.
The Decision Prism
A setup is not a signal until every condition has resolved.
Ten conditions feed one verdict. Drag through the session and watch them resolve — the beam only reaches the other side when nothing is still missing. This is the product's whole argument in one control: most of the time, the honest answer is not yet.
Illustrative conditions on the real rule shape: 49 rules, 45 wired, 4 reported unavailable rather than assumed true.
The real thing
Not a mockup. The application, with its backend frozen.
Below is the actual React front end running the actual rule engine output — same components, same rendering, same data shapes — served from a snapshot of real responses captured on 26 August 2026. Nothing is live and nothing can be written; every non-GET request is refused rather than faked. Open Journal for the measured record, or Home for the live decision surface.
The tab worth opening is Journal. It carries 3,554 decisions including the 455 the rules refused, and reports the edge estimate as not established — win rate 53.3% on an interval of 35.8% to 70.8%, expectancy −0.038R, and a stated 57.6% probability there is no edge at all. A control group of vetoed trades is carried alongside the emitted ones, and both are marked too few below thirty outcomes rather than shown as a rate.
It now also answers a question the estimate cannot. That one asks what the mean return is; a trader sizes a position against a different question — where will the next trade land? Adaptive conformal inference gives an interval for it: −1.2R to +2.4R, a 90% target with 87.5% achieved. The method is adaptive rather than the textbook split version because split conformal's guarantee rests on returns being exchangeable, and they are not — volatility clusters and regimes drift, so a quantile calibrated on a calm fortnight is wrong in a violent one, which is exactly when the interval matters. The adaptive step corrects the level from recent coverage error, so the guarantee survives without that assumption.
The interval is valid and nearly useless, and that is the point rather than a defect. Its width is a precise statement of how little 28 resolved trades support, and it narrows with sample size, not with cleverness.
The measured record
Six in ten of these trades lose. The panel says so.
Two trades a day is roughly 500 round trips a year. At 1.3 bps that is about 6.5% of capital annually before a single decision, so a strategy needs ~2.6 bps per day of pure timing edge merely to break even. Every figure below is net, per trade, with a bootstrap 95% interval over 502 sessions of one-minute data.
| Strategy | n | Win | Net bps | 95% interval | Verdict |
|---|---|---|---|---|---|
| SPY open-to-close (benchmark) | 502 | 51.6% | +0.10 | −7.41 … +8.14 | unproven |
| SPY 15-min ORB | 502 | 37.3% | −0.11 | −4.21 … +4.31 | unproven |
| SPY 15-min ORB + trend filter | 407 | 39.3% | +2.50 | −2.45 … +7.78 | unproven |
| QQQ open-to-close (benchmark) | 502 | 52.6% | −0.34 | −10.07 … +9.63 | unproven |
| QQQ 15-min ORB | 502 | 43.4% | +4.45 | −2.29 … +11.88 | unproven |
| QQQ 15-min ORB + trend filter | 383 | 44.1% | +3.54 | −3.07 … +10.65 | unproven |
| IWM 15-min ORB | 502 | 41.2% | −0.06 | −6.85 … +6.86 | unproven |
Not one row clears zero. QQQ's opening-range breakout averages +4.45 bps net per trade and compounds to about +11.9% a year at that frequency — and its interval still runs from −2.29 to +11.88, so the honest verdict is unproven, not profitable. Publishing that is the point. A tool that only ever shows you the strategies that worked is a tool that has told you nothing about the ones that did not.
Win rate is also the wrong headline. SPY's breakout wins 37.3% of the time at a payoff ratio of 1.67, and QQQ's wins 43.4% at 1.54 — a run of losses is the expected shape of this strategy, not evidence it has broken. A panel that hides that turns a normal drawdown into a panic.
Raising accuracy
What actually moved the number, and what still has not.
The interesting question is not "can the win rate be pushed to 80%" — nothing in 502 sessions of measured data comes close, and any tool advertising that number is selling something. The question is which changes move net expectancy in a way that survives a confidence interval. Three have been tested.
A daily-trend filter, which is the one thing that has worked
Restricting direction to the side of the 200-day average — computed from the previous close, so it is known before the session opens — took SPY's breakout from −0.11 to +2.50 net bps per trade and its win rate from 37.3% to 39.3%. It is the only modification so far that turned a losing row into a positive one.
Note what it does not do: it does not make the result proven. The interval still spans zero. It moved the estimate, not the certainty.
Instrument selection, which matters more than parameter tuning
The same strategy on the same dates returns +4.45 net bps on QQQ and −0.11 on SPY. Choosing where to run it is worth more than any exit-grid tweak tested so far — and the exit grid was tested: 109 stop and target combinations, none of which produced a subset that cleared zero.
More history, because the intervals are wide for a reason
These figures rest on two years of one-minute bars. The daily strategy bake-off has twenty-five years, and its numbers are roughly twelve times stronger — the two tables must never be read side by side. Widening the intraday sample is the fastest route to a result that clears zero, and it is the honest next step rather than a better-looking parameter set.
Session decomposition already explains part of the difficulty: the intraday segment measures +1.31 bps/day with an interval spanning zero, against +6.48 bps overnight. A day trader has excluded the only part of the session with reliable drift, so every basis point has to come from timing.
How it is built
The constraints are in the code, not in the marketing.
The hand-written ruleset is immutable input: the engine compiles it, and no part of the presentation layer may reinterpret an incomplete setup as a signal. Real, paper, simulated and research states are structurally distinct rather than a label on the same object, so a research result can never be rendered where a live position belongs.