Agent skill

Risk Measurement and Stress Testing

by HKUDS in HKUDS/Vibe-Trading

Measures portfolio and backtest risk with VaR, CVaR, maximum drawdown, Monte Carlo simulation, tail modeling and stress tests, using one tested risk module.

MITAuto-check passedBusiness, Finance & HR

Install Risk Measurement and Stress Testing

skills CLI
$ npx skills add HKUDS/Vibe-Trading --skill risk-analysis -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install HKUDS/Vibe-Trading risk-analysis --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/HKUDS/Vibe-Trading.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agent/src/skills/risk-analysis .claude/skills/risk-analysis && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
risk-analysis
GitHub stars
35k
Token cost
~3.8k tokens
SKILL.md length
1,546 words
Files
1
Skills in repo
89
Repo updated
First seen
Licence
MIT

At a glance

Measures portfolio and backtest risk with VaR, CVaR, maximum drawdown, Monte Carlo simulation, tail modeling and stress tests, using one tested risk module.

  • Works in 4 steps: VaR (Value at Risk) → CVaR / ES (Conditional VaR / Expected… → Maximum Drawdown Analysis → …
  • Calculating VaR and CVaR for the returns of a strategy or portfolio
  • SKILL.md covers Overview, Risk Measurement Methods, Stress-Testing Framework and Tail-Risk Analysis (Extreme…, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

This skill sets out how to measure the downside of a backtest or an asset allocation: value at risk, conditional VaR, maximum drawdown, Monte Carlo price paths, extreme-value fitting of the tail and scenario stress tests. The calculations live in a single tested module, `src/quantlib/risk.py`, and the agent is told to call its functions rather than rewrite the formulas.

A large part of the page is a sign convention. Every loss is reported as a positive number, returns keep their natural sign and carry a `_return` suffix, and a CVaR should never come out below the VaR from the same sample. Values are deliberately not clipped, so a tail with no actual losses shows up as a negative loss. The VaR section compares historical simulation with the parametric normal method, and the excerpt ends shortly after that.

When your agent uses it

  • Calculating VaR and CVaR for the returns of a strategy or portfolio
  • Measuring the maximum drawdown of an equity curve
  • Running a Monte Carlo simulation of possible portfolio outcomes
  • Stress testing a portfolio against historical crisis scenarios

Example prompts

  • “Compute the historical VaR and CVaR of the daily returns in results/equity.csv.”
  • “What was the peak-to-trough drawdown of this backtest, and when did it happen?”
  • “Run a Monte Carlo simulation of my portfolio's returns and report the loss at the tail.”
  • “Fit a tail distribution to the worst returns and tell me how extreme the losses can get.”

Requirements

  • Python with the project's `src/quantlib/risk.py` module

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. VaR (Value at Risk)
  2. CVaR / ES (Conditional VaR / Expected Shortfall)
  3. Maximum Drawdown Analysis
  4. Monte Carlo Simulation

What it can do on your machine

Read from SKILL.md and the folder at commit e532650. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python and markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Risk Measurement and Stress Testing loads about 3.8k tokens when it runs. Until then it costs about 46 tokens; SKILL.md has 1,546 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~46
When it runs · the whole SKILL.md, loaded when a task matches
~3.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from HKUDS/Vibe-Trading at commit e532650, republished under its MIT licence (© HKUDS). 1,546 words, ~3,801 tokens.

Download SKILL.mdSave it as .claude/skills/risk-analysis/SKILL.md (or your agent's skills folder).
name
risk-analysis
description
Risk measurement and stress testing — VaR/CVaR/max drawdown calculation, Monte Carlo simulation, extreme-value tail-risk analysis, and historical scenario stress testing.
category
analysis

Risk Measurement and Stress Testing

Overview

Systematic risk-measurement methodology covering VaR/CVaR calculation, Monte Carlo simulation, stress-test design, and tail-risk analysis. It provides risk evaluation for backtest results and risk-control constraints for asset allocation.

The measures below are implemented once, with tests, in src/quantlib/risk.py. Call them; do not retype the formulas, because a hand-retyped VaR is where the sign convention silently flips.

python
from src.quantlib.risk import (
    historical_var, parametric_var, historical_cvar,
    max_drawdown_analysis, monte_carlo_gbm, analyze_mc_results, fit_gpd_tail,
)
Sign convention

A loss is a positive number, uniformly, across every function in the module:

ValueReads as
historical_var(...) == 0.028a 2.8% loss
historical_cvar(...) == 0.042a 4.2% average loss in the tail
max_drawdown_analysis(...)["max_drawdown"] == 0.325a 32.5% peak-to-trough decline
analyze_mc_results(...)["var"] == 0.224a 22.4% loss

Quantities that are returns rather than losses keep their natural sign and are named *_return (mean_return, worst_5pct_return, best_5pct_return), so a bad outcome there is negative. Report VaR to the user with the sign the user expects, but never re-derive it — flip it at the presentation layer only.

cvar >= var holds by construction whenever both come from the same sample at the same confidence level. If you ever compute a CVaR below its VaR, the tail mask is wrong.

This is not cvar >= var >= 0. The magnitudes are never clipped, so a sample whose tail contains no actual loss reports a negative loss — a gain. That is deliberate and informative; do not assert non-negativity on a VaR and do not clip it, or you destroy the distinction between "small loss" and "no loss at all".

Risk Measurement Methods

1. VaR (Value at Risk)

Definition: the maximum expected loss over a given horizon at a specified confidence level.

Three Calculation Methods
MethodFormula / StepsAdvantagesDisadvantages
Historical simulationSort historical returns and take the quantileNo distribution assumptionDepends on historical samples
Parametric (normal)VaR = μ - z_α × σEasy to computeAssumes a normal distribution
Monte CarloSimulate N paths and take the quantileFlexibleComputationally intensive
Historical Simulation

Reads the loss straight off the sorted sample, so it inherits whatever fat tails the history actually had. horizon scales by the square-root-of-time rule, which is only valid under i.i.d. returns.

python
historical_var(returns, confidence=0.95)              # 1-day 95% VaR
historical_var(returns, confidence=0.99, horizon=10)  # 10-day 99% VaR

The quantile is a non-interpolating lower order statistic: element ceil((1 - confidence) * n) - 1 of the ascending-sorted returns, negated. The result is therefore always a return that was actually observed, never a blend of two neighbours.

Parametric (normal)
python
parametric_var(returns, confidence=0.95)

Fits mu and the sample sigma (ddof=1) and returns -(mu + z*sigma) with z = norm.ppf(1 - confidence). Needs at least 2 observations.

Do not assume the parametric figure is the lower one. The direction of the gap depends on the confidence level. A fat tail inflates the fitted sigma, which pushes the normal quantile outward at moderate confidence, where the empirical quantile is still sitting in the well-behaved body. Measured over 300 t(4) samples of 750 daily returns:

ConfidenceParametric reads above historical
90%100% of samples
95%92.7%
97.5%40.3%
99%5.3%

So the familiar "parametric understates risk" result only appears at 99% and deeper. At the 95% default it is normally the higher of the two, and that is not a sign your code is wrong. Quote both at 99% when the point is to expose the tail.

2. CVaR / ES (Conditional VaR / Expected Shortfall)

Definition: the average loss beyond the VaR threshold, more conservative than VaR.

python
historical_cvar(returns, confidence=0.95)
historical_cvar(returns, confidence=0.99, horizon=10)

Averages the VaR order statistic together with everything worse than it (inclusive), which is the standard expected shortfall and is what makes cvar >= var structural rather than incidental.

VaR vs CVaR comparison:

MetricVaR(95%)CVaR(95%)Meaning
Typical value2.1%3.4%CVaR is usually 1.3-1.8x VaR
SubadditivityNot satisfiedSatisfiedCVaR can be used for portfolio risk decomposition
RegulationBasel IIBasel IIIRegulatory trend is shifting toward CVaR
3. Maximum Drawdown Analysis
python
dd = max_drawdown_analysis(equity)   # equity = a strictly positive net-value Series
dd["max_drawdown"]        # 0.325 -> fell 32.5% below its running peak (POSITIVE)
dd["peak_date"], dd["trough_date"], dd["recovery_date"]
dd["recovered"]           # False when the series ends still underwater

Full return keys: max_drawdown, peak_date, trough_date, recovery_date, recovered, peak_to_trough_periods, trough_to_recovery_periods, underwater_days, recovery_days.

  • Recovery means reaching the peak value again, not merely bouncing off the trough; recovery_date is None and recovered is False if it never happens.
  • underwater_days / recovery_days are calendar days and require a DatetimeIndex; on any other index they come back None and you should use the *_periods counts, which are always populated.
  • Non-positive equity raises — a drawdown ratio is undefined at or below zero. Rebase a signed PnL series to a positive net value first.
4. Monte Carlo Simulation
Geometric Brownian Motion (GBM)
python
paths = monte_carlo_gbm(
    s0=100.0, mu=0.10, sigma=0.20,   # mu/sigma are ANNUALISED
    n_steps=252, n_paths=10_000,
    seed=42,                          # keyword-only; required for a reproducible run
)
paths.shape        # (10000, 253) -- n_steps + 1 columns
paths[:, 0]        # exactly s0 on every path

Always pass seed. It is keyword-only so it cannot be supplied by accident, and leaving it None draws fresh OS entropy — the run is then unreproducible and the numbers in your report cannot be regenerated. Use steps_per_year if the step is not a 252-day trading day.

Column 0 is the starting price, so paths[:, -1] / paths[:, 0] - 1 is the total return over the whole simulation. Terminal expectation is s0 * exp(mu * n_steps / steps_per_year); the median sits lower, at s0 * exp((mu - 0.5*sigma**2) * T), and that gap is the volatility drag, not a bug.

Simulation Result Analysis
python
summary = analyze_mc_results(paths, confidence=0.95)
summary["var"], summary["cvar"]                 # positive loss magnitudes
summary["mean_return"], summary["prob_loss"]
summary["worst_5pct_return"], summary["best_5pct_return"]   # signed returns

var / cvar are computed with exactly the same order-statistic convention as historical_var / historical_cvar, so a simulated VaR and a historical VaR are directly comparable.

Stress-Testing Framework

Historical Scenario Stress Tests
ScenarioPeriodChina A-share DrawdownUS Equity DrawdownBTC Drawdown10Y Government Bonds
2008 financial crisis2008.01-2008.10-65%-50%N/Ayield ↓ 100bp
2015 China equity crash2015.06-2015.08-45%-10%-20%yield ↓ 50bp
2018 trade war2018.01-2018.12-25%-20%-80%yield ↓ 30bp
2020 COVID shock2020.01-2020.03-15%-35%-50%yield ↓ 80bp
2022 hiking cycle2022.01-2022.10-20%-25%-65%yield ↑ 200bp
Hypothetical Scenario Design
python
STRESS_SCENARIOS = {
    'rate_shock_up_100bp': {
        'equity': -0.10,    # equities down 10%
        'bond_10y': -0.08,  # 10-year bonds down 8%
        'bond_2y': -0.02,   # short bonds down 2%
        'gold': +0.05,      # gold up 5%
        'btc': -0.15,       # BTC down 15%
    },
    'credit_crisis': {
        'equity': -0.25,
        'bond_10y': +0.05,  # government bonds act as a safe haven
        'credit_bond': -0.15,
        'gold': +0.10,
        'btc': -0.30,
    },
    'liquidity_dry_up': {
        'equity': -0.20,
        'bond_10y': -0.05,  # when liquidity is poor, everything falls
        'gold': -0.05,
        'btc': -0.40,
        'cash': 0.0,
    },
    'geopolitical_conflict': {
        'equity': -0.15,
        'bond_10y': +0.03,
        'gold': +0.15,
        'oil': +0.30,
        'btc': -0.20,
    },
}
Stress-Test Implementation Steps
  1. Select a scenario: either historical or hypothetical
  2. Apply shocks: multiply scenario shocks by the current positions
  3. Compute portfolio loss: portfolio_loss = Σ(weight_i × shock_i × position_i)
  4. Assess adequacy: compare loss vs risk budget and whether stop-loss thresholds are triggered
Show full SKILL.md (613 more words)Show less

Tail-Risk Analysis (Extreme Value Theory, EVT)

POT Method (Peaks Over Threshold)
python
fit = fit_gpd_tail(returns, threshold_pct=5.0)   # keep the worst 5%
fit["shape_xi"]      # ξ>0 fat tail, ξ=0 exponential tail, ξ<0 bounded tail
fit["shape_stderr"]  # standard error of ξ -- quote ξ with it, never alone
fit["scale_sigma"]   # in units of loss magnitude
fit["tail_type"]     # "fat" | "exponential" | "bounded"
fit["threshold"], fit["n_exceedances"], fit["exceedance_rate"]

Exceedances are non-negative by construction (threshold - return, kept only where the return fell below the threshold), so the GPD location is pinned at zero. Letting loc float instead lets the optimiser absorb tail mass into a shifted origin and biases shape_xi.

tail_type is decided against shape_stderr, not against exact zero. A fitted shape_xi is a float and is never exactly 0.0, so a bare ξ > 0 test would call a genuinely exponential tail "fat" purely on the sign of estimation noise. "fat" therefore means ξ > 2 × shape_stderr, "bounded" means ξ < -2 × shape_stderr, and anything in between is "exponential" — indistinguishable from zero at this sample size. Measured over 200 refits, that 2σ band labels a truly exponential tail "exponential" 96.5% of the time while still catching ξ = +0.40 and ξ = -0.35 100% of the time. A shape_xi of 0.03 with a shape_stderr of 0.02 is not evidence of a fat tail; get more exceedances before you call it one.

Threshold choice is the real judgement call: too high and there is nothing left to fit (fewer than 2 exceedances raises), too low and the EVT limit theorem no longer applies, so the fitted shape stops meaning anything. Check that shape_xi is stable across a few nearby threshold_pct values before quoting it.

Tail-Risk Metrics
MetricCalculationMeaning
Kurtosisreturns.kurtosis()>3 indicates fat tails; China A-shares are often in the 4-8 range
Skewnessreturns.skew()<0 means left-skewed (large drops are more common than large rallies)
Tail ratioworst 5% / best 5%>1 means larger downside risk
Hill estimatorTail indexα<2 implies extremely fat tails

Analysis Framework

Input Requirements
Required:
- Return series (daily or higher frequency) or net-value series
- Portfolio weights (if it is a portfolio)

Optional:
- Benchmark returns (for relative risk analysis)
- Risk budget / constraint settings
Analysis Steps
  1. Data preprocessing: compute returns, check missing values, and handle outliers
  2. Descriptive statistics: mean / volatility / skewness / kurtosis / maximum drawdown
  3. VaR/CVaR calculation: compare three methods at both 95% and 99% confidence levels
  4. Monte Carlo simulation: 10,000 paths, output distribution statistics and VaR
  5. Stress testing: at least 3 historical scenarios + 2 hypothetical scenarios
  6. Tail analysis: fit GPD and determine tail type
  7. Risk-control recommendations: provide concrete recommendations based on the results

Output Format

Note the sign flip: the module returns losses as positive numbers, while the report below prints them the way a reader expects to see them (max_drawdown 0.325 → -32.5%). Flip once, here at the presentation layer, and never inside a calculation.

markdown
## Risk Analysis Report

### Core Risk Metrics
| Metric | Value |
|------|-----|
| Daily volatility | 1.85% |
| Annualized volatility | 29.3% |
| Maximum drawdown | -32.5% (2024.09.15 → 2024.11.20) |
| VaR(95%, 1D) | -2.8% |
| CVaR(95%, 1D) | -4.2% |
| Skewness | -0.45 |
| Kurtosis | 5.2 (fat tail) |

### Stress-Test Results
| Scenario | Portfolio Loss | Stop Triggered |
|------|---------|----------|
| 2020 COVID replay | -18.5% | No |
| Rates +100bp | -12.3% | No |
| Liquidity dry-up | -28.7% | Yes |

### Monte Carlo Simulation (252 days, 10000 paths)
| Statistic | Value |
|------|-----|
| Expected return | +8.2% |
| Loss probability | 35% |
| Worst 5% scenario | -22.4% |

### Risk-Control Recommendations
1. Recommend setting a portfolio stop-loss at -15%
2. Tail risk is elevated; consider allocating 5% to gold as a hedge
3. Correlations rise in stressed markets, so diversification benefits will be discounted

Notes

  1. VaR is not the maximum loss: VaR only says "with 95% probability, losses will not exceed X"; the remaining 5% can be far worse
  2. Normality assumption is dangerous: financial returns are almost always fat-tailed, so parametric VaR underestimates risk deep in the tail (99% and beyond). At 90–95% it usually reads higher than the historical figure, because the fat tail inflates the fitted sigma — see the table under "Parametric (normal)". Never cite a 95% parametric VaR as evidence that the normal fit is conservative
  3. History does not equal the future: historical simulation fails when structural breaks occur (for example, the first negative oil price)
  4. Correlation is unstable: correlation matrices observed in normal markets can collapse in crises (correlations trend toward 1)
  5. Monte Carlo seed: always pass seed= to monte_carlo_gbm and quote it in the report, so the numbers can be regenerated; use at least 10,000 paths for stability
  6. Holding-period scaling: the square-root-of-time rule only applies under i.i.d. returns; it becomes inaccurate under autocorrelation
  7. Risk in backtests: metrics.csv already includes max_drawdown and sharpe; this skill provides deeper analysis
  8. Sign discipline: every measure here returns a loss as a positive number. Do not re-derive a measure inline to "get the sign you want" — call the function and flip once when printing

© HKUDS, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in agent/src/skills/risk-analysis of HKUDS/Vibe-Trading.

Open the folder on GitHubat commit e532650

Compare with similar skills

Risk Measurement and Stress Testing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Risk Measurement and Stress Testing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Risk Measurement and Stress Testing this skillHKUDS/Vibe-Trading35k—~3.8kAutomated safety check: PassMIT
Strategy Performance Reporttradesdontlie/tradingview-mcp6.8k2 repos~591Automated safety check: PassCustom licence
WorldQuant BRAIN Alpha ResearchQuantML-Research/wq-alpha-research405—~4.9kAutomated safety check: PassNone
A-Share Daily Reviewqusong0627/QuantMind1.7k—~1.9kAutomated safety check: PassAGPL-3.0
QuantMind Training Config Generatorqusong0627/QuantMind1.7k—~1.5kAutomated safety check: PassAGPL-3.0
Alpha Desk Investment ResearchJingHao-Leon/dsh-alpha-desk181—~1.3kAutomated safety check: NotesMIT

Similar skills

  • Strategy Performance Report

    tradesdontlie/tradingview-mcp

    Builds a performance report for a backtested Pine Script strategy from TradingView data, covering metrics, trades, the equity curve and improvement ideas.

    6.8k GitHub starsUsed in 2 repos~591 tokens
    Business, Finance & HRAuto-check passed
  • WorldQuant BRAIN Alpha Research

    QuantML-Research/wq-alpha-research

    Chinese-language playbook for WorldQuant BRAIN alphas: choose fields, write expressions, backtest, diagnose check failures, tune turnover, submit and build portfolios.

    405 GitHub stars~4.9k tokensUpdated 3 mo ago
    Business, Finance & HRAuto-check passed
  • A-Share Daily Review

    qusong0627/QuantMind

    Produces a post-market review report for the China A-share market from local QuantDB data, news sentiment and model signals, ending in a next-day direction call.

    1.7k GitHub stars~1.9k tokensUpdated today
    Business, Finance & HRAuto-check passed
  • Turns a plain-language model training request into a validated QuantMind training config file that can be imported from the Model Training page.

    1.7k GitHub stars~1.5k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Alpha Desk Investment Research

    JingHao-Leon/dsh-alpha-desk

    Runs an AI investment research desk around the aihf hedge-fund CLI, with research cycles, backtests and iFinD data, under a risk gate and a rule against placing real trades.

    181 GitHub stars~1.3k tokensUpdated 16 days ago
    Business, Finance & HRAuto-check: notes
  • Quant Buddy Market Data and Backtesting

    pseudo-longinus/quant-buddy-skills

    Queries A-share, Hong Kong and US stock quotes, valuation and financial data through the Quant Buddy API, and runs screening, factor calculation and strategy backtests.

    193 GitHub stars~11k tokensUpdated today
    Business, Finance & HRAuto-check passed

More from HKUDS/Vibe-Trading

All 89 skills in this repo
  • Eastmoney Market Data

    HKUDS/Vibe-Trading

    Index of Eastmoney's free, no-token market data interfaces for China A-shares and Hong Kong stocks: fund flows, dragon-tiger lists, margin trading, reports and news.

    35k GitHub stars~1k tokensUpdated today
    Auto-check passed
  • OKX Market Data

    HKUDS/Vibe-Trading

    Retrieves public OKX cryptocurrency market data such as spot prices, candlesticks, funding rates and open interest through the OKX V5 REST API, with no authentication.

    35k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • SEC EDGAR Filings Fetcher

    HKUDS/Vibe-Trading

    Fetches U.S. SEC EDGAR data: resolves tickers to CIK numbers, lists recent 10-K, 10-Q and 8-K filings with document URLs, and pulls XBRL financial series.

    35k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • A-Share ST Risk Screener

    HKUDS/Vibe-Trading

    Predicts whether a mainland China A-share company risks an ST or *ST warning after its next annual report, using financial thresholds and Sina penalty records.

    35k GitHub stars~4.9k tokensUpdated today
    Auto-check passed
  • Breaks a structural trend such as AI infrastructure into its physical supply chain and ranks lesser-known listed companies sitting on each bottleneck.

    35k GitHub stars~2.7k tokensUpdated today
    Auto-check passed
  • Plans and drafts an eight-part, roughly 120k-word investigative series on one company, built around a strict fact-check pass rather than fast drafting.

    35k GitHub stars~2.4k tokensUpdated today
    Auto-check passed

Works with

Questions about Risk Measurement and Stress Testing

What does Risk Measurement and Stress Testing do?

Measures portfolio and backtest risk with VaR, CVaR, maximum drawdown, Monte Carlo simulation, tail modeling and stress tests, using one tested risk module. This skill sets out how to measure the downside of a backtest or an asset allocation: value at risk, conditional VaR, maximum drawdown, Monte Carlo price paths, extreme-value fitting of the tail and scenario stress tests.py`, and the agent is told to call its functions rather than rewrite the formulas.

When should I use Risk Measurement and Stress Testing?

Risk Measurement and Stress Testing fits situations like: calculating VaR and CVaR for the returns of a strategy or portfolio; measuring the maximum drawdown of an equity curve; running a Monte Carlo simulation of possible portfolio outcomes; stress testing a portfolio against historical crisis scenarios.

How do I install Risk Measurement and Stress Testing in Claude Code?

Run `npx skills add HKUDS/Vibe-Trading --skill risk-analysis -a claude-code`. Or copy the skill folder (agent/src/skills/risk-analysis in HKUDS/Vibe-Trading) into .claude/skills/risk-analysis in your project. Claude Code loads it when a task matches its description.

How do I install Risk Measurement and Stress Testing in Codex?

Run `npx skills add HKUDS/Vibe-Trading --skill risk-analysis -a codex`. Or copy the skill folder (agent/src/skills/risk-analysis in HKUDS/Vibe-Trading) into .agents/skills/risk-analysis in your project. Codex loads it when a task matches its description.

Can I use Risk Measurement and Stress Testing in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add HKUDS/Vibe-Trading --skill risk-analysis -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/risk-analysis, .gemini/skills/risk-analysis, .github/skills/risk-analysis and .opencode/skills/risk-analysis in your project.

What does Risk Measurement and Stress Testing need to run?

SKILL.md names no scripts, command-line tools or credentials: Risk Measurement and Stress Testing is instructions for the agent only. Our summary lists: Python with the project's `src/quantlib/risk.py` module.

Does Risk Measurement and Stress Testing access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Risk Measurement and Stress Testing safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Risk Measurement and Stress Testing use?

Risk Measurement and Stress Testing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Risk Measurement and Stress Testing use?

About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Risk Measurement and Stress Testing?

Skills that share tags, products or a category with Risk Measurement and Stress Testing: Strategy Performance Report (tradesdontlie/tradingview-mcp, 6.8k stars), WorldQuant BRAIN Alpha Research (QuantML-Research/wq-alpha-research, 405 stars), A-Share Daily Review (qusong0627/QuantMind, 1.7k stars) and QuantMind Training Config Generator (qusong0627/QuantMind, 1.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Risk Measurement and Stress Testing?

HKUDS (a GitHub organization) maintains it in HKUDS/Vibe-Trading, which has 35,043 GitHub stars. The repository holds 89 skills in this directory. The repository was last updated on October 8, 2026.

Source: HKUDS/Vibe-Trading on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.