GPT-5.5$30.00/ 1M OUT CLAUDE FABLE 5$50.00/ 1M OUT GEMINI 3.1 PRO$12.00/ 1M OUT QWEN3.7 MAX$3.75/ 1M OUT DEEPSEEK V4 PRO$0.87/ 1M OUT SAKANA FUGU ULTRA$30.00/ 1M OUT OPENAI OTPI$1.02/ 1M OUT ANTHROPIC OTPI$1.81/ 1M OUT GEMINI 2.5 FLASH$2.50/ 1M OUT GPT-5.4 MINI$4.50/ 1M OUT GEMINI 2.5 FLASH-LITE$0.40/ 1M OUT GPT-5.4 NANO$1.25/ 1M OUT GPT-4.1$8.00/ 1M OUT GPT-5.5$30.00/ 1M OUT CLAUDE FABLE 5$50.00/ 1M OUT GEMINI 3.1 PRO$12.00/ 1M OUT OPENAI OTPI$1.02/ 1M OUT ANTHROPIC OTPI$1.81/ 1M OUT GEMINI 2.5 FLASH$2.50/ 1M OUT GPT-5.4 MINI$4.50/ 1M OUT GEMINI 2.5 FLASH-LITE$0.40/ 1M OUT GPT-5.4 NANO$1.25/ 1M OUT GPT-4.1$8.00/ 1M OUT GPT-5.5$30.00/ 1M OUT CLAUDE FABLE 5$50.00/ 1M OUT GEMINI 3.1 PRO$12.00/ 1M OUT OPENAI OTPI$1.02/ 1M OUT ANTHROPIC OTPI$1.81/ 1M OUT GEMINI 2.5 FLASH$2.50/ 1M OUT GPT-5.4 MINI$4.50/ 1M OUT GEMINI 2.5 FLASH-LITE$0.40/ 1M OUT GPT-5.4 NANO$1.25/ 1M OUT GPT-4.1$8.00/ 1M OUT
All notes
Desk Notes JUL 01 2026 · 11 MIN READ · IFX RESEARCH

IFX Token Price Index Family

Methodology, Version 1.0

FIRST PUBLIC RELEASE
AI Token Indices Methodology
01

Introduction

IFX builds cash-settled futures on the price of AI model API tokens. A futures contract is only as good as its reference price, and a reference price is only as good as the methodology behind it. This document specifies how the first version of the IFX Token Price Index family is calculated: where the data comes from, which models are included, how gaps in the data are handled, the formula, and the quality diagnostics we publish next to every value.

We publish the methodology because settlement references in finance have to be auditable. For recent values, the inputs come directly from current OpenRouter endpoints, and those rows are the cleanest part of the dataset. Historical backfill is harder: archives are patchy, so the methodology has to show the fallback path and the gaps instead of pretending every old row can be rebuilt cleanly. Every methodological change from here on gets a new version identifier; historical series are never silently rewritten.

Version 1 is deliberately narrow. It measures one price dimension (output tokens), through one observation channel (OpenRouter), for six model companies. Section 9 states the resulting limitations plainly, and Section 10 describes how the data foundation grows from here.

02

What the index measures

Each index in the family tracks the daily volume-weighted price of one million output tokens for a single model company, in USD, as observed through traffic routed on the OpenRouter platform.

A concrete reading: if on a given day you had bought output tokens from that company's models in the same proportions as OpenRouter's users did, the index value is the average price you paid per million tokens.

PropertyValue
Quote unitUSD_PER_MTOK_OUTPUT (US dollars per 1,000,000 output tokens)
FrequencyDaily, one value per UTC calendar day
WeightingToken volume (tokens processed per model per day)
Aggregation levelModel company (lab)
03

Index universe

Index constituents are model companies. Channels such as OpenRouter, Azure, or AWS Bedrock are observation paths where prices and volumes can be measured; they never appear as constituents themselves. This separation is a core rule of the IFX universe model and it holds for every future version.

Version 1 publishes six indices in two waves. Wave 1 is the launch set. Wave 2 contains candidates whose data we publish for observation while coverage matures.

Index IDCompanyLicensing bucketHistory starts
openrouter.wave1_core.openai.proprietaryOpenAIProprietary2025-05-30
openrouter.wave1_core.google.proprietaryGoogle GeminiProprietary2025-05-30
openrouter.wave1_core.anthropic.proprietaryAnthropicProprietary2025-11-01
openrouter.wave1_core.deepseek.hosted_open_commercialDeepSeekHosted open / commercial2025-08-22
openrouter.wave1_core.qwen.hosted_open_commercialQwenHosted open / commercial2025-12-01
openrouter.wave2_candidates.moonshotai.proprietary_or_commercialMoonshot AIProprietary or commercial2026-05-15

The licensing bucket records how the company's models reach the market. proprietary means closed-weight models sold through the author's own API. hosted_open_commercial means open-weight models sold as paid hosted endpoints by commercial providers.

History start dates differ by index on purpose: each series begins on the first day from which source coverage for that company is stable enough to publish. We would rather ship a shorter series than a longer one with an unreliable head.

A model enters its company's constituent set when it is a text-output model observed in the volume feed with a paid price on an active endpoint. Free endpoints carry no price and never enter the calculation.

04

Data inputs

The index joins two OpenRouter inputs:

Token volumes

Token weights come from OpenRouter's public model-activity data for each public model or variant target. The payload reports daily prompt tokens, completion tokens, requests, and related counters per model. The pipeline normalizes those rows to a variant-aware model_key and deduplicates by (author, date, model_key).

Prices

The OpenRouter models endpoint reports each model's output ("completion") token price in USD per token. We convert it to the index quote unit:

$p_{m,t} = 10^{6} \cdot \text{completion\_price}_{m,t}$

The pipeline runs once per day at 17:00 UTC and computes the previous full UTC day, so a day's value is available roughly 17 hours after that day closes.

Current OpenRouter rows are treated as the freshest source. When current and archived rows overlap, current wins. Older history uses archived OpenRouter model-activity payloads where they exist. Those archives are incomplete; a missing archived model row is treated as missing data, not zero usage.

05

Identifier resolution

The volume feed and the price feed use different identifier conventions. Volume rows carry dated permaslugs and endpoint variants (suffixes such as :free, :beta, :thinking, or date stamps like -20250514); the price feed uses undated base slugs. The pipeline matches them in layers: exact identifier first, then normalized candidates produced by stripping variant and date suffixes. This matters most in the backfill. New OpenRouter rows are current; archived rows are useful, but incomplete, so the pipeline records when it had to use a fallback instead of an exact match.

The share of daily token volume that was priced through fallback rather than an exact match is published per point as fallback_token_share. If an archived model-activity row is absent, it is treated as an archive gap and handled by the volume variant rules in Section 7; it is not counted as zero usage. Price gaps are disclosed through missing_price_token_share and the status field.

06

Calculation

Let \(c\) be a company, \(t\) a UTC day, \(U_{c,t}\) the set of company \(c\)'s constituent models observed in the volume feed on day \(t\), and \(A_{c,t} \subseteq U_{c,t}\) the subset that has a valid price on that day. With \(V_{m,t}\) the token volume of model \(m\) and \(p_{m,t}\) its price in USD per million output tokens, the index level is the volume-weighted mean over priced constituents:

$I_{c,t} \;=\; \frac{\sum_{m \in A_{c,t}} V_{m,t} \cdot p_{m,t}}{\sum_{m \in A_{c,t}} V_{m,t}}$
The one rule that matters most

One rule matters more than any other here: a model without a resolvable price is excluded from both the numerator and the denominator. Treating a missing price as zero would mechanically drag the index down every time a price observation failed, turning data gaps into fake price moves. Exclusion keeps the index a statement about prices we actually observed. The size of what was excluded is disclosed per point as missing_price_token_share.

Alongside the USD level, each series carries a normalized level with base 100 at the series start \(t_0\):

$N_{c,t} \;=\; 100 \cdot \frac{I_{c,t}}{I_{c,t_0}}$

The USD level answers "what does a million output tokens cost"; the normalized level answers "how has that cost moved since the series began" and makes companies with very different absolute price levels comparable on one chart.

07

Variants

Each index is computed in variants along two dimensions, and every published series states which variants produced it.

Volume variants

observed uses only volumes reported by the source feed. imputed (the default) additionally estimates a constituent's volume on days when the feed does not report it, so that a model dropping out of the source's reporting window does not register as a false price shift. The estimated share is disclosed per point as imputed_token_share.

Price variants

candidate_all_evidence (the default) admits every price observation the pipeline could attach to a constituent, including fallback identifier matches. strict_ok restricts the calculation to observations that passed strict matching and conflict checks.

The defaults favor coverage; the strict variants exist so anyone can check how much the extra evidence changes the result.

08

Quality diagnostics and publication

Every published point carries its own diagnostics. We consider this the most important part of the design: an index that publishes a number without telling you how solid that number is invites misuse.

value_usd_per_mtok

Index level in USD per million output tokens

normalized_value

Level rebased to 100 at series start

token_weight

Total token volume behind the day's value

price_coverage_share

Share of the day's token volume that had a usable price

imputed_token_share

Share of the day's weight that was estimated rather than observed

fallback_token_share

Share priced via normalized identifier matching rather than exact match

missing_price_token_share

Share excluded because no price could be resolved

conflict_token_share

Share where multiple price observations disagreed

status

Data-quality flag for the point

When the diagnostics for an index or an individual day fall below our internal thresholds, the status field says so (for example DATA_QUALITY_GAP). The value is still published; the flag tells you to treat it with care. Hiding weak days would make the series look better and mean less.

Values are published as decimal strings to avoid floating-point artifacts in transport. If a source correction affects an already-published day, that day is recomputed and restated; the methodology version attached to the series identifies the rules that produced every value. A change to any rule in this document produces a new version identifier, and superseded versions remain documented.

09

Known limitations of version 1

Stating these is part of the methodology, since each one bounds what the index can claim to measure.

L1

Single-channel observation. OpenRouter is one routing platform. Its traffic skews toward developers and products that use a router; enterprise volume flowing through direct provider APIs and cloud channels is invisible to it. The index measures prices in the OpenRouter market, which we treat as a proxy for the broader output-token market until more channels are added.

L2

List prices. The price feed reports posted per-token rates. Negotiated discounts, batch tiers, and cache pricing are not reflected.

L3

Output tokens only. Input-token and cached-input pricing are excluded in version 1, although providers price them separately.

L4

Reporting threshold. The volume feed covers the most-used models on the platform; very small models below its reporting window contribute no weight.

L5

Informational values. Published index values are reference data. Marks used for margining and settlement of IFX contracts pass an additional operator review before use; a raw index value never becomes a settlement input on its own.

10

What comes next

Version 1 establishes the calculation contract: volume-weighted output-token prices per company, with per-point quality disclosure and versioned rules. The planned growth is in the data, and the contract is built so that the data can grow without breaking it.

The next source track is official provider price feeds. OpenAI, Anthropic, Google, and DeepSeek all publish official API pricing, and our source policy ranks official evidence above router evidence; as those connectors come online, router data shifts from sole source to cross-check. Our research universe already covers more than thirty model companies across the US, China, Europe, and Asia, and wave 2 candidates are promoted to core once their coverage passes the same checks the wave 1 companies did. Later versions add price dimensions beyond output tokens, starting with input and cached-input rates.

Every one of those steps will ship the same way this one does: a versioned methodology document, published before the numbers, with the diagnostics to check them.

If you find an error in this document or a day in the series that the diagnostics do not explain, we want to hear about it.

A

Appendix: public data access

The full index list and every series described above are available through the IFX public API, without authentication:

GET /v1/public/indexes

list of published indices with metadata (add ?q= to filter by company).

GET /v1/public/indexes/{index_id}/series

full daily series for one index, with the per-point fields from Section 8.

Numeric fields are returned as decimal strings; convert client-side as needed.

Apply for a Contract