2017-10-28 20 views
1

포트폴리오에 여러 개의 심볼이 있지만 블로터 트레이딩 전략을 실행하는 경우 실행 된 마지막 심볼에 대한 최종 자산 만 업데이트됩니다. 주식이 각 거래를 업데이트하는 방법을 살펴보면 새로운 기호가 도입되면 형평성이 초기 (1mil)에 설정된 원래 값으로 돌아 간다.포트폴리오의 최종 형평 (및 기타 거래 통계) 업데이트 문제

updatePortf(portfolioName,Symbols=symbolName, Dates=currentDate) 
updateAcct(accountName,Dates=currentDate) 
updateEndEq(accountName, currentDate) 

왜 이런 일이 :

이 포트폴리오는 월별로 상징 월 업데이트지고 어떻게?

이 좋은 질문입니다 내 질문은 의미가 희망 사전

답변

0

에 감사합니다. 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에있는 다른 기호와 계속 상호 작용할 수 있지만 다른 기호와 관련된 기호 데이터에 열을 추가하여 추가 할 수 있습니다 (예 : 쌍 거래 등).

최종 결과는 항상 실제 거래가 단순하기 때문에 수익/거래 수익을 매우 정확하게 예측하는 "최고"정확한 백 테스트 결과를 얻으려는 큰 동기는 없습니다.