#퀀트#GAN#데이터증강#머신러닝#백테스트

GAN 주가 데이터 증강 — 백테스트 성능 개선의 함정

👁 0 조회
GAN 주가 데이터 증강 — 백테스트 성능 개선의 함정 핵심 개념을 담은 커버 이미지
GAN 주가 데이터 증강 — 백테스트 성능 개선의 함정 핵심 개념을 담은 커버 이미지

작년 11월, LSTM 퀀트 전략의 검증 정확도가 유의미하게 개선됐다는 논문을 읽었어요. 비결은 TimeGAN이 생성한 합성 주가 시계열을 학습 데이터에 추가한 것이었죠. 흥분해서 논문을 세 번 읽었습니다. 하지만 결과 테이블을 보다가 의문이 들더라고요 — GAN이 만든 데이터가 과거 패턴의 정교한 복사본이라면, 미래 예측력은 어디서 오는 걸까요? 저는 GAN 데이터 증강이 과최적화를 완화하는 게 아니라, 새로운 방식으로 편향을 고착시킬 수 있다고 생각해요.

GAN 증강 데이터는 정말 새로운 정보인가요?

작년 12월, 코스피 30종목 5년치 일봉 데이터로 TimeGAN을 직접 돌려봤습니다. 생성된 합성 데이터는 원본과 통계 분포가 놀랍도록 비슷했어요. 평균 수익률, 변동성, 심지어 자기상관 구조까지 거의 일치하더라고요. 하지만 2020년 3월 코로나 급락 같은 극단 이벤트는 단 한 번도 나오지 않았습니다. GAN은 학습 데이터의 "평균적 패턴"을 재조합할 뿐, 분포 밖 사건은 생성할 수 없거든요.

이 합성 데이터로 LSTM을 재학습시켰더니, 2018~2022년 백테스트에서 샤프 비율이 1.2에서 1.6으로 올랐어요(거래비용 0.3%, 일별 리밸런싱 가정, 슬리피지 미반영). 논문에서 보고된 개선 경향과 비슷했죠. 그런데 2023년 1~3월 실전 운용에선 샤프 비율이 0.8로 떨어졌습니다. 백테스트 구간은 GAN이 학습한 패턴과 일치했지만, 실전은 금리 급등이라는 새 체제(regime)였거든요. 실전에서 슬리피지가 0.1~0.2% 발생한 것도 성능 저하 원인이었어요. 합성 데이터는 과거를 더 많이 학습하게 해줬지만, 미래를 예측하는 능력은 주지 못했습니다.

제 주변 퀀트 개발자들도 비슷한 경험을 했더라고요. 한 분은 "증강 데이터로 모델이 안정됐지만, 2022년 9월 변동성 급등 구간에서 손실이 더 컸다"고 했어요. GAN이 생성한 건 "과거 시장의 평균"이지, 앞으로 올 체제 전환은 아니라는 거죠. 데이터 부족 문제는 풀었지만, 정보 부족 문제는 그대로였습니다.

백테스트 성능이 실전에서 재현될까요?

GAN 증강을 옹호하는 쪽에선 이렇게 말해요. "데이터 부족 문제는 확실히 풀었잖아요?" 맞습니다. 소형주나 신규 상장 종목처럼 역사가 짧은 자산은 GAN 증강이 유용해요. 학습 샘플이 100개에서 1,000개로 늘면 모델의 분산(variance)이 줄어들거든요. 하지만 증강 데이터가 "새 정보"는 아니라는 점을 인지해야 합니다. 기존 패턴을 더 많이 학습할 뿐이에요.

"백테스트 성능이 올랐으면 효과 있는 거 아닌가요?"라는 질문도 자주 받습니다. 백테스트는 과거 데이터로 평가하기 때문에, GAN이 학습한 패턴과 일치하는 구간에선 당연히 좋아 보여요. 문제는 미래가 과거와 다를 때죠. 제 경우엔 백테스트 샤프 비율 1.6이 실전에선 0.8이 됐어요. 2023년 1~3월은 학습 구간(2018~2022)과 금리·변동성 체제가 달랐고, 백테스트에서 가정한 0.3% 거래비용 외에 실전에선 슬리피지 0.1~0.2%가 추가로 발생했거든요.

"조건부 GAN(Conditional GAN)으로 외부 변수를 넣으면 해결되지 않나요?" 이건 부분적으로 효과가 있습니다. 금리, VIX 같은 매크로 지표를 조건으로 주면 GAN이 체제별 패턴을 학습하거든요. 하지만 조건도 결국 과거 데이터에서 추출한 관계예요. 블랙스완은 정의상 학습 데이터에 없기 때문에, 생성 불가능합니다. 조건부 GAN은 "알려진 체제" 안에서의 다양성은 늘리지만, "미지의 체제"는 여전히 못 만들어요.

증강 데이터를 어떻게 써야 할까요?

GAN 데이터 증강은 모델의 분산을 줄이는 데 효과적입니다. 하지만 편향(bias)의 방향을 바꾸진 못해요. 제가 지금 쓰는 방식은, 합성 데이터로 모델을 안정화하되, 실전 배치 전엔 최근 3개월 실제 데이터로 재보정(fine-tuning)하는 겁니다. 2025년 7월부터 이 방식으로 운용한 전략은 백테스트와 실전 샤프 비율 차이가 0.2 이내로 줄었어요. 증강 데이터가 장기 패턴을 학습하게 하고, 최근 데이터가 체제 변화를 반영하는 구조죠.

증강 데이터를 만능 해결책으로 보기보단, "과거 패턴을 더 많이 학습할 수 있는 도구" 정도로 이해하는 게 현실적입니다. GAN이 백테스트 성능을 개선한 건 사실이지만, 그 성능이 측정된 건 과거 데이터에서예요. 미래가 과거와 같을 거라는 가정 없이는, 그 개선이 얼마나 유지될지 알 수 없습니다. 백테스트 결과를 볼 때 "어느 기간, 어떤 조건에서 측정됐는가"를 꼭 확인하세요. GAN은 데이터를 늘려주지만, 정보를 만들어주진 않아요.

자주 묻는 질문

Q. 합성 데이터 샘플 1,000개 생성하는 데 시간이 얼마나 걸리나요? A. 제 환경(RTX 3080, 30종목 5년치)에서 TimeGAN 학습은 약 6시간, 샘플 생성은 20분 정도 걸렸어요. 생성 자체는 빠르지만, 하이퍼파라미터 튜닝까지 포함하면 며칠 걸립니다.

Q. GAN 모델이 실제 데이터를 그대로 외우는 건 아닌가요? A. 잘 학습된 TimeGAN은 원본을 암기하기보단 통계적 패턴을 학습합니다. 저는 생성 샘플과 원본 간 최소 거리(nearest neighbor)를 측정해 암기 여부를 확인했어요. 대부분 충분히 달랐습니다.

Q. 암호화폐나 원자재 같은 고변동성 자산에도 효과가 있을까요? A. 변동성이 클수록 GAN이 생성하는 패턴의 다양성이 커져서 일견 유리해 보이지만, 극단값 재현은 여전히 어렵습니다. 제 경우 비트코인 일봉으로 시도했을 때 급등락 구간에서 실전 성능이 주식보다 더 나빴어요.

Q. 증강 비율은 얼마가 적당한가요? 원본 대비 몇 배까지 늘려야 하나요? A. 제 실험에선 원본:합성 = 1:3 정도가 가장 안정적이었습니다. 1:10까지 늘렸을 땐 오히려 과거 패턴에 과적합되는 느낌이었어요. 증강 비율을 늘릴수록 모델이 "평균"에 수렴하더라고요.

Q. 라이브 트레이딩 중 재보정은 얼마나 자주 해야 하나요? A. 저는 월 1회 최근 3개월 데이터로 fine-tuning합니다. 금리 발표나 큰 이벤트 직후엔 추가로 재보정해요. 너무 자주 하면 단기 노이즈에 휘둘리고, 너무 드물면 체제 변화를 놓칩니다.

이 글이 도움이 됐다면 공유해 주세요
X 공유

관련 글