Folionomiq
Ce que fait ce MCP
Measures portfolio structure and historical performance, including diversification, factor exposure, drawdowns, crises, withdrawals and counterfactual changes.
Outils
Schéma d’entrée
{'type': 'object', 'title': 'asset_infoArguments', 'required': ['ticker'], 'properties': {'ticker': {'type': 'string', 'title': 'Ticker', 'maxLength': 20, 'description': 'One ticker, as the exchange lists it.'}}}
Schéma de sortie
{'type': 'object', 'required': ['ticker'], 'properties': {'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'fund': {'description': 'For a fund: is_fund, holdings ([symbol, weight] pairs), sectors.'}, 'meta': {'description': 'name, type, category, expense_ratio, currency, exchange, fund_family, total_assets, sector, isin.'}, 'stats': {'description': 'last, ret_1y, vol, max_drawdown, years, start, end.'}, 'ticker': {'type': ['string', 'null'], 'description': 'Ticker.'}}, 'description': 'One fund or share.'}
Schéma d’entrée
{'type': 'object', 'title': 'check_before_you_buyArguments', 'required': ['holdings', 'add', 'amount'], 'properties': {'add': {'type': 'string', 'title': 'Add', 'maxLength': 20, 'description': 'The one ticker being considered.'}, 'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'amount': {'type': 'number', 'title': 'Amount', 'description': 'How much of it, in the same units as `holdings` (money when holdings are amounts).', 'exclusiveMinimum': 0}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'add': {'type': ['string', 'null'], 'description': 'The ticker considered.'}, 'bets': {'description': 'Independent bets before and after.'}, 'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'amount': {'type': ['number', 'null'], 'description': 'How much of it.'}, 'crises': {'description': 'Per past crisis: fall before and after, as fractions.'}, 'window': {'description': 'The shared price window.'}, 'overlap': {'description': 'How much of it is already owned: kind (fund, stock, opaque); for a fund already_share (share of its money in companies already held), seen_share, shared ([company, weight in it, weight in the portfolio]), source, as_of; for a stock already (share of the portfolio) and via.'}, 'top_risk': {'description': 'The holding carrying the most risk, and its share, before and after.'}, 'total_after': {'type': ['number', 'null'], 'description': 'Portfolio size after.'}, 'total_before': {'type': ['number', 'null'], 'description': 'Portfolio size before.'}}, 'description': 'One addition measured on the portfolio it would join (counterfactual).'}
Schéma d’entrée
{'type': 'object', 'title': 'compare_portfoliosArguments', 'required': ['portfolios'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'portfolios': {'type': 'object', 'title': 'Portfolios', 'description': 'Two to eight portfolios, {label: {ticker: weight}}. Labels are shortened to letters and digits.', 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'number'}}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'end': {'type': ['string', 'null'], 'description': 'Shared window end.'}, 'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'start': {'type': ['string', 'null'], 'description': 'Shared window start.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'series': {'description': 'Per portfolio label: the growth path over the window.'}, 'metrics': {'description': 'Per portfolio label: growth, volatility, worst fall and related figures.'}, 'correlation': {'description': 'Per pair of labels: how the portfolios moved together.'}}, 'description': 'Up to eight portfolios measured on one shared window.'}
Schéma d’entrée
{'type': 'object', 'title': 'currency_effectArguments', 'required': ['holdings'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'base': {'type': ['string', 'null'], 'description': 'Base currency.'}, 'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'hedged': {'description': 'The same with the currency moves removed.'}, 'headline': {'type': ['string', 'null'], 'description': 'One sentence summary.'}, 'unhedged': {'description': 'Growth, volatility and worst fall as held.'}, 'by_currency': {'description': '[currency, share of the money] pairs, by listing currency.'}, 'limitations': {'description': 'What this cannot show (listing currency is not earning currency).'}, 'share_of_vol': {'type': ['number', 'null'], 'description': 'Share of the volatility that comes from exchange rates.'}, 'foreign_share': {'type': ['number', 'null'], 'description': 'Share of the money priced outside the base currency.'}, 'cagr_from_currency': {'type': ['number', 'null'], 'description': 'Growth per year added (or removed) by exchange rates.'}}, 'description': 'What exchange rates did to the portfolio, seen from the base currency.'}
Schéma d’entrée
{'type': 'object', 'title': 'factor_exposureArguments', 'required': ['holdings'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'betas': {'description': 'Sensitivity per factor: mkt_rf (market), smb (small minus big), hml (value minus growth), mom (momentum).'}, 'model': {'type': ['string', 'null'], 'description': 'Factor model used.'}, 'years': {'type': ['number', 'null'], 'description': 'Years of history used.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 't_stats': {'description': 't-statistic per factor; below about 2 in size, not distinguishable from zero.'}, 'poor_fit': {'type': ['boolean', 'null'], 'description': 'True when the factors explain little.'}, 'frequency': {'type': ['string', 'null'], 'description': 'Data frequency.'}, 'r_squared': {'type': ['number', 'null'], 'description': 'Share of the daily movement the factors explain, 0 to 1.'}, 'fit_caveat': {'type': ['string', 'null'], 'description': 'Why the fit is poor, when it is.'}, 'alpha_annual': {'type': ['number', 'null'], 'description': 'Return not explained by the factors, per year (estimated, not a skill measure).'}}, 'description': "A four-factor regression of the portfolio's daily returns."}
Schéma d’entrée
{'type': 'object', 'title': 'health_axesArguments', 'required': ['holdings'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'axes': {'description': 'Per axis: key, label, the question it answers, band, kind, drivers (each with label, value, unit and a plain reading).'}, 'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'kinds': {'description': 'What each kind of figure means (observed, replayed, estimated…).'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'inputs': {'description': 'What was measured: holdings, window, what was left out.'}, 'headline': {'type': ['string', 'null'], 'description': 'One sentence across the axes.'}, 'subscores': {'description': 'The individual measured readings behind the axes.'}, 'limitations': {'description': 'What these axes cannot show.'}}, 'description': 'The portfolio along separate axes; readings, no overall score.'}
Schéma d’entrée
{'type': 'object', 'title': 'last_priceArguments', 'required': ['tickers'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'tickers': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Tickers', 'maxItems': 50, 'description': 'Tickers, up to 50.'}}}
Schéma de sortie
{'type': 'object', 'required': ['prices'], 'properties': {'base': {'type': ['string', 'null'], 'description': 'Base currency.'}, 'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'as_of': {'type': ['string', 'null'], 'description': 'Date of the close.'}, 'prices': {'description': 'Per ticker: latest close in the base currency.'}, 'currencies': {'description': 'Per ticker: its trading currency.'}, 'native_prices': {'description': 'Per ticker: latest close in its own currency.'}}, 'description': 'Latest close per ticker; single figures, no history.'}
Schéma d’entrée
{'type': 'object', 'title': 'living_off_itArguments', 'required': ['holdings', 'withdrawal'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'years': {'type': 'integer', 'title': 'Years', 'default': 30, 'maximum': 50, 'minimum': 5, 'description': 'How many years, 5 to 50.'}, 'amount': {'anyOf': [{'type': 'number', 'exclusiveMinimum': 0}, {'type': 'null'}], 'title': 'Amount', 'default': None, 'description': 'How much is in the portfolio, when `holdings` are weights rather than money.'}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}, 'withdrawal': {'type': 'number', 'title': 'Withdrawal', 'description': "Taken each year, in today's money; raised with the real price index of the base currency.", 'exclusiveMinimum': 0}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'rate': {'type': ['number', 'null'], 'description': 'withdrawal / amount.'}, 'worst': {'description': 'The worst start: start, ran_out, months, low_real, low_at, end_real.'}, 'years': {'type': ['number', 'null'], 'description': 'Span asked for.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'amount': {'type': ['number', 'null'], 'description': 'Money in the portfolio at each start.'}, 'record': {'description': 'start, end and years of the shared monthly record.'}, 'starts': {'description': 'A sample of starts (every sixth): start, complete, months, ran_out, low_real, end_real.'}, 'n_going': {'type': ['number', 'null'], 'description': 'Recent starts not run out so far, span not over.'}, 'n_starts': {'type': ['number', 'null'], 'description': 'Starts followed (at least a year).'}, 'inflation': {'description': 'Price index used: source, last_published, assumed.'}, 'n_ran_out': {'type': ['number', 'null'], 'description': 'Starts, complete or not, where the money ran out.'}, 'safe_rate': {'type': ['number', 'null'], 'description': 'Highest yearly rate that ran out from no start; null if no start is complete.'}, 'n_complete': {'type': ['number', 'null'], 'description': 'Starts old enough for the full span.'}, 'withdrawal': {'type': ['number', 'null'], 'description': 'Taken each year, in start-month money, raised with prices.'}, 'testable_years': {'type': ['number', 'null'], 'description': 'The longest span the record can test in full.'}, 'n_complete_lasted': {'type': ['number', 'null'], 'description': 'Of those, how many lasted.'}}, 'description': "Withdrawals replayed on the portfolio's own monthly history (replayed)."}
Schéma d’entrée
{'type': 'object', 'title': 'look_throughArguments', 'required': ['holdings'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'opaque': {'description': 'Holdings with no breakdown to look through.'}, 'n_funds': {'type': ['number', 'null'], 'description': 'Funds looked through.'}, 'refused': {'description': 'Funds whose breakdown the data vendor refused.'}, 'sectors': {'description': '[sector, share] pairs.'}, 'exposures': {'description': '[company, share of the whole portfolio] pairs, largest first.'}, 'top_symbol': {'type': ['string', 'null'], 'description': 'The largest single company underneath.'}, 'n_companies': {'type': ['number', 'null'], 'description': 'Distinct companies seen underneath.'}, 'covered_fraction': {'type': ['number', 'null'], 'description': 'Share of the money whose underlying holdings are visible, 0 to 1.'}, 'top_symbol_weight': {'type': ['number', 'null'], 'description': 'Its share of the whole portfolio.'}, 'duplicated_exposure': {'type': ['number', 'null'], 'description': 'Share held more than once through different funds.'}}, 'description': 'What the portfolio owns through its funds.'}
Schéma d’entrée
{'type': 'object', 'title': 'measure_portfolioArguments', 'required': ['holdings'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'report': {'properties': {'end': {'type': ['string', 'null'], 'description': 'Window end.'}, 'facts': {'description': 'One entry per figure: id, label, value, method, window, limit.'}, 'start': {'type': ['string', 'null'], 'description': 'Window start.'}, 'receipt': {'type': ['string', 'null'], 'description': 'A short plain-text receipt of the same figures.'}, 'markdown': {'type': ['string', 'null'], 'description': 'The report as markdown, figures numbered F1, F2…'}}, 'description': 'The numbered report: every figure beside its method.'}, 'stress': {'properties': {'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'scenarios': {'type': ['array', 'null'], 'items': {'type': 'object', 'properties': {'end': {'type': ['string', 'null'], 'description': 'Window end.'}, 'start': {'type': ['string', 'null'], 'description': 'Window start.'}, 'status': {'type': ['string', 'null'], 'description': "Whether the holdings' history covers it."}, 'scenario': {'type': ['string', 'null'], 'description': 'Crisis name.'}, 'worst_day': {'type': ['number', 'null'], 'description': 'Worst single day.'}, 'max_drawdown': {'type': ['number', 'null'], 'description': 'Worst peak-to-trough fall.'}, 'total_return': {'type': ['number', 'null'], 'description': 'Return over the crisis window.'}, 'recovery_days': {'type': ['number', 'null'], 'description': 'Days to recover the previous peak; null if not yet.'}}}, 'description': 'One entry per crisis.'}, 'limited_by': {'type': ['string', 'null'], 'description': 'The holding whose short history limits the window.'}, 'window_start': {'type': ['string', 'null'], 'description': 'First date all holdings have prices.'}}, 'description': 'What past crises did to this mix, replayed on its holdings.'}, 'structure': {'properties': {'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'recent': {'description': 'The same figures over the recent years only.'}, 'max_weight': {'type': ['number', 'null'], 'description': 'Its share of the money, 0 to 1.'}, 'n_holdings': {'type': ['number', 'null'], 'description': 'Holdings measured.'}, 'effective_bets': {'type': ['number', 'null'], 'description': 'Effective number of independent bets (from correlations, not the ticker count).'}, 'max_risk_ticker': {'type': ['string', 'null'], 'description': "The holding carrying the largest share of the portfolio's risk."}, 'top_factor_share': {'type': ['number', 'null'], 'description': 'Share of the movement explained by the single strongest common factor.'}, 'max_weight_ticker': {'type': ['string', 'null'], 'description': 'The largest holding by money.'}, 'risk_contributions': {'description': '[ticker, share of risk] pairs.'}, 'max_risk_contribution': {'type': ['number', 'null'], 'description': "That holding's share of the risk, 0 to 1."}}, 'description': 'How many independent bets the holdings add up to and who carries the risk.'}, 'lookthrough': {'properties': {'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'opaque': {'description': 'Holdings with no breakdown to look through.'}, 'n_funds': {'type': ['number', 'null'], 'description': 'Funds looked through.'}, 'refused': {'description': 'Funds whose breakdown the data vendor refused.'}, 'sectors': {'description': '[sector, share] pairs.'}, 'exposures': {'description': '[company, share of the whole portfolio] pairs, largest first.'}, 'top_symbol': {'type': ['string', 'null'], 'description': 'The largest single company underneath.'}, 'n_companies': {'type': ['number', 'null'], 'description': 'Distinct companies seen underneath.'}, 'covered_fraction': {'type': ['number', 'null'], 'description': 'Share of the money whose underlying holdings are visible, 0 to 1.'}, 'top_symbol_weight': {'type': ['number', 'null'], 'description': 'Its share of the whole portfolio.'}, 'duplicated_exposure': {'type': ['number', 'null'], 'description': 'Share held more than once through different funds.'}}, 'description': 'What the portfolio owns through its funds.'}}, 'description': 'The full measurement of one portfolio.'}
Schéma d’entrée
{'type': 'object', 'title': 'past_crisesArguments', 'required': ['holdings'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'scenarios': {'type': ['array', 'null'], 'items': {'type': 'object', 'properties': {'end': {'type': ['string', 'null'], 'description': 'Window end.'}, 'start': {'type': ['string', 'null'], 'description': 'Window start.'}, 'status': {'type': ['string', 'null'], 'description': "Whether the holdings' history covers it."}, 'scenario': {'type': ['string', 'null'], 'description': 'Crisis name.'}, 'worst_day': {'type': ['number', 'null'], 'description': 'Worst single day.'}, 'max_drawdown': {'type': ['number', 'null'], 'description': 'Worst peak-to-trough fall.'}, 'total_return': {'type': ['number', 'null'], 'description': 'Return over the crisis window.'}, 'recovery_days': {'type': ['number', 'null'], 'description': 'Days to recover the previous peak; null if not yet.'}}}, 'description': 'One entry per crisis.'}, 'limited_by': {'type': ['string', 'null'], 'description': 'The holding whose short history limits the window.'}, 'window_start': {'type': ['string', 'null'], 'description': 'First date all holdings have prices.'}}, 'description': 'What past crises did to this mix, replayed on its holdings.'}
Schéma d’entrée
{'type': 'object', 'title': 'plain_findingsArguments', 'required': ['holdings'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'insights': {'description': 'Per finding: key, title, detail, severity (info or warning), evidence.'}}, 'description': 'A few findings in plain words, each with its evidence.'}
Schéma d’entrée
{'type': 'object', 'title': 'portfolio_reportArguments', 'required': ['holdings'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'end': {'type': ['string', 'null'], 'description': 'Window end.'}, 'facts': {'description': 'One entry per figure: id, label, value, method, window, limit.'}, 'start': {'type': ['string', 'null'], 'description': 'Window start.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'receipt': {'type': ['string', 'null'], 'description': 'A short plain-text receipt of the same figures.'}, 'markdown': {'type': ['string', 'null'], 'description': 'The report as markdown, figures numbered F1, F2…'}}, 'description': 'The numbered report: every figure beside its method.'}
Schéma d’entrée
{'type': 'object', 'title': 'portfolio_structureArguments', 'required': ['holdings'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'recent': {'description': 'The same figures over the recent years only.'}, 'max_weight': {'type': ['number', 'null'], 'description': 'Its share of the money, 0 to 1.'}, 'n_holdings': {'type': ['number', 'null'], 'description': 'Holdings measured.'}, 'effective_bets': {'type': ['number', 'null'], 'description': 'Effective number of independent bets (from correlations, not the ticker count).'}, 'max_risk_ticker': {'type': ['string', 'null'], 'description': "The holding carrying the largest share of the portfolio's risk."}, 'top_factor_share': {'type': ['number', 'null'], 'description': 'Share of the movement explained by the single strongest common factor.'}, 'max_weight_ticker': {'type': ['string', 'null'], 'description': 'The largest holding by money.'}, 'risk_contributions': {'description': '[ticker, share of risk] pairs.'}, 'max_risk_contribution': {'type': ['number', 'null'], 'description': "That holding's share of the risk, 0 to 1."}}, 'description': 'How many independent bets the holdings add up to and who carries the risk.'}
Schéma d’entrée
{'type': 'object', 'title': 'return_historyArguments', 'required': ['holdings'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'cagr': {'type': ['number', 'null'], 'description': 'Growth per year over the record.'}, 'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'grid': {'description': 'Monthly returns: one row per year, null where the record has no month.'}, 'drift': {'description': 'Per holding: target weight and how far it drifted between rebalances.'}, 'stats': {'description': 'best_month, worst_month, best_year, worst_year, pct_positive, n_months, var95, cvar95, real_cagr (after inflation).'}, 'years': {'description': 'Calendar years.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'months': {'description': 'Month names, aligned with each row of `grid`.'}, 'yearly': {'description': 'Return per calendar year, aligned with `years`.'}, 'distribution': {'description': 'Histogram of monthly returns: centers, counts.'}, 'rolling_stats': {'description': 'Any 12 months in a row: min, max, percentiles, share negative.'}}, 'description': "The mix's record: yearly and monthly returns, rolling 12 months, drift."}
Schéma d’entrée
{'type': 'object', 'title': 'reverse_stressArguments', 'required': ['holdings'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'loss': {'type': 'number', 'title': 'Loss', 'default': 0.2, 'maximum': 0.95, 'description': 'The loss to explain, as a fraction: 0.25 = lose a quarter.', 'exclusiveMinimum': 0.005}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'line': {'type': ['string', 'null'], 'description': 'One sentence: what it would take.'}, 'moves': {'description': 'Per market direction: label, plain wording, shock needed, sensitivity (beta), share of the loss, worst_seen in the record over the same number of days.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'target': {'type': ['number', 'null'], 'description': 'The loss explained, as a negative fraction.'}, 'coverage': {'type': ['number', 'null'], 'description': "Share of the portfolio's movement these directions explain."}, 'window_end': {'type': ['string', 'null'], 'description': 'Record end.'}, 'window_days': {'type': ['number', 'null'], 'description': 'Length of the move considered, in trading days.'}, 'window_start': {'type': ['string', 'null'], 'description': 'Record start.'}}, 'description': 'The least extreme market moves that would produce the given loss.'}
Schéma d’entrée
{'type': 'object', 'title': 'search_symbolsArguments', 'required': ['query'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'query': {'type': 'string', 'title': 'Query', 'maxLength': 40, 'description': 'A fund or company name, a ticker, or an ISIN.'}}}
Schéma de sortie
{'type': 'object', 'required': ['results'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': ['string', 'null'], 'description': 'Fund or company name.'}, 'type': {'type': ['string', 'null'], 'description': 'ETF, equity, fund…'}, 'symbol': {'type': ['string', 'null'], 'description': 'Ticker as the exchange lists it; pass this to the measuring tools.'}, 'currency': {'type': ['string', 'null'], 'description': 'Trading currency.'}, 'exchange': {'type': ['string', 'null'], 'description': 'Exchange.'}, 'experimental': {'type': ['boolean', 'null'], 'description': 'True for listings nobody here has checked.'}}}, 'description': 'Matches, best first.'}}, 'description': 'Listings matching the query.'}
Schéma d’entrée
{'type': 'object', 'title': 'simulate_pathsArguments', 'required': ['holdings'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'years': {'type': 'integer', 'title': 'Years', 'default': 20, 'maximum': 40, 'minimum': 1, 'description': 'Years to run the paths, 1 to 40.'}, 'haircut': {'type': 'number', 'title': 'Haircut', 'default': 0.0, 'maximum': 0.15, 'minimum': 0, 'description': 'Yearly return removed from every path, as a fraction (0.02 = assume 2% a year less than the record paid).'}, 'monthly': {'type': 'number', 'title': 'Monthly', 'default': 0.0, 'maximum': 1000000, 'minimum': 0, 'description': 'Amount added every month, in the base currency.'}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'kind': {'type': ['string', 'null'], 'description': 'simulated.'}, 'bands': {'description': 'Percentile paths over time: p5 … p95, aligned with `years`.'}, 'years': {'description': 'Time axis of the bands, in years.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'refused': {'description': 'Present when no paths were drawn: the reasons, in words.'}, 'invested': {'type': ['number', 'null'], 'description': 'Money put in over the years asked.'}, 'terminal': {'description': 'Where the paths end, by percentile: p5, p10, p25, p50, p75, p90, p95.'}, 'youngest': {'type': ['string', 'null'], 'description': 'When refused: the holding whose short history cut the record.'}, 'assumption': {'type': ['string', 'null'], 'description': 'The assumption every path rests on.'}, 'sample_years': {'type': ['number', 'null'], 'description': 'Years of shared history the paths are drawn from.'}, 'extrapolation': {'type': ['number', 'null'], 'description': 'Years asked divided by years of history.'}, 'terminal_real': {'description': "The same in today's money."}, 'historical_cagr': {'type': ['number', 'null'], 'description': 'Growth per year the record paid.'}, 'prob_below_real': {'type': ['number', 'null'], 'description': 'The same after inflation.'}, 'prob_below_invested': {'type': ['number', 'null'], 'description': 'Share of paths ending below what was put in (a share of simulated paths, not a probability of the future).'}}, 'description': 'Paths resampled from the record (SIMULATED), or the reasons they were refused.'}
Schéma d’entrée
{'type': 'object', 'title': 'sweep_holdingArguments', 'required': ['holdings', 'ticker'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'ticker': {'type': 'string', 'title': 'Ticker', 'maxLength': 20, 'description': 'The holding to sweep; must be one of `holdings`.'}, 'holdings': {'type': 'object', 'title': 'Holdings', 'description': "What is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).", 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'end': {'type': ['string', 'null'], 'description': 'Window end.'}, 'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'kind': {'type': ['string', 'null'], 'description': 'Kind of figures (counterfactual).'}, 'knee': {'type': ['number', 'null'], 'description': 'Weight below which most of the change happens, when there is one.'}, 'note': {'type': ['string', 'null'], 'description': 'One sentence on where the change comes from.'}, 'start': {'type': ['string', 'null'], 'description': 'Window start.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'points': {'description': "Per weight: weight, vol (volatility), risk_share (that holding's share of the risk), effective_bets, top_factor_share."}, 'ticker': {'type': ['string', 'null'], 'description': 'The holding swept.'}, 'total_change': {'type': ['number', 'null'], 'description': 'Change in volatility from none to the current weight.'}, 'redistribution': {'type': ['string', 'null'], 'description': 'How the rest of the money is spread at each point.'}}, 'description': 'One holding at every weight from none to all (counterfactual).'}
Schéma d’entrée
{'type': 'object', 'title': 'test_a_changeArguments', 'required': ['current', 'proposed'], 'properties': {'end': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'End', 'default': None, 'description': 'Optional window end, YYYY-MM-DD.'}, 'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'start': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Start', 'default': None, 'description': 'Optional window start, YYYY-MM-DD.'}, 'current': {'type': 'object', 'title': 'Current', 'description': 'What is held now, {ticker: weight}.', 'additionalProperties': {'type': 'number'}}, 'proposed': {'type': 'object', 'title': 'Proposed', 'description': 'What would be held after the change, {ticker: weight}.', 'additionalProperties': {'type': 'number'}}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'axes': {'description': 'Per axis: label, the question it answers, before, after.'}, 'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'kind': {'type': ['string', 'null'], 'description': 'Kind of figures (counterfactual).'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'deltas': {'description': 'Per measure: label, before, after, direction, unit.'}, 'window': {'description': 'The shared window: start, end, years, which holding set it, crises inside.'}, 'similar': {'description': 'Measures that barely moved.'}, 'summary': {'type': ['string', 'null'], 'description': 'One sentence on what the change moves.'}, 'improved': {'description': 'Measures that moved one way.'}, 'worsened': {'description': 'Measures that moved the other way.'}, 'historical': {'description': 'Per past crisis: before and after.'}, 'introduces': {'description': 'Risk the proposed holdings add that the current ones did not carry.'}, 'kind_means': {'type': ['string', 'null'], 'description': 'What that kind means.'}, 'limitations': {'description': 'What this comparison cannot show.'}}, 'description': "The current and the proposed portfolio on the same history. The 'after' figures are counterfactual: that portfolio was not held."}
Schéma d’entrée
{'type': 'object', 'title': 'validate_symbolsArguments', 'required': ['tickers'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'tickers': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Tickers', 'maxItems': 150, 'description': 'Tickers to check, up to 150.'}}}
Schéma de sortie
{'type': 'object', 'required': ['valid'], 'properties': {'base': {'type': ['string', 'null'], 'description': 'Base currency.'}, 'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, 'valid': {'description': 'Per ticker: true when it has usable price history.'}, 'problems': {'description': 'Per failing ticker: why.'}, 'currencies': {'description': 'Per ticker: its trading currency.'}, 'suggestions': {'description': 'Per ambiguous ticker: the closest listing.'}}, 'description': 'Which tickers can be measured.'}
Schéma d’entrée
{'type': 'object', 'title': 'walk_forwardArguments', 'required': ['tickers'], 'properties': {'base': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Base', 'default': None, 'description': 'Currency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.'}, 'tickers': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Tickers', 'maxItems': 30, 'minItems': 2, 'description': 'The candidate holdings, 2 to 30.'}, 'holdings': {'anyOf': [{'type': 'object', 'additionalProperties': {'type': 'number'}}, {'type': 'null'}], 'title': 'Holdings', 'default': None, 'description': 'Optional: the portfolio actually held, {ticker: weight}, measured on the same span for comparison.'}, 'objective': {'type': 'string', 'title': 'Objective', 'default': 'max_sharpe', 'description': 'What each refit maximises or minimises: max_sharpe, min_variance, min_drawdown, min_cvar or max_quadratic_utility.'}, 'step_months': {'type': 'integer', 'title': 'Step Months', 'default': 12, 'maximum': 36, 'minimum': 1, 'description': 'Months each fitted mix is held.'}, 'train_years': {'type': 'number', 'title': 'Train Years', 'default': 3.0, 'maximum': 15, 'minimum': 1, 'description': 'Years of history each refit sees.'}}}
Schéma de sortie
{'type': 'object', 'required': ['_fence'], 'properties': {'data': {'properties': {'as_of': {'type': ['string', 'null'], 'description': 'Last date of price history used.'}, 'source': {'type': ['string', 'null'], 'description': 'Price source.'}, 'missing': {'description': 'Tickers with no usable history (left out).'}, 'currency': {'type': ['string', 'null'], 'description': 'Currency the figures are in.'}, 'standins': {'description': 'Holdings measured through a stand-in with longer history: ticker, proxy, index, from, until, evidence.'}}, 'description': 'Where the prices came from and what was missing or repaired.'}, '_fence': {'type': ['string', 'null'], 'description': 'What these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.'}, 'objective': {'type': ['string', 'null'], 'description': 'What each refit optimised.'}, 'fitted_window': {'description': 'First and last date of shared history.'}, 'out_of_sample': {'description': 'start, end, n_refits, train_years, step_months, mean_turnover, verdict (one sentence on the record), limitations, tracks (per track: label, cagr, vol, sharpe, max_drawdown, nav), refits (date, turnover); or `unavailable` with the reason.'}}, 'description': 'An allocation method tested out of sample; no allocation is returned.'}
Modifications récentes des outils
Serveurs MCP similaires
AlpineDataWorks Intelligence Server
Provides economic, market, supply-chain, real-estate, energy, consumer, labor, and other scored intelligence indices with histori…
Stratalize Finance
Provides financial, macroeconomic, banking, credit, commodities, M&A, ESG, labor, and regulatory benchmarks for analysis and plan…
Valuein — SEC EDGAR Fundamentals & Smart-Money Data
Provides point-in-time SEC EDGAR fundamentals, filings, ownership signals, financial analysis, valuation models, research reports…
equibles
Provides equity and market research tools covering SEC filings, company financials, portfolios, prices, options, macroeconomic da…
DFX Real Estate Intelligence
Provides US commercial real estate, parcel, debt maturity, bank CRE exposure, private capital, investor, ownership, occupancy, an…
simplefunctions
Provides prediction-market data, thesis analysis, market signals, portfolio tracking, and automated intent-based trading workflow…
EventTrader MCP
Provides prediction-market research and trading capabilities, including real-time event-market data, CLOB execution paths, fund i…
Signal8
Provides SEC filings, dilution data, insider and institutional ownership, and political-trade data.