블록 부트스트랩으로 트레이딩 전략 수익률의 신뢰구간을 구하는 법
이동 블록 부트스트랩과 정상 부트스트랩이 수익률의 시간 의존성을 보존하면서 전략 평균수익률과 샤프 비율의 불확실성을 추정하는 방법을 설명합니다.
이 글에서 다루는 내용블록 부트스트랩은 어떤 질문에 답하나요?
짧은 요약
블록 부트스트랩은 시간 순서가 있고 서로 의존할 수 있는 수익률 자료에서 전략 통계량의 표본 불확실성을 추정하는 방법입니다. 연속된 관측치를 묶음째 다시 추출하고, 새로 만든 각 시계열에서 같은 통계량을 계산한 뒤 그 분포로 구간을 만듭니다. 행을 하나씩 무작위로 뽑는 일반 부트스트랩이 없애는 단기 의존성을 일부 보존할 수 있습니다. 다만 전략을 수익성 있게 만들거나, 수백 개 백테스트 가운데 승자만 고른 편향을 바로잡거나, 미래 수익률이 구간 안에 든다고 보장하지는 않습니다.
블록 부트스트랩은 어떤 질문에 답하나요?
백테스트에는 평균수익률이나 샤프 비율 하나가 표시되는 경우가 많습니다. 그 숫자는 관측된 표본을 요약하지만 비슷한 수익률 생성 과정에서 다른 표본을 얻었다면 통계량이 얼마나 달라질지 보여주지는 않습니다. 신뢰구간은 명시한 통계 설계 아래 그 표본 불확실성을 추정해 덧붙입니다.
전략 수익률을 다시 뽑기 전에 관측 단위를 정합니다. 분석 목적에 맞추어 수수료, 스프레드, 슬리피지를 반영한 일간 또는 주간 포트폴리오 수익률일 수 있습니다. 빈도, 표본 날짜, 현금 처리, 비용 가정을 일관되게 유지하세요. 평균이나 샤프 비율의 신뢰구간은 다음 달 이익을 예상하는 범위도 아니고 손실 한도도 아닙니다.
블록 부트스트랩은 통계량을 추정할 시계열에서 이웃한 관측치가 서로 연관되어 있을 수 있을 때 유용합니다. Künsch의 연구는 각 관측치가 독립이라고 가정하지 않고, 정상성을 갖는 의존 자료에서 연속 블록을 추출하는 부트스트랩을 다룹니다. 정상 시계열 관측치를 위한 Künsch의 블록 부트스트랩 논문이 그 방법의 토대입니다.
일반 부트스트랩은 수익률을 왜곡할 수 있습니다
일반적인 독립·동일분포(i.i.d.) 부트스트랩은 관측치 하나씩 복원추출합니다. 개별 기간 수익률의 분포는 대략 유지하지만 관측 순서는 바뀝니다. 조용한 시장이 이어진 구간, 변동성 군집, 상승과 하락의 연속이 서로 관계없는 위치로 흩어질 수 있습니다.
그 의존성이 통계량의 불확실성에 영향을 주면 순서가 중요합니다. 수익률에 자기상관이 있거나 절대수익률이 큰 날이 서로 가까이 나타나는 경향이 있다면 관측 순서도 분석 대상의 일부입니다. 행을 섞으면 그 구조가 사라집니다. 블록 방식은 짧은 구간의 순서를 유지한 채, 과거 표본의 여러 구간으로 다른 시계열을 구성합니다.
모든 전략에 블록 부트스트랩이 필요하다는 뜻은 아닙니다. 질문과 표본 가정이 독립 관측치 방법을 뒷받침한다면 그 방법이 적절할 수 있습니다. 중요한 점은 “백테스트에 부트스트랩을 적용하라”는 막연한 지시를 따르는 대신 자료와 설계에 맞는 추출 단위를 선택하는 것입니다.
이동 블록 부트스트랩은 어떻게 작동하나요?
이동 블록 부트스트랩(MBB)은 길이가 고정된 겹치는 구간을 만듭니다. 주간 수익률이 r1부터 r4까지 있고 블록 길이를 2로 정했다면 가능한 블록은 (r1, r2), (r2, r3), (r3, r4)입니다. 블록을 복원추출해 원래 시계열과 같은 길이가 될 때까지 이어 붙인 뒤 통계량을 다시 계산합니다.
예를 들어 (r1, r2)를 뽑은 다음 (r2, r3)를 뽑으면 관측치 네 개짜리 재표본 하나가 됩니다. 경계에서 r2가 반복되지만 블록을 복원추출하기 때문에 허용되는 결과입니다. 각 블록 안의 두 관측치는 연속 순서를 유지합니다. 블록 길이 2는 절차를 설명하기 위한 값일 뿐 주간 트레이딩 자료의 권장 길이가 아닙니다.
이 절차를 여러 번 반복합니다. 재표본은 과거 블록으로 만든 대체 경로이지 새로운 시장 이력이 아닙니다. Künsch의 점근 결과에서는 표본이 커질수록 블록 길이도 커지되 전체 표본 길이보다 작은 비중으로 유지되는 조건을 둡니다. 실제 유한 표본에는 근거 있는 길이 선택과 민감도 검토가 별도로 필요합니다.

정상 부트스트랩은 무엇이 다른가요?
정상 부트스트랩(stationary bootstrap)도 연속 관측치를 이어 붙이지만 블록 길이가 고정되어 있지 않습니다. Politis와 Romano의 방법에서는 기하분포로 블록 길이를 추출하며, 사용자가 정한 기대 블록 길이에 따라 새 블록을 시작하는 빈도가 달라집니다. 이 무작위 길이 구성은 논문이 둔 조건 아래 관측 자료에 조건부인 재표본 시계열이 정상성을 갖도록 설계되었습니다. 자세한 내용은 Politis와 Romano의 정상 부트스트랩 원 논문을 참고할 수 있습니다.
두 방법 모두 추출된 구간 안의 의존성을 보존하고, 블록 경계에서는 연속성을 끊습니다. MBB는 블록 크기가 같고 정상 부트스트랩은 크기가 달라집니다. 어느 쪽이든 블록 길이 모수를 정하고 보고해야 합니다. 무작위 길이를 쓴다는 이유만으로 모든 통계량이나 표본에서 더 정확한 방법은 아닙니다.
각 재표본에서 같은 통계량을 다시 계산합니다
재표본을 만들기 전에 무엇을 계산할지 정합니다. 평균 초과수익률을 추정한다면 각 경로에서 같은 평균을 계산합니다. 샤프 비율이라면 모든 재표본에서 수익률 빈도, 초과수익률 정의, 분모를 일관되게 유지합니다. 분석 도중 총수익률과 비용 차감 수익률을 바꾸면 안 됩니다.
기본적인 분위수 신뢰구간은 부트스트랩 통계량 값에서 하한과 상한 분위수를 고릅니다. 예를 들어 2.5백분위수와 97.5백분위수는 명목 95% 분위수 구간을 만듭니다. 이는 가능한 구성 중 하나이며 모든 유한 표본에서 구간 포함 확률이 정확하다는 보장은 아닙니다. 통계량, 재표본 방식, 블록 길이, 가정이 자료에 맞는지에 따라 구간의 성질이 달라집니다.
샤프 비율 비교에서는 두 전략 간 차이의 불확실성을 부트스트랩으로 추정할 수 있습니다. Ledoit와 Wolf는 두꺼운 꼬리나 시계열 의존이 있는 수익률을 염두에 두고, 그 차이에 대한 학생화 시계열 부트스트랩 신뢰구간을 제안합니다. 이 논문은 더 제한적인 가정에 맞춘 단순 검정이 그런 자료에서 항상 신뢰할 수 있는 것은 아닌 이유도 다룹니다. Ledoit와 Wolf의 샤프 비율 연구를 참고하세요.
샤프 비율은 짝지은 수익률 시계열로 비교합니다
두 전략이 같은 날짜에 거래되었다면 날짜별 대응 관계를 유지합니다. 각 부트스트랩 재표본에서 두 전략에 동일한 시간 블록을 적용한 뒤 샤프 비율 차이를 계산하세요. 전략마다 다른 날짜를 뽑으면 동시점 관계가 사라져 차이의 불확실성을 잘못 추정할 수 있습니다.
추정된 차이는 양수여도 선택한 신뢰구간이 0을 포함할 수 있습니다. 이 경우 해당 구간의 명목 수준과 방법을 전제로 했을 때 관측 표본이 차이의 부호를 가려 주지 못했다는 뜻입니다. 두 전략이 같다는 증명이 아니고, 어느 한쪽이 앞으로 더 좋은 성과를 낸다는 뜻도 아닙니다. 구간이 0을 제외하더라도 전략 선택 방식, 표본 기간, 통계량, 블록 길이의 선택은 여전히 추론에 영향을 줍니다.
한 전략의 성과를 추정할 때는 해당 전략의 시간 순서를 지킵니다. 짝지은 전략을 비교할 때는 공통 달력의 시간 블록을 유지합니다. 두 질문 중 어느 신뢰구간을 제시하는지 분명히 써서 짝지은 비교와 두 개의 개별 구간을 혼동하지 않게 합니다.
블록 길이를 정하고 민감도를 확인합니다
블록이 너무 짧으면 보존하려는 의존성이 끊길 수 있습니다. 반대로 너무 길면 재조합할 수 있는 서로 다른 블록이 줄어 추정량이 불안정해질 수 있습니다. 적절한 규모는 수익률 빈도, 의존 패턴, 표본 크기, 보유 기간, 통계량에 따라 다릅니다. 모든 전략에 맞는 하나의 블록 길이는 없습니다.
결과를 해석하기 전에 기록된 선택 규칙을 적용하거나, 타당한 후보 길이를 좁은 범위로 정당화합니다. 그 범위에서 신뢰구간을 다시 계산하세요. 조금만 길이를 바꿔도 결론이 크게 달라지면 유리한 숫자 하나를 고르는 대신 그 불안정성을 보고해야 합니다. 재현성이 중요하다면 부트스트랩 종류, 반복 횟수, 난수 시드와 함께 통계량, 신뢰수준, 수익률 빈도도 기록합니다.
포지션이 겹치는 경우, 전략의 보유 기간보다 높은 빈도로 수익률을 기록하는 경우, 변동성 군집이 오래 지속되는 경우에는 이런 자료 특성을 블록 선택에 반영해야 합니다. 거래 비용을 반영한 전략 성과를 평가한다면 구간 계산에 넣는 수익률에도 관련 비용을 포함합니다. 총수익률 기준 구간과 순수익률 기준 구간은 서로 다른 질문에 답합니다.
신뢰구간이 다루지 않는 범위를 확인합니다
전통적인 블록 절차는 기술적 조건 아래 정상성을 갖고 약하게 의존하는 관측치를 전제로 합니다. 시장 체제가 바뀌면 과거 표본 하나가 다른 시기의 시장을 잘 대표하지 못할 수 있습니다. 블록을 재추출해도 표본에 없던 폭락 체제가 생기지는 않습니다. 생존 편향을 고치거나 비정상 시계열을 정상 시계열로 바꾸지도 않습니다. 표본의 구조 변화 여부를 살피고, 분석이 어떤 과거 생성 과정을 대표한다고 보는지 설명하세요.
이미 선택한 전략을 다시 표본추출한다고 해서 수백 가지 전략을 검색하고 승자만 보고한 과정까지 자동으로 반영되지는 않습니다. 그런 선택은 강해 보이는 통계량을 실제보다 더 설득력 있게 만들 수 있습니다. 이 문제에는 적절히 분리한 평가 표본이나 다중검정 보정처럼 검색 절차를 다루는 설계를 사용합니다. 시계열 금융 자료의 Purged CV와 embargo는 겹치는 결과 구간 사이의 정보 누수를 다루는 별도 작업입니다. 관측 수익률 신뢰구간을 대신하지는 않습니다. 다중검정과 거짓 발견율은 전략 선택 문제를 따로 설명합니다.
부트스트랩 구간은 관측 수익률, 명시한 통계량, 재표본 가정에 조건부인 불확실성을 나타냅니다. 모든 모델 불확실성, 미래의 구조 변화, 체결 실패, 자금조달 비용 변화, 꼬리 손실을 담지는 않습니다. 미래 성과의 약속으로 보지 말고, 표본 외 자료, 비용, 낙폭, 위험 통제와 함께 쓰는 진단 도구로 다루세요.
다른 사람이 재현할 수 있게 기록합니다
블록 부트스트랩 결과를 보고하기 전에 수익률 시계열과 날짜, 통계량, 부트스트랩 유형, 블록 길이 선택 규칙, 반복 횟수, 전략 선택을 처리한 방법을 기록합니다. 전략 비교에서는 두 시계열에 같은 시간 블록을 적용했는지 밝힙니다. 성과 질문에 맞는 거래 비용을 포함하고, 타당한 블록 길이 대안에 따라 구간이 어떻게 달라지는지도 보여줍니다.
독자는 어떤 계열을 재추출했는지, 표본을 행 단위로 섞었는지 추측하지 않고 분석을 재구성할 수 있어야 합니다. 자료에 강한 체제 변화가 있거나 좁은 블록 선택 하나에 결과가 좌우된다면 구간 옆에서 한계를 밝힙니다. 끝점이 소수점까지 정교하다고 시장 생성 과정이 가정에 부합한다는 불확실성까지 없어지는 것은 아닙니다.
재표본 횟수가 원자료를 늘려 주지는 않습니다
부트스트랩을 2,000회 또는 10,000회 반복할 수 있습니다. 같은 알고리즘을 더 자주 실행하면 추정된 꼬리 분위수가 난수 시드에 덜 민감해지고 몬테카를로 오차가 줄어들 수 있습니다. 하지만 원래 수익률 시계열에 날짜, 시장 체제, 독립 관측치가 추가되는 것은 아닙니다. 짧거나 여러 전략 중 선택된 표본에서 10,000개 재표본을 만들더라도 그 구간은 여전히 같은 제한된 과거 자료와 설계에 조건부입니다.
반복 횟수를 비교할 때는 수익률 자료, 통계량, 부트스트랩 종류와 블록 길이 규칙을 고정합니다. 반복 횟수와 난수 시드를 기록하세요. 횟수가 늘면서 구간 끝점이 크게 움직이면 수치 근사가 아직 불안정할 수 있습니다. 끝점이 안정되어도 선택한 자료와 가정에서 시뮬레이션이 정밀해졌다는 뜻일 뿐, 표본의 제약이나 구조 변화, 전략 탐색 편향이 해결된 것은 아닙니다.
원자료가 주간 수익률 100개라면 각 재표본도 같은 길이의 100개 관측치로 구성됩니다. 이를 10,000회 반복하는 것은 대체 시계열을 10,000개 만들어 통계량 계산을 되풀이한다는 뜻입니다. 새로운 날짜 10,000개나 추가 시장 체제를 관찰한 것이 아닙니다. 블록이 겹치거나 같은 구간이 다시 뽑힐 수도 있어, 재표본을 각각 독립적인 시장 실험으로 세면 안 됩니다.
반복 횟수가 충분하지 않으면 난수 시드에 따라 하한·상한 분위수가 조금 달라질 수 있습니다. 반복 횟수를 늘렸을 때 끝점이 안정되면 선택한 자료와 블록 설계에 대한 수치 오차가 줄었다고 볼 수 있습니다. 이를 표본 기간이나 블록 길이 선택에 따른 불확실성이 줄었다는 뜻으로 해석하지 마세요. 반복 횟수와 블록 설계의 민감도는 따로 확인해야 합니다.
결과에는 반복 횟수와 난수 시드를 기록하고, 수치 안정성과 표본 자체의 불확실성을 구분해 설명합니다.
자주 묻는 질문
Q1블록 부트스트랩 신뢰구간은 트레이더에게 무엇을 알려주나요?
평균수익률이나 샤프 비율 차이 같은 통계량이 명시한 의존 수익률 과정의 반복 표본에서 얼마나 달라질 수 있는지 추정합니다. 다음 거래의 예측 범위나 가능한 손실의 한도가 아닙니다.
Q2블록 길이는 어떻게 정하나요?
수익률 빈도, 의존성, 표본 크기, 통계량을 고려해 기록 가능한 선택 규칙을 쓰거나 타당한 후보 범위를 정합니다. 그 안에서 결과의 민감도를 비교해 유의미한 변화를 보고하세요. 모든 전략에 맞는 보편 설정은 없습니다.
Q3블록 부트스트랩이 백테스트 과적합을 없애나요?
아닙니다. 제공된 수익률 계열과 전략 정의에 대한 불확실성을 추정할 뿐입니다. 여러 대안 가운데 전략을 골랐다면 평가 설계나 다중검정 방법으로 선택 과정을 별도로 다뤄야 합니다. 주요 연구 - Künsch, “The Jackknife and the Bootstrap for General Stationary Observations” (1989) - Politis and Romano, “The Stationary Bootstrap” (1994) - Ledoit and Wolf, “Robust Performance Hypothesis Testing with the Sharpe Ratio” (2008)
출처와 더 읽을 자료
내용 정정 제보
이 아티클 링크를 담은 이메일 초안을 준비합니다. 직접 보내야 Mark에 제보가 접수됩니다
QUICK CHECK
글을 다 읽었다면, 3문항으로 확인해보세요
Question 01
블록 부트스트랩에서 가까운 수익률 관측치를 함께 유지하는 이유는 무엇인가요?
정답을 고르면 바로 설명을 볼 수 있어요