INNER CODE UNIT · Python

years

Fincept-Corporation/FinceptTerminal · fincept-qt/scripts/Analytics/alternateInvestment/cli.py:381

    years = n / 12.0
    cagr = growth ** (1.0 / years) - 1.0 if growth > 0 and years > 0 else None
    mean = sum(returns) / n
    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,

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…