Skip to main content
Glama

crashtestyourstrategy

Portfolio stress (multi-asset, Tier-1)

portfolio_stress_test
Read-onlyIdempotent

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
costsNoOptional cost model: {'rebalance': 'monthly', 'transaction_cost_bps': float, 'annual_costs': {ASSET: annual fraction}}. Omit for the frictionless default.
holdingsYesPortfolio legs: list of {asset, weight} objects, e.g. [{'asset': 'SPY', 'weight': 0.6}, {'asset': 'TLT', 'weight': 0.4}]. Weights are normalised to sum to 1; assets must be in the substrate universe.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with readOnlyHint=true and destructiveHint=false, the description adds rich behavioral context: the joint correlation structure includes a bond hedge that can break under rate shocks, the cost_impact block uses a path-loop engine with real unit accounting, and the output is described per regime. It also notes the pre-computed substrate for near-instant execution, going well beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense paragraph, but every sentence contributes operational value: purpose, input format, output structure, internal mechanism, universe constraints, alternative tool, and disclaimer. No filler; appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description further explains return values per regime and the cross_asset_finding enumeration. It covers prerequisites (read portfolio://universe), the fixed universe, optional costs, and alternatives. The description is self-contained for an agent to decide when and how to invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover both parameters at 100%, so baseline is 3. The prose adds semantic value by explaining that weights are normalised, assets must be in the substrate universe, and detailing the costs object structure (rebalance enum, annual_costs, transaction_cost_bps) and its effect on output (adds cost_impact block). This exceeds baseline but doesn't fully elaborate on the 'band' rebalancing policy, so 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Stress a multi-asset portfolio') and scope (three named cross-asset regimes), and distinguishes itself from siblings by explicitly restricting to a fixed 4-asset universe and pointing to build_portfolio for any other ticker. This is a specific verb+resource+scope that differentiates it from tools like run_stress_test.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: use for the fixed universe (SPY, TLT, GOLD, BTC), and for any other ticker or custom book use build_portfolio in assess mode. Also mentions the tool is instant (Tier-1) and includes a disclaimer ('Descriptive, not advisory'), giving clear usage context and exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.1/5.0
Disambiguation4/5

Most tools target distinct resources/actions (regime introspection vs. portfolio stress vs. thesis management), but a few names like run_stress_test vs. portfolio_stress_test could cause confusion. Descriptions help clarify boundaries, but there is enough overlap to mark one point off.

Naming Consistency3/5

Names are mostly snake_case but mix verb_noun (get_dossier, run_stress_test) with noun phrases (factor_decomposition, market_regime_map). The verb style is inconsistent (get/list/run/describe/submit/challenge), though the pattern is readable. This falls between predictable and chaotic.

Tool Count4/5

16 tools is slightly above the typical 3-15 range, but the domain is broad (regime analysis, portfolio stress testing, strategy evaluation, feedback). Most tools are distinct and necessary; only a couple could be merged without loss of functionality.

Completeness4/5

The surface covers core workflows: discovering theses, stress-testing portfolios, analyzing regimes, evaluating strategy robustness, and collecting feedback. Minor gaps exist (e.g., no custom strategy builder, challenge_strategy only supports buy-and-hold), but these are explicitly noted as future work.