Skip to main content
Fincept Performance is the performance-analysis engine behind every perf_* tool. perf_stats gives the full performance report of one or many price series side by side: total return, CAGR, maximum drawdown and Calmar ratio; MTD, 3- and 6-month, YTD, 1-, 3-, 5- and 10-year and since-inception returns; Sharpe and Sortino ratios, mean, volatility, skew, kurtosis and the best and worst period at daily, monthly and yearly frequency; average drawdown, average up and down month and win rates. The other tools give monthly return tables, drawdown episodes, single ratios against a benchmark, return transforms, resampling, annualisation, rolling statistics, portfolio weights, clustering, and the checks of a strategy search. It runs on Fincept’s servers; your agent sends prices or data references and gets back a result envelope with tables and charts.
Fincept Performance tools are free. They count toward the rate limit only; a $fincept reference inside a call is charged like a direct call to that tool.

Modules

Tools are grouped in four modules. Each module is a toolset named perf_<module>, so you can list it or search within it. The Fincept Performance reference lists every tool. perf_stats is listed by default. perf_catalog returns the live list of modules and tools from inside your agent.

Inputs

Every tool except perf_annualize, perf_limit_weights and perf_random_weights reads price series, given either way, or both: series is how an agent compares instruments it fetches itself: one data reference per instrument, market_get_candles data at path candles as is.
  • Dates are required. The statistics are calendar-based (month, year and lookback figures), so every table needs a date column. Each series is measured on its own dates.
  • Times with a UTC offset (2024-01-02T09:30:00-05:00) are read at the exchange’s own clock: bars at most one a day become that local date, so daylight-saving changes do not shift them; intraday bars become UTC times.
  • Prices must be above zero; a zero or negative price is refused with the series named.
  • Periods per year. Annualised figures use periods_per_year when given. Otherwise it is inferred from the dates: from their regular frequency when they have one, else from their median spacing (trading days give 252, weekly data 52, monthly 12). The answer says which was used.

Outputs

Returns, drawdowns, volatility and rates are fractions (0.12 is 12%); ratios are plain numbers. Dated results come back as rows with ISO dates and a line chart; reports come back as tables (statistics in rows, series in columns) with metrics for the headline figures.

Limits

Inputs the computation cannot use are refused with the reason: a missing date column, repeated dates or series names, a non-positive price, weight bounds or a cap that cannot sum to 1, a benchmark that is not one of the series.

Example

Prompt
The agent fetches each instrument with market_get_candles, passes them as series to perf_stats and perf_monthly_returns, then calls perf_weights with method: "equal_risk_contribution". More prompts: