Data API

CapitalBench Data API

AI model portfolios, active positioning, cumulative allocation behavior, benchmark scores, and proof metadata as structured data.

Production endpoint https://www.capitalbench.org/api
GET /v1/positioning/active?track=all&group_by=asset

{
  "as_of": "2026-09-05T13:37:51.305Z",
  "scope": "active",
  "track": "all",
  "group_by": "asset",
  "portfolio_count": 174,
  "data": [
    {
      "key": "SP500",
      "label": "S&P 500",
      "ticker": "SPY",
      "category": "us_broad_market",
      "allocation_pct": 21.321839080459775,
      "model_count": 9,
      "round_count": 24,
      "tracks": [
        "monthly",
        "weekly"
      ],
      "models": [
        {
          "model_id": "xai-grok-4-6",
          "label": "Grok 4.6",
          "allocation_pct": 6.436781609195403
        },
        {
          "model_id": "xai-grok-4-3",
          "label": "Grok 4.3",
          "allocation_pct": 5.459770114942529
        }
      ]
    }
  ]
}
01 Live Positioning

Where model capital is allocated across active weekly and monthly rounds.

02 Model Behavior

Cumulative allocation patterns, risk appetite, and model-level holdings.

03 Scores

Resolved returns, S&P 500 comparisons, max-possible context, and leaderboard history.

04 Audit Data

Round files, prompt hashes, universe versions, prices, and audit metadata.

Interactive widget demo

See CapitalBench inside a market data platform

This is a real-data panel a financial website, brokerage dashboard, or data terminal could place beside an asset page. It focuses on which named AI models hold the asset, which models avoid it, and where allocation sizing disagrees.

View broader use cases
Market Data Platform SPY - S&P 500
9/11 models hold
CapitalBench data panel SPY active model holdings
Average active allocation 21.3%
Model holders 9/11
Grok 4.6 80.0%
Grok 4.3 67.9%
Grok 4.5 66.3%
Claude Opus 4.8 62.5%

Source endpoint: /v1/positioning/by-asset/SP500?scope=active&track=all

Agreement High agreement
Most bullish model Grok 4.6 (xAI) 80.0%
Sizing spread 50.0 pp
Powered by CapitalBench API SPY AI model holdings
OpenAPI
SPY
S&P 500 US Broad Market - Equity
Avg active allocation 21.3%

Across official active portfolios

Model agreement High agreement

9/11 named models hold SPY

What this tells an investor Crowded AI-model position

SPY holders include Grok 4.6, Grok 4.3, and Grok 4.5, while non-holders include GPT-5.5 and GPT-5.6 Sol. That makes the signal useful as a model-disagreement read: the asset has active AI demand, but it is not a consensus position across the full model set.

Named model holders 9 models hold SPY
  • Grok 4.6 xAI - Heavy holder 80.0%
  • Grok 4.3 xAI - Heavy holder 67.9%
  • Grok 4.5 xAI - Heavy holder 66.3%
  • Claude Opus 4.8 Anthropic - Heavy holder 62.5%
Agreement and disagreement
Most bullish Grok 4.6 (xAI) 80.0%
Smallest holder Claude Fable 5.1 (Anthropic) 30.0%
Sizing spread 50.0 pp - Split ownership, wide sizing
Non-holders GPT-5.5, GPT-5.6 Sol do not hold SPY
Updated from generated read model: 174 active portfolios - 11 active models - research data, not investment advice
Use cases

Built For Model Positioning Data

Active Exposure

Track where current model portfolios are allocated before the round is scored.

Consensus Signals

See which assets, sectors, and themes multiple models are choosing at the same time.

Model Comparison

Compare model records, current holdings, historical behavior, and risk appetite.

Research Pipelines

Pull round data, proof metadata, and scored returns into internal dashboards or notebooks.

Core concepts

How The Data Is Organized

Active

Only unresolved rounds. Use this for live model positioning.

Cumulative

All saved allocations or all available result history. Use this for model behavior and context.

Comparison Set

A fixed model roster scored only on rounds every model in that roster completed.

Current Benchmark

The newest qualified comparison set for a track. Weekly qualifies at 6 shared rounds; monthly qualifies at 3.

Track

Weekly and monthly rounds stay separate because they measure different horizons.

Positioning

Portfolio weights aggregated by asset, category, model, or track.

Audit

Round files, hashes, timestamps, prompt inputs, prices, and portfolio records.

Portfolio Minus S&P 500

Model portfolio return minus the S&P 500 return, in percentage points.

CapitalBench Score

Model return relative to the hindsight oracle; cumulative rows divide total model return by total oracle return.

AI Risk Appetite

A 0-100 allocation signal calculated from the newest live weekly and monthly AI model portfolios. It does not use prices or returns.

Model Behavior

A deterministic model-level profile describing allocation style, Portfolio Difference, concentration, turnover, pattern-report summaries, and resolved performance context.

Portfolio Difference

A 0-100 score showing how much allocation would need to change to match the average portfolio selected by the other models in the same rounds.

Recent-Winner Tilt

A 0-100 behavior score showing how much portfolio weight went to assets that had already outperformed before the decision cutoff. The combined value gives monthly and weekly behavior equal weight and does not use future returns.

Insight

A deterministic or LLM-assisted finding with source evidence, calculations, confidence, and audience tags.

Shared Rounds

Resolved rounds included in a comparison set because every set model has an official result.

Authentication

Authentication And Versioning

Bearer API Keys

API requests use bearer tokens. Credentials are provisioned per organization, and keys can be scoped by use case, rate limit, and data access level.

curl "https://www.capitalbench.org/api/v1/positioning/active?track=all&group_by=asset" \
  -H "Authorization: Bearer $CAPITALBENCH_API_KEY"
Versioned paths

All endpoints use /v1 so downstream pipelines can pin behavior.

Stable identifiers

Use model_id, round_id, and option_id instead of display names.

Pagination

List endpoints return next_cursor when more records are available.

Endpoint map

Available Resources

Metadata And Evidence

Generated-data coverage, benchmark evidence, and audit records.

GET /v1/metadata

Generated read-model timestamp, source, dataset counts, and endpoint discovery.

GET /v1/benchmark-evidence

Benchmark qualification thresholds, maturity, baselines, and score-scale caveats.

GET /v1/proof

Official proof records across rounds, with hashes and public audit URLs.

Positioning

Where model capital is allocated now and how that has accumulated over time.

GET /v1/positioning/active

Live exposure across unresolved weekly and monthly rounds.

GET /v1/risk-appetite

Current and historical AI Risk Appetite, model agreement, regime mix, and outstanding live-book risk.

GET /v1/live/performance

Live rounds marked to the latest available close; not official final scores.

GET /v1/live/performance/history

Raw interim mark-to-market rows with round, model, published, and pricing filters.

GET /v1/positioning/cumulative

Historical allocation behavior across all available rounds.

GET /v1/positioning/consensus

Assets and categories where model allocations cluster.

GET /v1/positioning/by-model/{model_id}

One model's active or cumulative allocation pattern.

GET /v1/positioning/by-asset/{option_id}

Models allocating to a selected asset.

GET /v1/positioning/by-category

Exposure grouped by sector, region, asset class, or theme.

GET /v1/positioning/changes

Allocation changes between recent rounds.

GET /v1/allocations

Raw official-run allocation rows with track, scope, round, model, and asset filters.

Insights

Readable signals generated from benchmark math, model behavior, positioning, and scored results.

GET /v1/insights

Ranked insight feed with Featured, category, tier, confidence, track, and maturity filters.

GET /v1/insights/{insight_id}

One insight with its supporting calculations and source evidence.

GET /v1/market-environments

Weekly and monthly performance grouped by resolved S&P 500 environment.

GET /v1/models/{model_id}/market-environments

One model's returns, scores, and sample maturity by market environment.

Rounds And Results

The published round record: timing, inputs, model portfolios, prices, max-possible context, and scores.

GET /v1/rounds

Round index with track, status, dates, universe version, and audit links.

GET /v1/rounds/{round_id}

One round's metadata and input hashes.

GET /v1/rounds/{round_id}/proof

One round's official proof record, hashes, and audit URL.

GET /v1/rounds/{round_id}/portfolios

Saved model allocations for a round.

GET /v1/rounds/{round_id}/concentration

Run-level allocation consensus and concentration summary.

GET /v1/rounds/{round_id}/live-performance

Interim mark-to-market rows for an unresolved round.

GET /v1/rounds/{round_id}/results

Resolved portfolio returns, S&P 500 returns, Portfolio Minus S&P 500, regret, and max-possible context.

GET /v1/results

All official scored model results with track, round, and model filters.

GET /v1/returns

Raw official-run asset return rows, including benchmark and cash rows where available.

GET /v1/leaderboards/latest

Most recent scored weekly or monthly leaderboard.

GET /v1/leaderboards/benchmark-sets

Living equal-run comparison sets, including the current weekly and monthly benchmarks.

GET /v1/leaderboards/benchmark-sets/{set_id}

One comparison set with model roster, included rounds, excluded rounds, and CapitalBench Scores.

GET /v1/leaderboards/cumulative

All available resolved model history by track, with unequal histories marked where applicable.

Models And Assets

The entities behind the benchmark: models, holdings, style metrics, and asset metadata.

GET /v1/models

Model list with provider metadata and active status.

GET /v1/models/{model_id}

Model profile and audit links.

GET /v1/models/{model_id}/holdings

Active and historical holdings for one model.

GET /v1/models/{model_id}/portfolios

Portfolio-level model records with rationales, key risks, proof paths, and allocations.

GET /v1/models/{model_id}/live-performance

One model's live return across live rounds.

GET /v1/models/{model_id}/style

Risk appetite and allocation fingerprint metrics.

GET /v1/models/behavior

Canonical model behavior profiles plus Portfolio Difference, recent-winner tilt, turnover, concentration, and archetype labels.

GET /v1/models/patterns

Direct access to the dynamic model behavior pattern report used by the comparison page.

GET /v1/models/{model_id}/behavior

One model's behavior profile with Portfolio Difference, recent-winner tilt, methodology, and peer-context fields.

GET /v1/universe/current

Current list of valid model choices.

GET /v1/assets

All generated asset metadata, optionally filtered to current or inactive assets.

GET /v1/assets/{option_id}

Asset metadata and ticker mapping.

GET /v1/assets/{option_id}/model-holders

Models holding a selected asset.

Examples

Common Queries

Active Allocation By Asset
GET /v1/positioning/active?track=all&group_by=asset

{
  "as_of": "2026-09-05T13:37:51.305Z",
  "scope": "active",
  "track": "all",
  "group_by": "asset",
  "portfolio_count": 174,
  "data": [
    {
      "key": "SP500",
      "label": "S&P 500",
      "ticker": "SPY",
      "category": "us_broad_market",
      "allocation_pct": 21.321839080459775,
      "model_count": 9,
      "round_count": 24,
      "tracks": [
        "monthly",
        "weekly"
      ],
      "models": [
        {
          "model_id": "xai-grok-4-6",
          "label": "Grok 4.6",
          "allocation_pct": 6.436781609195403
        },
        {
          "model_id": "xai-grok-4-3",
          "label": "Grok 4.3",
          "allocation_pct": 5.459770114942529
        }
      ]
    }
  ]
}
Which Models Hold An Asset
GET /v1/assets/SEMICONDUCTORS/model-holders?scope=active&track=weekly

{
  "as_of": "2026-09-05T13:37:51.305Z",
  "scope": "active",
  "track": "weekly",
  "group_by": "model",
  "portfolio_count": 1,
  "eligible_portfolio_count": 35,
  "holder_portfolio_count": 1,
  "holder_rate_pct": 2.857142857142857,
  "average_holder_allocation_pct": 30,
  "consensus_allocation_pct": 0.8571428571428571,
  "data": [
    {
      "key": "anthropic-claude-fable-5-1",
      "label": "Claude Fable 5.1",
      "ticker": null,
      "category": "Anthropic",
      "allocation_pct": 30,
      "model_count": 1,
      "round_count": 1,
      "tracks": [
        "weekly"
      ],
      "models": [
        {
          "model_id": "anthropic-claude-fable-5-1",
          "label": "Claude Fable 5.1",
          "allocation_pct": 30
        }
      ]
    }
  ]
}
Live Mark-To-Market
GET /v1/live/performance?track=all

{
  "status": "live_not_final",
  "latest_price_date": "2026-09-04",
  "round_count": 20,
  "model_count": 9,
  "benchmark": {
    "label": "S&P 500",
    "return_pct": 0.16451681332092125,
    "round_count": 20
  },
  "data": [
    {
      "rank": 1,
      "model_id": "openai-gpt-5-5",
      "label": "GPT-5.5",
      "portfolio_return_pct": 1.1530034449859057,
      "sp500_return_pct": -0.27080763892819437,
      "alpha_pp": 1.4238110839141,
      "live_round_count": 3,
      "latest_price_date": "2026-09-04"
    }
  ]
}
Current AI Risk Appetite
GET /v1/risk-appetite

{
  "methodology_version": "1.0",
  "current_decision_pulse": {
    "score": 75.45535714285714,
    "label": "Risk-seeking",
    "regime": "Broad risk seeking",
    "weekly": {
      "round_id": "CB-2026-09-04-1W",
      "decision_date": "2026-09-04",
      "decision_deadline_utc": "2026-09-08T13:25:00Z",
      "track": "weekly",
      "score": 71.10714285714286,
      "label": "Risk-seeking",
      "model_count": 7,
      "portfolio_count": 7,
      "models": [
        {
          "model_id": "xai-grok-4-6",
          "score": 81.5,
          "risk_score_1_5": 3.6999999999999997
        },
        {
          "model_id": "xai-grok-4-5",
          "score": 77.75,
          "risk_score_1_5": 4
        },
        {
          "model_id": "anthropic-claude-fable-5-1",
          "score": 76.25,
          "risk_score_1_5": 3.3499999999999996
        },
        {
          "model_id": "anthropic-claude-opus-5",
          "score": 72.5,
          "risk_score_1_5": 3.6499999999999995
        },
        {
          "model_id": "google-gemini-3-1-pro",
          "score": 66.375,
          "risk_score_1_5": 3.6999999999999997
        },
        {
          "model_id": "openai-gpt-6-astra",
          "score": 63.125,
          "risk_score_1_5": 3.35
        },
        {
          "model_id": "xai-grok-4-3",
          "score": 60.25,
          "risk_score_1_5": 3.3499999999999996
        }
      ],
      "regime_shares": {
        "growth_technology": 35,
        "real_assets_inflation": 37.857142857142854,
        "broad_cyclical_equity": 17.857142857142858,
        "defensive_equity": 9.285714285714285
      },
      "asset_shares": {
        "SOFTWARE": 25,
        "MATERIALS": 14.285714285714285,
        "SP500": 17.857142857142858,
        "AGRICULTURE": 23.57142857142857,
        "DIVIDEND": 9.285714285714285,
        "CYBERSECURITY": 10
      }
    },
    "monthly": {
      "round_id": "CB-2026-09-04-1M",
      "decision_date": "2026-09-04",
      "decision_deadline_utc": "2026-09-08T13:25:00Z",
      "track": "monthly",
      "score": 79.80357142857143,
      "label": "Risk-seeking",
      "model_count": 7,
      "portfolio_count": 7,
      "models": [
        {
          "model_id": "xai-grok-4-3",
          "score": 87.375,
          "risk_score_1_5": 4.3
        },
        {
          "model_id": "anthropic-claude-fable-5-1",
          "score": 84.625,
          "risk_score_1_5": 4.35
        },
        {
          "model_id": "anthropic-claude-opus-5",
          "score": 82.375,
          "risk_score_1_5": 4.05
        },
        {
          "model_id": "openai-gpt-6-astra",
          "score": 77.125,
          "risk_score_1_5": 3.6999999999999997
        },
        {
          "model_id": "xai-grok-4-5",
          "score": 77,
          "risk_score_1_5": 3.6999999999999997
        },
        {
          "model_id": "xai-grok-4-6",
          "score": 77,
          "risk_score_1_5": 3.6999999999999997
        },
        {
          "model_id": "google-gemini-3-1-pro",
          "score": 73.125,
          "risk_score_1_5": 3.6499999999999995
        }
      ],
      "regime_shares": {
        "growth_technology": 30,
        "broad_cyclical_equity": 60.714285714285715,
        "real_assets_inflation": 9.285714285714285
      },
      "asset_shares": {
        "CYBERSECURITY": 30,
        "REGIONAL_BANKS": 14.285714285714285,
        "COPPER": 9.285714285714285,
        "SP500": 8.571428571428571,
        "AEROSPACE_DEFENSE": 15,
        "INDUSTRIALS": 13.57142857142857,
        "CONSUMER_DISCRETIONARY": 4.285714285714286,
        "SMALL_CAP": 5
      }
    },
    "change_from_previous": -3.035714285714292,
    "agreement": {
      "label": "Tight",
      "standard_deviation": 3.9730838662383237,
      "range": {
        "minimum": 69.75,
        "maximum": 80.4375
      }
    },
    "top_assets": [
      {
        "option_id": "CYBERSECURITY",
        "label": "Cybersecurity",
        "ticker": "CIBR",
        "allocation_pct": 20,
        "risk_on_loading": 0.75,
        "regime_group": "growth_technology"
      },
      {
        "option_id": "SP500",
        "label": "S&P 500",
        "ticker": "SPY",
        "allocation_pct": 13.214285714285715,
        "risk_on_loading": 0.35,
        "regime_group": "broad_cyclical_equity"
      },
      {
        "option_id": "SOFTWARE",
        "label": "Software",
        "ticker": "IGV",
        "allocation_pct": 12.5,
        "risk_on_loading": 0.75,
        "regime_group": "growth_technology"
      }
    ]
  },
  "outstanding_live_book": {
    "score": 68.8603259764831,
    "label": "Risk-seeking",
    "weekly": {
      "track": "weekly",
      "score": 62.25833333333334,
      "label": "Risk-seeking",
      "model_count": 9,
      "portfolio_count": 35,
      "round_count": 5,
      "models": [
        {
          "model_id": "anthropic-claude-fable-5-1",
          "score": 75.5,
          "portfolio_count": 2
        },
        {
          "model_id": "anthropic-claude-opus-5",
          "score": 58.375,
          "portfolio_count": 5
        },
        {
          "model_id": "google-gemini-3-1-pro",
          "score": 60.8,
          "portfolio_count": 5
        },
        {
          "model_id": "openai-gpt-6-astra",
          "score": 63.125,
          "portfolio_count": 1
        },
        {
          "model_id": "xai-grok-4-3",
          "score": 65,
          "portfolio_count": 5
        },
        {
          "model_id": "xai-grok-4-5",
          "score": 59.6,
          "portfolio_count": 5
        },
        {
          "model_id": "xai-grok-4-6",
          "score": 64.425,
          "portfolio_count": 5
        },
        {
          "model_id": "openai-gpt-5-6-sol",
          "score": 57.75,
          "portfolio_count": 4
        },
        {
          "model_id": "anthropic-claude-fable-5",
          "score": 55.75,
          "portfolio_count": 3
        }
      ]
    },
    "monthly": {
      "track": "monthly",
      "score": 75.46231861963287,
      "label": "Risk-seeking",
      "model_count": 11,
      "portfolio_count": 139,
      "round_count": 19,
      "models": [
        {
          "model_id": "anthropic-claude-fable-5-1",
          "score": 84.8125,
          "portfolio_count": 2
        },
        {
          "model_id": "anthropic-claude-opus-5",
          "score": 77.78947368421052,
          "portfolio_count": 19
        },
        {
          "model_id": "google-gemini-3-1-pro",
          "score": 68.71710526315789,
          "portfolio_count": 19
        },
        {
          "model_id": "openai-gpt-6-astra",
          "score": 77.125,
          "portfolio_count": 1
        },
        {
          "model_id": "xai-grok-4-3",
          "score": 67.36184210526316,
          "portfolio_count": 19
        },
        {
          "model_id": "xai-grok-4-5",
          "score": 75.27631578947368,
          "portfolio_count": 19
        },
        {
          "model_id": "xai-grok-4-6",
          "score": 70,
          "portfolio_count": 16
        },
        {
          "model_id": "openai-gpt-5-6-sol",
          "score": 77.98611111111111,
          "portfolio_count": 18
        },
        {
          "model_id": "anthropic-claude-fable-5",
          "score": 77.55882352941177,
          "portfolio_count": 17
        },
        {
          "model_id": "anthropic-claude-opus-4-8",
          "score": 67.66666666666667,
          "portfolio_count": 6
        },
        {
          "model_id": "openai-gpt-5-5",
          "score": 85.79166666666667,
          "portfolio_count": 3
        }
      ]
    },
    "portfolio_count": 174,
    "round_count": 24
  },
  "history": {
    "decision_pulse": [
      {
        "date": "2026-09-03",
        "combined_score": 78.49107142857143,
        "label": "Risk-seeking",
        "weekly_score": 73.60714285714286,
        "monthly_score": 83.375,
        "weekly_round_id": "CB-2026-09-03-1W",
        "monthly_round_id": "CB-2026-09-03-1M",
        "model_count": 7,
        "agreement_label": "Tight",
        "agreement_standard_deviation": 2.6658029000736,
        "agreement_range": {
          "minimum": 74.5,
          "maximum": 82.3125
        },
        "top_regime": {
          "key": "growth_technology",
          "label": "Growth and technology",
          "allocation_pct": 38.21428571428571
        },
        "top_assets": [
          {
            "option_id": "CYBERSECURITY",
            "label": "Cybersecurity",
            "ticker": "CIBR",
            "allocation_pct": 20,
            "risk_on_loading": 0.75,
            "regime_group": "growth_technology"
          },
          {
            "option_id": "METALS_MINING",
            "label": "Metals and Mining",
            "ticker": "XME",
            "allocation_pct": 14.642857142857142,
            "risk_on_loading": 0.55,
            "regime_group": "real_assets_inflation"
          },
          {
            "option_id": "SP500",
            "label": "S&P 500",
            "ticker": "SPY",
            "allocation_pct": 13.571428571428573,
            "risk_on_loading": 0.35,
            "regime_group": "broad_cyclical_equity"
          },
          {
            "option_id": "REGIONAL_BANKS",
            "label": "Regional Banks",
            "ticker": "KRE",
            "allocation_pct": 9.642857142857142,
            "risk_on_loading": 0.8,
            "regime_group": "broad_cyclical_equity"
          },
          {
            "option_id": "SEMICONDUCTORS",
            "label": "Semiconductors",
            "ticker": "SMH",
            "allocation_pct": 9.285714285714285,
            "risk_on_loading": 0.95,
            "regime_group": "growth_technology"
          }
        ],
        "regime_exposure": [
          {
            "key": "growth_technology",
            "label": "Growth and technology",
            "allocation_pct": 38.21428571428571
          },
          {
            "key": "broad_cyclical_equity",
            "label": "Broad and cyclical equity",
            "allocation_pct": 35.357142857142854
          },
          {
            "key": "real_assets_inflation",
            "label": "Real assets and inflation",
            "allocation_pct": 26.428571428571427
          }
        ]
      },
      {
        "date": "2026-09-04",
        "combined_score": 75.45535714285714,
        "label": "Risk-seeking",
        "weekly_score": 71.10714285714286,
        "monthly_score": 79.80357142857143,
        "weekly_round_id": "CB-2026-09-04-1W",
        "monthly_round_id": "CB-2026-09-04-1M",
        "model_count": 7,
        "agreement_label": "Tight",
        "agreement_standard_deviation": 3.9730838662383237,
        "agreement_range": {
          "minimum": 69.75,
          "maximum": 80.4375
        },
        "top_regime": {
          "key": "broad_cyclical_equity",
          "label": "Broad and cyclical equity",
          "allocation_pct": 39.285714285714285
        },
        "top_assets": [
          {
            "option_id": "CYBERSECURITY",
            "label": "Cybersecurity",
            "ticker": "CIBR",
            "allocation_pct": 20,
            "risk_on_loading": 0.75,
            "regime_group": "growth_technology"
          },
          {
            "option_id": "SP500",
            "label": "S&P 500",
            "ticker": "SPY",
            "allocation_pct": 13.214285714285715,
            "risk_on_loading": 0.35,
            "regime_group": "broad_cyclical_equity"
          },
          {
            "option_id": "SOFTWARE",
            "label": "Software",
            "ticker": "IGV",
            "allocation_pct": 12.5,
            "risk_on_loading": 0.75,
            "regime_group": "growth_technology"
          },
          {
            "option_id": "AGRICULTURE",
            "label": "Agriculture Commodities",
            "ticker": "DBA",
            "allocation_pct": 11.785714285714285,
            "risk_on_loading": 0.1,
            "regime_group": "real_assets_inflation"
          },
          {
            "option_id": "AEROSPACE_DEFENSE",
            "label": "Aerospace and Defense",
            "ticker": "ITA",
            "allocation_pct": 7.5,
            "risk_on_loading": 0.45,
            "regime_group": "broad_cyclical_equity"
          }
        ],
        "regime_exposure": [
          {
            "key": "broad_cyclical_equity",
            "label": "Broad and cyclical equity",
            "allocation_pct": 39.285714285714285
          },
          {
            "key": "growth_technology",
            "label": "Growth and technology",
            "allocation_pct": 32.5
          },
          {
            "key": "real_assets_inflation",
            "label": "Real assets and inflation",
            "allocation_pct": 23.57142857142857
          },
          {
            "key": "defensive_equity",
            "label": "Defensive equity",
            "allocation_pct": 4.642857142857142
          }
        ]
      }
    ],
    "outstanding_live_book": [
      {
        "date": "2026-09-03",
        "score": 70.62736567982458,
        "label": "Risk-seeking",
        "weekly_score": 65.603125,
        "monthly_score": 75.65160635964914,
        "portfolio_count": 190,
        "round_count": 26,
        "weekly_portfolio_count": 42,
        "monthly_portfolio_count": 148,
        "weekly_round_count": 6,
        "monthly_round_count": 20
      },
      {
        "date": "2026-09-04",
        "score": 69.74648533423205,
        "label": "Risk-seeking",
        "weekly_score": 63.54259259259259,
        "monthly_score": 75.95037807587151,
        "portfolio_count": 197,
        "round_count": 27,
        "weekly_portfolio_count": 42,
        "monthly_portfolio_count": 155,
        "weekly_round_count": 6,
        "monthly_round_count": 21
      }
    ]
  }
}
Insight Feed
GET /v1/insights?limit=3

{
  "engine_version": "deterministic_insights_v4",
  "generated_at": "2026-09-05T13:34:07Z",
  "data_as_of": "2026-09-04",
  "insight_count": 29,
  "categories": [
    "benchmark_difficulty",
    "confidence_calibration",
    "consensus_performance",
    "current_positioning",
    "horizon_agreement",
    "live_performance",
    "market_environment",
    "model_behavior",
    "model_similarity",
    "oracle_comparison",
    "performance_attribution",
    "risk_regime"
  ],
  "data": [
    {
      "id": "consensus-performance-CB-2026-08-27-1W",
      "category": "consensus_performance",
      "title": "AI consensus portfolio scored 10.2 versus the oracle",
      "summary": "If the weekly model allocations were averaged into one consensus portfolio, it returned +0.97% versus +0.11% for the S&P 500 and +9.45% for the hindsight best asset.",
      "why_it_matters": "The consensus portfolio tests whether the combined AI view is more useful than any single model's portfolio or the S&P 500 benchmark.",
      "confidence": "high",
      "source_type": "deterministic",
      "importance_score": 92,
      "evidence": [
        {
          "href": "/rounds/CB-2026-08-27-1W",
          "label": "Weekly result",
          "source": "rounds/CB-2026-08-27-1W/runs/official-v3-20260828-weekly/results"
        }
      ]
    },
    {
      "id": "consensus-performance-CB-2026-08-05-1M",
      "category": "consensus_performance",
      "title": "AI consensus portfolio scored 6.7 versus the oracle",
      "summary": "If the monthly model allocations were averaged into one consensus portfolio, it returned +1.87% versus +0.05% for the S&P 500 and +27.90% for the hindsight best asset.",
      "why_it_matters": "The consensus portfolio tests whether the combined AI view is more useful than any single model's portfolio or the S&P 500 benchmark.",
      "confidence": "high",
      "source_type": "deterministic",
      "importance_score": 92,
      "evidence": [
        {
          "href": "/rounds/CB-2026-08-05-1M",
          "label": "Monthly result",
          "source": "rounds/CB-2026-08-05-1M/runs/official-v2-2-all-monthly-20260805/results"
        }
      ]
    },
    {
      "id": "benchmark-difficulty-CB-2026-08-27-1W",
      "category": "benchmark_difficulty",
      "title": "Weekly round had +13.95% asset dispersion",
      "summary": "The best scored asset returned +9.45%, the worst returned -4.50%, and +51.43% of the universe was positive. The S&P 500 ranked 32 out of 70 options.",
      "why_it_matters": "Benchmark difficulty matters because model scores should be interpreted against the opportunity set and the market window they faced.",
      "confidence": "high",
      "source_type": "deterministic",
      "importance_score": 90,
      "evidence": [
        {
          "href": "/rounds/CB-2026-08-27-1W",
          "label": "Weekly result",
          "source": "rounds/CB-2026-08-27-1W/runs/official-v3-20260828-weekly/results/returns.csv"
        }
      ]
    }
  ]
}
Model Behavior Profiles
GET /v1/models/behavior

{
  "version": "model_behavior_v2",
  "generated_at": "2026-09-05T13:37:51.273Z",
  "data_as_of": "2026-09-08",
  "summary": {
    "model_count": 12,
    "active_model_count": 7,
    "historical_model_count": 5,
    "comparison_cohort": "active_models",
    "portfolio_count": 847,
    "resolved_result_count": 673,
    "highest_risk_model_id": "anthropic-claude-fable-5-1",
    "most_concentrated_model_id": "xai-grok-4-6",
    "most_defensive_model_id": "google-gemini-3-1-pro",
    "most_like_group_model_id": "anthropic-claude-opus-5",
    "most_different_model_id": "xai-grok-4-3",
    "most_consensus_aligned_model_id": "anthropic-claude-opus-5",
    "most_distinctive_model_id": "xai-grok-4-3",
    "lowest_turnover_model_id": "anthropic-claude-opus-5",
    "highest_recent_winner_tilt_model_id": "xai-grok-4-3",
    "lowest_recent_winner_tilt_model_id": "google-gemini-3-1-pro"
  },
  "profiles": [
    {
      "model_id": "anthropic-claude-fable-5",
      "label": "Claude Fable 5",
      "archetype": {
        "label": "Group-aligned allocator",
        "description": "No exposure or risk dimension is persistently far from same-round peer norms. Portfolios averaged 4.2 holdings, a 31.3% largest position, and 57.6% turnover.",
        "confidence": "medium",
        "confidence_label": "Moderate evidence",
        "confidence_reason": "43 independent decision dates support comparison, but the leading signal is not yet established."
      },
      "sample": {
        "portfolio_count": 84,
        "weekly_portfolio_count": 43,
        "monthly_portfolio_count": 41,
        "active_portfolio_count": 20,
        "resolved_round_count": 64,
        "first_round_id": "CB-2026-06-09-1M",
        "latest_round_id": "CB-2026-09-02-1W"
      },
      "metrics": {
        "average_risk_pulse": 70.83184523809524,
        "average_top_allocation_pct": 31.25,
        "defensive_pct": 12.142857142857142,
        "portfolio_difference_score": 51.19,
        "recent_winner_tilt_score": 17.78,
        "recent_winner_top_quintile_pct": 3.66
      },
      "peer": {
        "average_peer_similarity": 0.5207642312481026,
        "similarity_observation_count": 530,
        "outlier_round_count": 4,
        "closest_peer": {
          "peer_model_id": "anthropic-claude-opus-4-7",
          "average_similarity": 0.6147079539574215,
          "shared_round_count": 28
        }
      },
      "turnover": {
        "average_turnover_pct": 57.5609756097561,
        "weekly_turnover_pct": 60.11904761904762,
        "monthly_turnover_pct": 54.875,
        "turnover_observation_count": 82
      },
      "portfolio_difference": {
        "version": "capitalbench_portfolio_difference_v1",
        "current_methodology_version": "portfolio-v3.0",
        "current_methodology": {
          "observation_count": 26,
          "decision_date_count": 13,
          "track_count": 2,
          "combined_available": true,
          "weighting": "50% monthly + 50% weekly",
          "monthly_weight_pct": 50,
          "weekly_weight_pct": 50,
          "availability_note": null,
          "average_difference_score": 51.19,
          "average_shared_allocation_pct": 48.81,
          "average_peer_count": 6.2,
          "combined": {
            "observation_count": 26,
            "decision_date_count": 13,
            "track_count": 2,
            "combined_available": true,
            "weighting": "50% monthly + 50% weekly",
            "monthly_weight_pct": 50,
            "weekly_weight_pct": 50,
            "availability_note": null,
            "average_difference_score": 51.19,
            "average_shared_allocation_pct": 48.81,
            "average_peer_count": 6.2
          },
          "evidence": {
            "status": "established",
            "label": "Established sample",
            "established": true
          },
          "tracks": {
            "weekly": {
              "observation_count": 13,
              "decision_date_count": 13,
              "average_difference_score": 44.41,
              "average_shared_allocation_pct": 55.59,
              "average_peer_count": 6.2
            },
            "monthly": {
              "observation_count": 13,
              "decision_date_count": 13,
              "average_difference_score": 57.97,
              "average_shared_allocation_pct": 42.03,
              "average_peer_count": 6.2
            }
          }
        },
        "all_history": {
          "observation_count": 84,
          "decision_date_count": 43,
          "track_count": 2,
          "combined_available": true,
          "weighting": "50% monthly + 50% weekly",
          "monthly_weight_pct": 50,
          "weekly_weight_pct": 50,
          "availability_note": null,
          "average_difference_score": 47.51,
          "average_shared_allocation_pct": 52.49,
          "average_peer_count": 6.3,
          "combined": {
            "observation_count": 84,
            "decision_date_count": 43,
            "track_count": 2,
            "combined_available": true,
            "weighting": "50% monthly + 50% weekly",
            "monthly_weight_pct": 50,
            "weekly_weight_pct": 50,
            "availability_note": null,
            "average_difference_score": 47.51,
            "average_shared_allocation_pct": 52.49,
            "average_peer_count": 6.3
          },
          "evidence": {
            "status": "established",
            "label": "Established sample",
            "established": true
          },
          "tracks": {
            "weekly": {
              "observation_count": 43,
              "decision_date_count": 43,
              "average_difference_score": 45.5,
              "average_shared_allocation_pct": 54.5,
              "average_peer_count": 6.3
            },
            "monthly": {
              "observation_count": 41,
              "decision_date_count": 41,
              "average_difference_score": 49.52,
              "average_shared_allocation_pct": 50.48,
              "average_peer_count": 6.3
            }
          }
        },
        "methodology": {
          "score_definition": "one-half of the absolute allocation difference from the leave-one-model-out same-round average portfolio",
          "plain_english": "the percentage of allocation that would need to change to match the other models' average portfolio",
          "range": "0 means the same as the group; 100 means completely different",
          "combined_formula": "50% monthly score + 50% weekly score",
          "combined_availability": "both monthly and weekly observations are required",
          "peer_policy": "the measured model is excluded from its comparison portfolio",
          "round_weighting": "each eligible model-round observation receives equal weight",
          "minimum_round_roster": 3,
          "interpretation_limit": "the score measures portfolio difference, not copying, influence, or intent"
        }
      },
      "recent_winner": {
        "version": "capitalbench_recent_winner_tilt_v1",
        "current_methodology_version": "portfolio-v3.0",
        "current_methodology": {
          "observation_count": 26,
          "decision_date_count": 13,
          "track_count": 2,
          "combined_available": true,
          "weighting": "50% monthly + 50% weekly",
          "monthly_weight_pct": 50,
          "weekly_weight_pct": 50,
          "availability_note": null,
          "average_tilt_score": 17.78,
          "average_top_quintile_allocation_pct": 3.66,
          "average_context_coverage_pct": 100,
          "median_peer_tilt_score": 12.39,
          "median_peer_delta_points": 2.29,
          "above_peer_rate_pct": 65.39,
          "below_peer_rate_pct": 34.62,
          "combined": {
            "observation_count": 26,
            "decision_date_count": 13,
            "track_count": 2,
            "combined_available": true,
            "weighting": "50% monthly + 50% weekly",
            "monthly_weight_pct": 50,
            "weekly_weight_pct": 50,
            "availability_note": null,
            "average_tilt_score": 17.78,
            "average_top_quintile_allocation_pct": 3.66,
            "average_context_coverage_pct": 100,
            "median_peer_tilt_score": 12.39,
            "median_peer_delta_points": 2.29,
            "above_peer_rate_pct": 65.39,
            "below_peer_rate_pct": 34.62
          },
          "evidence": {
            "status": "near_peers",
            "label": "Leans toward recent laggards",
            "peer_label": "Near the peer pattern",
            "established": false
          },
          "tracks": {
            "weekly": {
              "observation_count": 13,
              "decision_date_count": 13,
              "average_tilt_score": 12.09,
              "average_top_quintile_allocation_pct": 2.31,
              "average_context_coverage_pct": 100,
              "median_peer_tilt_score": 5.15,
              "median_peer_delta_points": 1.87,
              "above_peer_rate_pct": 69.23,
              "below_peer_rate_pct": 30.77
            },
            "monthly": {
              "observation_count": 13,
              "decision_date_count": 13,
              "average_tilt_score": 23.47,
              "average_top_quintile_allocation_pct": 5,
              "average_context_coverage_pct": 100,
              "median_peer_tilt_score": 19.63,
              "median_peer_delta_points": 2.72,
              "above_peer_rate_pct": 61.54,
              "below_peer_rate_pct": 38.46
            }
          }
        },
        "all_history": {
          "observation_count": 84,
          "decision_date_count": 43,
          "track_count": 2,
          "combined_available": true,
          "weighting": "50% monthly + 50% weekly",
          "monthly_weight_pct": 50,
          "weekly_weight_pct": 50,
          "availability_note": null,
          "average_tilt_score": 54.53,
          "average_top_quintile_allocation_pct": 38.23,
          "average_context_coverage_pct": 100,
          "median_peer_tilt_score": 68.06,
          "median_peer_delta_points": -0.37,
          "above_peer_rate_pct": 47.42,
          "below_peer_rate_pct": 52.58,
          "combined": {
            "observation_count": 84,
            "decision_date_count": 43,
            "track_count": 2,
            "combined_available": true,
            "weighting": "50% monthly + 50% weekly",
            "monthly_weight_pct": 50,
            "weekly_weight_pct": 50,
            "availability_note": null,
            "average_tilt_score": 54.53,
            "average_top_quintile_allocation_pct": 38.23,
            "average_context_coverage_pct": 100,
            "median_peer_tilt_score": 68.06,
            "median_peer_delta_points": -0.37,
            "above_peer_rate_pct": 47.42,
            "below_peer_rate_pct": 52.58
          },
          "evidence": {
            "status": "near_peers",
            "label": "Mixed recent-performance exposure",
            "peer_label": "Near the peer pattern",
            "established": false
          },
          "tracks": {
            "weekly": {
              "observation_count": 43,
              "decision_date_count": 43,
              "average_tilt_score": 54.29,
              "average_top_quintile_allocation_pct": 37.56,
              "average_context_coverage_pct": 100,
              "median_peer_tilt_score": 65.22,
              "median_peer_delta_points": 0.75,
              "above_peer_rate_pct": 55.81,
              "below_peer_rate_pct": 44.19
            },
            "monthly": {
              "observation_count": 41,
              "decision_date_count": 41,
              "average_tilt_score": 54.77,
              "average_top_quintile_allocation_pct": 38.9,
              "average_context_coverage_pct": 100,
              "median_peer_tilt_score": 70.9,
              "median_peer_delta_points": -1.49,
              "above_peer_rate_pct": 39.02,
              "below_peer_rate_pct": 60.98
            }
          }
        },
        "latest_context_source": "universe_decision_context",
        "latest_window_label": "5 trading sessions relative to SPY",
        "methodology": {
          "score_definition": "allocation-weighted percentile rank of pre-decision recent returns",
          "combined_formula": "50% monthly tilt + 50% weekly tilt",
          "combined_availability": "both monthly and weekly observations are required",
          "neutral_assets": [
            "SP500",
            "CASH"
          ],
          "neutral_asset_score": 50,
          "weekly_current_window": "5 trading sessions relative to SPY",
          "monthly_current_window": "21 trading sessions relative to SPY",
          "peer_baseline": "leave-one-model-out same-round peer median",
          "outcome_policy": "future returns and resolved outcomes are excluded"
        }
      }
    }
  ],
  "pattern_report": {
    "version": "model_behavior_pattern_report_v2",
    "data_as_of": "2026-09-08",
    "data_fingerprint": "becd3fb04912a533c78c7462bc92c800fff9cf17d9f2b74907b9139fd705b9c9",
    "llm_provenance": {
      "status": "deterministic_source_of_truth",
      "provider": "nvidia_nim",
      "prompt_version": "capitalbench_model_patterns_prompt_v2",
      "input_contract_version": "capitalbench_model_patterns_llm_input_v2",
      "output_contract_version": "capitalbench_model_patterns_llm_output_v2",
      "rule": "NVIDIA may rewrite summaries only from supplied metrics; deterministic rows remain the source of truth."
    },
    "rows": [
      {
        "model_id": "anthropic-claude-fable-5-1",
        "label": "Claude Fable 5.1",
        "behavior_summary": "Emerging pattern across 4 official portfolios. Portfolios averaged 3.0 holdings, a 35.0% largest position, and 82.5% turnover.",
        "traits": [
          {
            "key": "confidence",
            "label": "Provisional",
            "evidence": "Only 4 peer-matched portfolios across 2 independent decision dates are available; stable labels require 8 and 6, respectively.",
            "metric_keys": [
              "portfolio_count"
            ],
            "scope": "sample"
          }
        ],
        "key_numbers": {
          "risk_taking_score": 80.16,
          "average_holding_count": 3,
          "average_top_allocation_pct": 35,
          "high_risk_pct": 76.25,
          "defensive_pct": 0,
          "tech_pct": 42.5,
          "cash_duration_pct": 0,
          "international_pct": 0,
          "real_assets_pct": 33.75,
          "benchmark_pct": 15,
          "portfolio_difference": 53.96,
          "peer_similarity": 0.464,
          "outlier_round_count": 0,
          "average_turnover_pct": 82.5,
          "recent_winner_tilt_score": 13.11,
          "recent_winner_top_quintile_pct": 0,
          "recent_winner_peer_delta_points": 3.91,
          "average_rank": null,
          "first_place_count": 0,
          "last_place_count": 0,
          "beat_sp500_count": 0,
          "beat_sp500_rate_pct": null,
          "average_alpha_pp": null,
          "average_capitalbench_score": null,
          "resolved_round_count": 0,
          "portfolio_count": 4
        },
        "top_assets": [
          {
            "option_id": "CYBERSECURITY",
            "label": "Cybersecurity",
            "ticker": "CIBR",
            "category": "ai_and_technology",
            "average_allocation_pct": 17.5,
            "frequency_pct": 50,
            "display": "Cybersecurity (CIBR)"
          },
          {
            "option_id": "SEMICONDUCTORS",
            "label": "Semiconductors",
            "ticker": "SMH",
            "category": "ai_and_technology",
            "average_allocation_pct": 16.25,
            "frequency_pct": 50,
            "display": "Semiconductors (SMH)"
          },
          {
            "option_id": "SP500",
            "label": "S&P 500",
            "ticker": "SPY",
            "category": "us_broad_market",
            "average_allocation_pct": 15,
            "frequency_pct": 50,
            "display": "S&P 500 (SPY)"
          }
        ]
      }
    ]
  }
}
Latest Scored Test
GET /v1/leaderboards/latest?track=weekly

{
  "track": "weekly",
  "round_id": "CB-2026-08-27-1W",
  "data": [
    {
      "rank": 1,
      "model_id": "google-gemini-3-1-pro",
      "label": "Gemini 3.1 Pro",
      "portfolio_return_pct": 3.490297764655556,
      "benchmark_return_pct": 0.10918307662313165,
      "alpha_pp": 3.3811146880324245,
      "max_possible_return_pct": 9.45258288357751,
      "capitalbench_score": 36.92427569949629
    }
  ]
}
Benchmark Comparison Sets
GET /v1/leaderboards/benchmark-sets?track=weekly

{
  "policy": {
    "version": "benchmark_sets_v2",
    "qualification_thresholds": {
      "weekly": 6,
      "monthly": 3
    }
  },
  "current": {
    "weekly": "weekly-set-2026-08-19",
    "monthly": "monthly-set-2026-07-24"
  },
  "sets": [
    {
      "set_id": "weekly-set-2026-09-04",
      "label": "Weekly Set: Sep 4, 2026",
      "track": "weekly",
      "status": "waiting",
      "is_current": false,
      "is_qualified": false,
      "qualification_threshold": 6,
      "comparison": {
        "mode": "comparison_set",
        "completed_round_count": 0,
        "completed_round_ids": [],
        "comparison_round_count": 0,
        "comparison_round_ids": [],
        "comparison_model_count": 7,
        "is_early_cohort": true,
        "excluded_round_count": 0,
        "excluded_round_ids": [],
        "inherited_round_count": 0,
        "post_start_round_count": 0,
        "qualification_threshold": 6,
        "is_qualified": false,
        "is_current": false,
        "status": "waiting"
      },
      "leader": null
    }
  ]
}
One Comparison Set
GET /v1/leaderboards/benchmark-sets/weekly-set-2026-09-04

{
  "set_id": "weekly-set-2026-09-04",
  "label": "Weekly Set: Sep 4, 2026",
  "track": "weekly",
  "model_ids": [
    "anthropic-claude-fable-5-1",
    "anthropic-claude-opus-5",
    "google-gemini-3-1-pro",
    "openai-gpt-6-astra",
    "xai-grok-4-3",
    "xai-grok-4-5",
    "xai-grok-4-6"
  ],
  "comparison": {
    "mode": "comparison_set",
    "completed_round_count": 0,
    "completed_round_ids": [],
    "comparison_round_count": 0,
    "comparison_round_ids": [],
    "comparison_model_count": 7,
    "is_early_cohort": true,
    "excluded_round_count": 0,
    "excluded_round_ids": [],
    "inherited_round_count": 0,
    "post_start_round_count": 0,
    "qualification_threshold": 6,
    "is_qualified": false,
    "is_current": false,
    "status": "waiting"
  },
  "excluded_rounds": [],
  "data": []
}
Run Concentration
GET /v1/rounds/CB-2026-09-04-1W/concentration

{
  "round_id": "CB-2026-09-04-1W",
  "track": "weekly",
  "model_count": 7,
  "portfolio_count": 7,
  "summary": {
    "top_asset_share_pct": 25,
    "top_three_share_pct": 66.42857142857143,
    "effective_asset_count": 5.291576673866091
  },
  "assets": [
    {
      "option_id": "SOFTWARE",
      "label": "Software",
      "ticker": "IGV",
      "category": "ai_and_technology",
      "allocation_pct": 25,
      "model_count": 5,
      "models": [
        {
          "model_id": "anthropic-claude-fable-5-1",
          "label": "Claude Fable 5.1",
          "provider": "anthropic",
          "allocation_pct": 5
        },
        {
          "model_id": "anthropic-claude-opus-5",
          "label": "Claude Opus 5",
          "provider": "anthropic",
          "allocation_pct": 5
        }
      ]
    }
  ]
}
Schema

Important Fields

Field Meaning
allocation_pct Portfolio or aggregate weight, in percentage points.
alpha_pp Portfolio Minus S&P 500, in percentage points.
capitalbench_score Oracle-relative score where 100 matches the maximum possible return, 0 means no return, and negative values represent losses.
comparison Cumulative leaderboard metadata showing included resolved rounds, test counts, and aggregation mode.
effective_asset_count Concentration metric equal to one divided by summed squared asset shares.
max_possible_return_pct Highest realized return among scored options in the saved universe; cumulative rows report the average per-test oracle return as supporting context.
importance_score 0-100 editorial ranking used to order public insights by usefulness and urgency.
average_peer_similarity Legacy compatibility field: average cosine similarity between one model's portfolio weights and peer portfolio weights in the same official rounds.
portfolio_difference_score 0-100 score equal to the percentage of allocation that would need to change to match the leave-one-model-out average portfolio in the same rounds.
average_turnover_pct Average round-to-round portfolio change, calculated as one-half of summed absolute allocation changes.
recent_winner_tilt_score Combined allocation-weighted percentile rank of cutoff-safe recent asset returns: 50% monthly plus 50% weekly. 50 is neutral; higher values mean more weight in recent winners.
recent_winner_top_quintile_pct Portfolio allocation to assets in the top 20% of the applicable pre-decision recent-return window.
recent_winner_peer_delta_points Model recent-winner tilt minus the leave-one-model-out median for other models in the same rounds, in score points.
archetype Peer-normalized, evidence-gated model behavior label with a model-specific description and confidence level.
model_id Stable CapitalBench model identifier.
next_cursor Pagination cursor returned when more records are available.
option_id Stable asset identifier from the saved universe.
pattern_report Dynamic model behavior comparison report with one row per model, fixed-role pills, evidence signals, key numbers, methodology metadata, freshness, and rewrite provenance.
portfolio_count Number of model portfolios included in an aggregate calculation.
eligible_portfolio_count All portfolios considered before filtering to holders of a requested asset.
holder_portfolio_count Eligible portfolios with a non-zero allocation to a requested asset.
holder_rate_pct Share of eligible portfolios holding a requested asset.
average_holder_allocation_pct Average asset weight among portfolios that hold it.
consensus_allocation_pct Average asset weight across the full eligible cohort, with non-holders counted as zero.
row_count Total number of records matching a list endpoint before pagination.
risk_on_loading Versioned asset loading from -1 defensive to +1 risk seeking, used by AI Risk Appetite.
risk_score_1_5 Standalone asset-risk rating used by the existing historical model profile.
round_id Stable test identifier for one weekly or monthly round.
scope active or cumulative.
top_asset_share_pct Average share of the round allocated to the largest asset.
track weekly, monthly, or all.
proof Hashes and URLs for public verification artifacts.
Errors

Status Codes

Status Meaning
200 Request succeeded.
400 Invalid parameter, invalid cursor, or malformed request.
401 Missing, expired, or invalid API key.
403 The API key is valid but lacks the required scope.
404 Requested model, round, or asset was not found.
429 Rate limit exceeded.
500 Temporary service error.
Freshness and proof

Publication Rules

Active-position endpoints update when a new public weekly or monthly round is registered. Result endpoints update after the round closes, end prices are collected, and the scored output is published.

  • Weekly and monthly tests remain separate in scoring and cumulative views.
  • Completed rounds stop contributing to active exposure and remain in cumulative history.
  • Audit links expose the saved files, hashes, universe version, model outputs, and price records.
Access

Request API Access

API credentials are provisioned directly for research teams, funds, data partners, and builders using CapitalBench model-positioning data.