The Street Smarts Bot
A complete field guide to what your money is (and isn't) doing

Written 2026-07-04 by Claude Fable 5, while auditing the full Street Smarts book against the code. Companion to the live dashboard.

Contents 1. Background — swing trading in one sitting 2. The machine — what runs every morning 3. The strategies — intuition, rules, honest numbers 4. Money management — the part that actually decides survival 5. The two bugs — why you should distrust every backtest 6. Reading the numbers like an adult 7. Quiz — five questions to test yourself

1. Background — swing trading in one sitting

In 1996 two professional traders — Linda Bradford Raschke, a former floor trader, and Laurence Connors — published Street Smarts, a manual of short-term patterns they had traded for fifteen years. Every strategy in your bot comes from that book, or from Connors' later work.

Their world-view fits in three sentences. Markets move between support (a price floor where buyers previously showed up) and resistance (a ceiling where sellers did). Prices test these levels, and how a test resolves — holding, failing, or overshooting and snapping back — is more informative than any indicator. A swing trader doesn't predict; they place a resting order where the market must pass if the pattern is playing out, with a stop just behind the level, so being wrong costs a few ticks and being right can pay many multiples.

Every pattern in the book belongs to one of three families:

FamilyMarket stateThe bet
TestsAt a prior high/lowThe breakout fails; trapped traders must exit through you
RetracementsStrong trend, pausingThe pullback ends; trend resumes
Breakout modeUnusually quiet, coiledVolatility is cyclical: quiet begets explosive
Why a bot? The book's own research chapter (a study of 925 professional funds, 1974–1995) found that failure is explained almost entirely by money-management mistakes, not by weak strategies — oversized losses, slow drawdown recovery, no stops. Those are all emotional failures. A bot cannot revenge-trade, cannot "give it room", cannot skip writing the stop. That is the entire thesis of this project.

2. The machine — what runs every morning

At 09:10 (Mac mini local time, ten minutes after the crypto daily candle closes), one script runs the whole day:

Kraken + Yahoo
fetch daily candles
(completed only)
Strategies scan
33 markets ×
all patterns
Order plans
orders/ CSV
with exact triggers
Gates check
capital-preservation
PASS / FAIL
Publish
dashboard deploy
+ Telegram ping

Three parallel tracks exist, and keeping them separate is a design rule, not an accident:

TrackMarketsStatus
CryptoBTC, ETH, SOL, XRP, ADAThe gated forward test. Its results decide, on 2026-07-31, whether real money ever gets involved.
Futures18 contracts — S&P, bonds, crude, gold, soybeans, coffee, lean hogs…Watch-only. Same strategies, same accounting, no gate.
StocksTSLA, NVDA, MU, COIN + 6 more volatile namesWatch-only.
Key file locations (for any future model or human): strategies in src/street_smarts_bot/strategies/, the simulation engine in backtest.py, the gates in scripts/check_gates.py, the daily routine in scripts/daily_paper_run.sh, the broker adapter in broker_kraken.py, and the standing rules in CLAUDE.md.

3. The strategies — intuition, rules, honest numbers

Stats are the 2-year backtest on 28 futures+stocks (or 721-day crypto where noted), $100 risked per trade, whipsaw losses booked honestly. They are hypotheses, not promises — see section 6.

Turtle Soup (Ch. 4) — fading the failed breakout

Intuition. In the 1980s the famous "Turtles" bought every 20-day high and sold every 20-day low. Their heirs — trend funds — still do. Most of those breakouts fail. When today plunges to a new 20-day low and then turns back up, every trend-follower who just sold is under water, and their exits become your fuel.

…five quiet days… → new 20-day LOW (orange) → reversal: buy stop above the old low fills (green)

Rules (buys; sells mirrored). Today makes a new 20-day low; the prior 20-day low is at least 4 sessions old; rest a buy stop 5–10 ticks above that prior low (the bot picks inside the range by volatility), valid today only; initial stop one tick under today's low; if stopped out on day one, re-enter once next day.

Code: strategies/turtle_soup.py · 836 futures/stock trades, 16% win, PF 2.3 — the classic profile: mostly small losses, a few huge reversals pay for everything.

Turtle Soup Plus One (Ch. 5)

The same trap, sprung one day later — the market closes beyond the 20-day extreme (trapping even the cautious traders who wait for a closing confirmation), and reverses the next day. Slower, easier to plan the night before, weaker in our tests (PF 0.75 on crypto — it may not survive the review).

80-20 (Ch. 6) — the emotional-close reversal

Intuition. A day that opens at one extreme and closes hard at the other (open in the top 20% of the range, close in the bottom 20%) is an emotional day. Research the book cites: such days follow through the next morning ~85% of the time, but close beyond only ~50% — meaning the afternoon usually reverses. The trade: let the morning push a bit further (5–15 ticks), then catch the snap-back at yesterday's low. Day trade only. Needs a session open/close — meaningless on 24/7 crypto.

Code: strategies/eighty_twenty.py. This strategy hosted the project's most dangerous bug — see section 5.

Momentum Pinball (Ch. 7)

A 3-period RSI of daily net change (the "LBR/RSI") below 30 says sellers are exhausted on a 1–2 day horizon. Next day, wait out the first hour, then buy a break of the first hour's high. Needs intraday data — handled by the TradingView webhook path, not the daily engine.

The Anti (Ch. 9) — momentum's pullback

Define trend not by price but by the slow stochastic line's slope; when the fast line pulls against it for ~3 days and then hooks back, two timeframes align and the move is often explosive. 417 trades, 29% win, PF 1.6 — marginal after fees; on probation.

Holy Grail (Ch. 10) — the name is a joke, the trade isn't

ADX above 30 marks a strong trend; the first pullback to the 20-period EMA is bought via a stop over the prior bar's high. One subtlety the original code got wrong: the ADX routinely dips during the pullback — requiring it to still be rising at the touch rejects exactly the setups the book trades.

ADX Gapper (Ch. 11) · Whiplash (Ch. 12) · Three-Day Gap (Ch. 13)

Three gap plays: a counter-trend gap that reverses into the trend (Gapper); a gap that fully reverses by the close, entered market-on-close (Whiplash); and an unfilled gap that starts to fill within three sessions (Three-Day Gap). All need real session gaps — dormant on crypto, live on the futures/stocks tracks.

ID/NR4 (Ch. 19) & HV Crabel (Ch. 20) — breakout mode

Intuition. Volatility is more predictable than price: quiet days cluster, and extreme quiet precedes explosion. An inside day that is also the narrowest range of four (ID/NR4) is a coiled spring — you don't know which way, so you rest orders on both sides and let the explosion pull you in. HV Crabel adds a filter: 6-day historical volatility under half the 100-day. These are the two strongest strategies in every universe we tested (PF 7.4 and 2.6 on futures/stocks after honest whipsaw accounting) — and the most slippage-sensitive, because their risk unit is a tiny bar.

Research track: Connors RSI2 (2009) & Turtle Trend (Donchian S1)

Two systems from outside the book, added for diversification: buy 2-period RSI < 5 above the 200-day average (mean reversion, 67% win, thin edge, heavy fee drag), and the original Turtle 20-day breakout with a 2×ATR stop — literally the opposite bet of Turtle Soup. Trend + mean-reversion + breakout rarely all fail at once; that's the point of holding all three families.

4. Money management — the part that actually decides survival

Every trade in every strategy obeys the same skeleton, hard-coded in the engine:

RuleBook sourceIn code
Whole position at once, never add to itCh. 3 rule 1one signal = one order
Protective stop resting from the moment of fillCh. 3 rule 2stop attached atomically (broker: Kraken conditional close)
First profitable close → stop to breakeven, then trailCh. 3 rule 3_exit_trade() swing loop
Range-expansion bar → take everythingCh. 3 rule 4ATR-multiple exit
No losing position held overnightCh. 2grace 1 bar (2 for breakouts)

Above the engine sit the gates — the layer that exists because of the CTA study. R = $100, the amount risked per trade:

Hard gates, checked daily, any breach = full stop: forward drawdown may never exceed 5R ($500); no single trade may lose more than 1.5R (worse means stops are broken).

Review gates (2026-07-31): ≥18 daily runs; net P&L after fees ≥ $0; 10–80 trades. All pass → a broker adapter with kill switches (48h halt at −3R day, permanent stop at 10R drawdown, 2-position cap). Any fail → another paper cycle. Thresholds may only ever tighten.

5. The two bugs — why you should distrust every backtest

Twice in this project a strategy looked brilliant until the daily-bar simulation was interrogated. Both bugs share a shape worth memorizing: silent optimism in the ambiguous cases.

Bug #1 — the stop that could never be hit

The original 80-20 code placed its protective stop one tick below the entry day's final low. But the final low isn't known until the day is over — and by construction, price never trades below its own low. The simulated stop was unhittable, and position size was computed from that hindsight stop. Result: a fabricated +$152,000 crypto backtest that evaporated the day the stop became honest.

Bug #2 — deleting the whipsaws

ID/NR4 rests orders on both sides of the bar. On the days when both sides got hit — the whipsaw days, the strategy's main cost — the simulator couldn't tell which fired first, so it skipped the trade entirely. Skipping exactly the losing days inflated the profit factor from 7.4 to 12.2. The fix books every ambiguous day as a full −1R loss.

The standing rule this created (now in CLAUDE.md): a backtest that looks too good is guilty until a lookahead hunt proves otherwise. The forward test exists because backtests written by the same hands that wrote the strategies inherit their authors' optimism.

6. Reading the numbers like an adult

Facts to hold onto whenever a dollar figure appears anywhere in this project:

Win rate is designed to be low. ~30% overall. The book's economics are many scratches and small losses paid for by a few multi-R winners; judging this system by win rate is like judging insurance by how often the house burns down.

Fees are a fixed tax per trade, and they discriminate. Measured on our own trades: futures ~0.8% of gross (cheapest, but $100-risk can't buy fractional contracts — micros only), commission-free stock brokers ~4–10%, Kraken crypto at the worst tier ~44% (Binance-tier roughly halves it). A thin-edge strategy like RSI2 loses three-quarters of its gross to fees; a fat-edge one like Turtle Trend loses an eighth.

Every backtest number you have seen is a ceiling. In-sample, slippage-free, sequence-ambiguous. The only numbers that count are on the dashboard's forward tracks, which started 2026-07-04 at exactly $0.00 — on purpose.

Expected outcome, honestly: at $100 risk, even a good result is tens of dollars a day of expectancy, arriving in lumps. Year one success = still alive, losses capped by the gates, knowing which strategies earn their slot. Compounding comes after proof, never before.

7. Quiz — five questions

1. Turtle Soup makes money when…
2. Why was the original 80-20 backtest (+$152k) fake?
3. The forward test's hard gates trigger a full stop when…
4. Why is an ID/NR4 day traded with orders on BOTH sides of the bar?
5. A strategy wins 67% of trades (RSI2) but nearly all its profit disappears in live-like conditions. The most likely culprit is…

Sources: Street Smarts (Raschke & Connors, 1996) — full PDF in the repo; Short-Term Trading Strategies That Work (Connors, 2009); Way of the Turtle (Faith, 2007). Rule-to-code mapping: docs/strategy_mapping.md. Honest results: docs/backtest_findings.md, docs/research_track.md. Roadmap: docs/plan_to_live.md.