Repository navigation
feature-9813: Add Adjusted Sharpe Ratio (Pezier and White) to portfolio statistics - #9874
abhi-byte62 wants to merge 3 commits into
Conversation
|
One frequency issue in Quick check with 2,520 simulated daily returns (Student-t, 5 df, scaled to 1% vol, small positive drift; NumPy, moments by the usual standardized-moment definition):
The consistent version barely moves a Sharpe of 0.99 (only about 0.4% below it), which is the correct reading: with that kurtosis the daily adjustment is tiny. As written, the metric reports a 29% haircut and gets harsher as annualized SR rises. The unit tests don't catch it because they feed the same SR into both the implementation and the expected value, and Two ways to fix: compute the adjustment from the per-period Sharpe and annualize the result, or scale the moments to the annual horizon before applying the formula. A test that builds returns at two frequencies (daily and the same series aggregated to monthly) and expects roughly equal ASR would pin it down. Separately, |
|
Great catch @arhancanli, thank you for the detailed review and the simulation breakdown! That makes complete sense regarding the moment horizons. I've updated the implementation in the latest commit:
|
|
The new per-period evaluation in One thing I think will stop the build, though. In public static double AdjustedSharpeRatio(List<double> listPerformance, double riskFreeRate = 0, double tradingDaysPerYear = 252)
public static double AdjustedSharpeRatio(List<double> listPerformance, double annualizedSharpeRatio, double tradingDaysPerYear)and the same for the two decimal ones, Cheapest fix is to give the annualized variant its own name, e.g. Smaller point on |
|
Thanks for pointing that out @arhancanli! Good catch on the duplicate signature (CS0111) and the call site ambiguity. I've pushed an update resolving both points:
|
Description
Implements the Adjusted Sharpe Ratio (ASR) metric per Pezier & White (2006) to penalize the Sharpe ratio for skewness and excess kurtosis in portfolio return series.
Statistics.AdjustedSharpeRatiooverloads (doubleanddecimal).AdjustedSharpeRatioinPortfolioStatistics,PerformanceMetrics, andStatisticsBuilder.GetSummary.OptimizationBacktestJsonConverter.AdjustedSharpeRatioTestscovering normal, positively skewed, negatively skewed distributions, sample size edges, and non-finite return handling.Related Issue
Closes #9813
Motivation and Context
Standard Sharpe ratio assumes normally distributed returns and can overstate risk-adjusted performance for strategies with negative skewness and fat tails (e.g., short volatility or options strategies). Adjusted Sharpe Ratio penalizes negative skew and high kurtosis:
Requires Documentation Change
Yes, portfolio statistics documentation can list the
Adjusted Sharpe Ratiometric and its formula.How Has This Been Tested?
Added unit tests in
Tests/Common/Statistics/AdjustedSharpeRatioTests.csand integrated verification inPortfolioStatisticsTests.cs.Types of changes
Checklist:
bug-<issue#>-<description>orfeature-<issue#>-<description>