Portfolio Composition
Total Value
${{ dashboard.portfolio.totalValue.toLocaleString('en-US', { maximumFractionDigits: 0 }) }}
Positions
{{ dashboard.portfolio.positions.length }}
| Symbol | Quantity | Price | Value | Weight |
|---|---|---|---|---|
| {{ pos.symbol }} | {{ pos.quantity.toLocaleString() }} | ${{ pos.marketPrice.toFixed(2) }} | ${{ pos.marketValue.toLocaleString('en-US', { maximumFractionDigits: 0 }) }} | {{ pos.weightPercent.toFixed(1) }}% |
Risk Metrics
VAR (95%)
${{ dashboard.riskMetrics.var95.toLocaleString('en-US', { maximumFractionDigits: 0 }) }}
{{ (dashboard.riskMetrics.var95 / dashboard.portfolio.totalValue * 100).toFixed(1) }}%
Sharpe Ratio
{{ dashboard.riskMetrics.sharpeRatio.toFixed(2) }}
252-day rolling
Sortino Ratio
{{ dashboard.riskMetrics.sortinoRatio.toFixed(2) }}
Downside focus
Volatility
{{ dashboard.riskMetrics.volatilityPercent.toFixed(1) }}%
Annualized
Top 5 Holdings
{{ dashboard.riskMetrics.topFivePercent.toFixed(1) }}%
{{ dashboard.riskMetrics.topFivePercent > 70 ? '🔴 High' : dashboard.riskMetrics.topFivePercent > 50 ? '⚠️ Medium' : '✅ Low' }}
Max Position
{{ dashboard.riskMetrics.maxPositionPercent.toFixed(1) }}%
{{ dashboard.portfolio.positions[0]?.symbol || 'N/A' }}
Stress Test Scenarios
{{ stress.scenario.charAt(0).toUpperCase() + stress.scenario.slice(1) }}
{{ stress.portfolioLossPercent > 0 ? '+' : '' }}{{ stress.portfolioLossPercent.toFixed(1) }}% Portfolio
{{ Math.abs(stress.portfolioLossPercent) > 15 ? 'Severe' : 'Moderate' }}
Results: {{ stressResult.scenario }}
Portfolio Loss:
{{ stressResult.loss > 0 ? '+' : '' }}{{ stressResult.loss.toFixed(2) }}%
Stressed VAR:
${{ stressResult.stressedVar.toLocaleString('en-US', { maximumFractionDigits: 0 }) }}
Active Risk Alerts
{{ alert.threshold }}
{{ alert.severity }}
{{ alert.current.toFixed(1) }}%
✅ No active alerts — portfolio within safe limits
Risk Insights
- {{ insight }}