Trading Co-Pilot
CRISP · MNQ & MGC · one trader

A trading desk that argues back.

It reads your live TradingView chart and your broker panel every few seconds, holds you to a rulebook where no number exists without the day it changed and what that day cost, and reduces the position when you go over your own cap.

  • Kill Zone — trading is only in session, and the windows track the real London and New York opens through both DST shifts.
  • Size Guard — two confirming reads above your cap and it sends a reducing order. Never a flip, never a flatten.
  • Forensics — MAE/MFE per trade against archived bars, with coverage reported before any figure.

Local only · one machine · no account, no signup, no cloud

Session · NY · CME_MINI:MNQ1! Live
Buffer
$1,875
to the floor
Day
−$84.20
2 of 12 trades
Size
2/4
within cap
Kill zone
OPEN
closes 21:00 IST
19:04Kill zone OPEN — NY 09:30 ET → 19:00 ISTsession-windows
19:11Playbook A engulf 15M — rejected, LL-LH structuresignal-ledger
19:26Filled 2 MNQ long @ 20418.25 — stop $300 / target $600position-events
19:31IN TRADE — peak +1.4R, given back 0.6R, thesis intactin-trade
19:38SIZE GUARD — read 5 lots twice. Reducing 3.oversize-guard
19:39Broker accepted. Position 2. Logged to ledger.order-gateway
19:52THE LOOP — 4th oversize in 19 days, $5,516 cumulativepattern-memory
150
server modules, plus 25 in the browser — one Node process, no framework
200
test files on Node's own runner, covering every module that makes a decision
165
live message types on one WebSocket, one dispatcher
14
panels, from the pre-session checklist to lifetime cost

The real thing

This is the app, running

Captured from a live session on this machine. Every figure has been replaced with a demo value — the layout, the panels and the state are exactly what a session looks like.

The Analysis panel during a live session, with watchers, the chat pane and the pre-session checklist.
The Forensics panel showing measurement coverage above the full trade table.
The Week panel with the money and process rollup.
The pre-session Checklist panel, the hard gate before any setup can arm.
The Insights panel with scored edges.
The Brief panel with the overnight scan and the note for the day coach.
AnalysisThe working surface during a session

Auto-advancing · hover to hold · click a screen to jump

01 — CRISP mode

Three things stand between you and the drawdown

CRISP is the live-session layer. It does not predict, rank or forecast. It answers three questions every few seconds — are we in session, are we within size, and what did that trade actually do — and it acts on the second one without being asked.

I — Kill Zone

The window tracks the exchange, not the clock

Two windows, declared in the exchange's own timezone: London 08:00–09:30 BST/GMT and New York 09:30–11:30 EDT/EST. Outside them the app refuses to arm a setup and says which window it is waiting for.

They used to be stored as fixed minutes past IST midnight. India has no daylight saving; London and New York both do, and they shift on different dates — so a fixed IST time can only ever be right for part of the year, and the two windows were wrong in opposite halves of it. Durations are preserved exactly; only the opening moment moves.

DATE LONDON IST NY IST OLD FIXED 2026-09-03 12:30 BST 19:00 London off by 1h
2026-10-26 13:30 GMT 19:00 both correct
2026-11-02 13:30 GMT 20:00 NY off by 1h Hard flatten 03:00 IST — nothing carries overnight.
II — Size Guard

It reduces to the cap. It never flattens

Entering five with a cap of two sells three and leaves two. The thesis survives; only the excess risk is removed. Flattening would also kill the winners — and a guard that costs you your winners gets switched off, and a switched-off guard protects nothing.

Position size is the least reliable field on the panel, so the guard requires two consecutive confirming reads before anything is sent, is capped at six actions a day with a thirty-second cooldown, and logs the size it saw, the order it sent and whether the broker took it. Reduce only, never flip.

2026-08-28 — the day it was written day net
−$1,436.20

2 trades over the 2-lot cap
−$1,147.70 — 80% of the loss

the size-5 short alone
−$1,322.00 — 66% of the entire $2,000 drawdown, in one trade Same trade, guard armed: −$528.80.
III — Forensics

Coverage is printed before any figure

Every closed trade is replayed against archived bars for MAE and MFE — how far it went against you before it worked, and how much was on the table before you took it. Expectancy is split by playbook, by session and by tag, and every row carries its own n.

Most trades on disk have no excursion data, because the bar archive only started collecting on 2026-09-05 and the recovered history pre-dates it. So coverage is computed first and rendered at the top, a sample under n = 8 is shown but never ranked, and a counterfactual that could not run says so — instead of returning the book unchanged, which would read as "this would not have helped".

FORENSICS — 2026-09 to date coverage 31 of 199
rows with MAE/MFE 31
ranked tags (n≥8) 4 of 30 avg MAE before win −11.5 pt
avg MFE before stop +7.25 pt
median hold 4m 12s A missing number is null with a reason, never zero.

02 — The workspace

Fourteen panels, one process, no build step

Everything runs from one Node process on port 7433 and a plain browser page. Pick a panel to see what it holds.

—

—

—

03 — Inputs

It reads what you are already looking at

No broker API keys to paste, no CSV upload as the primary path. The app attaches to the TradingView Desktop you already have open and to the broker panel already connected inside it.

Live chart

TradingView Desktop over Chrome DevTools Protocol. Watchers poll for engulfing candles on 1H, 30M, 15M and 5M, fair-value gaps, swing-failure patterns and the mechanical accumulation–manipulation–distribution phase. One chart lock serialises them, because there is a single connection and a watcher that steals the chart mid-read leaves it somewhere you did not put it.

Broker panel

Position size, working orders and day P&L read straight off the connected panel, folded by balance-delta at flat. The app cross-checks its own ledger against the broker and reports the gap rather than quietly picking a winner.

Bar archive

Every trading day writes bars to disk per symbol and timeframe. This is what forensics replays against, and what the overnight scan reads to brief you on the Asian session before you sit down.

Chat archive

Every line that appears in the chat pane — messages, verdicts, watcher alerts, guardrail alarms, trade tickets — is appended to disk and never trimmed, capped or rewritten. Captured by watching the pane itself, so a future surface is archived without anyone remembering to wire it.

Signal ledger

Every detector fire, with the gate it passed or the reason it was refused. This is the record the playbook switch and the autonomy gate are both judged from.

Bridge health
CDPTradingView attached on :9222heartbeat 4s
MCPchild process readyauto-restart
Feedbroker panel readable — 2 rowspoll 5s
ModelDeepSeek primaryladder rung 0
Watchwatchdog not running — supervision offwatchdog-status

Two states that look identical and are not: whether the bridge's own child process is up, and whether TradingView is actually answering. They diverged before and produced a false "connected" light, so they are now measured and reported separately.

04 — Memory

Find the pattern. Name the cost. Say it while it matters

Guardrails can tell you that you are oversized right now. They cannot tell you this is the fourth time in nineteen days and what the first three cost — because their state is wiped at every daily rollover. That is what the memory layer is for.

The Loop · repeat detected
19:52Size escalation after a loss — episode 4cited
“Eighteenth trading day out of nineteen. This same pattern has cost $5,516 across those episodes. On 2026-09-03 I told you to stop after two losses; you sized up instead and the day closed −$2,296. You are two trades from the day stop. The decision is to flatten and stop.”
—States the decision. Executes nothing.enforcement is elsewhere
Failure chain · why the day failed
T4turning point — −$526, then 4 → 15 → 20 lotsnot the biggest loser
—escalation after loss owns −$1,77977% of the day
—every losing trade attributed to exactly one causedollars add up
—a day of clean losses is given no cause at allby design
A — Pattern memory

Episodes, not impressions

Every repeat is filed with a cited source. A pattern the app cannot trace to a real record is an accusation, not evidence — so it is not filed.

Append-only · recoverable by deletion
B — Positives

A disciplined loss is a win

A losing trade with zero flags is filed as a positive. Filing it as failure is how an app teaches someone that following the rules does not pay.

First-class episode kind
C — Advice grader

Did the advice hold?

Coaching records a concrete, checkable instruction. At the next measured point it is compared against what actually happened — "cap at 6" against tomorrow's max size.

Turns a feed into a loop
D — Armed lessons

A lesson you can arm

Attach a bounded, machine-checkable condition to a lesson and promote it. It then fires on the live feed and reports honestly: armed three weeks ago, never fired.

Templates only · hard ceiling

05 — Playbooks

Six setups, each with its own on switch and its own evidence

One registry answers "is Playbook B on?" — before it existed, three files answered and none agreed. Two independent axes per playbook: may it fire and be shown, and may it ever place an order. They are separate because the only way to stop being nagged by a bad playbook must not also be the only way to stop measuring it.

A · shadow

Engulfing candle

Any always-on timeframe, gated on market structure — a bullish engulf needs an HH-HL structure and two confirmed pivots each side, at a swing, not mid-range.

~12 valid setups / month · 2 lots
B · shadow

JadeCap 3-step

Swing-failure pattern into a fair-value gap, with a bounded bar window between the raid and the fill.

Highest fire rate · 2 lots
C · gate

Engulfing bar validity

Not a setup — the filter on Playbook A, locked on in code. Switching it off would not disable a strategy, it would trade bare engulfs.

Cannot be disabled
C-ADX · armed

Strong-uptrend breakout

Long only, 1H, ADX ≥ 35, five-bar lookback. The only playbook with a conclusively measured edge across nine months of bars — and the only one permitted to place.

Daily cap $1,000 per 2 contracts
D · shadow

9/15 EMA cross

15-minute, both directions, fixed 1:2 reward. The simplest thing in the book and the easiest to falsify.

Recording only
PO3 · informational

Power of 3

Mechanical accumulation → manipulation → distribution phase detection, on the primary symbol and a secondary watch across MNQ and MGC. Structurally refused from ever placing.

Never executes

A new playbook starts off and recording-only, and is labelled unknown in the UI until a spec and a detector both exist — so "it is listed" is never mistaken for "it is wired". The app only advises a switch from your own scored signals: n ≥ 30, the Wilson lower bound above break-even, and positive expectancy per contract. The switch itself stays yours.

06 — Beyond the session

The parts that only matter after the screen goes dark

A day review that nobody reads is theatre. These surfaces exist because they change what happens next week.

WeekMon–Fri

Money × process quadrant, because discipline and P&L are inversely correlated in your own data. An untraded weekday scores as a win.

ForensicsMAE / MFE

Per-trade excursion against archived bars, expectancy split by playbook, session and tag, with coverage stated first.

LifetimeAll stages

Every account, every stage, one continuous record — including the six that were blown and what each one died of.

CostTokens

What the model layer actually spends per session, audited with the real tokenizer, so the coach is never quietly the most expensive thing you run.

BriefPre-open

The overnight scan replays the Asian session from the bar archive and briefs you before you sit down — and says how much of the window is actually on disk.

ChecklistHard gate

Skipping the pre-session checklist is a hard no-go, ranked with the daily stop. Not a nudge.

JournalTwo-way

Mood, plan, mistake and lesson were write-only for months. They now feed the coach's context, so your own words come back at you.

PayoutConsistency

Biggest-day to total ratio against the firm's own consistency gate, so a payout is never refused by a rule you had not measured.

07 — Autonomy

Four rungs. You do not buy the next one, you earn it

Nothing here is unlocked by a plan or a payment. Each rung is opened by evidence from your own shadow record, and the gate fails closed to SHADOW while naming every gap.

Active now

Shadow

$0risk per trade

Records what it would have done, at exactly the size the top rung trades, so the record is eligible evidence rather than a different experiment.

  • +Every detector fire, with its gate result
  • +Orders proposed and outcomes resolved
  • +Full coaching, alarms and forensics
  • +Kill Zone and Size Guard fully live
  • −Places nothing
The default. Where the app has always run.
Available

Advise

$0risk per trade

The Judge may issue a machine-readable ticket on a go verdict. It appears on screen carrying its stop and target. Nothing moves until you press confirm.

  • +Everything in Shadow
  • +Trade ticket with stop and target
  • +Confirm gate with no override path
  • +Double-submit guard
  • −Requires a human press
One click stands between the verdict and the broker.
Gated

Assist

$200risk per trade

May act inside a narrow, pre-agreed band without a press — and must log the size it saw, the order it sent, and whether the broker took it, every time.

  • +Everything in Advise
  • +Acts within the agreed band
  • +Per-trade stop and target enforced app-side
  • +Trailing stop once break-even is cleared
  • −Blocked until the gate opens
Same caps as the rung above it, by design.
Locked

Control

$200risk per trade

Places without a click, on the playbooks that have earned it. This is the only rung that makes the app fully automatic, and the only one the evidence bar exists to hold shut.

  • +Everything in Assist
  • +Unattended entry on qualified playbooks
  • +Per-playbook, never account-wide
  • +Revocable in one switch
  • −Two of five requirements met
Armed by a human or not at all.

The gate, read from the live shadow record

Fails closed to Shadow

RequirementNeededHasStatus
Resolved trades, per playbook401Blocked
Profit factor after costs1.300.00Blocked
Consecutive shadow days206Blocked
Drawdown against the limit<$800$114Pass
Armed by a humanyesyesPass

At the observed rate — roughly one resolved shadow trade per active day, spread across playbooks — forty per playbook is measured in months. That is the honest distance to fully automatic, and it is a property of how often a setup genuinely qualifies, not of any missing code. No configuration change moves it.

08 — The record

Every guardrail here is a scar

There are no testimonials on this page. There is one trader, six blown accounts, and a repository that writes down what each one cost. These are the entries the guards were built from.

“Auto-flatten on oversize. It is the cure for me blowing accounts like today. Oversize killed me today and I need serious resolution.”
2026-08-28 · the day that cost 72% of the drawdown
→ became oversize-guard.js
“The judge always describes the mismatch between platforms and not a real solution to the problem. I want this loop to really give the core reason for the failure.”
2026-09-03 · a data problem, not a tone problem
→ became failure-chain.js
“I need a new agent who lives inside this memory, who gives information when any mistake or positive trade is repeated, directly in chat.”
2026-09-03 · guardrail state is wiped daily
→ became pattern-memory.js and The Loop

09 — Standing

What is not verified

This page would be worth less without this section. The repository keeps built and live-verified as separate words, and so does this list.

Unverified

The live P&L fold

It has never been checked against a real closed trade with non-zero P&L. Every live size and P&L figure on this page sits on top of it.

Stated wherever the number is shown
Broken

Priced chart alerts

Setting a price on a TradingView alert does not take — it creates the alert at the current market price instead. The function fails loudly rather than reporting a success it did not achieve.

Failing loudly is the fix, for now
Off

Phone push

The Telegram bridge is disabled, so 24 notification call sites are silent no-ops — including the size-guard blind alarm. A read-only glance page covers pull; push is still unanswered.

Disabled by instruction, twice
Never run

24×7 supervision

The watchdog is sound and has a heartbeat, an unattended launcher and a scheduled-task installer. It has never been switched on, and the relaunch path has never been exercised end to end.

Its absence is now visible, at least
Documented only

One instrument per day

The rule appears in the rulebook, in prose and in a comment. No guard reads it. It is documentation, and it is not what limits gold.

Checked and corrected on the spot
Architecturally blocked

Cloud, 24×7

The execution path drives a GUI desktop application over a debugging port. That is not a service. A cloud Windows VM with a live session could host it — a deployment project with real fragility, not a config change.

Stated rather than promised

10 — Questions

Frequently asked questions

Is this a bot?
No. Today every playbook but one records and places nothing, and the one that can place is gated behind a confirm with no override path. The autonomy ladder exists so that "fully automatic" is a measured distance rather than a marketing word — and right now two of its five requirements are met.
What can actually send a real order?
Two things, and they are named on this page. You confirming a ticket, and the Size Guard reducing an oversized position. Both live behind a separate launcher — start the app the ordinary way and the guard can only sound the alarm.
Why does it only trade two instruments?
Micro Nasdaq at $2 a point and Micro Gold at $10 a point. The detectors follow whatever symbol the chart is on, so the instrument mix is incidental rather than chosen — which the coverage report says out loud, including the symbols that leak in when the chart is left somewhere else.
Does it need my broker credentials?
No. It reads the broker panel already connected inside your TradingView Desktop over the debugging port. There is no key to paste and nothing leaves the machine except model calls.
Where does the rulebook live?
In one data file, never in code — app/rules.json. Each value sits beside a comment recording the day it changed and the evidence that set it. A limit hardcoded in a module drifting out of sync with that file is a bug this repo has already had.
What happens when the model is down?
One provider answers by default, with a two-step fail-open ladder behind it. When the chain moves off the primary, the reply is badged in the interface and a notice lands in chat — because a different vendor answering, including on the path that can emit a real ticket, must never be silent.
Can it run in the cloud, 24×7?
Not as built. The execution path drives TradingView Desktop over a debugging port — a GUI application, not a service. What does work is surviving its own crashes on the machine it already runs on: the bridge restarts its child and can relaunch the chart on a connection drop, and a watchdog can supervise the server.
What is the kill zone, exactly?
Two session windows declared in the exchange's own timezone — London 08:00–09:30 and New York 09:30–11:30 local — converted to India time at read, so they follow both daylight-saving shifts instead of drifting an hour out for half the year. Outside them the app will not arm a setup, and at 03:00 IST it flattens whatever is open.
Why reduce instead of flatten?
Because a guard that costs you your winners gets switched off, and a switched-off guard protects nothing. On the day the guard was written, flattening would also have killed a size-3 long that made $174.30. Reducing five to two removes the excess risk and leaves the trade.
Is there a hosted version I can sign up for?
No. This is built for one trader on one machine, and this page exists to document it honestly rather than to sell it. Not a product, not a signal service, not a bot.

11 — Run it

No build step. One process

The launcher relaunches TradingView with the debugging port open, waits for it to boot, then starts the server. Launching the chart from the Start menu breaks the bridge, which is the whole reason the launcher exists.

— relaunches TradingView with the debugger open, waits, then starts the server
> "START CO-PILOT.bat"

— or just the server, if TradingView is already up
> cd app && node server.js
  http://localhost:7433

— the guards may only send orders under this one
> "START CO-PILOT (LIVE ORDERS).bat"

— everything that makes a decision has a test
> cd app && npm test

The buffer, not the profit

The drawdown floor only ever ratchets up. Touch it once and the account is gone — so the distance to it is the number this app puts in front of you all day, every day, whether or not you want to see it.