Friday, August 26, 2016

R 에 거래 전략 백 테스팅






+

이는 Excel 및 R 시리즈의 백 테스팅에서 세 번째 게시물입니다 그리고 4 데미안 Excel에서 간단한 전략을 backtest하는 방법에 대한 자신의 게시물에 설명 된 단계를 따릅니다 R. 에서 간단한 전략을 backtest하는 방법을 보여줍니다. 1 단계 : quantmod의 getSymbols의 기능은 야후 금융에서 매일 데이터를 사용할 수있는 경우이 단계가 쉽게 데이터를 가져옵니다. (FRED, 구글, OANDA, R 등 파일, 데이터베이스, 저장) 다른 소스에서 데이터를 가져하는 (하지 엄격한 의미에서) 방법도 있습니다. 당신은 또한 당신이 사용하는 특정 공급 업체에 대한 사용자 정의 함수를 작성하는 템플릿으로 사용할 수 있습니다. quantmod ISN (t)가 이미 사용 quantmod 패키지 (로드 TTR, XTS 및 동물원) 야후에서 SPX의 데이터를 가져 (getSymbols는 XTS 개체를 반환) 2 단계 설치 한 경우 아래의 명령을 실행하십시오 TTR 패키지 지표의 다수가 포함 된 표시를 만듭니다. 지표는 쉽게 창조적이고 틀에 얽매이지 않는 방법으로 그들을 결합 할 수 있도록 기록됩니다. R-단조에 개정 (106)를 시작으로, TTR은 DVI 표시가 있습니다. 이 거래 규칙이 간단하기 때문에 거래 규칙을 구축 - 의 DVI 0.5과 짧은 100 otherwise - 미만이면 우리가 긴 100 재 - DVI 표시 DVI를 계산 DVI (CL (GSPC)) CL ()는 종가 열 3 단계 추출 - 그것은이 한 줄에 쓸 수 있습니다. 더 정교한 규칙 및 / 또는 위치 사이징뿐만 아니라 수행, 하지만 더 많은 코드를 필요로 할 수 있습니다 (위치 ​​크기 조정과 RSI (2) 더 복잡한 위치 크기 규칙의 예입니다). 또한, 신호 벡터 모양 미리 바이어스를 방지하는 지연된 것을 알 수 있습니다. 신호를 생성 : (긴 (짧은) DVI (위)가 0.5 이하의 경우) 그래서 어제의 신호는 0.5, 1, -1)) 4 단계 시그마 오늘의 반환에 적용되는 지상 (Lag) : 데미안들과 거래 규칙 / 주식 곡선을 예를 들어, 아래의 코드이며 마찰 미끄러짐을 고려하지 않는 단순화 된 접근법이다. 아래 코드는 오늘의 비율 리턴을 받아 어제의 신호 / 위치 크기를 곱합니다 (항상 / - 이 예에서는 100). 또한 시스템은 엑셀 파일의 결과가 일치로 복귀하여 부분 집합. 신호 기반의 반환 RET를 계산 - ROC (CL (GSPC)) SIG의 부분 집합이 Excel 파일 RET의 데이터를 일치하도록 반환 - RET를 5 단계 2009-06-02 / 2010-09-07 : 데미안은 평가의 중요성을 언급 평가 전략의 성능 당신의 병법. 다행히 R 사용자의 경우 PerformanceAnalytics 패키지이 쉽게 수 있습니다. 몇 줄의 코드로 우리는, 드로, 하강 위험 및 성능 요약을 볼 수 있습니다. 삭감 통계 단점 위험의 테이블 차트 지분 곡선, 매일 성능, R. 에서 간단한 전략을 백 테스팅에, 그것은 당신이 경우 피드백을 위협 남겨주세요 하였다 t가 년후 모든이야, 드로 추정을 만들 보여주는 테이블을 만들 PerformanceAnalytics 패키지를 사용 R 엑셀에서 백 테스팅을 이동하고에 끊었 다시 무언가가 S 또는 당신이 멋진 팁을 재 당신이 공유하고 싶습니다. 백 테스팅 : 당신이 한 블록에 복사 / 모든 붙여 넣기 할 수 있도록하려면 다음은 위의 게시물에 코드의 간결 버전이야 과거 백 테스팅을 해석하는 것은 효과적인 트레이딩 시스템 개발의 핵심 구성 요소입니다. 이것은 주어진 전략에 의해 정의 된 규칙을 사용하여 과거에 발생한 것 이력 데이터, 거래와 함께 재구성함으로써 달성된다. 결과는 전략의 효과를 측정하는 데 사용할 수있는 통계 정보를 제공한다. 이 데이터를 사용하여, 상인은 최적화하고 그들의 전략을 개선, 기술적 또는 이론적 결함을 발견하고 실제 시장에 적용하기 전에 전략에 대한 자신감을 얻을 수 있습니다. 기본적인 이론은 과거에 잘 작동하는 전략은 미래에 잘 작동 할 가능성이 있는지, 그리고 반대로 과거 부진 어떤 전략은 미래에 제대로 수행 할 가능성이있다. 이 문서에서는 응용 프로그램을 얻을 수있다 데이터의 종류, backtest하는 데 사용되며, 이 데이터와 백 테스팅이 주어진 시스템에 대한 중요한 통계의 의견을 충분히 제공 할 수있는 도구를 사용하도록 설정하는 방법을 무엇인지 살펴 봅니다. 일부 범용 백 테스팅 통계는 다음과 같습니다 순이익 또는 손실 - 인터넷 백분율 손익을. 시간 프레임 - 테스트 ING가 발생한 과거 날짜. 우주 - backtest에 포함 된 주식. 변동성을 측정 - 최대 비율의 상승과 하락. 평균 - 비율 평균 이득 및 평균 손실은 평균 막대를 개최했다. 노출 - 자본의 백분율 (시장 또는 노출) 투자했다. 비율 - 승 - 투 - 손실 비율. 연간 수익 - 년 넘게 백분율 돌아갑니다. 위험 조정 수익 - 위험의 함수로 백분율 돌아갑니다. 일반적으로 백 테스팅 소프트웨어는 중요한 두 개의 화면을 제공합니다. 첫 번째는 백 테스팅에 대한 설정을 사용자 정의 할 수있는 상인을 할 수 있습니다. 이러한 사용자 지정 시간에서 수수료 비용 모두를 포함한다. 여기 AmiBroker 이러한 화면의 예입니다 : 두 번째 화면은 실제 백 테스팅 결과 보고서입니다. 위에서 언급 한 모든 통계를 확인할 수있는 곳이다. 다시 말하지만, 여기 AmiBroker이 화면의 예입니다 : 일반적으로 대부분의 거래 소프트웨어 비슷한 요소가 포함되어 있습니다. 일부 하이 엔드 소프트웨어 프로그램은 자동 위치 크기 조정, 최적화 및 기타 자세한-고급 기능을 수행 할 수있는 추가 기능을 포함한다. 10 계명은 거래 전략을 백 테스팅하는 경우에 상인이주의 여러 가지 요소가 있습니다. 주어진 전략을 시험 하였다 된 시간 프레임에서 계정에 폭 넓은 시장 동향을 가지고 다음은 백 테스팅을하는 동안 기억해야 할 10 개의 가장 중요한 것들의 목록입니다. 전략은 1999-2000에서만 backtested 인 경우 예를 들어, 곰 시장에서 잘 지내지 않을 수 있습니다. 종종 시장 상황의 여러 가지 유형을 포함 긴 시간 프레임을 통해 backtest하는 것이 좋습니다. 계정에 백 테스팅가 발생한 우주를 가져 가라. 넓은 시장 시스템 기술 주식으로 구성된 우주와 시험 예를 들어, 서로 다른 분야에서 잘하지 못할 수 있습니다. 전략은 주식의 특정 장르를 대상으로하는 경우 일반적으로 해당 장르에 우주를 제한하지만, 다른 모든 경우에, 테스트 목적으로 큰 우주를 유지한다. 변동성 조치는 무역 시스템 개발에 고려하는 것이 매우 중요합니다. 이것은 그들의 주식이 특정 지점 아래로 떨어질 경우 마진 콜을 실시 활용 계정, 특히 사실이다. 상인은 위험을 줄이고에서 주어진 품절 쉽게 전환을 가능하게하기 위해 변동성이 낮게 유지하기 위해 노력해야한다. 지지 바의 평균 수는 거래 시스템을 개발할 때 시청하는 것도 매우 중요하다. 대부분의 백 테스팅 소프트웨어가 최종 계산에 수수료 비용을 포함하지만, 그건 당신이이 통계를 무시해야 의미하지 않는다. 가능하면 수수료 비용을 절감하고, 전체 수익을 향상시킬 수 있습니다 개최 바의 평균 개수를 제기. 노출은 양날의 검이다. 노출이 낮은 이익 또는 낮은 손실을 의미한다 감소하면서 증가 된 노출, 높은 수익 이상 손실로 이어질 수 있습니다. 하지만, 일반적으로는 위험을 줄이고 및 소정의 품절 쉽게 전환 할 수 있도록하기 위해 (70) 아래에 노출을 유지하는 것이 좋다. 는 WINS 대 손실 비율과 함께 평균 이득 / 손실 통계는 최적의 위치 크기와 켈리 기준 등의 기술을 사용하여 자금 관리를 결정하는 데 유용 할 수 있습니다. (돈 관리는 켈리 기준 사용을 참조하십시오.) 상인이 더 큰 위치를 가지고 평균 이익을 증가시키고 자신의 승리 - 투 - 손실 비율을 증가시킴으로써 수수료 비용을 줄일 수 있습니다. 그것은 다른 투자 장소에 대한 벤치 마크 시스템의 반환에 도구로 사용되기 때문에 연간 수익률은 중요하다. 전체 연간 수익을보고, 또한 계정으로 증가 또는 감소 위험을 감수 할뿐만 아니라 중요합니다. 이 다양한 위험 요소를 차지 위험 조정 수익률을보고 할 수 있습니다. 무역 시스템을 채택하기 전에 작거나 위험에 다른 모든 투자 장소를 능가해야합니다. 사용자 정의를 백 테스팅하는 것은 매우 중요합니다. 대부분의 백 테스팅 응용 프로그램은 수수료 금액 라운드 (또는 부분) 부지 크기, (뒤) 크기, 여백 요구 사항, 금리, 슬립 가정, 위치 크기 규칙, 같은 바 출구 규칙을 체크 중지 설정 등을위한 입력을 가지고있다. T O를 가장 정확한 백 테스팅 결과를 얻을, 나는 t 시스템이 라이브가 될 때 사용되는 브로커를 모방하기 위해 이러한 설정을 조정하는 것이 중요합니다. 백 테스팅은 때때로을 통해 최적화로 알려진 뭔가가 발생할 수 있습니다. 이것은 성능 결과는 더 이상 미래의 정확한 없는지 과거 너무 높게 조정되는 조건이다. 일반적으로 모든 주식, 또는 대상 주식의 선택 세트에 적용하고, 규칙이 더 이상 이해할 수 작성자가 있다는 정도에 최적화되지 않은 규칙을 구현하는 것이 좋습니다. 백 테스트는 항상 주어진 거래 시스템의 유효성을 측정하는 가장 정확한 방법이 아니다. 때때로 과거에 잘 실행 전략은 본에서 잘하지 못한다. 과거의 실적이 미래의 결과를 보장하지 않습니다. 전략은 여전히​​ 실제로 적용된다는 것을 확인하기 위해 라이브 가기 전에 성공적으로 backtested되었습니다 시스템 종이 무역을해야합니다. 결론 백 테스팅는 무역 시스템을 개발의 가장 중요한 측면 중 하나입니다. 생성 제대로 해석하면, 상인 최적화하고 그들의 전략을 개선, 기술적 또는 이론적 결함을 찾을뿐만 아니라 실제 시장에 적용하기 전에 전략에 대한 자신감을 얻을 수 있습니다. 자원 Tradecision (tradecision) - 하이 엔드 트레이딩 시스템 개발 AmiBroker (amibroker) - 예산 트레이딩 시스템 개발. 우리는 이전 게시물에서 R. 의 백 테스팅 기능을 탐험겠다 R의 전략을 Backtest하기 위해 우리는 어떻게 연관 규칙라는 데이터 마이닝의 하위 집합에서 기계 학습 알고리즘과 기술을 사용하여 USD / CAD에 대한 몇 가지 간단한 항목 기회를 개발 배우기. 이 게시물에서 우리는 이전의 게시물에서 우리의 규칙을 사용하고 테이크 이익을 구현하는 R에서 전체 backtest을하고 손실을 중지하는 방법을 모색 할 것입니다. backtest 설정은 우리의 데이타에서 4 시간 막대를 구축하고, t는보다 세부적인 전망을 아무튼 : 참고 :의 오른쪽에서 다이빙을 할 수 있습니다. CAGR (연평균 성장률)은 매년 균등 분할로 성장을 원활하게 의미 연간 비율 이득 / 손실이다. 우리의 시험 이었기 때문에 이상 우리는 정지 손실을 추가하여 성능을 개선하고 이익을 취할 수있는 경우의 보자. 그냥 정지 손실로 성능이 내려 갔다. 그들은 복구 할 수 있습니다 전에 우리는 우리의 거래 꺼내지고 것 같습니다. 우리의 이익에 고정하기 위해, s는 가서 테이크 이익을 구현할 수 있습니다. 테이크 이익과 우리의 이익에 잠금 약간 있지만 크게 성능을 향상시켰다. S는 정지 손실 및 테이크 이익을 모두 통합 할 수 있습니다. 지금의 그냥 정지 손실, 단지 테이크 이익 및 테이크 정지 손실과 이익을 모두베이스 라인 롱 쇼트 전략을 비교 할 수 있습니다. 지금 당신은 당신이 당신의 자신의 개인적인 위험 매개 변수와 자신의 규칙을 사용하여 따라 다른 값을 데이터로 놀러 및 테스트하는 것이 좋습니다, 테이크 이익을 추가하고 손실을 중지하는 방법을 알고있다. 비록 강력한 알고리즘과 정교한 도구로, 성공적인 전략을 구축하는 것이 곤란하다. 모든 좋은 생각, 우리는 더 많은 나쁜 것들을 경향이있다. 당신은 좋은 사람을 얻을 때까지 올바른 도구와 지식으로 무장, 당신은 효율적으로 아이디어를 테스트 할 수 있습니다. 우리는 TRAIDE에서이 프로세스를 간소화했다. 우리는 당신이 그들이 당신의 과거 데이터를 통해 수행 한 것입니다 방법을 참조 패턴 데이터에있는 위치를 확인하고 실시간으로 할 수있는 테스트 인프라를 개발했습니다. 우리는 2 주 기술 지표와 외환 시장에서 7 주요 쌍에 대한 TRAIDE을 발표 할 것이다. 소프트웨어를 테스트하고 피드백을 제공에 관심이 있다면, 정보 inovancetech으로 이메일을 보내 주시기 바랍니다. 우리는 가능한 50 지점이 있습니다.




No comments:

Post a Comment