국내 바이오 핵심 모달리티별 대표 종목을 대상으로 모멘텀 기반 자산배분 전략을 구현하고, 백테스트 결과가 전략의 성질인지 특정 기간의 성질인지 검증한 프로젝트입니다.
처음 설계한 전략은 CAGR 39.57%, Sharpe 0.9212를 기록했습니다. 그러나 성과의 원인을 하나씩 확인하는 과정에서 다음을 발견했습니다.
- 하락 방어를 위해 넣은 안전자산 전환 규칙이 전체 기간의 4.19%만 작동하고 있었습니다.
- 데이터를 4개월 연장하자 MDD 우위가 10.33%p 우세에서 4.70%p 열세로 역전되었습니다.
- 하락장 상관계수가 낮게 나온 것은 표본을 고르는 방식이 만들어낸 값이었습니다.
원인을 파악해 조건을 조정한 결과 Sharpe는 1.2191로 개선되었고, 이 조정은 설계에 사용하지 않은 기간에서도 동일한 방향으로 작동했습니다.
| 항목 | 내용 |
|---|---|
| 유니버스 | CDMO(삼성바이오로직스), ADC(리가켐바이오), Platform(알테오젠), Medical AI(루닛) |
| 안전자산 | KODEX 국고채10년 |
| 기간 | 2022-07-21 ~ 2026-08-03 (백테스트 978거래일, 리밸런싱 48회) |
| 신호 | 최근 6개 월말 대비 상승 횟수를 6으로 나눈 점수 (0 ~ 1) |
| 배분 | 점수 비율대로 비중 부여, 점수 합이 기준값 이하면 안전자산 100% |
| 실행 | 월말 종가로 계산 후 다음 거래일부터 적용 |
| 비용 | 편도 0.1%, 회전율 비례 |
| 비교 대상 | 위험자산 4종 동일비중 월간 리밸런싱 |
시작일이 2022년 7월인 것은 루닛 상장일 때문이며, 종료일은 재현성을 위해 고정했습니다.
| 설정 | CAGR | MDD | Volatility | Sharpe |
|---|---|---|---|---|
| 초기 설계 | 39.57% | 49.58% | 49.28% | 0.9212 |
| 전환 기준값 조정 | 56.30% | 32.09% | 44.81% | 1.2191 |
| 변동성 역가중 추가 | 43.66% | 31.80% | 39.94% | 1.1060 |
| 동일비중 비교군 | 33.15% | 44.48% | 43.19% | 0.8780 |
설계에 사용하지 않은 구간(2026-04-10 이후) 성과는 다음과 같습니다.
| 설정 | 수익률 | MDD |
|---|---|---|
| 초기 설계 | -32.31% | 43.38% |
| 전환 기준값 조정 | -18.64% | 21.93% |
| 동일비중 비교군 | -27.51% | 38.68% |
1. 재현성 — 종료일을 지정하지 않으면 실행 시점마다 결과가 달라집니다. 4월과 8월 실행 결과가 CAGR 기준 21%p 차이 났고, 이후 종료일을 고정했습니다.
2. 규칙 작동 여부 — 안전자산 전환은 978거래일 중 41일만 발동했습니다. 4종목이 6개 비교 시점 전부에서 하락해야 하는 조건이 지나치게 엄격했고, 정작 낙폭이 가장 컸던 구간에서는 작동하지 않았습니다.
3. 아웃오브샘플 — 전략 설계 시점(2026-04-09)을 기준으로 구간을 분리해 설계에 쓰지 않은 기간에서도 같은 방향으로 작동하는지 확인했습니다.
4. 파라미터 안정성 — 전환 기준값을 0.1 단위로 스캔한 결과 0.5에서 1.4까지 Sharpe가 1.18에서 1.22 사이로 유지되었습니다. 특정 값에만 맞아떨어진 결과가 아님을 확인했습니다.
5. 지표 단독 판단의 위험 — MDD만 보면 기준값 1.9에서 2.1이 가장 우수해 보이지만, 이는 전체 기간의 40% 이상을 안전자산으로 보낸 결과이며 Sharpe는 비교군보다 낮습니다.
6. 조건부 상관의 편향 — 포트폴리오 자체의 평균 수익률로 하락일을 선별하자 평균 상관이 0.0172로 계산되었습니다. 코스닥 지수를 기준으로 다시 선별하니 0.1972였습니다. 표본 선별 방식이 상관 구조를 왜곡한 사례입니다.
7. 분산 효과 분해 — 개별 종목 변동성 평균 61.02%가 포트폴리오에서 43.19%로 감소했습니다. 분산은 작동했으며, 낙폭의 원인은 배분 방식이 아니라 개별 종목의 변동성이었습니다.
8. 변동성 역가중 검증 — 위 진단에 따라 점수를 변동성으로 나누어 배분했습니다. 변동성은 4.87%p 낮아졌으나 CAGR이 12.64%p 감소해 Sharpe는 오히려 하락했습니다. 해당 기간에는 변동성이 큰 종목이 수익률도 높았기 때문입니다.
9. 거래비용 민감도 — 비용 0.1%p당 CAGR 약 0.94%p 감소. 0.5%까지 상향해도 Sharpe는 6% 감소에 그쳐, 전략의 취약점은 비용이 아닌 하락 방어에 있음을 확인했습니다.
종목 선정 편향 — 2026년 시점에서 각 모달리티의 대표 종목을 선택했습니다. Platform 한 종목의 수익률이 474.12%로 나머지 세 종목(18.35%, 106.72%, 10.15%)을 압도합니다. 성과가 전략에서 비롯된 것인지 종목 선택에서 비롯된 것인지 현재 구성으로는 분리되지 않습니다.
표본 규모 — 약 4년, 리밸런싱 48회. 4개월 연장만으로 결론이 뒤집힌 전례가 있습니다.
설정 탐색 — 복수의 파라미터 조합을 비교한 뒤 선택했습니다. 아웃오브샘플 검증 구간은 4개월, 하락 국면 1회입니다.
- 시가총액·거래대금 기준의 규칙 기반 종목 선정으로 선정 편향 제거
- 모멘텀 산출 기간(3/9/12개월) 비교
- 변동성 산출 구간(현재 60거래일) 변경에 따른 결과 변화
- 타 업종 편입 시 분산 효과 변화
- 안전자산 선택 — 국고채 10년물을 썼으나 듀레이션 선택에 근거가 없음. 만기에 따라 금리 반응과 주식과의 상관이 달라지며, 2022년에는 주식과 채권이 함께 하락함
pip install finance-datareader pandas numpy matplotlib
Kbio_Modality_Rotation_Strategy.ipynb를 위에서부터 순서대로 실행하면 됩니다.
종료일이 고정되어 있어 언제 실행해도 문서의 수치와 동일한 결과가 나옵니다.
MIT
이 저장소의 코드와 분석은 학습 및 연구 목적으로 작성되었으며, 투자 판단의 근거로 사용하기 위한 것이 아닙니다. 백테스트 결과는 과거 데이터에 기반하며 향후 성과를 보장하지 않습니다.