Generated by python -m vetted.conformance. Each library is called through its
public API on the fixtures in src/vetted/data/fixtures.json; its output is matched
against every named convention in vetted/metrics.py (relative tolerance 1e-07).
| library | metric | status | convention | sign | notes |
|---|---|---|---|---|---|
| empyrical-reloaded 0.5.12 | calmar | conformant | cagr_over_mdd | canonical | all_positive: NaN (undefined here) |
| ffn 1.2.2 | calmar | conformant | cagr_calendar_over_mdd | canonical | all_positive: NaN (undefined here) |
| quantstats 0.0.86 | calmar | conformant | cagr_over_mdd | canonical | all_positive: ZeroDivisionError: float division by zero (undefined here) |
| empyrical-reloaded 0.5.12 | es_95 | conformant | historical_below_interpolated_var | canonical | |
| quantstats 0.0.86 | es_95 | conformant | gaussian_ddof1 | canonical | |
| riskfolio-lib 7.3.0 | es_95 | conformant | rockafellar_uryasev | flipped | |
| skfolio 1.4.5 | es_95 | conformant | rockafellar_uryasev | flipped | |
| quantstats 0.0.86 | kurtosis | conformant | excess_sample | canonical | |
| skfolio 1.4.5 | kurtosis | conformant | pearson_moment | canonical | |
| empyrical-reloaded 0.5.12 | max_drawdown | conformant | geometric_initial_peak | flipped | |
| ffn 1.2.2 | max_drawdown | conformant | geometric_initial_peak | flipped | |
| quantstats 0.0.86 | max_drawdown | conformant | geometric_initial_peak | flipped | |
| riskfolio-lib 7.3.0 | max_drawdown | conformant | geometric_initial_peak | canonical | |
| skfolio 1.4.5 | max_drawdown | conformant | geometric_initial_peak | canonical | |
| empyrical-reloaded 0.5.12 | omega_0 | conformant | simple | canonical | all_positive: NaN (undefined here) |
| quantstats 0.0.86 | omega_0 | conformant | simple | canonical | all_positive: NaN (undefined here) |
| empyrical-reloaded 0.5.12 | return_annual | conformant | geometric | canonical | |
| ffn 1.2.2 | return_annual | conformant | geometric_calendar_365.25 | canonical | |
| quantstats 0.0.86 | return_annual | conformant | geometric | canonical | |
| empyrical-reloaded 0.5.12 | sharpe_annual | conformant | arithmetic_ddof1 | canonical | |
| ffn 1.2.2 | sharpe_annual | conformant | arithmetic_ddof1 | canonical | |
| quantstats 0.0.86 | sharpe_annual | conformant | arithmetic_ddof1 | canonical | |
| quantstats 0.0.86 | skewness | conformant | adjusted_g1 | canonical | |
| skfolio 1.4.5 | skewness | conformant | moment | canonical | |
| empyrical-reloaded 0.5.12 | sortino_annual | conformant | full_ddof0 | canonical | all_positive: NaN (undefined here) |
| ffn 1.2.2 | sortino_annual | conformant | full_ddof0 | canonical | all_positive: NaN (undefined here) |
| quantstats 0.0.86 | sortino_annual | conformant | full_ddof0 | canonical | all_positive: NaN (undefined here) |
| quantstats 0.0.86 | ulcer_index | NO MATCH | martin | - | bacon_monthly: nearest martin off by 2.15%; gaussian_neg_mean: nearest martin off by 0.03%; gaussian_pos_mean: nearest martin off by 0.03%; student_t3: nearest martin off by 0.03%; regime_switch: nearest martin off by 0.03%; left_skewed: nearest martin off by 0.03%; gaussian_n1260: nearest martin off by 0.04%; gaussian_n500: nearest martin off by 0.10%; tiny_sample_n7: nearest martin off by 8.01% |
| riskfolio-lib 7.3.0 | ulcer_index | conformant | martin | canonical | |
| skfolio 1.4.5 | ulcer_index | conformant | martin | canonical | |
| empyrical-reloaded 0.5.12 | var_95 | conformant | historical_interpolated | canonical | |
| quantstats 0.0.86 | var_95 | conformant | gaussian_ddof1 | canonical | |
| riskfolio-lib 7.3.0 | var_95 | conformant | historical_order_statistic | flipped | |
| skfolio 1.4.5 | var_95 | conformant | historical_order_statistic_upper | flipped | |
| empyrical-reloaded 0.5.12 | volatility_annual | conformant | std_ddof1 | canonical | |
| quantstats 0.0.86 | volatility_annual | conformant | std_ddof1 | canonical |
12 NaNs inserted into gaussian_neg_mean (n = 1512); and the same series permuted.
| library | metric | missing data | permutation |
|---|---|---|---|
| empyrical-reloaded 0.5.12 | calmar | counts missing periods as elapsed time (0.803%; a convention) | n/a |
| ffn 1.2.2 | calmar | counts missing periods as elapsed time (0.765%; a convention) | n/a |
| quantstats 0.0.86 | calmar | drops NaN (value unchanged) | n/a |
| empyrical-reloaded 0.5.12 | es_95 | CHANGES VALUE by 0.332% (missing data used as data) | invariant |
| quantstats 0.0.86 | es_95 | drops NaN (value unchanged) | invariant |
| riskfolio-lib 7.3.0 | es_95 | CHANGES VALUE by 0.200% (missing data used as data) | invariant |
| skfolio 1.4.5 | es_95 | drops NaN (value unchanged) | invariant |
| quantstats 0.0.86 | kurtosis | drops NaN (value unchanged) | invariant |
| skfolio 1.4.5 | kurtosis | drops NaN (value unchanged) | invariant |
| empyrical-reloaded 0.5.12 | max_drawdown | drops NaN (value unchanged) | n/a |
| ffn 1.2.2 | max_drawdown | drops NaN (value unchanged) | n/a |
| quantstats 0.0.86 | max_drawdown | drops NaN (value unchanged) | n/a |
| riskfolio-lib 7.3.0 | max_drawdown | CHANGES VALUE by 78.476% (missing data used as data) | n/a |
| skfolio 1.4.5 | max_drawdown | drops NaN (value unchanged) | n/a |
| empyrical-reloaded 0.5.12 | omega_0 | drops NaN (value unchanged) | invariant |
| quantstats 0.0.86 | omega_0 | drops NaN (value unchanged) | invariant |
| empyrical-reloaded 0.5.12 | return_annual | counts missing periods as elapsed time (0.803%; a convention) | n/a |
| ffn 1.2.2 | return_annual | counts missing periods as elapsed time (0.765%; a convention) | n/a |
| quantstats 0.0.86 | return_annual | drops NaN (value unchanged) | n/a |
| empyrical-reloaded 0.5.12 | sharpe_annual | drops NaN (value unchanged) | invariant |
| ffn 1.2.2 | sharpe_annual | drops NaN (value unchanged) | invariant |
| quantstats 0.0.86 | sharpe_annual | drops NaN (value unchanged) | invariant |
| quantstats 0.0.86 | skewness | drops NaN (value unchanged) | invariant |
| skfolio 1.4.5 | skewness | drops NaN (value unchanged) | invariant |
| empyrical-reloaded 0.5.12 | sortino_annual | drops NaN (value unchanged) | invariant |
| ffn 1.2.2 | sortino_annual | drops NaN (value unchanged) | invariant |
| quantstats 0.0.86 | sortino_annual | drops NaN (value unchanged) | invariant |
| quantstats 0.0.86 | ulcer_index | CHANGES VALUE by 0.081% (missing data used as data) | n/a |
| riskfolio-lib 7.3.0 | ulcer_index | CHANGES VALUE by 94.190% (missing data used as data) | n/a |
| skfolio 1.4.5 | ulcer_index | drops NaN (value unchanged) | n/a |
| empyrical-reloaded 0.5.12 | var_95 | propagates NaN | invariant |
| quantstats 0.0.86 | var_95 | drops NaN (value unchanged) | invariant |
| riskfolio-lib 7.3.0 | var_95 | CHANGES VALUE by 0.460% (missing data used as data) | invariant |
| skfolio 1.4.5 | var_95 | drops NaN (value unchanged) | invariant |
| empyrical-reloaded 0.5.12 | volatility_annual | drops NaN (value unchanged) | invariant |
| quantstats 0.0.86 | volatility_annual | drops NaN (value unchanged) | invariant |