AgentSkillsCN

Calculate Portfolio Risk

计算投资组合风险

SKILL.md

Skill: Calculate Investment Portfolio Risk

Domain

wealth_management

Description

Analyzes investment portfolio composition to calculate risk metrics including VaR, volatility, and concentration risk based on proprietary risk models.

Tags

wealth-management, portfolio-risk, var-calculation, investment-analysis, risk-metrics

Use Cases

  • Portfolio risk assessment
  • Client suitability verification
  • Rebalancing recommendations
  • Regulatory reporting

Proprietary Business Rules

Rule 1: VaR Calculation Method

Proprietary VaR methodology using historical simulation with volatility scaling.

Rule 2: Concentration Limits

Position and sector concentration limits based on client risk profile.

Rule 3: Correlation Adjustments

Dynamic correlation estimates during stress periods.

Rule 4: Liquidity Risk Scoring

Position liquidity assessment based on trading volume and market depth.

Input Parameters

  • portfolio_id (string): Portfolio identifier
  • positions (list): Holdings with ticker, quantity, value
  • client_risk_profile (string): Conservative, moderate, aggressive
  • time_horizon (string): Short, medium, long term
  • benchmark (string): Benchmark index
  • stress_scenario (string): None, moderate, severe

Output

  • var_95 (float): 95% Value at Risk
  • var_99 (float): 99% Value at Risk
  • volatility (float): Annualized portfolio volatility
  • concentration_alerts (list): Concentration limit breaches
  • risk_score (int): Overall risk score 1-100

Implementation

The risk calculation logic is implemented in portfolio_risk_calculator.py and references market data from CSV files:

  • securities.csv - Reference data
  • risk_profiles.csv - Reference data
  • stress_scenarios.csv - Reference data
  • correlation_matrix.csv - Reference data
  • parameters.csv - Reference data.

Usage Example

python
from portfolio_risk_calculator import calculate_portfolio_risk

result = calculate_portfolio_risk(
    portfolio_id="PORT-12345",
    positions=[
        {"ticker": "AAPL", "quantity": 100, "value": 18500},
        {"ticker": "MSFT", "quantity": 50, "value": 19000}
    ],
    client_risk_profile="moderate",
    time_horizon="medium",
    benchmark="SPY",
    stress_scenario="none"
)

print(f"VaR 95%: ${result['var_95']}")

Test Execution

python
from portfolio_risk_calculator import calculate_portfolio_risk

result = calculate_portfolio_risk(
    portfolio_id=input_data.get('portfolio_id'),
    positions=input_data.get('positions', []),
    client_risk_profile=input_data.get('client_risk_profile', 'moderate'),
    time_horizon=input_data.get('time_horizon', 'medium'),
    benchmark=input_data.get('benchmark', 'SPY'),
    stress_scenario=input_data.get('stress_scenario', 'none')
)