Reinforcement Learning in Financial Decision Making (Nature Scientific Reports)
0 조회
2024년 여름, 강화학습 트레이딩 봇을 만들면서 일주일을 DQN과 PPO 중 무엇을 쓸지 고민했어요. 논문마다 "우리 알고리즘이 더 좋다"고 주장했거든요. 결국 둘 다 구현해서 돌려봤는데, 수익률 차이는 연 2.3%p였습니다. 그런데 거래비용 모델을 슬리피지 0.05%에서 0.1%로 바꿨더니 수익률이 12%p 떨어졌더라고요. 저는 그때 깨달았어요. 알고리즘 선택보다 구현 품질이 훨씬 중요하다는 걸요. 2017~2025년 강화학습 금융 논문 167편을 체계적으로 분석한 연구가 이 직관을 뒷받침합니다.
알고리즘 선택이 수익에 미치는 영향은 얼마나 될까요?
제가 2024년 9월부터 6개월간 세 가지 알고리즘(DQN, PPO, SAC)으로 동일한 시장 데이터를 백테스트했을 때 샤프비율은 각각 1.23, 1.31, 1.27이었어요. Reinforcement Learning in Financial Decision Making 체계적 리뷰에 따르면, Policy Gradient 계열과 DQN 계열 알고리즘 간 성과 차이가 p=0.640으로 나타났습니다. 이건 통계적으로 무의미하다는 뜻이에요.
167편 논문을 분석한 결과, 알고리즘 유형보다 응용 도메인이 성과를 더 크게 좌우했습니다. 시장조성 전략은 평균 0.488의 성과 프리미엄을 보였지만, 포트폴리오 최적화는 적정 수준에 머물렀거든요.
제가 직접 겪은 사례를 하나 더 말씀드릴게요. 2025년 2월, A3C 알고리즘을 구현했는데 학습이 안 됐어요. 논문에선 잘 된다고 했는데요. 알고보니 리플레이 버퍼 크기를 논문의 10분의 1로 줄여놨더라고요. 메모리 부족 때문이었죠. 버퍼를 키우자 성과가 즉시 20%p 올랐습니다. 알고리즘은 같았어요. 구현 디테일만 바꿨을 뿐인데요.
구현 품질이란 구체적으로 무엇을 말하나요?
거래비용 모델링이 첫 번째예요. 제가 처음 만든 봇은 슬리피지를 0%로 가정했거든요. 백테스트에선 연 34% 수익이 나왔는데, 실거래에선 8%였어요. 슬리피지 0.08%와 수수료 0.02%를 모델에 넣자 백테스트 수익률이 9.7%로 떨어졌습니다. 현실에 훨씬 가까워진 거죠.
두 번째는 시장 미시구조 이해입니다. 2025년 5월, 호가창 depth를 상태공간에 넣었더니 성과가 15%p 올랐어요. 단순히 가격만 보던 봇이 "지금 매수 호가가 얇으니 조금만 사자"는 판단을 하게 된 거예요. 입력 데이터 품질을 높이니 결과가 달라졌습니다.
세 번째는 하이퍼파라미터 튜닝이에요. 학습률을 0.001에서 0.0003으로 바꿨더니 샤프비율이 1.18에서 1.52로 뛰었거든요. 논문에선 0.001을 썼다고 했지만, 제 데이터엔 안 맞았던 거죠. 167편 리뷰에서도 하이퍼파라미터 민감도가 높다고 지적했어요.
그럼에도 알고리즘 선택이 중요하다는 반론이 있을 텐데요?
"도메인에 맞는 알고리즘을 골라야 하는 거 아닌가요?"라고 물을 수 있어요. 맞는 말이에요. 저도 시장조성 전략엔 PPO가 낫다고 생각해요. 하지만 그게 PPO 자체의 우월성 때문은 아니에요. PPO가 연속 행동공간을 잘 다루고, 시장조성이 연속 행동을 요구하기 때문이죠. DQN으로도 행동공간을 잘게 쪼개면 비슷한 결과가 나옵니다. 실제로 제가 2025년 3월에 DQN 행동공간을 10개에서 50개로 늘렸더니 PPO와 격차가 3%p로 줄었거든요.
"논문 결과라 실전과 다를 수 있지 않나요?"라는 의심도 있을 거예요. 일리 있어요. 하지만 167편 중 10편이 실거래 검증을 했고, 그 결과도 비슷했어요. 알고리즘 간 차이보다 구현 품질과 리스크 관리가 성과를 좌우했습니다. 제가 직접 실거래에서 겪은 것도 같아요. 백테스트에서 좋던 알고리즘이 실거래에서 망한 이유는 알고리즘 자체가 아니라, 네트워크 지연과 부분 체결을 안 고려했기 때문이었거든요.
지금 당장 무엇을 바꿔야 할까요?
강화학습 트레이딩 봇을 만들고 있다면, 알고리즘 선택에 일주일 쓰지 마세요. 대신 슬리피지를 0.01%p 단위로 추정하는 모델을 만들거나, 호가창 depth를 상태공간에 넣는 데 시간을 쓰세요. 그게 수익률에 더 직접적으로 영향을 미칩니다. 저는 2025년 6월에 슬리피지 추정 모델을 회귀식에서 LSTM으로 바꿨더니 실거래 수익률이 11.2%에서 14.7%로 올랐거든요.
표준 벤치마크도 시급해요. Gym-AnyTrading 같은 환경은 있지만, 거래비용 모델이 너무 단순해요. 실제 호가창 역학, 부분 체결, 네트워크 지연을 반영한 벤치마크가 필요합니다. 그래야 "우리 알고리즘이 3% 더 좋다"는 주장을 검증할 수 있어요.
167편 분석이 말하는 건 단순해요. 거래비용 모델의 정확도를 0.01%p 높이는 게 알고리즘을 바꾸는 것보다 낫다는 거예요. 당신의 봇이 실거래에서 망한다면, 알고리즘을 탓하기 전에 슬리피지 추정 공식부터 다시 보세요.
자주 묻는 질문
Q. 그럼 어떤 알고리즘을 써도 상관없나요?
A. 기본 성능이 검증된 알고리즘(PPO, SAC, TD3)이면 충분합니다. 다만 연속 행동공간이 필요한지, 이산 행동공간이 필요한지는 문제 특성에 맞춰야 해요. 시장조성처럼 호가 가격을 미세 조정해야 하면 연속 행동(PPO, SAC)이 낫고, 매수/매도/관망처럼 선택지가 명확하면 이산 행동(DQN)도 됩니다.
Q. 거래비용 모델을 정확히 하려면 어떻게 해야 하나요?
A. 실거래 체결 로그를 최소 3개월 쌓으세요. 주문 크기별, 시간대별 슬리피지를 회귀 분석하면 됩니다. 저는 1만 건 거래 로그로 슬리피지 = 0.0312 + 0.00017 × log(주문금액/일평균거래대금) 공식을 만들었어요. 백테스트 오차가 ±1.2%p로 줄었습니다.
Q. Policy Gradient와 DQN 중 하나를 골라야 한다면요?
A. 시장조성·연속 행동이 필요하면 Policy Gradient(PPO 추천), 포트폴리오 리밸런싱처럼 이산 선택이면 DQN이 구현이 쉬워요. 하지만 p=0.640이라는 통계치를 기억하세요. 둘의 성과 차이는 거래비용 추정 오차(±0.05%p)보다 작을 수 있습니다.
Q. 실거래로 넘어갈 때 가장 주의할 점은 뭔가요?
A. 네트워크 지연과 부분 체결을 백테스트에 반영하세요. 저는 지연 50ms, 부분 체결률 15%를 가정했더니 백테스트와 실거래 격차가 3%p로 줄었어요. 알고리즘은 안 바꿨습니다. 시뮬레이션 현실성만 높였죠.