Crypto-Attuario

Utilities Hub

Methodology

Formulas, assumptions, and limitations of our quantitative tools

Returns and Annualization

Arithmetic Returns

Simple percentage returns calculated as:

r_t = (P_t - P_(t-1)) / P_(t-1)

Log Returns

Continuously compounded returns:

r_t = ln(P_t / P_(t-1))

Annualization

Returns are annualized using geometric compounding:

Annual Return = (1 + mean_daily_return)^N - 1

Where N is the number of trading periods per year:

  • 252: Traditional markets (Mon-Fri, excluding holidays)
  • 365: Crypto markets (24/7/365 trading)

Risk Metrics

Volatility (Standard Deviation)

σ = sqrt(Σ(r_t - μ)² / (n-1)) × sqrt(N)

Maximum Drawdown (MDD)

Largest peak-to-trough decline:

MDD = max((peak - trough) / peak)

Value at Risk (VaR)

Calcoliamo sia il VaR parametrico (assunzione di distribuzione normale) sia quello storico:

Parametrico: VaR_α = μ - z_α × σ
Storico: VaR_α = percentile(returns, 1-α)

α tipici: 95% o 99%. Il VaR è espresso come perdita attesa minima (valore negativo) sul periodo di una barra.

Expected Shortfall (ES / CVaR)

Average loss beyond VaR threshold:

ES_α = E[Loss | Loss > VaR_α]

Risk-Adjusted Performance

Sharpe Ratio

Excess return per unit of total risk:

Sharpe = (R_p - R_f) / σ_p

Where R_p is portfolio return, R_f is risk-free rate (typically 0 for crypto), and σ_p is portfolio volatility.

Sortino Ratio

Similar to Sharpe, but penalizes only downside volatility:

Sortino = (R_p - R_f) / σ_downside

Calmar Ratio

Return relative to maximum drawdown:

Calmar = Annual_Return / |MDD|

Information Ratio

Misura l'extra-rendimento rispetto a un benchmark, normalizzato per l'errore di tracking:

IR = (R_p - R_b) / σ_tracking

Dove R_b è il rendimento del benchmark e σ_tracking è la volatilità dei rendimenti in eccesso. Annualizziamo il differenziale prima di dividerlo per il tracking error.

Portfolio Optimization

Equal Weight

Simplest diversification strategy:

w_i = 1/n for all assets

Risk Parity

Equalizes risk contribution from each asset. Solved iteratively:

Risk_Contrib_i = w_i × (Σ_w_j × Cov_ij)
Target: RC_i = 1/n for all i

Minimum Variance

Ricerca il portafoglio con varianza minima soggetto a pesi long-only (0 ≤ w_i ≤ 1, Σ w_i = 1):

min Σ_i Σ_j w_i w_j Cov_ij

Usiamo campionamento casuale sul simplesso (fino a 1000 combinazioni) e soluzione chiusa per 2 asset. Risultato normalizzato per rispettare i vincoli.

Maximum Sharpe Ratio

Optimizes risk-adjusted returns using random simplex search (2000 samples):

max Sharpe = max (w'μ - r_f) / sqrt(w'Σw)
subject to: Σw_i = 1, 0 ≤ w_i ≤ 1

Le aspettative di rendimento μ sono stimate come media storica annualizzata (configurabile tra 252 o 365 giorni di trading).

Covariance Shrinkage

Improves stability by shrinking sample covariance toward structured target:

Σ_shrunk = (1-α) × Σ_sample + α × Target
Target = diag(avg_variance)

Default α = 0.10, adjustable via slider (0 to 0.30).

Market & Yield Scanners

Arbitrage Scanner (Simulato)

Lo scanner genera quotazioni sintetiche per venue centralizzati, applica modelli di fee configurabili e calcola spread lordi/netti:

  • Fee model conservative: taker 0.4%, maker 0.2%, withdrawal 0.1%
  • Fee model optimistic: taker 0.2%, maker 0.1%, withdrawal 0.05%
  • Net spread = spread lordo − (2 × taker + withdrawal)
  • Dimensione trade limitata da liquidità simulata e parametro maxSize
  • Modello di slippage lineare: prezzo = base × (1 + min(size/liquidity, 5%))

Tutte le opportunità sono marcate come SIMULATED. Nessuna esecuzione reale: serve solo per studiare la sensibilità al costo delle fee e agli spread.

Yield Screener

I dati provengono da DeFiLlama (API pubblica). Filtri supportati: chain, TVL minimo, APY minimo e età del pool. Nessun rendimento è garantito: evidenziamo sempre il rischio di impermanent loss e la natura puramente informativa dello strumento.

Backtesting

Walk-forward backtesting with periodic rebalancing (monthly by default). Tracks portfolio value, turnover, and generates return series for performance metrics.

Portfolio Value Update

V_(t+1) = Σ w_i × V_t × (1 + r_i,t)

Turnover

Measures trading activity at rebalancing:

Turnover_t = Σ |w_target,i - w_actual,i|

Assumptions and Caveats

⚠️ Important Limitations

  • Historical data only: Past performance does not guarantee future results
  • Thin liquidity: Crypto markets can have low liquidity, high slippage
  • No transaction costs: Backtests don't include fees, slippage, or taxes
  • Stationarity assumption: Return distributions may change over time
  • Look-ahead bias: Some metrics may use information not available in real-time
  • Market microstructure: Ignores bid-ask spreads, market impact
  • Optimization bias: Grid/random search may not find true global optimum
  • Data quality: Relies on external APIs (CoinGecko, DeFiLlama)

ℹ️ Best Practices

  • Use multiple time horizons for robustness checks
  • Apply covariance shrinkage for stability (especially with < 100 data points)
  • Consider out-of-sample validation periods
  • Monitor turnover to estimate realistic transaction costs
  • Use 365 trading days for crypto, 252 for traditional assets
  • Combine multiple risk metrics (Sharpe, Sortino, Calmar)
  • Always maintain a risk management plan
  • This tool is for educational purposes - not financial advice

References

  • Ledoit, O., & Wolf, M. (2003). "Improved estimation of the covariance matrix of stock returns with an application to portfolio selection"
  • Maillard, S., Roncalli, T., & Teïletche, J. (2010). "On the properties of equally-weighted risk contributions portfolios"
  • Markowitz, H. (1952). "Portfolio Selection", Journal of Finance
  • Sharpe, W. F. (1966). "Mutual Fund Performance", Journal of Business
  • Sortino, F. A., & Price, L. N. (1994). "Performance Measurement in a Downside Risk Framework"
Disclaimer: All tools and metrics are provided for educational and informational purposes only. Nothing on this page constitutes financial advice, investment recommendations, or an offer to buy/sell securities. Always conduct your own research and consult with qualified professionals.