Skip to main content

Live Bittensor · Subnet 21 · updated daily

SN21 leaderboard

Results for 5 October 2026 · 115 miners scored of 256 registered

Full record
Verify this day

Every score for 5 October 2026 is in a signed daily receipt anchored on chain. Re-check it yourself with the public verifier from the SN21 repo:

python scripts/verify_day.py --url https://hope-bittensor-api.onrender.com --day 2026-10-05

It checks the signature, the hash chain and the on-chain anchor, and recomputes every score. Add --miner <your hotkey> to check only yours.

Miners earning

20 / 129

paid today, out of everyone scored

Needed to earn

+0.017

edge of place 20, the last paid miner

Top miner

UID 218

+0.034 edge · 0.593 accuracy

Scores settled

2,444,796

predictions checked against real outcomes

Leaderboard

129 miners · ranked by edge over the field

Place UID Edge accuracy below Result
1 218 +0.034 0.593 Earning · Elite
— 75 +0.033 0.583 Below the alpha hold
Why?
  • Below the alpha hold Held 0.0 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
2 171 +0.030 0.580 Earning · Elite
3 44 +0.030 0.581 Earning · Elite
4 72 +0.029 0.602 Earning · Elite
5 1 +0.027 0.576 Earning · Elite
6 234 +0.026 0.575 Earning · Elite
7 19 +0.025 0.588 Earning · Elite
8 199 +0.024 0.581 Earning · Elite
9 110 +0.023 0.572 Earning · Elite
10 148 +0.022 0.589 Earning · Elite
11 245 +0.022 0.586 Earning · Competitive
12 160 +0.021 0.569 Earning · Competitive
— 91 +0.020 0.600 Below the alpha hold
Why?
  • Below the alpha hold Held 0.0 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
13 196 +0.020 0.580 Earning · Competitive
14 163 +0.020 0.568 Earning · Competitive
15 211 +0.020 0.576 Earning · Competitive
16 32 +0.019 0.567 Earning · Competitive
17 194 +0.019 0.578 Earning · Competitive
18 124 +0.019 0.567 Earning · Competitive
19 188 +0.018 0.566 Earning · Competitive
20 9 +0.017 0.574 Earning · Competitive
Earning cut · place 20 · edge +0.017
— 42 +0.017 0.574 Below the earning cut
Why?
  • Below the earning cut Ranked below the earning cut. The score stands and the model keeps running — the paid set is a fixed size, so placing outside it is not a penalty and carries nothing forward.
— 117 +0.017 0.566 Below the alpha hold
Why?
  • Below the alpha hold Held 0.0 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 254 +0.016 0.565 Below the earning cut
Why?
  • Below the earning cut Ranked below the earning cut. The score stands and the model keeps running — the paid set is a fixed size, so placing outside it is not a penalty and carries nothing forward.
— 95 +0.016 0.622 Duplicate model
Why?
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once.
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 72 · 5HErWb...Vafn
— 250 +0.015 0.577 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 19 · 5G3pK6...shLV
— 125 +0.015 0.573 Below the earning cut
Why?
  • Below the earning cut Ranked below the earning cut. The score stands and the model keeps running — the paid set is a fixed size, so placing outside it is not a penalty and carries nothing forward.
— 141 +0.014 0.620 Duplicate model
Why?
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once.
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 218 · 5FC1bH...wLh7
— 186 +0.013 0.562 Below the alpha hold
Why?
  • Below the alpha hold Held 0.0 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 133 +0.012 0.559 Below the earning cut
Why?
  • Below the earning cut Ranked below the earning cut. The score stands and the model keeps running — the paid set is a fixed size, so placing outside it is not a penalty and carries nothing forward.
— 177 +0.011 0.566 Below the earning cut
Why?
  • Below the earning cut Ranked below the earning cut. The score stands and the model keeps running — the paid set is a fixed size, so placing outside it is not a penalty and carries nothing forward.
— 241 +0.011 0.572 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 19 · 5G3pK6...shLV
— 154 +0.010 0.558 Below the alpha hold
Why?
  • Below the alpha hold Held 507.5 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 225 +0.010 0.569 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 3 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 186 · 5HZ6xj...MMgj
— 28 +0.010 0.557 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 42 · 5FWwba...3mdw
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 6 · 5GgSss...9P3D
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 6 · 5GgSss...9P3D
— 114 +0.010 0.557 Duplicate model
Why?
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 6 · 5GgSss...9P3D
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 6 · 5GgSss...9P3D
— 142 +0.010 0.557 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 3 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 110 · 5GCYWv...goaT
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 6 · 5GgSss...9P3D
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 6 · 5GgSss...9P3D
— 224 +0.010 0.557 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 42 · 5FWwba...3mdw
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 6 · 5GgSss...9P3D
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 6 · 5GgSss...9P3D
— 6 +0.010 0.557 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 9 · 5H8xxV...KdLK
— 202 +0.010 0.557 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 9 · 5H8xxV...KdLK
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 6 · 5GgSss...9P3D
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 6 · 5GgSss...9P3D
— 200 +0.010 0.557 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 4 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 114 · 5Gy2i5...TQnq
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 6 · 5GgSss...9P3D
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 6 · 5GgSss...9P3D
— 136 +0.009 0.556 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 19 · 5G3pK6...shLV
— 162 +0.009 0.607 Tenure
Why?
  • Tenure Scored on 6 of the 7 days needed. Scores still count and the model keeps running — tenure accrues by showing up.
— 13 +0.008 0.604 Below the alpha hold
Why?
  • Below the alpha hold Held 0.0 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 178 +0.008 0.556 Below the earning cut
Why?
  • Below the earning cut Ranked below the earning cut. The score stands and the model keeps running — the paid set is a fixed size, so placing outside it is not a penalty and carries nothing forward.
— 222 +0.008 0.610 Tenure
Why?
  • Tenure Scored on 4 of the 7 days needed. Scores still count and the model keeps running — tenure accrues by showing up.
— 149 +0.007 0.556 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 3 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 186 · 5HZ6xj...MMgj
— 50 +0.007 0.555 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 188 · 5GNxWv...6z3G
— 134 +0.007 0.563 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 4 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 114 · 5Gy2i5...TQnq
— 58 +0.005 0.596 Below the earning cut
Why?
  • Below the earning cut Ranked below the earning cut. The score stands and the model keeps running — the paid set is a fixed size, so placing outside it is not a penalty and carries nothing forward.
— 89 +0.004 0.551 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 75 · 5FkH3C...nPHC
— 230 +0.004 0.551 Below the earning cut
Why?
  • Below the earning cut Ranked below the earning cut. The score stands and the model keeps running — the paid set is a fixed size, so placing outside it is not a penalty and carries nothing forward.
— 48 +0.002 0.548 Below the alpha hold
Why?
  • Below the alpha hold Held 7.7 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 88 +0.000 0.547 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 75 · 5FkH3C...nPHC
— 43 −0.000 0.546 Duplicate model
Why?
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once.
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 249 · 5DVFGX...ffqU
— 205 −0.001 0.557 Below the alpha hold
Why?
  • Below the alpha hold Held 0.0 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 249 −0.001 0.545 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 4 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 43 · 5GbCae...25xi
— 244 −0.001 0.546 Below the earning cut
Why?
  • Below the earning cut Ranked below the earning cut. The score stands and the model keeps running — the paid set is a fixed size, so placing outside it is not a penalty and carries nothing forward.
— 76 −0.002 0.544 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 4 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 43 · 5GbCae...25xi
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once.
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 249 · 5DVFGX...ffqU
— 214 −0.002 0.544 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 75 · 5FkH3C...nPHC
— 60 −0.003 0.544 Duplicate model
Why?
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once.
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 249 · 5DVFGX...ffqU
— 66 −0.004 0.562 Below the alpha hold
Why?
  • Below the alpha hold Held 0.0 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 198 −0.005 0.541 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 75 · 5FkH3C...nPHC
— 140 −0.006 0.541 Below the earning cut
Why?
  • Below the earning cut Ranked below the earning cut. The score stands and the model keeps running — the paid set is a fixed size, so placing outside it is not a penalty and carries nothing forward.
— 92 −0.006 0.551 Below the earning cut
Why?
  • Below the earning cut Ranked below the earning cut. The score stands and the model keeps running — the paid set is a fixed size, so placing outside it is not a penalty and carries nothing forward.
— 39 −0.007 0.539 Below the earning cut
Why?
  • Below the earning cut Ranked below the earning cut. The score stands and the model keeps running — the paid set is a fixed size, so placing outside it is not a penalty and carries nothing forward.
— 53 −0.009 0.555 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 4 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 43 · 5GbCae...25xi
— 30 −0.011 0.535 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 42 · 5FWwba...3mdw
— 25 −0.011 0.535 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 188 · 5GNxWv...6z3G
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 30 · 5EgxN9...xCSx
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 30 · 5EgxN9...xCSx
— 240 −0.011 0.535 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 42 · 5FWwba...3mdw
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 30 · 5EgxN9...xCSx
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 30 · 5EgxN9...xCSx
— 143 −0.011 0.535 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 188 · 5GNxWv...6z3G
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 30 · 5EgxN9...xCSx
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 30 · 5EgxN9...xCSx
— 104 −0.011 0.535 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 9 · 5H8xxV...KdLK
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 30 · 5EgxN9...xCSx
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 30 · 5EgxN9...xCSx
— 130 −0.011 0.535 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 42 · 5FWwba...3mdw
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 30 · 5EgxN9...xCSx
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 30 · 5EgxN9...xCSx
— 112 −0.011 0.534 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 188 · 5GNxWv...6z3G
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 163 · 5GWMRX...ALTz
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 163 · 5GWMRX...ALTz
— 164 −0.013 0.532 Below the alpha hold
Why?
  • Below the alpha hold Held 0.1 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 34 −0.015 0.531 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 9 · 5H8xxV...KdLK
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 50 · 5EhW5L...YAxF
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 50 · 5EhW5L...YAxF
— 120 −0.015 0.538 Below the alpha hold
Why?
  • Below the alpha hold Held 0.0 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 63 −0.018 0.534 Below the earning cut
Why?
  • Below the earning cut Ranked below the earning cut. The score stands and the model keeps running — the paid set is a fixed size, so placing outside it is not a penalty and carries nothing forward.
— 69 −0.029 0.515 Below the alpha hold
Why?
  • Below the alpha hold Held 0.0 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 132 −0.034 0.510 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 4 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 114 · 5Gy2i5...TQnq
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 203 · 5Dz8LD...nxjh
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as · 5C812d...BBuc
— 203 −0.034 0.510 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 230 · 5EAcGJ...PdZq
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once.
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as · 5C812d...BBuc
— 208 −0.034 0.509 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 230 · 5EAcGJ...PdZq
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once.
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as · 5C812d...BBuc
— 41 −0.037 0.506 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 2 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 160 · 5CyUYf...yyYU
— 103 −0.041 0.503 Below the earning cut
Why?
  • Below the earning cut Ranked below the earning cut. The score stands and the model keeps running — the paid set is a fixed size, so placing outside it is not a penalty and carries nothing forward.
— 2 −0.045 0.511 Below the alpha hold
Why?
  • Below the alpha hold Held 0.0 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 82 −0.047 0.495 Below the alpha hold
Why?
  • Below the alpha hold Held 0.8 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 26 −0.050 0.504 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 42 · 5FWwba...3mdw
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 90 · 5Fbi74...jaRS
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 140 · 5C5kbk...BZGi
— 238 −0.050 0.504 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 9 · 5H8xxV...KdLK
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 90 · 5Fbi74...jaRS
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 140 · 5C5kbk...BZGi
— 90 −0.053 0.501 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 3 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 44 · 5Evf2A...voUX
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once.
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 140 · 5C5kbk...BZGi
— 251 −0.053 0.501 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 9 · 5H8xxV...KdLK
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 90 · 5Fbi74...jaRS
  • Same model lineage Same behaviour lineage as an earlier submission; the earliest in the group earns. earns as UID 140 · 5C5kbk...BZGi
— 33 −0.055 0.497 Below the alpha hold
Why?
  • Below the alpha hold Held 0.0 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 181 −0.056 0.485 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 230 · 5EAcGJ...PdZq
— 138 −0.077 0.462 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 19 · 5G3pK6...shLV
— 137 −0.078 0.467 Below the alpha hold
Why?
  • Below the alpha hold Held 0.0 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 100 −0.079 0.460 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 230 · 5EAcGJ...PdZq
— 105 −0.082 0.464 Below the alpha hold
Why?
  • Below the alpha hold Held 0.0 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 247 −0.315 0.215 Below the alpha hold
Why?
  • Below the alpha hold Held 0.0 alpha against the 1,000 required today. Zero weight for the day; the standing and every score stand, and the seat pays again from the next run on which the hold is met.
— 204 −0.332 0.203 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 92 · 5GZ1yJ...1PrF
— 31 −0.347 0.186 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 188 · 5GNxWv...6z3G
— 167 −0.379 0.151 Duplicate model
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 42 · 5FWwba...3mdw
  • Duplicate model This model is already earning under an earlier submission. Identical models pay once. The seat is held by the hotkey shown. earns as UID 242 · 5EceD1...S9kP
— 242 −0.379 0.151 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 42 · 5FWwba...3mdw
— 55 −0.394 0.139 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 92 · 5GZ1yJ...1PrF
— 0 −0.423 0.104 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 188 · 5GNxWv...6z3G
— 189 −0.425 0.102 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 3 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 110 · 5GCYWv...goaT
— 40 −0.425 0.102 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 188 · 5GNxWv...6z3G
— 12 −0.425 0.102 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 188 · 5GNxWv...6z3G
— 252 −0.425 0.102 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 188 · 5GNxWv...6z3G
— 54 −0.450 0.083 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 92 · 5GZ1yJ...1PrF
— 14 −0.467 0.062 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 5 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 92 · 5GZ1yJ...1PrF
— 17 −0.482 0.043 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 42 · 5FWwba...3mdw
— 243 −0.482 0.042 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 9 · 5H8xxV...KdLK
— 231 −0.482 0.042 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 9 · 5H8xxV...KdLK
— 8 −0.482 0.042 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 10 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 9 · 5H8xxV...KdLK
— 239 −0.483 0.041 One seat per coldkey
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 3 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 44 · 5Evf2A...voUX
— 70 −0.521 0.000 Below baseline
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 13 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 125 · 5G3vwv...iZDK
— 237 −0.521 0.000 Below baseline
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 13 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 125 · 5G3vwv...iZDK
— 56 −0.521 0.000 Below baseline
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 13 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 125 · 5G3vwv...iZDK
— 108 −0.521 0.000 Below baseline
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 13 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 125 · 5G3vwv...iZDK
— 216 −0.521 0.000 Below baseline
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 13 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 125 · 5G3vwv...iZDK
— 61 −0.521 0.000 Below baseline
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 13 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 125 · 5G3vwv...iZDK
— 20 −0.521 0.000 Below baseline
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 13 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 125 · 5G3vwv...iZDK
— 169 −0.521 0.000 Below baseline
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 13 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 125 · 5G3vwv...iZDK
— 45 −0.521 0.000 Below baseline
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 13 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 125 · 5G3vwv...iZDK
— 152 −0.521 0.000 Below baseline
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 13 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 125 · 5G3vwv...iZDK
— 118 −0.521 0.000 Below baseline
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 13 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 125 · 5G3vwv...iZDK
— 170 −0.521 0.000 Below baseline
Why?
  • One seat per coldkey One coldkey holds one earning seat. This owner runs 13 hotkeys on the subnet; the one shown holds the seat today. seat held by UID 125 · 5G3vwv...iZDK
— 115 0.616 Building evidence
Why?
  • Placement floor Evidence 13.2 of the 50 needed for placement. Every settled entry adds to it; the row gets a standing and a rank once the floor is reached, and earns nothing before that.
— 192 0.341 Building evidence
Why?
  • Placement floor Evidence 13.2 of the 50 needed for placement. Every settled entry adds to it; the row gets a standing and a rank once the floor is reached, and earns nothing before that.

Click a UID to open that miner's page. Edge is the average lead over the field on the same changes — it ranks and pays; accuracy is shown beneath it.

About this data

Daily stream — live. Each day's settled standings are published here as they mature, with outcomes measured at 7, 14 and 28 days. Earlier weekly epochs remain in the Epochs tab as the historical record. About the daily stream →

Prediction performance by change type. For every kind of account change: the best model's score, the current winner's beside it, and the score broken into direction, size, range and goal. Performance tab → Full page →

More on SN21: daily numbers, score distribution, history, method, API and performance

Pulse

Pulse · Operational snapshot

Headline numbers from the latest published day. SN21 publishes a new day of settled results every day; these tiles describe the most recent one. The leaders are in the leaderboard at the top of the page.

Pool size

115

miners

Trailing 4 epochs awaiting more closes

115/256 passed the participation gate

Baseline beat rate

100.0%

of pool

Trailing 4 epochs awaiting more closes

Share above the conditional-prior baseline

Elite tier

11

60.0% of emissions

Trailing 4 epochs awaiting more closes

EMA ≥ baseline + 1σ this epoch

Cohort context · this epoch vs all published

  • Pool size115→ 72nd of 96 published (range 15–141)
  • Baseline beat rate100.0%→ highest beat rate yet (range 76.0%–100.0%)
  • Top score0.622→ 26th of 96 epochs with histograms

Tier band · Pool vs emissions

Where the qualifying pool sits — and where the rewards flow.

Live

Share of pool

measured

Share of emissions

policy constant

Elite

EMA ≥ baseline + 1σ

pool 9.6% · emit 60.0%

Competitive

beats baseline

pool 19.1% · emit 30.0%

Participating

passed gate

pool 19.1% · emit 10.0%

Tier rail · Emission shares + epoch context

4 metrics

Competitive

22

0.30 emissions share

Participating

22

0.10 emissions share

Multiplier

1.00×

Search

Formula

1.2.1

@ 6b24e0c

Find yourself on chain

Opens taostats

Enter your numeric UID (the slot you registered into on netuid 21). This opens SN21's miner table on taostats with your UID copied: paste it into the table's search box to see your hotkey, stake, incentive and emission.

Don't know your UID? Paste your hotkey (SS58 address starting with 5). It is copied for you: paste it into the search box on SN21's miner table to find your UID.

Per IA D-05, no per-miner identifier ever leaves this server. The browser navigates straight to taostats.

Prediction performance

For every kind of account change since the rich-data baseline (2026-08-20): the best model, the current winner beside it, and each score broken into its parts — 2,444,796 settled scores from 151 models.

Full page →

9 groups covering 166 change types. Open a row to see the types inside it.

Budget change — when a daily budget was raised or lowered 3,035 Reliable UID 72 6 types

Across 3,035 such changes (313,435 model predictions), a prediction here is reliable. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

down 731 Roughly right UID 222
down large 710 Reliable UID 115
flat 206 Roughly right UID 204
unknown 4 Too early —
up 572 Roughly right UID 91
up large 812 Roughly right UID 72
Bid strategy switch — when the bid strategy was switched from one type to another 65 Reliable UID 72 6 types

Across 65 such changes (6,621 model predictions), a prediction here is reliable. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

maximize conversions → maximize conversion value 3 Too early —
maximize conversions → target spend 9 Reliable UID 63
target spend → maximize conversions 5 Roughly right —
switched to Maximize Conversion Value 11 Roughly right UID 9
switched to Maximize Conversions 21 Reliable UID 204
unknown → target spend 16 Reliable UID 72
Bid target change — when a bid-strategy target value changed (e.g. Target CPA $60 → $50) 337 Roughly right UID 222 13 types

Across 337 such changes (34,691 model predictions), a prediction here is roughly right. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

ad-group bid change 14 Reliable UID 198
maximize conversion value · down 40 Roughly right UID 251
maximize conversion value · down large 3 Too early —
maximize conversion value · flat 9 Not reliable UID 124
switched to Maximize Conversion Value 2 Too early —
maximize conversion value · up 37 Roughly right UID 91
maximize conversion value · up large 13 Roughly right UID 204
maximize conversions · down 60 Roughly right UID 17
maximize conversions · down large 23 Reliable UID 72
maximize conversions · flat 11 Roughly right UID 112
switched to Maximize Conversions 13 Roughly right UID 196
maximize conversions · up 90 Reliable UID 31
maximize conversions · up large 22 Roughly right UID 141
Negative keyword add — when negative keywords were added 1,697 Reliable UID 141 15 types

Across 1,697 such changes (174,257 model predictions), a prediction here is reliable. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

negative keyword add 327 Reliable —
broad · 1 27 Roughly right UID 13
broad · 11+ 10 Roughly right UID 204
broad · 2-10 27 Roughly right UID 90
exact · 1 269 Reliable UID 242
exact · 11+ 154 Roughly right UID 141
exact · 2-10 411 Reliable UID 95
mixed · 11+ 92 Reliable UID 242
mixed · 2-10 103 Roughly right UID 222
phrase · 1 83 Reliable UID 222
phrase · 11+ 54 Reliable UID 55
phrase · 2-10 124 Reliable UID 242
unknown · 1 7 Reliable —
unknown · 11+ 4 Too early —
unknown · 2-10 5 Reliable UID 177
Targeting change — when keywords, audiences, placements or other targeting were changed 1,713 Reliable UID 162 13 types

Across 1,713 such changes (176,219 model predictions), a prediction here is reliable. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

audience change 38 Reliable UID 247
bid on a keyword / audience / placement 268 Reliable UID 13
targeting criteria change 451 Reliable UID 141
criterion enable 52 Reliable UID 55
criterion pause 258 Reliable UID 148
criterion remove 19 Reliable UID 238
criterion url change 3 Too early —
demographic change 17 Reliable UID 194
geo change 24 Reliable UID 26
keyword add 347 Reliable —
keyword remove 128 Reliable —
negative keyword remove 50 Reliable UID 239
schedule change 58 Reliable UID 13
Campaign and ad-group pause / enable — when an existing campaign or ad group was paused or turned back on 520 Reliable UID 13 3 types

Across 520 such changes (53,538 model predictions), a prediction here is reliable. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Roughly right Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

adgroup enable 14 Reliable UID 14
adgroup pause 63 Reliable UID 95
campaign pause 443 Reliable UID 13
Ads & assets — when an ad or asset was created, edited, paused or removed inside an existing campaign 459 Reliable — 6 types

Across 459 such changes (46,789 model predictions), a prediction here is reliable. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

ad create 33 Reliable UID 167
ad edit 40 Reliable UID 90
ad enable 2 Too early —
ad pause 61 Reliable UID 55
ad remove 7 Reliable UID 194
asset change 316 Reliable UID 242
Combined changes — when several kinds of change happened together 2,748 Reliable UID 115 101 types

Across 2,748 such changes (281,659 model predictions), a prediction here is reliable. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

adgroup bid change + 1 more 12 Roughly right UID 90
adgroup bid change + 2 more 3 Too early —
adgroup bid change + 3 more 1 Too early —
adgroup change + 1 more 1 Too early —
adgroup change + 2 more 3 Too early —
adgroup enable + 1 more 3 Too early —
adgroup enable + 2 more 5 Reliable UID 9
adgroup enable + 3 more 1 Too early —
adgroup pause + 1 more 47 Reliable UID 252
adgroup pause + 10 more 1 Too early —
adgroup pause + 11 more 1 Too early —
adgroup pause + 2 more 30 Roughly right UID 141
adgroup pause + 3 more 31 Reliable UID 31
adgroup pause + 4 more 27 Reliable UID 95
adgroup pause + 5 more 28 Reliable UID 171
adgroup pause + 6 more 9 Reliable UID 19
adgroup pause + 7 more 5 Too early UID 245
adgroup pause + 8 more 15 Reliable UID 55
adgroup pause + 9 more 2 Too early —
adgroup target change + 1 more 1 Too early —
ad create + 1 more 89 Roughly right UID 13
ad create + 10 more 2 Too early —
ad create + 11 more 1 Too early —
ad create + 12 more 1 Too early —
ad create + 2 more 60 Roughly right UID 95
ad create + 3 more 32 Roughly right UID 55
ad create + 4 more 26 Reliable UID 204
ad create + 5 more 12 Roughly right UID 72
ad create + 6 more 8 Roughly right UID 245
ad create + 7 more 8 Reliable UID 9
ad create + 8 more 5 Reliable UID 92
ad create + 9 more 2 Too early —
ad edit + 1 more 24 Roughly right UID 204
ad edit + 2 more 3 Too early —
ad edit + 3 more 2 Too early —
ad edit + 6 more 1 Too early —
ad enable + 1 more 11 Roughly right UID 55
ad enable + 3 more 1 Too early —
ad pause + 1 more 6 Reliable UID 125
ad pause + 2 more 1 Too early —
asset change + 1 more 20 Reliable UID 91
asset change + 2 more 5 Reliable UID 124
audience change + 1 more 9 Roughly right UID 177
audience change + 2 more 2 Too early —
audience change + 3 more 1 Too early —
bid strategy change + 1 more 7 Reliable —
bid strategy change + 2 more 12 Reliable UID 242
bid strategy change + 3 more 3 Too early —
bid strategy change + 4 more 2 Too early —
bid strategy change + 6 more 1 Too early —
bid strategy change + 9 more 1 Too early —
budget change + 1 more 522 Reliable UID 95
budget change + 10 more 3 Too early —
budget change + 2 more 117 Reliable —
budget change + 3 more 58 Reliable UID 58
budget change + 4 more 51 Reliable —
budget change + 5 more 23 Reliable UID 66
budget change + 6 more 12 Reliable UID 242
budget change + 7 more 6 Reliable UID 9
budget change + 8 more 5 Reliable UID 234
budget change + 9 more 1 Too early —
campaign pause + 1 more 114 Reliable UID 141
campaign pause + 10 more 1 Too early —
campaign pause + 2 more 7 Reliable UID 9
campaign pause + 3 more 10 Reliable UID 72
campaign pause + 4 more 1 Too early —
campaign pause + 5 more 1 Too early —
campaign pause + 6 more 2 Too early —
campaign pause + 7 more 1 Too early —
criterion bid change + 1 more 21 Reliable UID 12
criterion bid change + 2 more 1 Too early —
criterion change + 1 more 70 Reliable UID 91
criterion change + 2 more 3 Too early —
criterion enable + 1 more 18 Reliable UID 148
criterion enable + 2 more 2 Too early —
criterion pause + 1 more 13 Roughly right UID 204
criterion remove + 1 more 3 Too early —
keyword add + 1 more 302 Reliable —
keyword add + 2 more 198 Reliable UID 12
keyword add + 3 more 97 Reliable —
keyword add + 4 more 53 Reliable UID 13
keyword add + 5 more 12 Reliable UID 31
keyword add + 6 more 3 Too early —
keyword add + 7 more 1 Too early —
keyword remove + 1 more 33 Reliable UID 162
keyword remove + 2 more 8 Reliable UID 234
keyword remove + 3 more 4 Too early —
negative keyword add + 1 more 206 Reliable —
negative keyword add + 2 more 43 Reliable UID 53
negative keyword add + 3 more 15 Reliable UID 238
negative keyword add + 4 more 1 Too early —
negative keyword add + 5 more 2 Too early —
target value change + 1 more 70 Reliable UID 141
target value change + 11 more 1 Too early —
target value change + 2 more 35 Roughly right UID 141
target value change + 3 more 7 Reliable UID 31
target value change + 4 more 3 Too early —
target value change + 5 more 1 Too early —
target value change + 6 more 1 Too early —
target value change + 7 more 1 Too early —
target value change + 8 more 1 Too early —
Other changes — when other changes 113 Reliable UID 17 3 types

Across 113 such changes (11,589 model predictions), a prediction here is reliable. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

adgroup bid change 59 Roughly right UID 13
adgroup change 53 Reliable UID 17
adgroup remove 1 Too early —

9 groups covering 161 change types. Open a row to see the types inside it.

Budget change — when a daily budget was raised or lowered 2,565 Roughly right UID 72 6 types

Across 2,565 such changes (264,469 model predictions), a prediction here is roughly right. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

down 604 Roughly right UID 91
down large 606 Roughly right UID 72
flat 154 Roughly right —
unknown 4 Too early —
up 469 Roughly right UID 91
up large 728 Roughly right UID 91
Bid strategy switch — when the bid strategy was switched from one type to another 58 Reliable UID 72 6 types

Across 58 such changes (5,894 model predictions), a prediction here is reliable. What that's made of:

  • Roughly right Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

maximize conversions → maximize conversion value 3 Too early —
maximize conversions → target spend 10 Reliable UID 19
target spend → maximize conversions 5 Roughly right —
switched to Maximize Conversion Value 9 Roughly right UID 72
switched to Maximize Conversions 15 Reliable UID 66
unknown → target spend 16 Reliable UID 72
Bid target change — when a bid-strategy target value changed (e.g. Target CPA $60 → $50) 295 Roughly right UID 218 13 types

Across 295 such changes (30,331 model predictions), a prediction here is roughly right. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

ad-group bid change 14 Roughly right UID 138
maximize conversion value · down 33 Roughly right UID 242
maximize conversion value · down large 3 Too early —
maximize conversion value · flat 9 Roughly right UID 196
switched to Maximize Conversion Value 2 Too early —
maximize conversion value · up 36 Roughly right UID 245
maximize conversion value · up large 14 Reliable UID 14
maximize conversions · down 55 Roughly right UID 242
maximize conversions · down large 20 Roughly right UID 72
maximize conversions · flat 10 Reliable UID 242
switched to Maximize Conversions 13 Roughly right UID 196
maximize conversions · up 70 Reliable UID 12
maximize conversions · up large 16 Roughly right UID 148
Negative keyword add — when negative keywords were added 1,417 Roughly right — 15 types

Across 1,417 such changes (145,162 model predictions), a prediction here is roughly right. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

negative keyword add 330 Roughly right UID 245
broad · 1 20 Roughly right UID 154
broad · 11+ 9 Roughly right UID 178
broad · 2-10 22 Roughly right UID 90
exact · 1 209 Roughly right UID 242
exact · 11+ 122 Reliable —
exact · 2-10 337 Roughly right UID 91
mixed · 11+ 79 Reliable UID 242
mixed · 2-10 72 Roughly right UID 90
phrase · 1 65 Reliable UID 91
phrase · 11+ 46 Reliable UID 167
phrase · 2-10 95 Reliable UID 242
unknown · 1 6 Roughly right UID 39
unknown · 11+ 2 Too early —
unknown · 2-10 3 Too early —
Targeting change — when keywords, audiences, placements or other targeting were changed 1,418 Reliable — 13 types

Across 1,418 such changes (145,669 model predictions), a prediction here is reliable. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

audience change 31 Reliable UID 26
bid on a keyword / audience / placement 221 Reliable UID 91
targeting criteria change 341 Reliable UID 19
criterion enable 47 Roughly right —
criterion pause 201 Reliable UID 91
criterion remove 15 Reliable UID 1
criterion url change 3 Too early —
demographic change 15 Reliable UID 31
geo change 20 Reliable UID 9
keyword add 320 Reliable —
keyword remove 111 Roughly right —
negative keyword remove 41 Roughly right —
schedule change 52 Reliable UID 72
Campaign and ad-group pause / enable — when an existing campaign or ad group was paused or turned back on 485 Reliable — 3 types

Across 485 such changes (49,877 model predictions), a prediction here is reliable. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

adgroup enable 11 Roughly right UID 1
adgroup pause 57 Roughly right UID 242
campaign pause 417 Reliable —
Ads & assets — when an ad or asset was created, edited, paused or removed inside an existing campaign 392 Reliable UID 204 6 types

Across 392 such changes (39,792 model predictions), a prediction here is reliable. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

ad create 32 Roughly right UID 218
ad edit 32 Reliable UID 177
ad enable 2 Too early —
ad pause 50 Reliable UID 55
ad remove 9 Roughly right UID 117
asset change 267 Roughly right UID 242
Combined changes — when several kinds of change happened together 2,308 Reliable — 96 types

Across 2,308 such changes (235,747 model predictions), a prediction here is reliable. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

adgroup bid change + 1 more 8 Roughly right UID 55
adgroup bid change + 2 more 3 Too early —
adgroup bid change + 3 more 1 Too early —
adgroup change + 1 more 1 Too early —
adgroup change + 2 more 3 Too early —
adgroup enable + 1 more 2 Too early —
adgroup enable + 2 more 3 Too early —
adgroup pause + 1 more 37 Roughly right UID 90
adgroup pause + 10 more 1 Too early —
adgroup pause + 2 more 25 Roughly right —
adgroup pause + 3 more 28 Reliable —
adgroup pause + 4 more 22 Roughly right UID 160
adgroup pause + 5 more 25 Roughly right UID 14
adgroup pause + 6 more 8 Roughly right UID 19
adgroup pause + 7 more 5 Too early UID 171
adgroup pause + 8 more 13 Roughly right UID 55
adgroup pause + 9 more 2 Too early —
adgroup target change + 1 more 1 Too early —
ad create + 1 more 65 Roughly right UID 17
ad create + 10 more 2 Too early —
ad create + 12 more 1 Too early —
ad create + 2 more 50 Roughly right UID 26
ad create + 3 more 30 Roughly right UID 251
ad create + 4 more 20 Reliable UID 72
ad create + 5 more 11 Roughly right UID 19
ad create + 6 more 8 Roughly right UID 117
ad create + 7 more 6 Roughly right UID 50
ad create + 8 more 3 Too early —
ad create + 9 more 1 Too early —
ad edit + 1 more 21 Roughly right UID 211
ad edit + 2 more 3 Too early —
ad edit + 3 more 2 Too early —
ad edit + 6 more 1 Too early —
ad enable + 1 more 11 Roughly right UID 2
ad enable + 3 more 1 Too early —
ad pause + 1 more 5 Not reliable —
ad pause + 2 more 1 Too early —
asset change + 1 more 16 Roughly right UID 247
asset change + 2 more 6 Roughly right —
audience change + 1 more 8 Reliable UID 199
audience change + 2 more 2 Too early —
audience change + 3 more 1 Too early —
bid strategy change + 1 more 5 Roughly right —
bid strategy change + 2 more 9 Reliable UID 19
bid strategy change + 3 more 2 Too early —
bid strategy change + 4 more 1 Too early —
bid strategy change + 6 more 1 Too early —
bid strategy change + 9 more 1 Too early —
budget change + 1 more 433 Roughly right UID 72
budget change + 10 more 2 Too early —
budget change + 2 more 99 Reliable UID 91
budget change + 3 more 47 Roughly right —
budget change + 4 more 38 Roughly right —
budget change + 5 more 22 Reliable UID 55
budget change + 6 more 12 Roughly right UID 242
budget change + 7 more 5 Reliable UID 124
budget change + 8 more 4 Too early —
budget change + 9 more 1 Too early —
campaign pause + 1 more 111 Roughly right UID 14
campaign pause + 10 more 1 Too early —
campaign pause + 2 more 8 Reliable UID 225
campaign pause + 3 more 9 Reliable UID 55
campaign pause + 4 more 1 Too early —
campaign pause + 5 more 2 Too early —
campaign pause + 6 more 2 Too early —
campaign pause + 7 more 1 Too early —
criterion bid change + 1 more 14 Reliable UID 12
criterion bid change + 2 more 1 Too early —
criterion change + 1 more 51 Reliable UID 91
criterion change + 2 more 3 Too early —
criterion enable + 1 more 14 Reliable UID 55
criterion enable + 2 more 2 Too early —
criterion pause + 1 more 12 Roughly right UID 72
criterion remove + 1 more 1 Too early —
keyword add + 1 more 265 Reliable —
keyword add + 2 more 166 Reliable —
keyword add + 3 more 87 Reliable —
keyword add + 4 more 51 Reliable UID 231
keyword add + 5 more 12 Reliable UID 31
keyword add + 6 more 2 Too early —
keyword add + 7 more 1 Too early —
keyword remove + 1 more 26 Reliable UID 31
keyword remove + 2 more 8 Reliable —
keyword remove + 3 more 4 Too early —
negative keyword add + 1 more 173 Reliable —
negative keyword add + 2 more 33 Roughly right UID 53
negative keyword add + 3 more 12 Reliable —
negative keyword add + 4 more 1 Too early —
negative keyword add + 5 more 2 Too early —
target value change + 1 more 50 Roughly right —
target value change + 11 more 1 Too early —
target value change + 2 more 24 Roughly right UID 26
target value change + 3 more 7 Reliable UID 117
target value change + 4 more 3 Too early —
target value change + 6 more 1 Too early —
target value change + 8 more 1 Too early —
Other changes — when other changes 90 Reliable UID 17 3 types

Across 90 such changes (9,196 model predictions), a prediction here is reliable. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

adgroup bid change 48 Roughly right UID 91
adgroup change 41 Reliable UID 17
adgroup remove 1 Too early —

9 groups covering 131 change types. Open a row to see the types inside it.

Budget change — when a daily budget was raised or lowered 1,471 Roughly right UID 218 6 types

Across 1,471 such changes (153,773 model predictions), a prediction here is roughly right. What that's made of:

  • Roughly right Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

down 315 Roughly right UID 19
down large 400 Roughly right UID 218
flat 68 Roughly right —
unknown 4 Too early —
up 224 Roughly right UID 19
up large 460 Roughly right UID 218
Bid strategy switch — when the bid strategy was switched from one type to another 11 Roughly right UID 241 4 types

Across 11 such changes (1,126 model predictions), a prediction here is roughly right. What that's made of:

  • Not reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

maximize conversions → maximize conversion value 1 Too early —
target spend → maximize conversions 2 Too early —
switched to Maximize Conversions 3 Too early —
unknown → target spend 5 Reliable UID 230
Bid target change — when a bid-strategy target value changed (e.g. Target CPA $60 → $50) 125 Roughly right UID 241 13 types

Across 125 such changes (13,073 model predictions), a prediction here is roughly right. What that's made of:

  • Roughly right Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

ad-group bid change 14 Roughly right UID 254
maximize conversion value · down 9 Reliable —
maximize conversion value · down large 2 Too early —
maximize conversion value · flat 5 Too early UID 198
switched to Maximize Conversion Value 2 Too early —
maximize conversion value · up 15 Roughly right UID 245
maximize conversion value · up large 4 Too early —
maximize conversions · down 23 Roughly right UID 14
maximize conversions · down large 9 Roughly right UID 154
maximize conversions · flat 6 Reliable UID 230
switched to Maximize Conversions 13 Roughly right UID 196
maximize conversions · up 15 Reliable UID 8
maximize conversions · up large 8 Roughly right UID 8
Negative keyword add — when negative keywords were added 527 Roughly right UID 218 15 types

Across 527 such changes (54,993 model predictions), a prediction here is roughly right. What that's made of:

  • Roughly right Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

negative keyword add 332 Roughly right UID 218
broad · 1 7 Reliable UID 44
broad · 11+ 2 Too early —
broad · 2-10 8 Roughly right UID 50
exact · 1 31 Roughly right UID 218
exact · 11+ 24 Reliable UID 19
exact · 2-10 58 Roughly right UID 44
mixed · 11+ 15 Reliable UID 19
mixed · 2-10 11 Reliable UID 55
phrase · 1 14 Roughly right UID 14
phrase · 11+ 6 Roughly right UID 75
phrase · 2-10 14 Roughly right UID 154
unknown · 1 2 Too early —
unknown · 11+ 2 Too early —
unknown · 2-10 1 Too early —
Targeting change — when keywords, audiences, placements or other targeting were changed 517 Roughly right — 13 types

Across 517 such changes (54,581 model predictions), a prediction here is roughly right. What that's made of:

  • Roughly right Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

audience change 10 Not reliable UID 0
bid on a keyword / audience / placement 81 Roughly right UID 250
targeting criteria change 100 Roughly right UID 241
criterion enable 11 Roughly right —
criterion pause 79 Roughly right UID 239
criterion remove 6 Reliable UID 1
criterion url change 2 Too early —
demographic change 4 Too early —
geo change 4 Too early —
keyword add 147 Roughly right —
keyword remove 40 Roughly right —
negative keyword remove 13 Roughly right UID 26
schedule change 20 Reliable UID 225
Campaign and ad-group pause / enable — when an existing campaign or ad group was paused or turned back on 259 Roughly right — 3 types

Across 259 such changes (27,104 model predictions), a prediction here is roughly right. What that's made of:

  • Not reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

adgroup enable 3 Too early —
adgroup pause 21 Reliable UID 225
campaign pause 235 Roughly right —
Ads & assets — when an ad or asset was created, edited, paused or removed inside an existing campaign 65 Roughly right UID 218 6 types

Across 65 such changes (6,696 model predictions), a prediction here is roughly right. What that's made of:

  • Roughly right Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

ad create 17 Reliable UID 218
ad edit 1 Too early —
ad enable 1 Too early —
ad pause 18 Roughly right UID 19
ad remove 6 Roughly right UID 154
asset change 22 Roughly right UID 0
Combined changes — when several kinds of change happened together 1,022 Roughly right UID 218 68 types

Across 1,022 such changes (105,493 model predictions), a prediction here is roughly right. What that's made of:

  • Roughly right Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

adgroup bid change + 1 more 1 Too early —
adgroup change + 1 more 1 Too early —
adgroup change + 2 more 3 Too early —
adgroup enable + 1 more 1 Too early —
adgroup enable + 2 more 2 Too early —
adgroup pause + 1 more 11 Roughly right UID 136
adgroup pause + 2 more 10 Not reliable UID 75
adgroup pause + 3 more 18 Reliable —
adgroup pause + 4 more 8 Not reliable UID 244
adgroup pause + 5 more 12 Not reliable UID 19
adgroup pause + 6 more 5 Too early UID 34
adgroup pause + 7 more 1 Too early —
adgroup pause + 8 more 4 Too early —
adgroup pause + 9 more 2 Too early —
adgroup target change + 1 more 1 Too early —
ad create + 1 more 15 Roughly right UID 8
ad create + 2 more 19 Not reliable UID 177
ad create + 3 more 12 Not reliable UID 244
ad create + 4 more 5 Reliable UID 254
ad create + 5 more 2 Too early —
ad create + 6 more 4 Too early —
ad create + 7 more 3 Too early —
ad create + 8 more 2 Too early —
ad edit + 1 more 4 Too early —
ad enable + 1 more 4 Too early —
ad enable + 3 more 1 Too early —
ad pause + 2 more 1 Too early —
asset change + 1 more 2 Too early —
asset change + 2 more 3 Too early —
audience change + 1 more 2 Too early —
audience change + 2 more 1 Too early —
audience change + 3 more 1 Too early —
bid strategy change + 1 more 1 Too early —
bid strategy change + 2 more 8 Reliable UID 202
bid strategy change + 3 more 2 Too early —
bid strategy change + 9 more 1 Too early —
budget change + 1 more 197 Roughly right UID 245
budget change + 2 more 47 Roughly right —
budget change + 3 more 19 Not reliable UID 225
budget change + 4 more 27 Roughly right —
budget change + 5 more 14 Roughly right UID 225
budget change + 6 more 5 Too early UID 186
budget change + 7 more 4 Too early —
budget change + 8 more 3 Too early —
campaign pause + 1 more 96 Roughly right UID 234
campaign pause + 2 more 3 Too early —
campaign pause + 3 more 3 Too early —
campaign pause + 5 more 2 Too early —
criterion bid change + 1 more 8 Not reliable UID 205
criterion change + 1 more 10 Roughly right UID 241
criterion change + 2 more 1 Too early —
criterion enable + 1 more 4 Too early —
keyword add + 1 more 127 Roughly right UID 241
keyword add + 2 more 69 Reliable —
keyword add + 3 more 49 Reliable —
keyword add + 4 more 29 Reliable UID 231
keyword add + 5 more 8 Reliable UID 148
keyword add + 6 more 1 Too early —
keyword remove + 1 more 4 Too early —
keyword remove + 2 more 4 Too early —
keyword remove + 3 more 5 Reliable UID 1
negative keyword add + 1 more 61 Roughly right —
negative keyword add + 2 more 15 Roughly right UID 75
negative keyword add + 3 more 2 Too early —
target value change + 1 more 20 Roughly right UID 0
target value change + 2 more 7 Roughly right UID 75
target value change + 3 more 3 Too early —
target value change + 4 more 2 Too early —
Other changes — when other changes 29 Reliable UID 26 3 types

Across 29 such changes (3,022 model predictions), a prediction here is reliable. What that's made of:

  • Reliable Direction — called the change up or down correctly on the goal metric
  • Reliable Size — how close the predicted size of the effect was
  • Not reliable Range — how often the real result fell inside the predicted range
  • Not reliable Goal — how close on the goal number itself (CPA or ROAS)

Today's leaderboard #1 (UID 218) on this change type: Reliable.

Broken down by kind:

adgroup bid change 8 Roughly right UID 82
adgroup change 20 Reliable UID 26
adgroup remove 1 Too early —

A row reads Too early until at least 500 of its changes have settled. Open any row for the score breakdown and the best model.

Today's slice — accuracy by change type on BD-2026-10-05

Accuracy by change type

Change type Predictions Field average Winning model
Combined changes 7679 0.618 0.663
Budget change 6403 0.605 0.639
Negative keyword add 2381 0.610 0.661
Asset change 830 0.678 0.754
Campaign pause 521 0.650 0.713
Criterion pause 1754 0.551 0.588
Bid target change 312 0.436 0.416
Targeting criteria change 312 0.647 0.695
Criterion bid change 721 0.628 0.632
Keyword removal 412 0.552 0.509
Audience change 309 0.708 0.779
Adgroup bid change 103 0.527 0.430
Schedule change 412 0.483 0.419
Adgroup change 212 0.651 0.685
Ad pause 103 0.417 0.360
Negative keyword remove 103 0.478 0.431
Geo change 103 0.697 0.804
Ad edit 103 0.514 0.456
Change type Predictions Field average Winning model
Combined changes 12036 0.553 0.586
Budget change 13056 0.558 0.609
Negative keyword add 6528 0.562 0.590
Asset change 3570 0.528 0.552
Campaign pause 1632 0.603 0.603
Criterion pause 1020 0.588 0.598
Bid target change 1530 0.537 0.522
Targeting criteria change 1734 0.579 0.613
Criterion bid change 612 0.642 0.599
Keyword add 1530 0.516 0.535
Keyword removal 612 0.507 0.451
Audience change 408 0.689 0.790
Adgroup bid change 510 0.587 0.608
Schedule change 204 0.632 0.638
Adgroup pause 408 0.503 0.502
Adgroup change 204 0.533 0.542
Bid strategy switch 306 0.559 0.602
Negative keyword remove 204 0.476 0.555
Geo change 102 0.569 0.617
Change type Predictions Field average Winning model
Combined changes 13068 0.526 0.565
Budget change 11781 0.540 0.568
Negative keyword add 7326 0.560 0.577
Asset change 1683 0.536 0.605
Campaign pause 2376 0.511 0.530
Criterion pause 1287 0.488 0.515
Bid target change 1782 0.530 0.585
Targeting criteria change 1485 0.577 0.667
Criterion bid change 1683 0.541 0.537
Keyword add 990 0.552 0.600
Keyword removal 792 0.486 0.461
Audience change 495 0.429 0.388
Adgroup bid change 396 0.443 0.469
Schedule change 297 0.551 0.626
Adgroup pause 198 0.518 0.640
Adgroup change 99 0.577 0.615
Bid strategy switch 198 0.518 0.666
Ad pause 396 0.547 0.657
Negative keyword remove 99 0.394 0.416
Geo change 99 0.654 0.717
Ad edit 99 0.318 0.526
New ad 198 0.602 0.686
Adgroup enable 99 0.518 0.609
Demographic change 99 0.496 0.645

Scores are on the same 0-to-1 scale as the leaderboard standing. "Winning model" is the current leaderboard #1's average on that change type; "—" means it has no settled predictions there yet.

Score distribution

Distribution · Score histogram + tier breakdown

Per IA D-05 the public surface publishes the shape of the score distribution — not per-miner identifiers. Bins are k-anonymity-collapsed to a 5-miner floor; the chain remains the source of truth for raw per-UID data.

Results · BD-2026-10-05

Search ×1.00

Plain-language summary

20 of 129 miners are earning today.

Earning today

20/129

16% of the field

Not earning

109

most: a second hotkey on one owner

Top score

0.622

leader of the pool

Score range

0.118

Mixed range

Why the other 109 are not earning

  • 47 a second hotkey on one owner
  • 26 running a model that already earns
  • 18 holding less alpha than the published hold
  • 14 ranked below the earning cut
  • 2 still building a track record
  • 2 below the paying positions

Each row below names the rule that applied to it, and who holds the seat where that matters. Scores are unaffected — they are facts either way.

Verifiable against chain

Signed and chain-anchored

2026-10-05

Every published day is attested and hash-chained to the day before, and the feed's rolling root is committed on chain — so one anchor covers the whole history, not a single block span.

Reproduce locally

python scripts/verify_day.py --url https://hope-bittensor-api.onrender.com --day 2026-10-05

Recomputes every score from the day's signed receipt. Prints "ok": true when they reproduce, and names the entry that disagrees when they do not.

Scoring · v1.2.1 · commit 6b24e0c115

The per-miner leaderboard is at the top of this page.

Score range · 115 miners scored

Aggregate summary

Scores landed between 0.504 and 0.622 — top score 0.622

Range collapses to a 15.5-point window

mean 0.481
p25 0.504
median 0.548
p75 0.568
top 0.622

0.474

0.629

Axis is auto-zoomed to the data range so percentile positions are legible even when the underlying histogram bins are coarse. Score cuts shown above are exact; positioning is proportional.

Score distribution for SN21 epoch BD-2026-10-05 (Search) Histogram of 115 qualifying miners across 17 score bins. Y-axis is miner count; x-axis is epoch-weighted score in the range 0.00 to 1.00. Each bin contains at least 5 miners per the k-anonymity rule. Equivalent data table follows below the chart. 0 12.5 25 37.5 50 Score 0.00–0.10: 7 miners Score 0.10–0.25: 11 miners Score 0.25–0.30: 0 miners Score 0.30–0.35: 0 miners Score 0.35–0.40: 0 miners Score 0.40–0.45: 0 miners Score 0.45–0.50: 7 miners Score 0.50–0.55: 33 miners Score 0.55–0.60: 50 miners Score 0.60–0.65: 7 miners Score 0.65–0.70: 0 miners Score 0.70–0.75: 0 miners Score 0.75–0.80: 0 miners Score 0.80–0.85: 0 miners Score 0.85–0.90: 0 miners Score 0.90–0.95: 0 miners Score 0.95–1.00: 0 miners 0.00 0.10 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 Score (epoch-weighted mean) Miners
Summary: mean 0.48, median 0.55, p25 0.50, p75 0.57, max 0.62. Bins are collapsed to satisfy a 5-miner minimum (k-anonymity floor) per IA D-05. The on-chain block range and scoring formula commit below let you reconcile every number to the validator output.
Score range Miner count Share of pool
0.00–0.10 7 6.1%
0.10–0.25 11 9.6%
0.25–0.30 0 0.0%
0.30–0.35 0 0.0%
0.35–0.40 0 0.0%
0.40–0.45 0 0.0%
0.45–0.50 7 6.1%
0.50–0.55 33 28.7%
0.55–0.60 50 43.5%
0.60–0.65 7 6.1%
0.65–0.70 0 0.0%
0.70–0.75 0 0.0%
0.75–0.80 0 0.0%
0.80–0.85 0 0.0%
0.85–0.90 0 0.0%
0.90–0.95 0 0.0%
0.95–1.00 0 0.0%

Position bands · Find where you sit

Score cuts at every quartile — match your score to a band.

5 bands

Band Score cut Tier hint What it means
Top score
0.622 Elite · 60% Highest score achieved by any miner in this epoch’s qualifying pool.
Top 25%
0.568 Elite · 60% Scoring at or above this puts you in the top quartile of the pool.
Mean score
0.481 — Average across the qualifying pool — useful proxy for the conditional-prior baseline.
Median
0.548 Competitive · 30% Half the pool scored at or above this, half below.
Bottom 25%
0.504 Participating · 10% Scoring at or below this puts you in the bottom quartile of the pool.

Tier hints are heuristic from this epoch's percentile cuts. Actual tier membership depends on EMA across multiple epochs vs the conditional-prior baseline + 1σ. See Methodology.

Score → band calculator

Heuristic

Enter a value between 0.000 and 1.000. Defaults shown match this epoch's distribution.

p25 0.504 · p50 0.548 · p75 0.568 · max 0.622

Band placement

Enter a score above

—

—

Headline numbers

Pool size
115
Baseline beat rate
100.0%
Epoch type
Search multiplier 1×
Registered UIDs
256

115/256 passed the gate.

Tier distribution

Tier Count Share of pool Share of emissions
Elite 11 9.6% 60.0%
Competitive 22 19.1% 30.0%
Participating 22 19.1% 10.0%

Elite-tier floor: met this epoch.

Accuracy by change type moved to the Performance tab — the cumulative picture with best model, current winner and score parts.

What does the score mean?

The score is an accuracy score from 0 to 1, where 1 is a perfect prediction. A score of 0.6 means the model is about 60% of the way to perfect. It is not the percentage of predictions that were correct.

It blends four things:

  • Closeness (half the score). The model gives a low, middle and high estimate for each change. This measures how close that range sat to what actually happened.
  • Honest confidence (a fifth). When the model claims to be sure, the real result should land inside its range about as often as it claims. Sounding confident and being wrong costs score.
  • Direction (15%). Did it call the move up or down correctly.
  • The account's own goal (15%). A lead business is judged on leads, a shop on sales value — the model has to get the metric that account actually cares about.

The leaderboard number is not a single day: it is the average of a model's recent predictions, where recent work counts more than old (a score twelve days old counts half). Predictions are locked before any outcome exists, and a day's first score settles about 15 days after its basket — 7 days of outcomes plus a settling week so late conversions count.

Mining? Look up your own scores by hotkey — per-day entries, win/lose by change type, and the signed receipt that lets you reproduce every number.

On-chain record

Block range
0–0
Scoring formula version
1.2.1 @ 6b24e0c
Validator output snapshot
2026-10-05T08:35:05.178Z
Chain fetch
2026-10-05T08:35:05.048Z
Horizon set
7d, 14d, 28d

Published epochs

Epochs · Frozen records, newest first

Every closed epoch publishes as a permanent record at /predictions/epochs/[release_key]. Published rows are immutable per IA D-13; corrections appear as separate rows, not edits.

61 epoch slots · newest first · 22 have corrections

  1. BD-2026-10-05 Search · campaign-level pool 115 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6b24e0c
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  2. BD-2026-10-04 Search · campaign-level pool 128 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6b24e0c
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  3. BD-2026-10-03 Search · campaign-level pool 128 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6b24e0c
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  4. BD-2026-10-02 Search · campaign-level pool 127 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6b24e0c
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  5. BD-2026-10-01 Search · campaign-level pool 123 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6b24e0c
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  6. BD-2026-09-30 Search · campaign-level pool 125 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6b24e0c
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  7. BD-2026-09-29 Search · campaign-level pool 125 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6b24e0c
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  8. BD-2026-09-28 Search · campaign-level pool 125 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6b24e0c
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  9. BD-2026-09-27 Search · campaign-level pool 127 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6b24e0c
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  10. BD-2026-09-26 Search · campaign-level pool 128 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6b24e0c
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  11. BD-2026-09-25 Search · campaign-level pool 130 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6b24e0c
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  12. BD-2026-09-24 Search · campaign-level pool 130 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6b24e0c
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  13. BD-2026-09-23 Search · campaign-level pool 130 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6b24e0c
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  14. BD-2026-09-22 Search · campaign-level pool 130 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6b24e0c
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  15. BD-2026-09-21-COR-1 Search · campaign-level Corrected · 1 prior pool 128 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 85ed3c8
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  16. BD-2026-09-20-COR-1 Search · campaign-level Corrected · 1 prior pool 129 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 46a35dd
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  17. BD-2026-09-19 Search · campaign-level pool 130 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 725fdf7
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  18. BD-2026-09-18 Search · campaign-level pool 131 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 098210f
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  19. BD-2026-09-17 Search · campaign-level pool 132 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 098210f
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  20. BD-2026-09-16 Search · campaign-level pool 132 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 2375996
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  21. BD-2026-09-15 Search · campaign-level pool 132 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 8b68ec4
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  22. BD-2026-09-14-COR-1 Search · campaign-level Corrected · 1 prior pool 132 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 884ae5e
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  23. BD-2026-09-13-COR-2 Search · campaign-level Corrected · 2 prior pool 128 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 73b7de0
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  24. BD-2026-09-12-COR-2 Search · campaign-level Corrected · 2 prior pool 128 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 73b7de0
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  25. BD-2026-09-11 Search · campaign-level pool 130 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 57c792d
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  26. BD-2026-09-10 Search · campaign-level pool 129 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 63faef0
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  27. BD-2026-09-09 Search · campaign-level pool 127 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 2c4b5b7
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  28. BD-2026-09-08-COR-1 Search · campaign-level Corrected · 1 prior pool 125 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 2c4b5b7
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  29. BD-2026-09-07-COR-1 Search · campaign-level Corrected · 1 prior pool 122 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 0c0b23a
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  30. BD-2026-09-06-COR-1 Search · campaign-level Corrected · 1 prior pool 122 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 861fdfc
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  31. BD-2026-09-05-COR-2 Search · campaign-level Corrected · 2 prior pool 122 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ b845527
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  32. BD-2026-09-04 Search · campaign-level pool 121 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 75618fb
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  33. BD-2026-09-03 Search · campaign-level pool 118 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 799f4b3
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  34. BD-2026-09-02-COR-2 Search · campaign-level Corrected · 2 prior pool 118 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 799f4b3
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  35. BD-2026-09-01 Search · campaign-level pool 118 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6450130
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  36. BD-2026-08-31-COR-2 Search · campaign-level Corrected · 2 prior pool 119 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 6450130
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  37. BD-2026-08-30-COR-1 Search · campaign-level Corrected · 1 prior pool 122 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ f678ad5
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  38. BD-2026-08-29-COR-5 Search · campaign-level Corrected · 5 prior pool 123 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 9e0da63
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  39. BD-2026-08-28-COR-1 Search · campaign-level Corrected · 1 prior pool 124 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 28d9e84
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  40. BD-2026-08-27 Search · campaign-level pool 124 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 121aba4
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  41. BD-2026-08-26 Search · campaign-level pool 114 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ a83e1d6
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  42. BD-2026-08-25 Search · campaign-level pool 118 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 4fb93af
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  43. BD-2026-08-24 Search · campaign-level pool 120 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 8463fde
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  44. BD-2026-08-23 Search · campaign-level pool 120 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 84e001d
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  45. BD-2026-08-22-COR-1 Search · campaign-level Corrected · 1 prior pool 120 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 01d18d9
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  46. BD-2026-08-21 Search · campaign-level pool 117 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ 5e39f21
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  47. BD-2026-08-20 Search · campaign-level pool 117 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ b279dca
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  48. BD-2026-08-18-COR-1 Search · campaign-level Corrected · 1 prior pool 112 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ b279dca
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  49. WR-2026-W32-PUB-E1 Search · campaign-level pool 15 beat 93.3% —
    Block range
    8414168–8813452
    Formula
    1.2.1 @ 7cdf7d7
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  50. WR-2026-W31-PUB-E1 Search · campaign-level pool 141 beat 100.0% —
    Block range
    8414168–8763768
    Formula
    1.2.1 @ 7cdf7d7
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  51. WR-2026-W30-PUB-E1 Search · campaign-level pool 125 beat 100.0% —
    Block range
    8414168–8713416
    Formula
    1.2.1 @ 7cdf7d7
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  52. WR-2026-W29-PUB-E1 Search · campaign-level pool 120 beat 100.0% —
    Block range
    8414168–8662242
    Formula
    1.2.1 @ 7cdf7d7
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  53. WR-2026-W28-PUB-E1 Search · campaign-level pool 100 beat 100.0% —
    Block range
    8355702–8611981
    Formula
    1.2.1 @ 7cdf7d7
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  54. WR-2026-W27-PUB-E1-COR-1 Search · campaign-level Corrected · 1 prior pool 92 beat 100.0% —
    Block range
    0–0
    Formula
    1.2.1 @ c79e255
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  55. WR-2026-W26-PUB-E1-COR-1 Search · campaign-level Corrected · 1 prior pool 98 beat 100.0% —
    Block range
    8355702–8512403
    Formula
    1.2.1 @ 7cdf7d7
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  56. WR-2026-W25-PUB-E1 Search · campaign-level pool 88 beat 100.0% —
    Block range
    8355702–8461824
    Formula
    1.2.1 @ 7cdf7d7
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

  57. WR-2026-W24-PUB-E1-COR-1 Search · campaign-level Corrected · 1 prior pool 22 beat 100.0% —
    Block range
    8413094–8413096
    Formula
    1.2.1 @ 8cd3fdc
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  58. WR-2026-W21-RERUN-E1-COR-1 Search · campaign-level Corrected · 1 prior pool 26 beat 100.0% —
    Block range
    8219538–8363696
    Formula
    1.2.1 @ b8b77a9
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  59. WR-2026-W22-PUB-E1-COR-3 Search · campaign-level Corrected · 3 prior pool 54 beat 100.0% —
    Block range
    8219538–8313781
    Formula
    1.2.1 @ a04e036
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  60. WR-2026-W21-COR-3 Search · campaign-level Corrected · 3 prior pool 16 beat 100.0% —
    Block range
    8208900–8258914
    Formula
    1.2.1 @ 91705b5
    Multiplier
    1.00×
    Registered UIDs
    256

    Open permanent record

    Prior versions of this epoch slot (archived)

  61. WR-2026-W99-SMOKE-E1 Search · campaign-level pool 50 beat 76.0% —
    Block range
    4823091–4830290
    Formula
    1.2.1 @ a1b2c3d
    Multiplier
    1.00×
    Registered UIDs
    64

    Open permanent record

Methodology

Methodology · Verification map

Every number on this dashboard is reconcilable to on-chain validator output. The links and procedure below are the entry points for verifying any published epoch independently — the chain is the source of truth; this site mirrors the spec and surfaces aggregates.

Verification path · From spec to chain

3 steps

Step 1 / 3

Read the spec

Mirrored canonical SN21 documents on this site — whitepaper, reward mechanism, epoch structure.

Open whitepaper

Step 2 / 3

Run the verifier

scripts/verify_day.py checks any published day: the signed receipt, the hash chain, the on-chain anchor, and every score recomputed.

View on GitHub

Step 3 / 3

Cross-check the chain

Block range + scoring formula commit on every record lets you query the chain directly.

Latest record

Canonical SN21 documents (mirrored on this site)

Independent verification

scripts/verify_day.py in the SN21 repo fetches a day's signed receipt, checks its signature, the hash chain and the on-chain anchor, re-runs the open-source scoring code, and names the exact entry if anything disagrees.

bash verify_day.py
python scripts/verify_day.py \
    --url https://hope-bittensor-api.onrender.com \
    --day YYYY-MM-DD \
    --miner <your hotkey>   # optional: only your entries

No keys and no archive node needed: the receipt, proof and allocation audit are public. Add --expect-anchor with the root you read from the chain to close the loop yourself. Weekly epochs before 3 August 2026 use scripts/verify_epoch.py.

How to verify

Why aggregate-only · IA decision D-05

Per-miner emissions on SN21 are derivable from per-miner scores (Reward Mechanism §"Component 2"). Publishing per-UID scores publishes per-UID emissions — doxxing-adjacent, and a strong anti-coordination signal. The chain already exposes per-UID data to anyone who queries it. The dashboard publishes what the chain does not: the shape of the distribution, the size of the qualifying pool, the baseline-beat rate, and the scoring formula version that produced them.

API & schema

API & schema · Public read surface for researchers and validators

Every published epoch is reachable as JSON without a key. Drop the cURL line into a terminal, the Python snippet into a Jupyter cell, and you have the same data the dashboard is rendering — plus the provenance fields needed to reconcile against the chain.

Endpoints · Read-only, no auth, JSON

Latest published epoch

GET 200

https://adtao.io/api/sn21/latest.json

Returns { epoch: EpochReport | null } — the freshest published row, or null until the first publish click. 60-second cache.

All published epochs

GET 200

https://adtao.io/api/sn21/index.json

Returns { count, epochs: EpochReport[] } newest first. Canonical snake_case pydantic shape per the SN21 source-of-truth model. 60-second cache.

Total fields

21

Nullable

3

Aggregate-only

D-05

Schema version

v1.0

Quickstart · Read in 30 seconds

bash terminal
curl -sSL "https://adtao.io/api/sn21/latest.json" \
  -H "Accept: application/json" | jq '.epoch'

Returns the full EpochReport JSON. Pair with jq for pretty-printing.

python stdlib only
import json, urllib.request

URL = "https://adtao.io/api/sn21/latest.json"

with urllib.request.urlopen(URL) as r:
    resp = json.loads(r.read())

epoch = resp["epoch"]
if epoch is None:
    raise SystemExit("no published epochs yet")

print(f"Epoch        {epoch['epoch_id']}")
print(f"Pool size    {epoch['pool_size']} of {epoch['total_registered_uids']}")
print(f"Beat rate    {epoch['baseline_beat_rate']:.1%}")
print(f"Formula      {epoch['scoring_formula_version']} @ {epoch['scoring_formula_commit'][:7]}")
print(f"Blocks       {epoch['block_range_start']}-{epoch['block_range_end']}")

Zero dependencies — uses urllib from the stdlib.

Schema · 21 public fields

Pydantic source-of-truth

Field Type Units Semantic
epoch_id string release-key Canonical SN21 release key — BD-2026-08-20 in the daily stream, WR-2026-W21-PUB-E1 in the weekly era. Stable URL path component.
epoch_type string enum Standard epoch classification (Daily, Search, Discovery, …). Drives epoch_type_multiplier.
epoch_subtype string | null — Optional sub-classification when epoch_type alone is insufficient.
block_range_start integer block height Inclusive lower bound of the chain blocks aggregated for this epoch.
block_range_end integer block height Inclusive upper bound. Reconcile via a Bittensor archive node.
scoring_formula_version string semver Released aggregator wire-shape version. Pinned per epoch.
scoring_formula_commit string git sha (40) Commit hash of SN21-adtao at epoch close. Links to the SHA-pinned source.
horizon_set string[] duration Time horizons the scoring formula evaluated — 7d, 14d, 28d in the daily stream; 7d, 14d in the weekly era.
epoch_type_multiplier float × Emission multiplier applied to this epoch_type. Constants per epoch type.
pool_size integer miners Count of qualifying miners (passed the participation gate).
total_registered_uids integer miners Count of UIDs registered on netuid 21 at epoch close.
pool_size_below_distribution_floor boolean — True when pool_size < 15; histogram is omitted in that case.
baseline_beat_rate float ratio (0–1) Share of pool with EMA above the conditional-prior baseline.
score_distribution object | null histogram bin_edges, bin_counts, summary {mean, median, p25, p75, max}. Null when pool below floor.
tier_distribution object — elite, competitive, participating { count, share_of_pool, share_of_emissions } + elite_floor_met.
tier_split_active boolean — False when the pool collapses to a single undivided group.
emergency_intervention object — { triggered, type, outcome, summary_text }. Routine epochs read { triggered: false }.
validator_output_snapshot_timestamp string ISO 8601 UTC When the validator output was captured for this aggregation.
chain_fetch_timestamp string ISO 8601 UTC When the chain reading completed.
commentary_markdown string | null markdown Optional human commentary. Null on routine epochs.
aggregator_version integer — Wire-shape version of the aggregator. Bumped when the same input produces different output.

Full reproducibility · Re-run an epoch end-to-end

The dashboard reads from the JSON endpoint. The JSON came from the aggregator. The aggregator reads chain + validator output. The chain is the source of truth. Re-run the aggregator with the same inputs and you get the same JSON — or a discrepancy you can act on.

bash SN21-adtao
git clone https://github.com/ippcteam/SN21-adtao.git
cd SN21-adtao && pip install -e .
python scripts/verify_epoch.py \
    --epoch-id WR-2026-W21-PUB-E1 \
    --validator-hotkey 5GxVLdpRGZN... \
    --tier-2-base https://archive.example.io

Needs Python 3.11+ and a Bittensor archive node URL. The full score recomputation also needs the operator's truth-file (reveal blob per §9.A.2). Chain-integrity mode does not.

verify_epoch.py

Reading paths · One surface, four audiences

Pick your entry