비 네트의 관련 코드는 여기에 있으며 페이지에 맞게 약간 변형되어 있으며 쉽게 재현 할 수 있습니다. 시각화를위한 코드가 생략되었습니다. 댓글은 비 네트 저자가 있습니다.시뮬레이트 된 주식은 왜 R에서 pbo (백 테스트 오버 피팅의 확률) 패키지의 "pbo"비 네트에서 re-scaled 및 re-centered를 반환합니까?
(전체 네트 : https://cran.r-project.org/web/packages/pbo/vignettes/pbo.html) 여기
library(pbo)
#First, we assemble the trials into an NxT matrix where each column
#represents a trial and each trial has the same length T. This example
#is random data so the backtest should be overfit.`
set.seed(765)
n <- 100
t <- 2400
m <- data.frame(matrix(rnorm(n*t),nrow=t,ncol=n,
dimnames=list(1:t,1:n)), check.names=FALSE)
sr_base <- 0
mu_base <- sr_base/(252.0)
sigma_base <- 1.00/(252.0)**0.5
for (i in 1:n) {
m[,i] = m[,i] * sigma_base/sd(m[,i]) # re-scale
m[,i] = m[,i] + mu_base - mean(m[,i]) # re-center
}
#We can use any performance evaluation function that can work with the
#reassembled sub-matrices during the cross validation iterations.
#Following the original paper we can use the Sharpe ratio as
sharpe <- function(x,rf=0.03/252) {
sr <- apply(x,2,function(col) {
er = col - rf
return(mean(er)/sd(er))
})
return(sr)
}
#Now that we have the trials matrix we can pass it to the pbo function
#for analysis.
my_pbo <- pbo(m,s=8,f=sharpe,threshold=0)
summary(my_pbo)
내가 호기심이 약 해요 부분이다 :
sr_base <- 0
mu_base <- sr_base/(252.0)
sigma_base <- 1.00/(252.0)**0.5
for (i in 1:n) {
m[,i] = m[,i] * sigma_base/sd(m[,i]) # re-scale
m[,i] = m[,i] + mu_base - mean(m[,i]) # re-center
}
왜 for 루프 내에서 변환 된 데이터이며, 다시 이런 종류의 작업을 수행 스케일링 및 리 센터링은 실제 수익으로 수행해야합니까? 아니면 시뮬레이션 된 수익을 실제와 비슷하게 보이게하기 위해 제작자가하는 것입니까?
Google 검색 및 stackoverflow를 통한 검색은 시간의 제곱근에 대한 변동성을 조정하는 것과 관련하여 몇 가지 기사와 게시물을 보았습니다. 그러나 이것은 내가 본 것처럼 보이지 않습니다. 일반적으로 변동성의 단기 (즉, 일일) 측정 값에 시간의 뿌리를 곱하는 작업이 포함되지만 이는 그렇지 않습니다. 또한 패키지의 설명서에는 코드를 다시 조정하고 다시 센터링하는 기능이 포함되어 있지 않습니다. 문서 : 그래서 https://cran.r-project.org/web/packages/pbo/pbo.pdf
: 데이터가 이런 식으로 변환하는 이유
/이 변화의 결과 무엇인가?
이 시뮬레이션 된 데이터에만 필요합니까, 아니면
도 마찬가지입니다.
나는 패키지 저자에게 전자 메일을 보내어이 설명이 정확하다는 것을 확인했다. –