백 테스팅이란 무엇입니까? 암호 화폐 거래 전략을 백 테스트하는 방법

>

백 테스팅 소개

백 테스팅은 거래 전략의 성과를 평가하기 위해 거래자가 사용하는 수학적 시뮬레이션입니다. 시뮬레이션은 과거 시장 데이터를 활용하여 과거에 거래 전략이 얼마나 잘 수행되었는지 계산합니다..

핵심에서 백 테스팅은 거래자가 실제 자본으로 구현할 때 전략이 수익성이 있는지 여부를 예측하는 방법입니다. 트레이더는 백 테스팅을 사용하여 역사적으로 수익성이 없었던 전략을 필터링합니다..

과거 성능이 향후 결과를 보장하지는 않지만 백 테스팅은 여전히 ​​강력한 전략을 식별하는 가장 신뢰할 수있는 방법입니다. 분명히 실적이 저조한 전략을 걸러 내려면 이러한 시뮬레이션을 연구해야합니다. 그렇게하면 우리는 돈을 벌 수있는 최고의 기회를 갖게되고 실제 자금으로 전략을 테스트 할 필요가 없습니다..

암호 화폐 거래 도구가 대중화됨에 따라 백 테스팅도 증가했습니다. 오늘날 트레이더는 모든 전략을 야생 암호 화폐 시장에 출시하기 전에 철저히 백 테스트하는 것이 좋습니다. 이렇게하면 전략이 최적으로 수행 할 수있는 잠재력이 있다는 확신을 얻을 수 있습니다..

재조정을위한 백 테스트 연구

이 연구는 과거 최고의 구성을 결정하기 위해 다양한 재조정 전략의 효과를 평가합니다..

백 테스팅 데이터 요구 사항

백 테스팅 전략을 시작하기 전에 개발자가 백 테스팅 도구를 구축하는 데 사용하는 다양한 데이터 유형과 이들이 각각 실제 시장을 나타내는 방법을 이해해야합니다..


캔들 스틱 데이터

백 테스팅 도구를 구현하는 가장 일반적인 방법은 개발자가 OHLCV 캔들 스틱 데이터를 사용하는 것입니다. 대부분의 개발자가이 데이터를 사용하는 이유는 바로 사용할 수 있기 때문입니다..

안타깝게도 이러한 도구를 구축하기 위해 액세스하기 가장 쉬운 데이터이지만 가장 신뢰할 수없는 데이터입니다. 실제로 OHLCV 캔들 스틱 데이터를 사용하여 백 테스트를 실행하는 것은 수익성있는 전략을 구축하는 것과 돈을 잃는 것의 차이가 될 수 있습니다..

거래자가 CoinMarketCap과 같은 소스에서 집계 된 캔들 스틱 데이터를 사용하면 상황은 더욱 악화됩니다. 집계 된 데이터는 당시 특정 거래소에서 사용할 수 있었던 실제 주문의 유효한 표현이 아닙니다..

백 테스팅 도구를 빌드하는 데 캔들 스틱 데이터를 사용하지 마세요..

틱별 거래 데이터

틱별 거래 데이터는 과거 백 테스팅 도구에 유용한 구성 요소가 될 수 있습니다. 개별 틱 거래는 매 순간 거래소에서 실행 된 정확한 거래입니다. 이러한 개별 거래는 체결 된 실제 주문을 나타내므로 거래소에서 해당 가격으로 사용 가능한 공개 주문이 있었음이 확실합니다..

틱 거래 데이터는 백 테스팅 서비스의 강력한 측면이 될 수 있지만 여전히 OHLCV 캔들 스틱 데이터보다 약간 더 정확합니다. 개별 거래 데이터 포인트는 거래 당시 주문서의 상태에 대한 정보를 제공하지 않습니다. 결과적으로 개발자는 시뮬레이션 거래가 실행되는 정확한 순간에 거래소에서 어떤 주문을 사용할 수 있었는지 정확하게 평가할 수 없습니다..

백 테스팅 도구에 틱 단위 거래 데이터를 사용하는 것은 권장되지 않습니다..

주문 장 스냅 샷 데이터

백 테스팅 도구에서 일반적으로 사용되는 마지막 데이터 유형은 주문서 스냅 샷입니다. 주문서 스냅 샷은 스냅 샷 시점의 정확한 시장 상태를 제공합니다. 의도는 특정 시간에 거래소에서 사용 가능한 주문을 완전히 표현하는 것입니다..

백 테스팅 도구를 빌드 할 때 가장 강력한 데이터 유형입니다. 데이터에는 거래가 시뮬레이션 된 시점에 사용 가능한 정확한 주문이 포함되어 있기 때문에 우리가 취할 수있는 정확한 거래와 각 거래의 가격을 계산할 수 있습니다..

주문 장 스냅 샷을 통해 개발자는 매도 요청 스프레드, 슬리 피지 및 유동성의 영향을 시뮬레이션 할 수 있습니다..

백 테스팅 도구의 데이터 유형으로 주문서 스냅 샷을 적극 권장합니다..

데이터 소스

주문서 데이터의 주요 소스는 각각의 개별 암호화 교환 자체입니다. 대부분의 경우이 데이터는 거래소의 웹 소켓을 통해 실시간으로 스트리밍됩니다. 그러나 엄청난 양의 데이터로 인해 거래소는 일반적으로이 데이터를 장기간 저장하지 않습니다. 즉, 데이터가 교환 웹 소켓을 통해 전송되면 영원히 사라집니다..

물론 누군가가 거래소에서 데이터를 수집하여 타사 서비스를 통해 제공하지 않는 한. 여기에서 데이터 공급자가 그림을 시작합니다. 데이터 공급자는 본질적으로 각 거래소에서 데이터를 집계하고 다른 사람들이 나중에 액세스 할 수 있도록 저장하는 회사입니다..

과거 주문 장 스냅 샷에 대한 데이터 공급자는 거의 없으며 그 사이에 있습니다. 이 데이터의 제한된 공급으로 인해 개발자는 OHCLV 캔들 스틱과 같은 대체 데이터 세트에 의존하여 백 테스트에 부정확성을 유발할 수 있습니다. 결과적으로 오늘날 시장에서 사용 가능한 대부분의 백 테스팅 도구는 전략의 성과를 잘못 표현합니다..

최근 파트너십 이후 Shrimpy 카이 코, Shrimpy는 이제 모든 주요 거래소에서 주문 장 스냅 샷의 전체 내역 카탈로그를 제공 할 수 있습니다. 빠르면 2014 년으로 거슬러 올라가는 Kaiko는 틱별 거래 데이터, 주문 장 스냅 샷 및 OHLCV 촛대를 꼼꼼하게 수집했습니다..

개발자는 다음을 통해이 데이터에 액세스 할 수 있습니다. Shrimpy 개발자 API. 간단한 주문형 가격 모델을 사용하여 고객은 다양한 시간대, 거래 쌍 및 교환에 대한 스냅 샷을 쿼리 할 수 ​​있습니다..

Kaiko는 시장에서 가장 정확한 데이터를 제공합니다. 이제 모든 개발자가 Kaiko의 데이터에 액세스하여 Shrimpy API를 통해 백 테스트를 정확하게 시뮬레이션 할 수 있습니다..

역사 주문서 용 Python 스크립트

그만큼 Shrimpy 개발자 API 과거 교환 주문서에 대한 액세스를 제공합니다. 각 주문서의 스냅 샷은 1 분 간격으로 촬영됩니다. 사용 Shrimpy Python 라이브러리, 개발자가 몇 줄의 코드만으로 기록 데이터에 액세스 할 수있는 방법의 예를 제공합니다..

백 테스트 시뮬레이션

그림 1 : ENJ-USDT 거래 쌍에 대한 주문서 예시.

전략의 수행 방식을 정확하게 계산하려면 백 테스트에 가능한 가장 정확한 숫자가 필요합니다. 백 테스트 중에 고려해야 할 몇 가지 요소는 다음과 같습니다.

  • 거래소의 거래 수수료

  • 거래 쌍에 대한 매도-매도 스프레드

  • 주문서의 시장 미끄러짐

  • 각 개별 거래에 대한 타이밍

자산 구매를 시뮬레이션 할 때 주문서의 요청 가격을 사용해야합니다. 거래소에있는 경우 가장 좋은 가격은 거래소의 모든 사람이 자산을 판매 할 의사가있는 최저 가격입니다. 거래 수수료와 미끄러짐도 고려하는 것을 잊지 마십시오.

그림 1의 주문서를 예로 들어 1,500 USDT 상당의 ENJ를 매수한다고 가정 해 보겠습니다. 이 예에서는이 주문서가 기본 거래 수수료가 0.1 % 인 Binance 용이라고 가정하겠습니다..

우리가 원하는 금액 인 1,500 USDT 상당의 ENJ를 구매할 때까지 주문서보다 주문 가격을 점진적으로 높여서 1,500 USDT 상당의 ENJ 구매를 시뮬레이션 할 수 있습니다. 우리가 실행할 연속 거래에는 다음이 포함됩니다.

  1. 1151.74904126 ENJ를 각 0.20559424 USDT에 구매 = 236.97296881 USDT + 0.2369729 USDT 수수료 (1262.79005829 USDT 남음)

  2. 2559.954 ENJ를 각 0.20640294 USDT에 구매 = 528.38203186 USDT + 0.52838203 USDT 수수료 (733.8796444 USDT 남음)

  3. 1992.51418976 ENJ를 각 0.20659518 USDT에 구매 = 411.64382769 USDT + 0.41164382 USDT 수수료 (321.82417288 USDT 남음)

  4. 1555.85587451 ENJ를 각 0.20663894 USDT에 구매 = 321.50267164 USDT + 0.32150267 USDT 수수료 (0 USDT 남음)

주문서에 0.20663894 가격으로 구매할 수없는 일부가 남아 있습니다. 우리가 구매하지 않은 금액은 다른 시장 참여자가받을 수 있도록 교환에 남아 있습니다..

합계로 정확히 샀습니다 7260.08410553 ENJ 모든 거래가 완료된 후. OHLCV 캔들 스틱 데이터 만 사용했다면 추정치가 7319.76112984. 이것은 거의 차이입니다 60 ENJ 또는 거의 1 %. 많지 않은 것처럼 보일 수도 있지만 수백 또는 수천 개의 거래를 시뮬레이션하면이 작은 비율이 엄청나게 빠르게 합성됩니다..

거래 시뮬레이션이 완료되면 주문 결과를 기록하여 나중에 백 테스트에서 해당 자금을 다른 자산으로 거래 할 수 있도록합니다. 이 상세한 거래 기록을 사용하여 백 테스트 중에 이루어진 모든 거래에 대한 세심한 로그를 유지할 수 있습니다. 이 로그는 우리가 실행하는 거래량, 수행 한 거래 수, 특정 자산의 구매 또는 판매 빈도와 같은 추가 통계를 계산하는 데 사용할 수 있습니다..

성능 결과

전략의 성과를 계산하는 것은 간단합니다. 우리가해야 할 일은 백 테스트를 시작할 때 포트폴리오의 가치를 계산하고 백 테스트가 끝날 때 포트폴리오의 가치와 비교하는 것입니다..

포트폴리오의 가치는 우리가 보유한 각 자산의 금액에 해당 자산의 가격을 곱하고 포트폴리오에있는 모든 자산의 가치를 합산하여 계산됩니다..

백 테스트를 시작할 때와 백 테스트가 끝날 때이 계산을 수행하면 백 테스트 과정에서 포트폴리오의 가치 변화를 얻을 수 있습니다..

다음 방정식을 사용하여 성능을 계산할 수 있습니다.

성능 = [(Vf-Vi) / Vi] x 100

어디,

  • Vf 포트폴리오의 최종 가치

  • Vi 포트폴리오의 초기 가치

  • 100 곱하기 소수에서 백분율로 변환

백 테스트의 목적은 성능을 최적화하기위한 것이 아닙니다. 기본적으로 특정 전략이 백 테스트 조건에서 잘 수행된다고해서 이것이 자동으로 좋은 전략이라는 의미는 아닙니다. 또한 전략의 일관성과 견고성을 고려해야합니다..

백 테스팅 일관성 – 다양한 역사적 기간과 다양한 시장 조건에 걸쳐 유사한 결과를 생성 할 수있는 능력.

백 테스트 견고성 – 전략 매개 변수를 약간 변경하더라도 유사한 결과를 생성 할 수있는 능력.

견고성이없는 전략은 전략 매개 변수를 아주 조금만 변경해도 큰 성능 변동을 볼 수 있습니다. 마찬가지로 일관되지 않은 전략은 서로 다른 이전 기간을 테스트 할 때 매우 다른 결과를 경험할 수 있습니다..

이상적인 경우에는 모든 과거 기간에 대해 백 테스트 할 수 있고 유사한 결과를 생성 할 수있는 전략을 사용하려고합니다. 마찬가지로, 전략에 사소한 변경이있을 때 우리 전략의 성과가 크게 변동해서는 안됩니다..

일관성이나 견고성이없는 전략은 예측할 수없는 미래 성과로 이어질 수 있습니다. 전략에 대한 다양한 과거 기간 및 구성을 백 테스트하면 매우 다양한 결과가 생성되는 경우 전략을 예측할 수 없음을 나타낼 수 있습니다. 이 경우 평가할 단일 구성 또는 백 테스팅 기간 만 선택하는 것은 기본적으로 전략을 특정 상황에 과적 합하는 것입니다. 과적 합 백 테스트의 결과는 전략의 일반적인 표현이 아닙니다..

우리가 찾은 일관된 전략의 예는 재조정입니다. 대부분의 경우 재조정이 hodling을 능가했습니다. 재조정 기간을 1 시간에서 1 일로 1 개월로 조정 한 경우에도.

백 테스트 레드 플래그

백 테스팅의 기술적 특성으로 인해 백 테스트가 신뢰할 수 있는지 확인하기 어려울 때가 있습니다. 다음 위험 신호 항목은 백 테스트 결과가 합리적인지 식별하는 데 도움이됩니다. 이것은 광범위한 목록은 아니지만 가장 일반적인 경우 중 일부입니다..

  1. 매 거래 후 성능 향상. 특히 매 거래 후 실적이 지속적으로 증가하면 거래 로직에 계산 오류가 있음을 나타낼 수 있습니다..

  2. 펀드의 지속적인 기하 급수적 성장. 백 테스트의 성능 결과가 시간이 지남에 따라 기하 급수적으로 증가하는 경우, 이는 종종 거래 시뮬레이션에 OHLCV 캔들 스틱을 사용하거나 퍼센트 할인 된 계산 오류를 가리키는 결과 일 수 있습니다..

  3. 빈도가 높은 거래 전략은 가치가 감소하지 않습니다.. 일반적으로 상당한 금액을 거래하는 전략은 거래 수수료로 인해 가치를 잃게됩니다. 빈도가 높은 거래 전략이 가치를 잃지 않는다면 백 테스트는 교환 수수료를 고려하지 않을 수 있습니다..

  4. 유동성이 낮은 시장은 유동성이 높은 시장과 동일하게 수행됩니다.. 백 테스팅 도구가 OHLCV 캔들 스틱 데이터 또는 집계 된 데이터를 사용하는지 감지하는 간단한 방법은 일반적으로 스프레드가 큰 저 유동성 시장에서 전략을 실행하는 것입니다. 유동성이 낮은 시장에서 고주파 거래는 큰 포트폴리오 손실을 초래해야합니다.

  5. 교환 변경은 결과에 영향을 미치지 않습니다.. 모든 거래소에는 유동성과 거래 수수료가 다릅니다. 다른 거래소에서 전략을 백 테스트 할 때 다른 결과를 얻어야합니다. 다른 거래소에서 동일한 결과를 얻는 경우 백 테스팅 도구가 집계 된 데이터를 사용하고 있으며 각 개별 거래소에 대해 올바른 거래 수수료를 사용하지 않는 것입니다..

액면가로 백 테스트 결과를 수락하기 전에 이러한 위험 신호를 사용하여 시뮬레이션 된 거래의 문제를 식별하십시오..

결론

이 기사 전체에 걸쳐 몇 가지 주요 주제가 있습니다. 주로 강력한 백 테스팅 도구를 구축하는 것이 얼마나 어려운지 보여주었습니다. 하지만 동시에 전략을 실시간으로 배포하기 전에 전략 백 테스트의 중요성을 설명 할 수있었습니다..

백 테스팅 전략을 구축하는 첫 번째 단계는 항상 고품질 데이터를 보유하는 것이 었습니다. 고품질 주문서 데이터가 없으면 결과가 매우 정확하지 않습니다. 궁극적으로 잘못된 백 테스팅 도구를 기반으로 의사 결정을 내리는 것은 비용이 많이들 수 있습니다. 포트폴리오를 앗아가는 전략에 대해 비현실적인 기대를 갖게 할 수 있습니다..

백 테스팅 도구를 구축 할 때 거래 수수료, 슬리 피지 및 매도 매도 스프레드를 시뮬레이션하는 것을 잊지 마십시오. 백 테스트의 이러한 각 측면은 큰 차이를 만들 수 있습니다. 백 테스트에서 이러한 구성 요소 중 하나를 제거하는 것은 수익성있는 전략과 수익성없는 전략의 차이 일 수 있습니다..

마지막으로 백 테스트를 기반으로 전략을 배포하기 전에 테스트를 계속하십시오. 테스트를 마쳤다고 생각되면 다시 테스트하세요. 100 개의 테스트 대신 100,000 개의 테스트를 실행합니다. 백 테스팅은 전략의 동작을 이해하는 가장 좋은 방법입니다. 전략에 대한 새로운 가설을 세우고 이러한 가설을 테스트하여 새로운 전략을 확인하십시오. 자신에게 맞는 전략을 찾을 때까지 실험주기를 계속하십시오..

세계 최고의 트레이더 복사

현재 Binance에서 포트폴리오를 관리하는 수천 명의 활성 거래자가 있습니다. 이 트레이더는 업계에서 가장 진보 된 트레이더입니다..

추가 좋은 읽기

Python을 사용하여 암호화 거래 봇을 만드는 방법

암호화 대출 가이드 — 비교 상위 대출 기관

비트 코인 가격 라이브 티커 용 스크립트 (웹 소켓 사용)

암호화 포트폴리오 관리를위한 임계 값 재조정

DeFi 란 무엇입니까? 탈 중앙화 금융 가이드

우리의 소셜 트레이딩 플랫폼

Shrimpy 암호 화폐를위한 소셜 거래 플랫폼입니다. 전문가와 초보자 모두가 성장하는 암호화 산업에 대해 배우고 배울 수 있도록 설계되었습니다. Shrimpy에서 사용자는 다른 트레이더의 포트폴리오 및 거래 전략을 복사 할 수 있습니다..

우리를 따라 오세요 트위터페이스 북 업데이트를 확인하고 놀랍고 활동적인 커뮤니티에 질문을 전보 & 불일치.

들러 주셔서 감사합니다!

Shrimpy 팀

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me