Crashtestyourstrategy

io.github.fnobbe由 GitHub 帳號 fnobbe 發布v1.0.1更新於 Oct 24, 2026

Portfolio and strategy stress diagnostics with hedge-break detection and regime outlook. Free tier.

已驗證Streamable HTTP可網頁執行金融資料與分析

概覽

AI 產生的概覽

遠端 MCP 伺服器,以市場狀態、對沖失效與過度樂觀回測等失效模式,對投資組合與交易策略做壓力診斷。

可以做什麼
  • 壓力測試組合與策略:多資產跨狀態壓力測試、配對組合比較、因子風險分解、IPS 門檻檢查、長期儲蓄/提領路徑、策略挑戰與去偏 Sharpe 回測檢驗
  • 檢視市場狀態:BULL/SIDEWAYS/BEAR/CRISIS 機率展望、18 類跨資產狀態地圖、狀態描述與最近鄰檢索
  • 瀏覽投資論點:列出並讀取將經濟框架與規則化配置及壓力證據配對的案例
  • 彙整與記錄:依請求 ID 彙編可引用的歷史呼叫檔案,並對回應提交結構化回饋
適用情境
適合在需要檢核某個配置或回測是否穩健、量化回撤與破產風險,或在提出規劃建議前了解目前市場狀態機率時使用。
執行需求
遠端 streamable HTTP 端點;無需帳號、金鑰或環境變數。免費層依 IP 限速每分鐘 30 次請求;付費完整層需聯絡營運方取得。
安裝前請注意
回應為基於模型的情境模擬,明確屬描述性而非投資建議,並揭露樣本外限制。呼叫會自動記錄並可彙編成檔案,submit_feedback 會保存代理身分與觀察內容。資料為日終資料,每日更新。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Crashtestyourstrategy,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.fnobbe%2Fcrashtestyourstrategy/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "crashtestyourstrategy": {
      "type": "http",
      "url": "https://mcp.crashtestyourstrategy.ai/mcp"
    }
  }
}

README

CrashTestYourStrategy — MCP Server

Remote MCP server for portfolio & trading-strategy stress diagnostics. Free tier — no key, no signup. Descriptive, never advisory.

https://mcp.crashtestyourstrategy.ai/mcp

[smithery badge]

Listed in the official MCP registry as io.github.fnobbe/crashtestyourstrategy. This repository is the public server card — the service itself is closed-source; everything an agent (or a reviewer) needs to verify behaviour is linked below.

Quick start

Claude Code:

bash
claude mcp add --transport http ctys https://mcp.crashtestyourstrategy.ai/mcp

Generic MCP client config (streamable HTTP):

json
{  "mcpServers": {    "ctys": {      "type": "streamable-http",      "url": "https://mcp.crashtestyourstrategy.ai/mcp"    }  }}

claude.ai: Settings → Connectors → Add custom connector with the URL above.

The free tier is rate-limited per IP (30 req/min). No account, no key.

What it does

An open diagnostics layer that confronts a proposed portfolio or trading strategy with the failure modes an optimistic backtest ignores — hedge breaks (the 2022 stock-bond case), sequence-of-returns risk, regime blind spots, deflated Sharpe.

Free tier (16 tools)

GroupTools
Portfolioportfolio_stress_test (multi-asset stress across baseline / risk-off / rate-shock regimes, hedge-break detection, full drawdown distribution) · portfolio_compare · factor_decomposition · ips_gate (hard gate vs an Investment Policy Statement, breach probability not median path) · long_horizon_stress (multi-year savings/withdrawal plans, ruin probabilities)
Strategyrun_stress_test · challenge_strategy · backtest_integrity (deflated Sharpe + which crisis regimes the backtest window missed)
Regimesregime_outlook (model-conditional BULL/SIDEWAYS/BEAR/CRISIS probabilities at 5/21 trading days — preregistered, out-of-sample validated, refreshed daily) · market_regime_map (18-category cross-asset map) · describe_regime · find_similar_regime
Record & cataloglist_investment_theses · get_investment_thesis · get_dossier (citable audit trail of prior calls) · submit_feedback

Full tier (token via contact): tier2_stress_test (stress any ticker with auto-calibration + realism gate), build_portfolio, portfolio_frontier.

Response contract

Every response is a versioned envelope (ctys-agent-v1 family) carrying:

  • grounding_summary — a risk-focused factual statement of the omitted tail
  • revision_required — a gate-capable signal (never a directive)
  • methodological_limitations — required disclosure of what the diagnostic does NOT establish
  • data_through / data_staleness_days — self-reported data freshness (EOD, refreshed daily)

validation:// resources expose the realism trust layer: 18 measured stylized facts per asset vs historical reference bands — the falsifiability surface. Recompute locally; trust by independent reproduction.

Scope & compliance

Model-based scenario simulation. Descriptive, never advisory: no suitability, timing, or ranking claim is made or implied — the agent decides what "suitable" means. Out-of-sample limits are disclosed, not hidden (e.g. the GFC hedge-behaviour test failed and ships as a documented limitation).

Links

Maintainer: @fnobbe · Operator contact: https://crashtestyourstrategy.com/contact

來源:README.md,提交 f4e322e

工具

16

run_stress_test

Run stress test (buy-and-hold, v1)

Run a buy-and-hold backtest against the synthetic stress regime identified by profile_hint. Returns a structured diagnostic: robustness score (0-100), per-FM-bucket failure-behavior classification with confidence + context, and the resolved regime parameters that were actually evaluated. v1 supports only buy-and-hold. To discover available regime profile_hints, read the `regimes://available` resource. Diagnostic is descriptive, not advisory.

輸入參數profile_hint必填

portfolio_stress_test

Portfolio stress (multi-asset, Tier-1)

Stress a multi-asset portfolio across cross-asset regimes (baseline / risk_off_crisis / rate_shock). Provide `holdings` as a list of {asset, weight}; weights are normalised. Returns, per regime: portfolio return, worst-episode drawdown, a per-leg decomposition, and a cross_asset_finding (diversification_intact / hedge_holds / hedge_breaks / shared_drawdown) describing how the holdings behaved TOGETHER. The joint correlation structure (incl. the bond hedge that can break under rate shocks) is baked into a pre-computed substrate, so Tier-1 is instant over a fixed universe (read portfolio://universe). Optional `costs` ({rebalance: none|daily|monthly|quarterly|band, annual_costs: {asset: fraction}, transaction_cost_bps}) adds a cost_impact block: frictionless vs the stated rebalancing policy + costs via a path-loop engine with real unit accounting, paired on identical paths. The substrate is a fixed 4-asset universe (SPY, TLT, GOLD, BTC; read portfolio://universe). For ANY other ticker or a custom multi-asset book, use build_portfolio in assess mode (portfolios={name:{ticker:weight}}), which calibrates and stresses an arbitrary universe live. Descriptive, not advisory.

輸入參數costsholdings必填

find_similar_regime

Find similar regime via behavioural descriptors

Nearest-neighbour retrieval over the cached regime catalogue. Provide EITHER a reference_profile_hint (use that bundle's median descriptors as target) OR a descriptor_target dict (partial spec, missing dimensions are ignored — only the provided ones contribute to distance). Optional asset_filter restricts to one asset. Returns top_n matches with similarity_score (0..1), euclidean distance in z-score space, and per-descriptor signed deltas so the agent can see WHY a regime matched. Read ontology://regime-descriptors for the descriptor definitions, and regimes://descriptors for the full catalogue.

輸入參數top_nasset_filterdescriptor_targetreference_profile_hint

describe_regime

Describe one regime — self-portrait

Single-regime introspection: returns the median behavioural descriptors of a known regime, the z-scores vs the catalogue population (so you can see what makes THIS regime distinct from the average), an English characterisation generated from the most extreme descriptors, and the top 2 nearest neighbours as a preview. Complements find_similar_regime: that tool ranks neighbours of a target, this tool tells you what a single regime IS. Read this before searching if you want to reason about one regime first.

輸入參數profile_hint必填

portfolio_compare

Portfolio compare (paired Revise-step comparison)

Compare two portfolios (A = reference, B = candidate revision) on IDENTICAL simulated substrate paths — a paired design, so every delta is attributable to the weights, not seed noise. Returns drawdown-distribution deltas (median/worst/quantiles), probability-weighted scenario summaries, per-scenario outcome deltas, risk-concentration shift (Euler decomposition), and which diversification failures the candidate introduces or resolves. revision_required flags a candidate that deepens the worst-path drawdown or introduces a new diversification failure — the case where a revision made robustness worse. Provide holdings_a / holdings_b as lists of {asset, weight}. Descriptive, not advisory; neither portfolio is recommended or ranked.

輸入參數holdings_a必填holdings_b必填

get_dossier

Get dossier (audit trail of past diagnostics)

Compile recorded diagnostic responses into ONE citable record — a proper process documents itself. Every envelope response (MCP and REST) is recorded automatically, keyed by its request_id. Provide explicit request_ids (compiled chronologically) or last_n for the most recent entries. Returns the entries with their gate signals (revision_required + grounding_summary each) plus a ready-to-cite markdown document; revision_required on the dossier itself flags workflows containing unaddressed gate signals. Single verbatim entries: GET /api/v1/dossier/{request_id} on the REST surface. A factual record, not an assessment — descriptive, never advisory.

輸入參數last_nrequest_ids

long_horizon_stress

Long-horizon wealth-path stress (savings / withdrawal plans)

Distribution of multi-year wealth paths for a savings plan (monthly_contribution) or a withdrawal plan (monthly_withdrawal, inflation-indexed by default) on a portfolio from the substrate universe. Multi-year paths chain ~2y model blocks (block-bootstrap, disclosed); long-run drift is RE-ANCHORED to stated capital-market assumptions (overridable via long_run_drift; the substrate's raw stress drift would compound a structural bear universe — both are echoed in the output) while the model's path shape (vol, clustering, correlations, hedge-breaks) is kept. Costs are ON by default. Returns terminal-wealth quantiles (nominal + real), ruin/shortfall probabilities, a sequence-of-returns diagnosis (same plan, bad vs good first two years), and a drift-sensitivity block (assumptions − 2pp). Amounts in the caller's currency unit. Descriptive, not advisory — no rate, allocation, or product is recommended.

輸入參數holdings必填rebalancehorizon_years必填target_amountlong_run_driftannual_inflationinitial_investmentmonthly_withdrawalmonthly_contributionwithdrawal_inflation_indexed

regime_outlook

Regime-probability outlook (validated assets, h=5/21)

Model-conditional probabilities that an asset is in each market regime (BULL / SIDEWAYS / BEAR / CRISIS, operational trailing-vol/drift labels) after a 5- or 21-trading-day horizon — the probability complement to the conditional stress tools: stress tools answer 'what happens GIVEN regime X', this answers 'how likely is regime X from today's observable state'. Ships only the preregistered, out-of-sample-validated tier (covariate logit; seasonality was tested and falsified); the persistence and unconditional baselines are reported alongside so an agent can see how much the model adds. Validated assets: SPY, QQQ, GLD, TLT. Optional as_of (YYYY-MM-DD) computes the outlook at a historical date. Probabilities describe membership in operationally defined regime classes — descriptive, not a market prediction, not advisory.

輸入參數as_ofassethorizon_days

market_regime_map

Market regime map (18 category proxies, h=5/21)

Compressed cross-category map of the current market state in ONE call: for 18 category proxies (US large-cap + tech, the 9 SPDR sectors, developed ex-US, emerging markets, long Treasuries, high-yield credit, gold, oil, Bitcoin) the operational regime (BULL/SIDEWAYS/BEAR/CRISIS), model-conditional regime probabilities over a 5- or 21-trading-day horizon, stress probability vs its unconditional baseline, a descriptive historical forward-return distribution conditional on the current regime label, and an equity-factor commonality flag (US sectors largely re-express one factor — the map is fewer independent signals than rows). Per (asset, horizon) cell only the preregistered, out-of-sample-validated model tier ships (covariate logit / persistence / unconditional — see tier_pvalues). Deliberately ships NO directional up/down forecast: regime membership is the validated signal, not return direction. Use regime_outlook for single-asset depth with as_of support. Descriptive, not a market prediction, not advisory.

輸入參數horizon_days

challenge_strategy

Challenge a strategy: find what breaks it (3-layer output)

Adversarial-evaluation primitive — the semantic integration layer of the platform. Given a strategy identifier, returns a 3-layer analysis: (1) outcome metrics in the worst regimes the strategy was evaluated against, (2) vulnerability profile in the 8-dimension strategy vulnerability ontology with severity classification, (3) descriptor attribution showing which regime descriptors most strongly couple to the strategy's failure. v1 supports only 'buy_and_hold' (the outcome matrix is built once per strategy); future versions will support arbitrary strategy specs once the parser-driven strategy backtest pipeline is wired in. Read ontology://strategy-vulnerabilities for the vulnerability vocabulary.

輸入參數strategy_id

factor_decomposition

Factor / concentration decomposition (capital weight vs risk)

Reveal HIDDEN risk concentration: a portfolio can be capital-diversified while its RISK is dominated by one factor. Returns the Euler risk-contribution decomposition (RC_i = w_i*(Sigma*w)_i / w'Sigma*w, summing to 1) alongside the capital weights, using the empirical covariance of real returns. For this universe each asset proxies a factor (SPY=equity-beta, TLT=duration, GOLD=real-asset, BTC=crypto). E.g. a 60/40 is ~83% equity risk; a 50/50 SPY/BTC is ~86% BTC risk despite 50/50 capital. Descriptive, not advisory.

輸入參數holdings必填

ips_gate

IPS gate — planning-step constraint check (hard gate)

Check a portfolio against an Investment Policy Statement BEFORE accepting it — the planning step a proper process does FIRST (CFA). Provide holdings + IPS constraints (max_drawdown_tolerance as a fraction e.g. 0.15, time_horizon_years, liquidity_need 'low'|'medium'|'high'). Runs the stress test internally and flags where the proposal VIOLATES the stated policy: worst stress drawdown exceeds tolerance; a short horizon cannot absorb a deep drawdown; material holdings are less liquid than the stated need. A HARD GATE, not a score. Descriptive, not advisory.

輸入參數holdings必填liquidity_needtime_horizon_yearsmax_drawdown_tolerance

backtest_integrity

Backtest integrity check (deflated Sharpe + regime coverage)

Confront a backtest claim with its over-optimism failure modes before trusting it. Given an annualized Sharpe + the number of configurations tried + the backtest window (YYYY-MM-DD), returns: the DEFLATED Sharpe — the expected MAXIMUM Sharpe achievable by chance grows with the trial count, so a high in-sample Sharpe is a selection artifact (Bailey & López de Prado); which CRISIS REGIMES were ABSENT from the backtest window (untested, from the historical-anchor catalogue); and a base-rate caveat. If the trial count is unknown — the usual case for an agent reasoning from a backtest — the Sharpe is flagged as not-deflatable / UNPROVEN. All inputs optional; supply as many as known. Descriptive, not advisory.

輸入參數kurtskewassetn_trialsfrequencybacktest_endbacktest_startannualized_sharpe

submit_feedback

Submit structured feedback

Persist structured improvement feedback about a previous tool response. Provide your agent identity, the request_id you are commenting on, and one or more feedback items each carrying category (from the FeedbackCategory ontology), severity, observation, optional suggested_action, and agent_confidence (0..1). Read `feedback://insights` to see aggregated cross-agent feedback.

輸入參數agent_name必填request_idagent_vendorfeedback_items必填session_contextoverall_confidence必填platform_version_evaluated

list_investment_theses

List investment theses (catalog discovery)

Discover the investment-thesis catalog. Each entry is a descriptive case study that pairs an economic framework with a rule-based portfolio and the synthetic + historical stress evidence for that allocation. Returns one compact summary per thesis (slug, title, one-liner, tags, risk tiers, framework summary, headline finding). Call get_investment_thesis(slug) for the full framework / portfolio / stress evidence, or read the thesis://{slug} resource. Descriptive, not advisory — the agent decides what is suitable.

無需輸入參數。

get_investment_thesis

Get one investment thesis (full case study)

Return the complete thesis for `slug`: the economic framework (pillars with [E]/[M]/[K] evidence grades, falsifiers and a deep-dive), the rule-based portfolio (asset blocks × conservative/balanced/offensive weights + sizing rationale), and the stress evidence (per-tier backtest, per-regime median drawdown, real historical episodes, pre-registered claim verdicts, and the hedge hold/break behaviour). This is the 'instant portfolio with all tested attributes'. Discover slugs with list_investment_theses(). Descriptive, not advisory — the agent decides suitability.

輸入參數slug必填

版本歷史

1
  1. v1.0.1最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分