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.
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
)an xts, vector, matrix, data frame, timeSeries or zoo object of the returns input
the risk free rate
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).
the confidence level
(if R is multicolumn and the underlying assets form a portfolio) the portfolio weights
(if R is NULL) the track record length of the returns
(if R is NULL) the sharpe ratio of the returns
(if R is NULL) the skewness of the returns
(if R is NULL) the kurtosis of the returns
If TRUE, it ignores the effects of skewness in the calculations
If TRUE, it ignores the effects of kurtosis in the calculations
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
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
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: NA
#> $min_TRL
#> [1] 1583.033
#>
#> $IS_SR_SIGNIFICANT
#> [1] FALSE FALSE
#>
#> $num_of_extra_obs_needed
#> [1] 1291 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: NA
#> $min_TRL
#> [1] 1233.385 1233.385
#>
#> $IS_SR_SIGNIFICANT
#> [1] FALSE FALSE
#>
#> $num_of_extra_obs_needed
#> [1] 941 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: NA
#> $min_TRL
#> [1] 668.2947 668.2947
#>
#> $IS_SR_SIGNIFICANT
#> [1] FALSE FALSE
#>
#> $num_of_extra_obs_needed
#> [1] 376 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
#>