A quant paper-trading sandbox for Bittensor subnet alpha tokens — built to learn what works before any real capital is at risk.
What this system does
Tao-Quant runs a small portfolio of strategies against the live Bittensor market every 30 minutes. Every trade is paper — no real money. Its job is to generate clean, structured data about which signals actually predict subnet returns so we can graduate the winners to real capital later.
How the pieces fit
Two sleeves run in parallel
Sleeve
What it trades
Why we run it
subnet_alphanomics
Top-6 subnets by composite score
The “real” research strategy — where we want to learn the most.
subnet_liquidity
Top-6 subnets by pool depth
Pure baseline — proves whether scoring beats just buying the biggest.
Why two sleeves, not one? If alphanomics outperforms the dumb-liquidity baseline over the test window, the signal is real. If it can’t beat liquidity, we know the composite score is pure complexity tax. (An earlier TAO macro-reference sleeve was removed after a cash-accounting bug; we may add a TAO benchmark back later as a read-only price comparison rather than a tradeable sleeve.)
Key facts
Cadence: 30-minute ticks via Windows Task Scheduler. Snapshots write every tick; trades fire only when a position drifts > 5% of sleeve equity from target.
Universe: 129 Bittensor subnets, screened down to ~30 eligible names per tick.
Capital: $10,000 paper per sleeve. Real-money capacity ceiling is around $10K total per Maymin (2026) — see Methodology tab.
Data: taostats.io free tier (5 req/min, throttled to 12.5s between calls). Coingecko for spot TAO/USD.
Friction modeled: per-pool fee_rate from API + AMM slippage (trade_tao / pool_tao × 0.5, capped 5%).
Bittensor, TAO, and dTAO subnets — the short version
Bittensor is a decentralized network where independent “subnets” compete to perform useful AI work (inference, training, scraping, audio, bio, etc). Each subnet has its own token (an “alpha” token). TAO is the macro asset that flows between them.
The three layers
Why subnet prices move
Emissions allocation. The protocol allocates new TAO emissions to subnets weighted by a 30-day half-life EMA of their net stake flow (“Taoflow”). More inflows → more emissions → buying pressure.
AMM mechanics. Each subnet has a single constant-product pool (TAO ⇄ alpha). A buy of x TAO into a pool with reserve τ produces a 2·x/τ % price change to first order — meaning smaller pools amplify more. This is Maymin (2026) Proposition 1.
Real-world demand. Validators must hold the subnet’s alpha token to vote on miner quality, so subnets with healthy validator participation have organic floor demand.
Network effects. A subnet with active miners + validators + rising emissions creates a flywheel; one without these collapses.
How a trade actually works
Why the SMB factor exists
Maymin’s arXiv 2603.29751 paper studied the cross-section of subnet returns and found that a small-minus-big portfolio (long the smallest market-cap subnets, short the largest) earned ~1% per day with a gross Sharpe of 3.84. The mechanism is the AMM: identical TAO emissions cause much bigger % moves in small pools, mechanically.
The catch — capacity. The same AMM that amplifies small-pool returns also amplifies your own trade impact. The strategy capacity ceiling per Maymin is roughly $10K — at $100K AUM you’re paying so much slippage you eat the alpha. This is a research and small-capital strategy, not a scalable one.
Glossary
Term
What it is
TAO
Native asset of the Bittensor network. Roughly analogous to ETH on Ethereum.
Subnet
A specialized network within Bittensor that does one type of work (e.g. text inference). Each has a number (netuid) and a name.
Alpha token
A subnet’s own token. Trades against TAO via the subnet’s AMM pool.
dTAO
The decentralized-TAO upgrade that gave each subnet its own pool and price discovery (vs the prior proportional-emission model).
Taoflow
The 30-day EMA of net stake flow into a subnet. The protocol uses this to set emissions.
Validator
An entity that scores miner work and earns emissions. Must stake TAO + hold subnet alpha.
Miner
An entity that performs the subnet’s actual work (inference, scraping, etc) and earns emissions.
SMB factor
Small-minus-big — long small market caps, short large. The dominant alpha factor per Maymin.
How the bot decides what to trade
Every 30 minutes the bot pulls a live snapshot, runs each subnet through a screener, scores the survivors, builds a target portfolio, and trades the deltas. Each step is intentionally simple so we can attribute outcomes to specific signals.
The full pipeline
1. The screener — drop dust and unhealthy subnets
Out of 129 subnets, we eliminate any that fail any of the following gates:
Filter
Threshold
Reason
Liquidity (raw)
≥ 1e11 (~100 TAO)
Drops dust pools where price is meaningless.
Pool depth ceiling
≤ 50,000 TAO
Pools above this have negligible AMM amplification on a $10K trade (Maymin/DSV bound).
Active validators
≥ 8
Network health — too few validators = capture risk.
Active miners
≥ 10
Real activity — ~50% of subnets have ≤1 miner.
1-week price change
≥ −30%
No falling-knife catches.
Price > 0
strict
Sanity.
2. The alphanomics scorer (v4)
Each surviving subnet gets nine component scores in [0,1]. The composite is a weighted sum:
Component
Weight
What it measures
Source
size_inverse
0.25
Percentile rank by −mcap — small wins
Maymin SMB
alphanomics_short
0.15
1-day net stake flow percentile
Taoflow proxy
alphanomics_med
0.15
7-day net stake flow percentile
Taoflow proxy
momentum_1m
0.15
30-day price change, clipped ±50%
Maymin WML30
momentum_1w
0.10
7-day price change, clipped ±20%
Maymin WML7
emission_yield
0.05
Daily emission / mcap
Maymin HML_EMIS
buy_sell_pressure
0.05
24h buy_vol / total_vol
Order-flow
network_health
0.05
validators × miners, percentile
Sanity tilt
flow_acceleration
0.05
1d flow vs 7d daily-avg
Catalyst
Why size dominates the weights. The Maymin paper found SMB has Fama-MacBeth t = 3.23 vs < 2 for most other factors in the cross-section. The 0.25 weight reflects “strongest signal in the academic record + mechanically grounded in the AMM.” Other components are present mostly to diversify against pure size, not because we trust them as much.
3. Portfolio construction
Top-K = 6. Six equally-weighted positions per sleeve. Empirically this gives enough diversification without spreading capital so thin that AMM slippage dominates each trade.
Max 25% per name. Hard cap so a single subnet can never blow up the sleeve.
Equal weighting, not score-weighted. Score-weighted concentrates in the top name and amplifies single-subnet risk.
4. Execution & friction
Trade trigger: only when |target − current| > 5% of sleeve equity. Acts as the natural friction filter to avoid over-churning.
Slippage:min(0.05, (trade_tao / pool_tao) × 0.5) — capped at 5%. Linear approximation of AMM impact.
Fees: per-pool fee_rate from the API, ~5 bps default.
Mark-to-market: equity is stamped every tick regardless of whether a trade fires, so we get a continuous P&L curve.
5. The liquidity baseline (control arm)
Same screener, same K=6 equal-weight construction, same execution — but the score is just raw pool liquidity. This is the dumb-money strategy. If alphanomics can’t beat it, the composite score is adding nothing.
Inception-to-date P&L by sleeve
All numbers are live, pulled from the local SQLite DB at report build time. Each sleeve started with $10,000 paper.
Equity curves
Current open positions — Alphanomics
Subnet
Qty
Avg cost (USD)
Notional
Current open positions — Liquidity baseline
Subnet
Qty
Avg cost (USD)
Notional
Recent trades (last 8 per sleeve)
Alphanomics
Time (UTC)
Subnet
Side
Qty
Px USD
Liquidity
Time (UTC)
Subnet
Side
Qty
Px USD
What we’re actually trying to learn — and how
Paper trading is cheap. The point is not “simulate making money,” it’s to generate the dataset that lets us decide whether to risk real money — and if so, on which signals.
The four hypotheses being tested
#
Hypothesis
Falsified if…
H1
SMB is real on dTAO subnets in the current regime
size_inverse component has near-zero forward IC after 30 days of capture
H2
Net stake flow predicts forward returns (the Taoflow story)
alphanomics_short / _med components have IC ≈ 0 or negative
H3
Composite scoring beats raw liquidity baseline
alphanomics sleeve underperforms liquidity sleeve over a full month
H4
Subnet selection beats just owning TAO
both subnet sleeves underperform spot TAO total return
How we measure it
Test windows
Days 1–7: shake-out. Watch for execution bugs, weird snapshot data, edge cases. No conclusions drawn.
Days 7–14: first IC numbers. Run scripts/ic_analysis.py to compute Spearman correlation between each scoring component and forward returns. Identify components with |IC| > 0.05 and consistent sign.
Days 14–30: reweight. Drop or down-weight components with no predictive power. Add Taoflow EMA proper (we have enough history at this point).
Day 30+: regime test. Compare sleeves head-to-head over a full month containing varied TAO macro conditions. Decide: graduate to Phase 2, iterate, or kill.
Why the directive is “more trades, not fewer”
Real-money strategies want to minimize trades to save fees. This system wants to maximize trades to maximize the labeled dataset — every trade is one row of (signal at t, return by t+1). The 5%-of-equity threshold is the natural friction; we don’t artificially gate further.
Risks we’re explicitly tracking
Survivorship bias. Deregistered subnets disappear from the API. We need a separate snapshot table for failed subnets — currently a TODO.
Capacity. All findings are valid only at $10K AUM scale. Maymin is explicit that the SMB factor decays sharply with size.
Regime risk. The first 30 days might land in a strong bull or strong bear for TAO. The 30-day backtest already showed all strategies losing money in the post-Covenant window. We need multi-regime data before any go/no-go.
Free-tier API. 5 req/min throttle means a tick takes ~25s. Acceptable today; if we add new pull endpoints, recount the budget.
Single-writer SQLite. Fine at this scale; replace if we ever fan out the runner.
Bottom line. The bot is not a money machine — it’s an instrumented experiment whose output is a clean answer to “which subnet signals actually work, and at what scale?” Real-money allocation is a downstream decision that lives or dies by the data this dashboard accumulates.