3
집중하다
1444
수행원

FMZ Inventor 양적 플랫폼 백테스팅 지침

만든 날짜: 2019-07-06 12:15:50, 업데이트 날짜: 2023-10-25 20:00:15
comments   22
hits   9711

FMZ Inventor 양적 플랫폼 백테스팅 지침

대부분의 전략은 실행하기 전에 검증을 위해 백테스트를 거쳐야 합니다. FMZ는 일부 유형의 디지털 통화 현물, 선물 및 영구 계약과 모든 유형의 상품 선물을 지원합니다. 하지만 Inventor Quantitative Platform의 백테스팅 메커니즘은 일반적인 온바 백테스팅과 다르기 때문에 많은 초보자들에게 혼란을 야기했습니다. 이 글에서는 백테스팅에 관한 몇 가지 일반적인 질문에 대해 자세히 설명하고 답변하겠습니다.

백테스팅 시스템은 어떻게 작동하나요?

FMZ Inventor 양적 플랫폼 백테스팅 지침

위의 그림에서 보듯이 백테스트 시작 시간부터 종료 시간까지의 시간은 시간 축으로 간주될 수 있습니다. 백테스트를 할 때 백테스트 시점은 백테스트를 시작하기 위해 축을 따라 왼쪽에서 오른쪽으로 이동합니다. 이 시점에서는 이 시점만 가능합니다. 획득될 수 있습니다. 이 전략은 이전의 과거 데이터를 사용하여 이 데이터를 기반으로 매수와 매도를 하며, 궁극적으로 이익 또는 손실로 이어집니다. 분명히, 백테스팅 시점의 분포는 이산적이며, 분포의 밀도는 백테스팅의 정확도를 나타냅니다. 물론, 백테스팅 시점이 빽빽할수록 시간이 더 오래 걸린다는 점을 고려하면, 실제 백테스팅 시스템은 정확도와 효율성 사이에서 균형을 맞춰야 합니다.

전통적인 onBar 백테스팅 메커니즘

온바 백테스팅 메커니즘은 K-라인을 기반으로 합니다. 즉, 각 K-라인은 백테스팅 시점을 생성하며, 이 시점에서 현재 K-라인의 최고 개장가와 최저 종가, 거래량 및 기타 정보를 다음과 같이 얻을 수 있습니다. 이 시점 이전의 정보도 마찬가지입니다. 역사적 K-라인 정보. 이 메커니즘의 단점은 명확합니다. K-라인에서는 매수와 매도가 단 한 번만 생성될 수 있으며, 가격은 일반적으로 K-라인의 종가를 기준으로 합니다. 게다가, 하나의 K-라인은 높은 시가와 낮은 종가의 네 가지 가격만 얻을 수 있습니다. K-라인 내에서 가격이 어떻게 변하는지, 가장 높은 가격이 먼저 발생하는지, 가장 낮은 가격이 먼저 발생하는지 등에 대해서는 방법이 없습니다. 그러한 정보를 얻으려면. 1시간 K-라인을 예로 들면, 실제 거래에서는 몇 초마다 시장 정보를 얻고, K-라인이 끝날 때까지 기다리지 않고 거래 세션 중에 거래 지시를 내립니다. 온바 백테스팅 메커니즘의 장점은 이해하기 쉽고 백테스팅 속도가 매우 빠르다는 것입니다.

FMZ 발명가 양적 플랫폼 onTick 백테스팅 메커니즘

FMZ Inventor 양적 플랫폼 백테스팅 지침

위의 그림은 FMZ 백테스팅 설정 인터페이스입니다. 백테스팅 모드는 시뮬레이션 수준 백테스팅과 실시간 백테스팅의 두 가지 유형으로 나뉩니다. 각각에 대해 아래에서 소개합니다.

진드기란 무엇인가요?

K-라인 데이터와 달리 틱은 특정 시점의 가격입니다. K-라인 데이터를 기반으로 우리는 실제로 개장가와 종가가 발생한 시간만 알고 있습니다. K-라인 주기 내에서 가격이 최고가에 도달한 시점은 불분명합니다. 실제로 K-라인 데이터도 틱을 기반으로 생성됩니다. K-라인 데이터를 기반으로 K-라인 기간의 특정 틱의 변화를 시뮬레이션할 수도 있습니다. 실제 틱은 아니지만 백테스팅을 더 정확하게 만들 수 있습니다. 게다가 시뮬레이션에 사용되는 K-라인 기간은 백테스팅에 사용되는 기간보다 훨씬 작을 수 있으므로 정확도가 더 높습니다.

시뮬레이션 수준 백테스팅

시뮬레이션 수준 백테스팅의 경우 백테스팅에 사용되는 K-라인 기간과 기본 K-라인 기간을 선택해야 합니다. 예를 들어, 전략이 시간당 백테스팅을 사용하고 기초 K-라인이 5분인 경우 백테스팅 시점 간 간격은 5분 K-라인 시뮬레이션에서 생성된 틱을 기준으로 하며 이는 연속적인 변화에 반영됩니다. 최신 1시간 K라인의 종가로. K-라인을 기반으로 K-라인 내에서 틱을 생성하는 메커니즘은 MT4와 유사합니다. 이 게시물에는 자세한 설명이 있습니다: https://www.fmz.com/bbs-topic/662

FMZ Inventor 양적 플랫폼 백테스팅 지침
우리는 이 메커니즘을 보여주기 위해 간단한 전략을 사용합니다. 전략 코드는 다음과 같습니다.

function main() {
  while(true){
      var records = exchange.GetRecords() //GetRecords可以填参数,获取不同周期K线。
      var ticker = exchange.GetTicker()
      Log('K线收盘价: ', records[records.length-1].Close, 'ticker买一卖一价: ', ticker.Buy, ticker.Sell)
      //js回测不用Sleep,会自动跳到下一个tick。Python需要一个小的休眠时间
  }
}

백테스팅 결과: FMZ Inventor 양적 플랫폼 백테스팅 지침 각 K-라인의 경우, 시작 틱과 마감 틱만 고정되고, 그 사이에 12개의 시뮬레이션 틱이 추가되어, 하나의 K-라인이 14개의 백테스팅 시점을 형성하게 됩니다. 백테스트가 하루 동안 수행된다면 기본 K-라인 주기는 5분이고, 총 24×12×14 = 4032개의 시간점이 있는 반면, 기존 onBar 백테스트는 24개만 가지므로 정확도가 크게 향상됩니다. 포지션 개시와 마감은 하나의 K-라인 사이클 내에서 완료될 수도 있습니다. 중간에 생성된 틱은 시뮬레이션되지만 그 영향은 크지 않습니다. 백테스트에서 매수 가격이 매도 가격보다 높고, 매도 가격이 매수 가격보다 낮은 경우, 거래가 매칭됩니다. 이 백테스팅 방법은 백테스팅 속도와 정확도를 모두 고려하며, 모든 사람에게 권장됩니다.

실시간 백테스팅

실시간 백테스팅은 실제 틱을 사용하며 각 시간 지점 간의 가장 짧은 간격은 1초에 불과합니다. 이 백테스팅 정확도는 매초마다 정확하지만 데이터 양이 많기 때문에 백테스팅 속도가 느리고 백테스팅 시간을 측정할 수 없습니다. 보장됨. 매우 길다. 아래 그림은 실제 진드기를 보여줍니다. 실시간 백테스팅은 전략을 정확하게 검증하는 데 사용할 수 있습니다. FMZ Inventor 양적 플랫폼 백테스팅 지침

백테스팅과 실제 거래의 차이

실시간 백테스팅과 실제 거래에서도 거래 내역 거래를 얻을 수 없고, 실제 심도 변화를 얻을 수 없으며, 실제 네트워크 지연 등 확실한 데이터 부족 현상이 발생합니다. 그럼에도 불구하고 FMZ의 현재 백테스팅 시스템은 비교적 완벽하고 네트워크 오류 시뮬레이션, 전략의 장애 내구성 테스트, 네트워크 지연 시뮬레이션, 시장 아이콘 그리기 등 많은 소규모 기능을 갖추고 있습니다.

자주 묻는 질문

백테스팅을 위해 일부 거래 쌍과 거래소만 지원되는 이유는 무엇입니까?

현재, 공통적인 거래 데이터 쌍은 몇 개뿐입니다. 사실, 전략과 상품 간의 관계는 그렇게 크지 않지만, 전략을 검증하기에 충분합니다.

BitMEX에서 부과하는 자금 조달 비율을 시뮬레이션할 수 있나요?

네, BitMEX Backtest를 선택하여 이벤트 로깅을 켤 수 있습니다. FMZ Inventor 양적 플랫폼 백테스팅 지침

백테스팅은 어디에서 이루어지나요?

JavaScript 전략에 대한 백테스팅은 브라우저에서 수행되며, Python은 FMZ의 서버나 자체 호스터를 선택할 수 있습니다.

백테스트 로그를 다운로드할 수 있나요?

네, 로그 오른쪽 상단에 다운로드 버튼이 있습니다.

지역적으로 백테스트를 할 수 있나요?

FMZ는 Python 백테스팅 엔진을 오픈 소스로 공개했습니다. 참고: https://www.fmz.com/bbs-topic/1687