리소스 로딩... 로딩...

5.1 백테스팅의 의미와 함정

저자:선함, 2019-06-25 13:38:05, 업데이트: 2023-11-09 20:44:21

img

요약

백테스팅은 양적 거래와 전통적인 거래의 가장 큰 차이점이다. 역사에서 일어난 실제 시장 데이터에 따르면 시뮬레이션 전략 신호는 거래를 신속하게 유발하고 일치시키고 성과 보고서 및 기타 데이터를 일정 기간 동안 얻습니다. 국내 및 해외 주식, 재화 선물, 외환 및 기타 시장에서 백테스팅은 전략 개발의 가장 중요한 구성 요소입니다.

백테스팅의 의미

이전 장에서, 우리는 주류 프로그래밍 언어의 기초를 배웠고, 간단한 거래 전략을 작성하는 데 이러한 프로그래밍 기초를 사용하는 방법을 가르쳐 주었다. 도로는 절반 이상 진행되었다고 말할 수 있습니다. 그러나, 전략이 작성되면, 그것은 여전히 실제 시장 환경과 긴 거리를 가지고 있습니다. 또한 전략이 모델 콘텐츠를 완전히 구현하고 원활하게 실행할 수 있을 때까지 지속적인 백테스팅 디버깅 백테스팅 디버깅 등이 필요합니다.

양적 거래 논리의 관점에서, 거래 전략은 실제로 시장에 대한 일련의 인식과 가정에 기반합니다. 백테스팅은 이러한 가정이 안정적인지 아닌지를 결정할 수 있습니다. 역사적 불안정한 시기에, 그것은 어떤 종류의 손실을 가져올 수 있습니까? 또한 이러한 손실에 대한 의사결정을 방지하기 위해.

img

또한, 양적 거래 운영의 관점에서, 역 테스트는 미래 기능, 슬리핑 가격, 다단계 적합성 등과 같은 전략 논리의 버그를 탐지하는 데 도움이 될 수 있습니다. 전략이 실제 시장 거래에 사용될 수 있다는 신뢰할 수있는 증거를 제공합니다.

  • 거래 신호의 정확성을 확인합니다.

  • 거래 논리와 아이디어가 실행 가능하다는 것을 확인하세요.

  • 거래 시스템의 결함을 발견하고 원래 전략을 개선합니다.

그래서, 백테스팅의 의미는 가능한 한 진실한 거래 프로세스를 수행하고, 역사적 데이터의 유효성을 확인하고, 잘못된 전략에 대한 고가의 실수를 피하고, 거래 전략을 필터링, 개선 및 최적화하는 데 도움이됩니다.

역검사 함정

  • 트레이딩 신호가 불안정하다는 함정

거래 전략은 백테스팅 기간 동안 정적 역사 데이터에 기초하지만 실제 거래의 데이터는 동적입니다. 예를 들어: 가장 높은 가격이 어제의 종료 가격보다 크다면 긴 포지션을 열십시오. 이 오픈 포지션 조건은 실제 시장에서 K 라인이 완료되지 않은 경우 가장 높은 가격이 동적이며 거래 신호가 앞뒤로 깜박일 가능성이 있습니다. 백테스팅 기간 동안 백테스팅 엔진은 시뮬레이션 및 합성 할 수있는 정적 역사 데이터를 기반으로합니다.

  • 미래 함수의 함정

미래 함수는 미래 가격을 사용합니다. 이는 현재 조건이 미래에 변경 될 수 있음을 의미합니다. 동일한 미래 함수는 또한 지크자그 지표와 같은 거래 신호가 불안정하게 될 수 있습니다.

아래와 같이: 지그자그 지표 함수는 최고와 최저의 전환점을 나타냅니다. 최신 실시간 가격에 따라 자체 값을 조정할 수 있지만 현재 가격이 변경되면 지그자그 전환 함수의 결과도 변경됩니다. 이러한 미래 기능과 함께이 지표를 사용하면 현재 주문 신호가 설정되고 배치 될 수 있지만이 신호는 나중에 정량화되지 않을 수 있습니다.

img

  • 값을 훔치는 함정

이른바 훔치기 가격 행동은 과거 가격을 사용하여 거래하는 것을 의미한다. 예를 들어: 가장 높은 가격이 특정 고정 가격보다 크면 개시 가격을 사용하여 포지션을 개척한다. 이 개시 포지션 조건은 훔치기 가격이다. 왜냐하면 실제 시장에서 가장 높은 가격이 특정 가격보다 크면 가격이 특정 거리의 개시 가격보다 높을 수 있고, 이후 개시 가격을 사용하여 포지션을 개척하는 것은 불가능하기 때문이다. 그러나 백테스팅 환경에서 개시 가격으로 포지션을 가설적으로 개척할 수 있다.

또 다른 경우도 있습니다. 만약 가격 격차가 전략에 의해 설정된 고정 가격을 뛰어넘는 경우, 백테스팅 환경에서 거래 신호가 발생하고 실행될 수 있습니다. 그러나 실제 시장에서는 분명히 실행될 수 없습니다.

  • 불가능한 거래 가격의 함정

'불가능한 거래 가격'은 여러 가지로 나눌 수 있습니다.

첫 번째 유형: 실제 시장에서 일부 거래소는 최대 가격 상승과 하락 제한을 매일 제한합니다. 그러나 백테스팅 환경에서 명령을 실행 할 수 있습니다.

두 번째: 교환 주문 일치 메커니즘, 가격 우선 순위와 시간 우선 순위입니다. 시장 주문 깊이의 일부 종류는 종종 실행을 기다리고있는 많은 수의 주문을 가지고 있습니다. 실제 시장에서, 당신은 실행하기 위해 배치하기 전에 주문을 기다려야합니다. 때로는 당신의 주문이 실행되지 않을 것입니다. 하지만 백테스팅 환경에서, 대기 중인 주문은 기다리지 않고 모든 가격에 실행됩니다.

세 번째: 중재 전략의 경우, 백테스팅의 이익은 일반적으로 매우 높습니다. 왜냐하면 백테스팅 작업이 모든 스프레드 가격을 잡았다고 가정 할 때마다. 실제 상황에서는 대부분의 가격을 실행하는 것이 불가능하거나 때로는 하나의 방향 또는 거래 행동의 하나의 거래 목표가 실행됩니다. 일반적으로 유리한 방향 또는 거래 목표가 먼저 실행 될 것이라는 것은 거의 확실합니다. 그런 다음 즉시 대립 방향 또는 다양한 중재 전략 주문을 실행하려고 노력해야합니다. 이러한 짧은 지연 기간에도 불구하고이 거래 기회의 스프레드는 1 또는 2 가격 포인트 이상 비용이 들 수 있지만 전체 스프레드 중재 전략은 수익의 가격 포인트가 거의 없습니다. 이러한 상황은 시뮬레이션 환경에서 백테스팅이 매우 어렵습니다. 실제 이익은 백테스팅 결과에서 멀리 떨어져 있습니다.

네 번째: 블랙 스완 이벤트. 아래 그림에서 빨간색 원을 보여주는 것처럼, 외환에서 스위스 프랑 블랙 스완 이벤트, 비록 표면에는 개시 가격, 최고 가격, 최저 가격 및 폐쇄 가격이 있습니다. 사실, 그러한 극단적인 시장 상황은 대부분의 부분이 진공이라는 k 라인을 가지고 있습니다. 많은 스톱-손실 주문이 스탬프 이벤트를 유발합니다. 유동성은 거의 0 이므로 주문을 실행하는 것은 매우 어렵습니다. 그러나 백테스팅 환경에서 스톱 손실은 가능합니다.

img

  • 오버피팅의 함정

제가 다음 사진을 볼 때마다 제 마음과 마음이 모두 놀랐습니다. 이 그림은 우리에게 진실한 의미를 보여줍니다.

img

양적 거래의 경우 백테스팅은 역사적 데이터에 기초하지만 역사적 데이터의 표본은 제한적입니다. 거래 전략의 매개 변수가 너무 많거나 거래 논리가 너무 복잡하다면 거래 전략은 역사적 데이터에 너무 많이 적응합니다.

양적 전략의 모델링 프로세스는 본질적으로 많은 수의 겉으로 보기에는 무작위 데이터에서 지역 비 무작위 데이터를 찾는 과정입니다. 통계적 지식에 의존하지 않으면 과도한 적합성의 함정에 빠지기 쉽습니다.

그래서 자신을 속이지 마세요. 샘플 밖에서 나쁜 성능 데이터를 발견하면, model가 작동하지 않는다는 것을 인정하지 않거나 자비를 느끼지 말고, 샘플 데이터를 외부에서도 내부만큼 잘 수행 할 때까지 최적화를 계속하십시오. 그것은 결국 당신의 실제 돈을 손상시킬 것입니다.

  • 생존자 편견의 함정

월스트리트는 유명한 농담을 가지고 있습니다. 투자에 참여한 시장에 원숭이 1,000 마리가 있다고 가정하십시오. 첫 해에 500 마리가 시장에 손실되었습니다. 두 번째 해의 절반 동안 250 마리가 남아 있습니다. 세 번째 해의 말에 125 마리가 남아 있습니다.

img

9년째, 마지막 원숭이가 남았습니다. 그리고 그 원숭이를 쳐다봤습니다. 그 원숭이를 더 많이 바라보면, 그 얼굴이 더 익숙해집니다. 마침내 금융 잡지의 표지를 보고 소리쳤습니다. "이거 워렌 버핏인가요?"

이것은 단지 농담이지만, 당신은 여전히 실제 세계 상황에 지도를 만들 수 있습니다. 예를 들어, 1000 개의 펀드 매니저가 있다면, 10 년 후에, 약 10 명의 펀드 매니저는 10 년 연속 시장보다 더 좋은 성과를 낼 것입니다. 이것은 무작위 행운과 결정으로 인해 발생할 수 있습니다. 이러한 펀드 매니저의 능력은 아무 관련이 없습니다.

아래의 백테스트 보고서처럼 대부분의 투자자는 왼쪽의 수치를 선택합니다. 이는 상당한 리트랙션 없이 매우 탄탄한 성과를 가지고 있습니다.

img

하지만 오른쪽에서 보여드린 것처럼 실제 상황입니다. 왼쪽 곡선은 이 많은 백테스트 중 가장 좋은 곡선입니다. 즉, 왼쪽 상황보다 훨씬 더 나쁜 성능이 있습니다.

  • 영향 비용의 함정

실제 거래 환경에서 가격은 항상 변동합니다. 거래 기회에 대해 낙관적이면 주문을 할 때 가격이 변경되었을 수 있습니다. 따라서 주관적 거래 또는 양적 거래에서 미끄러짐 문제는 피할 수 없습니다.

그러나 백테스팅은 정적 데이터에 기반하여 실제 거래 환경을 시뮬레이션하는 것이 어렵습니다. 예를 들어: 주문 가격은 구매하기 위해 1050이지만 실제 거래 가격은 1051 일 수 있습니다. 이러한 현상에 대한 많은 상황이 있습니다. 예를 들어: 극단적인 가격 움직임에서 유동성 진공, 네트워크 지연, 하드웨어 및 소프트웨어 시스템 지연, 서버 응답 지연 등.

미끄러지지 않는 역시험

img

위와 같이, 미끄러짐없이 백테스트 보고, 이익 곡선이 좋은 것처럼 보이지만, 백테스트와 실제 시장에서 거래 사이의 차이가 있습니다. 따라서, 백테스트 동안이 오류를 줄이기 위해, 우리는 두 점 미끄러짐을 추가, 증가하거나 판매 가격을 감소.

미끄러짐과 백테스트

img

위와 같이 동일한 전략에 2점 미끄러짐을 추가하면 미끄러짐과 미끄러짐이없는 백테스팅 결과는 매우 다르므로이 전략을 개선하거나 포기해야합니다. 특히 상대적으로 높은 거래 빈도의 전략, 백테스팅 중에 1 ~ 2점 미끄러짐을 추가하면 백테스팅을 실제 거래 환경에 더 가깝게 만들 수 있습니다.

요약하면

어떤 사람들은 질문 할 수 있습니다, 양적 거래에 많은 문제가있을 수 있기 때문에, 내 전략이 괜찮다는 것을 어떻게 증명할 수 있습니까? 대답은 간단합니다, 우리는 먼저 실제 돈을 사용하기 전에 이 전략에 의해 시뮬레이션 거래를 해야 합니다. 거래 가격과 거래 시뮬레이션 상황이 전략 논리와 거의 같다면, 적어도 전략 논리가 문제가 없다는 것을 증명합니다.

어떤 경우에도, 경험이 많은 거래 시스템 개발자에게는 백테스팅이 필수적입니다. 왜냐하면 그것은 전략 아이디어가 역사적 데이터에서 검증 될 수 있는지 여부를 알려 줄 수 있기 때문입니다. 그러나 많은 경우 백테스팅은 미래가 수익성이있을 것이라는 것을 의미하지는 않습니다. 백테스팅에 너무 많은 구멍이 있기 때문에 값을 지불 한 후에 이해 할 것입니다. 그리고 이러한 교훈은 모두 실제 돈으로 쌓여 있습니다. 이 기사는 주로 오차와 함정을 줄이기위한 것입니다.

학교 밖 운동

  1. 지나치게 적합 함 은 무엇 이며, 어떻게 피할 수 있습니까?

  2. 실생활에서 '생존자 편견'의 예는 무엇일까요?


관련

더 많은