에 감사합니다. applyStrategy
을 보면 루프의 각 심볼이 독립적으로 독립적으로 실행된다는 것을 알 수 있습니다.
for(i in 2:length(pindex)){
#the proper endpoints for each symbol will vary, so we need to get
#them separately, and subset each one
for (symbol in symbols){
#sret<-ret[[portfolio]]
이것은 당신이 어떤 상호 작용 사이의 원하는 때 당신이 원하는 각 기호에 대한 다음 타임 스탬프의 섹션을 통해 루프, 그리고 의미 : 당신은 형태의 중첩 루프를 수행 applyStrategy.rebalancing
을 체크 아웃 할 수 있습니다 기호 (applyStrategy
은 기호에 대해 간단히 수행 한 다음 타임 스탬프 루프로 내부 작업을 수행하므로 상호 작용은 결코 발생하지 않습니다).
처음으로 퀀트 트랫을 사용하기 시작할 때 나는 처음에 같은 좌절감을 나타 냈습니다. 내 솔루션은 applyStrategy.rebalancing
을 수정하여 각 타임 스탬프에 대해 (더 느린) 이중 루프가되고 각 심볼에 걸쳐 내부 루프가됩니다.
예, 즉, 직접 포트폴리오 PL을 정확하게 quantstrat로 계산할 수 없다는 뜻입니다. 따라서 현재 포트폴리오 형평성의 입장 인 개방 포지션과 같은 일은 직접 수행 할 수 없습니다. (하지만 원하는 경우 코드를 수정할 수 있습니다).
왜 기본적으로 quantstrat가 이런 식으로 동작합니까? 저자는 당신에게 좋은 이유를 줄 것입니다. 요컨대, 필자의 견해는 (저자들과 간략한 토론 후) 신호가 예언력을 지니고 있고 전략에서 우위를 점할 수 있다면 나중에 다른 기호와 결합하는 방법에 관계없이 작동한다는 것입니다. quantstrat
은 mktdata와 관련하여 신호가 좋은지 아닌지를 식별하는 것입니다.
논리적으로 시그널이 심볼 레벨 당 좋으면 포트폴리오 레벨에서 신호를 잘 처리 할 수 있습니다 (더 좋지 않은 경우 PL이 더 부드럽습니다). quantstrat의 현재 접근법은 PL 포트폴리오의 모습을 합리적인 근사치로 나타내지 만 진정한 "복리 후생"감각은 아닙니다. 그러기 위해서는 현재 포트폴리오 PL에 따라 직위를 조정해야합니다 (위에서 설명한 것처럼 applyStrategy
에서는 불가능합니다). 기호 당 전략을 실행하는 단순화만으로도 시뮬레이션을 훨씬 빠르게 할 수 있습니다. applyStrategy
에있는 다른 기호와 계속 상호 작용할 수 있지만 다른 기호와 관련된 기호 데이터에 열을 추가하여 추가 할 수 있습니다 (예 : 쌍 거래 등).
최종 결과는 항상 실제 거래가 단순하기 때문에 수익/거래 수익을 매우 정확하게 예측하는 "최고"정확한 백 테스트 결과를 얻으려는 큰 동기는 없습니다.