Market data
Get the theme baskets
One deterministic basket per investing theme, with weights and a walk-forward backtest.
GET /api/themes returns Monvera’s open theme book: one rule-based basket per investing theme (Artificial Intelligence, Semiconductors, Quantum, Space, Crypto-linked, Cloud and Software, Energy, Fintech), computed from real 12-month price data by the same engine as the open strategies. No AI is in this loop, so the same data always produces the same weights and anyone can reproduce them. This is the raw JSON behind monvera.best/themes.
GET /api/themes· public, no token required · 120 requests per 60 seconds per IP. Base URL, response envelope, and error shapes: conventions.
Parameters
Section titled “Parameters”None.
Response
Section titled “Response”{ asOf, refreshedEvery, note, themes }.
| Field | Type | Description |
|---|---|---|
asOf |
string | ISO timestamp of the build. |
refreshedEvery |
string | "6h". Baskets are rebuilt from fresh market data every six hours. |
note |
string | The methodology statement, including that backtests are walk-forward and history, not a promise. |
themes |
object[] | The theme list (below). |
Each theme:
| Field | Type | Description |
|---|---|---|
slug |
string | Stable id, for example ai or semiconductors. The human page lives at /themes/{slug}. |
name |
string | Display name, for example Artificial Intelligence. |
tagline |
string | One-line summary. |
method |
string | The full rule in plain words, enough to reproduce the weights. |
excluded |
object[] | { symbol, reason } for curated names the book had to leave out (for example, no 12-month public history yet). Exclusions are named, never synthesized. |
allocations |
object[] | { symbol, weightPct } per holding; integer weights summing to 100, inverse-volatility with a 25% per-name cap. |
backtest |
object | null | The walk-forward backtest, or null if a data gap prevented one. |
Each backtest has the same shape as the strategies route: period ("6M"), methodology ("walk-forward"), rebalance ("monthly"), portfolio, and benchmark (symbol: "SPY"), each series carrying returnPct, volPct, maxDrawdownPct, sharpe, and a downsampled curve normalized to start at 100.
Example
Section titled “Example”curl "https://monvera.best/api/themes"const { themes } = await (await fetch("https://monvera.best/api/themes")).json();const ai = themes.find((t) => t.slug === "ai");// ai.allocations -> [{ symbol: "MSFT", weightPct: 9 }, ...]// ai.backtest.portfolio.returnPct vs ai.backtest.benchmark.returnPct© 2026 Aibora · Documentation interface. Original Monvera materials retain their upstream attribution andMIT license.