바이브 코딩으로 2일만에 미국 주식 스크리너 만들기

(Rust+PyO3+WSL)

by the게으름


TL;DR


Claude Code로 ‘지시→코드 생성→실행’까지 자동화해 Lazy Quant Screener 완성


586개 종목을 QVG/Value/Tenbagger 3전략으로 스크리닝, 상위 20~30개 추출


Python 프로토타입 → 비동기 배치 → Rust+PyO3 최적화(3~5분)


크로스플랫폼 이슈(WinError 216)는 WSL/윈도우 네이티브 빌드로 해결


바이브 코딩으로 만드는 간단한 프로그램



이 글은 “챗봇 질의”가 아니라 ‘일 시키는’ 바이브 코딩의 실전 기록



드디어 해봤다


지금까지 바이브 코딩에 대해 1편부터 3편까지 썼다.


바이브 코딩이 뭔지,

환경은 어떻게 구축하는지,

왜 Rust를 써야 하는지.


Claude Code로 이것저것 해보기도 했다.

데이터 가져오고, 계산하고, 파일로 저장하고. 돌아가긴 했다.

그런데 뭔가 아쉬웠다.


지금까지 만든 건 다 밑반찬이었던 거 같다.

파이톤 코드 하나. 리눅스 안에서만 돌아가는 가벼운 코드들.


콩자반, 콩나물 무침, 장조림... 하나하나는 나쁘지 않은데, 이게 '요리'라고 할 수 있나?


진짜 프로그램은 닭도리탕 같은 메인 요리여야 하는 거 아닌가?

완전체 말이다. 실행 파일 하나로 뭔가 의미 있는 일을 해주는.


그래서 이번엔 진짜 만들어보기로 했다.



비개발자도 AI랑 같이 만들 수 있다


그래서 직접 해봤다.


뭘 만들지? 만들고 싶은 건 많은대,


난이도가 너무 높거나

내 컴퓨터의 하드웨어가 안 따라주거나

말도 안되는 아이디어가 많았다.


그래서 결국 "현실적이면서도 쓸모있고, 내 컴퓨터로도 돌아가는" 뭔가를 찾아야 했다.


“아 미국주식!!”


첫 프로젝트로 Lazy Quant Screener라는 걸 만들었다.

미국 주식을 자동으로 분석해서 투자할 만한 종목을 골라주는 프로그램이다.

만드는 데 이틀 걸렸다.


순수 개발 시간은 한 6시간정도?

코드를 아는 사람이라면 뭐 30분쯤 걸리겠지만.


난 장님 길 찾아가듯이 더듬더듬 하나씩 만져가면서 해봤다.



Quant란?


정식 용어: Quant = Quantitative investing / Quantitative analyst (정량 투자·정량 분석)


뜻: “숫자로만 투자 결정을 하는 사람 또는 방법”


즉, 감(직관) 대신 수학·통계·알고리즘으로 투자 전략을 짜는 것



어떻게 다르냐?


전통적 투자: 기업 CEO 인터뷰, 신문 기사, 산업 동향 → 사람이 판단


Quant 투자: 기업의 재무제표, 가격 패턴, 금리, 거래량, 지표 등 수치 → 컴퓨터가 규칙대로 판단

화면 캡처 2025-09-04 151413.png




%ED%99%94%EB%A9%B4_%EC%BA%A1%EC%B2%98_2025-09-03_144820.png?type=w800


터미널에서 일어나는 마법


Claude Code를 켜고 프로젝트 디렉토리로 이동했다. 그리고 말했다.


"야후 파이낸스 API좀 찾아봐. 주식 스크리닝 도구 만들어줘. PER, ROE 같은 지표로 좋은 종목 찾는 거."



그러자 Claude Code가 움직이기 시작했다.


내가 복사-붙여넣기 할 필요가 없었다. Claude가 직접 파일을 만들었다.


stock_screener.py라는 파일이 생겼고, yfinance 패키지를 설치하라고 했다. 설치도 Claude가 직접 했다.



첫 번째 버전을 실행해보니 AAPL 주식의 PER 값이 나왔다. 30분 만에 돌아가는 뭔가가 나온 거다.


%ED%99%94%EB%A9%B4_%EC%BA%A1%EC%B2%98_2025-09-03_144939.png?type=w800


점점 복잡해지는 요구사항


"한 종목은 의미 없어. 여러개 종목을 한번에 처리해줘."


Claude Code가 코드를 수정했다. S&P 500 종목 리스트를 가져오는 함수를 만들고, 배치 처리 로직을 추가했다. 하지만 실행해보니 너무 느렸다. 한 종목씩 순차적으로 처리하니까 30분이 걸렸다.


"이거 너무 느려. 더 빠르게 해줘."


Claude가 비동기 처리로 바꿨다. 50개씩 묶어서 동시에 처리하고, API 호출 사이에 2초씩 딜레이를 넣어서 Rate limiting을 피했다. 실행 시간이 10분으로 줄었다.


Rate limiting = 서버가 “한 번에 너무 많이 오지 마!” 하고 세워둔 속도 제한 규칙.


프로그래밍에서는 이걸 맞춰서 호출해야 API 차단을 피할 수 있어요.

%ED%99%94%EB%A9%B4_%EC%BA%A1%EC%B2%98_2025-09-03_165430.png?type=w800


Rust로의 전환점


"여전히 느린데? 성능을 더 올릴 수 있을까?"


Claude Code가 제안했다.


"Python으로 데이터를 가져오고 Rust로 분석 로직을 처리하면 더 빨라질 것 같습니다."



PyO3라는 라이브러리를 써서 Python과 Rust를 연결한다고 했다.

나는 PyO3가 뭔지도 몰랐다. 하지만 Claude Code는 알고 있었다.


Cargo.toml 파일을 만들고, Rust 코드를 작성하고, Python에서 호출할 수 있게 바인딩을 만들었다.

컴파일도 Claude가 해줬다. 실행해보니 3~5분으로 더 줄었다.


아마 러셀 2000이나 나스닥 종목을 추가해도 될것 같다.

화면 캡처 2025-09-04 151402.png


%ED%99%94%EB%A9%B4_%EC%BA%A1%EC%B2%98_2025-09-03_151228.png?type=w800


투자 전략의 구현


"단순히 데이터만 가져오는 게 아니라 투자 전략을 적용해줘."



투자 전략은 간단하게 만들었다. 일단 되는지 안되는지 확인부터 해야하니까.


일단 먼저 만든 건 이 3개.



value 전략은 "1달러짜리를 50센트에 사기" - 벤저민 그레이엄 스타일


✅ P/E Ratio ≤ 15 (필수!)


✅ ROE ≥ 15% (필수!)


✅ 부채비율 ≤ 50% (필수!)




QVG 전략은 Quality, Value, Growth를 균형있게 보는 방식이었다.


일명 "좋은 회사를 적정 가격에" - 워런 버핏 스타일.


Value (40점) - 저평가 여부


├─ P/E Ratio ≤ 15: 20점


├─ P/E Ratio 15-20: 10점


├─ P/B Ratio ≤ 2: 20점


└─ P/B Ratio 2-3: 10점



Growth (30점) - 성장성


├─ 매출 성장률 ≥ 15%: 15점


├─ 매출 성장률 10-15%: 8점


├─ 이익 성장률 ≥ 20%: 15점


└─ 이익 성장률 10-20%: 8점



Quality (30점) - 수익성/안정성


├─ ROE ≥ 20%: 15점


├─ ROE 15-20%: 8점


├─ 부채비율 ≤ 50%: 15점


└─ 부채비율 50-100%: 8점



ten bagger 전략은 " "10배 수익 가능한 성장주" - 피터 린치 스타일


Revenue Growth (40점) - 매출 폭발


├─ 매출 성장률 ≥ 30%: 40점


├─ 매출 성장률 25-30%: 30점


├─ 매출 성장률 20-25%: 20점


└─ 매출 성장률 < 15%: 탈락!



Earnings Growth (30점) - 이익 급증


├─ 이익 성장률 ≥ 35%: 30점


├─ 이익 성장률 30-35%: 25점


├─ 이익 성장률 25-30%: 15점


└─ 이익 성장률 < 20%: 탈락!



Profit Margin (30점) - 수익성


├─ 순이익률 ≥ 25%: 30점


├─ 순이익률 20-25%: 20점


├─ 순이익률 15-20%: 10점


└─ 순이익률 < 10%: 탈락!



PER이 낮으면 몇 점, ROE가 높으면 몇 점, 이런 식으로 점수화 해서 주식을 줄 세우는 방식이다.






화면 캡처 2025-09-04 151818.png





크로스 플랫폼의 악몽


노트북에서도 돌리려고 윈도우 독립버젼을 만들기로 했다.


제일 골치 아픈 문제가 생겼다. Linux에서 컴파일한 바이너리를 Windows에서 실행하려니까 오류가 났다. WinError 216이라는 이상한 오류였다.


"Windows에서 실행이 안 돼."


Claude Code가 원인을 설명해줬다. ELF 바이너리를 Windows에서 실행할 수 없다고. 그래서 Windows용 배치 파일을 만들어야 한다고. 어차피 지가 만들거면서 설명도 자세하다.



%ED%99%94%EB%A9%B4_%EC%BA%A1%EC%B2%98_2025-09-03_182010.png?type=w800

실시간으로 진화하는 코드


이 모든 과정에서 신기했던 건, 코드가 실시간으로 진화한다는 거였다. 문제가 생기면 Claude Code가 바로 파일을 수정했다. 컴파일 오류가 나면 즉시 고쳤다. 실행해서 결과를 확인하고, 또 개선했다.


내가 복사-붙여넣기나 파일 편집을 한 적이 아예 없다. Claude Code가 다 해줬다.



바이브 코딩의 진짜 의미


이틀 동안 Claude Code와 작업하면서 깨달은 게 있다. 바이브 코딩은 단순히 "AI가 코드를 짜준다"는 게 아니다. AI가 내 개발 파트너가 되어서 같이 문제를 해결하는 거다.


내가 말로 설명하면 Claude가 구현한다. 문제가 생기면 같이 고민하고 해결책을 찾는다. 하지만 전체적인 방향과 최종 결정은 여전히 내 몫이다.


Phase별로 점진적으로 발전시켜 나가는 과정이었다.


Python 프로토타입 → 배치 처리 → Rust 최적화 → 전략 구현 → 크로스 플랫폼 지원.


각 단계에서 Claude Code가 실제로 코드를 실행하고 테스트하면서 다음 단계로 넘어갔다.







%ED%99%94%EB%A9%B4_%EC%BA%A1%EC%B2%98_2025-09-03_182201.png?type=w800


결과물


지금 Lazy Quant Screener는 배치 파일 하나만 실행하면 586개 미국 주식을 분석해서 투자할 만한 종목 30개를 골라준다. 세 가지 전략별로 각각 상위 30개씩. CSV, JSON, Markdown 형태로 저장도 해준다.


총 개발 시간은 이틀이었다. 실제 작업 시간은 6시간 반 정도였고, 나머지는 테스트와 개선이었다. 혼자서 처음부터 만들었다면 몇 주는 걸렸을 거다.



한계도 분명하다


완벽하지 않다. 데이터는 Yahoo Finance에만 의존한다. 실시간이 아니라 전날 종가 기준이다. 백테스팅 기능도 없어서 전략이 실제로 유효한지 확인하기 어렵다. 백테스팅이 뭐냐면, 내가 만든 투자 전략을 과거 데이터에 적용해보는 거다.


예를 들어 "PER 15 이하이면서 ROE 20% 이상인 종목만 산다"는 전략이 있다면, 이걸 2020년부터 2024년까지의 과거 데이터에 적용해본다. 매년 1월에 조건에 맞는 종목들을 사서 12월에 파는 식으로 시뮬레이션하는 거다. 그러면 실제로 이 전략이 연평균 몇 퍼센트 수익을 냈는지, S&P 500보다 나았는지 알 수 있다. 지금은 "이론적으로 좋은 종목들"만 골라주지만, 실제로 돈을 벌 수 있는 전략인지는 모른다는 게 문제다. 그래서 다음 업그레이드 목표는 백테스팅 기능이다. Claude Code한테 말해볼 생각이다. "지난 5년간 데이터로 각 전략의 수익률을 계산해줘. 연도별, 월별 성과도 보여주고."



그 다음은 뭘 할까


백테스팅이 되면 다른 것들도 욕심이 날 거다.


기술적 분석도 추가하고 싶다. PER, ROE 같은 기본 지표만으로는 부족하다. RSI가 30 이하로 떨어진 종목, MACD 골든크로스가 나온 종목, 이런 것들도 찾을 수 있으면 좋겠다. 포트폴리오 관리 기능도 필요하다. 지금은 "좋은 종목 30개"만 알려주는데, 실제로는 "내 계좌에서 얼마씩 사야 하는지", "언제 팔아야 하는지"도 알고 싶다.


알림 시스템은 꼭 필요하다. 매일 수동으로 실행하는 게 아니라, 조건에 맞는 종목이 나타나면 이메일이나 슬랙으로 알려주면 좋겠다. 웹 대시보드도 만들어서 차트로 볼 수 있으면 더 좋고.


생각해보니 끝이 없다. 섹터별 분석, ESG 점수 통합, 뉴스 센티먼트 분석,


하나씩 해보면서 바이브 코딩의 한계가 어디까지인지 확인해보고 싶다. 그래도 시작점으로는 나쁘지 않다. 이제 진짜 쓸모 있는 도구를 만들어볼 차례다.



이제 챗봇이 지겹다


1편에서 말했던 "챗봇 모드"에서 완전히 벗어난 기분이다.


이제 Claude한테 "PER이 뭐야?"라고 묻지 않는다.


대신 "PER 20 이하인 종목들을 매일 자동으로 찾아서 리포트로 만들어줘"라고 한다.


차이가 느껴지는가?


전자는 정보를 묻는 거고,


후자는 일을 시키는 거다.


바로 이게 바이브 코딩이다.






keyword