Learn R Programming

SharpeR (version 0.1306)

sr_test: test for Sharpe ratio

Description

Performs one and two sample tests of Sharpe ratio on vectors of data.

Usage

sr_test(x,y=NULL,alternative=c("two.sided","less","greater"),
    zeta=0,ope=1,paired=FALSE,conf.level=0.95)

Arguments

x
a (non-empty) numeric vector of data values, or an object of class sr, in which case we perform single-sample tests.
y
an optional (non-empty) numeric vector of data values.
alternative
a character string specifying the alternative hypothesis, must be one of "two.sided" (default), "greater" or "less". You can specify just the initial letter.
zeta
a number indicating the null hypothesis offset value, the $S$ value.
ope
the number of observations per 'epoch'. For convenience of interpretation, The Sharpe ratio is typically quoted in 'annualized' units for some epoch, that is, 'per square root epoch', though returns are observed at a frequency of ope
paired
a logical indicating whether you want a paired test.
conf.level
confidence level of the interval.
...
further arguments to be passed to or from methods.

Value

  • A list with class "htest" containing the following components:
  • statisticthe value of the t- or Z-statistic.
  • parameterthe degrees of freedom for the statistic.
  • p.valuethe p-value for the test.
  • conf.inta confidence interval appropriate to the specified alternative hypothesis.
  • estimatethe estimated Sharpe or difference in Sharpes depending on whether it was a one-sample test or a two-sample test. Annualized
  • null.valuethe specified hypothesized value of the Sharpe or difference of Sharpes depending on whether it was a one-sample test or a two-sample test.
  • alternativea character string describing the alternative hypothesis.
  • methoda character string indicating what type of test was performed.
  • data.namea character string giving the name(s) of the data.

Details

Given $n$ observations $x_i$ from a normal random variable, with mean $\mu$ and standard deviation $\sigma$, tests $$H_0: \frac{\mu}{\sigma} = S$$ against two or one sided alternatives.

Can also perform two sample tests of Sharpe ratio. For paired observations $x_i$ and $y_i$, tests $$H_0: \frac{\mu_x}{\sigma_x} = \frac{\mu_u}{\sigma_y}$$ against two or one sided alternative, via sr_equality_test.

For unpaired (and independent) observations, tests $$H_0: \frac{\mu_x}{\sigma_x} - \frac{\mu_u}{\sigma_y} = S$$ against two or one-sided alternatives via a normal approximation (which is probably not very good for small sample sizes). At some point, the procedure of Ghosh (1975) or variant thereof should perhaps be employed?

References

Sharpe, William F. "Mutual fund performance." Journal of business (1966): 119-138. http://ideas.repec.org/a/ucp/jnlbus/v39y1965p119.html

Ghosh, B. K. "On the Distribution of the Difference of Two t-Variables." Journal of the American Statistical Association 70, no 350 (1975): 463--467. http://www.jstor.org/stable/2285841

See Also

reannualize

sr_equality_test, t.test.

Other sr: as.sr, as.sr.data.frame, as.sr.default, as.sr.lm, as.sr.xts, confint.sr, confint.sropt, dsr, is.sr, power.sr_test, print.sr, print.sropt, reannualize, reannualize.sr, reannualize.sropt, se, se.sr, sr, sr_equality_test

Examples

Run this code
# should reject null
x <- sr_test(rnorm(1000,mean=0.5,sd=0.1),zeta=2,ope=1,alternative="greater")
x <- sr_test(rnorm(1000,mean=0.5,sd=0.1),zeta=2,ope=1,alternative="two.sided")
# should not reject null
x <- sr_test(rnorm(1000,mean=0.5,sd=0.1),zeta=2,ope=1,alternative="less")

# test for uniformity
pvs <- replicate(128,{ x <- sr_test(rnorm(1000),ope=253,alternative="two.sided")
                        x$p.value })
plot(ecdf(pvs))
abline(0,1,col='red')
# testing an object of class sr
asr <- as.sr(rnorm(1000,1 / sqrt(253)),ope=253)
checkit <- sr_test(asr,zeta=0)

Run the code above in your browser using DataLab