INNER CODE UNIT · Python
vol_m
Fincept-Corporation/FinceptTerminal · fincept-qt/scripts/Analytics/alternateInvestment/cli.py:384
vol_m = math.sqrt(sum((r - mean) ** 2 for r in returns) / (n - 1)) if n > 1 else 0.0
rf_m = (1.0 + rf_annual) ** (1.0 / 12.0) - 1.0
mean_excess = sum(r - rf_m for r in returns) / n
downside = math.sqrt(sum(min(0.0, r - rf_m) ** 2 for r in returns) / n)
return {
'months': n,
'cumulative_return': growth - 1.0,
'cagr': cagr,
'annualized_volatility': vol_m * math.sqrt(12.0),
'sharpe_ratio': (mean_excess / vol_m) * math.sqrt(12.0) if vol_m > 0 else None,
'sortino_ratio': (mean_excess / downside) * math.sqrt(12.0) if downside > 0 else None,
'max_drawdown': max_dd,
'best_month_return': max(returns),
'worst_month_return': min(returns),
'positive_months_rate': sum(1 for r in returns if r > 0) / n,
}