Bitsgap logo
 검색
암호화폐 봇을 위한 워크포워드 테스트: 실전 예시

암호화폐 봇을 위한 워크포워드 테스트: 실전 예시

이전 데이터에서 설정값을 선택하고, 이후 구간에서는 해당 설정값을 고정하며 자산 곡선을 그대로 유지하세요. 날짜 분할, 선정 규칙, 복리 적용, 미결제 포지션 처리 결정을 단계별로 진행하세요.

동일한 차트에서 20개의 봇 설정값을 테스트하고, 가장 높은 수익률을 기록한 것을 선택합니다. 이 설정값은 이제 해당 전체 기간의 정보를 반영하게 됩니다. 동일한 날짜에 다시 실행해도 새로운 근거는 얻을 수 없습니다.


워크포워드 테스트는 이전 훈련 구간에서 설정값을 반복적으로 선정하고, 이를 이후 테스트 구간에 고정하여 적용한 뒤, 그 테스트 구간들의 결과를 합산합니다. 이 방식은 각 선정 결정에서 미래 가격을 배제하면서도, 변화하는 시장 환경 전반에 걸쳐 선정 프로세스를 검증할 수 있도록 도와줍니다.

GRID 및 DCA 전략의 경우 추가적인 회계 문제가 있습니다. 코인과 미결제 포지션이 구간 경계를 넘어 남아 있을 수 있기 때문입니다. 유용한 테스트를 위해서는 첫 결과가 나오기 전에 이러한 보유 자산에 대한 규칙이 필요합니다.

훈련, 테스트, 그리고 포워드 데모는 서로 다른 의미를 갖습니다

용어하는 일알 수 있는 점
인샘플 훈련이전 과거 구간에서 허용된 설정값을 비교함선정 규칙이 어떤 후보를 선택하는지
아웃오브샘플 과거 테스트선택된 설정값을 다음 구간에 재조정 없이 실행함그 선정이 이후 과거 데이터에서 어떻게 동작하는지
워크포워드 시퀀스시간이 지남에 따라 훈련과 테스트를 반복함선정 과정의 통합된 동작 양상
포워드 데모설정을 고정하고 가상 자금으로 새로운 시장 데이터를 관찰함새로운 기간에서 워크플로우와 동작이 계획과 일치하는지

일반 백테스팅 가이드에서는 과거 시뮬레이션의 더 넓은 한계점들을 다룹니다. 워크포워드는 반복적인 시간 분할을 추가할 뿐이며, 실행 가정, 데이터 오류, 결과를 본 후 규칙을 수정하고 싶은 유혹을 없애주지는 않습니다.

QuantConnect의 워크포워드 문서에서는 후행 구간에서의 파라미터 선정과 최적화 빈도의 트레이드오프에 대해 설명합니다. 더 자주 재최적화할수록 더 많은 결정을 내리게 되고, 최근의 노이즈에 맞춰지는 기회도 더 많아집니다.

암호화폐 봇을 위한 워크포워드 테스트: 실전 예시-1

결과를 비교하기 전에 프로토콜을 작성하세요

시장, 데이터 간격, 시간대, 그리고 정확한 후보 설정을 선택하세요. 후보 목록은 직접 검토할 수 있을 만큼 충분히 작게 유지해야 합니다. 세 가지 명시된 설정값을 테스트하는 것이 수천 개의 문서화되지 않은 조합을 탐색하는 것보다 설명하기 훨씬 쉽습니다.

또한 다음을 명시하세요:

  • 정확한 경계 타임스탬프를 포함한 훈련 구간과 테스트 구간의 길이.
  • 선정 지표, 최소 근거 요건, 그리고 동점자 처리 규칙.
  • 수수료, 슬리피지, 최소 주문 단위, 반올림, 그리고 체결 모델.
  • 각 경계에서 보유 자산과 미체결 주문의 처리 방식.
  • 벤치마크 시작 자산과 리밸런싱 규칙.

예를 들어, 가상의 프로토콜은 훈련 드로우다운이 정해진 한도 이하인 세 명의 후보 중에서 가장 높은 훈련 수익률을 선택할 수 있습니다. 만약 해당 조건을 충족하는 후보가 없다면, 전략은 다음 테스트 월 동안 현금을 보유합니다. 테스트 월을 확인하기 전에 드로우다운 한도와 대체 방안을 미리 정의하세요.

이 한도는 선정 제한조건일 뿐, 미래 드로우다운에 대한 보장은 아닙니다. 훈련에서 이를 통과한 전략도 테스트에서는 초과할 수 있습니다.

테스트 월을 중복 계산하지 않도록 날짜를 분할하세요

이 예시 롤링 일정에서는 훈련에 3개월, 테스트에 1개월을 사용합니다. 아래 모든 타임스탬프는 UTC 기준이며, 각 구간은 시작 시점을 포함하고 종료 시점은 제외합니다.

라운드훈련 구간테스트 구간
11월 1일 ~ 4월 1일4월 1일 ~ 5월 1일
22월 1일 ~ 5월 1일5월 1일 ~ 6월 1일
33월 1일 ~ 6월 1일6월 1일 ~ 7월 1일
44월 1일 ~ 7월 1일7월 1일 ~ 8월 1일

훈련 구간은 서로 겹칩니다. 네 개의 테스트 구간은 겹치지 않습니다. 4월은 해당 구간이 끝난 후 다음 라운드의 과거 훈련 데이터로 사용할 수 있지만, 4월의 가격 곡선을 4월에 테스트할 후보 설정을 선정하는 데 사용할 수는 없습니다.

각 경계마다 선택된 결과를 저장하세요. 완전한 기록에는 탈락한 후보들과 그들의 훈련 지표도 포함되어야 하며, 이를 통해 다른 검토자가 왜 승자가 선정되었는지 재구성할 수 있습니다.

완전한 첫 번째 라운드

다음 표에는 가상의 교육용 값이 포함되어 있습니다. 이는 실제 백테스트 결과나 시장 관측치가 아닙니다. 작성된 선정 규칙은 훈련 드로우다운이 10%를 넘지 않아야 하며, 그중 순 훈련 수익률이 가장 높은 것을 선택한다고 가정합니다. 모든 수익률은 모델에 명시된 비용을 반영한 값입니다.

후보훈련 수익률훈련 최대 드로우다운자격 여부
A+5.0%8.0%예
B+8.0%15.0%아니오
C+4.0%6.0%예

프로토콜은 A를 선정합니다. 후보 B의 더 높은 수익률은 명시된 드로우다운 제한조건을 무효화하지 못합니다. 후보 C는 비교에서 패배했음에도 불구하고 기록에 남아 있습니다.

A를 4월로 고정합니다. 예시에서 A의 4월 순수익률이 −2%로 산출되었다고 가정해 보겠습니다. 이 값은 아웃오브샘플 기록에 반영됩니다. 4월을 더 잘 처리했을 것이라는 이유로 C로 전환한다면, 선정 과정에서 테스트 월을 재사용하게 됩니다.

5월 경계에서, 원래 프로토콜은 2월부터 4월까지의 데이터를 사용해 모든 후보를 다시 비교합니다. 새로운 훈련 비교에서 C가 승리하면, 5월에는 C를 선택할 수 있습니다. 이는 해당 시점에 이용 가능한 정보를 바탕으로 한 계획된 업데이트입니다.

후반 테스트 구간들을 하나의 자산 곡선으로 합치세요

다음 선정 결과와 테스트 수익률은 아래와 같습니다. 이 값들은 동일한 가상의 회계 예시를 이어가는 것으로, 실제 전략 시뮬레이션에서 나온 것이 아닙니다.

테스트 월선정된 설정값순 테스트 수익률초기 자산최종 자산
4월A−2.0%$1,000.00$980.00
5월C+1.0%$980.00$989.80
6월A−3.0%$989.80$960.11
7월C+2.0%$960.11$979.31

기본(반올림하지 않은) 최종 값은 980, 989.8, 960.106, 979.30812입니다. 합산 수익률은 다음과 같습니다:

(1 − 0.02) × (1 + 0.01) × (1 − 0.03) × (1 + 0.02) − 1 = −2.069188%.

네 개의 수익률을 더하면 −2%가 되지만, 이는 복리 결과와 다릅니다. 이전 구간의 최종 자산을 다음 구간으로 이월하고, 반올림은 표시용으로만 하세요.

월말 관측치에 따르면 초기 $1,000에서 약 3.99%까지 가장 깊은 하락이 나타났습니다. 월중 자산 곡선은 이보다 더 하락했을 수도 있으므로, 월별 관측치만으로는 실제 최대 드로우다운을 확인할 수 없습니다.

이 회계 예시에서는 모든 경계 리셋이 명시된 순 월간 수익률에 포함된 것으로 가정합니다. 실제 백테스트에서는 해당 리셋을 보유 자산과 체결 모델을 기반으로 계산해야 합니다.

미결제 GRID 또는 DCA 인벤토리에 대해 어떻게 처리할지 결정하세요

봇이 4월을 마칠 때 0.01 BTC와 400 USDT를 보유하고 있다고 가정해 보겠습니다. 가상의 BTC 가격이 $50,000일 때, 이 봇의 자산은 900 USDT입니다. 새로운 달이 시작되어도 초기 $1,000.00으로 자산이 복원되지는 않습니다.

일관된 경계 정책을 하나 선택하세요:

보유 자산을 이월합니다. 실제 코인, 현금, 그리고 포지션 상태를 다음 테스트 구간으로 이전합니다. 설정값 변경이 기존 주문과 인벤토리에 어떤 영향을 미치는지 정의해야 합니다. 시뮬레이터는 이러한 전환을 지원해야 하며, 기본 자산으로 새롭게 시작하는 백테스트는 이를 제대로 반영하지 못할 수 있습니다.

청산 및 초기화. 미체결 주문을 취소하고, 선언된 체결 모델을 사용해 남아 있는 익스포저를 매도 또는 청산하며, 비용을 차감한 후 그 결과 자산으로 다음 구간을 시작합니다. 다음 설정에 시작 코인 보유 자산이 필요하다면, 해당 코인 매수와 그 비용도 함께 모델링합니다.

어느 정책이든 실제 운영 프로세스를 설명할 수 있습니다. 결과를 확인한 후 두 정책을 혼합하면 손실이 숨겨질 수 있습니다. 관련된 경우 벤치마크에서도 동일한 정책을 유지하고, 다른 정책의 효과는 별도로 라벨링된 민감도 점검으로 제시하세요.

체결 모델과 벤치마크를 확인하세요

캔들이 지정가에 닿았다고 해서 주문이 전량 체결될 수 있었다는 증거는 아닙니다. 캔들 데이터는 매수 가격과 매도 가격 중 어느 쪽이 먼저 도달했는지도 숨길 수 있습니다. 인트라바(캔들 내) 체결 순서가 유리하게 가정된 시뮬레이션에서는 촘촘한 GRID 설정이 매력적으로 보일 수 있습니다.

모델이 부분 체결, 주문 우선순위, 스프레드, 갭을 어떻게 처리하는지 문서화하세요. 툴에서 지원한다면, 더 불리한 비용이나 체결 조건으로 동일한 분석을 반복해 보세요. 작은 비용 변화만으로 결론이 사라진다면 반드시 추가 조사가 필요합니다.

비교를 위해 동일한 날짜, 초기 자산, 그리고 시작 보유 자산을 사용하세요. 봇이 코인과 현금을 반반씩 보유한 상태로 시작하는 경우, 벤치마크가 전액 투자된 상태로 시작한다면 그 자산 배분 차이를 설명하지 않는 한 직접적으로 비교할 수 없습니다.

백테스트 결과 체크리스트는 생성된 리포트를 검토할 때 유용합니다. 월별 자산 곡선, 거래 내역, 익스포저, 비용을 총 수익률과 함께 확인하세요.

최종 평가는 프로토콜 설계와 분리해서 진행하세요

반복적인 워크포워드 테스트 자체가 훈련이 될 수 있습니다. 네 개의 테스트 월 전체를 검토하고 후보 목록을 변경한 뒤 동일한 기간을 다시 실행한다면, 업데이트된 방법은 해당 월들의 정보를 사용한 것입니다.

해당 수정 사항을 기록하고, 이후 평가를 위해 변경되지 않은 과거 기록이나 새로운 포워드 데이터를 따로 남겨두세요. 동일한 날짜에 새로운 라벨을 붙인다고 해서 그 데이터가 다시 미확인 데이터가 되는 것은 아닙니다.

다운로드 가능한 기록은 간단할 수 있습니다. 각 라운드마다 한 행씩, 훈련 날짜, 후보 버전, 선정 지표, 선택된 설정값, 테스트 날짜, 비용 모델, 경계 정책, 순 테스트 결과를 포함하면 됩니다. 그 옆에는 원시 보고서와 데이터 참조를 함께 보관하세요. 아래 예시는 회계 연습을 위해 내보낼 수 있는 CSV 형식의 가상 표를 포함하고 있습니다.

과거 검증을 마친 후에는 고정된 데모 실행을 진행하세요

예시의 회계 처리를 직접 해보세요

시작 및 종료 자산을 포함한 네 개의 가상 테스트 월 행을 다운로드하세요. 이 값들은 교육을 위해 만들어진 예시일 뿐, 백테스트 보고서가 아닙니다.

Bitsgap 데모에서 설정을 관찰하세요

필요한 구간과 회계 기능을 지원하는 도구에서 과거 분석을 마쳤다면, Bitsgap 데모에서 지원되는 봇 설정값을 고정하세요. 시작 자산과 설정을 기록한 후, 가상 자금과 실시간 시세로 이를 관찰합니다. 데모는 별도의 포워드 연습이며, 이 워크플로우는 내장된 워크포워드 최적화 기능을 전제로 하지 않습니다.

자주 묻는 질문

워크포워드 테스트가 과적합을 방지하나요?

각 선정 구간을 이후 테스트와 분리함으로써 인샘플 편향의 한 가지 원인을 줄여줍니다. 반복적인 프로토콜 변경, 데이터 누수, 비현실적인 체결, 선택적 보고 등은 여전히 오해를 불러일으키는 결과를 초래할 수 있습니다.

구간의 길이는 얼마나 되어야 하나요?

보편적인 기간은 없습니다. 거래 빈도, 사용 가능한 과거 데이터, 그리고 선정 방식에 따라 각 구간이 담을 수 있는 근거의 양이 달라집니다. 여기서 사용한 3개월과 1개월 분할은 교육용 예시입니다.

별도의 테스트 구간에서 나온 수익률을 합산할 수 있나요?

각 구간이 이전 구간의 최종 자산을 초기 자산으로 시작할 때, 순차적으로 수익률을 복리로 계산하세요. 또한 자산 곡선, 비용, 익스포저 등 기본적인 내역도 함께 보존해야 합니다. 최종 수익률(%)만으로는 중요한 차이가 숨겨질 수 있습니다.

포워드 데모는 아웃오브샘플 과거 테스트와 동일한가요?

아웃오브샘플 과거 테스트는 시뮬레이터에서 이후의 과거 데이터를 사용합니다. 포워드 데모는 가상 자금으로 새로운 데이터를 관찰합니다. 두 방법 모두 한계가 있으며, 어느 쪽도 실거래 체결이나 미래 수익을 보장하지 않습니다.

암호화폐로 더 많은 수익을 원하시나요?

Bitsgap의 자동화된 봇은 암호화폐 트레이더가 24시간 내내 손쉽게 수익을 올릴 수 있도록 도와줍니다.

무료 체험 시작

*7일 PRO 플랜 체험. 신용카드가 필요하지 않습니다

Bitsgap PRO 플랜을 7일 무료로 사용해 보고, 플랜은 나중에 선택하세요

3단계면 준비 완료, 이후에는 봇이 대신 거래합니다.

모든 데이터는 최고 수준의 암호화로 보호됩니다