Inspiration
개인적으로 투자를 하면서 ai로 하면 어떨까 싶었음
What it does
투자판단프로그램은 시장 데이터, 재무정보, 수급, 뉴스, 기술적 지표를 종합해 주식의 매수·보유·매도 판단을 지원하는 AI 기반 투자 의사결정 시스템입니다.
프로그램은 다음 순서로 분석을 진행합니다.
시장 → 섹터 → 종목 → 상대강도 → 수급 → 펀더멘털 → 밸류에이션 → 뉴스·이벤트 → 차트 → 리스크 관리
이동평균선, 추세, 거래량, 변동성, 지지·저항뿐 아니라 재무제표, 투자자별 수급, 시장 심리와 뉴스까지 함께 분석합니다. 분석 결과를 바탕으로 투자 의견, 판단 근거, 목표가, 손절가와 위험 수준을 제시합니다.
데이터가 부족하거나 지표가 충돌하는 경우에는 억지로 결론을 내리지 않고 HOLD 또는 추가 검증 상태를 반환합니다.
현재는 한국투자증권 모의투자 환경을 활용해 검증하고 있으며, 안전을 위해 실전 자동주문은 차단했습니다.
How we built it
프로그램은 하나의 거대한 모델이 모든 결정을 내리는 방식이 아니라, 각 역할을 담당하는 여러 분석 레이어를 결합하는 구조로 개발했습니다.
먼저 시장, 섹터, 종목, 수급, 재무, 밸류에이션, 뉴스, 차트, 리스크 관리 등 투자판단에 필요한 기능을 개별 모듈로 분리했습니다. 이후 각 모듈의 분석 결과를 표준화된 점수와 근거 형태로 변환하고, 최종 의사결정 레이어가 이를 종합하도록 구성했습니다.
데이터 수집에는 한국투자증권 API, OpenDART, DartLab, pykrx, yfinance 등의 데이터 소스를 활용할 수 있도록 설계했습니다. 특정 데이터 소스가 작동하지 않거나 값이 누락되는 경우에도 전체 시스템이 중단되지 않도록 필수 데이터와 선택 데이터 경로를 구분했습니다.
개발 과정에서는 다음과 같은 내부 검증 구조를 적용했습니다.
개별 분석 레이어 테스트 레이어 간 데이터 전달 및 스키마 검증 투자판단 로직의 일관성 검사 레드팀 방식의 반대 논리 검증 Golden Evaluation을 이용한 회귀 테스트 실제 주문이 발생하지 않는 페이퍼·모의투자 검증 불확실성이 높은 경우 판단을 보류하는 안전장치
또한 프로그램을 회사의 의사결정 구조처럼 설계했습니다. 각 분석 부서가 결과를 제출하고, 상위 판단 레이어가 이를 검토하며, 레드팀이 반대 의견과 위험 요소를 검증한 뒤 최종 판단을 내리도록 했습니다.
개발 과정에서는 여러 버전의 모듈과 판단 로직을 지속적으로 통합하고 회귀 테스트를 진행했습니다. 단순히 기능을 추가하는 데 집중하기보다, 기존 기능이 새로운 코드와 충돌하지 않는지 확인하면서 프로그램의 안정성과 재현성을 높였습니다.
Challenges we ran into
가장 큰 어려움은 투자 판단에 필요한 데이터가 서로 다른 형식과 주기로 제공된다는 점이었습니다.
주가와 거래량은 실시간 또는 일 단위로 갱신되지만, 재무제표는 분기 단위로 공개되고 뉴스와 이벤트 데이터는 비정형 텍스트로 제공됩니다. 이 데이터를 같은 기준에서 비교하고 하나의 판단으로 통합하는 과정이 복잡했습니다.
또 다른 문제는 각 지표가 서로 충돌할 수 있다는 점이었습니다. 예를 들어 기업의 펀더멘털은 긍정적이지만 단기 수급과 차트 추세가 좋지 않을 수 있고, 뉴스는 긍정적이지만 이미 주가에 과도하게 반영된 경우도 있습니다. 따라서 단순 점수 합산만으로는 신뢰할 수 있는 판단을 만들기 어려웠습니다.
API 안정성도 중요한 도전 과제였습니다. 한국투자증권 API의 인증 토큰, 모의투자 환경, 요청 형식과 데이터 응답 구조를 맞추는 과정에서 여러 오류가 발생했습니다. 일부 외부 라이브러리와 데이터 소스는 버전이나 실행 환경에 따라 동작이 달라지는 문제도 있었습니다.
투자판단 기준을 명확하게 정의하는 것도 어려웠습니다. ‘좋은 종목’과 ‘지금 매수하기 좋은 종목’은 다르기 때문에, 기업의 질과 매수 타이밍을 분리해 평가해야 했습니다. 익절가와 손절가 역시 고정 비율이 아니라 변동성, 추세, 지지·저항, 투자 기간에 따라 달라져야 했습니다.
마지막으로 가장 중요한 과제는 과도한 확신을 방지하는 것이었습니다. 데이터가 부족하거나 분석 결과가 충돌하는 상황에서 억지로 결론을 내리지 않도록, 보류와 판단 불가를 정상적인 결과로 인정하는 구조를 만드는 데 많은 노력을 들였습니다.
Accomplishments that we're proud of
가장 자랑스러운 성과는 단순한 매수·매도 신호 프로그램을 넘어, 실제 투자자가 종목을 검토하는 과정에 가까운 다단계 투자판단 구조를 만들었다는 점입니다.
시장부터 개별 종목, 수급, 재무, 뉴스, 차트, 리스크까지 이어지는 고정된 분석 순서를 구축했고, 각 레이어의 판단 근거를 최종 결과까지 추적할 수 있도록 설계했습니다.
또한 여러 버전의 기능을 통합하면서 반복적인 회귀 테스트와 Golden Evaluation을 수행했고, 핵심 테스트에서 연속적으로 통과하는 안정적인 구조를 만들었습니다.
한국투자증권 모의투자 API를 통해 실제 주가 데이터를 조회하는 데 성공했으며, 실전계좌와 모의계좌를 명확하게 분리해 실수로 실전 주문이 발생하지 않도록 안전장치를 적용했습니다.
프로그램이 확실하지 않은 상황에서는 무리한 판단을 내리지 않고 HOLD 또는 추가 검증 상태를 반환하도록 만든 점도 중요한 성과입니다. 투자 프로그램의 성능은 신호를 많이 내는 것이 아니라, 잘못된 판단을 얼마나 줄이는가에도 달려 있다고 판단했기 때문입니다.
마지막으로 각 기능을 독립적으로 테스트하고 개선할 수 있는 모듈형 구조를 구축해, 향후 새로운 데이터와 분석 모델을 추가하더라도 전체 시스템을 다시 만들 필요가 없도록 했습니다.
What we learned
이 프로젝트를 통해 투자 판단은 하나의 뛰어난 지표나 AI 모델만으로 해결할 수 있는 문제가 아니라는 점을 배웠습니다.
좋은 투자 판단을 만들기 위해서는 데이터 수집, 데이터 품질 관리, 분석 기준, 리스크 관리, 결과 검증이 모두 함께 작동해야 합니다. 특히 입력 데이터가 잘못되면 아무리 정교한 모델을 사용하더라도 결과는 신뢰할 수 없다는 것을 확인했습니다.
또한 투자에서 중요한 것은 정답을 맞히는 것뿐 아니라, 판단이 틀렸을 때 손실을 제한하는 것이라는 점을 배웠습니다. 이에 따라 손절 기준, 포지션 크기, 변동성 관리, 판단 보류 기능을 분석 정확도만큼 중요하게 설계했습니다.
모델의 복잡도가 높다고 반드시 성능이 좋아지는 것도 아니었습니다. 기능을 계속 추가하면 판단 근거가 풍부해질 수 있지만, 동시에 중복 신호와 데이터 충돌도 증가했습니다. 따라서 새로운 기능을 추가할 때마다 실제로 기존 판단을 개선하는지 검증하는 과정이 필요했습니다.
외부 LLM은 유용하지만 투자판단의 핵심을 전부 맡겨서는 안 된다는 점도 배웠습니다. LLM은 뉴스 해석, 판단 비판, 설명 생성, 레드팀 역할에는 효과적이지만, 핵심 규칙과 주문 안전장치는 재현 가능한 코드와 명시적인 로직으로 관리해야 했습니다.
무엇보다 프로그램을 빠르게 확장하는 것보다, 각 레이어가 정확하게 작동하는지 하나씩 검증하는 과정이 장기적인 완성도를 높이는 데 더 중요하다는 것을 배웠습니다.
What's next for 투자판단프로그램 개발
다음 단계의 최우선 목표는 새로운 기능을 무작정 추가하는 것이 아니라, 현재 구축된 모든 분석 레이어를 하나씩 세밀하게 점검하고 실제 테스트 단계에 진입하는 것입니다.
먼저 시장, 섹터, 종목, 수급, 펀더멘털, 밸류에이션, 뉴스, 기술적 분석, 리스크 관리 레이어의 세부 기능을 전부 검토할 예정입니다. 각 레이어가 실제 데이터에서 올바른 결과를 내는지 확인하고, 중복되거나 충돌하는 판단 기준을 정리할 계획입니다.
이후 과거 데이터를 이용한 백테스트와 워크포워드 테스트를 진행해 수익률뿐 아니라 최대 낙폭, 손익비, 승률, 거래 빈도, 종목별 편향, 시장 상황별 성과를 검증할 예정입니다.
백테스트 이후에는 한국투자증권 모의투자 환경에서 실제 시세를 기반으로 페이퍼 트레이딩을 진행할 계획입니다. 이 단계에서는 주문 체결 지연, 슬리피지, 수수료, 거래 가능 시간, 데이터 누락 등 실제 운용 환경에서 발생하는 문제를 검증합니다.
또한 프로그램이 자신의 투자 판단과 실제 결과를 비교해 다음 항목을 학습하도록 발전시킬 예정입니다.
어떤 분석 레이어가 판단에 가장 크게 기여했는지 실패한 투자에서 어떤 신호를 과대평가했는지 시장 국면에 따라 어떤 전략이 효과적이었는지 익절가와 손절가가 적절했는지 판단 보류가 필요한 상황을 제대로 구분했는지
최종적으로는 Growth Agent가 투자판단프로그램의 성과를 지속적으로 검토하고, 개선안을 제안하며, 레드팀과 승인 절차를 통과한 변경만 시스템에 반영하는 자가개선 구조를 구축할 계획입니다.
실전 자동매매는 충분한 백테스트와 장기간의 모의투자 검증이 끝나기 전까지 연결하지 않을 예정입니다. 현재의 목표는 빠르게 실전 주문을 실행하는 것이 아니라, 설명 가능하고 재현 가능하며 위험을 통제할 수 있는 투자 의사결정 시스템을 완성하는 것입니다.
Log in or sign up for Devpost to join the conversation.