2
$\begingroup$

I am testing the performance difference between 2 portfolio strategies. I use Monte Carlo simulation in R to generate $N$ simulations of portfolio returns for each strategy. I then compute the Sharpe ratio for each simulation. In the end, each strategy has $N$ observations of Sharpe ratios.

How would I best go about using this data to test whether the true Sharpe ratio of one strategy is greater than that of the other?

All the research I have looked at examines comparisons between samples of returns, and not samples of Sharpe Ratios. The SharpeR package also only seems to have functions that take samples of returns as inputs.

I am also a little unsure of whether my question is even correctly stated - i.e. whether I should instead be asking about whether the true mean Sharpe ratio of one strategy is greater than that of the other.

$\endgroup$
3
  • $\begingroup$ A random thought: you might test for Stochastic Dominance of one distribution of SR's versus the other. $\endgroup$
    – noob2
    May 24 at 2:28
  • 1
    $\begingroup$ Author of SharpeR here: The sr_unpaired_test will test samples of Sharpe ratios, but I am in the process of deprecating it. For your problem, if the Sharpes are over equal sample sizes, you can compute their means, then use the normal approximation and the usual standard error. $\endgroup$
    – shabbychef
    May 24 at 4:52
  • $\begingroup$ @shabbychef Thank you for the reply. Can sr_unpaired_test be used to compare two samples of sharpe ratios, or is it only for one-sample tests? The documentation seems to imply the latter. $\endgroup$ May 24 at 12:18
1
$\begingroup$

Typically we have $$\hat{\zeta}\approx\mathcal{N}\left(\zeta,\frac{1 + \frac{\zeta^2}{2}}{n}\right),$$ where $\hat{\zeta}$ is the observed Sharpe ratio, and $\zeta$ is the unobserved population analogue (the signal-noise ratio). Assuming you observe $\hat{\zeta}_{1,i}$ and $\hat{\zeta}_{2,j}$ for $1 \le i \le M_1$ and $1 \le j \le M_2$, where the Sharpes are observed over samples of size $n_{1,i}$ and $n_{2,j}$, then if the sample sizes are different you should compute weighted averages: $$ \tilde{\zeta}_1 = \frac{\sum_i \frac{\hat{\zeta}_{1,i}}{s_{1,i}}}{ \sum_i \frac{1}{s_{1,i}}}, $$ where $s_{1,i}$ is the estimated standard error $\sqrt{\frac{1 + \frac{\zeta_{1,i}^2}{2}}{n_{1,i}}}$. Similarly compute $\tilde{\zeta}_2$. The claim is that $$\tilde{\zeta}_1 \approx\mathcal{N}\left(\zeta_1, \frac{M_1}{\left(\sum_i \frac{1}{s_{1,i}}\right)^2}\right).$$ From this you can find an approximate normal form for the difference $\tilde{\zeta}_1 - \tilde{\zeta}_2$, which should have zero mean under the null you are testing.

$\endgroup$
3
  • $\begingroup$ I would caution however, that since you are simulating returns, there is an irreducible error from not properly simulating capturing reality. This error can not be reduced by increasing the sample sizes. $\endgroup$
    – shabbychef
    May 24 at 5:32
  • $\begingroup$ Thank you very much. Would the appropriate test then be a two-sample t-test with test statistic $t = \frac{(\tilde{\zeta}_1 - \tilde{\zeta}_2) - (\zeta_1 - \zeta_2)}{ \sqrt{ \frac{1}{ \left( \sum_i \frac{1}{s_{1,i}} \right)^2 } + \frac{1}{ \left( \sum_j \frac{1}{s_{2,j}} \right)^2 } } }$? Also, do you happen to know of any literature that deals with this? $\endgroup$ May 24 at 13:39
  • 1
    $\begingroup$ Given that there is likely to be bias in your simulations, I do not think you should worry too much about using an 'exact' test. The normal approximation should be good enough. $\endgroup$
    – shabbychef
    May 25 at 5:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.