로지스틱 회귀는 기준선을 넘을까? 공정한 모델 비교의 조건
근거와 검증 범위 — 실험 설계·미실행 범위
실제 가격 확보·모델 학습·월별 백테스트·비용 후 성과 검증은 실행하지 않았습니다. 표의 확률은 설명용 합성 가정이며, 본문은 공정한 비교를 위한 시간축과 평가 규칙을 정리합니다.
「나만의 퀀트 리서치 시스템 만들기」 6편입니다. 결론부터 말하면, 로지스틱 회귀가 기준 전략을 넘는지는 아직 판정할 수 없습니다. SPY·IEF·GLD는 이 글의 연구 후보일 뿐이며, 실제 가격 원자료 확보, 모델 학습, 월별 백테스트, 비용 후 성과 산출, 전략 우열 검증은 이번 글에서 실행하지 않았습니다.
5편에서 점검한 합성 비용·회전율·낙폭 회계는 거래 장부의 규칙이 일관되는지 확인한 작업이었습니다. 그것은 로지스틱 회귀의 예측력이나 비용 후 수익성을 검증한 결과가 아닙니다. 이번 글의 목표는 실제 시계열을 받기 전에, 첫 ML 모델과 기준 전략을 공정하게 비교할 수 있도록 시간축과 평가 규칙을 고정하는 데 있습니다.
확률은 수익률이 아니라 사건의 추정치다
로지스틱 회귀는 이진 사건이 일어날 조건부 확률을 추정하는 분류 모델입니다. [S1] 이 글에서 레이블을 “다음 실제 보유 가능 구간의 수익이 양수인가”로 정의한다면, 모델의 출력은 그 사건이 일어날 추정확률입니다.
따라서 확률이 0.60이라고 해서 기대수익률이 60%라는 뜻은 아닙니다. 수익이 확정됐다는 뜻도 아니고, 전략 전체의 수익률을 뜻하지도 않습니다. 확률은 레이블을 맞히는 분류 문제의 출력이고, 전략 성과는 그 신호를 체결가격·비중·비용·현금 규칙으로 바꾼 뒤의 경제적 결과입니다. 이 둘을 같은 숫자로 취급하면 검증 목적이 흐려집니다. [S1][S3][S4]
관측·신호·체결·레이블을 같은 시간축에 놓기
금융 시계열에서는 “언제 알 수 있었는가”가 특징값 자체만큼 중요합니다. 미래에 확정되거나 공개된 정보를 과거 신호에 섞으면 정보누수가 생길 수 있으며, 시간 순서를 보존한 평가 설계가 필요합니다. [S2][S3]
여기서는 다음의 설계 가정을 둡니다. 월말 종가까지의 과거수익과 변동성으로 특징을 만들고, 월말 종가 시점에 신호를 생성합니다. 실제 주문과 체결은 다음 거래일 종가에 일어난다고 가정합니다.
| 단계 | 사전 고정할 설계 예시 | 그 시점에 허용되는 정보 |
|---|---|---|
| 특징 관측 마감 | 월말 종가까지의 과거수익·변동성 계산 | 월말 종가까지 확정된 입력 |
| 신호 생성 | 월말 종가 기준으로 다음 보유구간 상승확률 추정 | 특징 관측 마감 시점까지의 정보 |
| 주문·체결 | 다음 거래일 종가에 체결한다고 가정 | 월말 신호만 사용 |
| 레이블 구간 | 체결 시점부터 다음 체결 시점까지의 수익으로 상승 여부 정의 | 신호~체결 구간 수익은 제외 |
| 레이블 확정·재학습 | 다음 체결 시점 이후 학습 자료로 편입 | 확정된 과거 레이블만 사용 |
이 시간축에서 레이블은 “월말 신호 후 막연한 한 달 수익”이 아닙니다. 실제 보유 가능한 다음 거래일 종가 체결부터 다음 체결 시점까지의 수익이 양수인지로 정의합니다. 신호와 체결 사이에 발생한 가격 움직임은 당시 보유하지 않았으므로 레이블 수익에 넣지 않습니다. 이는 특징의 관측시점, 목표기간, 실제 가용정보가 겹치지 않도록 하는 보수적 설계상의 추론입니다. [S3]
또한 레이블은 종료시점이 지나기 전에는 확정되지 않습니다. 예를 들어 이번 달 신호의 보유구간이 아직 끝나지 않았다면, 그 레이블을 다음 달 재학습에 넣을 수 없습니다. “과거 데이터”라는 표현만으로는 충분하지 않고, 그 레이블이 어느 시점에 확정됐는지를 기록해야 합니다. [S3]
개발·검증·최종 테스트의 역할을 분리하기
설계 예시로 2007~2017을 개발 구간, 2018~2020을 검증 구간, 2021~2025를 최종 테스트 구간으로 나눌 수 있습니다. 이는 실제 데이터가 확보됐거나 실험이 실행됐다는 뜻이 아니라, 앞으로 사전에 고정할 계획 예시입니다.
이 글의 시간순 분할에서는 개발·검증 경계와 검증·최종 테스트 경계 모두에서, 앞 구간에 속하지만 레이블의 보유기간이 뒤 구간까지 이어지는 표본을 앞 구간에서 제거합니다. 앞 구간의 학습이나 모델 선택에 뒤 구간의 가격 움직임이 섞이지 않게 하려는 설계입니다. [S3][S4][S5] 구간 분리는 평가 자료의 경계를 정하고, 사전에 고정한 월별 재학습 규칙은 테스트 중 학습창을 갱신하는 조건을 정합니다. 구체적인 재학습 조건은 다음 절에서 설명합니다. [S3][S4][S5] 무작위 분할 대신 시간 순서를 유지하는 이유도 여기에 있습니다. 시계열에서는 일반적인 교차검증의 가정이 깨질 수 있고, 실제 사용 환경과 시간적으로 분리된 평가가 필요합니다. [S2][S5]
특징 목록, 정규화 방식, 확률 임계값은 개발과 검증 구간에서만 선택합니다. 최종 테스트에서 좋아 보이는 특징이나 임계값을 다시 고르면, 테스트는 더 이상 독립적인 최종 평가가 아닙니다. 테스트 데이터를 모델 선택이나 전처리 선택에 사용하지 않아야 한다는 원칙은 과도하게 낙관적인 평가를 줄이기 위한 것입니다. [S4][S5]
전처리와 월별 재학습에서 지켜야 할 경계
표준화는 편리하지만, 평균과 표준편차에도 미래 정보가 들어갈 수 있습니다. 따라서 scaler는 매 재학습 시점의 학습창에서만 fit하고, 검증·테스트 구간에는 같은 파라미터로 transform만 적용합니다. [S4][S5]
월별 expanding 학습은 과거 자료가 쌓일수록 학습창을 넓히는 방식입니다. 다만 이것은 테스트 성과를 보며 모델을 다시 설계하는 일과 다릅니다. 테스트 기간에도 사전에 정한 월별 일정에 따라, 해당 신호 생성 시점까지 보유기간이 종료되고 확정된 과거 레이블만 학습창에 추가합니다. 특징·정규화 방식·임계값은 개발과 검증에서 선택한 대로 유지하며, 테스트 결과를 보고 다시 선택하지 않습니다. [S3][S4][S5]
아래 코드는 재현 구조를 설명하기 위한 미실행 교육 예시입니다. 설치 완료, 데이터 준비, 모델 적합, 전체 시스템 구현을 뜻하지 않습니다.
from sklearn.pipeline import Pipelinefrom sklearn.preprocessing import StandardScalerfrom sklearn.linear_model import LogisticRegressionmodel = Pipeline([ ("scaler", StandardScaler()), ("classifier", LogisticRegression(max_iter=1000)),])# 각 재학습 시점에:# X_train, y_train에는 그때까지 확정된 과거 레이블만 넣는다.# model.fit(X_train, y_train)# p_up = model.predict_proba(X_current)[:, 1]실제 실행에서는 사용 라이브러리 버전과 설정을 함께 남겨야 합니다. scikit-learn 1.9.1 릴리스도 공지되어 있으므로, “scikit-learn을 사용했다”는 기록만으로는 재현 조건이 충분하지 않을 수 있습니다. [S6]
데이터가 부족할 때의 정책도 먼저 고정한다
최소 표본 수, 단일 클래스, 특징 결측은 결과가 나온 뒤에 예외 처리하면 선택편향을 만들기 쉽습니다. [S3][S4][S5] 다음은 최적값을 주장하는 규칙이 아니라, 실험 전에 문서화할 수 있는 설계 예시입니다.
- 최소 학습 표본 수는 아직 수치를 정하지 않은 설계 항목이다. 실제 실험 전에 기준을 정하고, 확정 레이블 수가 그 기준보다 적으면 해당 월의 모델 학습과 신호 생성을 생략한다.
- 학습창에 상승 또는 하락 레이블 하나만 존재하면 해당 월의 모델 학습과 신호 생성을 생략한다.
- 학습이나 현재 신호 생성에 필요한 특징값에 결측이 있으면 해당 월의 모델 학습과 신호 생성을 생략한다.
- 위 사유로 신호를 생략한 달은 모두 목표비중을 전액 현금으로 정한다. 기존 보유분이 있으면 예정된 다음 거래일 종가 체결 시점에 매도하고 공통 비용 규칙을 적용한다.
- 이 현금 전환 정책은 일관된 처리를 위한 설계 예시이며, 최적 처리법으로 검증된 것은 아니다. 사후 결과를 보고 예외 규칙을 바꾸지 않는다는 원칙을 적용한 것이다. [S3][S4][S5]
중요한 점은 “이번 달에 모델이 실패했으니 수익이 좋았을 규칙으로 바꾸자”가 아니라, 실패 시 무엇을 할지 먼저 정해 두는 것입니다.
확률을 비중으로 바꾸는 설명용 예시
아래 표의 확률은 학습된 모델의 출력도, ETF 실험 결과도 아닙니다. 확률 임계값이 매매 비중으로 변환되는 방식을 보여 주기 위한 설명용 합성 가정입니다.
고정 임계값을 0.55로 두고, SYN_A·SYN_B·SYN_C의 합성 확률을 각각 0.60, 0.45, 0.70이라고 가정합니다.
| 자산 | 설명용 합성 확률 | 임계값 충족 여부 | 설명용 비중 |
|---|---|---|---|
| SYN_A | 0.60 | 충족 | 0.5 |
| SYN_B | 0.45 | 미달 | 0 |
| SYN_C | 0.70 | 충족 | 0.5 |
이 가정에서는 SYN_A와 SYN_C에 각각 0.5를 배분합니다. 모든 자산이 임계값에 미달하면 현금을 보유하며, 이 교육 예시에서는 현금수익률을 0으로 둡니다. 0.55가 유효한 임계값인지, 같은 비중 배분이 합리적인지, 실제 SPY·IEF·GLD에서 비용 후 성과가 있는지는 아직 검증되지 않았습니다. [S1][S3][S5]
공정한 비교는 공통 회계에서 시작한다
검증은 실제 사용 환경과 일관돼야 한다는 일반 원칙이 있습니다. [S5] 이를 적용해 이 글에서는 향후 매수 후 보유, 모멘텀, ML 전략에 같은 시작일·종료일·초기자산·체결가격·비용률·현금 처리·종료평가 규칙을 적용하는 비교 설계를 채택합니다. 이 구체적인 ETF 매매 조건은 해당 문헌이 직접 규정한 규칙이 아니라 이 글의 설계 선택입니다.
5편에서 정한 실제 거래대금 기준 비용식과 회전율 정의도 모든 전략에 동일하게 적용해야 합니다. 최초 진입 비용은 ML 전략에만 적용하거나, 청산비용과 현금 규칙을 전략별로 다르게 두면 비교가 공정하지 않습니다. 준비기간이 길어 특정 전략의 실제 거래 시작일이 늦다면, 공통 평가 기간과 준비기간을 분리해 공개해야 합니다.
특히 5편의 합성 단일구간 회계 결과와, 미래에 다른 기간에서 실행할 실제 ML 성과를 나란히 놓고 우열을 선언해서는 안 됩니다. 이 글에서 채택한 성과 비교 범위는 같은 데이터, 같은 기간, 같은 체결 규칙, 같은 비용 회계를 적용한 전략들입니다.
정확도와 확률 평가는 “레이블을 얼마나 잘 맞혔는가”를 묻습니다. 비용 후 수익, 최대낙폭, 회전율은 “그 신호를 실제 매매 규칙으로 바꿨을 때 어떤 결과가 나왔는가”를 묻습니다. 한쪽의 개선이 다른 쪽을 자동으로 보장하지는 않습니다. [S1][S3][S4][S5]
다음 실행에서 남길 기록
이번 편에서 정리한 것은 비교 설계의 시간축·평가 원칙과 예외 처리 예시입니다. 최소 학습 표본 수의 수치 기준은 아직 정하지 않았으며, 실증도 미완료입니다. 다음 7편에서 실제 실행으로 이어진다면 결과 수치뿐 아니라 다음 기록을 보존해야 합니다.
- 실행 ID와 데이터 식별자
- 데이터 기간과 특징 목록
- 레이블의 시작·종료·확정 시각
- 개발·검증·테스트 경계와 제거한 경계 레이블
- 재학습 일정, 비용식, 체결 가정, 현금 규칙
- 패키지 버전과 난수 시드
- 실패한 실행, 제외한 데이터, 예외 처리 기록
이 기록이 있어야 결과가 좋든 나쁘든 같은 실험을 다시 확인할 수 있습니다. 그 전까지 로지스틱 회귀가 기준선을 넘는다는 말도, 넘지 못한다는 말도 성급합니다.
이 글은 교육·연구용 설계 문서이며 투자 추천이나 수익 보장이 아닙니다.
Sources
- [S1] Statistics review 14: Logistic regression | Viv Bewick, Liz Cheek, Jonathan Ball; Critical Care | 2005-01-13 | https://pmc.ncbi.nlm.nih.gov/articles/PMC1065119/ ↩
- [S2] On the use of cross-validation for time series predictor evaluation | Christoph Bergmeir and José M. Benítez; Information Sciences | 2012-05-15 | https://doi.org/10.1016/j.ins.2011.12.028 ↩
- [S3] Information leakage in financial machine learning research | Zachary David; Algorithmic Finance | 2019-12-19 | https://journals.sagepub.com/doi/10.3233/AF-190900 ↩
- [S4] Being Aware of Data Leakage and Cross-Validation Scaling in Chemometric Model Validation | Péter Király and Gergely Tóth; Journal of Chemometrics | 2025-04-01 | https://analyticalsciencejournals.onlinelibrary.wiley.com/doi/10.1002/cem.70026 ↩
- [S5] A Set of Rules for Model Validation | José Camacho; Journal of Chemometrics | 2026-02-17 | https://analyticalsciencejournals.onlinelibrary.wiley.com/doi/10.1002/cem.70110 ↩
- [S6] Scikit-learn 1.9.1 | scikit-learn project | 2026-09-11 | https://github.com/scikit-learn/scikit-learn/releases/tag/1.9.1 ↩
오류 제보·의견 보내기
글 제목과 주소가 포함된 메일 초안을 엽니다. 내용과 받는 사람을 확인한 뒤 보내주세요.
받는 사람: [email protected]
메일 앱에서 작성메일 앱이 열리지 않으면 아래 내용을 복사해 평소 쓰는 이메일에 붙여 넣으세요.
관련 글
퀀트·데이터 연구 7편. 첫 머신러닝 모델: 로지스틱 회귀로 다음 리밸런싱 기간의 상승 확률을 검증하기
로지스틱 회귀를 첫 ML 기준선으로 삼아 특징, 레이블, 시간 분할과 월별 재학습을 설계합니다. 실제 성과 수치 대신 정확도와 투자 수익을 분리하는 검증 기준을 제시합니다.
퀀트·데이터 연구 금융 머신러닝에서 우연한 결과를 실력으로 오인할 위험과 반증 조건
금융 머신러닝의 좋은 결과를 과신하게 만드는 잡음, 시장 변화, 반복 탐색과 정보누수를 살펴봅니다. 비용과 연구자 편향까지 포함해 결과의 반증 조건을 정리합니다.