RISK PER TRADEapplies to every figure on this page
The Book
PROGRESS TO GOAL—
——
Check a Potential Investmentmodelled, not promised
1y20y
Default 8.2% is the corrected US_BROAD backtest, measured at 1% risk. It is an estimate, not a rate anyone is offering you.
Returns by Capitalat 8.2%/yr
CAPITAL
AVG WEEKLY
AVG MONTHLY
AVG YEARLY
P(PROFIT) 1Y
P(DOWN) 1Y
P(LOSE HALF)
P(NEAR ZERO)
Loading…
GamblingBETA — EMPTY
Reserved. Nothing is implemented here yet and nothing on this page
is wired to the trading engine, the paper session, or the IBKR
execution path.
Connection
Data Farms
Paper Account
Not loaded. Requires a connected gateway.
Data Quality — IBKR vs yfinancethe reason this tab exists
Every backtest figure in this project inherits whatever yfinance got wrong, and until
now that has been an assumption rather than a measurement. This pulls the same window
from both sources and differences them. If they agree, the coverage matrix stands and
IBKR buys us only bid/ask and realistic fills. If they diverge, the matrix needs
rebuilding on better bars.
What this tab cannot do.
It cannot place an order — paper or live. The backend module contains no order-placing
code, and refuses to connect to the live-trading ports (7496 / 4001) at all. Connecting,
reading the account summary and pulling bars are the only three things it does.
Order routing stays in the broker adapter, which is still a dry-run stub.
STRATEGY RESEARCH
Nineteen rounds, one verified edge.
—BACKTESTED TRADES
—COMBINATIONS TESTED
—NET-PROFITABLE
—BEST VERIFIED PF
PROFIT FACTOR ACROSS THE RESEARCH
verified, net of costsclaimed, no costsbreak-even
Findingsclick any row for the evidence
How It Fits Togethersignal to fill
MODULE DEPENDENCIES
Hover any module to isolate what it talks to·circle size = functions and classes inside·line weight = number of calls between
The same pattern generators feed both the backtester and the live paper engine —
which is what makes the live-vs-backtest comparison above meaningful rather than a
comparison of two different systems. The broker layer is a stub: nothing places a
real order.
Coverage Matrix
Every pattern against every market, 5 years of daily bars, 8 concurrent positions,
$25,000, run twice — once gross and once with the real fee schedule. The gap between
the two is the whole story. Cells are coloured by net profit factor against a
break-even midpoint; each prints its own number, so the colour only reinforces.
MARKET
SORT
losesbreak-evenprofits
Variable Registry ADMIN
Every constant and variable the strategy actually reads, where it lives in the code,
and whether its value has ever been checked. Sweeps are one-at-a-time with everything
else held at its deployed value — a full grid over eight parameters is about a hundred
thousand runs and would surface a "best" combination almost entirely curve-fit to these
five years. The narrower question is the useful one: is the deployed value defensible,
or did it simply never get looked at?
Live vs Backtestthe open question
Live results sit above the backtest in every comparison. Not one is statistically
distinguishable from noise — confirming the VWAP gap needs about 264 closed trades
and there are 22; the EMA_PB gap needs 96 and there are 3.
Project History
Archived — Superseded Claims
kept, not trusted
These are the figures the page used to lead with. Each is kept beside the reason it
no longer stands. Rounds 9–19 also ruled out the approaches below, and those
exclusions still hold — a negative result costs the same to earn as a positive one.
RULED OUT, STILL RULED OUT
Leaderboard
Combo Optimizer
Market Heatmap
— results
#
Ticker
Sector
Best Pattern
Win Rate ↓
Frac W/L
Profit Factor
Pseudo-Sharpe ⓘ
Total PnL
Trades
Max DD
◉
Run Scanner
Select your universe and click SCAN ALL STOCKS
——
Ranked by edge score across all scanned stocks. Higher trade count = more statistically significant.
◈
No Data Yet
Run the scanner to score pattern combinations
——
Low → High
⬡
No Data Yet
Avg Win Rate by Sector
Avg Profit Factor by Sector
Best Pattern by Sector
Trade Volume Distribution
Strategy DashboardTEST v1
not loaded
Start Test Strategies v1 to populate
Shared session · Trades tagged per strategy · SQLite ledger persists across restarts · Auto-refreshes every scan cycle
ⓘ Data source is end-of-day / delayed OHLCV bars (Yahoo Finance), refreshed on each poll — not a real-time
tick feed. Signal "entry" prices are the open of the bar following the signal, which is only an
observable price once that bar has printed; until then a trade shows as CURRENT TRADE in the feed.
A trade only flips to WIN/LOSS once price actually touches its stop or target on a later bar, or its
hold window expires — ASX H12 (R16/R21), US H8 (R17), JACOB 96 bars.
Monitor Status
OFFLINE
Scanners
5M · —
1D · —
MODE
LIVE
REPLAY
⚡ IG
Session Duration
—
Signals Fired
0
Paper Trades
0
Open Positions
0
Last Poll
—
Poll Interval
30s
1m
5m
15m
REPLAY PROGRESS0%
—
Session Win Rate
—
Profit Factor
—
Session P&L *
—
Expectancy / Trade
—
Win Streak
—
Strategies
—
Tickers and patterns are derived from the selected strategies — there is nothing to set by hand.
Universe DERIVED
0 tickers
Execution Settings
🔒 PAUSE TO EDIT
Account ($)
Risk Per Trade1%
Max Trades / Day∞
Daily Profit TargetOff
Min R:ROff
Index Filterⓘ
Stock SMAⓘ
Confluenceⓘ
Cap Impact
Bar Data
Daily
5-min
Daily bars — up to years of history, signals resolve over up to 5 trading days.
Paper Trade Mode
Server URL
Using default
Required when accessing the hosted app from outside the server. Reload page after changing.
API Key
Matches the ALGO_API_KEY set on your server. All requests send X-API-Key header.
News API Key
not set
Shows news headlines & sentiment on each signal. Free at
finnhub.io/register
IG Markets — APINOT CONFIGURED
Environment
DEMO
LIVE $
API Key
Username
Password
Live Orders
Credentials are saved locally. For persistent server-side storage, fill in backend/live/ig_config.py.
IG DEMO account required — never use LIVE credentials until fully validated.
Research — 19 rounds of backtesting (ASX, NASDAQ, Forex) live in the
Research tab. Strategy trial data accumulates in the SQLite ledger and is visible in the
Strategy Results panel below.
Live Chart Start the monitor to watch live
Session Equity CurveNo trades yet
Positions & Trade Feed
0
EVENTS
Start
monitor to see live signals
◔ FORMING — SETUPS BUILDING ON THE CURRENT BAR
Informational only — no entry/stop/target until the bar closes and the signal passes the filter chain.
Backend Required for Live Data
Live monitor polls
GET http://localhost:8000/live/scan?tickers=BHP,CBA&patterns=VWAP,RSI&period=1y every
30s.
Make sure uvicorn main:app --reload is running. The backend returns fresh signals; paper trade
P&L is calculated client-side and held for the session.
Add GET /live/scan to main.py — see README for the route signature.
Archived Sessions
A session is archived automatically when you press STOP, so a run survives CLEAR SESSION. Click any row for the full breakdown.
STARTED
DURATION
STRATEGIES
TRADES
W-L
WR
PF
FEES
MAX DD
NET P&L
Loading…
⚡
LIVE TRADING — REAL MONEY
Orders placed here would use real funds. This page is separate from Demo Trading so the two can never be confused.
STATUS
NO BROKER CONNECTED
Current Setup — First Live RunPROPOSED · NOT YET ARMED
BAR INTERVAL
1 DAY ONLY
no 5-minute
DIRECTION
LONG ONLY
no shorts
RISK : REWARD
3.0 : 1
HOLD WINDOW
8 days
RISK / TRADE
1.0%
MAX CONCURRENT
8 positions
5YR PF
1.16
WIN RATE
47.9%
MAX DD
29.6%
TRADES / YR
246
FEE DRAG
26%
COMPONENT STRATEGIES
STRATEGY
PATTERN
UNIVERSE
EVIDENCE
US_BROAD
EMA_PB
190 liquid US equities + ETFs
PF 1.16 · 5yr n=1,229
DELIBERATELY EXCLUDED
✕ ASX — it genuinely HAS edge (+$44,560 gross over 5y at $25k), but IBKR’s A$6.60 minimum costs $62,239 across those 2,695 trades — the broker takes ~140% of the edge. Fee/trade: ASX $8.76–14.62 vs US $0.77. Stays in the demo to keep collecting signal data.
✕ LSE & Hong Kong — both liquidated a $2,500 account. Fees were 501% and 385% of gross profit: UK stamp duty is 0.5% on every purchase and this strategy is long-only.
✕ Futures (incl. micro) — untradeable here: one MNQ contract needs USD 3,850 maintenance margin, more than the whole account; MES needs 2,509. COMEX gold is ~$410k notional.
✕ All shorts — 91% of realised losses this session (−$884 of −$970).
✕ All 5-minute strategies — ASX longs on 5m lost −$428 (33% WR, 9 trades) vs +$1,650 for the same longs on 1d.
✕ JACOB / JACOB_POOL — only 2–3 backtest signals each; far too little data to risk real money.
✕ QUANTPEDIA_CAL — time-exit drift harvest, no real stop geometry.
Read the backtest with suspicion: it assumes perfect fills at every stop and target, no slippage and no margin interest, and the 5-year window covers an exceptional run in both megacap tech and gold — a long-only strategy will flatter itself in that period. Modelled ruin risk is ~0% only because fixed-fractional sizing needs ~120 consecutive full-stop losses at 1% risk to bust; the real wipeout mechanism is a correlated overnight gap through 8 long positions at once, which this backtest cannot model. Live evidence remains thin: 1 EMA_PB trade so far.
Broker Connection
BrokerInteractive Brokers (AU)
TransportIB Gateway · localhost
Gatewaynot detected
Account—
Buying power—
Credentials are never stored by this app. You log in to IB Gateway yourself; the backend talks to it over localhost only. No password or API secret is written to disk.
Safety Controlslocked
Disabled until a broker is connected and the pre-flight checklist is complete.
Max daily lossnot set
Max open positionsnot set
Max position sizenot set
Allowed directionnot set
Closes every open position and halts the scanner.
Pre-Flight Checklist3 / 8
Live Positions0 OPEN
⚡
NO LIVE POSITIONS
Connect Interactive Brokers to trade real money. Until then all activity stays on the
Demo Trading page.
TRIAL PHASE 1
30-DAY PROFITABILITY RECORD
—
————
PRICEENTRYSTOP LOSSTAKE PROFITENTRY dot + time labelEXIT dot (green win / red loss)
SETTINGS
ACCOUNTS
A new account has no password and cannot sign in until you set one. Changing a password
ends every existing login for that account.
LANGUAGE
Reserved for later — no translation is wired up yet. Your browser's own "Translate this page" feature works today.
TIME ZONE
Used to show market open/close times in your local time — click the market status badge in the header or sidebar.