analyze_risk
ChatGPTDecomposes the risk of a portfolio over the return or NAV series you provide. Given weights, holdings, or the id of a portfolio built earlier, it returns annualised volatility with its estimation method, each holding's risk contribution and marginal contribution, the same grouped by asset class, the gap to any risk budgets supplied, maximum drawdown and conditional drawdown at risk (99%) over the stated window, concentration as effective number of holdings, Herfindahl index and largest weight, and which constraints bind with the slack on the others. Every figure is tagged with its provenance — C8's validated engine or new code — and the basis on which it was computed. Covariance is estimated from the series over the chosen period, three years of daily observations by default. Use it when the question is where a portfolio's risk comes from, or whether it sits within its budgets and constraints.
backtest_walk_forward
ChatGPTStarts a walk-forward backtest. At each rebalance date the portfolio is rebuilt using only data available on that date, with the chosen in-sample and out-of-sample windows, and the out-of-sample return path is assembled from the results. Returns at once with a job handle; the outcome — return series, drawdown profile, turnover per rebalance and the weights at each date — is collected with get_job_status. Backtests take from tens of seconds to several minutes depending on universe size and horizon. Historical data; not a forecast.
build_model_portfolio
ChatGPTComputes target weights for a universe of instruments using a named construction method under a constraint set: per-asset bounds, asset-class bands, a maximum drawdown limit (conditional drawdown at risk, 99%), a turnover cap relative to current weights, a target volatility, and minimum or maximum number of holdings. Returns the weights, which constraints were binding, each asset's ex-ante risk contribution and the engine's solution status. The inputs are the return or NAV series you provide, as current as you supply them; this is not intraday data and not a forecast. Use it when the question is what the target allocation should be, rather than whether a portfolio has drifted from one.
compare_scenarios
ChatGPTRuns the same universe under two to five construction set-ups — different methods, or one method with different constraint sets — and returns their weights, ex-ante risk statistics, turnover from current weights and binding constraints side by side. Use it to show the effect of a cap, a band or a method choice before settling on one.
create_upload_link
ChatGPTCreates a short-lived link to a page where a spreadsheet or CSV of NAV or return series can be uploaded, and returns the dataset id to use in other tools. The link is valid for 30 minutes; the uploaded data is retained for 24 hours and then deleted.
evaluate_performance
ChatGPTEvaluates a portfolio's performance over a period on the return or NAV series you provide — realised, holding fixed weights rebalanced at the chosen frequency, or simulated by walk-forward, where the portfolio is rebuilt at each rebalance date using only data available on that date. Returns total and annualised return, volatility, Sharpe ratio with the risk-free basis named, maximum drawdown, conditional drawdown at risk (99%), Calmar ratio and monthly hit rate; relative statistics only when a benchmark is given; turnover with the cost drag at the trading cost you set; and, on request, monthly returns, a drawdown table, arithmetic contribution by holding and per-rebalance turnover. Every figure is tagged with its provenance and basis. Walk-forward runs are asynchronous: the call returns a job handle at once and the result is collected with get_job_status. Historical data; not a forecast.
explain_result
ChatGPTExplains a result from build_model_portfolio, rebalance_to_target or compare_scenarios: which constraints were binding and by how much, each asset's share of portfolio risk set against its weight, and what moved relative to the starting weights. Accepts the result's id, or the weights and constraints directly. Use it when the question is why an allocation looks the way it does.
get_job_status
ChatGPTReturns the state of a job started by backtest_walk_forward or evaluate_performance — queued, running, completed or failed — with progress, and the full result when completed. Results are retained for 24 hours after completion.
list_construction_methods
ChatGPTLists the portfolio construction methods this server can run — inverse volatility, risk parity, tilted risk parity with risk budgets, constrained mean-variance, the MultiConstraint family (tactical asset allocation, mean-variance, tracker) with drawdown and turnover caps, mixed-integer cardinality, principal components, performance factor and clustered risk parity — with the inputs and constraints each method accepts. Use it to choose a method, or to check which constraints a method supports before building a portfolio.
rebalance_to_target
ChatGPTTurns a target allocation into a trade list from current holdings. Given holdings as quantities or weights, and either target weights or a method plus constraints from which to compute them, returns the trades, the resulting turnover, and the post-trade weights, with turnover held within the cap. This is analysis only: nothing is executed or recorded.