The Problem: Signals Without Instruments
Here's a thing that happens when you build a trading system in public during a war: the world changes faster than your code.
Tauntaun has been running for eight days. Eight signal sources. 1,000+ signals generated. Ten positions. And a slowly dawning realization that our ETF universe had blind spots you could drive a carrier group through.
GDELT was flagging sanctions spikes at 2.4x the rolling average. Our RSS scanner was picking up cybersecurity headlines from the Iran conflict almost every cycle. Kalshi was pricing hot inflation. The Google Trends stress/euphoria ratio was twitching. And the system was doing what it could with the instruments it had: gold, defense ETFs, oil, bonds.
But there were entire asset classes moving right now that we couldn't touch. Nuclear energy is up 117-170% over the trailing twelve months depending on the ticker. Cybersecurity ETFs are being called "the hottest war trade" by Yahoo Finance. International stocks are outperforming the S&P 500 for the first time in years. Natural gas is tightening on LNG supply disruptions from the Strait of Hormuz.
We were reading the signals. We just couldn't act on them.
The Five
We're adding five instruments. Each one fills a specific gap where our signals were generating data but we had no way to express the trade:
| ETF | What It Is | Why Now | Sector |
|---|---|---|---|
| URA | Global X Uranium ETF | Nuclear energy security. Sanctions accelerate energy independence. AI data centers need power. Uranium up 170% YoY. | Nuclear |
| HACK | ETFMG Prime Cyber Security | Every modern conflict has a digital front. We had kinetic defense (ITA, XAR) but zero cyber exposure. | Cybersecurity |
| VEA | Vanguard FTSE Developed Markets | International stocks outperforming US in 2026. When domestic fear spikes, capital rotates overseas. Vanguard projecting 10-year international outperformance. | International |
| UNG | US Natural Gas Fund | Hormuz isn't just an oil story. Qatar LNG is disrupted. Natural gas is a separate supply chain with its own dynamics. Our oil signals need a gas outlet. | Energy |
| USMV | iShares Min Volatility | Beta of 0.55. When Fear & Greed is at 19 and signals are conflicting, this is "I want equity exposure without getting killed." Broader than XLU alone. | Defensive |
Notice what's not on this list: no crypto ETFs, no leveraged products, no penny-stock-adjacent nonsense. Each addition maps directly to a signal pattern the system already generates. We're not adding assets to add assets. We're adding them because the data demanded it.
The Process: Tests Before Code
Here's where it gets interesting for the engineers in the room.
We didn't start by editing config files. We started by writing 14 tests that described exactly what the system should look like after the expansion. Every new ETF in the universe. Every sector mapping. Every signal route. Every original route preserved. All written as assertions that would fail until the code caught up.
This is TDD applied to a trading system. Write the spec first. Watch it fail. Then make it pass.
9 failed, 5 passed. Perfect. That means the 5 tests about existing functionality already work, and the 9 about new stuff correctly fail. The test suite is honest.
Why does this matter? Because when you're changing the signal routing of a system that's managing real positions (paper or not), the worst thing that can happen isn't a crash. It's a silent regression. A trade route that disappears. A sector mapping that goes missing. A signal that used to hit defense ETFs and now hits nothing. You'd never notice until you reviewed the logs three days later and wondered why the system went quiet during a war.
So we wrote the tests first. All 14 of them. Watched them fail. Then made changes one file at a time.
Step 1: The Universe (config.py)
The simplest change. Five new tickers, five new sector mappings:
| Change | Before | After |
|---|---|---|
| ETF_UNIVERSE | 19 instruments | 24 instruments |
| ETF_SECTORS | 19 mappings | 24 mappings, 4 new sectors |
The new sectors matter for concentration limits. Tauntaun caps any single sector at 30% of the portfolio. If we'd dumped UNG into "energy" alongside USO and XLE, three instruments would share one sector's allocation. By giving nuclear and cybersecurity their own sectors, each new instrument gets its own room to breathe.
UNG stays in "energy" though. That's intentional. Oil and gas are fundamentally the same supply chain story right now, and they should compete for the same allocation when Hormuz is disrupted.
Step 2: Signal Routing (The Fun Part)
This is where it gets real. Adding a ticker to the universe means the system can trade it. Routing signals to it means the system will trade it.
We wired the new instruments into both GDELT and RSS signal generation:
GDELT Theme โ Trade Routing
| Theme Spike | Original Route | New Route Added |
|---|---|---|
| Military Conflict | ITA, XAR, GLD | + HACK (cyber warfare dimension) |
| Sanctions | USO, GLD | + URA (nuclear energy security) |
| Oil Price | USO, XLE | + UNG (natural gas) |
| Nuclear Energy | didn't exist | URA, XLU (new theme) |
| Cyber Attack | didn't exist | HACK (new theme) |
RSS Theme โ Trade Routing
| Theme | Original Route | New Route Added |
|---|---|---|
| Military Conflict | ITA, XAR, GLD | + HACK |
| Oil & Energy | USO, XLE | + UNG |
| Sanctions | GLD, USO | + URA |
| Nuclear Energy | didn't exist | URA, XLU (new theme) |
| Cyber Warfare | didn't exist | HACK, ITA (new theme) |
Two entirely new themes added to the RSS scanner: nuclear energy (keywords: uranium, SMR, nuclear renaissance, energy independence) and cyber warfare (state-sponsored attacks, ransomware, zero-days, APT groups). These aren't edge cases in April 2026. They're front-page news.
Cross-Theme Amplification
One of the quieter features in the RSS scanner is cross-theme amplification. When two correlated themes fire simultaneously, the confidence on both gets boosted. We already had "military conflict ร oil energy" and "recession fear ร banking crisis." We added three new ones:
| Theme Pair | Boost | Rationale |
|---|---|---|
| Military Conflict ร Cyber Warfare | +10% | Every physical conflict now has a cyber front. When both spike, the signal is stronger. |
| Sanctions ร Nuclear Energy | +8% | Sanctions on energy producers drive nuclear demand. Correlated catalysts. |
| Oil & Energy ร Nuclear Energy | +6% | Oil disruption directly accelerates the nuclear alternative narrative. |
Step 3: Run the Tests
After every file change, we ran the full suite. Not just the new tests. All 134 of them.
134 passed in 0.18 seconds. Zero regressions.
The original 19 ETFs are untouched. Every existing signal route still works. The sector concentration limits still apply. The trailing stops, the ATR calculations, the portfolio analytics, the deploy validation, the journal builder. All of it. Green.
This is why you write the tests first. Not because it's trendy. Because when you're one bad edit away from your system quietly ignoring war signals, you want a 0.18-second sanity check that tells you everything still works.
The First Live Run
We ran the RSS scanner against live feeds right after deployment. 26 new articles across 8 feeds. And there they were:
LONG HACK conf=0.70โ cross-theme boosted (military conflict ร oil energy), 88 articles across feeds
LONG UNG conf=0.62โ cross-theme boosted (inflation ร oil energy + military conflict ร oil energy), 28 articles
Two of the five new instruments generated signals on the very first run. HACK at 70% confidence. UNG at 62%. Both boosted by cross-theme amplification because the current news cycle has military, energy, and inflation themes firing simultaneously.
The system didn't have to be told that cybersecurity matters during a war. It read the news, matched the themes, found the routes, and produced a signal with enough confidence to potentially trade on. That's the whole point.
VEA, URA, and USMV didn't fire yet. That's fine. VEA will route through future international sentiment signals. URA will fire when nuclear energy or sanctions themes spike hard enough. USMV is a defensive play that'll activate when the system needs low-volatility equity exposure. Not every instrument needs to fire on day one. The wiring is there. The themes exist. When the data triggers them, they'll light up.
The Backout Plan
Every commit is tagged. The pre-expansion state is one git revert away. If any of the new instruments behave unexpectedly โ weird price action, low liquidity, Alpaca doesn't support one of them โ we can pull a single instrument out of the universe without touching anything else. The sector isolation means removing one ETF doesn't affect concentration limits for the others.
We also committed the test suite separately from the implementation. If we need to revert the code but keep the tests (to re-implement differently), that's a clean operation.
Build fast. Test hard. Always have a way back.
The Full Universe: 24 Instruments
| Sector | Instruments |
|---|---|
| Broad Market | SPY, QQQ, IWM |
| Bonds | TLT, TIP |
| Commodities | GLD, SLV |
| Energy | USO, XLE, UNG |
| Defense | XAR, ITA |
| Tech | XLK, QQQ |
| Financials | XLF |
| Industrials | XLI |
| Staples | XLP |
| Utilities | XLU |
| Healthcare | XLV |
| Materials | XLB |
| Volatility | VXX |
| Nuclear | URA โ |
| Cybersecurity | HACK โ |
| International | VEA โ |
| Defensive | USMV โ |
From 19 to 24. Four new sector categories. Two new signal themes. Three new cross-theme correlations. 14 new tests. Zero regressions.
What This Means
Tauntaun can now express views on nuclear energy, cyber warfare, international rotation, natural gas supply disruption, and low-volatility defensive positioning. Every one of those is relevant to the current regime: Iran war, Hormuz disruption, extreme fear, conflicting inflation/recession signals.
The system is still eight days old. Still paper trading. Still learning. But it can see more of the board now. And in a market where the biggest risk is the thing you're not looking at, that matters.
Next up: watch how these new instruments interact with the existing portfolio over the next few trading sessions. Do the signals cluster? Do the new sectors help diversification? Does HACK actually move differently from ITA during a cyber headline spike?
We'll find out. That's the fun part.