midprice-v1
Last Updated: February 2026
This document provides the complete specification of how Belief Index computes Net Asset Value. The methodology is designed to be transparent and independently verifiable — an investor with a spreadsheet and access to public market data can replicate any published NAV figure.
This is the key transparency document for Belief Index. Every formula is explained in plain English with worked examples. If anything is unclear, start with the Glossary for term definitions.
Overview
Themidprice-v1 methodology computes index NAV using the arithmetic midpoint of best bid and best ask prices from the Polymarket order book. This approach provides a simple, transparent, and deterministic price discovery mechanism.
The computation produces two outputs:
| Output | Description | Range | Analogous To |
|---|---|---|---|
| Raw NAV | Weighted average of underlying market prices | 0 to 1 | An index’s raw level |
| Index Level | Rebased index value starting at 100 | Varies | S&P 500 level, Dow Jones Industrial Average |
The Raw NAV is a probability-weighted aggregate. A Raw NAV of 0.65 means the weighted-average implied probability across all markets in the basket is 65%. The Index Level simply rebases this to start at 100 so investors can track percentage performance over time without thinking in raw probability terms.
Step-by-Step Computation
Step 1: Determine Market Prices
For each market in the series, a price must be determined. The source depends on whether the market is still active or has resolved.- Active markets
- Resolved markets
- Fallback behavior
For unresolved markets, the price is the midpoint of the best bid and best ask quotes:In plain English: The order book shows what buyers are willing to pay (bids) and what sellers are asking (asks). The midprice is the average of the highest bid and the lowest ask — the theoretical fair value sitting between buyers and sellers.Worked example:If the best bid for a YES outcome token is $0.65 and the best ask is $0.67:This means the market implies roughly a 66% probability that the tracked event occurs.
Step 2: Normalize Weights
Raw weights from the series composition are normalized so they sum to exactly 1.0:Worked example: weight normalization
Worked example: weight normalization
A 7-market series with nearly equal raw weights:The normalization corrects for the tiny rounding error in the raw weights. In this case, the correction is negligible, but normalization becomes more important when raw weights are specified as round numbers that don’t sum precisely to 1.
Step 3: Compute Raw NAV
The Raw NAV is a weighted average of all market prices:Worked example: full Raw NAV calculation
Worked example: full Raw NAV calculation
Step 4: Compute Index Level
The Index Level provides a rebased representation starting at a base value of 100, making it easy to track percentage performance over time:- inception_raw_nav is the Raw NAV at the first successful computation for this series
- 100 is the base index level (analogous to setting any price index to 100 at its starting date)
Worked example: Index Level calculation
Worked example: Index Level calculation
If a series had an inception Raw NAV of 0.62000000 and the current Raw NAV is 0.67625:The Index Level of 109.07 means the index has gained approximately 9.07% from inception. If the Index Level were 95.50, the index would have declined approximately 4.5%.
Precision
All calculations use controlled precision to ensure consistency and reproducibility:| Parameter | Value | Why |
|---|---|---|
| Decimal places | 8 | Sufficient precision for financial calculations without floating-point artifacts |
| Rounding mode | Round half up | Standard symmetric rounding for informational metrics |
| Storage format | Fixed-point decimal | Avoids floating-point representation errors |
Staleness
A computation is marked stale when all three conditions are met:- Any underlying market price fetch failed
- A fallback (last-known) price was used instead
- The series is not fully resolved
Resolution Handling
Markets within a series resolve independently as their underlying events occur. The series continues operating with a mix of resolved and active markets until all markets have settled.| Series State | Condition | Behavior |
|---|---|---|
| Active | All markets unresolved | Normal computation using live midprices |
| Partially resolved | Some markets resolved | Resolved markets use settlement price ($1 or $0); active markets use midprice |
| Fully resolved | All markets resolved | Terminal NAV computed; no further updates; value is definitive |
How partial resolution works
How partial resolution works
Consider a 4-market series where Market C has resolved (the tracked outcome won):
Market C’s contribution is now locked at $1.00. Its weight remains in the index — it continues to contribute its full weighted value. The remaining active markets continue to fluctuate with market prices.If Market C had lost, its contribution would be locked at $0.00, reducing the Raw NAV by that market’s full weighted amount.
| Market | Status | Price Used |
|---|---|---|
| Market A | Active | Midprice from order book |
| Market B | Active | Midprice from order book |
| Market C | Resolved (won) | $1.00 (settlement) |
| Market D | Active | Midprice from order book |
Terminal NAV
Terminal NAV
Known Limitations
Themidprice-v1 methodology is designed for simplicity and transparency. These design choices come with known trade-offs that investors should understand.
Theoretical vs. Executable Pricing
The midprice is a theoretical value. It does not account for:- Trading fees (typically 0.5-2% on underlying markets)
- Slippage for market-sized orders
- Market impact of hypothetical replication trades
Liquidity Variance
Markets within an index may have vastly different liquidity profiles, yet carry equal weight:| Market Type | Typical Depth | Spread Characteristics |
|---|---|---|
| High-profile events | $1M+ | Tight spreads (< 0.1% relative) |
| Moderate interest | 100K | Moderate spreads |
| Niche markets | < $1K | Wide spreads; price signals less reliable |
Static Weighting
Current indices use fixed weights assigned at composition time:- Weights do not adjust for changes in liquidity
- No automatic rebalancing based on market conditions
- A market that becomes illiquid after inclusion continues to receive its full weight
No Correlation Adjustment
Markets within a series may be correlated (e.g., multiple Federal Reserve-related events). The methodology treats each market as independent and does not discount for information overlap. This may overstate the diversification benefit of holding multiple related markets.Independent Verification Guide
One of the core design principles of Belief Index is that any investor can independently verify a published NAV using only public data and a spreadsheet. This section provides a step-by-step process.What You Need
| Item | Where to Find It |
|---|---|
| Series composition (markets, outcomes, weights) | Published on the series detail page on our website |
| Current order book data | Polymarket public order book (no account required) |
| A spreadsheet or calculator | Any tool that supports basic arithmetic |
Step-by-Step Verification
Get the series composition
From the series page on our website, note down:
- The list of underlying markets (by question/title)
- The tracked outcome for each market (YES or NO)
- The raw weight assigned to each market
Look up each market on Polymarket
Go to Polymarket and find each market by its question. On the market page, you can see the current order book.For each market, record:
- Best bid — the highest price someone is willing to pay for the tracked outcome token
- Best ask — the lowest price someone is willing to sell the tracked outcome token
Reading the Polymarket order book
Reading the Polymarket order book
On Polymarket, each binary market has two outcome tokens: YES and NO. The order book for each token shows:
- Bids (buy orders): Sorted with the highest bid at the top. This is the best bid.
- Asks (sell orders): Sorted with the lowest ask at the top. This is the best ask.
Compute midprices
For each active market:For resolved markets, use $1.00 (if the tracked outcome won) or $0.00 (if it lost).
Normalize weights
Sum all raw weights, then divide each by the total:Check: The normalized weights must sum to exactly 1.00.
Compare to published NAV
Your computed Raw NAV should match the published value. Acceptable discrepancy:
| Difference | Likely Cause |
|---|---|
| Less than 0.00000010 | Normal rounding differences |
| 0.0001 to 0.001 | Timing gap (your price fetch was a few seconds off) |
| Greater than 0.01 | Investigate further — check if a market resolved between fetches |
Common Verification Issues
My number doesn't match -- what should I check?
My number doesn't match -- what should I check?
- Timing: The NAV is computed at a specific moment. If you fetch prices even a few minutes later, markets may have moved. Try to fetch prices as close to the published computation time as possible.
- Wrong outcome token: Make sure you are looking at the order book for the tracked outcome (YES or NO) as specified in the series composition, not the opposite side.
- Resolved markets: If a market resolved between computations, the system uses the settlement price ($1.00 or $0.00), not the last trading price.
- One-sided book: If a market shows only bids and no asks (or vice versa), the midprice cannot be computed. The published NAV may be using a cached price for that market and will be flagged as stale.
- Precision: Use at least 8 decimal places in your calculations. Rounding intermediate results too aggressively can compound into noticeable differences.
Can I automate this verification?
Can I automate this verification?
Yes. The Polymarket order book data is publicly available via their API. No authentication is required for reading order book data. You can build a script that fetches order books for all markets in a series composition and computes the NAV automatically.
The verification process above applies to the Raw NAV and Index Level. To verify NAV per Share, you would additionally need to know the series’ custody cash balance and accrued fees — see NAV Per Share for how these components relate.
Future Methodology Versions
All methodology changes are tracked via a version string recorded with each computation. Any methodology change will be announced in advance and clearly documented.| Version | Description | Status |
|---|---|---|
midprice-v1 | Simple bid-ask midpoint | Production |
midprice-v2 | Liquidity-weighted midpoint | Proposed |
vwap-v1 | Volume-weighted average price | Research |
twap-v1 | Time-weighted average price | Research |
What would future versions change?
What would future versions change?
- Liquidity-weighted midpoint (
midprice-v2): Would reduce the influence of thinly-traded markets on aggregate NAV by weighting each market’s contribution by its order book depth. - Volume-weighted average price (
vwap-v1): Would use actual executed trade prices rather than quoted prices, reflecting real market activity. - Time-weighted average price (
twap-v1): Would smooth prices over a rolling window, reducing the impact of short-term volatility or manipulation.
midprice-v1 is intentionally simple and transparent.