357 Entries Later

A week ago we built the Shadow Book — a side-by-side log of what predictive and reactive sources disagreed on, every 30 minutes, without changing anything about how the system actually traded. Pure instrumentation. Let it run. Collect the data.

357 pipeline runs later, the pattern from Entry #27 still holds. The TLT divergence showed up again and again: Kalshi predicting aggressive Fed cuts → buy bonds. RSS counting inflation headlines → sell bonds. Two legitimate reads of the same world, pointing opposite directions.

Under the old system, they'd net out and cancel. The system would skip the trade entirely, even when Kalshi — where real money is wagered on real outcomes — was the louder signal.

We had enough data. Today we changed the weights.

The New Org Chart

Every signal source now has a job title. Three sources got promoted. Seven got managed.

SourceClassMultiplierLogic
KalshiPREDICTIVE1.4xReal money on future outcomes
ORALE NowcastPREDICTIVE1.4xSwarm intelligence + macro nowcasting
Predictive HistoryPREDICTIVE1.4xStructural game theory, 500 years of context
RSS NewsREACTIVE0.7xHeadlines that already happened
GDELTREACTIVE0.7x100 languages of news that already happened
GPR IndexREACTIVE0.7xMeasures tension after it's in the papers
FRED MacroREACTIVE0.7xData released on a schedule, already priced
Credit SpreadsREACTIVE0.7xMeasures fear after it arrives, not before
Google TrendsREACTIVE0.7xBehavioral signal, lags price action
Stock ScannerREACTIVE0.7xMomentum follows price, doesn't lead it

The math is simple. Kalshi at 52% confidence gets multiplied by 1.4 before fusion — it enters the engine as 73%. RSS at 85% gets multiplied by 0.7 — it enters as 60%. When they conflict, Kalshi wins. When they agree, confidence compounds on top of the new weights.

1.4x
Predictive Premium
0.7x
Reactive Discount
357
Shadow Book Entries
80%
Gate Threshold

The Bouncer

The weights alone aren't enough. A reactive source at 0.7x can still generate a loud signal if the underlying confidence is high enough. So we added a gate.

New rule: every new position needs at least one predictive source backing it. If a trade is purely driven by reactive signals — headlines, economic data releases, momentum indicators — it doesn't get executed unless the confidence is above 80%. Overwhelming reactive consensus still gets through. But "RSS is very excited about defense stocks" by itself is no longer a trade trigger.

First dry run after flipping the switch:

🚫 GATE: XAR LONG (59%) — reactive-only, below 80% threshold
🚫 GATE: HACK LONG (52%) — reactive-only, below 80% threshold

XAR and HACK both blocked. Pure RSS plays, no predictive backing, under the threshold. Two weeks ago those would have been live orders. Today they sit out until a prediction market or nowcast agrees.

TLT passed. Kalshi said LONG. GPR said LONG. The professor's game theory said LONG. That's three sources in agreement — two of them predictive. The gate opened.

The Kill Switch

One line in config.py:

PREDICTIVE_WEIGHTING_ENABLED = True  # flip False to revert instantly

If this blows up — if the next two weeks show the predictive-weighted system underperforming the equal-weighted shadow book — we revert in 30 seconds without redeploying anything. The old behavior is one boolean away.

We're not burning the boats. We're just letting the better navigator steer.

🦴 Lesson: Instrumentation before intervention.

We ran 357 pipeline cycles with the Shadow Book before touching a single weight. That's not caution for caution's sake — it's the only way to know if the change you're making is based on signal or wishful thinking. The data confirmed the thesis. Then we acted on it.

What We're Watching

The test is simple: over the next 30 trading days, does the predictive-weighted system produce better results than the equal-weighted shadow? Not marginally better. Meaningfully better — higher win rate, fewer stop-loss exits, better average confidence on winning trades.

The shadow book keeps running in parallel. Every 30 minutes, it logs what the equal-weighted engine would have done vs. what the new weighted engine actually did. Divergence trades — where the two systems disagreed and one of them was right — are the most valuable data points we'll collect.

Meanwhile, we also bumped the position limits today. $5K max per position, 25 slots, 70% of portfolio deployed. The system spent three weeks making double-digit returns on $38K while $62K sat in cash. That ends today too.

Two changes, same session. Bigger positions and smarter signal weights. Either one could move the needle. Together, we'll see what this thing is actually capable of.

The newsroom still has a job. It just doesn't run the trading desk anymore.