[바이브코딩]한국 ETF 포트폴리오 백테스트 웹 개발

AI 대화형 포트폴리오 구성 × 백테스트 엔진 × 투자 분석

by 대협
아이디어의 시작

요즘 주식시장의 급등으로 많은 이들이 ETF에 관심이 많은데 제가 예전에 공부하던 시기에 Portfolio Visualizer라는 미국 사이트에서 ETF 포트폴리오의 과거 성과를 백테스트하는 것을 보고, "이걸 한국 ETF로 할 수 없을까?"라는 생각이 들었다.

한국에는 1,080개가 넘는 ETF가 상장되어 있다. KODEX 200, TIGER 미국S&P500 같은 대표 종목부터 반도체, AI, 금, 리츠까지 다양한 자산군을 ETF 하나로 투자할 수 있다. 하지만 이 종목들을 조합해서 "내가 이 포트폴리오를 5년 전에 시작했다면?"이라는 질문에 답해주는 한국어 서비스는 찾기 어려웠다.

더 나아가, "버핏처럼 투자하고 싶어"라고 말하면 AI가 적절한 ETF를 골라주고, 그 결과를 바로 백테스트해서 보여주는 서비스를 만들고 싶었다.

02.png
비즈니스 검토 — ETF 전문가의 시선


코드 전에 전문가에게 물어보다

이번 프로젝트에서 특별했던 점은, 코딩을 시작하기 전에 Claude에게 "ETF 전문 자산상담사"로서 비즈니스 관점의 검토를 요청한 것이다. 기술적 실현 가능성이 아니라, "이 서비스가 투자자에게 가치가 있는가?"를 먼저 검증했다.

Claude는 8가지 놓치기 쉬운 포인트를 짚어주었다

• 비용 반영: 운용보수(TER)가 ETF마다 0.01%~1%로 천차만별. 장기 백테스트에서 이를 빼면 수익률 과대평가

• 리밸런싱 전략: 포트폴리오를 한번 구성하고 끝이 아니라, 리밸런싱 주기와 방식이 성과에 큰 영향

• 배당 처리: 배당 재투자 가정 시 세후/세전 구분, TR ETF와 일반 ETF 차이

• 환율 리스크: 해외 ETF는 환헤지 여부가 수익률을 크게 좌우

• 상관관계: 이름만 다르고 겹치는 종목이 많은 경우 경고 필요

• 벤치마크 비교: 수익률만 보면 "좋은 건가?" 판단 어려움 — 시장 대비 성과 필요

• 리스크 지표: MDD, Sharpe, Sortino — 수익률만이 아닌 위험 대비 효율

• 생존자 편향: 현재 상장 종목만으로 과거를 백테스트하면 수익률 과대평가 가능

사용자(나)와 토론하며 v1.0 범위를 확정했다.

Gemini_Generated_Image_t3fwqht3fwqht3fw.png

유명 투자자 전략 템플릿

"워런 버핏형은 없나요?"라는 한 마디에서 시작된 템플릿 설계. 단순한 자산배분 템플릿을 넘어 유명 투자자의 이름을 붙이면 진입 장벽이 크게 낮아진다.

스크린샷 2026-03-22 오후 10.21.25.png
SPEC 작성 — 핵심 의사결정

기술 스택 결정

스크린샷 2026-03-22 오후 10.23.06.png

데이터 수집 전략

1,080개 ETF의 종목 정보와 과거 시세를 어디서 가져올 것인가가 핵심이었다.

• 종목 목록: 네이버 금융 ETF API → 1,080개 수집 성공

• 기초지수: wisereport API → 1,079/1,080 수집 (1개 누락)

• 일별 시세: pykrx를 기본으로, KIS API와 네이버를 폴백으로

특히 네이버 금융은 직접 WebFetch가 차단되어 urllib + Referer 헤더로 우회해야 했다. ETF 목록은 서버사이드 렌더링이 아닌 JavaScript 동적 로딩이었기 때문에, HTML을 파싱하는 대신 내부 API 엔드포인트(/api/sise/etfItemList.nhn)를 찾아서 JSON으로 직접 받았다.

Phase 구분

스크린샷 2026-03-22 오후 10.25.02.png

Phase 1 완료 후 Phase 2와 Phase 4는 병렬 진행 가능한 구조로 설계했다.

03.png
06.png
05.png
04.png

핵심은 "Claude가 코드를 작성하는 것"이 아니라 "사람이 방향을 잡고 Claude가 실행하는 것"이다. SPEC에서 토론하고, PLAN에서 구조를 잡고, TASK에서 하나씩 체크해가는 과정은 사람과 AI의 역할이 명확하게 나뉜다.

https://github.com/daehyub71/etf-portfolio-lab

토요일 연재
이전 11화[바이브코딩]AI와 함께 만드는 청약 뉴스레터 서비스