실제 돈 없이 투자 규칙을 정직하게 검증하다
과거 시장 데이터로 간단한 투자 규칙을 시험하는 작은 도구입니다. 결과를 속일 수 없고, 실제 주문도 낼 수 없도록 만들었습니다.
필요
과거 데이터로 투자 전략을 시험하면 결과가 화려해 보이기 쉽습니다. 말은 하지 않지만, 당시에는 아무도 알 수 없었던 정보를 쓰기 때문입니다.
아이디어
전략이 아니라 함정을 중심으로 실험실을 만드는 것입니다.
만든 것
- 어떤 날의 종가로 계산한 규칙은 그다음 날 수익률에만 적용합니다. 같은 날에는 절대 적용하지 않습니다.
- 포지션을 바꿀 때마다 수수료 0.05%를 반영합니다.
- 모든 규칙을 ‘처음에 사서 그대로 두기’와 비교합니다. 시장이 20% 오를 때 8%를 번 전략은 가치를 잃은 것입니다.
- 두 가지 안전장치: 거래 주소는 모의 투자 환경으로 고정되어 있고, 코드는 읽기만 할 수 있어 주문을 낼 방법이 없습니다.
결과
- 3Python 모듈
- 453코드 줄 수
- 11시험마다 계산하는 지표
- 0낼 수 있는 주문 — 의도한 설계
아직 자동 테스트가 없고, 보여 드릴 수 있는 실제 모의 투자 키 실행 기록도 없습니다. 투자를 결정하는 도구가 아니라, 원리를 이해하기 위한 도구입니다.
화면으로 보기
배운 점
과거 데이터로 조합을 충분히 많이 시험하면, 그중 하나는 늘 효과가 있었던 것처럼 보입니다. 시험의 한계를 아는 것도 결과의 일부입니다.
기술 세부 정보 기술 스택, 아키텍처, 설계 결정 — 기술 담당자용
기술 스택
- Python
- Streamlit
- pandas
- NumPy
- requests
- Alpaca API (모의 투자)
작동 방식
- D일 종가에 계산한 신호는 D+1일 수익률에 적용합니다. 포지션 변경마다 0.05% 비용을 반영하고, 항상 ‘사서 보유하기’를 기준선으로 비교합니다.
- 시험할 수 있는 규칙은 두 가지 — 이동평균 교차와 직전 고점 돌파 — 이며, 미국 주식의 1~5년 치 일별 가격을 사용합니다.
- 거래 API 기본 URL은 Alpaca의 paper-api 모의 환경으로 코드에 고정되어 있습니다(설정 불가). 클라이언트는 읽기 전용이라 주문 기능이 없고, 키는 환경 변수에서만 읽습니다.
- 데이터가 없을 때(키 없음, 401/403, 요청 한도 초과) Streamlit 화면은 기본값 숫자 대신 이유를 보여 줍니다.
- 알려진 편향: 진입 가격을 다음 날 시가가 아니라 신호가 나온 날의 종가로 계산하므로, 장 마감 후의 가격 차이가 포함됩니다.
아직 부족한 점
- 아직 자동 테스트 없음
- 투자 도구가 아님