risk module

btQuant.risk.beta(assetReturns, marketReturns)[source]

Beta coefficient (systematic risk).

Parameters:
  • assetReturns – asset returns

  • marketReturns – market returns

Returns:

beta

btQuant.risk.calmarRatio(returns, riskFreeRate=0)[source]

Calmar ratio: annualized return / max drawdown.

Parameters:
  • returns – array of returns

  • riskFreeRate – risk-free rate

Returns:

Calmar ratio

btQuant.risk.capturRatio(returns, marketReturns)[source]

Upside and downside capture ratios.

Parameters:
  • returns – portfolio returns

  • marketReturns – market returns

Returns:

dict with upsideCapture, downsideCapture, captureRatio

btQuant.risk.conditionalValueAtRisk(returns, confidence=0.95, method='historical')[source]

Conditional Value at Risk with method selection.

Parameters:
  • returns – array of returns

  • confidence – confidence level

  • method – ‘historical’ or ‘parametric’

Returns:

CVaR estimate

btQuant.risk.downsideDeviation(returns, target=0)[source]

Downside deviation.

Parameters:
  • returns – array of returns

  • target – target return

Returns:

downside deviation

btQuant.risk.drawdown(returns)[source]

Maximum drawdown.

Parameters:

returns – array of returns

Returns:

maximum drawdown (negative value)

btQuant.risk.excessKurtosis(returns)[source]

Excess kurtosis.

Parameters:

returns – array of returns

Returns:

excess kurtosis

btQuant.risk.expectedShortfall(returns, confidence=0.95)[source]

Expected shortfall (ES), same as historical CVaR.

Parameters:
  • returns – array of returns

  • confidence – confidence level

Returns:

ES estimate

btQuant.risk.hillTailIndex(returns, k=50)[source]

Hill estimator for tail index (heavy tails).

Parameters:
  • returns – array of returns

  • k – number of extreme values

Returns:

tail index (lower = heavier tail)

btQuant.risk.historicalCvar(returns, confidence=0.95)[source]

Historical simulation Conditional Value at Risk.

Parameters:
  • returns – array of returns

  • confidence – confidence level

Returns:

CVaR estimate

btQuant.risk.historicalVar(returns, confidence=0.95)[source]

Historical simulation Value at Risk.

Parameters:
  • returns – array of returns

  • confidence – confidence level

Returns:

VaR estimate

btQuant.risk.informationRatio(returns, benchmarkReturns)[source]

Information ratio: active return / tracking error.

Parameters:
  • returns – portfolio returns

  • benchmarkReturns – benchmark returns

Returns:

information ratio

btQuant.risk.maxDrawdownDuration(returns)[source]

Maximum drawdown duration in periods.

Parameters:

returns – array of returns

Returns:

maximum drawdown duration

btQuant.risk.modifiedVar(returns, confidence=0.95)[source]

Modified VaR using Cornish-Fisher expansion for skewness and kurtosis.

Parameters:
  • returns – array of returns

  • confidence – confidence level

Returns:

modified VaR

btQuant.risk.omegaRatio(returns, threshold=0.0)[source]

Omega ratio: ratio of gains to losses.

Parameters:
  • returns – array of returns

  • threshold – threshold return

Returns:

Omega ratio

btQuant.risk.painIndex(returns)[source]

Pain index (average squared drawdown).

Parameters:

returns – array of returns

Returns:

pain index

btQuant.risk.parametricCvar(returns, confidence=0.95)[source]

Parametric Conditional Value at Risk (assumes normal).

Parameters:
  • returns – array of returns

  • confidence – confidence level

Returns:

CVaR estimate

btQuant.risk.parametricVar(returns, confidence=0.95)[source]

Parametric Value at Risk (assumes normal distribution).

Parameters:
  • returns – array of returns

  • confidence – confidence level (default 0.95)

Returns:

VaR estimate

btQuant.risk.sharpeRatio(returns, riskFreeRate=0)[source]

Sharpe ratio.

Parameters:
  • returns – array of returns

  • riskFreeRate – risk-free rate per period

Returns:

Sharpe ratio

btQuant.risk.sortinoRatio(returns, riskFreeRate=0, target=0)[source]

Sortino ratio (uses downside deviation).

Parameters:
  • returns – array of returns

  • riskFreeRate – risk-free rate

  • target – target return (default 0)

Returns:

Sortino ratio

btQuant.risk.stabilityRatio(returns)[source]

Stability of returns (R-squared of linear regression).

Parameters:

returns – array of returns

Returns:

stability ratio (0-1, higher = more stable)

btQuant.risk.tailRatio(returns, confidence=0.95)[source]

Tail ratio: right tail / left tail.

Parameters:
  • returns – array of returns

  • confidence – confidence level

Returns:

tail ratio (>1 means right tail heavier)

btQuant.risk.trackingError(returns, benchmarkReturns)[source]

Tracking error (standard deviation of active returns).

Parameters:
  • returns – portfolio returns

  • benchmarkReturns – benchmark returns

Returns:

tracking error

btQuant.risk.treynorRatio(returns, marketReturns, riskFreeRate=0)[source]

Treynor ratio: excess return / beta.

Parameters:
  • returns – portfolio returns

  • marketReturns – market returns

  • riskFreeRate – risk-free rate

Returns:

Treynor ratio

btQuant.risk.ulcerIndex(returns)[source]

Ulcer index (downside volatility measure).

Parameters:

returns – array of returns

Returns:

ulcer index

btQuant.risk.valueAtRisk(returns, confidence=0.95, method='historical')[source]

Value at Risk with method selection.

Parameters:
  • returns – array of returns

  • confidence – confidence level

  • method – ‘historical’ or ‘parametric’

Returns:

VaR estimate