Loading
Loading
Neuron registration trends
Financial institutions, trading firms, and AI systems need accurate probability distributions of future price movements, not just point estimates. Traditional single-value forecasts fail to capture the full range of possible outcomes, volatility clustering, or tail risks—critical for options pricing, portfolio hedging, and risk management. A decentralized network of independent forecasters, rewarded for forecast accuracy, creates pressure to model realistic price dynamics. Synth Subnet solves this by incentivizing miners to generate multiple simulated price paths that reflect their best estimate of price probability distributions. Validators score these paths against realized prices using Continuous Ranked Probability Score (CRPS), which measures both calibration and sharpness. Only accurate forecasters earn emissions; poor forecasters lose stake and participation over time. The network runs three separate competitions (Crypto 1-hour, Crypto 24-hour, Commodities/Equities 24-hour) with independent scoring and emissions, creating specialization incentives. Miners receive prompts specifying asset, time horizon, and path count; they generate simulated paths via their own models; validators score them after the time window closes and publish results on-chain.
Use cases were auto-generated from the GitHub repository and may not reflect the latest changes.
Synth Subnet is a Bittensor decentralized network where miners generate probabilistic price forecasts as ensembled simulated price paths for crypto, equity, and commodity assets across 24-hour and 1-hour timeframes. Validators score miners using Continuous Ranked Probability Score (CRPS) against realized prices, allocate emissions via softmax based on rolling weighted averages, and create synthetic price distribution data for AI agents and options trading.
Miners receive prompts from validators specifying an asset, time horizon, time increments, and number of simulated paths required. Each miner runs a generative/simulation model to produce multiple realistic price paths and returns them before a deadline. Validators score all submissions using CRPS on realized vs. predicted price distributions across multiple time intervals, store per-request scores, and compute rolling-average leaderboard scores weighted by asset and time window.
A scoring cycle runs independently, calculating CRPS periodically, then combines leaderboard scores from three competitions (Crypto 1h, Crypto 24h, Commodities/Equities 24h) and sets Bittensor weights via softmax, allocating emissions. The system uses a PostgreSQL backend to persist predictions, scores, and historical snapshots. Validators run separate processes for low-frequency (24h) and high-frequency (1h) prompt cycles and a dedicated scoring cycle, synchronized via a SequentialScheduler.
Miners are filtered by validator stake (≥65000) and validator permit to prevent prediction leakage.
Predictive intelligence for financial markets and beyond
This information was auto-extracted from the GitHub repository and may be incomplete or out of date. Always refer to the subnet's GitHub repository for the latest instructions.
For each prompt, CRPS is calculated on price changes (basis points) across multiple time increments (e.g., 5min, 30min, 3h, 24h for 24h prompts; 1m through 60m plus gap series for 1h prompts). The crypto-1h competition also adds a realized volatility term (split into 60min, 15min, 5min block volatilities). Per-prompt scores are submitted as the sum of CRPS values.
Invalid/late submissions receive the 90th percentile score. Prompt scores within the rolling window for each asset are weighted by asset-specific coefficients (e.g., BTC=1.0, ETH=0.7064, SP500=3.4379) and combined into a leaderboard score. Final emissions via softmax with per-competition temperature (β=0.3 for 1h, β=0.15 for 24h).
Lower scores are better. Three competitions score independently, each receiving 1/3 of total emissions, then summed for miners on multiple competitions.
The sections above were auto-generated from the GitHub repository and may not reflect the latest changes. View repository
FAQs were auto-generated from the GitHub repository and may not reflect the latest changes.
Holder & total-staked metrics as of 3h ago (hourly snapshot)
Minimum CPU: 2 cores at 2.5 GHz. Recommended: 4 cores at 3.5 GHz. 12 GB swap space minimum, 8 GB recommended. SSD with 1000 IOPS minimum, 5000 IOPS recommended. GPU optional but not required.
Minimum CPU: 16 cores at 2.5 GHz. Recommended: 16 cores at 3.5 GHz. 12 GB swap minimum, 24 GB recommended. SSD with 1000 IOPS minimum, 5000 IOPS recommended. Validator processes run in parallel using multiprocessing (default 2 processes, configurable via --neuron.nprocs).
Clone the Synth subnet repository
git clone https://github.com/synthdataco/synth-subnet.git && cd synth-subnet
Install Rust (required for dependencies)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Install Node.js, npm, and pkg-config
sudo apt update && sudo apt install nodejs npm pkg-config
Install PM2 process manager globally
sudo npm install pm2 -g
Install uv package manager
curl -LsSf https://astral.sh/uv/install.sh | sh && source $HOME/.local/bin/env
Create virtual environment and install all locked Python dependencies
uv sync
Activate Python virtual environment and set PYTHONPATH
source .venv/bin/activate && export PYTHONPATH=.
Create Bittensor cold and hot wallets
btcli wallet create --wallet.name miner --wallet.hotkey default
Register wallet on mainnet (netuid 50). For testnet use --netuid 247 --network test
btcli subnet register --wallet.name miner --wallet.hotkey default --netuid 50
Open port 8091 in firewall (ufw)(optional)
sudo ufw allow 8091
Test model produces valid prediction format locally(optional)
python synth/miner/run.py
Start miner with PM2 (after editing miner.config.js with your wallet/hotkey)
pm2 start miner.config.js
Clone the Synth subnet repository
git clone https://github.com/synthdataco/synth-subnet.git && cd synth-subnet
Add deadsnakes PPA for Python 3.11
sudo add-apt-repository ppa:deadsnakes/ppa
Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Install Node.js, npm, Python 3.11, and pkg-config
sudo apt update && sudo apt install nodejs npm python3.11 pkg-config
Install PM2 process manager
sudo npm install pm2 -g
Install uv package manager
curl -LsSf https://astral.sh/uv/install.sh | sh && source $HOME/.local/bin/env
Create virtual environment and install all locked Python dependencies
uv sync
Activate Python virtual environment
source .venv/bin/activate
Create and configure .env file with PostgreSQL credentials
cp .env.example .env && nano .env
Run database migrations
alembic upgrade head
Create Bittensor cold and hot wallets
btcli wallet create --wallet.name validator --wallet.hotkey default
Register wallet on subnet (netuid 50 for mainnet, 247 for testnet)
btcli subnet register --wallet.name validator --wallet.hotkey default --netuid 50
Register validator on root network
btcli root register --wallet.name validator --wallet.hotkey default
Stake TAO to become a validator
btcli stake add --wallet.name validator --wallet.hotkey default --netuid 50
Start validator with PM2
pm2 start validator.config.js