Saved Backtests & Factor Studies (FinBridge)
get_backtest_runsList, open, re-check or delete the backtest and factor runs saved for your account. Every backtest_portfolio and analyze_factors call is stored automatically with the exact inputs it ran on, the headline numbers, and the data vintage (the market's latest price session at the time).
Why re-check matters: in this dataset the same inputs can give a different answer later. Split adjustments get applied (225 US ETFs on 2026-09-04), financials get restated, delistings get flagged — all of which rewrite history retroactively. action='recheck' re-runs the stored inputs against today's data and reports what moved, which is the only way to notice that kind of drift.
Args:
action: 'list' (default) | 'get' | 'recheck' | 'delete'
run_id: required for get / recheck / delete
kind: 'portfolio' | 'factors' — filter for list
limit: 1-50 for list (default 20)
trades: include the trade log in 'get' (default false). A portfolio run stores its initial purchase, every rebalance delta and any delisting liquidation; factor studies have no trades.
Returns:
list: {runs: [{run_id, kind, label, market, range, data_as_of, created_at, headline}]}
get: {run: {...}, params, summary, trades?}
recheck: {run, stored, current, changed: [{key, before, after, delta}], data_as_of: {stored, now}, verdict}
delete: {deleted: true}
Use when: comparing runs you made earlier, auditing which trades a portfolio backtest actually made, or checking whether a saved result still holds after nightly ingests. Errors: no account on this key -> {error} rather than a failure; an unknown run_id -> {error}. Notes: Runs are per account and the newest 200 are kept. Only inputs and headline numbers are stored, never the full response — the inputs are what make a run reproducible.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Filter the list by run type | |
| limit | No | How many runs to list (default 20) | |
| action | No | What to do (default 'list') | list |
| run_id | No | Run id — required for get / recheck / delete | |
| trades | No | Include the trade log in 'get' (default false) | |
| response_format | No | 'markdown' for tables, 'json' for compact machine-readable output | markdown |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| run | No | ||
| runs | No | ||
| count | No | ||
| error | No | ||
| range | No | ||
| action | No | ||
| params | No | ||
| run_id | No | ||
| stored | No | ||
| trades | No | ||
| changed | No | ||
| current | No | ||
| deleted | No | ||
| summary | No | ||
| verdict | No | ||
| data_as_of | No | ||
| trade_count | No |