본문 바로가기
Project Archive/Quant & Auto Trading

[자동매매] 실전운영 14일차 - 4승 무패 +29.4만원, 쿨다운 재진입 대덕전자 +7.82%와 구조 변경 첫날

by 병헤는 밤 2026. 4. 24.
반응형

4월 24일 매매 일지 -- 4승 무패 +29.4만원, 쿨다운 재진입 대덕전자 +7.82%와 구조 변경 첫날

금요일. BOTH_BULL 유지. 청산 4건 전원 수익(TRAILING_STOP), 승률 100%, 순손익 +294,100원(+5.55%)으로 이번 주 단일일 최대 수익을 기록했다. 대덕전자가 4/23 BE 청산 후 1일 쿨다운을 거쳐 재진입 → 당일 +7.82%(+114,800원)로 오늘의 MVP. HD현대일렉트릭은 09:09 진입 73분 만에 +6.11% D+0 청산, HPSP는 D+1 +5.27%, 현대로템은 D+2 +3.00%. 오늘은 매매 결과뿐 아니라 봇 구조가 크게 바뀐 첫날이기도 하다 — MAX_HOLDINGS 10→12, per-slot 예산 100만→150만이 장 시작부터 적용됐고, 자본 스윕 결과로 검토했던 섹터 쿼터는 기각됐다. 더하여 4/23 일지에 남긴 두 "미해결 숙제"가 실제로는 오진이었다는 사실도 정정한다.

시장 환경

지수 시가 → 마감 당일 흐름
KOSPI (KODEX 200) 98,355 → 98,120 (−0.24%) 오전 혼조, 13:02 저점 97,010 후 반등 마감
KOSDAQ (KODEX 코스닥150) 19,715 → 20,295 (+2.94%) 장 시작부터 지속 상승, 15:30 당일 최고가 마감

BOTH_BULL 유지 + KOSDAQ 단독 강세(+2.94%) 날. KOSPI는 13:02 −1.4% 조정 후 반등으로 거의 본전 마감이라 디커플링 흐름. 오늘 신규 진입 6건 중 반도체/중소형이 섞여 있어 KOSDAQ 강세를 직접적으로 수혜.

오늘의 시장 × 매매 타임라인

  KOSPI    시각     매매                                  구간
  98,355   09:01    (시가)                                BOTH_BULL 확인
  98,560   09:09    HD현대일렉트릭 진입 1,194,000          초반 상승 타이밍
  98,265   09:31    대덕전자 재진입 104,900 (쿨다운 복귀)   갭상승 직후
  98,220   10:22    HD현대일렉트릭 TRAILING +6.11% (D+0)   상승 유지
  98,220   10:28    대한전선 / HD한국조선해양 동시 진입     ← MH=12 효과 체감
  98,100   11:27    HPSP TRAILING +5.27% (D+1)             횡보 진입
  97,745   11:36    두산에너빌리티 재진입 126,900           소폭 조정 중
  97,455   12:59    대덕전자 TRAILING +7.82% (D+0, 3h28m)  저점 근접
  97,010   13:02    ──                                    당일 저점
  97,625   13:29    현대로템 TRAILING +3.00% (D+2)         반등 초입
  97,865   13:58    현대로템 재진입 247,000                반등 구간 (29분 만에)
  98,120   15:30    (종가)                                 V자 회복 마감

오늘 TRAILING 4건은 전부 KOSPI 상대적 조정 구간(10~13시)에 집중. 추세 모멘텀이 살아있는 포지션이 ATR×2% 트레일링 라인에 정상 터치되며 수익 확정 → 시장이 흔들릴 때 TRAILING이 수익 보호 장치로 설계대로 작동한 전형적 사례.

청산 내역 (4건) — 전원 TRAILING_STOP, 전원 흑자

시각 종목 진입가 청산가 PnL 사유 보유일
10:22 HD현대일렉트릭 1,194,000 1,267,000 +73,000 (+6.11%) TRAILING_STOP D+0 (73분)
11:27 HPSP 51,200 53,900 +78,300 (+5.27%) TRAILING_STOP D+1
12:59 대덕전자 104,900 113,100 +114,800 (+7.82%) TRAILING_STOP D+0 (3h28m)
13:29 현대로템 233,500 240,500 +28,000 (+3.00%) TRAILING_STOP D+2

청산 손익 합계: +294,100원 (승/패 4/0, 승률 100%, 평균 +5.55%, PF ∞)

  • 대덕전자 +7.82% (MVP, 쿨다운 재진입 사례): 4/21 99,160 진입 → 4/23 09:04 BE 99,300(+0.14%) 청산 → 1일 쿨다운 → 4/24 09:31 104,900 재진입 → 12:59 TRAILING 113,100. BE 청산가 대비 +5.65% 비싸게 재진입했음에도 추가 +7.82% 수익으로 마무리. "BE 청산은 리셋이고 손실이 아니다, 쿨다운 후 같은 종목 모멘텀이 살아 있으면 재진입이 정답"이라는 사례.
  • HD현대일렉트릭 D+0 73분 +6.11%: 09:09 진입(K=0.565) 후 10:22 TRAILING. 73분이면 오늘 가장 빠른 회전 청산. 상승 강도가 ATR×2.5 TARGET까진 못 갔지만 트레일링 라인이 타이트하게 따라붙어 +6% 수익 확정.
  • HPSP D+1 +5.27%: 4/23 12:07 51,200 진입(KOSPI 저점 근접의 위험한 타이밍으로 어제 일지에 경고했던 종목) → 오늘 11:27 53,900 청산. 어제 "가장 위험한 타이밍" 경고가 D+1에 바로 무너지며 수익 확정. 시장 타이밍은 위험했지만 개별 종목 모멘텀이 끌어올린 케이스.
  • 현대로템 D+2 +3.00%: 4/22 233,500 진입 → 4/24 13:29 240,500 청산. 트레일링 라인 정상 체결. 29분 후 247,000에 즉시 재진입(후술).

매수 내역 (6건) — MH=12 반영 첫날, 신규 진입 다수

시각 종목 코드 진입가 수량 금액 K 비고
09:09 HD현대일렉트릭 267260 1,194,000 1주 1,194,000 0.565 당일 +6.11% 익절
09:31 대덕전자 (재진입) 353200 104,900 14주 1,468,600 0.644 쿨다운 1일 후 재진입 → +7.82% 익절
10:28 대한전선 001440 44,500 33주 1,468,500 0.451 전력/전선 섹터 신규
10:28 HD한국조선해양 009540 473,000 3주 1,419,000 0.609 MH=11→12 슬롯 사용 (구 MH=10이면 막혔을 진입)
11:36 두산에너빌리티 (재진입) 034020 126,900 11주 1,395,900 0.537 4/20 청산가 120,400 대비 +5.40%에 재진입
13:58 현대로템 (재진입) 064350 247,000 6주 1,482,000 0.553 13:29 청산 240,500 → 29분 만에 재진입

총 매수 금액 약 843만원(6건 × 약 140만). 6건 중 3건이 재진입 케이스(대덕전자, 두산에너빌리티, 현대로템). 섹터 분포: 전력/중전기(HD현대일렉트릭·대한전선·두산에너빌리티) 3건, 반도체(대덕전자) 1건, 조선(HD한국조선해양) 1건, 방산(현대로템) 1건. 전력·중전기 비중이 눈에 띄게 높음 — 원전/전력망 테마의 장기 흐름과 연동된 것으로 해석.

🔁 재진입 3건 분석 — 쿨다운 복귀의 진가

  • 대덕전자 (쿨다운 재진입, 완벽한 사례): 4/21 99,160 진입 → 4/23 BE +0.14% → 1일 쿨다운 → 4/24 104,900 재진입 → 같은 날 +7.82% TRAILING. 재진입가가 BE 청산가보다 +5.65% 비싸졌는데도 추가 +7.82% — "강한 종목은 쿨다운 후 다시 돌파한다"는 로직이 정확히 들어맞음. 이번 주 누적 이 종목만 +116,200원(+0.14% + 7.82%의 명목 합).
  • 두산에너빌리티 (장기 쿨다운 재진입): 4/20 진입 114,100 → 4/23 TRAILING 120,400(+5.52%) → 즉시 쿨다운(TRAILING=0일)이지만 3일 공백 후 4/24 126,900 재진입. 2차전지→조선→반도체→전력의 섹터 로테이션 중 원전/에너지 모멘텀 재부활 시점을 포착.
  • 현대로템 (같은 날 재진입, whipsaw 위험): 4/22 233,500 진입 → 4/24 13:29 240,500 TRAILING(+3%) → 29분 만에 247,000 재진입. 직전 매도가 대비 +2.7% 비싸게 들어갔지만 K=0.553에 BOTH_BULL·거래량 정상 → 같은 날 같은 종목 재진입 케이스로는 앞선 삼성전기(4/17)·삼성중공업(4/22) 후 세 번째. 이 포지션은 다음날(4/27 월요일) 초기 손절선과의 거리 관찰 필요.

⚙️ 오늘의 구조 변경 (장 시작 전 반영)

어제 저녁 자본 스윕 결과를 바탕으로 4가지 구조적 변경이 오늘 장 시작부터 적용됐다.

  • MAX_HOLDINGS 10 → 12: 2024~2025 2년 백테스트 기준 PF 2.01→2.17(+8%), MDD −3.77%→−3.21%(−15% 개선), 샤프 3.20→3.48. 수익률/MDD 비율 29.5x로 최고. 오늘 10:28에 대한전선+HD한국조선해양 2종 동시 진입 슬롯으로 즉시 수혜 — 구 MH=10이었으면 한쪽이 막혔을 상황.
  • per-slot 예산 100만 → 150만: 대형주(삼성전자·SK하이닉스 등) 편입 가능. 백테스트 성과에 부정적 영향 없음. 오늘 HD현대일렉트릭 1주(119만원), 대덕전자 14주(147만원) 등 슬롯당 거의 풀로 활용.
  • 섹터 쿼터(MAX_PER_SECTOR) 검토 후 기각: 4/23 반도체 4종 동시 진입 이후 상관 리스크 우려로 검토. max=3/4/5 × 자본 그리드 20조합 재스윕 결과 — max=3은 MH≥10에서 MDD 악화(+30~40%), max=4/5는 자연 발생 빈도가 낮아 효과 없음. "통계 근거 없는 필터는 넣지 않는다"는 원칙으로 기각. 코드(`core/sector_map.py` 50종목 매핑)는 보존, `MAX_PER_SECTOR=None`으로 비활성.
  • 예산 초과 가격 early-cut 도입: 1주 가격 > 스케일 예산이면 돌파/거래량 필터 전에 조기 제외 DEBUG 로그. 오늘 하루 221건 스킵. 효성중공업(3,220,000원/주) 같은 "후보로는 잡히지만 원천 매수 불가" 종목들을 스캔 초반에 정리해 로그/선정 슬롯 오염 방지.

🔁 어제(4/23) 일지 정정

4/23 일지(blog/12_*.html)의 "🐛 미해결 숙제" 섹션 2건이 실제 코드 확인 결과 오진이었음. 이미 게시된 상태라 소급 수정하지 않고 여기서 정정한다.

  • "09:00~09:05 손절 공백 미패치"는 사실이 아님: main.py:67-68에서 _MARKET_OPEN = 09:00 / _VB_BUY_START = 09:05로 이미 분리돼 있고, _is_market_session()이 09:00부터 True → 청산 판정은 장 시작 즉시 작동. 갭다운 케이스가 다시 와도 09:00 시점에 손절선 터치 여부 판정됨. 4/22 일지의 "미패치" 추측을 어제 4/23 일지 작성 시 코드 확인 없이 그대로 옮긴 것이 원인.
  • "Pension BEAR 비활성 = regime 판정 불일치"도 사실이 아님: 장외 시간(00:00~08:59)의 [PENSION] BEAR 장세 - 비활성 로그는 any_market_ok=False로 강제되는 의도된 동작. 진짜 버그는 장중에 따로 있었다 — strategy/bunt_pension.py:200 _fetch_market_cap()에서 pykrx get_market_cap_by_ticker() 반환 DataFrame의 컬럼 형식이 코드 기대값(`["시가총액", "상장주식수"]`)과 어긋나 "None of [Index(['종가', '시가총액', ...])] are in the [columns]" 에러 발생 → 유니버스 비어 매수 스캔 무효. DB에 bunt_pension 전략 trades 0건 (도입 이후 실전 매수 0회). 이것이 pension 전략이 가동되지 않은 진짜 원인이고, 다음 세션 우선 과제.
  • "오전 슬롯 만석 → 오후 반등 수혜 봉쇄" 내러티브도 근거 부족: 13:04~13:51 후보 종목 중 효성중공업은 1주 가격(3,220,000원) > 예산(1,500,000원)으로 원천 매수 불가(MH/슬롯 무관). HD건설기계·삼성중공업 재진입도 거래량 필터 탈락·당일 재진입 차단 등 다른 사유. 즉 4/23에 슬롯 만석으로 놓친 유의미한 기회는 사실상 0건. 직관은 맞았으나 증거는 없었다.

🐛 대덕전자 청산 알림 유실 + notifier 재시도 강화

대덕전자 12:59:38 청산(+114,800원) 당시 텔레그램 알림이 전송되지 않음. 원인: 12:59:48, 12:59:59 두 차례 모두 ConnectTimeout으로 실패 → 기존 _send()가 "2회 재시도 / 1초 간격"으로만 설계돼 있어 순간 장애를 못 막았다. HD현대일렉트릭(10:22)·HPSP(11:27)는 정상 송신됨 — 대덕전자 시점만 텔레그램 서버 측 일시 연결 장애.

운영 영향: 매매 체결 자체는 정상(DB/시트에 기록 정확), 사용자 측 실시간 가시성만 단절. 그럼에도 중요 청산을 놓칠 수 있으므로 장 마감 후 core/telegram_notifier.py 개선 + 봇 재시작 예정.

  • 재시도 2회 → 5회, 간격 고정 1초 → exponential backoff (1s → 2s → 4s → 8s). 총 대기 15초 커버 → 순간 장애 대부분 흡수.
  • kind 태그(buy/sell/regime/summary/watchlist/error) 도입 → 성공/실패 로그에 종류 표시. grep kind=sell로 매매 알림 송신 이력 추적 가능.
  • 성공 송신도 INFO 레벨 로그 추가 (기존엔 실패만 로그) → 사후 분석 용이.
  • 최종 실패는 WARNING → ERROR로 격상 + 포기 시점 명시 로그.
  • 장기 과제: 여러 봇(bunt_trader·autoTradingBot·cryptoTradingBot·etfSearch)이 중복 구현한 발송 로직을 큐 기반 통합 알림 시스템으로 리팩터링. 설계 문서는 ~/projects/infra/notify/README.md에 남김. Phase 1(공용 SQLite 큐 + 워커 데몬)은 여유 있을 때 진행.

보유 종목 현황 (11종목, 종가 기준)

종목 진입가 진입일 보유일 K 섹터
GS건설 43,100 4/21 D+3 0.507 건설
에코프로머티 82,800 4/21 D+3 0.531 2차전지
엘앤에프 195,800 4/21 D+3 0.519 2차전지
한화오션 133,700 4/22 D+2 0.484 조선
SK하이닉스 1,251,000 4/23 D+1 0.557 반도체
SK스퀘어 753,000 4/23 D+1 0.556 반도체
삼성전자 228,500 4/23 D+1 0.477 반도체
대한전선 44,500 4/24 D+0 0.451 전력
HD한국조선해양 473,000 4/24 D+0 0.609 조선
두산에너빌리티 (재진입) 126,900 4/24 D+0 0.537 전력
현대로템 (재진입) 247,000 4/24 D+0 0.553 방산

11종 중 D+0 신규 4종이 전부 이번 주 신규 섹터(전력 2, 조선 1, 방산 1). 반도체 3종(SK하이닉스·SK스퀘어·삼성전자)은 D+1 진입분이라 주말 갭 리스크 대상. 2차전지 2종(에코프로머티·엘앤에프)과 건설(GS건설)은 D+3으로 TIME_STOP(5영업일) 근접 관찰 구간 진입.

📊 인사이트

  • 4승 무패 + 평균 +5.55% + PF ∞: 2024-01 이후 이 봇에서 가장 깨끗한 수익 일자 중 하나. TRAILING이 4건 전부 체결됐다는 건 매수 타이밍이 전부 "상승 중 초입"이었다는 뜻. 진입 후 일정 % 이상 수익 구간을 반드시 거친 포지션만 트레일링에 걸리므로.
  • D+0 청산 2건 (HD현대일렉트릭 73분, 대덕전자 3h28m): 초단기 회전이 오늘 수익의 63%(187,800원) 기여. ATR 기반 트레일링이 단기 모멘텀에도 정확히 포착하는 사례.
  • 재진입 3건 전부 성공 패턴: 대덕전자(쿨다운 후, 당일 +7.82% 익절 완료), 두산에너빌리티(3일 공백 후, D+0 관찰 중), 현대로템(29분 후, D+0 관찰 중). "재진입은 구조적 비용"이라는 앞선 우려와 달리, 백테스트 기간이 아니라 최근 2주 실전에서도 수익 기여도가 높음.
  • KOSPI 횡보 vs KOSDAQ +2.94%: 디커플링 구간. 오늘 신규 6건 중 대덕전자(KOSDAQ)·HD현대일렉트릭·대한전선·두산에너빌리티 등 KOSDAQ/중형주가 상대적으로 많았음. 시장 흐름과 편입 종목 분포의 궁합이 맞았다는 사후 해석.
  • 예산 초과 early-cut 221회 발동: 장중 2분 사이클 × 40여 종목 × 5~7시간 스캔 구간에서 총 221회 조기 스킵. 효성중공업·삼성전기 등 고가 대형주가 지속 스캔에 걸린 후보로 추정. 다음 세션에 종목별 집계 확인 예정.

내일(월 4/27) 체크포인트

  1. 🔴 pension _fetch_market_cap() 디버깅: pykrx 반환 DataFrame 컬럼 실제 형식 확인 + 코드 기대값과 매칭. 이 버그가 해결되지 않는 한 pension 전략은 계속 실매매 불가. 4/23 일지 오진 정정 이후 진짜 최우선 과제.
  2. 🔴 보유 11종 월요일 오픈 관찰: 특히 D+0 신규 4종(대한전선·HD한국조선해양·두산에너빌리티·현대로템)은 초기 ATR×1.5 타이트 손절 구간. 갭다운 시 빠른 청산 판정 예상.
  3. 🟡 현대로템 같은 날 재진입 whipsaw 감시: 13:29 청산 → 13:58 재진입 패턴은 4/17 삼성전기·4/22 삼성중공업에 이은 세 번째. 월요일 재상승 이어가는지 vs 바로 눌리는지.
  4. 🟡 D+3 보유 3종(GS건설·에코프로머티·엘앤에프) TIME_STOP 근접: 5영업일 기준 D+5까지 +1% 미달 시 자동 청산. 월/화 사이 돌파 여부가 관전 포인트.
  5. ⚙️ notifier 패치 + 봇 재시작: 장 마감 후 scripts/start_live.sh 실행. 재시도 5회/exp backoff, kind 태그, 성공 로깅이 월요일 첫 알림부터 반영.
  6. 📊 주간 누적: 4/20 +1.5만 + 4/21 +27.1만 + 4/22 −13.9만 + 4/23 +14.7만 + 4/24 +29.4만 = 이번 주 +58.8만원. 우리로 단일 손실(-31만, 4/22) 제외 시 실질 +89.8만원. 5일 평균 +11.77만 (우리로 포함 기준).

소감

오늘은 "구조 변경이 첫날부터 수익에 직접 기여한 것을 목격한 날"이다. MH=12 증가는 10:28 2종 동시 진입 슬롯으로 즉시 활용됐고, 예산 150만 증액은 대형주(HD현대일렉트릭·대덕전자·HD한국조선해양)를 의미 있는 수량으로 담을 수 있게 했다. 그리고 섹터 쿼터는 백테스트 20조합 스윕에서 통계 근거 없음이 드러나 기각 — 직관과 데이터가 반대일 때 데이터를 따르는 게 왜 중요한지를 하루 차이로 체감했다. 동시에 어제 일지에 남긴 "미해결 숙제 2건"은 코드를 실제로 읽고 나서야 오진이었음을 발견했다. "지난 일지의 추측을 근거 없이 이월하지 말 것"이라는 원칙이 이 날의 숨은 교훈이다. 대덕전자 쿨다운 재진입은 이번 주 가장 아름다운 한 수였고, 그 수익이 현실 알림으로 닿지 못한 텔레그램 유실이 마지막 과제를 남겼다. 월요일에는 pension 버그와 notifier 패치를 모두 정리하고 시작한다.

 

4/24 - 일일요약

 

4/24 관심종목 일일 교체 내역

 

반응형

댓글