2017-11-18 21 views
2

비 네트의 관련 코드는 여기에 있으며 페이지에 맞게 약간 변형되어 있으며 쉽게 재현 할 수 있습니다. 시각화를위한 코드가 생략되었습니다. 댓글은 비 네트 저자가 있습니다.시뮬레이트 된 주식은 왜 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

: 데이터가 이런 식으로 변환하는 이유

  • /이 변화의 결과 무엇인가?

  • 이 시뮬레이션 된 데이터에만 필요합니까, 아니면
    도 마찬가지입니다.

답변

0

본인은 R-도움말 메일 링리스트에서이 질문을 게시 다음과 같은 답변을 받았습니다 :

"안녕 조, 센터링 및 재 스케일링은 자신의 예제의 목적을 위해 수행을하고, 또한 sharpe 함수의 정의와 일치하도록합니다. 특히, sharpe 함수는 rf (riskfree) 매개 변수의 기본값이 .03/252 (즉, 연간 3 % 비율이 으로 DAILY 비율로 변환 됨)입니다. , 십진수로 표현됨 즉,이 함수에 대한 다른 인수 x는 일일 0이어야 함을 의미합니다은 10 진수로 표시됩니다.

ANNUAL 평균 MU_A 및 ANNUAL 표준 편차 SIGMA_A (모두 십진수로 표시)와 함께 수익 분포에서 무작위 데이터를 생성하려고한다고 가정합니다. 동등한 일일 반품은 평균 MU_D = MU_A/252 및 표준 편차 SIGMA_D = SIGMA_A/SQRT (252)를 갖습니다.

그는 mu_base라는 이름으로 MU_D를 호출하고 sigma_base라는 이름으로 SIGMA_D를 호출합니다.

그의 루프는 매트릭스의 난수를 각 열 이 평균 MU_D와 표준 편차 SIGMA_D를 갖도록 변환합니다.내가 제대로 이해 해요 경우 내가 backtests보다는 시뮬레이션 수익률의 실제 수익률을 사용 꿔 경우, 내가 필요 "

나는이 함께 따라

"

HTH, 에릭 내 리스크 조정 수익률 척도 (이 경우 샤프 비율)가 내 수익률 (즉, 일일 샤프, 일월 월별 월간 일일 수익률)과 일치하는지 확인하십시오. 실제 수익률에는 보유한 자산 (예 : 평균값과 표준 환율)을 갖기 때문에 모의 수익률이 비 네트에있는 것처럼 수익을 변환 할 필요가 없습니다. 그게 맞습니까? "

+0

나는 패키지 저자에게 전자 메일을 보내어이 설명이 정확하다는 것을 확인했다. –