Covers 15+ risk metrics across volatility, tail risk, drawdown, and risk-adjusted return categories with parametric, historical, and Cornish-Fisher VaR methods
Includes rolling window analysis, portfolio-level calculations with marginal risk contribution and risk parity optimization, and stress testing against historical crises or hypothetical shocks
Supports Monte Carlo simulation with elevated volati
Confirm successful installation by checking the skill directory location:
.cursor/skills/risk-metrics-calculation
Restart Cursor to activate risk-metrics-calculation. Access via /risk-metrics-calculation in your agent's command palette.
β
Security Notice
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Comprehensive risk measurement toolkit for portfolio management, including Value at Risk, Expected Shortfall, and drawdown analysis.
When to Use This Skill
Measuring portfolio risk
Implementing risk limits
Building risk dashboards
Calculating risk-adjusted returns
Setting position sizes
Regulatory reporting
Core Concepts
1. Risk Metric Categories
Category
Metrics
Use Case
Volatility
Std Dev, Beta
General risk
Tail Risk
VaR, CVaR
Extreme losses
Drawdown
Max DD, Calmar
Capital preservation
Risk-Adjusted
Sharpe, Sortino
Performance
2. Time Horizons
Intraday: Minute/hourly VaR for day traders
Daily: Standard risk reporting
Weekly: Rebalancing decisions
Monthly: Performance attribution
Annual: Strategic allocation
Implementation
Pattern 1: Core Risk Metrics
import numpy as np
import pandas as pd
from scipy import stats
from typing import Dict, Optional, Tuple
classRiskMetrics:"""Core risk metric calculations."""def__init__(self, returns: pd.Series, rf_rate:float=0.02):"""
Args:
returns: Series of periodic returns
rf_rate: Annual risk-free rate
""" self.returns = returns
self.rf_rate = rf_rate
self.ann_factor =252# Trading days per year# Volatility Metricsdefvolatility(self, annualized:bool=True)->float:"""Standard deviation of returns.""" vol = self.returns.std()if annualized: vol *= np.sqrt(self.ann_factor)return vol
defdownside_deviation(self, threshold:float=0, annualized:bool=True)->float:"""Standard deviation of returns below threshold.""" downside = self.returns[self.returns < threshold]iflen(downside)==0:return0.0 dd = downside.std()if annualized: dd *= np.sqrt(self.ann_factor)return dd
defbeta(self, market_returns: pd.Series)->float:"""Beta relative to market.""" aligned = pd.concat([self.returns, market_returns], axis=1).dropna()iflen(aligned)<2:return np.nan
cov = np.cov(aligned.iloc[:,0], aligned.iloc[:,1])return cov[0,1]/ cov[1,1]if cov[1,1]!=0else0# Value at Riskdefvar_historical(self, confidence:float=0.95)->float:"""Historical VaR at confidence level."""return-np.percentile(self.returns,(1- confidence)*100)defvar_parametric(self, confidence:float=0.95)->float:"""Parametric VaR assuming normal distribution.""" z_score = stats.norm.ppf(confidence)return self.returns.mean()- z_score * self.returns.std()defvar_cornish_fisher(self, confidence:float=0.95)->float:"""VaR with Cornish-Fisher expansion for non-normality.""" z = stats.norm.ppf(confidence) s = stats.skew(self.returns)# Skewness k = stats.kurtosis(self.returns)# Excess kurtosis# Cornish-Fisher expansion z_cf =(z +(z**2-1)* s /6+(z**3-3*z)* k /24-(2*z**3-5*z)* s**2/36)return-(self.returns.mean()+ z_cf * self.returns.std())# Conditional VaR (Expected Shortfall)defcvar(self, confidence:float=0.95)->float:"""Expected Shortfall / CVaR / Average VaR.""" var = self.var_historical(confidence)return-self.returns[self.returns <=-var].mean()# Drawdown Analysisdefdrawdowns(self)-> pd.Series:"""Calculate drawdown series.""" cumulative =(1+ self.returns).cumprod() running_max = cumulative.cummax()return(cumulative - running_max)/ running_max
defmax_drawdown(self)->float:"""Maximum drawdown."""return self.drawdowns().min()defavg_drawdown(self)->float:"""Average drawdown.""" dd = self.drawdowns()return dd[dd <0].mean()if(dd <0).any()
β
Make data-driven prioritization decisions faster
Stakeholder Communication
Draft PRDs, status updates, and stakeholder presentations
βΊAccess to product documentation and roadmap tools (Jira, Notion, etc.)
βΊUnderstanding of product management frameworks (RICE, Jobs-to-be-Done, etc.)
βΊStakeholder contact information and communication channels
Time Estimate
30-60 minutes to see productivity improvements
Steps
1Install product management skill
2Start with user story generation for known feature
3Progress to competitive analysis: research 2-3 competitors
4Use for roadmap prioritization: apply RICE/ICE scoring
5Draft stakeholder communications and refine based on feedback
6Build template library for recurring PM tasks
7Share effective prompts with product team
Common Pitfalls
β Not validating competitive researchβverify facts before sharing
β Accepting user stories without involving engineering team
β Over-relying on frameworks without qualitative judgment
β Not customizing outputs to company culture and communication style
β Skipping stakeholder validation of generated requirements
Best Practices
β Do
+Validate research and competitive analysis with real data
+Collaborate with engineering when generating technical requirements
+Customize frameworks and templates to your company context
+Use skill for first drafts, refine with stakeholder input
+Document successful prompt patterns for PM tasks
+Combine AI efficiency with human judgment and intuition
β Don't
βDon't publish competitive analysis without fact-checking
βDon't finalize user stories without engineering review
βDon't make prioritization decisions solely on AI scoring
βDon't skip customer validation of generated requirements
βDon't ignore company-specific context and culture
π‘ Pro Tips
β Provide context: company goals, constraints, customer feedback
β Ask for alternatives: 'Show 3 ways to prioritize this roadmap'
β Request stakeholder-specific formatting: 'Executive summary vs. engineering spec'
β Use skill for 70% generation + 30% customization to company needs
When to Use This
β Use when
Use for user story writing, competitive research, roadmap prioritization, stakeholder communication, and PRD drafting. Best for reducing repetitive documentation and research work.
β Avoid when
Avoid for strategic product vision (requires deep customer empathy), pricing decisions (needs market and financial expertise), or when face-to-face customer discovery is more valuable than speed.
Learning Path
1Basic: user stories, feature specs, status updates