검색 대상 종목 선정
안녕하세요. 강사님
다름이 아니오라 우리의 전략은 나스닥에서 상위 25개 종목을 대상으로 데이터를 수집하고 판단하는 것으로 알고 있는데요.
이 종목들의 선정 기준과 향후 시장 변화에 따른 종목 리밸런싱은 어떻게 하는 것이 좋을지 궁금하여 여쭙습니다.
감사합니다~
답변 2
0
@Taihak Kim님, 안녕하세요.
선정 기준
현재 25종목은
stock.py의nasdaq_top_100리스트에 고정된 목록입니다. 2025년 4월 프로젝트 시작 때 제가 선정했습니다.엄밀한 "시총 상위 25"는 아닙니다. 나스닥100 상위 비중 종목을 중심으로 하되, 빅테크와 반도체에 편중되지 않게 소비재(COST, PEP, SBUX, MDLZ), 헬스케어(AMGN), 산업재(HON)를 섞었습니다. 그래서 PYPL이나 MDLZ처럼 비중 순위가 낮은 종목도 들어가 있습니다.
25개인 이유는 AlphaVantage 무료 플랜이 하루 25회라 감성분석을 하루에 다 돌릴 수 있는 상한이기 때문입니다.
리밸런싱
자동 리밸런싱은 없고, 수동으로 드물게 하는 걸 원칙으로 합니다. 저희는 대량 우량주 위주로 사전에 검증된 종목을 지정하고 운영하는 것을 목표로 했습니다. 이 시스템에서 종목 교체는 설정 한 줄이 아니라 DB 컬럼 추가, 과거 데이터 백필, ML 재학습까지 같이 가는 작업이라서요.
주기는 연 1회, 나스닥100 정기 변경(12월) 이후를 권합니다.
편입 기준은 시총과 거래대금 상위 유지, 1년 이상 거래 이력, 데이터 소스 커버리지입니다. 편출은 나스닥100 제외나 유동성 급감입니다.
6개월 미만으로 자주 바꾸는 건 비추천입니다. 학습 데이터가 리셋되고, 최근 잘 오른 종목만 넣는 생존편향이 커집니다.
종목을 뺄 때는 보유 중인 종목은 매도가 끝난 뒤에 빼세요.
종목을 바꿀 때 손대는 곳 (해당 내용은 강의를 참고해주시면 됩니다.)
코드:
stock.py리스트,stock_recommendation_service.py의STOCK_TO_TICKER와TICKER_TO_EXCHANGE, kaggle_notebook/predict.py의TARGET_COLUMNSDB:
economic_and_stock_data와predicted_stocks에 종목 컬럼 추가과거 데이터 백필 후 Kaggle 재학습
감사합니다.
1
네! 빠르게 알려주셔서 감사합니다. 참고하겠습니다~
그나저나 최근 매매이력은 어떠신가요?
저는 7월말~ 8월 초에 익절이 비율이 높았다가 8월 5일 이후로는 손절이 급격히 늘었네요. (익절 1회, 손절 9회)
강사님도 비슷하신지 궁금합니다.
1
안녕하세요, @Taihak Kim님.
제 실계좌(매수일 기준): 7/24~8/4 매수분은 7건 연속 익절, 8/5 이후 매수분은 익절 2건·손절 5건·신호매도 4건입니다. 시장이 하락장으로 전환되면 어떻게든 손실을 볼 수밖에 없습니다.
다만 손절은 대부분 -3~-5% 안에서 끊겼고 익절은 +6~+13%라, 이 전략은 승률이 아니라 손익비로 버티는 설계입니다. 지금 구간은 설계상 예상된 손실 구간이고, 상승장이 오면 다시 연속 익절이 나올 수 있는 구조입니다.
하락장에서 손실은 어쩔 수 없는 부분이고, 손실률을 줄이기 위해 손절하는 것이 중요합니다. 손절 안 하고 버티다가 미리 예측 불가능한 큰 폭락이 오면 감당이 안 되기 때문입니다.
제가 강의에서 모든 것을 다 설명드리진 않았지만, 향후 @Taihak Kim님께서 직접 만들어가셔야 할 부분이 있습니다. 예를 들면 아래와 같습니다.
1. 하락장이 오면 수동으로 지표를 조정한다. (아니면 특정 조건이 발동되면 자동으로 지표가 조정되게 하는 방법도 있습니다.)
손절 배수(ATR×2.5)는 그대로 두시고, "덜 사고, 작게 사는" 쪽을 조정하는 게 효과가 큽니다.
- VIX 하드블록: 현재 35 → 25~30으로 낮추면 변동성 커진 날 신규 매수가 자동 차단됩니다.
- RSI 하드블록: 현재 80 → 70으로 낮추면 과열 구간 추격 매수가 줄어듭니다.
- 복합점수 임계값 상향: 상위 후보만 통과시켜 하루 매수 건수 자체를 줄입니다.
- 익절/트레일링 배수 하향: 횡보·하락장에선 익절 ATR×3을 ×2 정도로 낮춰 수익을 빨리 확정하는 게 유리한 경우가 많습니다.
- 종목당 비중·하루 매수 건수 축소: 전략을 안 건드리고 리스크를 줄이는 가장 단순한 방법입니다.
2. 반복 손절 종목 관리.
저도 손절 후 며칠 만에 다시 잡혀 또 손절됐습니다. 손절 후 N영업일 재매수 금지, 같은 종목 2회 연속 손절 시 유니버스에서 일시 제외하고 보유분은 정리하는 규칙 등을 추가해 볼 수 있습니다.
(실제 자동매매를 돌려보고 있으시다면, 어떤 종목은 시스템이 잘 맞추는데, 어떤 종목은 그렇지 않다는 느낌도 분명히 있으실 겁니다. 그런 부분을 지속적으로 추적하시고, 종목 유니버스를 변경하시는 것도 좋은 방법일 것 같습니다.)
3. 판단 기준은 승률이 아니라 기대값.
profit_loss_pct로 (익절폭×익절확률) − (손절폭×손절확률)을 주 단위로 보시고, 몇 주 연속 마이너스일 때 위 조정을 검토하실 수 있을 것 같습니다.
위 내용 검토하셔서 @Taihak Kim님만의 더 좋은 시스템으로 만들어 가시면 좋을 것 같습니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. Taihak Kim님
강의의 나스닥 상위 종목군은 거래량과 유동성이 충분하고, 실적·뉴스·거시경제 관련 데이터가 풍부한 빅테크 중심의 종목을 대상으로 구성되어 있습니다. 이는 예측 정확도뿐 아니라 자동매매 시 주문 체결과 시스템 안정성을 고려한 선택입니다.
시장 변화에 따라 종목을 리밸런싱할 때는 단순히 티커 목록만 변경하기보다는 다음 순서로 진행하는 것이 좋습니다.
종목 선정 기준 정의
- 시가총액 또는 나스닥 내 순위
- 평균 거래량과 유동성
- 충분한 과거 가격 데이터
- 실적·뉴스 데이터의 확보 가능 여부
- 거래 정지, 상장폐지 등 운영 리스크
- 시가총액 또는 나스닥 내 순위
티커 목록 변경
stock.py의 종목 목록
stock_recommendation_service.py의STOCK_TO_TICKER,TICKER_TO_EXCHANGE
volume_service.py의 관련 종목 목록
economic_service.py의stock_columns
데이터베이스 구조 확인
- 종목별 컬럼을 사용하는 구조라면
economic_and_stock_data,predicted_stocks테이블에 신규 종목 컬럼을 추가하거나 제외 종목 컬럼을 정리해야 합니다.
- 종목별 컬럼을 사용하는 구조라면
과거 데이터 수집 및 모델 재학습
- 신규 종목은 기존 종목과 동일한 기간의 데이터를 확보할 수 없으므로, 해당 종목의 상장 이후 데이터부터 수집해야 합니다.
- 종목 수가 변경되면 모델의 입력 차원이나 예측 대상 컬럼이 달라질 수 있으므로
predict.py등의 설정을 확인하고 모델을 다시 학습해야 합니다.
- 신규 종목은 기존 종목과 동일한 기간의 데이터를 확보할 수 없으므로, 해당 종목의 상장 이후 데이터부터 수집해야 합니다.
리밸런싱은 매일 변경하기보다는 분기별 또는 반기별처럼 일정한 주기를 정해 검토하는 방식을 권장합니다. 변경 시에는 기존 종목과 신규 종목의 데이터 수집 여부, 모델 재학습 완료 여부, 예측 결과의 정상 출력 여부를 함께 확인해야 합니다.
자세한 종목 추가 및 변경 방법은 아래 기존 답변을 참고해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
베개머리투자법 섹션 5를 듣고 질문드립니다.
0
9
2
미국 써머 타임 적용에 대해서 질문입니다.
0
22
1
클로드 API 기간설정에 대해서
1
41
1
한국투자증권 모의투자 상시투자 풀릴 시, 프로그램이 헛돌고있음
1
78
2
llm_decision_logs 미적재 문의
1
67
2
연동 문제
1
74
2
5-21 질문이요!
1
88
3
매수 실행 시점 관련
1
68
1
Opus/Sonnet 버전 관련 문의
1
81
2
섹션2 질문이요
1
87
2
섹션1.9 질문입니다!
1
109
3
Kaggle 노트북(predict.ipynb) 관련
1
86
2
git bash .env
1
79
1
알파벤티지 sleep(5) 관련 문의
1
85
2
실전 계좌에서 운영하고 계신 분 계신가요?
1
80
2
클로드
1
71
2
pip install -r requirements.txt
0
77
2
명령 프롬프트
0
76
2
slack 알림 연동 강의 관련
1
91
2
supabase_key 관련
1
115
3
python run.py 실행시 에러 문제
1
113
2
커서창
1
88
2
cursor 환경
1
80
2
개발 환경 준비와 프로젝트 구조 강의 관련
1
71
2





