https://github.com/reo91004/finflow-rl

🖥 시작하며

2024년 9월부터 시작한 졸업작품은, 처음에는 막연히 어떤 걸 만들지? 라는 생각이었고, 그때까지만 하더라도 진로를 결정하지 못했던 나는 교수님의 아이디어 제안서에 따라 **‘WebAssembly 기반의 프로그래밍 교육 서비스’**를 주제로 정했다. 학과 수업에서 가장 재밌었던 과목이 운영체제였고, 교수님과 커널 스터디를 병행하며 로우레벨에 관심을 가지게 되어 ‘어셈블리’라는 단어에 끌렸던 것 같다.

허나 팀원들은 이쪽에 딱히 관심이 없기도 했고, 교수님과의 컨택에서 약간 무리한 요구를 들었기에 **‘고양이 개체식별을 통한 지능형 자율 배식기’**로 주제를 변경했다. 하드웨어를 직접 설계하며 만드는 재미가 있을 것 같아 수락했지만 지도교수님과의 면담에서 ‘너희가 진정 하고 싶은 주제가 이것이 맞는가?’라는 의문과, 우리 스스로도 ‘이 제품이 정말 사용될 만큼의 완성도로 우리가 만들 수 있을까?’ 하는 의문이 있었기 때문에, 만드는 사람에게 확신이 없는데 좋은 제품이 나올 수 있을까 싶어 다시 주제를 변경하게 되었다.

팀원들 중 한명은 인공지능 대학원을 생각하고 있고 한 명은 금융 쪽 취업을 생각하고 있었다. 그 당시 나는 아직도 진로를 정하지 못했기에 딱히 의견을 내지 않았고, 이후 **‘주식 포트폴리오 관리 사이트’**를 만드는 쪽으로 가닥이 잡혔다.

허나 주제를 낸 팀원을 제외한 나와 한 명은 금융에 무지했고(아직도 무지하지만) 프로젝트 계획서나 요구사항 정의서 등을 작성하는데 부터 난항이 있었다. 또한 개인적으로 나는 여전히 ‘그래서 이 사이트를 만드는 이유가 뭐지?’ 라는 생각이 지배적이었고..

그렇게 질질 끌려오다 2025년 3월, 다시금 지도교수님과 면담을 했을 때 선택과 집중이 필요할 것 같다는 말씀을 해주셨다. 사용자가 보유한 자산 하나하나를 사이트에 입력하고, 해당 주식 정보를 불러온 다음 LLM으로 포트폴리오 관리를 해준다.. 솔직히 난잡하고 실용성 없었던 건 사실인 것 같다. 그래서 별로 의욕이 나지도 않았었고.

어찌되었건 지금 픽스된 주제는 **‘강화학습 기반 주식 포트폴리오 리스크 관리’**다. 최신 논문 트렌드도 강화학습을 주식 데이터와 결합해 예측하는 것이라 하니 주제도 괜찮았고, 마침 지금 관심을 가지게 된 분야가 AI, 시스템, 임베디드여서 좀 더 의욕이 생겼다.

하여 이 포스팅은 이 모델을 어떻게 구축했고, 어떻게 개선해나갔는지에 대해 기록하려고 한다.

🤔 어떤 아이디어로 구현해야 할까?

먼저 우리의 시작은 무작정 강화학습으로 주식 포트폴리오 관리를 구현해보는 것이었다. 지금 회고해보면, 시작점부터 잘못되었던 것 같다. 내가 좀 새로운 걸 만들어보고 싶었고 팀원들이 그걸 이해해주었기에 좀 도전적인 시도를 했던 것 같다. 우선 각자 강화학습에 대해 공부하고, 금융 도메인 지식에 대해서도 공부하며 각자 좀 만들어 보았다. 뭐, 당연하게도 얄팍한 지식으로 구현하다 보니 되도 않는 결과물이 나왔고, 그렇게 진행하다가 아예 엎어버렸다.

게다가 학기 중에는 각자 공부해야 할 것도 있었고 우리의 주제, 주제 안에서도 세부적인 방향까지 지속적으로 변경되었기 때문에 갈피를 잡지 못하며 너무 프로젝트 진행 속도가 지지부진했다. 그러던 중, “우리 대학원 지망생이 둘이나 있는데, 아예 새로운 아이디어로 아키텍처를 만들어서 논문을 써보는 건 어때?”라는 의견을 냈고, 고맙게도 취업을 지망하는 형도 괜찮다 해서 좀 학술적으로 방향을 틀었다.

지금 배포 중인 사이트. 모델과 연결해놓긴 했지만 사실 껍데기밖에 없다 ㅎㅎ;

지금 배포 중인 사이트. 모델과 연결해놓긴 했지만 사실 껍데기밖에 없다 ㅎㅎ;

컴퓨터 과학에 존재하는 알고리즘들은 아무래도 독자적인 것들도 존재하지만, 도메인이 다른 이론에서 아이디어를 따 온 것들도 많다. 예를 들어 볼츠만 머신열역학의 에너지 최소화 원리에서, 유전 알고리즘진화생물학의 자연선택과 돌연변이 원리에서, 신경망신경과학의 시냅스 연결에서 각각 영감을 받았다. 우리도 포트폴리오 관리에 대하여 생각하다, 문득 “생물의 면역학적 메타포를 결합시키는 건 어떨까?” 하는 생각이 들었다. 그리고 찾아보니 아직 이런 부분에서 논문이 없어서, 그대로 채택했다.

핵심 아이디어는 다음과 같다.

이 연구의 IRT(Immune Replicator Transport) 구조는, 면역계의 적응·기억 메커니즘을 강화학습 정책에 통합한 것이다. 생물의 면역체계가 낯선 병원체에 대응하며 학습하고 기억을 형성하듯, 에이전트가 시장의 “위기”를 감지하고 스스로 전략을 조정하는 알고리즘이 면역학과 대응된다고 보았다.

실제 생물의 T-Cell이 외부 항원을 감지해 면역 반응의 강도를 조절하듯, 모델 내의 T-Cell Network는 시장의 변동성과 위험 신호를 실시간으로 감지해 정책의 학습률과 탐험 강도를 조절하도록 했다. 한편 B-Cell Actor는 여러 “전문가 전략(prototype strategy)”를 항체로 간주하고, 이들 간의 혼합을 Optimal Transport(OT)Replicator Dynamics를 통해 수행하도록 했다. 평상시에는 OT가 분산된 포트폴리오 구성을 유지하고, 위기 시에는 Replicator가 검증된 전략에 집중함으로써 “방어적 적응”이 일어나도록 했다.

즉 IRT는 생물학적 방어 시스템의 감지→반응→기억 구조를 금융 강화학습의 탐지→적응→적응 과정으로 치환하며, 이를 엄밀하게 수학적/논리적으로 오류가 없도록 (노력..)한 모델이다.

🔍 기존에 무슨 한계가 있었지?

SAC 하나만으로는 시장의 위기 구간을 잘 통과하지 못했다. 평시에는 성과가 괜찮지만, 급락 시점에서는 베팅 축소가 느리고 손실 폭(drawdown이) 커졌다. 이는 결국 CVaR 같은 꼬리 위험을 반영하지 못하는 구조였기 때문에 일어나는 일이었다. 또, 정책 분산(temperature)이 고정되어 있어서 시장 노이즈가 커지면 행동이 과도하게 흔들렸다. 즉 실거래로 옮기면 주문 변동이 너무 커 현실성이 떨어지는 문제가 잇었다.