CHAPTER 07.2 / HYPOTHESIS DESIGN
7.2 설명 가능하고 단순한 전략 설계하기
20개 종목의 가상 반전 연구에서 종목 선택, 거래 순서, 비용과 최소 통과 기준을 결과를 보기 전에 정합니다.
7.2 설명 가능하고 단순한 전략 설계하기
7.1의 가상 단기 반전 사례를 결과 확인 전에 연구 가설서로 정리한다. 여기서 가설은 아직 맞다고 확정하지 않은 연구 예상이고, 가설서는 거래 이유·종목 선택·거래 시점·비용·통과 기준을 미리 적는 문서다. Reproducibility(재현 가능성)는 다른 사람이 같은 자료와 규칙으로 같은 계산을 다시 할 수 있다는 뜻이다.
7.1의 원인 후보를 결과 보기 전 문서로 바꾼다
7.1에서는 Forced trading(강제 거래)과 Liquidity provision(유동성 제공)을 아직 확인되지 않은 원인 후보로 남겼다. 이제 11회 결과의 비용 전 평균 12bp에 설명을 끼워 맞추지 않도록, 새로운 자료를 보기 전에 다음 여덟 항목과 통과 실패 조건을 적는다.
- 왜 상대가 서둘러 거래하는가
- 쉽게 말하면
- 거래 상대가 왜 가격보다 빠른 거래를 우선하는지와 연구자가 그 주문을 어떻게 받아 주는지를 적습니다.
- 이번 사례에서 미리 정한 내용
- 장 마감 무렵 자금 유출, 위험 한도 초과 또는 Margin requirement(담보를 더 내거나 포지션을 줄여야 하는 요구) 때문에 빨리 매도해야 하는 상대의 주문을 연구자가 받아 매수합니다.
- 왜 확인해야 하나
- 급한 매도가 가격 하락보다 먼저 나타나야 Forced trading(강제 거래)이 가격을 움직인 원인 후보라고 볼 수 있습니다. 새로운 악재가 먼저 나왔다면 가격 하락은 일시적인 매도 압력 때문이 아닐 수 있습니다.
- 그래서 확인할 질문
- 자금 유출·위험 한도 초과·마진 요구와 주문 불균형이 가격 하락과 이후 반전보다 먼저 나타났는가?
- 어떤 종목을 거래하는가
- 쉽게 말하면
- Universe(거래 대상 종목)는 전략이 날짜마다 선택할 수 있는 전체 종목 범위입니다.
- 이번 사례에서 미리 정한 내용
- 각 날짜에 실제로 거래 가능했고 거래가 활발했던 상위 20개 종목만 사용합니다.
- 왜 확인해야 하나
- 당시에는 거래할 수 없었던 종목을 넣거나 나중에 살아남은 종목만 고르면 과거 결과가 실제보다 좋아 보일 수 있습니다.
- 그래서 확인할 질문
- 분석이 끝난 뒤 살아남은 종목만 골라 과거에도 거래할 수 있었던 것처럼 사용하지 않았는가?
- 어떤 기준으로 종목을 고르는가
- 쉽게 말하면
- Signal(종목 선택 기준)은 어떤 종목을 사고팔지 정하는 규칙입니다. Cross-sectional ranking(같은 날짜의 여러 종목 수익률을 서로 비교한 순위)을 사용합니다.
- 이번 사례에서 미리 정한 내용
- 거래일 t의 정규 거래 시간이 끝난 뒤, 20개 종목의 전일 수익률을 서로 비교해 순위를 정합니다.
- 왜 확인해야 하나
- 순위를 알기 전에 그 순위로 거래했다고 계산하면 미래 정보를 미리 사용한 셈이 됩니다. 실제로 실행할 수 없는 거래이므로 결과를 믿을 수 없습니다.
- 그래서 확인할 질문
- 순위를 계산하는 데 사용한 가격을 거래일 t가 끝난 시점에 실제로 알 수 있었는가?
- 무엇을 매수하고 무엇을 매도하는가
- 쉽게 말하면
- 매수할 종목 묶음과 매도할 종목 묶음, 즉 매수·매도 방향을 적습니다.
- 이번 사례에서 미리 정한 내용
- 전일 수익률 순위가 낮은 종목 묶음을 매수하고 순위가 높은 종목 묶음을 매도합니다.
- 왜 확인해야 하나
- 결과를 본 뒤 매수와 매도 방향을 뒤집으면 같은 자료에서 원하는 답을 만들 수 있습니다. 그러면 처음 정한 가설을 시험한 것이 아닙니다.
- 그래서 확인할 질문
- 두 종목 묶음과 매수·매도 방향을 결과를 보기 전에 정했는가?
- 언제 거래를 시작하고 끝내는가
- 쉽게 말하면
- 신호를 알게 된 뒤 실제로 주문할 수 있는 첫 시점과 포지션을 모두 정리할 시점을 적습니다.
- 이번 사례에서 미리 정한 내용
- 거래일 t의 다음 거래일인 t+1 시가에 매수·매도를 실행하고, t+2 시가에 모든 포지션을 정리합니다.
- 왜 확인해야 하나
- 종목 순위를 확인하기 전 가격으로 거래했다고 계산하면 실제보다 유리한 가격을 사용할 수 있습니다. 그러면 전략 결과가 실제보다 크게 보일 수 있습니다.
- 그래서 확인할 질문
- 종목 순위를 확인한 뒤 실제로 주문할 수 있는 시점의 가격을 사용했는가?
- 얼마나 과거를 보고 얼마나 보유하는가
- 쉽게 말하면
- Lookback period(신호 계산에 사용하는 과거 기간)와 Holding period(포지션을 유지하는 기간)를 따로 적습니다.
- 이번 사례에서 미리 정한 내용
- 신호 계산에는 직전 1거래일을 사용하고, 매수·매도한 포지션은 1거래일 동안 보유합니다.
- 왜 확인해야 하나
- 신호 계산에 미래 가격이 섞이면 정답을 미리 본 계산이 됩니다. 결과를 본 뒤 기간을 바꾸면 가장 좋아 보이는 조합만 고를 수도 있습니다.
- 그래서 확인할 질문
- 종목 순위를 만들 때 사용한 과거 가격과 전략 결과를 계산할 미래 가격이 서로 섞이지 않았는가?
- 비용과 주문 크기를 얼마로 둘 것인가
- 쉽게 말하면
- 거래할 때 드는 비용과 Capacity(결과를 크게 해치지 않고 거래할 수 있는 규모)를 적습니다.
- 이번 사례에서 미리 정한 내용
- 진입 2bp, 청산 3bp, 보유 1bp로 총비용은 6bp입니다. 주문은 거래 시점 일평균 거래량의 1%를 넘지 않게 합니다.
- 왜 확인해야 하나
- 거래비용을 빼지 않거나 큰 주문이 가격을 움직이는 영향을 무시하면 실제로 남는 1회당 평균 결과가 과장될 수 있습니다.
- 그래서 확인할 질문
- 좋은 결과를 확인한 뒤 비용을 낮추거나 주문 규모 상한을 바꾸지 않았는가?
- 어떤 결과면 현재 가설을 통과시키지 않는가
- 쉽게 말하면
- 가설을 통과시키지 않을 숫자 기준을 결과를 보기 전에 정합니다. Rejection(기각: 현재 가설을 통과시키지 않음)은 전략이 언제나 손실이라는 뜻이 아닙니다.
- 이번 사례에서 미리 정한 내용
- Net edge(거래비용을 뺀 뒤 남는 1회당 평균 결과)가 8bp 미만이거나, Out-of-sample average(전략 설계에 사용하지 않은 새 기간의 평균 결과)가 0bp 이하이면 현재 가설을 통과시키지 않습니다.
- 왜 확인해야 하나
- 결과를 본 뒤 8bp 기준을 낮추면 거의 모든 양수 결과를 성공으로 바꿀 수 있습니다. 그러면 처음 정한 기준으로 가설을 판단한다는 의미가 사라집니다.
- 그래서 확인할 질문
- 결과가 0보다 크다는 이유만으로 미리 정한 8bp 기준을 낮추지 않았는가?
좋은 가설서는 길고 복잡한 이야기가 아니다. 수익이 생긴다고 보는 이유, 거래 상대, 종목 선택 기준, 거래 순서와 통과 실패 조건이 서로 연결되어야 한다. 같은 자료를 넣었을 때 누구나 같은 결론을 얻고, 결과가 다르면 어느 단계에서 잘못됐는지 찾을 수 있어야 한다.
결과를 보기 전에 거래 순서를 정한다
종목 선택 기준에 거래일 t의 마감 가격이 들어가면 순위는 거래가 끝난 뒤에야 알 수 있다. 그런데 같은 t의 마감 가격으로 이미 거래했다고 기록하면 그 시점에 아직 알 수 없던 정보를 사용하게 된다. 이것이 Look-ahead bias(그 시점에 아직 알 수 없던 정보를 사용한 오류)다.
| 구분 | 신호 확정 | 진입 | 청산 | 왜 잘못됐거나 가능한가 |
|---|---|---|---|---|
| 잘못된 기록 | t 마감 뒤 | t 마감가 | t+1 마감가 | 신호 확정보다 체결이 앞서는 미래참조 편향 |
| 결과 전에 정한 기록 | t 마감 뒤 | t+1 시가 | t+2 시가 | 정보 확인 뒤 가능한 다음 체결 시점 사용 |
올바른 순서는 t 마감 가격 수집, t 마감 뒤 같은 날짜의 여러 종목 수익률 비교, t+1 시가에 매수·매도 시작, t+2 시가에 모든 포지션 정리다. 시가에도 모든 수량이 한 가격으로 거래된다는 보장은 없으므로 시작·종료 비용과 Capacity(결과를 크게 해치지 않고 거래할 수 있는 규모) 상한을 따로 적는다.
- Gross edge(비용을 빼기 전 평균 결과)
- 12bp
- 총비용
- 6bp
- Net edge(거래비용을 뺀 뒤 평균 결과)
- 6bp
- 결과 전에 정한 최소 기준
- 8bp
- 최소 기준보다 남거나 부족한 값
- -2bp
거래비용을 뺀 뒤 평균 결과가 0보다 커도 미리 정한 기준보다 2bp 부족하므로 현재 가설을 통과시키지 않습니다.
필수 항목을 모두 작성한 것은 전략 품질이나 수익 가능성이 확인됐다는 뜻이 아닙니다.
도구의 초기값은 7장에서 계속 사용하는 가상 사례와 같다. 결과 전에 정할 최소 평균값을 바꾸면 통과 실패 조건의 숫자도 함께 바뀌므로 계산 결과와 설명이 서로 어긋나지 않는다.
비용을 항목별로 계산한다
Edge(우위)는 이 페이지에서 전략의 1회당 평균 결과를 짧게 부르는 말이며 수익을 보장한다는 뜻이 아니다. Gross edge(비용을 빼기 전 평균 결과)에서 Entry cost(포지션을 시작할 때 드는 비용), Exit cost(포지션을 정리할 때 드는 비용)와 Holding cost(보유하는 동안 드는 비용)를 각각 차감한다. 1bp는 0.01%포인트다. 비용을 항목별로 적어 두면 어떤 비용 가정 때문에 결과가 달라졌는지 확인할 수 있다.
- Total cost(세 비용의 합계)
- 단위: 거래당 basis point(베이시스 포인트)
- Entry cost(포지션을 시작할 때 드는 비용)
- 단위: 거래당 basis point(베이시스 포인트)
- Exit cost(포지션을 정리할 때 드는 비용)
- 단위: 거래당 basis point(베이시스 포인트)
- Holding cost(보유하는 동안 드는 비용)
- 단위: 거래당 basis point(베이시스 포인트)
- Net edge(거래비용을 뺀 뒤 평균 결과)
- 단위: 거래당 basis point(베이시스 포인트)
- Gross edge(비용을 빼기 전 평균 결과)
- 단위: 거래당 basis point(베이시스 포인트)
- Minimum net edge(결과 전에 정한 최소 비용 후 평균 결과)
- 단위: 거래당 basis point(베이시스 포인트)
- Margin to minimum(최소 기준보다 남거나 부족한 값)
- 단위: 거래당 basis point(베이시스 포인트)
7장에서 계속 사용하는 사례의 비용을 빼기 전 평균은 12bp, 포지션을 시작할 때 드는 비용은 2bp, 정리할 때 드는 비용은 3bp, 보유하는 동안 드는 비용은 1bp다. 중간 계산을 생략하지 않으면 다음과 같다.
양수여도 미리 정한 최소 기준보다 작으면 통과시키지 않는다
비용 후 평균 6bp는 0보다 크지만 결과 전에 정한 최소 비용 후 평균 결과 8bp보다 2bp 부족하다. 따라서 현재 가설을 통과시키지 않는다. 이를 Rejection(기각: 현재 가설을 통과시키지 않음)이라고 한다. 통과하지 못한 뒤 기준을 5bp로 낮추거나 비용 일부를 제거해 결과를 바꾸면 안 된다.
Statistical significance(관측 결과를 우연한 변동만으로 보기 어려운 정도)와 Economic significance(비용을 빼고도 실제로 의미 있을 만큼 큰 정도)는 서로 다른 질문이다. 결과가 우연이라고 보기 어려워도 비용 후 평균이 8bp보다 작을 수 있고, 비용 후 평균이 6bp로 양수여도 관측이 적으면 우연인지 판단하기 어렵다. 이 페이지의 11회 결과만으로는 우연한 변동이 아니라고 결론 내릴 수 없다.
아이디어에서 시작하든 자료에서 시작하든 같은 기록을 남긴다
| 출발점 | 장점 | 잘못 판단할 수 있는 지점 | 반드시 남길 기록 |
|---|---|---|---|
| Idea-first(아이디어에서 시작) | 경제적 원인과 거래 상대에서 신호를 설계한다. | 그럴듯한 이야기에 맞는 데이터와 기간만 고를 수 있다. | 정보를 알 수 있었던 시점, 비용, 시험한 규칙, 실패 결과와 전략 설계에 쓰지 않은 새 기간의 결과를 남긴다. |
| Data-first(자료에서 시작) | 미리 생각하지 못한 패턴 후보를 찾는다. | Data snooping(많은 조합 중 우연히 좋아 보인 결과만 고르는 오류)이 생길 수 있다. | 아이디어를 찾는 데 사용한 자료, 가설을 다시 시험하려고 따로 남겨 둔 새 자료, 선택 절차, 시험한 규칙 수와 실패 결과를 남긴다. |
어느 방식으로 시작해도 결과를 확인하기 전에 가설서를 고정하고 두 자료를 구분해야 한다. 탐색 데이터(아이디어를 찾는 데 사용한 자료)에서 패턴을 찾았다면, 확인 데이터(가설을 다시 시험하기 위해 따로 남겨 둔 새 자료)로 같은 결과가 나오는지 확인한다. Data-first(자료에서 시작) 방식 자체가 잘못은 아니지만 탐색 데이터를 새 자료인 것처럼 다시 사용하면 안 된다.
필수 항목을 모두 작성한 것과 좋은 전략인 것은 다르다
가설서의 필수 항목을 모두 작성했다는 것은 기록이 빠지지 않았다는 뜻일 뿐이다. 원인이 맞거나 전략이 수익성이 높고 오래 유지된다는 증명은 아니다. 도구는 필수 항목을 모두 작성했는지와 최소 결과 기준을 통과했는지를 따로 확인한다. 두 항목을 모두 통과해도 새 기간에서 같은 결과가 나오는지, 결과가 우연일 가능성은 얼마나 되는지, 원하는 가격과 수량으로 실제 거래할 수 있는지와 처음 제시한 원인을 뒷받침하는 자료가 있는지 추가로 확인해야 한다.
다음과 같은 결과 해석도 미리 적어 둔다.
- 비용 후 평균 결과가 미리 정한 최소 기준 이상이면 전략 설계에 사용하지 않은 새 자료에서 다시 시험한다.
- 비용 후 평균 결과가 양수지만 최소 기준보다 작으면 현재 가설을 통과시키지 않는다.
- 효과가 0 이하이거나 예상과 반대라면 시점, 매수·매도 방향과 데이터 입력에 오류가 있는지 먼저 확인한다. 오류가 없다면 기존 설명이 틀렸을 가능성을 받아들인다.
- 특정 시장 상태에서만 양수면 처음 가설에 그 조건을 적어 두었는지 확인한다. 결과를 본 뒤 추가한 조건은 새 가설이다.
결과를 본 뒤 바꾸면 새 가설이다
비용 후 평균 6bp를 확인한 뒤 결과 전에 정한 최소 기준을 8bp에서 5bp로 낮추거나, 보유기간을 바꾸거나, 불리한 비용 항목을 제거하면 기존 가설이 통과한 것이 아니다. 변경 이유와 시점을 기록한 새 가설을 만들고 가설 확인용으로 따로 남겨 둔 새 자료에서 다시 시험해야 한다.
구체적인 Rebalancing interval(포지션을 다시 정하는 간격), Execution latency(신호 확인부터 주문까지 걸리는 시간), 자산 수, 동시 포지션 묶음(같은 시점에 함께 보유하는 포지션 수)과 Turnover(일정 기간에 사고판 비율)는 7.3에서 실제 거래 조건으로 자세히 정리한다. 이 페이지에서는 결과를 해석하기 전에 연구 가설의 원인·시간·비용·통과 실패 조건을 정하는 데 집중한다.
이해 점검
거래일 t 마감 뒤 확정된 신호를 같은 t 마감가로 체결하면 왜 Look-ahead bias(그 시점에 아직 알 수 없던 정보를 사용한 오류)인가?
신호를 알 수 있는 시점보다 체결 가정이 앞서기 때문이다. 이 사례는 t 마감 뒤 순위를 확정하고 t+1 시가에 거래를 시작해야 시간 순서가 맞는다.
비용 전 평균 12bp에서 진입 2bp, 청산 3bp와 보유 1bp를 차감하면 총비용과 비용 후 평균은 얼마인가?
총비용은 6bp이고 비용 후 평균도 6bp다. 비용 항목을 따로 남겨 어떤 비용 가정이 결과를 바꿨는지 확인한다.
비용 후 평균이 6bp로 양수인데도 왜 현재 가설을 통과시키지 않는가?
결과를 보기 전에 최소 비용 후 평균 결과를 8bp로 정했기 때문이다. 6bp는 기준보다 2bp 부족하므로 현재 가설을 통과시키지 않는다.
결과를 본 뒤 최소 기준이나 보유기간을 바꾸면 왜 새 가설인가?
관측 결과에 맞춰 통과 조건을 바꾸면 처음 정한 가설을 그대로 시험한 것이 아니기 때문이다. 변경 이유와 시점을 남기고 가설 확인용으로 따로 둔 새 자료에서 다시 시험해야 한다.
완료 기준
다음을 직접 수행하면 이 페이지를 마친 것이다.
- 각 날짜에 실제 거래 가능했던 유동성 상위 20개 종목과 Cross-sectional ranking(같은 날짜의 여러 종목 수익률 비교 순위)을 가설서에 적는다.
t마감 뒤 신호 확정,t+1시가에 거래 시작,t+2시가에 포지션 정리 순서를 다른 사람도 같은 방식으로 다시 계산할 수 있게 적는다.- 관측 기간과 보유기간을 각각 1거래일로 고정하고 거래 시점 일평균 거래량 1% 주문 상한을 적는다.
- 12bp에서 2bp, 3bp와 1bp를 차감해 총비용 6bp와 비용 후 평균 6bp를 계산한다.
- 비용 후 평균 6bp가 결과 전에 정한 최소 기준 8bp보다 2bp 부족하므로 양수여도 현재 가설을 통과시키지 않는다는 결론을 기록한다.
- Rebalancing interval(포지션을 다시 정하는 간격), Execution latency(신호 확인부터 주문까지 걸리는 시간), 동시 포지션 묶음(같은 시점에 함께 보유하는 포지션 수)과 Turnover(일정 기간에 사고판 비율)는 7.3에서 다룬다고 설명한다.
이 가설서는 연구 절차를 정하는 교육 도구다. 필수 항목을 모두 작성했다는 사실이나 양의 비용 후 평균은 실제 수익, 원인 또는 투자 적합성을 보장하지 않는다.