알고리즘 트레이딩 전략의 성공적인 백테스팅 - II부

저자:선함, 2019-03-21 14:09:21, 업데이트:

성공적인 백테스트에 대한 첫 번째 기사에서는 백테스트 성능에 영향을 미치는 통계 및 행동 편차에 대해 논의했습니다. 우리는 또한 엑셀, MATLAB, 파이썬, R 및 C ++를 포함한 백테스트를위한 소프트웨어 패키지를 논의했습니다. 이 기사에서는 거래 비용을 통합하는 방법과 주문 유형 및 데이터 빈도와 같은 백테스트 엔진을 만들 때 필요한 특정 결정을 고려할 것입니다.

거래 비용

거래 모델을 구현할 때 가장 흔한 초보자 실수 중 하나는 전략에 대한 거래 비용의 영향을 무시 (또는 크게 과소평가) 하는 것입니다. 거래 비용이 브로커 수수료를 반영한다고 가정하는 경우가 많지만 실제로 거래 모델에서 비용이 축적 될 수있는 다른 방법이 있습니다. 고려해야 할 세 가지 주요 유형의 비용은 다음과 같습니다.

수수료

알고리즘 거래 전략에서 발생하는 가장 직접적인 거래 비용의 형태는 수수료 및 수수료입니다. 모든 전략은 직접 또는 중개 중개자 (중개자) 를 통해 거래소에 접근하는 방법을 필요로합니다. 이러한 서비스는 수수료로 알려진 각 거래에 추가 비용을 부담합니다.

브로커는 일반적으로 많은 서비스를 제공하지만 양적 알고리즘은 실제로 거래소 인프라만을 사용합니다. 따라서 브로커 수수료는 거래당 종종 작습니다. 브로커는 또한 수수료를 부과합니다. 이는 거래를 클리어하고 조정하는 데 발생하는 비용입니다. 이 외에도 지역 또는 국가 정부가 부과하는 세금입니다. 예를 들어 영국에는 주식 거래에 대해 지불 할 인봉 과제가 있습니다. 수수료, 수수료 및 세금이 일반적으로 고정되어 있기 때문에 백테스트 엔진에서 구현하는 것이 비교적 간단합니다.

미끄러짐/지연

슬리퍼지는 거래 시스템이 거래를 결정하는 시점과 거래가 실제로 거래소에 수행되는 시점 사이의 가격의 차이입니다. 슬리퍼지는 거래 비용의 상당한 구성 요소이며 매우 수익성있는 전략과 성능이 좋지 않은 전략의 차이를 만들 수 있습니다. 슬리퍼지는 기본 자산 변동성, 거래 시스템과 거래소 사이의 지연 시간 및 실행 중인 전략의 종류에 따라 작용합니다.

더 높은 변동성을 가진 도구는 움직일 가능성이 더 높고 따라서 신호와 실행 사이의 가격이 크게 다를 수 있습니다. 지연은 신호 생성 및 실행 지점 사이의 시간 차이로 정의됩니다. 더 높은 주파수 전략은 지연 문제에 더 민감하며 이러한 지연에 대한 밀리 초의 개선은 수익성에 대한 모든 차이를 만들 수 있습니다. 전략의 종류도 중요합니다. 모멘텀 시스템은 이미 예측 방향으로 움직이고있는 도구를 구매하려고 시도하기 때문에 평균적으로 미끄러짐에 더 많이 고통받습니다. 이러한 전략이 거래의 반대 방향으로 움직이기 때문에 평균 역전 전략은 정반대의 경우입니다.

시장 영향/자금성

시장 영향은 거래소 (그리고 자산) 의 공급/수요 역동성으로 인해 거래자에게 발생하는 비용이다. 상대적으로 유동하지 않은 자산에 대한 큰 주문은 거래자가 현재 공급의 큰 구성 요소에 액세스해야하기 때문에 시장을 크게 움직일 가능성이 있습니다. 이에 대응하기 위해, 큰 블록 거래는 새로운 유동성이 거래소에 도착할 때 주기적으로 거래되는 더 작은 덩어리로 분해됩니다. 반대로, S&P500 E-Mini 지수 선물 계약과 같은 유동성 높은 도구의 경우, 저용량 거래는 큰 금액으로 현재 가격을 조정할 가능성이 없습니다.

유동성 없는 자산은 더 큰 스프레드로 특징이며, 이는 제한 주문 책상에서의 현재 입찰 가격과 요청 가격의 차이입니다. 이 스프레드는 모든 거래와 관련된 추가 거래 비용입니다. 스프레드는 총 거래 비용의 매우 중요한 구성 요소입니다. 이는 광고 캠페인이 많이 거래되는 도구에 대한 스프레드의 tightness?? 을 표현하는 수많은 영국 스프레드 베팅 회사에서 입증됩니다.

거래 비용 모델

백테스팅 시스템에서 위의 비용을 성공적으로 모델링하기 위해 다양한 수준의 복잡한 거래 모델이 도입되었습니다. 그들은 단순한 평면 모델링에서 비선형 제곱 근사까지 다양합니다. 여기서는 각 모델의 장단점을 설명합니다.

일정한/결정 거래 비용 모델

평면 거래 비용은 거래 비용 모델링의 가장 간단한 형태입니다. 그들은 각 거래와 관련된 고정 비용을 가정합니다. 따라서 그들은 중개 수수료와 수수료의 개념을 가장 잘 나타냅니다. 그들은 미끄러짐 또는 시장 영향과 같은 더 복잡한 행동을 모델링하는 데 매우 정확하지 않습니다. 사실, 그들은 자산 변동성이나 유동성을 전혀 고려하지 않습니다. 그들의 주요 장점은 계산적으로 구현하기가 간단하다는 것입니다. 그러나 그들은 고용 중인 전략에 따라 거래 비용을 크게 과감하거나 과감할 가능성이 있습니다. 따라서 실제로 거의 사용됩니다.

직선적/단위적 직선적/제곱적 거래 비용 모델

더 고급 트랜잭션 비용 모델은 선형 모델로 시작하여 조각별 선형 모델로 이어지고 사각형 모델로 끝납니다. 그들은 최소에서 가장 정확한 스펙트럼에 속하지만 최소에서 가장 큰 구현 노력으로 이루어집니다. 미끄러짐과 시장 영향이 본질적으로 비선형 현상이기 때문에 사각형 함수는 이러한 역학을 모델링하는 데 가장 정확합니다. 사각형 트랜잭션 비용 모델은 구현하기가 훨씬 어렵고 단순 평면 또는 선형 모델보다 계산하는 데 훨씬 더 오래 걸릴 수 있지만 실제로 자주 사용됩니다.

알고리즘 트레이더는 또한 자신의 전략에 대한 실제 역사적인 거래 비용을 더 정확하게 만들기 위해 현재의 거래 모델에 입력으로 사용하려고합니다. 이것은 까다로운 사업이며 종종 변동성, 미끄러짐 및 시장 영향 모델링의 복잡한 영역에 접합니다. 그러나 거래 전략이 짧은 기간 동안 큰 양을 거래하는 경우 발생된 거래 비용의 정확한 추정값이 전략 하단에 상당한 영향을 미칠 수 있으므로 이러한 모델을 연구하는 데 투자하는 것이 가치가 있습니다.

전략 뒷 테스트 실행 문제

트랜잭션 비용은 성공적인 백테스팅 구현의 매우 중요한 측면이지만 전략 성능에 영향을 줄 수있는 다른 많은 문제가 있습니다.

거래 명령의 종류

알고리즘 트레이더가 해야 할 한 가지 선택은 사용 가능한 다른 거래 주문을 어떻게 그리고 언제 사용하느냐이다. 이 선택은 일반적으로 실행 시스템의 영역에 속하지만, 전략 백테스트 성능에 크게 영향을 줄 수 있기 때문에 여기서 고려할 것이다. 수행될 수 있는 두 가지 유형의 주문이 있다. 시장 주문과 제한 주문.

시장 주문은 사용 가능한 가격에 관계없이 즉시 거래를 실행합니다. 따라서 시장 주문으로 실행되는 큰 거래는 종종 반대편의 각 후속 제한 주문이 채워지면서 가격의 혼합을 얻을 수 있습니다. 시장 주문은 잠재적으로 알려지지 않은 비용에도 불구하고 거의 확실하게 채워질 것이기 때문에 공격적인 주문으로 간주됩니다.

제한 주문은 거래가 부분적으로 또는 완전히 완료되지 않을 수 있다는 경고로 거래가 실행될 최악의 가격을 결정하는 전략을 위한 메커니즘을 제공합니다. 제한 주문은 종종 채우지 않기 때문에 수동 주문으로 간주되지만 가격이 보장되는 경우입니다. 개별 거래소의 제한 주문 컬렉션은 제한 주문 책으로 알려져 있으며, 이는 본질적으로 특정 크기와 가격에 구매 및 판매 주문의 줄을 잇습니다.

백테스팅을 할 때 시장 또는 제한 주문을 올바르게 사용하는 효과를 모델링하는 것이 중요합니다. 특히 고 빈도 전략의 경우, 시장 영향과 제한 주문 포크의 영향이 정확하게 모델링되지 않으면 백테스트가 실시간 거래를 크게 능가 할 수 있습니다.

OHLC 데이터 특이성

특히 주식 (주식) 에 대해 오픈-하이-로-클로스 (OHLC) 수치의 형태로 매일 데이터를 사용할 때 백테스팅 전략과 관련된 특정 문제가 있습니다. 유통 알고리즘 트레이더에 대한 매우 일반적인 데이터 소스인 야후 파이낸스가 제공하는 데이터 형태입니다!

값싼 또는 무료 데이터 세트는 생존 편향 (우리는 이미 제 1 부분에서 논의 한) 으로 고통 받지만, 또한 여러 거래소로부터의 복합 가격 피드가 종종 있습니다. 이것은 데이터의 극단적 포인트 (즉 개방, 폐쇄, 높고 낮은) 가 지역 거래소에서 작은 주문으로 인해 외곽 값에 매우 민감하다는 것을 의미합니다. 또한, 이러한 값은 때때로 데이터 세트에서 제거되지 않은 틱 오류가 될 가능성이 더 높습니다.

이것은 당신의 거래 전략이 OHLC 포인트 중 하나를 광범위하게 활용하는 경우, 브로커와 유동성 접근에 따라 주문이 다른 거래소로 라우팅 될 수 있기 때문에 백테스트 성능은 라이브 성능과 다를 수 있음을 의미합니다. 이러한 문제를 해결하는 유일한 방법은 더 저렴한 복합 피드보다는 더 높은 주파수 데이터를 사용하거나 개별 거래소 자체에서 직접 데이터를 얻는 것입니다.

다음 두 기사에서 우리는 백테스트의 성능 측정과 백테스팅 알고리즘의 실제 사례를 고려할 것입니다. 위의 많은 효과들이 포함됩니다.


더 많은