CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-quantstats

Portfolio analytics for quants - comprehensive statistical analysis, risk assessment, and performance visualization for quantitative finance

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

risk-assessment.mddocs/

Risk Assessment

Advanced risk metrics and measures for comprehensive portfolio risk evaluation including Value at Risk (VaR), tail risk measures, drawdown analysis, stress testing indicators, and risk-adjusted performance metrics.

Capabilities

Value at Risk (VaR) and Expected Shortfall

Quantify potential losses at specific confidence levels and tail risk measures.

def value_at_risk(returns, sigma=1, confidence=0.95, prepare_returns=True):
    """
    Calculate Value at Risk (VaR) at specified confidence level.
    
    Parameters:
    - returns: pandas Series of returns
    - sigma: int, number of standard deviations (1=parametric, 2=cornish-fisher)
    - confidence: float, confidence level (e.g., 0.95 for 95%)
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: VaR as negative percentage
    """

def var(returns, sigma=1, confidence=0.95, prepare_returns=True):
    """
    Alias for value_at_risk function.
    
    Parameters:
    - returns: pandas Series of returns
    - sigma: int, number of standard deviations
    - confidence: float, confidence level
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: VaR as negative percentage
    """

def conditional_value_at_risk(returns, sigma=1, confidence=0.95, prepare_returns=True):
    """
    Calculate Conditional Value at Risk (CVaR) - expected loss beyond VaR.
    
    Parameters:
    - returns: pandas Series of returns
    - sigma: int, number of standard deviations
    - confidence: float, confidence level
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: CVaR as negative percentage
    """

def cvar(returns, sigma=1, confidence=0.95, prepare_returns=True):
    """
    Alias for conditional_value_at_risk function.
    
    Parameters:
    - returns: pandas Series of returns
    - sigma: int, number of standard deviations
    - confidence: float, confidence level
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: CVaR as negative percentage
    """

def expected_shortfall(returns, sigma=1, confidence=0.95):
    """
    Calculate Expected Shortfall (ES) - another name for CVaR.
    
    Parameters:
    - returns: pandas Series of returns
    - sigma: int, number of standard deviations
    - confidence: float, confidence level
    
    Returns:
    float: Expected shortfall as negative percentage
    """

Tail Risk Measures

Assess extreme risk scenarios and tail behavior of return distributions.

def tail_ratio(returns, cutoff=0.95, prepare_returns=True):
    """
    Calculate tail ratio - ratio of right tail to left tail returns.
    
    Parameters:
    - returns: pandas Series of returns
    - cutoff: float, percentile cutoff (e.g., 0.95 for 95th percentile)
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: Tail ratio
    """

def outlier_win_ratio(returns, quantile=0.99, prepare_returns=True):
    """
    Calculate ratio of outlier wins to total wins.
    
    Parameters:
    - returns: pandas Series of returns
    - quantile: float, quantile threshold for outliers
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: Outlier win ratio
    """

def outlier_loss_ratio(returns, quantile=0.01, prepare_returns=True):
    """
    Calculate ratio of outlier losses to total losses.
    
    Parameters:
    - returns: pandas Series of returns
    - quantile: float, quantile threshold for outliers
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: Outlier loss ratio
    """

def outliers(returns, quantile=0.95):
    """
    Identify outlier returns beyond specified quantile.
    
    Parameters:
    - returns: pandas Series of returns
    - quantile: float, quantile threshold
    
    Returns:
    pandas Series: Boolean series identifying outliers
    """

def remove_outliers(returns, quantile=0.95):
    """
    Remove outlier returns beyond specified quantile.
    
    Parameters:
    - returns: pandas Series of returns
    - quantile: float, quantile threshold
    
    Returns:
    pandas Series: Returns with outliers removed
    """

Ulcer Index and Pain Measures

Metrics focusing on downside volatility and sustained losses.

def ulcer_index(returns):
    """
    Calculate Ulcer Index - measure of downside risk and drawdown magnitude.
    
    Parameters:
    - returns: pandas Series of returns
    
    Returns:
    float: Ulcer Index percentage
    """

def ulcer_performance_index(returns, rf=0):
    """
    Calculate Ulcer Performance Index - risk-adjusted return using Ulcer Index.
    
    Parameters:
    - returns: pandas Series of returns
    - rf: float, risk-free rate
    
    Returns:
    float: Ulcer Performance Index
    """

def upi(returns, rf=0):
    """
    Alias for ulcer_performance_index function.
    
    Parameters:
    - returns: pandas Series of returns
    - rf: float, risk-free rate
    
    Returns:
    float: UPI value
    """

def serenity_index(returns, rf=0):
    """
    Calculate Serenity Index - CAGR to Ulcer Index ratio.
    
    Parameters:
    - returns: pandas Series of returns
    - rf: float, risk-free rate
    
    Returns:
    float: Serenity Index
    """

Risk of Ruin

Probability and metrics related to catastrophic losses.

def risk_of_ruin(returns, prepare_returns=True):
    """
    Calculate risk of ruin - probability of losing entire capital.
    
    Parameters:
    - returns: pandas Series of returns
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: Risk of ruin probability (0-1)
    """

def ror(returns):
    """
    Alias for risk_of_ruin function.
    
    Parameters:
    - returns: pandas Series of returns
    
    Returns:
    float: Risk of ruin probability
    """

Performance vs Risk Ratios

Ratios that balance return generation against various risk measures.

def smart_sharpe(returns, rf=0.0, periods=252, annualize=True):
    """
    Calculate Smart Sharpe ratio with autocorrelation penalty.
    
    Parameters:
    - returns: pandas Series of returns
    - rf: float, risk-free rate
    - periods: int, number of periods per year
    - annualize: bool, whether to annualize the result
    
    Returns:
    float: Smart Sharpe ratio
    """

def smart_sortino(returns, rf=0, periods=252, annualize=True):
    """
    Calculate Smart Sortino ratio with autocorrelation penalty.
    
    Parameters:
    - returns: pandas Series of returns
    - rf: float, risk-free rate
    - periods: int, number of periods per year
    - annualize: bool, whether to annualize the result
    
    Returns:
    float: Smart Sortino ratio
    """

def adjusted_sortino(returns, rf=0, periods=252, annualize=True, smart=False):
    """
    Calculate Adjusted Sortino ratio using downside deviation.
    
    Parameters:
    - returns: pandas Series of returns
    - rf: float, risk-free rate
    - periods: int, number of periods per year
    - annualize: bool, whether to annualize the result
    - smart: bool, whether to apply autocorrelation penalty
    
    Returns:
    float: Adjusted Sortino ratio
    """

def recovery_factor(returns, rf=0.0, prepare_returns=True):
    """
    Calculate Recovery Factor - net profit to maximum drawdown ratio.
    
    Parameters:
    - returns: pandas Series of returns
    - rf: float, risk-free rate
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: Recovery factor
    """

def risk_return_ratio(returns, prepare_returns=True):
    """
    Calculate risk-return ratio.
    
    Parameters:
    - returns: pandas Series of returns
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: Risk-return ratio
    """

Advanced Risk Ratios

Sophisticated risk-adjusted performance measures.

def payoff_ratio(returns, prepare_returns=True):
    """
    Calculate payoff ratio - average win to average loss ratio.
    
    Parameters:
    - returns: pandas Series of returns
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: Payoff ratio
    """

def profit_ratio(returns, prepare_returns=True):
    """
    Calculate profit ratio - gross profit to gross loss ratio.
    
    Parameters:
    - returns: pandas Series of returns
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: Profit ratio
    """

def profit_factor(returns, prepare_returns=True):
    """
    Calculate profit factor - total positive returns to total negative returns ratio.
    
    Parameters:
    - returns: pandas Series of returns
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: Profit factor
    """

def win_loss_ratio(returns, prepare_returns=True):
    """
    Calculate win-loss ratio - ratio of winning periods to losing periods.
    
    Parameters:
    - returns: pandas Series of returns
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: Win-loss ratio
    """

def cpc_index(returns, prepare_returns=True):
    """
    Calculate Common Performance Criteria (CPC) Index.
    
    Parameters:
    - returns: pandas Series of returns
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: CPC Index
    """

def common_sense_ratio(returns, prepare_returns=True):
    """
    Calculate Common Sense Ratio.
    
    Parameters:
    - returns: pandas Series of returns
    - prepare_returns: bool, whether to prepare returns data
    
    Returns:
    float: Common Sense Ratio
    """

Probabilistic Risk Measures

Risk measures incorporating probability distributions and confidence intervals.

def probabilistic_sortino_ratio(returns, benchmark, periods=252.0, rf=0.0):
    """
    Calculate probabilistic Sortino ratio with confidence intervals.
    
    Parameters:
    - returns: pandas Series of portfolio returns
    - benchmark: pandas Series of benchmark returns
    - periods: float, number of periods per year
    - rf: float, risk-free rate
    
    Returns:
    float: Probabilistic Sortino ratio
    """

def probabilistic_adjusted_sortino_ratio(returns, benchmark, periods=252.0, rf=0.0):
    """
    Calculate probabilistic adjusted Sortino ratio.
    
    Parameters:
    - returns: pandas Series of portfolio returns
    - benchmark: pandas Series of benchmark returns
    - periods: float, number of periods per year
    - rf: float, risk-free rate
    
    Returns:
    float: Probabilistic adjusted Sortino ratio
    """

def implied_volatility(returns, periods=252, annualize=True):
    """
    Calculate implied volatility from returns.
    
    Parameters:
    - returns: pandas Series of returns
    - periods: int, number of periods per year
    - annualize: bool, whether to annualize the result
    
    Returns:
    float: Implied volatility
    """

Install with Tessl CLI

npx tessl i tessl/pypi-quantstats

docs

data-utilities.md

index.md

pandas-integration.md

performance-visualization.md

report-generation.md

risk-assessment.md

statistical-analysis.md

tile.json