feat(sim): 물타기(애버리징) 토글 — 하락 시 손절 대신 평단↓ 추가매수

- config: AVERAGING_ENTRY·AVERAGING_DROP_PCT(0.10)·CRASH_DROP_PCT(0.10)
- signals.evaluate_holding: market_ok 인자 + 물타기 분기 (직전매수가 -10% 하락 시 ADD-down, 한도/강세장/비급락 조건, 당일 -10%급락은 손절·약세장 금지)
- engine·backtest: add_kind='down'이면 손절선 낮은 평단 기준 재설정(up은 위로 래칫 유지), engine은 market_ok 전달
- 첫 매수는 기존 검증 진입 그대로(우량주만 물타기)
- 백테스트: 즉시매수와 반대로 유리(10/20/60 수익·승률↑) → 라이브 변이 3개(v301/302/303) 등록, 총 223
- 웹 '물타기' 칩 + 설명 토스트

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
hyowons
2026-06-16 14:30:07 +09:00
parent 70f6b9a34d
commit eaa276b26d
233 changed files with 397 additions and 233 deletions
@@ -1,5 +1,5 @@
{
"cash": 81645047.17,
"cash": 69333400.69999999,
"initial": 100000000,
"positions": {
"278470": {
@@ -64,14 +64,35 @@
"tranches": 1,
"tranche_value": 6249886.075,
"last_add_price": 106900
},
"017670": {
"code": "017670",
"name": "SK텔레콤",
"sources": [
"interest"
],
"qty": 122,
"entry_price": 100900.0,
"entry_at": "2026-06-16T14:15:02.786476+09:00",
"stop": 95400,
"target": 117400,
"peak": 106700,
"trailing_on": false,
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 106700,
"tranches": 2,
"tranche_value": 6173490.448125,
"last_add_price": 101000
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100289247.17,
"max_drawdown": 0.015090351585097056,
"max_drawdown": 0.015099548184194508,
"last_exit": {},
"created_at": "2026-06-16T09:00:03.113433+09:00",
"updated_at": "2026-06-16T12:15:01.995562+09:00"
"updated_at": "2026-06-16T14:30:01.772344+09:00"
}
@@ -1,3 +1,5 @@
{"ts": "2026-06-16T09:01:12.662978+09:00", "side": "BUY", "code": "278470", "name": "에이피알", "price": 427000, "qty": 14, "cost": 5978897, "path": "immediate", "reason": "조건 충족 — 즉시매수(눌림 안 기다림)", "stop": 375500, "target": 581500, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "420,000 vs 400,300"}, {"label": "정배열(5>10)", "ok": true, "detail": "408,300 / 400,300"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "408,300 / 385,325"}, {"label": "상대강도(시장대비)", "ok": false, "detail": "-2.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -99 · 기 +105 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+23%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.94% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 473,000"}, {"label": "거래량 급증", "ok": false, "detail": "68,153 (환산) vs 평균 352,682"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.94%"}, {"label": "RSI", "ok": true, "detail": "55"}, {"label": "눌림목 도달", "ok": false, "detail": "지정가 400,300 (현재 420,000)"}]}
{"ts": "2026-06-16T09:01:13.033028+09:00", "side": "BUY", "code": "005935", "name": "삼성전자우", "price": 220500, "qty": 28, "cost": 6174926, "path": "immediate", "reason": "조건 충족 — 즉시매수(눌림 안 기다림)", "stop": 194969, "target": 297093, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "216,000 vs 206,760"}, {"label": "정배열(5>10)", "ok": true, "detail": "221,500 / 206,760"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "221,500 / 160,720"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+9.4%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +965 · 기 -353 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.00% (환산) vs 평균 0.83% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 243,500"}, {"label": "거래량 급증", "ok": false, "detail": "207 (환산) vs 평균 6,645,770"}, {"label": "회전율 급증", "ok": false, "detail": "0.00% (환산) vs 평균 0.83%"}, {"label": "RSI", "ok": true, "detail": "64"}, {"label": "눌림목 도달", "ok": false, "detail": "지정가 206,760 (현재 216,000)"}]}
{"ts": "2026-06-16T09:01:13.328455+09:00", "side": "BUY", "code": "055550", "name": "신한지주", "price": 106900, "qty": 58, "cost": 6201130, "path": "immediate", "reason": "조건 충족 — 즉시매수(눌림 안 기다림)", "stop": 96616, "target": 137751, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "105,700 vs 99,530"}, {"label": "정배열(5>10)", "ok": true, "detail": "100,320 / 99,530"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "100,320 / 96,553"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+2.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +473 · 기 +5 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.03% (환산) vs 평균 0.35% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 109,800"}, {"label": "거래량 급증", "ok": false, "detail": "162,807 (환산) vs 평균 1,653,581"}, {"label": "회전율 급증", "ok": false, "detail": "0.03% (환산) vs 평균 0.35%"}, {"label": "RSI", "ok": true, "detail": "60"}, {"label": "눌림목 도달", "ok": false, "detail": "지정가 99,530 (현재 105,700)"}]}
{"ts": "2026-06-16T14:15:02.786477+09:00", "side": "BUY", "code": "017670", "name": "SK텔레콤", "price": 100800, "qty": 61, "cost": 6149722, "path": "immediate", "reason": "조건 충족 — 즉시매수(눌림 안 기다림)", "stop": 95400, "target": 117000, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "106,700 vs 106,220"}, {"label": "정배열(5>10)", "ok": true, "detail": "111,880 / 106,220"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "111,880 / 92,628"}, {"label": "상대강도(시장대비)", "ok": false, "detail": "-2.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +415 · 기 -71 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+9%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.58% (환산) vs 평균 0.86% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 139,500"}, {"label": "거래량 급증", "ok": true, "detail": "5,562,407 (환산) vs 평균 1,856,532"}, {"label": "회전율 급증", "ok": true, "detail": "2.58% (환산) vs 평균 0.86%"}, {"label": "RSI", "ok": true, "detail": "54"}, {"label": "눌림목 도달", "ok": false, "detail": "지정가 106,220 (현재 106,700)"}]}
{"ts": "2026-06-16T14:20:02.737020+09:00", "side": "BUY", "code": "017670", "name": "SK텔레콤", "price": 101000, "qty": 61, "cost": 6161924, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 95400, "target": 117000, "signals": [{"label": "손절선", "ok": true, "detail": "95,400 (현재 106,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 117,000"}, {"label": "추세(10일선)", "ok": true, "detail": "106,220"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +415 · 기 -71"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 105,087"}]}