The Minimum Track Record Length responds to the following question: "How long should a track record be in order to have a p-level statistical confidence that its Sharpe ratio is above a given threshold?". Obviously, the main assumption is the returns will continue displaying the same statistical properties out-of-sample. For example, if the input contains fifty observations and the Minimum Track Record is forty, then for the next ten observations the relevant measures (sharpe ratio, skewness and kyrtosis) need to remain the same as the input so to achieve statistical significance after exactly ten time points.
Usage
MinTrackRecord(
R = NULL,
Rf = 0,
refSR,
p = 0.95,
weights = NULL,
n = NULL,
sr = NULL,
sk = NULL,
kr = NULL,
ignore_skewness = FALSE,
ignore_kurtosis = TRUE
)Arguments
- R
an xts, vector, matrix, data frame, timeSeries or zoo object of the returns input
- Rf
the risk free rate
- refSR
a single value or a vector when R is multicolumn. It defines the reference Sharpe Ratio and should be in the same periodicity as the returns (non-annualized).
- p
the confidence level
- weights
(if R is multicolumn and the underlying assets form a portfolio) the portfolio weights
- n
(if R is NULL) the track record length of the returns
- sr
(if R is NULL) the sharpe ratio of the returns
- sk
(if R is NULL) the skewness of the returns
- kr
(if R is NULL) the kurtosis of the returns
- ignore_skewness
If TRUE, it ignores the effects of skewness in the calculations
- ignore_kurtosis
If TRUE, it ignores the effects of kurtosis in the calculations
Value
A list containing the below
min_TRL: The minimum track record length value (periodicity follows R)
IS_SR_SIGNIFICANT: TRUE if the sharpe ratio is statistically significant, FALSE otherwise
num_of_extra_obs_needed: If the sharpe ratio is not statistically significant, how many more observations are needed so as to achieve this
References
Bailey, David H. and Lopez de Prado, Marcos, The Sharpe Ratio Efficient Frontier (July 1, 2012). Journal of Risk, Vol. 15, No. 2, Winter 2012/13
Examples
data(edhec)
MinTrackRecord(edhec[,1],refSR = 0.23)
#> $min_TRL
#> Convertible Arbitrage (SR > 0.23 )
#> Minimum Track Record Length (p= 95 %): 397.5894
#>
#> $IS_SR_SIGNIFICANT
#> [1] FALSE
#>
#> $num_of_extra_obs_needed
#> [1] 105
#>
MinTrackRecord(refSR = 1/12^0.5,Rf = 0,p=0.95,sr = 2/12^0.5,sk=-0.72,kr=5.78,n=59)
#> $min_TRL
#> [1] 52.37369
#>
#> $IS_SR_SIGNIFICANT
#> [1] TRUE
#>
#> $num_of_extra_obs_needed
#> [1] 0
#>
### Higher moments are data intensive, kurtosis shouldn't be used for short timeseries
MinTrackRecord(edhec[,1:2],refSR = c(0.28,0.24), ignore_skewness = FALSE, ignore_kurtosis = FALSE)
#> Warning: The Reference Sharpe Ratio greater than the Observed Sharpe Ratio for the returns of: CTA Global
#> $min_TRL
#> [1] 1583.033
#>
#> $IS_SR_SIGNIFICANT
#> [1] FALSE
#>
#> $num_of_extra_obs_needed
#> [1] 1291
#>
MinTrackRecord(edhec[,1:2],refSR = c(0.28,0.24), ignore_skewness = FALSE, ignore_kurtosis = TRUE)
#> Warning: The Reference Sharpe Ratio greater than the Observed Sharpe Ratio for the returns of: CTA Global
#> $min_TRL
#> [1] 1233.385
#>
#> $IS_SR_SIGNIFICANT
#> [1] FALSE
#>
#> $num_of_extra_obs_needed
#> [1] 941
#>
MinTrackRecord(edhec[,1:2],refSR = c(0.28,0.24), ignore_skewness = TRUE, ignore_kurtosis = TRUE)
#> Warning: The Reference Sharpe Ratio greater than the Observed Sharpe Ratio for the returns of: CTA Global
#> $min_TRL
#> [1] 668.2947
#>
#> $IS_SR_SIGNIFICANT
#> [1] FALSE
#>
#> $num_of_extra_obs_needed
#> [1] 376
#>
MinTrackRecord(edhec[,1:2],refSR = 0.26,weights = c(0.5,0.5),
ignore_skewness = FALSE, ignore_kurtosis = FALSE)
#> $min_TRL
#> portfolio.returns (SR > 0.26 )
#> Minimum Track Record Length (p= 95 %): 275.0956
#>
#> $IS_SR_SIGNIFICANT
#> [1] TRUE
#>
#> $num_of_extra_obs_needed
#> [1] 0
#>