# env_config

created_at: 2026-02-16 20:09:40
STOP_LOSS_PCT: -0.30
MAX_POSITION_PCT: 0.20
MAX_STOCKS: 3
USE_RISK_CHECK: true
DAILY_STOP_LOSS_PCT: -0.05
CONSECUTIVE_LOSS_LIMIT: 4
USE_BAN_SYSTEM: true
BAN_HOURS: 24
USE_STOCK_FILTER: true
FORCE_MARKET_OPEN: false
MAX_LOSS_PER_TRADE_KRW: 200000
KIS_APP_KEY_REAL: PSwMdtdLIG6RNt0pXjzCt6DD5H08kEiWIJVo
KIS_ACCOUNT_CODE_REAL: 01
KIS_MOCK: true
TAKE_PROFIT_PCT: 0.50
MIN_DROP_RATE: 0.03
MIN_RECOVERY_RATIO_SHORT: 0.5
MAX_PER: 25
MAX_PEG: 1.5
MIN_GROWTH_PCT: 10
MM_SERVER_URL: https://mattermost.hoonfam.org
MM_BOT_TOKEN_: 3w8cbftgx3bsjn3946dcctysce
MATTERMOST_CHANNEL: stock
GEMINI_API_KEY: AIzaSyBHMoObQ_yYW2njaGenc3_j4CuCIFAaadA
KIS_SHORT_MM_CHANNEL: kis-short
KIS_LONG_MM_CHANNEL: kis-long
KIS_APP_SECRET_REAL:
  dwydUnbNbQpdyLDQxqGuy8al3O6riFq9NU6JHcu1XsVQKEyZPELaVQOBVx/azNBJh9O5G4UxWAnuo8N0zqIkLQFzd33+JcAoAcSbABMfYuZZIExOAuBIYRBg/YOnk5BcUr+muIfdcHvdBldpzn8Pap+dMBACyS3uRrZl9MLmJDj+Rt2aUDM=


created_at: 2026-02-20 04:19:35
STOP_LOSS_PCT: -0.18
SHOULDER_CUT_PCT: 0.03
STOP_ATR_MULTIPLIER_TAIL: 2.5
TARGET_ATR_MULTIPLIER_TAIL: 8.0
MAX_POSITION_PCT: 0.20
USE_SLOT_CAP: true
SLOT_CAP_PCT: 0.9
MAX_STOCKS: 7
USE_KELLY: false
RISK_PCT_PER_TRADE: 0.015
MIN_POSITION_AMOUNT: 20000
USE_RISK_CHECK: false
DAILY_STOP_LOSS_PCT: -0.05
CONSECUTIVE_LOSS_LIMIT: 7
USE_BAN_SYSTEM: true
BAN_HOURS: 24
USE_STOCK_FILTER: true
RSI_OVERHEAT_THRESHOLD: 78
MIN_RECOVERY_RATIO: 0.32
MAX_RECOVERY_RATIO: 1.15
USE_TWAP: false
TWAP_MIN_SPLIT: 500000
TWAP_MAX_SPLIT: 2000000
TWAP_MIN_DELAY: 30
TWAP_MAX_DELAY: 180
USE_ML_SIGNAL: false
ML_MIN_PROBABILITY: 0.57
USE_NEWS_ANALYSIS: false
NEWS_ANALYSIS_HOUR: 9
NEWS_MAX_COUNT: 5
USE_QUICK_PROFIT_PROTECTION: true
KIS_APP_SECRET_REAL:
  DzG04RbksnUMROslum/2DliJiVZAdeSgwUNHKSbFehMmD2WKGVUeSd0N1B8LY947W/aNtEmU8pdkvKTFnVX1u68DvCj7cvEtlJc++wCUeaRD3z1Ov48b5PLsPiWvwE+pMd0pEl6jmFg0J6td1TidugAsZtEQ3GUBimyQyDSgw3jkdbnM390=

KIS_APP_SECRET_MOCK:
[cell repeats an earlier one in this file: 180 characters]


created_at: 2026-02-20 20:54:13
STOP_LOSS_PCT: -0.18
SHOULDER_CUT_PCT: 0.03
STOP_ATR_MULTIPLIER_TAIL: 2.5
TARGET_ATR_MULTIPLIER_TAIL: 8.0
MAX_POSITION_PCT: 0.20
USE_SLOT_CAP: true
SLOT_CAP_PCT: 0.9
MAX_STOCKS: 7
USE_KELLY: false
RISK_PCT_PER_TRADE: 0.015
MIN_POSITION_AMOUNT: 20000
USE_RISK_CHECK: false
DAILY_STOP_LOSS_PCT: -0.05
CONSECUTIVE_LOSS_LIMIT: 7
USE_BAN_SYSTEM: true
BAN_HOURS: 24
USE_STOCK_FILTER: true
RSI_OVERHEAT_THRESHOLD: 78
MIN_RECOVERY_RATIO: 0.32
MAX_RECOVERY_RATIO: 1.15
USE_TWAP: false
TWAP_MIN_SPLIT: 500000
TWAP_MAX_SPLIT: 2000000
TWAP_MIN_DELAY: 30
TWAP_MAX_DELAY: 180
USE_ML_SIGNAL: false
ML_MIN_PROBABILITY: 0.57
USE_NEWS_ANALYSIS: false
NEWS_ANALYSIS_HOUR: 9
NEWS_MAX_COUNT: 5
USE_QUICK_PROFIT_PROTECTION: true
KIS_APP_SECRET_REAL:
[cell repeats an earlier one in this file: 180 characters]

KIS_APP_SECRET_MOCK:
  eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0b2tlbiIsImF1ZCI6ImU2Njc2YWQ0LTdhY2ItNDMxZi1hNTljLTJiNDZhYzlmMjg4NCIsInByZHRfY2QiOiIiLCJpc3MiOiJ1bm9ndyIsImV4cCI6MTc3MTY3NDc4MCwiaWF0IjoxNzcxNTg4MzgwLCJqdGkiOiJQU09QTFdwM2xoN0N3TmVoQWo3MEk4bEpOVldLMDNZZ0NWeTgifQ.Q3AOYPUSFM__lCeNhqFYwKkDE_wHTfqhFewNiXC2NwgHdZdmIJGHb9ODcNkZrW4WG2VtOkOuBReJIjdNWCopLg


created_at: 2026-02-20 21:17:20
STOP_LOSS_PCT: -0.18
SHOULDER_CUT_PCT: 0.03
STOP_ATR_MULTIPLIER_TAIL: 2.5
TARGET_ATR_MULTIPLIER_TAIL: 8.0
MAX_POSITION_PCT: 0.20
USE_SLOT_CAP: true
SLOT_CAP_PCT: 0.9
MAX_STOCKS: 7
USE_KELLY: false
RISK_PCT_PER_TRADE: 0.015
MIN_POSITION_AMOUNT: 20000
USE_RISK_CHECK: false
DAILY_STOP_LOSS_PCT: -0.05
CONSECUTIVE_LOSS_LIMIT: 7
USE_BAN_SYSTEM: true
BAN_HOURS: 24
USE_STOCK_FILTER: true
RSI_OVERHEAT_THRESHOLD: 78
MIN_RECOVERY_RATIO: 0.32
MAX_RECOVERY_RATIO: 1.15
USE_TWAP: false
TWAP_MIN_SPLIT: 500000
TWAP_MAX_SPLIT: 2000000
TWAP_MIN_DELAY: 30
TWAP_MAX_DELAY: 180
USE_ML_SIGNAL: false
ML_MIN_PROBABILITY: 0.57
USE_NEWS_ANALYSIS: false
NEWS_ANALYSIS_HOUR: 9
NEWS_MAX_COUNT: 5
USE_QUICK_PROFIT_PROTECTION: true
KIS_APP_SECRET_REAL:
[cell repeats an earlier one in this file: 180 characters]

KIS_APP_SECRET_MOCK:
  Ip+XZrZcoz11thgDD40XS8i6R1AalYkKFZwg2w8+ZMulVKN8rJVXiqGONxc4EYxw1S3TgOcx7fSldDc6EGq63bprfbgHwKWxstu29ZmLAtRNU0oFqV7e9vCOfgiWxrfnCqwcihoS7ovmza9+Ylqd8/EtjFGNmhQHWocyTAm8kdp5IG6tFtc=


created_at: 2026-02-22 18:07:49
STOP_LOSS_PCT: -0.35
SHOULDER_CUT_PCT: 0.03
STOP_ATR_MULTIPLIER_TAIL: 2.5
TARGET_ATR_MULTIPLIER_TAIL: 7.0
MAX_POSITION_PCT: 0.20
USE_SLOT_CAP: true
SLOT_CAP_PCT: 0.9
MAX_STOCKS: 7
USE_KELLY: false
RISK_PCT_PER_TRADE: 0.015
MIN_POSITION_AMOUNT: 20000
USE_RISK_CHECK: false
DAILY_STOP_LOSS_PCT: -0.05
CONSECUTIVE_LOSS_LIMIT: 7
USE_BAN_SYSTEM: true
BAN_HOURS: 24
USE_STOCK_FILTER: true
RSI_OVERHEAT_THRESHOLD: 78
MIN_RECOVERY_RATIO: 0.35
MAX_RECOVERY_RATIO: 1.15
USE_TWAP: false
TWAP_MIN_SPLIT: 500000
TWAP_MAX_SPLIT: 2000000
TWAP_MIN_DELAY: 30
TWAP_MAX_DELAY: 180
USE_ML_SIGNAL: false
ML_MIN_PROBABILITY: 0.57
USE_NEWS_ANALYSIS: false
NEWS_ANALYSIS_HOUR: 9
NEWS_MAX_COUNT: 5
USE_QUICK_PROFIT_PROTECTION: true
KIS_APP_SECRET_REAL:
  2SkPBKrztpBomcR+pYNEBuVa5/iSqYLQxsDn/YqJuQ0dULp/GqTAePhe4czJHuf/1XBUd18KDV6ZTrmxfI8eTiCfIEaO6jMKSq0u+CoUkHTrO9TfliYtxsNbl43jL+rokLB54V2VmHrlqM4WCF+54bMWhzzSE7z3OOl67V9yWKCWIoTrcYg=

KIS_APP_SECRET_MOCK:
[cell repeats an earlier one in this file: 180 characters]


created_at: 2026-02-27 17:55:27
STOP_LOSS_PCT: 0.005
SHOULDER_CUT_PCT: 0.018
STOP_ATR_MULTIPLIER_TAIL: 2.5
TARGET_ATR_MULTIPLIER_TAIL: 7.0
MAX_POSITION_PCT: 0.05
USE_SLOT_CAP: true
SLOT_CAP_PCT: 0.9
MAX_STOCKS: 7
USE_KELLY: false
RISK_PCT_PER_TRADE: 0.015
MIN_POSITION_AMOUNT: 20000
USE_RISK_CHECK: true
DAILY_STOP_LOSS_PCT: -0.05
CONSECUTIVE_LOSS_LIMIT: 7
USE_BAN_SYSTEM: true
BAN_HOURS: 24
USE_STOCK_FILTER: true
RSI_OVERHEAT_THRESHOLD: 78
MIN_RECOVERY_RATIO: 0.5
MAX_RECOVERY_RATIO: 1.15
USE_TWAP: false
TWAP_MIN_SPLIT: 500000
TWAP_MAX_SPLIT: 2000000
TWAP_MIN_DELAY: 30
TWAP_MAX_DELAY: 180
USE_ML_SIGNAL: false
ML_MIN_PROBABILITY: 0.57
USE_NEWS_ANALYSIS: false
NEWS_ANALYSIS_HOUR: 9
NEWS_MAX_COUNT: 5
USE_QUICK_PROFIT_PROTECTION: true
KIS_APP_SECRET_REAL:
[cell repeats an earlier one in this file: 180 characters]

KIS_APP_SECRET_MOCK:
[cell repeats an earlier one in this file: 180 characters]

ANTHROPIC_API_KEY:
  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


created_at: 2026-03-03 16:52:22
STOP_LOSS_PCT: -0.02
SHOULDER_CUT_PCT: 0.025
STOP_ATR_MULTIPLIER_TAIL: 2.5
TARGET_ATR_MULTIPLIER_TAIL: 7.0
MAX_POSITION_PCT: 0.05
USE_SLOT_CAP: true
SLOT_CAP_PCT: 0.9
MAX_STOCKS: 7
USE_KELLY: false
RISK_PCT_PER_TRADE: 0.015
MIN_POSITION_AMOUNT: 20000
USE_RISK_CHECK: true
DAILY_STOP_LOSS_PCT: -0.05
CONSECUTIVE_LOSS_LIMIT: 7
USE_BAN_SYSTEM: true
BAN_HOURS: 24
USE_STOCK_FILTER: true
RSI_OVERHEAT_THRESHOLD: 78
MIN_RECOVERY_RATIO: 0.5
MAX_RECOVERY_RATIO: 1.15
USE_TWAP: false
TWAP_MIN_SPLIT: 500000
TWAP_MAX_SPLIT: 2000000
TWAP_MIN_DELAY: 30
TWAP_MAX_DELAY: 180
USE_ML_SIGNAL: false
ML_MIN_PROBABILITY: 0.57
USE_NEWS_ANALYSIS: false
NEWS_ANALYSIS_HOUR: 9
NEWS_MAX_COUNT: 5
USE_QUICK_PROFIT_PROTECTION: true
KIS_APP_SECRET_REAL:
[cell repeats an earlier one in this file: 180 characters]

KIS_APP_SECRET_MOCK:
[cell repeats an earlier one in this file: 180 characters]

ANTHROPIC_API_KEY:
  sk-ant-api03-trRQQVLgAH4tilXXZiUEdvwWmpsK_EARuQRZ-wMWTmmizbETpjtLw-b8FmH352rQehASwEJJLPnBqNk-U_EipA-4NCUZQAA


# kv_store

k: last_ai_recommendations
v:
  TAKE_PROFIT_PCT=0.035
  QUICK_PROFIT_CURRENT_MIN=1.012
  MIN_RECOVERY_RATIO_SHORT=0.6
  MIN_RECOVERY_RATIO=0.6
  TAIL_RATIO_MIN=1.5
  TAIL_PCT_MIN=0.005


# ai_analysis_log

created_at: 2026-03-04 01:46:35
model: claude
context_summary:
  - 유니버스 후보: 0개
  - 최근 거래: 10건 | 승률: 50.0%
  - 평균 수익률: 0.43% | 총 손익: +848,070원

response:
  ❌ Claude 호출 실패: Error code: 401 - {'type': 'error', 'error': {'type': 'authentication_error', 'message': 'invalid x-api-key'}, 'request_id': 'req_011CYgV9yYBZLv6NNGHjeXM9'}


created_at: 2026-03-04 13:32:11
model: claude
context_summary:
  - 유니버스 후보: 0개
  - 최근 거래: 10건 | 승률: 30.0%
  - 평균 수익률: -0.89% | 총 손익: -1,755,877원

response:
  ❌ Claude 호출 실패: Error code: 401 - {'type': 'error', 'error': {'type': 'authentication_error', 'message': 'invalid x-api-key'}, 'request_id': 'req_011CYhQxmRQEcbocWJ8tU9gz'}


created_at: 2026-03-04 13:36:05
model: gemini
context_summary:
  - 유니버스 후보: 0개
  - 최근 거래: 10건 | 승률: 30.0%
  - 평균 수익률: -0.89% | 총 손익: -1,755,877원

response:
  ## 🔍 문제점 (승률 하락 원인)

  퀀트 트레이딩 전문가로서 제공된 단타봇 소스코드, 거래 내역, 설정 수치, 그리고 로그를 종합적으로 분석한 결과, 현재 봇의 낮은 승률과 누적 손실의 주요 원인은 다음과 같습니다.

  1.  **불균형한 손익비 설정 (Quick Profit Protection의 조기 발동):**
      *   **문제점:** 소스코드 `check_sell_signals` 함수에서 `QUICK_PROFIT_CURRENT_MIN` 설정(현재 `1.0008` = 0.08% 수익)이 `TAKE_PROFIT_PCT` (3.5% 목표)보다 훨씬 먼저 발동하여 작은 수익마저 조기에 끊어버리고 있습니다. 반면 `STOP_LOSS_PCT` (`-0.015` = -1.5% 손실)는 비교적 일관되게 손실을 확정하고 있습니다.
      *   **거래 내역 대조:** 거래 내역에서 3승으로 기록된 거래는 모두 "+0.02% ~ +0.16%" 범위의 아주 작은 수익을 기록하며 `작은수익보호` 사유로 매도되었습니다. 반면 7패는 모두 "-1.33% ~ -1.75%" 범위의 손실을 기록하며 `금액손실컷` 사유로 매도되었습니다.
      *   **결과:** 이로 인해 봇은 작은 수익을 자주 얻지만, 한 번의 손실이 여러 번의 작은 수익을 상쇄하는 불균형한 손익 구조를 가지게 되어 전반적인 승률 및 누적 수익률이 악화되고 있습니다.

  2.  **지나치게 보수적인 매수 조건 (특히 3분봉 회복률 및 꼬리 비율):**
      *   **문제점:** `check_buy_signal_tail_catch` 함수 내의 `MAX_RECOVERY_RATIO_3M` (0.8 = 80%) 설정이 너무 낮아 3분봉 내에서 강한 회복세를 보이는 종목들을 걸러내고 있습니다. 로그를 보면 "탈락-회복3분] 인트론바이오 048530: 3분봉 회복률 87.5% (기준 50~80%)"와 같이 강한 회복이 나타나도 기준을 초과하여 탈락됩니다. 또한 `TAIL_RATIO_MIN` (0.5) 및 `TAIL_PCT_MIN` (0.0015) 조건도 매우 엄격하여 "탈락-꼬리] 흥구석유 024060: 꼬리비율 0.00 (기준 0.5)"와 같이 많은 종목이 밑꼬리 망치봉 패턴을 통과하지 못합니다.
      *   **거래 내역 대조:** 유니버스 후보가 0개로 표시되고, 로그에서도 "매수체크] 이번 순회 시그널 0건 (조건 통과한 후보 없음)"이 자주 나타나는 것은 봇이 매수할 만한 "개미털기(눌림목)" 후보를 찾기 매우 어려워하고 있음을 시사합니다. 이는 곧 진입 기회 상실과 낮은 매매 빈도로 이어져 손실 복구 및 수익 창출 기회를 줄입니다.
      *   **결과:** "무릎 타점"이라는 전략 목표와는 상반되게, 강한 매수세가 붙어 회복하는 봉을 놓치거나, 밑꼬리 형태가 조금만 달라도 탈락시켜 양질의 진입 시그널을 확보하지 못하고 있습니다.

  3.  **불충분한 당일 낙폭 기준 및 과도한 일일 변동폭 제한:**
      *   **문제점:** `check_buy_signal_tail_catch` 함수에서 `MIN_DROP_RATE` (0.015 = 1.5%) 설정은 "개미털기(눌림목)" 전략치고는 매우 낮은 낙폭 기준입니다. 1.5%의 하락은 시장의 자연스러운 변동 범위일 수 있어 명확한 "눌림목" 신호로 보기 어렵고, 불확실한 진입으로 이어질 수 있습니다. 동시에 `MAX_DAILY_CHANGE_PCT` (18%)는 급등주 필터로, 로그("탈락-피뢰침 급등주] S-Oil 010950: 일일 변동폭 46.8% > 18%")에서 볼 수 있듯이 과도한 변동성을 가진 종목을 배제하여 오히려 활발한 개미털기 패턴이 나타날 수 있는 유니버스를 제한하고 있습니다.
      *   **거래 내역 대조:** 거래된 종목들이 TIGER, KODEX, SOL 등 ETF 위주로 나타나는 것은 개별 종목보다 변동성이 낮아 `MAX_DAILY_CHANGE_PCT` 필터를 통과하기 쉽지만, 동시에 강한 "개미털기" 패턴이나 그에 따른 빠른 반등을 기대하기 어려울 수 있음을 의미합니다.
      *   **결과:** 매매 빈도를 높이고 승률을 개선하기 위해 필요한 "진정한 눌림목"을 포착하지 못하고, 잠재적으로 수익성 높은 변동성 있는 종목들을 매수 유니버스에서 배제하고 있습니다.

  ## 💡 수치 추천 (KEY=값, 한 줄에 하나)
  QUICK_PROFIT_CURRENT_MIN=1.002
  TAKE_PROFIT_PCT=0.025
  MAX_RECOVERY_RATIO_3M=0.95
  TAIL_RATIO_MIN=0.4
  MIN_DROP_RATE=0.03
  MAX_DAILY_CHANGE_PCT=25

  ## 📈 예상 효과
  - **QUICK_PROFIT_CURRENT_MIN, TAKE_PROFIT_PCT 조정:** 작은 수익을 너무 빨리 끊지 않아 평균 수익률이 개선되고, 목표 수익률에 도달하는 빈도가 증가할 것입니다.
  - **MAX_RECOVERY_RATIO_3M 조정:** 3분봉 내에서 강하게 회복하는 종목을 매수할 수 있게 되어, "무릎 타점" 진입 시그널의 품질이 향상되고 승률에 긍정적인 영향을 미칠 것입니다.
  - **TAIL_RATIO_MIN, MIN_DROP_RATE, MAX_DAILY_CHANGE_PCT 조정:** "개미털기" 패턴에 적합한 더 명확하고 충분한 낙폭을 가진 종목들을 선별하고, 변동성이 큰 유망 종목의 매수 기회를 확대하여 매매 빈도와 수익성을 동시에 개선할 수 있습니다.


created_at: 2026-03-06 01:03:09
model: claude
context_summary:
  - 유니버스 후보: 0개
  - 최근 거래: 10건 | 승률: 20.0%
  - 평균 수익률: -1.10% | 총 손익: -1,961,747원

response:
  ❌ Claude 호출 실패: Error code: 401 - {'type': 'error', 'error': {'type': 'authentication_error', 'message': 'invalid x-api-key'}, 'request_id': 'req_011CYkDTkmt22EYxyCkV55fT'}


created_at: 2026-03-06 01:04:12
model: gemini
context_summary:
  - 유니버스 후보: 0개
  - 최근 거래: 10건 | 승률: 20.0%
  - 평균 수익률: -1.10% | 총 손익: -1,961,747원

response:
  ## 🔍 문제점 (승률 하락 원인)
  1.  **과도하게 공격적인 소액 익절 조건:** `check_sell_signals` 함수의 `QUICK_PROFIT_PROTECTION` 조건이 `QUICK_PROFIT_CURRENT_MIN=1.002` (0.2% 수익)로 설정되어 있어, 아주 작은 수익에도 매도가 발생하고 있습니다. 거래 내역에서 "작은수익보호"로 매도된 3건 중 1건은 손실(-0.11%)을 기록했으며, 나머지 2건도 0.02%와 0.16%라는 미미한 수익에 그쳐 수수료/세금을 고려하면 실질 수익이 거의 없거나 손실일 가능성이 높습니다. 이는 잠재적인 큰 수익 기회를 차단하고 승률 대비 수익률을 낮추는 주된 원인입니다.
  2.  **너무 타이트한 손절매 기준:** `STOP_LOSS_PCT=-0.015` (1.5% 손실)로 설정된 칼손절매 기준이 지나치게 엄격합니다. 개미털기(눌림목) 전략은 일시적인 추가 하락 변동성을 감수하고 반등을 노리는 경우가 많으므로, 1.5% 손실은 시장의 자연스러운 노이즈나 일시적인 하락에도 쉽게 도달하여 매수 직후 손절로 이어지는 원인이 됩니다. 이는 8건의 손실 거래가 모두 -1.27% ~ -1.89% 범위에서 발생한 것과 일치하며, 잦은 손절로 누적 손실을 키우고 있습니다.
  3.  **눌림목 포착을 위한 모호한 매수 진입 조건:** `check_buy_signal_tail_catch` 함수의 RSI 조건(`RSI_OVERHEAT_THRESHOLD=80.0`)이 과열을 회피하는 수준(RSI 80 미만)에 불과하여, '과매도' 또는 '진정한 눌림' 구간을 찾는 데 적합하지 않습니다. 또한, N자 망치봉 패턴 포착 기준인 `TAIL_RATIO_MIN=0.4`와 `TAIL_PCT_MIN=0.0015`도 밑꼬리가 강한 반전 신호라기보다는 약한 변동성에도 쉽게 충족될 수 있는 수준이어서, 강한 반등 가능성이 낮은 지점에서 진입하게 만들어 손절 비중을 높이고 있습니다.

  ## 💡 수치 추천 (KEY=값, 한 줄에 하나)
  STOP_LOSS_PCT=-0.025
  QUICK_PROFIT_CURRENT_MIN=1.007
  QUICK_PROFIT_PROTECT_HOURS=1.0
  RSI_OVERHEAT_THRESHOLD=60.0
  TAIL_RATIO_MIN=1.0
  TAIL_PCT_MIN=0.003

  ## 📈 예상 효과
  - 손절 기준을 완화하여 시장 노이즈에 의한 불필요한 손절을 줄이고, 충분한 수익이 확보된 후에만 익절하도록 하여 승률과 평균 수익률을 개선할 수 있습니다.
  - 매수 진입 조건을 강화하여 더 확실한 눌림목 반전 신호에만 진입함으로써 매수 종목의 성공률을 높일 수 있습니다.


created_at: 2026-03-06 13:27:49
model: gemini
context_summary:
  - 유니버스 후보: 0개
  - 최근 거래: 10건 | 승률: 20.0%
  - 평균 수익률: -1.10% | 총 손익: -1,961,747원

response:
  ## 🔍 문제점 (승률 하락 원인)
  1.  **지나치게 낮은 보상 대비 큰 손실:** `QUICK_PROFIT_PROTECTION=true` (작은수익보호) 설정과 `QUICK_PROFIT_CURRENT_MIN=1.007` (0.7% 수익)로 인해 획득하는 수익(0.02%~0.16%)이 매우 작습니다. 반면 `MAX_LOSS_PER_TRADE_KRW=250000` (최대 25만원 손실) 또는 `STOP_LOSS_PCT=-0.025` (-2.5% 손절)로 인해 발생하는 손실은 평균 -1.27% ~ -1.89%로 훨씬 커서, 20%의 낮은 승률을 만회할 수 없습니다. 이는 `check_sell_signals` 함수 내 매도 조건의 문제로, 손익비가 극도로 불리합니다.
  2.  **눌림목 매수 신호의 약한 유효성:** `check_buy_signal_tail_catch` 함수 내 다양한 매수 필터 (`MIN_DROP_RATE=0.03`, `MIN_RECOVERY_RATIO_SHORT=0.5`, `TAIL_RATIO_MIN=1.0`, `TAIL_PCT_MIN=0.003` 등)에도 불구하고 80%의 높은 손실률은 현재 설정된 조건들이 강력한 반등이 일어날 "진짜 눌림목"을 충분히 식별하지 못하고 있음을 시사합니다. 특히 꼬리 비율(`TAIL_RATIO_MIN`)과 회복률(`MIN_RECOVERY_RATIO_SHORT`, `MIN_RECOVERY_RATIO`) 조건이 약해서, 매수 후 하락 추세로 전환되는 경우가 잦습니다.
  3.  **API 호출 제한 및 실시간 데이터 지연:** `journalctl` 로그에서 `API 과부하 (EGW00201)` 및 `WebSocket 구독 한도 초과(41/41)` 오류가 빈번히 관찰됩니다. 단타봇에게 실시간 데이터의 정확성과 빠른 체결은 필수적입니다. API 호출 지연이나 WebSocket 데이터 누락은 `check_buy_signal_tail_catch`에서 정확한 진입 타이밍을 놓치거나, `check_sell_signals`에서 손절/익절이 지연되어 손실을 키우는 주요 원인이 됩니다. 이는 `_sync_subscriptions` 함수 및 `_fetch_scan_universe_from_api` 함수 동작에 영향을 미칩니다.

  ## 💡 수치 추천 (KEY=값, 한 줄에 하나)
  TAKE_PROFIT_PCT=0.035
  QUICK_PROFIT_CURRENT_MIN=1.012
  MIN_RECOVERY_RATIO_SHORT=0.6
  MIN_RECOVERY_RATIO=0.6
  TAIL_RATIO_MIN=1.5
  TAIL_PCT_MIN=0.005
  SCAN_UNIVERSE_MAX_CODES=70

  ## 📈 예상 효과
  - 승률이 낮더라도 매수 성공 시 평균 수익을 높여 손익비를 개선하고, 더 강한 반등 신호에서만 진입하여 매수 성공률을 소폭 상승시킬 수 있습니다. 또한, 유니버스 스캔 종목 수를 줄여 API 부하를 낮춰 안정적인 운영에 기여합니다.


