<_Thomas Lee Harvey

Infrastructure, verified — not pitched.

Two servers, four live public links, two trading systems trading real capital rules, one provenance system, one social platform. Every number below was re-checked against the running systems before this page was written, including the ones that don't look good yet.

Download this as a PDF

What's actually running

Two VPS, joined by a private Tailscale mesh. SSH between them never leaves that mesh. Public access runs through Caddy with real TLS certificates on nip.io hostnames — no purchased domain, no shortcuts on the certificate itself.

Two of those links point at the same Into the Void instance through different hosts — proof it's one real backend being served twice, not two divergent copies pretending to be in sync.

The Kraken bot, trading real capital

$208.90
current account equity
1.466
lifetime profit factor, real trades
36.4%
win rate, 33 closed trades
+$3.36
net lifetime P&L

Low win rate, positive profit factor — that's not a contradiction, it's a momentum book: most trades are small losses cut early, winners are allowed to run. Eight signal families share one risk pool: pulse_kama, pulse_kama_secondary, donchian, cci_breakout, rsi2_meanrev, bb_condexit, pulse_secondary, a cointegration pairs strategy, and a time-series-momentum leg on ETH.

Pairs strategy — out-of-sample profit factor per validated leg

ETH/UNI · UNI
4.16
ALGO/DOT · DOT
2.21
ATOM/DOT · ATOM
1.95
ETH/XMR · ETH
1.69
LINK/UNI · LINK
1.65
ALGO/LINK · LINK
1.47
ETH/SOL · SOL
1.43
LINK/UNI · UNI
1.27
ETH/XMR · XMR
1.26
ETH/UNI · ETH
1.26
ATOM/DOT · DOT
1.16
ALGO/LINK · ALGO
1.06

12 pair-legs, 7 pairs, each validated on a chronological 70/30 split against real Binance history with Kraken's real 0.26% taker fee charged on both legs of every simulated trade. Futures trading exists in code — it is deliberately gated off: no API credentials configured, feature flag defaults false. Not live, not pretended to be.

A real export, unedited

symbol,side,signal_type,pnl_pct,result,exit_reason
XRP/USD,long,donchian,-3.84,loss,stop
ZEC/USD,long,ut_bot_ema,-8.01,loss,stop
ALGO/USD,long,ut_bot_ema,-6.15,loss,stop
ETH/USD,long,tsmom_eth,+1.34,win,weekly_rebalance
ETH/USD,long,tsmom_eth,-0.03,loss,weekly_rebalance
UNI/USD,long,pairs_LINK/UNI_UNI,+14.93,win,target
INJ/USD,long,vwap_bands,+15.60,win,target

Columns trimmed for width; source: daily_trades_export.csv, 33 real rows, unedited values.

PumpSniper — losing money on paper, on purpose

0.5256 SOL
real on-chain wallet balance
0.609
lifetime paper profit factor
41.4%
win rate, 1,999 paper trades

Stated plainly: this strategy currently loses money in paper trading. That's the point of paper trading, and it's the honest number, not a rounded-up one.

What makes this infrastructure rather than a losing bot: a real autonomous watcher (live_readiness_watcher.py) checks a strict bar every run — chronological 70/30 split, profit factor above 1.0 on both sides, minimum 30 trades per split — and has correctly never fired. Most recent check: train PF 0.788, test PF 0.688. Below the bar, so nothing changed. It's never promoted PumpSniper to real capital, because PumpSniper has never earned it. A separate research thread this session found that momentum in the first six ticks after entry classifies the eventual outcome with 91.7% out-of-sample accuracy — a real, validated signal, correctly labeled as pending deployment, not live.

What the discipline actually caught

The methodology: nothing reaches real capital without a chronological — time-ordered, not shuffled — 70/30 split, a minimum trade count, and a profit-factor bar on both sides. Here's what that bar has rejected recently, by name.

CASE 1 — DECLINED

A martingale exit that looked flawless

A DCA-style exit showed a 90%+ win rate in backtest. A live-feed check against real, fresh data found one symbol's profit factor was a thin 1.09, another showed zero losses only because the available data window never contained a real downturn to test against. Never promoted. It still sits as a chart-only display, not a trading rule.

CASE 2 — DISABLED, TWICE RE-CHECKED

A tiered exit that doubled profit factor — in aggregate

A tiered take-profit scheme looked roughly 2x better than the live exit logic in a whole-sample comparison. A chronological split told a different story: out-of-sample, the median trade was 0.78% worse, and only 14.6% of individual trades actually improved. Re-run independently on a larger sample later the same day — same answer, within a rounding error. Disabled for that reason, not re-enabled casually.

Both of these are presented as rejections, not failures to hide — the discipline is the product.

OM109 — a dual signature for things that shouldn't exist

A hash-chain provenance system across 11 art collections, 711 pieces. Each piece gets signed twice: the first signature authenticates the artwork itself, the second authenticates the first signature. Change either, and the fingerprint breaks.

The system's genesis seed was, until tonight, a hardcoded constant in a now-private GitHub repository — meaning anyone who'd read the source could have recomputed a "valid" signature for a forged piece. Moved to an environment variable, same literal value preserved so every existing signature still verifies, nothing broken retroactively. A newly generated piece for this project, Dreamwright №001, was signed with its own freshly generated seed — never reusing the original collection's secret. See the gallery: dreamwright-om109.173.199.122.43.nip.io.

Into the Void

A separate social content platform — real bcrypt password hashing, real session tokens, fully isolated from the trading bot's credentials. Topics span AI, crypto, trading, and art.

Fixed this session: YouTube audio silently failing to play on posts. The actual cause was a browser policy, not a bug — Chrome blocks unmuted autoplay unless the user already interacted with the page. Fixed with muted autoplay and a visible tap-to-unmute control, which works unconditionally. Added: a 30-second clip selector that reads a video's real duration through the YouTube player API, and a native NFT post type in the main feed showing real signature and rarity data with real explanatory captions — seeded with one actual OM109-signed piece; two more were blocked by an image API's paywall mid-session, left honestly incomplete rather than faked.