Compare commits
7 Commits
9f439db191
...
901243348e
| Author | SHA1 | Date | |
|---|---|---|---|
| 901243348e | |||
| eac4ece01e | |||
| f16576bfb7 | |||
| 60109370f4 | |||
| 5ff6d32ea1 | |||
| 16b31b3154 | |||
| 24c526b9e5 |
@@ -150,14 +150,17 @@ Highest-leverage fixes:
|
|||||||
After /morning exits, run_morning.ps1 calls python scripts/start_bot.py.
|
After /morning exits, run_morning.ps1 calls python scripts/start_bot.py.
|
||||||
|
|
||||||
08:30 Bot loads daily_context.json and builds the watch universe.
|
08:30 Bot loads daily_context.json and builds the watch universe.
|
||||||
08:50 Bot calculates volatility breakout targets.
|
08:50 Bot calculates volatility breakout targets. If restarted after 08:50,
|
||||||
|
the bot recalculates targets immediately; open=0 is ignored.
|
||||||
09:00 Morning trading session starts.
|
09:00 Morning trading session starts.
|
||||||
|
09:00-15:05 StockBot_Watchdog checks bot liveness every 5 minutes.
|
||||||
11:00 New entries pause if midday_context.json has not loaded.
|
11:00 New entries pause if midday_context.json has not loaded.
|
||||||
11:20 StockBot_Midday -> scripts/run_midday.ps1 -> /midday
|
11:20 StockBot_Midday -> scripts/run_midday.ps1 -> /midday
|
||||||
Build data/midday_context.json; bot detects it and starts lunch controls.
|
Build data/midday_context.json; bot detects it and starts lunch controls.
|
||||||
14:00 New entries stop; exits continue.
|
14:00 New entries stop; exits continue.
|
||||||
14:50 Force exit all positions. This time is immutable.
|
14:50 Force exit all positions. This time is immutable.
|
||||||
15:10 Daily settlement and Discord summary.
|
15:10 Daily settlement and Discord summary.
|
||||||
|
Watchdog must not restart the bot at or after 15:10.
|
||||||
15:30 StockBot_Evening -> scripts/run_evening.ps1 -> /evening
|
15:30 StockBot_Evening -> scripts/run_evening.ps1 -> /evening
|
||||||
Write daily report and proposal report when needed.
|
Write daily report and proposal report when needed.
|
||||||
16:00 StockBot_Training -> scripts/run_training_pipeline.ps1
|
16:00 StockBot_Training -> scripts/run_training_pipeline.ps1
|
||||||
|
|||||||
@@ -150,14 +150,17 @@ Highest-leverage fixes:
|
|||||||
After /morning exits, run_morning.ps1 calls python scripts/start_bot.py.
|
After /morning exits, run_morning.ps1 calls python scripts/start_bot.py.
|
||||||
|
|
||||||
08:30 Bot loads daily_context.json and builds the watch universe.
|
08:30 Bot loads daily_context.json and builds the watch universe.
|
||||||
08:50 Bot calculates volatility breakout targets.
|
08:50 Bot calculates volatility breakout targets. If restarted after 08:50,
|
||||||
|
the bot recalculates targets immediately; open=0 is ignored.
|
||||||
09:00 Morning trading session starts.
|
09:00 Morning trading session starts.
|
||||||
|
09:00-15:05 StockBot_Watchdog checks bot liveness every 5 minutes.
|
||||||
11:00 New entries pause if midday_context.json has not loaded.
|
11:00 New entries pause if midday_context.json has not loaded.
|
||||||
11:20 StockBot_Midday -> scripts/run_midday.ps1 -> /midday
|
11:20 StockBot_Midday -> scripts/run_midday.ps1 -> /midday
|
||||||
Build data/midday_context.json; bot detects it and starts lunch controls.
|
Build data/midday_context.json; bot detects it and starts lunch controls.
|
||||||
14:00 New entries stop; exits continue.
|
14:00 New entries stop; exits continue.
|
||||||
14:50 Force exit all positions. This time is immutable.
|
14:50 Force exit all positions. This time is immutable.
|
||||||
15:10 Daily settlement and Discord summary.
|
15:10 Daily settlement and Discord summary.
|
||||||
|
Watchdog must not restart the bot at or after 15:10.
|
||||||
15:30 StockBot_Evening -> scripts/run_evening.ps1 -> /evening
|
15:30 StockBot_Evening -> scripts/run_evening.ps1 -> /evening
|
||||||
Write daily report and proposal report when needed.
|
Write daily report and proposal report when needed.
|
||||||
16:00 StockBot_Training -> scripts/run_training_pipeline.ps1
|
16:00 StockBot_Training -> scripts/run_training_pipeline.ps1
|
||||||
|
|||||||
@@ -24,8 +24,10 @@ AI에게 맡기지는 않습니다. AI는 장 전/장중/장후 시장을 분석
|
|||||||
| 시간 | 흐름 | 내용 |
|
| 시간 | 흐름 | 내용 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| 08:15 | 장 전 분석 | 뉴스, 수급, 업종 분위기를 분석해 `daily_context.json` 생성 |
|
| 08:15 | 장 전 분석 | 뉴스, 수급, 업종 분위기를 분석해 `daily_context.json` 생성 |
|
||||||
| 08:30 | 봇 시작/준비 | 유니버스 선정, 목표가 계산, Discord 알림 |
|
| 08:30 | 봇 시작/준비 | AI 컨텍스트 로드, 유니버스 선정 |
|
||||||
|
| 08:50 | 목표가 계산 | 전일 고저와 당일 시가 기반, `open=0`이면 계산 제외 |
|
||||||
| 09:00 | 오전 매매 | 변동성 돌파 조건과 AI 컨텍스트 필터를 함께 확인 |
|
| 09:00 | 오전 매매 | 변동성 돌파 조건과 AI 컨텍스트 필터를 함께 확인 |
|
||||||
|
| 09:00-15:05 | Watchdog | 5분마다 봇 생존 감시, 15:10 결산 직후 재시작 금지 |
|
||||||
| 11:20 | 장중 분석 | 오전 결과와 현재 시장을 비교해 `midday_context.json` 생성 |
|
| 11:20 | 장중 분석 | 오전 결과와 현재 시장을 비교해 `midday_context.json` 생성 |
|
||||||
| 14:00 | 신규 진입 종료 | 새 진입은 막고 보유 포지션 청산 감시만 계속 |
|
| 14:00 | 신규 진입 종료 | 새 진입은 막고 보유 포지션 청산 감시만 계속 |
|
||||||
| 14:50 | 강제 청산 | 모든 포지션 정리 |
|
| 14:50 | 강제 청산 | 모든 포지션 정리 |
|
||||||
@@ -38,6 +40,8 @@ AI에게 맡기지는 않습니다. AI는 장 전/장중/장후 시장을 분석
|
|||||||
- 전략: 변동성 돌파(`K=0.5`)
|
- 전략: 변동성 돌파(`K=0.5`)
|
||||||
- 진입 시작: `09:20`
|
- 진입 시작: `09:20`
|
||||||
- 강제 청산: `14:50`
|
- 강제 청산: `14:50`
|
||||||
|
- 일일 결산: `15:10`
|
||||||
|
- Watchdog: `09:00-15:05`, 5분 간격
|
||||||
- DB: SQLite (`data/stockbot.db`)
|
- DB: SQLite (`data/stockbot.db`)
|
||||||
- 알림: Discord Webhook
|
- 알림: Discord Webhook
|
||||||
- AI/ML: 시장 분석과 관찰용 점수 기록까지만 사용
|
- AI/ML: 시장 분석과 관찰용 점수 기록까지만 사용
|
||||||
|
|||||||
@@ -55,9 +55,17 @@ class KISClient:
|
|||||||
)
|
)
|
||||||
self._load_token_from_file()
|
self._load_token_from_file()
|
||||||
|
|
||||||
# rate limit: 모의투자 1건/초보다 보수적, 실거래 5건/초 이하
|
# rate limit: KIS occasionally rejects even nominally safe bursts.
|
||||||
self._rate_limit = 1 if self.is_mock else 5
|
# Keep defaults conservative and allow local override from .env.
|
||||||
self._request_spacing = 1.2 if self.is_mock else 0.22
|
self._rate_limit = int(os.getenv(
|
||||||
|
"KIS_MOCK_RATE_LIMIT" if self.is_mock else "KIS_REAL_RATE_LIMIT",
|
||||||
|
"1" if self.is_mock else "3",
|
||||||
|
))
|
||||||
|
self._request_spacing = float(os.getenv(
|
||||||
|
"KIS_MOCK_REQUEST_SPACING" if self.is_mock else "KIS_REAL_REQUEST_SPACING",
|
||||||
|
"1.7" if self.is_mock else "0.35",
|
||||||
|
))
|
||||||
|
self._cooldown_until = 0.0
|
||||||
self._semaphore = asyncio.Semaphore(1)
|
self._semaphore = asyncio.Semaphore(1)
|
||||||
self._req_times : list = []
|
self._req_times : list = []
|
||||||
|
|
||||||
@@ -175,6 +183,9 @@ class KISClient:
|
|||||||
|
|
||||||
async with self._semaphore:
|
async with self._semaphore:
|
||||||
now = time.monotonic()
|
now = time.monotonic()
|
||||||
|
if now < self._cooldown_until:
|
||||||
|
await asyncio.sleep(self._cooldown_until - now)
|
||||||
|
now = time.monotonic()
|
||||||
if self._req_times:
|
if self._req_times:
|
||||||
wait = self._request_spacing - (now - self._req_times[-1])
|
wait = self._request_spacing - (now - self._req_times[-1])
|
||||||
if wait > 0:
|
if wait > 0:
|
||||||
@@ -204,6 +215,8 @@ class KISClient:
|
|||||||
rt_cd = data.get("rt_cd", "")
|
rt_cd = data.get("rt_cd", "")
|
||||||
if rt_cd != "0":
|
if rt_cd != "0":
|
||||||
msg = data.get("msg1", "알 수 없는 오류")
|
msg = data.get("msg1", "알 수 없는 오류")
|
||||||
|
if "초당" in msg or "거래건수" in msg or "rate" in msg.lower():
|
||||||
|
self._cooldown_until = time.monotonic() + max(2.5, self._request_spacing * 2)
|
||||||
logger.error(f"KIS API 오류 [{tr_id}]: {rt_cd} - {msg}")
|
logger.error(f"KIS API 오류 [{tr_id}]: {rt_cd} - {msg}")
|
||||||
raise RuntimeError(f"KIS API 오류: {msg}")
|
raise RuntimeError(f"KIS API 오류: {msg}")
|
||||||
|
|
||||||
|
|||||||
+20
-3
@@ -844,15 +844,28 @@ class StockBot:
|
|||||||
async def calc_targets(self):
|
async def calc_targets(self):
|
||||||
"""당일 시가 기반 목표가 계산"""
|
"""당일 시가 기반 목표가 계산"""
|
||||||
logger.info("목표가 계산 시작")
|
logger.info("목표가 계산 시작")
|
||||||
|
self.strategy.targets.clear()
|
||||||
|
self.strategy.today_open.clear()
|
||||||
|
now_str = datetime.now().strftime("%H:%M")
|
||||||
valid_count = 0
|
valid_count = 0
|
||||||
for ticker in self.universe:
|
for ticker in self.universe:
|
||||||
try:
|
try:
|
||||||
price_info = await self._get_price_with_retry(ticker, "TARGET")
|
price_info = await self._get_price_with_retry(ticker, "TARGET")
|
||||||
self.strategy.set_today_open(ticker, price_info["open"])
|
open_price = price_info.get("open") or 0
|
||||||
target = self.strategy.get_target(ticker)
|
|
||||||
name = self.ticker_names.get(ticker, ticker)
|
name = self.ticker_names.get(ticker, ticker)
|
||||||
|
if open_price <= 0:
|
||||||
|
current = price_info.get("current") or 0
|
||||||
|
if now_str >= "09:00" and current > 0:
|
||||||
|
open_price = current
|
||||||
|
logger.warning(f"시가 0 감지({name}/{ticker}) → 현재가 {current:,}를 임시 시가로 사용")
|
||||||
|
else:
|
||||||
|
logger.info(f"목표가 제외({name}/{ticker}): 시가 미확정(open=0)")
|
||||||
|
await asyncio.sleep(1.1)
|
||||||
|
continue
|
||||||
|
self.strategy.set_today_open(ticker, open_price)
|
||||||
|
target = self.strategy.get_target(ticker)
|
||||||
if target > 0:
|
if target > 0:
|
||||||
logger.info(f"목표가: {name}({ticker}) {target:,.0f}원 [시가 {price_info['open']:,}]")
|
logger.info(f"목표가: {name}({ticker}) {target:,.0f}원 [시가 {open_price:,}]")
|
||||||
valid_count += 1
|
valid_count += 1
|
||||||
await asyncio.sleep(1.1)
|
await asyncio.sleep(1.1)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -1329,6 +1342,9 @@ async def run():
|
|||||||
ctx = bot.strategy.load_ai_context()
|
ctx = bot.strategy.load_ai_context()
|
||||||
bot.risk.set_risk_level(ctx.get("risk_level", "보통"))
|
bot.risk.set_risk_level(ctx.get("risk_level", "보통"))
|
||||||
await bot.update_universe()
|
await bot.update_universe()
|
||||||
|
if now >= "08:50":
|
||||||
|
logger.info("08:50 이후 장 전 재시작 감지 → 목표가 즉시 계산")
|
||||||
|
await bot.calc_targets()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
now = datetime.now().strftime("%H:%M")
|
now = datetime.now().strftime("%H:%M")
|
||||||
@@ -1354,6 +1370,7 @@ async def run():
|
|||||||
|
|
||||||
# 09:00 매매 루프 시작
|
# 09:00 매매 루프 시작
|
||||||
elif now == "09:00":
|
elif now == "09:00":
|
||||||
|
await bot.calc_targets()
|
||||||
await bot.trading_loop()
|
await bot.trading_loop()
|
||||||
|
|
||||||
# 15:10 결산
|
# 15:10 결산
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ class VolatilityBreakout:
|
|||||||
self._entry_times: dict = {} # ticker → 마지막 진입 datetime (쿨다운 추적)
|
self._entry_times: dict = {} # ticker → 마지막 진입 datetime (쿨다운 추적)
|
||||||
self._exit_times: dict = {} # ticker -> 마지막 최종 청산 datetime (쿨다운 추적)
|
self._exit_times: dict = {} # ticker -> 마지막 최종 청산 datetime (쿨다운 추적)
|
||||||
self._tp_closed_tickers: set[str] = set() # TP로 전량 청산된 당일 재진입 차단
|
self._tp_closed_tickers: set[str] = set() # TP로 전량 청산된 당일 재진입 차단
|
||||||
|
self._rebreak_required_tickers: set[str] = set() # TIME/FORCE 후 목표가 재돌파 대기
|
||||||
|
|
||||||
# ── AI 컨텍스트 로드 ──
|
# ── AI 컨텍스트 로드 ──
|
||||||
|
|
||||||
@@ -103,6 +104,9 @@ class VolatilityBreakout:
|
|||||||
if not prev:
|
if not prev:
|
||||||
logger.info(f"목표가 제외({ticker}): 전일 데이터 없음")
|
logger.info(f"목표가 제외({ticker}): 전일 데이터 없음")
|
||||||
return
|
return
|
||||||
|
if open_price <= 0:
|
||||||
|
logger.info(f"목표가 제외({ticker}): 당일 시가 미확정({open_price})")
|
||||||
|
return
|
||||||
if prev["amount"] < MIN_TRADE_AMOUNT:
|
if prev["amount"] < MIN_TRADE_AMOUNT:
|
||||||
logger.info(
|
logger.info(
|
||||||
f"목표가 제외({ticker}): 전일 거래대금 {prev['amount']/1e8:.0f}억"
|
f"목표가 제외({ticker}): 전일 거래대금 {prev['amount']/1e8:.0f}억"
|
||||||
@@ -126,8 +130,10 @@ class VolatilityBreakout:
|
|||||||
exit_time = exit_time or datetime.now()
|
exit_time = exit_time or datetime.now()
|
||||||
if reason in ("TIME", "FORCE"):
|
if reason in ("TIME", "FORCE"):
|
||||||
self._exit_times[ticker] = exit_time
|
self._exit_times[ticker] = exit_time
|
||||||
|
self._rebreak_required_tickers.add(ticker)
|
||||||
elif reason in ("TP1", "TP2"):
|
elif reason in ("TP1", "TP2"):
|
||||||
self._tp_closed_tickers.add(ticker)
|
self._tp_closed_tickers.add(ticker)
|
||||||
|
self._rebreak_required_tickers.discard(ticker)
|
||||||
|
|
||||||
# ── 진입 신호 판단 ──
|
# ── 진입 신호 판단 ──
|
||||||
|
|
||||||
@@ -151,6 +157,16 @@ class VolatilityBreakout:
|
|||||||
result["reason"] = "TP 당일 재진입 차단"
|
result["reason"] = "TP 당일 재진입 차단"
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
# 목표가 확인
|
||||||
|
target = self.targets.get(ticker, 0)
|
||||||
|
if target <= 0:
|
||||||
|
result["reason"] = "목표가 없음"
|
||||||
|
return result
|
||||||
|
|
||||||
|
# TIME/FORCE 이후 쿨다운 중이라도 목표가 아래로 내려온 사실은 기록한다.
|
||||||
|
if ticker in self._rebreak_required_tickers and current_price < target:
|
||||||
|
self._rebreak_required_tickers.discard(ticker)
|
||||||
|
|
||||||
# TIME/FORCE 청산 후 쿨다운은 진입 시각이 아니라 청산 시각 기준이다.
|
# TIME/FORCE 청산 후 쿨다운은 진입 시각이 아니라 청산 시각 기준이다.
|
||||||
last_exit = self._exit_times.get(ticker)
|
last_exit = self._exit_times.get(ticker)
|
||||||
if last_exit is not None:
|
if last_exit is not None:
|
||||||
@@ -159,10 +175,10 @@ class VolatilityBreakout:
|
|||||||
result["reason"] = f"재진입 쿨다운 ({elapsed:.0f}분 / {TICKER_REENTRY_COOLDOWN_MIN}분)"
|
result["reason"] = f"재진입 쿨다운 ({elapsed:.0f}분 / {TICKER_REENTRY_COOLDOWN_MIN}분)"
|
||||||
return result
|
return result
|
||||||
|
|
||||||
# 목표가 확인
|
# TIME/FORCE 청산 뒤에는 남아 있는 당일 돌파 신호를 그대로 재사용하지 않는다.
|
||||||
target = self.targets.get(ticker, 0)
|
# 목표가 아래로 식은 뒤 다시 돌파해야 새로운 진입 신호로 인정한다.
|
||||||
if target <= 0:
|
if ticker in self._rebreak_required_tickers:
|
||||||
result["reason"] = "목표가 없음"
|
result["reason"] = f"재돌파 대기 ({current_price:,} >= {target:,.0f})"
|
||||||
return result
|
return result
|
||||||
|
|
||||||
# 기술적 조건: 현재가 >= 목표가
|
# 기술적 조건: 현재가 >= 목표가
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,10 +1,19 @@
|
|||||||
{
|
{
|
||||||
"date": "2026-05-28",
|
"date": "2026-06-15",
|
||||||
"generated_at": "11:20:18",
|
"generated_at": "11:20:18",
|
||||||
"lunch_trade_allowed": false,
|
"lunch_trade_allowed": true,
|
||||||
"position_size_multiplier": 0.3,
|
"position_size_multiplier": 0.5,
|
||||||
"hot_sectors": [],
|
"hot_sectors": [
|
||||||
"avoid_sectors": ["전기전자", "반도체", "전기가스업", "기계", "의약품"],
|
"반도체",
|
||||||
"strategy_note": "인버스ETF 거래량 1~3위, 전업종 하락. 오전 강세 예측 완전 빗나감. 현재 보유 2종목(흥아해운·SFA반도체)만 관리, 신규 진입 없음.",
|
"기계",
|
||||||
"reason": "연속손절6회·전업종약세·인버스거래량1위→점심진입중단"
|
"철강금속",
|
||||||
|
"의약품"
|
||||||
|
],
|
||||||
|
"avoid_sectors": [
|
||||||
|
"전기전자",
|
||||||
|
"건설업",
|
||||||
|
"방산"
|
||||||
|
],
|
||||||
|
"strategy_note": "연속손절 2회(에이팩트SL+삼성전자TIME) → L3-B 0.5x 적용. 기계·철강 오전 최강세 섹터로 hot 업데이트. 전기전자 예측 빗나감(-1.5%), 금융은 avoid 해제. 점심 진입 허용, 배율만 축소.",
|
||||||
|
"reason": "KOSPI +4.7% 강세 / 오전 75% 승률+9만원 / 연속손절2회 L3-B 배율0.5 유지"
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-66
@@ -1,67 +1,12 @@
|
|||||||
trade_id,date,ticker,name,entry_time,current_price,entry_price,target_price,stop_price,today_open,prev_high,prev_low,prev_amount,volume,change_pct,market_sentiment,sentiment_score,risk_level,trade_allowed,hot_sectors,avoid_sectors,boosted_tickers,blacklist_tickers,ai_boosted,ai_win_score,ai_stop_loss_score,ai_model_version,position_size_multiplier,combined_multiplier,entry_reason,price_1m,ret_1m,mfe_1m,mae_1m,price_3m,ret_3m,mfe_3m,mae_3m,price_5m,ret_5m,mfe_5m,mae_5m,price_10m,ret_10m,mfe_10m,mae_10m,exit_time,exit_price,quantity,exit_reason,pnl,label_win,label_stop_loss
|
trade_id,date,ticker,name,entry_time,current_price,entry_price,target_price,stop_price,today_open,prev_high,prev_low,prev_amount,volume,change_pct,market_sentiment,sentiment_score,risk_level,trade_allowed,hot_sectors,avoid_sectors,boosted_tickers,blacklist_tickers,ai_boosted,ai_win_score,ai_stop_loss_score,ai_model_version,position_size_multiplier,combined_multiplier,entry_reason,price_1m,ret_1m,mfe_1m,mae_1m,price_3m,ret_3m,mfe_3m,mae_3m,price_5m,ret_5m,mfe_5m,mae_5m,price_10m,ret_10m,mfe_10m,mae_10m,exit_time,exit_price,quantity,exit_reason,pnl,label_win,label_stop_loss
|
||||||
128,2026-05-28,490470,세미파이브,09:15:21,41350.0,41300.0,1925.0,40680.5,0.0,37600.0,33750.0,41601686200.0,380384.0,0.36,강세,72,보통,1,"[""반도체"", ""AI/로봇"", ""방산""]","[""건설업"", ""전기가스업"", ""주류""]","[""000100"", ""000150""]",[],0,,,,1.3,1.3,"목표가 돌파 (41,350 >= 1,925)",41550.0,0.6053268765133172,0.6053268765133172,0.0,41900.0,1.4527845036319613,1.4527845036319613,0.0,41400.0,0.24213075060532688,1.4527845036319613,0.0,41650.0,0.847457627118644,1.4527845036319613,0.0,09:39:16,40700.0,62,SL,-42504.72,0,1
|
1,2026-06-09,003280,흥아해운,09:20:27,1884.0,1884.0,1868.5,1865.16,1796.0,2110.0,1965.0,18532852710.0,1896824.0,-0.48,중립,58,높음,1,"[""반도체"", ""AI/빅테크"", ""로봇""]","[""건설"", ""금융""]","[""090460"", ""036170""]",[],0,0.5895623059382584,0.7897254275291135,2026-06-08T16:01:30,0.8,0.8,"목표가 돌파 (1,884 >= 1,868)",1903.0,1.0084925690021231,1.0084925690021231,0.0,1911.0,1.4331210191082804,1.4331210191082804,0.0,1889.0,0.2653927813163482,1.4331210191082804,0.0,1905.0,1.1146496815286624,1.4331210191082804,0.0,10:24:47,1864.0,255,SL,-6098.937,0,1
|
||||||
129,2026-05-28,034220,LG디스플레이,09:15:30,15970.0,15990.0,1160.0,15750.15,0.0,15170.0,12850.0,292284486340.0,6789154.0,13.02,강세,72,보통,1,"[""반도체"", ""AI/로봇"", ""방산""]","[""건설업"", ""전기가스업"", ""주류""]","[""000100"", ""000150""]",[],0,,,,1.3,1.3,"목표가 돌파 (15,970 >= 1,160)",15980.0,-0.06253908692933083,0.0,-0.06253908692933083,15810.0,-1.125703564727955,0.0,-1.125703564727955,15760.0,-1.4383989993746091,0.0,-1.4383989993746091,15690.0,-1.876172607879925,0.0,-1.876172607879925,09:18:16,15740.0,162,SL,-45860.823,0,1
|
2,2026-06-09,010170,대한광통신,09:21:05,19640.0,19640.0,19310.0,19443.6,18060.0,20800.0,18300.0,400882172100.0,6653900.0,18.46,중립,58,높음,1,"[""반도체"", ""AI/빅테크"", ""로봇""]","[""건설"", ""금융""]","[""090460"", ""036170""]",[],0,0.4842664499981124,0.7414840107790897,2026-06-08T16:01:30,0.8,0.8,"목표가 돌파 (19,640 >= 19,310)",19540.0,-0.5091649694501018,0.0,-0.5091649694501018,19860.0,1.120162932790224,1.120162932790224,-0.5091649694501018,19800.0,0.8146639511201629,1.120162932790224,-0.5091649694501018,19330.0,-1.5784114052953158,1.120162932790224,-1.5784114052953158,09:21:25,19430.0,81,SL,-20317.5945,0,1
|
||||||
130,2026-05-28,066980,한성크린텍,09:18:21,2170.0,2170.0,276.5,2137.45,0.0,2450.0,1897.0,38143145612.0,897862.0,7.69,강세,72,보통,1,"[""반도체"", ""AI/로봇"", ""방산""]","[""건설업"", ""전기가스업"", ""주류""]","[""000100"", ""000150""]",[],0,,,,1.3,0.9099999999999999,"목표가 돌파 (2,170 >= 276)",2190.0,0.9216589861751152,0.9216589861751152,0.0,2205.0,1.6129032258064515,1.6129032258064515,0.0,2185.0,0.6912442396313364,1.6129032258064515,0.0,2290.0,5.529953917050691,5.529953917050691,0.0,09:23:55,2235.0,252,TP2,15199.695,1,0
|
4,2026-06-10,388790,라이콤,09:20:39,8750.0,8750.0,8747.5,8662.5,8170.0,4910.0,3755.0,14816406180.0,2768948.0,15.13,중립,48,높음,1,"[""반도체"", ""광통신"", ""방산""]","[""조선"", ""건설""]","[""005930"", ""000660""]",[],0,0.448541274183742,0.7513088385450986,2026-06-09T16:01:34,0.8,0.8,"목표가 돌파 (8,750 >= 8,748)",8900.0,1.7142857142857144,1.7142857142857144,0.0,8740.0,-0.1142857142857143,1.7142857142857144,-0.1142857142857143,8640.0,-1.2571428571428571,1.7142857142857144,-1.2571428571428571,8710.0,-0.4571428571428572,1.7142857142857144,-1.2571428571428571,09:21:24,8980.0,55,TP2,11614.7075,1,0
|
||||||
132,2026-05-28,001740,SK네트웍스,09:24:06,11060.0,11040.0,385.0,10874.4,0.0,8580.0,7810.0,98137982810.0,6320902.0,-2.81,강세,72,보통,1,"[""반도체"", ""AI/로봇"", ""방산""]","[""건설업"", ""전기가스업"", ""주류""]","[""000100"", ""000150""]",[],0,,,,1.3,1.3,"목표가 돌파 (11,060 >= 385)",11000.0,-0.36231884057971014,0.0,-0.36231884057971014,10910.0,-1.177536231884058,0.0,-1.177536231884058,10890.0,-1.358695652173913,0.0,-1.358695652173913,10740.0,-2.717391304347826,0.0,-2.717391304347826,09:29:18,10870.0,235,SL,-45320.3375,0,1
|
6,2026-06-10,017900,광전자,09:46:00,9860.0,9860.0,9700.0,9761.4,9040.0,10450.0,9130.0,28967583920.0,2023995.0,7.29,중립,48,높음,1,"[""반도체"", ""광통신"", ""방산""]","[""조선"", ""건설""]","[""005930"", ""000660""]",[],0,0.5465898151140837,0.6943945504744956,2026-06-09T16:01:34,0.8,0.8,"목표가 돌파 (9,860 >= 9,700)",9940.0,0.8113590263691683,0.8113590263691683,0.0,10180.0,3.2454361054766734,3.2454361054766734,0.0,10610.0,7.606490872210954,7.606490872210954,0.0,10530.0,6.7951318458417855,7.606490872210954,0.0,09:48:46,10200.0,49,TP2,15612.919,1,0
|
||||||
133,2026-05-28,047040,대우건설,09:29:24,25975.0,25900.0,1575.0,25511.5,0.0,30150.0,27000.0,466483203900.0,2085879.0,-2.9,강세,72,보통,1,"[""반도체"", ""AI/로봇"", ""방산""]","[""건설업"", ""전기가스업"", ""주류""]","[""000100"", ""000150""]",[],0,,,,1.3,0.9099999999999999,"목표가 돌파 (25,975 >= 1,575)",25750.0,-0.5791505791505791,0.0,-0.5791505791505791,25750.0,-0.5791505791505791,0.0,-0.5791505791505791,25750.0,-0.5791505791505791,0.0,-0.5791505791505791,25850.0,-0.19305019305019305,0.0,-0.5791505791505791,09:50:12,25500.0,70,SL,-31752.7,0,1
|
8,2026-06-10,222080,씨아이에스,10:32:43,10380.0,10380.0,10380.0,10276.2,10030.0,11780.0,11080.0,13659411600.0,493681.0,0.97,중립,48,높음,1,"[""반도체"", ""광통신"", ""방산""]","[""조선"", ""건설""]","[""005930"", ""000660""]",[],0,0.5472823440678635,0.6684702303044338,2026-06-09T16:01:34,0.8,0.8,"목표가 돌파 (10,380 >= 10,380)",10400.0,0.1926782273603083,0.1926782273603083,0.0,10470.0,0.8670520231213872,0.8670520231213872,0.0,10490.0,1.0597302504816954,1.0597302504816954,0.0,10470.0,0.8670520231213872,1.0597302504816954,0.0,11:02:32,10270.0,154,SL,-20263.859,0,1
|
||||||
134,2026-05-28,261780,차백신연구소,09:39:31,3885.0,3850.0,217.5,3792.25,0.0,3570.0,3135.0,16732062900.0,3255260.0,-1.89,강세,72,보통,1,"[""반도체"", ""AI/로봇"", ""방산""]","[""건설업"", ""전기가스업"", ""주류""]","[""000100"", ""000150""]",[],0,,,,1.3,0.65,"목표가 돌파 (3,885 >= 218)",3840.0,-0.2597402597402597,0.0,-0.2597402597402597,3810.0,-1.0389610389610389,0.0,-1.0389610389610389,3850.0,0.0,0.0,-1.0389610389610389,3837.0,-0.33766233766233766,0.0,-1.0389610389610389,09:57:17,3785.0,334,SL,-24368.0555,0,1
|
9,2026-06-10,047040,대우건설,11:21:27,21000.0,21000.0,20975.0,20790.0,20150.0,23850.0,22200.0,168768837900.0,3143910.0,-0.24,중립,48,높음,1,"[""전기전자"", ""반도체"", ""광통신""]","[""금융업"", ""철강금속"", ""2차전지""]","[""005930"", ""000660""]",[],0,0.46560294658060114,0.7542593982166793,2026-06-09T16:01:34,0.8,0.33599999999999997,"목표가 돌파 (21,000 >= 20,975)",21050.0,0.2380952380952381,0.2380952380952381,0.0,20975.0,-0.11904761904761905,0.2380952380952381,-0.11904761904761905,20950.0,-0.2380952380952381,0.2380952380952381,-0.2380952380952381,21050.0,0.2380952380952381,0.2380952380952381,-0.2380952380952381,12:41:15,20750.0,31,SL,-9101.9875,0,1
|
||||||
135,2026-05-28,142280,녹십자엠에스,09:50:24,4890.0,4890.0,605.0,4816.65,0.0,6660.0,5450.0,108215421060.0,854870.0,-7.91,강세,72,보통,1,"[""반도체"", ""AI/로봇"", ""방산""]","[""건설업"", ""전기가스업"", ""주류""]","[""000100"", ""000150""]",[],0,,,,1.3,0.39,"목표가 돌파 (4,890 >= 605)",4890.0,0.0,0.0,0.0,4865.0,-0.5112474437627812,0.0,-0.5112474437627812,4835.0,-1.1247443762781186,0.0,-1.1247443762781186,4875.0,-0.3067484662576687,0.0,-1.1247443762781186,10:16:56,4815.0,159,SL,-13534.51725,0,1
|
10,2026-06-12,279570,케이뱅크,09:20:30,6470.0,6470.0,6450.0,6372.95,6250.0,5900.0,5500.0,14520293750.0,2054198.0,4.02,강세,72,보통,1,"[""반도체"", ""방산"", ""조선"", ""항공""]","[""건설"", ""광통신""]",[],[],0,0.5527329283625976,0.6632574176449582,2026-06-11T16:02:03,1.3,1.3,"목표가 돌파 (6,470 >= 6,450)",6480.0,0.1545595054095827,0.1545595054095827,0.0,6410.0,-0.9273570324574961,0.1545595054095827,-0.9273570324574961,6440.0,-0.46367851622874806,0.1545595054095827,-0.9273570324574961,6410.0,-0.9273570324574961,0.1545595054095827,-0.9273570324574961,09:56:29,6680.0,121,TP2,23716.4235,1,0
|
||||||
136,2026-05-28,232680,라온로보틱스,09:57:26,21700.0,21700.0,1945.0,21374.5,0.0,18300.0,14410.0,48862061400.0,707046.0,-3.56,강세,72,보통,1,"[""반도체"", ""AI/로봇"", ""방산""]","[""건설업"", ""전기가스업"", ""주류""]","[""000100"", ""000150""]",[],0,,,,1.3,0.39,"목표가 돌파 (21,700 >= 1,945)",21750.0,0.2304147465437788,0.2304147465437788,0.0,21800.0,0.4608294930875576,0.4608294930875576,0.0,21700.0,0.0,0.4608294930875576,0.0,21800.0,0.4608294930875576,0.4608294930875576,0.0,10:03:27,21350.0,35,SL,-13821.0625,0,1
|
11,2026-06-12,001740,SK네트웍스,09:20:45,13220.0,13220.0,12785.0,13021.7,12100.0,12270.0,10900.0,100766706800.0,8322389.0,13.28,강세,72,보통,1,"[""반도체"", ""방산"", ""조선"", ""항공""]","[""건설"", ""광통신""]",[],[],0,0.606595436105498,0.6944608641373307,2026-06-11T16:02:03,1.3,1.3,"목표가 돌파 (13,220 >= 12,785)",13240.0,0.15128593040847202,0.15128593040847202,0.0,13130.0,-0.680786686838124,0.15128593040847202,-0.680786686838124,13320.0,0.7564296520423601,0.7564296520423601,-0.680786686838124,13370.0,1.13464447806354,1.13464447806354,-0.680786686838124,09:28:07,13590.0,59,TP2,20149.4735,1,0
|
||||||
137,2026-05-28,003280,흥아해운,10:03:35,2240.0,2240.0,67.5,2206.4,0.0,2550.0,2415.0,22990880850.0,3718070.0,-0.67,강세,72,보통,1,"[""반도체"", ""AI/로봇"", ""방산""]","[""건설업"", ""전기가스업"", ""주류""]","[""000100"", ""000150""]",[],0,,,,1.3,0.39,"목표가 돌파 (2,240 >= 68)",2235.0,-0.2232142857142857,0.0,-0.2232142857142857,2245.0,0.2232142857142857,0.2232142857142857,-0.2232142857142857,2250.0,0.4464285714285714,0.4464285714285714,-0.2232142857142857,2250.0,0.4464285714285714,0.4464285714285714,-0.2232142857142857,12:03:39,2260.0,105,TIME,1601.9850000000001,1,0
|
13,2026-06-12,028670,팬오션,09:28:49,5310.0,5310.0,5290.0,5230.35,5180.0,5170.0,4950.0,11425592320.0,718062.0,6.31,강세,72,보통,1,"[""반도체"", ""방산"", ""조선"", ""항공""]","[""건설"", ""광통신""]",[],[],0,0.4769262690888751,0.6867203151088846,2026-06-11T16:02:03,1.3,1.3,"목표가 돌파 (5,310 >= 5,290)",5320.0,0.18832391713747645,0.18832391713747645,0.0,5290.0,-0.3766478342749529,0.18832391713747645,-0.3766478342749529,5290.0,-0.3766478342749529,0.18832391713747645,-0.3766478342749529,5250.0,-1.1299435028248588,0.18832391713747645,-1.1299435028248588,09:39:11,5230.0,489,SL,-44496.555,0,1
|
||||||
138,2026-05-28,036540,SFA반도체,10:17:11,9020.0,9010.0,605.0,8874.85,0.0,9220.0,8010.0,168105719900.0,2973961.0,-4.04,강세,72,보통,1,"[""반도체"", ""AI/로봇"", ""방산""]","[""건설업"", ""전기가스업"", ""주류""]","[""000100"", ""000150""]",[],0,,,,1.3,0.39,"목표가 돌파 (9,020 >= 605)",8980.0,-0.3329633740288568,0.0,-0.3329633740288568,8970.0,-0.4439511653718091,0.0,-0.4439511653718091,8940.0,-0.776914539400666,0.0,-0.776914539400666,8920.0,-0.9988901220865706,0.0,-0.9988901220865706,12:17:12,8990.0,86,TIME,-3343.852,0,0
|
14,2026-06-12,038500,삼표시멘트,09:39:31,12340.0,12340.0,12060.0,12154.9,11760.0,10500.0,9900.0,19350995120.0,723410.0,5.56,강세,72,보통,1,"[""반도체"", ""방산"", ""조선"", ""항공""]","[""건설"", ""광통신""]",[],[],0,0.6221551391896822,0.6631901016211622,2026-06-11T16:02:03,1.3,0.9099999999999999,"목표가 돌파 (12,340 >= 12,060)",12260.0,-0.6482982171799028,0.0,-0.6482982171799028,12230.0,-0.8914100486223663,0.0,-0.8914100486223663,12210.0,-1.053484602917342,0.0,-1.053484602917342,12270.0,-0.5672609400324149,0.0,-1.053484602917342,09:44:40,12140.0,147,SL,-33152.028,0,1
|
||||||
140,2026-05-29,066980,한성크린텍,09:20:12,2205.0,2205.0,144.5,2171.925,0.0,2150.0,1861.0,19122994350.0,1092946.0,-6.37,중립,62,보통,1,"[""반도체"", ""AI인프라"", ""로봇""]","[""건설"", ""음식료""]","[""018260"", ""000100"", ""012330"", ""000150""]",[],0,0.4351604210599285,0.731136896055066,2026-05-28T20:24:00,1.0,1.0,"목표가 돌파 (2,205 >= 144)",2185.0,-0.9070294784580499,0.0,-0.9070294784580499,2185.0,-0.9070294784580499,0.0,-0.9070294784580499,2195.0,-0.45351473922902497,0.0,-0.9070294784580499,2275.0,3.1746031746031744,3.1746031746031744,-0.9070294784580499,09:21:33,2170.0,907,SL,-35882.96075,0,1
|
16,2026-06-12,085620,미래에셋생명,12:29:49,30750.0,30750.0,30545.0,30288.75,27400.0,24200.0,17910.0,135360240730.0,4432039.0,4.77,강세,72,보통,1,"[""금융업"", ""전기전자"", ""유통업"", ""의약품""]","[""운수창고"", ""건설업""]",[],[],0,0.4703866335841655,0.7848740490945602,2026-06-11T16:02:03,1.3,1.4300000000000002,"목표가 돌파 (30,750 >= 30,545)",30400.0,-1.1382113821138211,0.0,-1.1382113821138211,30325.0,-1.3821138211382114,0.0,-1.3821138211382114,30150.0,-1.951219512195122,0.0,-1.951219512195122,30250.0,-1.6260162601626018,0.0,-1.951219512195122,12:31:36,30150.0,93,SL,-61696.665,0,1
|
||||||
141,2026-05-29,290690,소룩스,09:20:21,5140.0,5140.0,215.0,5062.9,0.0,5440.0,5010.0,14487763710.0,716299.0,-6.88,중립,62,보통,1,"[""반도체"", ""AI인프라"", ""로봇""]","[""건설"", ""음식료""]","[""018260"", ""000100"", ""012330"", ""000150""]",[],0,0.3696454015844157,0.7310477196261284,2026-05-28T20:24:00,1.0,1.0,"목표가 돌파 (5,140 >= 215)",5150.0,0.19455252918287938,0.19455252918287938,0.0,5190.0,0.9727626459143969,0.9727626459143969,0.0,5290.0,2.9182879377431905,2.9182879377431905,0.0,5230.0,1.7509727626459144,2.9182879377431905,0.0,09:24:39,5280.0,117,TP2,15085.161,1,0
|
|
||||||
142,2026-05-29,005880,대한해운,09:21:40,2215.0,2215.0,60.0,2181.775,0.0,2585.0,2465.0,14927338200.0,1159105.0,-4.73,중립,62,보통,1,"[""반도체"", ""AI인프라"", ""로봇""]","[""건설"", ""음식료""]","[""018260"", ""000100"", ""012330"", ""000150""]",[],0,0.4165395566639716,0.7318896407628258,2026-05-28T20:24:00,1.0,0.7,"목표가 돌파 (2,215 >= 60)",2225.0,0.4514672686230248,0.4514672686230248,0.0,2220.0,0.2257336343115124,0.4514672686230248,0.0,2215.0,0.0,0.4514672686230248,0.0,2225.0,0.4514672686230248,0.4514672686230248,0.0,11:21:42,2215.0,632,TIME,-2939.748,0,0
|
|
||||||
144,2026-05-29,003280,흥아해운,09:24:45,2140.0,2135.0,70.0,2102.975,0.0,2570.0,2430.0,24474088830.0,5989975.0,-7.96,중립,62,보통,1,"[""반도체"", ""AI인프라"", ""로봇""]","[""건설"", ""음식료""]","[""018260"", ""000100"", ""012330"", ""000150""]",[],0,0.4387159451976146,0.7095595342416872,2026-05-28T20:24:00,1.0,1.0,"목표가 돌파 (2,140 >= 70)",2130.0,-0.234192037470726,0.0,-0.234192037470726,2115.0,-0.936768149882904,0.0,-0.936768149882904,2125.0,-0.468384074941452,0.0,-0.936768149882904,2125.0,-0.468384074941452,0.0,-0.936768149882904,10:07:42,2100.0,934,SL,-36813.8435,0,1
|
|
||||||
145,2026-05-29,032580,피델릭스,10:07:49,6650.0,6630.0,1020.0,6530.55,0.0,8460.0,6420.0,58393931760.0,1288602.0,-2.35,중립,62,보통,1,"[""반도체"", ""AI인프라"", ""로봇""]","[""건설"", ""음식료""]","[""018260"", ""000100"", ""012330"", ""000150""]",[],0,0.4179516797368605,0.8026114336313444,2026-05-28T20:24:00,1.0,0.7,"목표가 돌파 (6,650 >= 1,020)",6620.0,-0.1508295625942685,0.0,-0.1508295625942685,6640.0,0.1508295625942685,0.1508295625942685,-0.1508295625942685,6720.0,1.3574660633484164,1.3574660633484164,-0.1508295625942685,6800.0,2.564102564102564,2.564102564102564,-0.1508295625942685,10:16:48,6800.0,63,TP2,9811.9665,1,0
|
|
||||||
147,2026-05-29,477850,마키나락스,10:16:56,36000.0,35850.0,14500.0,35312.25,0.0,83600.0,54600.0,511302300600.0,764746.0,0.0,중립,62,보통,1,"[""반도체"", ""AI인프라"", ""로봇""]","[""건설"", ""음식료""]","[""018260"", ""000100"", ""012330"", ""000150""]",[],0,0.3233400234590251,0.8175514874030767,2026-05-28T20:24:00,1.0,1.0,"목표가 돌파 (36,000 >= 14,500)",35950.0,0.2789400278940028,0.2789400278940028,0.0,36200.0,0.9762900976290098,0.9762900976290098,0.0,35900.0,0.1394700139470014,0.9762900976290098,0.0,36100.0,0.697350069735007,0.9762900976290098,0.0,10:42:07,35150.0,55,SL,-42565.6,0,1
|
|
||||||
148,2026-05-29,024840,KBI메탈,10:42:17,5170.0,5160.0,545.0,5082.6,0.0,8180.0,7090.0,139089194880.0,1496955.0,-12.96,중립,62,보통,1,"[""반도체"", ""AI인프라"", ""로봇""]","[""건설"", ""음식료""]","[""018260"", ""000100"", ""012330"", ""000150""]",[],0,0.4338043614374876,0.7374319919650496,2026-05-28T20:24:00,1.0,0.7,"목표가 돌파 (5,170 >= 545)",5180.0,0.3875968992248062,0.3875968992248062,0.0,5260.0,1.937984496124031,1.937984496124031,0.0,5310.0,2.9069767441860463,2.9069767441860463,0.0,5320.0,3.10077519379845,3.10077519379845,0.0,10:46:00,5290.0,81,TP2,9631.7505,1,0
|
|
||||||
150,2026-05-29,001740,SK네트웍스,10:46:23,11300.0,11300.0,275.0,11130.5,0.0,8630.0,8080.0,79641500400.0,1738408.0,-5.68,중립,62,보통,1,"[""반도체"", ""AI인프라"", ""로봇""]","[""건설"", ""음식료""]","[""018260"", ""000100"", ""012330"", ""000150""]",[],0,0.40453855863241456,0.7809700225459555,2026-05-28T20:24:00,1.0,1.0,"목표가 돌파 (11,300 >= 275)",11300.0,0.0,0.0,0.0,11300.0,0.0,0.0,0.0,11300.0,0.0,0.0,0.0,11300.0,0.0,0.0,0.0,12:46:25,11270.0,176,TIME,-9446.184000000001,0,0
|
|
||||||
151,2026-05-29,005880,대한해운,11:21:51,2215.0,2215.0,60.0,2181.775,0.0,2585.0,2465.0,14927338200.0,3241257.0,-4.73,중립,62,보통,1,"[""운수창고"", ""금융업"", ""철강금속""]","[""반도체"", ""의약품"", ""건설업"", ""화학""]","[""018260"", ""000100"", ""012330"", ""000150""]",[],0,0.41761836541992037,0.7196576370404046,2026-05-28T20:24:00,1.0,1.0,"목표가 돌파 (2,215 >= 60)",2215.0,0.0,0.0,0.0,2215.0,0.0,0.0,0.0,2205.0,-0.4514672686230248,0.0,-0.4514672686230248,2210.0,-0.2257336343115124,0.0,-0.4514672686230248,13:21:53,2235.0,902,TIME,13809.169,1,0
|
|
||||||
152,2026-05-29,032580,피델릭스,12:46:33,6580.0,6580.0,1020.0,6481.3,0.0,8460.0,6420.0,58393931760.0,2188412.0,-3.38,중립,62,보통,1,"[""운수창고"", ""금융업"", ""철강금속""]","[""반도체"", ""의약품"", ""건설업"", ""화학""]","[""018260"", ""000100"", ""012330"", ""000150""]",[],0,0.422704933505687,0.7937182159021703,2026-05-28T20:24:00,1.0,0.7,"목표가 돌파 (6,580 >= 1,020)",6620.0,0.60790273556231,0.60790273556231,0.0,6640.0,0.911854103343465,0.911854103343465,0.0,6630.0,0.7598784194528876,0.911854103343465,0.0,6540.0,-0.60790273556231,0.911854103343465,-0.60790273556231,13:04:51,6480.0,212,SL,-24088.076,0,1
|
|
||||||
153,2026-05-29,024840,KBI메탈,13:04:57,5470.0,5470.0,545.0,5387.95,0.0,8180.0,7090.0,139089194880.0,2093384.0,-7.91,중립,62,보통,1,"[""운수창고"", ""금융업"", ""철강금속""]","[""반도체"", ""의약품"", ""건설업"", ""화학""]","[""018260"", ""000100"", ""012330"", ""000150""]",[],0,0.42571653655154934,0.785533230878018,2026-05-28T20:24:00,1.0,0.5,"목표가 돌파 (5,470 >= 545)",5460.0,-0.18281535648994515,0.0,-0.18281535648994515,5430.0,-0.7312614259597806,0.0,-0.7312614259597806,5420.0,-0.9140767824497258,0.0,-0.9140767824497258,5400.0,-1.2797074954296161,0.0,-1.2797074954296161,13:16:28,5350.0,182,SL,-23888.046,0,1
|
|
||||||
154,2026-05-29,001740,SK네트웍스,13:16:40,11210.0,11210.0,275.0,11041.85,0.0,8630.0,8080.0,79641500400.0,2780508.0,-6.43,중립,62,보통,1,"[""운수창고"", ""금융업"", ""철강금속""]","[""반도체"", ""의약품"", ""건설업"", ""화학""]","[""018260"", ""000100"", ""012330"", ""000150""]",[],0,0.4045385586324146,0.7801186798378126,2026-05-28T20:24:00,1.0,0.3,"목표가 돌파 (11,210 >= 275)",11210.0,0.0,0.0,0.0,11210.0,0.0,0.0,0.0,11210.0,0.0,0.0,0.0,11210.0,0.0,0.0,0.0,14:50:07,11130.0,53,FORCE,-5479.405,0,0
|
|
||||||
155,2026-05-29,005880,대한해운,13:22:01,2235.0,2235.0,60.0,2201.475,0.0,2585.0,2465.0,14927338200.0,4150881.0,-3.87,중립,62,보통,1,"[""운수창고"", ""금융업"", ""철강금속""]","[""반도체"", ""의약품"", ""건설업"", ""화학""]","[""018260"", ""000100"", ""012330"", ""000150""]",[],0,0.41761836541992037,0.7196576370404048,2026-05-28T20:24:00,1.0,0.5,"목표가 돌파 (2,235 >= 60)",2235.0,0.0,0.0,0.0,2240.0,0.22371364653243847,0.22371364653243847,0.0,2240.0,0.22371364653243847,0.22371364653243847,0.0,2235.0,0.0,0.22371364653243847,0.0,14:50:14,2255.0,447,FORCE,6824.5725,1,0
|
|
||||||
156,2026-06-01,006340,대원전선,09:20:12,12250.0,12240.0,650.0,12056.4,0.0,15250.0,13950.0,79885329860.0,1343846.0,2.6,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.46391521101257543,0.7687711249122031,2026-05-28T20:24:00,1.2,1.2,"목표가 돌파 (12,250 >= 650)",12260.0,0.16339869281045752,0.16339869281045752,0.0,12300.0,0.49019607843137253,0.49019607843137253,0.0,12200.0,-0.32679738562091504,0.49019607843137253,-0.32679738562091504,12170.0,-0.5718954248366013,0.49019607843137253,-0.5718954248366013,09:41:36,12050.0,195,SL,-41990.0325,0,1
|
|
||||||
157,2026-06-01,425040,티이엠씨,09:20:21,18980.0,18830.0,1700.0,18547.55,0.0,29250.0,25850.0,46745332000.0,484537.0,5.44,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.35475607063065256,0.8238569608722319,2026-05-28T20:24:00,1.2,1.2,"목표가 돌파 (18,980 >= 1,700)",18980.0,0.7966011683483802,0.7966011683483802,0.0,18950.0,0.6372809346787042,0.7966011683483802,0.0,18660.0,-0.9028146574614976,0.7966011683483802,-0.9028146574614976,18770.0,-0.3186404673393521,0.7966011683483802,-0.9028146574614976,09:27:09,18540.0,126,SL,-41451.165,0,1
|
|
||||||
158,2026-06-01,332570,PS일렉트로닉스,09:20:22,12330.0,12470.0,460.0,12282.95,0.0,13110.0,12190.0,34905124500.0,1699230.0,4.85,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.433213726318522,0.7919377953975175,2026-05-28T20:24:00,1.2,1.2,"목표가 돌파 (12,330 >= 460)",,,,,,,,,12970.0,4.0096230954290295,4.0096230954290295,0.0,13030.0,4.490777866880514,4.490777866880514,0.0,09:23:37,12800.0,59,TP2,17887.000500000002,1,0
|
|
||||||
159,2026-06-01,425040,티이엠씨,09:20:29,18830.0,18820.0,1700.0,18537.7,0.0,29250.0,25850.0,46745332000.0,496458.0,4.61,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.35475607063065256,0.8238569608722321,2026-05-28T20:24:00,1.2,1.2,"목표가 돌파 (18,830 >= 1,700)",18950.0,0.6907545164718385,0.6907545164718385,0.0,18900.0,0.4250797024442083,0.6907545164718385,0.0,18660.0,-0.8501594048884166,0.6907545164718385,-0.8501594048884166,18770.0,-0.2656748140276302,0.6907545164718385,-0.8501594048884166,09:26:59,18510.0,127,SL,-44312.5225,0,1
|
|
||||||
161,2026-06-01,027360,아주IB투자,09:23:47,12200.0,12220.0,720.0,12036.7,0.0,17690.0,16250.0,253773674570.0,2087881.0,0.91,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.4657874233200197,0.7341750273456272,2026-05-28T20:24:00,1.2,1.2,"목표가 돌파 (12,200 >= 720)",12220.0,0.0,0.0,0.0,12180.0,-0.32733224222585927,0.0,-0.32733224222585927,12110.0,-0.900163666121113,0.0,-0.900163666121113,12330.0,0.900163666121113,0.900163666121113,-0.900163666121113,10:05:15,12010.0,59,SL,-13879.8975,0,1
|
|
||||||
162,2026-06-01,001740,SK네트웍스,09:27:19,11500.0,11500.0,1085.0,11327.5,0.0,10920.0,8750.0,703642124640.0,278929.0,1.95,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.4417259535599868,0.7166326202855798,2026-05-28T20:24:00,1.2,0.84,"목표가 돌파 (11,500 >= 1,085)",11500.0,0.0,0.0,0.0,11570.0,0.6086956521739131,0.6086956521739131,0.0,11570.0,0.6086956521739131,0.6086956521739131,0.0,11570.0,0.6086956521739131,0.6086956521739131,0.0,10:00:23,12000.0,146,TP2,69331.75,1,0
|
|
||||||
163,2026-06-01,001740,SK네트웍스,09:27:20,11500.0,11500.0,1085.0,11327.5,0.0,10920.0,8750.0,703642124640.0,278929.0,1.95,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.4417259535599865,0.7166326202855801,2026-05-28T20:24:00,1.2,0.84,"목표가 돌파 (11,500 >= 1,085)",11500.0,0.0,0.0,0.0,11570.0,0.6086956521739131,0.6086956521739131,0.0,11570.0,0.6086956521739131,0.6086956521739131,0.0,11570.0,0.6086956521739131,0.6086956521739131,0.0,10:00:14,12000.0,146,TP2,69331.75,1,0
|
|
||||||
164,2026-06-01,010170,대한광통신,09:41:50,20900.0,20800.0,1600.0,20488.0,0.0,27900.0,24700.0,840928760800.0,6380259.0,-7.93,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.40079640837172215,0.749086920694635,2026-05-28T20:24:00,1.2,0.6,"목표가 돌파 (20,900 >= 1,600)",20800.0,0.0,0.0,0.0,20750.0,-0.2403846153846154,0.0,-0.2403846153846154,20900.0,0.4807692307692308,0.4807692307692308,-0.2403846153846154,20850.0,0.2403846153846154,0.4807692307692308,-0.2403846153846154,10:25:48,21400.0,18,TP2,9992.7,1,0
|
|
||||||
166,2026-06-01,457370,한켐,10:00:30,10970.0,10940.0,1185.0,10775.9,0.0,12310.0,9940.0,42778677960.0,577420.0,-8.35,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.43365506082981103,0.7868097740079766,2026-05-28T20:24:00,1.2,1.2,"목표가 돌파 (10,970 >= 1,185)",,,,,10830.0,-1.0054844606946984,0.0,-1.0054844606946984,10800.0,-1.2797074954296161,0.0,-1.2797074954296161,,,,,10:22:05,10740.0,218,SL,-48523.312,0,1
|
|
||||||
167,2026-06-01,034220,LG디스플레이,10:00:51,16130.0,16060.0,535.0,15819.1,0.0,16420.0,15350.0,272529087660.0,26629308.0,0.25,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.3215532418967578,0.8058851328107793,2026-05-28T20:24:00,1.2,0.84,"목표가 돌파 (16,130 >= 535)",16190.0,0.809464508094645,0.809464508094645,0.0,16290.0,1.432129514321295,1.432129514321295,0.0,16350.0,1.805728518057285,1.805728518057285,0.0,16130.0,0.43586550435865506,1.805728518057285,0.0,10:21:50,16560.0,32,TP2,14889.568,1,0
|
|
||||||
169,2026-06-01,018880,한온시스템,10:05:36,5340.0,5340.0,190.0,5259.9,0.0,5400.0,5020.0,130064780520.0,14563034.0,-5.15,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.3848762551192131,0.7789769754074529,2026-05-28T20:24:00,1.2,0.84,"목표가 돌파 (5,340 >= 190)",5360.0,0.37453183520599254,0.37453183520599254,0.0,,,,,5340.0,0.0,0.37453183520599254,0.0,5290.0,-0.9363295880149813,0.37453183520599254,-0.9363295880149813,12:05:42,5310.0,314,TIME,-12922.827,0,0
|
|
||||||
170,2026-06-01,024060,흥구석유,10:21:59,12580.0,12540.0,290.0,12351.9,0.0,13740.0,13160.0,10448147500.0,444691.0,0.8,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.4392924838463846,0.7999231728020089,2026-05-28T20:24:00,1.2,1.2,"목표가 돌파 (12,580 >= 290)",12550.0,0.07974481658692185,0.07974481658692185,0.0,12530.0,-0.07974481658692185,0.07974481658692185,-0.07974481658692185,,,,,12560.0,0.1594896331738437,0.1594896331738437,-0.07974481658692185,12:22:03,12550.0,190,TIME,-3107.165,0,0
|
|
||||||
171,2026-06-01,005935,삼성전자우,10:22:19,227500.0,228000.0,2750.0,224580.0,0.0,192000.0,186500.0,756390772800.0,5061108.0,12.35,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.4016687804349751,0.37683891996396657,2026-05-28T20:24:00,1.2,0.6,"목표가 돌파 (227,500 >= 2,750)",227250.0,-0.3289473684210526,0.0,-0.3289473684210526,225500.0,-1.0964912280701753,0.0,-1.0964912280701753,227500.0,-0.21929824561403508,0.0,-1.0964912280701753,230000.0,0.8771929824561403,0.8771929824561403,-1.0964912280701753,10:36:48,233500.0,2,TP2,10020.95,1,0
|
|
||||||
173,2026-06-01,332570,PS일렉트로닉스,10:26:05,12440.0,12410.0,460.0,12223.85,0.0,13110.0,12190.0,34905124500.0,3385873.0,5.78,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.4356142665028452,0.7919288098544557,2026-05-28T20:24:00,1.2,1.2,"목표가 돌파 (12,440 >= 460)",12450.0,0.32232070910556004,0.32232070910556004,0.0,12410.0,0.0,0.32232070910556004,0.0,12350.0,-0.4834810636583401,0.32232070910556004,-0.4834810636583401,12380.0,-0.24174053182917005,0.32232070910556004,-0.4834810636583401,10:52:03,12220.0,192,SL,-41412.576,0,1
|
|
||||||
175,2026-06-01,010170,대한광통신,10:36:58,21200.0,21200.0,1600.0,20882.0,0.0,27900.0,24700.0,840928760800.0,9380056.0,-6.61,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.4007964083717222,0.7490869206946349,2026-05-28T20:24:00,1.2,1.2,"목표가 돌파 (21,200 >= 1,600)",21200.0,0.0,0.0,0.0,21150.0,-0.2358490566037736,0.0,-0.2358490566037736,21150.0,-0.2358490566037736,0.0,-0.2358490566037736,21150.0,-0.2358490566037736,0.0,-0.2358490566037736,10:50:57,20900.0,113,SL,-38864.655,0,1
|
|
||||||
176,2026-06-01,021880,메이슨캐피탈,10:51:11,186.0,186.0,35.5,183.21,0.0,287.0,216.0,13998574527.0,4834067.0,-5.58,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.4082727808510595,0.3034321736579565,2026-05-28T20:24:00,1.2,0.84,목표가 돌파 (186 >= 36),185.0,-0.5376344086021506,0.0,-0.5376344086021506,185.0,-0.5376344086021506,0.0,-0.5376344086021506,183.0,-1.6129032258064515,0.0,-1.6129032258064515,185.0,-0.5376344086021506,0.0,-1.6129032258064515,10:55:46,183.0,9032,SL,-30571.061999999998,0,1
|
|
||||||
177,2026-06-01,001440,대한전선,10:56:15,49350.0,49350.0,2700.0,48609.75,0.0,58400.0,53000.0,234275246400.0,4599816.0,8.58,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.3061406800017308,0.8257458231407364,2026-05-28T20:24:00,1.2,0.6,"목표가 돌파 (49,350 >= 2,700)",49200.0,-0.303951367781155,0.0,-0.303951367781155,48750.0,-1.21580547112462,0.0,-1.21580547112462,48550.0,-1.6210739614994936,0.0,-1.6210739614994936,48400.0,-1.9250253292806485,0.0,-1.9250253292806485,10:58:12,48600.0,24,SL,-20452.14,0,1
|
|
||||||
178,2026-06-01,036540,SFA반도체,10:58:30,7990.0,7980.0,695.0,7860.3,0.0,11640.0,10250.0,463103060400.0,2829685.0,-3.97,강세,68,보통,1,"[""반도체"", ""방산"", ""제약바이오"", ""AI/IT""]","[""건설업"", ""금융업""]","[""000100"", ""000150"", ""000070""]",[],0,0.44363434978941074,0.7474588780204732,2026-05-28T20:24:00,1.2,0.36,"목표가 돌파 (7,990 >= 695)",,,,,8010.0,0.37593984962406013,0.37593984962406013,0.0,,,,,8040.0,0.7518796992481203,0.7518796992481203,0.0,12:58:33,7920.0,90,TIME,-6897.6900000000005,0,0
|
|
||||||
179,2026-06-02,034220,LG디스플레이,09:20:08,16250.0,16400.0,535.0,16154.0,0.0,16420.0,15350.0,272529087660.0,12688058.0,2.85,강세,68,보통,1,"[""반도체"", ""로봇"", ""의약품""]","[""건설"", ""금융""]","[""000150"", ""000157"", ""000070""]",[],0,0.3215532418967578,0.8058851328107793,2026-05-28T20:24:00,1.2,1.2,"목표가 돌파 (16,250 >= 535)",16710.0,1.8902439024390243,1.8902439024390243,0.0,16670.0,1.6463414634146343,1.8902439024390243,0.0,16240.0,-0.975609756097561,1.8902439024390243,-0.975609756097561,16310.0,-0.548780487804878,1.8902439024390243,-0.975609756097561,09:25:17,16130.0,147,SL,-44675.2845,0,1
|
|
||||||
180,2026-06-02,010170,대한광통신,09:20:25,18930.0,18980.0,1600.0,18695.3,0.0,27900.0,24700.0,840928760800.0,5244315.0,-8.11,강세,68,보통,1,"[""반도체"", ""로봇"", ""의약품""]","[""건설"", ""금융""]","[""000150"", ""000157"", ""000070""]",[],0,0.3981870275665069,0.7543469473034201,2026-05-28T20:24:00,1.2,1.2,"목표가 돌파 (18,930 >= 1,600)",19640.0,3.477344573234984,3.477344573234984,0.0,19490.0,2.6870389884088515,3.477344573234984,0.0,19980.0,5.268703898840886,5.268703898840886,0.0,20050.0,5.637513171759747,5.637513171759747,0.0,09:21:17,19600.0,38,TP2,21999.454,1,0
|
|
||||||
182,2026-06-02,043260,성호전자,09:21:25,41600.0,41600.0,2600.0,40976.0,0.0,45750.0,40550.0,132291841500.0,1742625.0,5.45,강세,68,보통,1,"[""반도체"", ""로봇"", ""의약품""]","[""건설"", ""금융""]","[""000150"", ""000157"", ""000070""]",[],0,0.3033092791475277,0.8396825457478589,2026-05-28T20:24:00,1.2,1.2,"목표가 돌파 (41,600 >= 2,600)",41100.0,-1.201923076923077,0.0,-1.201923076923077,41300.0,-0.7211538461538461,0.0,-1.201923076923077,40650.0,-2.283653846153846,0.0,-2.283653846153846,43300.0,4.086538461538462,4.086538461538462,-2.283653846153846,09:22:41,40850.0,57,SL,-47646.1575,0,1
|
|
||||||
183,2026-06-02,036540,SFA반도체,09:22:49,7470.0,7460.0,695.0,7348.099999999999,0.0,11640.0,10250.0,463103060400.0,1300612.0,-5.8,강세,68,보통,1,"[""반도체"", ""로봇"", ""의약품""]","[""건설"", ""금융""]","[""000150"", ""000157"", ""000070""]",[],0,0.43994692657038625,0.7557304579561245,2026-05-28T20:24:00,1.2,0.84,"목표가 돌파 (7,470 >= 695)",7420.0,-0.5361930294906166,0.0,-0.5361930294906166,7380.0,-1.0723860589812333,0.0,-1.0723860589812333,7390.0,-0.938337801608579,0.0,-1.0723860589812333,7430.0,-0.40214477211796246,0.0,-1.0723860589812333,09:56:55,7340.0,224,SL,-30336.768,0,1
|
|
||||||
184,2026-06-02,098460,고영,09:25:26,32450.0,32450.0,1025.0,31963.25,0.0,41850.0,39800.0,92634237600.0,406770.0,-4.14,강세,68,보통,1,"[""반도체"", ""로봇"", ""의약품""]","[""건설"", ""금융""]","[""000150"", ""000157"", ""000070""]",[],0,0.29978995643395917,0.8471768805207506,2026-05-28T20:24:00,1.2,0.6,"목표가 돌파 (32,450 >= 1,025)",32600.0,0.46224961479198773,0.46224961479198773,0.0,32850.0,1.2326656394453006,1.2326656394453006,0.0,32850.0,1.2326656394453006,1.2326656394453006,0.0,32700.0,0.7704160246533128,1.2326656394453006,0.0,09:58:43,31950.0,11,SL,-6238.87,0,1
|
|
||||||
186,2026-06-02,022100,포스코DX,09:57:09,33850.0,33850.0,900.0,33342.25,0.0,34100.0,32300.0,12030123600.0,1148689.0,-12.53,강세,68,보통,1,"[""반도체"", ""로봇"", ""의약품""]","[""건설"", ""금융""]","[""000150"", ""000157"", ""000070""]",[],0,0.305738945097692,0.8526834612459052,2026-05-28T20:24:00,1.2,0.6,"목표가 돌파 (33,850 >= 900)",33800.0,-0.14771048744460857,0.0,-0.14771048744460857,33850.0,0.0,0.0,-0.14771048744460857,33800.0,-0.14771048744460857,0.0,-0.14771048744460857,34100.0,0.7385524372230428,0.7385524372230428,-0.14771048744460857,10:22:23,34900.0,11,TP2,10745.5425,1,0
|
|
||||||
187,2026-06-02,357880,SKAI,09:58:55,4415.0,4405.0,427.5,4338.925,0.0,5830.0,4975.0,34888267080.0,1822079.0,-17.48,강세,68,보통,1,"[""반도체"", ""로봇"", ""의약품""]","[""건설"", ""금융""]","[""000150"", ""000157"", ""000070""]",[],0,0.4203791808518471,0.7864215467759593,2026-05-28T20:24:00,1.2,0.36,"목표가 돌파 (4,415 >= 428)",4380.0,-0.5675368898978433,0.0,-0.5675368898978433,4370.0,-0.7945516458569807,0.0,-0.7945516458569807,4380.0,-0.5675368898978433,0.0,-0.7945516458569807,4445.0,0.9080590238365494,0.9080590238365494,-0.7945516458569807,10:02:28,4330.0,163,SL,-13708.99275,0,1
|
|
||||||
188,2026-06-02,006340,대원전선,10:02:39,10900.0,10890.0,650.0,10726.65,0.0,15250.0,13950.0,79885329860.0,2364186.0,-6.12,강세,68,보통,1,"[""반도체"", ""로봇"", ""의약품""]","[""건설"", ""금융""]","[""000150"", ""000157"", ""000070""]",[],0,0.46853872014132963,0.7642501882516862,2026-05-28T20:24:00,1.2,0.36,"목표가 돌파 (10,900 >= 650)",10960.0,0.642791551882461,0.642791551882461,0.0,10990.0,0.9182736455463728,0.9182736455463728,0.0,10960.0,0.642791551882461,0.9182736455463728,0.0,10940.0,0.4591368227731864,0.9182736455463728,0.0,12:02:41,11040.0,20,TIME,2536.77,1,0
|
|
||||||
190,2026-06-02,080220,제주반도체,10:22:41,95500.0,95700.0,6200.0,94264.5,0.0,125000.0,112600.0,396407725100.0,757971.0,-3.05,강세,68,보통,1,"[""반도체"", ""로봇"", ""의약품""]","[""건설"", ""금융""]","[""000150"", ""000157"", ""000070""]",[],0,0.3099738195042713,0.8224795183192154,2026-05-28T20:24:00,1.2,0.6,"목표가 돌파 (95,500 >= 6,200)",95500.0,-0.20898641588296762,0.0,-0.20898641588296762,95500.0,-0.20898641588296762,0.0,-0.20898641588296762,95300.0,-0.41797283176593525,0.0,-0.41797283176593525,95800.0,0.10449320794148381,0.10449320794148381,-0.41797283176593525,10:50:59,94200.0,12,SL,-20376.54,0,1
|
|
||||||
191,2026-06-02,078150,HB테크놀러지,10:51:18,2960.0,2955.0,175.0,2910.675,0.0,4465.0,4115.0,18546097120.0,3136805.0,-6.03,강세,68,보통,1,"[""반도체"", ""로봇"", ""의약품""]","[""건설"", ""금융""]","[""000150"", ""000157"", ""000070""]",[],0,0.4082024397059335,0.7961953794270091,2026-05-28T20:24:00,1.2,0.36,"목표가 돌파 (2,960 >= 175)",2960.0,0.1692047377326565,0.1692047377326565,0.0,2955.0,0.0,0.1692047377326565,0.0,2950.0,-0.1692047377326565,0.1692047377326565,-0.1692047377326565,2955.0,0.0,0.1692047377326565,-0.1692047377326565,12:51:20,2945.0,243,TIME,-3933.198,0,0
|
|
||||||
193,2026-06-02,003280,흥아해운,12:02:53,2000.0,2005.0,67.5,1974.925,0.0,2515.0,2380.0,19807212040.0,6979826.0,-2.91,강세,68,보통,1,"[""운수창고""]","[""전기전자"", ""의약품"", ""전기가스업"", ""기계"", ""반도체""]","[""000150"", ""000157"", ""000070""]",[],0,0.4387159451976146,0.709559534241687,2026-05-28T20:24:00,1.2,0.588,"목표가 돌파 (2,000 >= 68)",2005.0,0.0,0.0,0.0,2010.0,0.24937655860349126,0.24937655860349126,0.0,2005.0,0.0,0.24937655860349126,0.0,2005.0,0.0,0.24937655860349126,0.0,14:02:56,1979.0,588,TIME,-17733.9624,0,0
|
|
||||||
194,2026-06-02,478150,TIME 글로벌우주테크&방산액티브,12:51:34,23560.0,23560.0,387.5,23206.6,0.0,24750.0,23975.0,15654623085.0,333256.0,-5.06,강세,68,보통,1,"[""운수창고""]","[""전기전자"", ""의약품"", ""전기가스업"", ""기계"", ""반도체""]","[""000150"", ""000157"", ""000070""]",[],0,0.3479374615027259,0.8081346033908917,2026-05-28T20:24:00,1.2,0.42,"목표가 돌파 (23,560 >= 388)",23565.0,0.021222410865874362,0.021222410865874362,0.0,23570.0,0.042444821731748725,0.042444821731748725,0.0,23580.0,0.08488964346349745,0.08488964346349745,0.0,23585.0,0.10611205432937182,0.10611205432937182,0.0,14:50:09,23915.0,35,FORCE,10669.11125,1,0
|
|
||||||
195,2026-06-05,034220,LG디스플레이,09:20:13,14920.0,14920.0,950.0,14770.8,0.0,16600.0,14700.0,969593504520.0,2490989.0,-7.44,중립,52,높음,1,"[""AI/로봇"", ""우주항공"", ""건설/재건축""]","[""반도체"", ""금융""]","[""454910"", ""011070"", ""051910""]",[],0,0.3827240469611287,0.7697687478645221,2026-06-02T18:36:28,0.8,0.8,"목표가 돌파 (14,920 >= 950)",14820.0,-0.6702412868632708,0.0,-0.6702412868632708,14800.0,-0.8042895442359249,0.0,-0.8042895442359249,14820.0,-0.6702412868632708,0.0,-0.8042895442359249,15020.0,0.6702412868632708,0.6702412868632708,-0.8042895442359249,09:25:48,14770.0,107,SL,-19371.2265,0,1
|
|
||||||
196,2026-06-05,052710,아모텍,09:20:23,22950.0,22950.0,2750.0,22720.5,0.0,32000.0,26500.0,43734665200.0,171039.0,-7.46,중립,52,높음,1,"[""AI/로봇"", ""우주항공"", ""건설/재건축""]","[""반도체"", ""금융""]","[""454910"", ""011070"", ""051910""]",[],0,0.3638854438238923,0.817808397712043,2026-06-02T18:36:28,0.8,0.8,"목표가 돌파 (22,950 >= 2,750)",22900.0,-0.2178649237472767,0.0,-0.2178649237472767,22550.0,-1.7429193899782136,0.0,-1.7429193899782136,22450.0,-2.178649237472767,0.0,-2.178649237472767,23600.0,2.832244008714597,2.832244008714597,-2.178649237472767,09:22:09,22650.0,69,SL,-23985.09,0,1
|
|
||||||
197,2026-06-05,077360,덕산하이메탈,09:22:17,14460.0,14460.0,2135.0,14315.4,0.0,15710.0,11440.0,84122239770.0,628619.0,-3.66,중립,52,높음,1,"[""AI/로봇"", ""우주항공"", ""건설/재건축""]","[""반도체"", ""금융""]","[""454910"", ""011070"", ""051910""]",[],0,0.37891442938484005,0.8453358566731978,2026-06-02T18:36:28,0.8,0.5599999999999999,"목표가 돌파 (14,460 >= 2,135)",14290.0,-1.1756569847856155,0.0,-1.1756569847856155,14370.0,-0.6224066390041494,0.0,-1.1756569847856155,14530.0,0.48409405255878285,0.48409405255878285,-1.1756569847856155,14630.0,1.1756569847856155,1.1756569847856155,-1.1756569847856155,09:23:07,14290.0,77,SL,-15402.6565,0,1
|
|
||||||
198,2026-06-05,010170,대한광통신,09:23:12,18560.0,18560.0,1950.0,18374.4,0.0,25400.0,21500.0,420850554400.0,2580655.0,-8.57,중립,52,높음,1,"[""AI/로봇"", ""우주항공"", ""건설/재건축""]","[""반도체"", ""금융""]","[""454910"", ""011070"", ""051910""]",[],0,0.42866294164340485,0.7877062752702315,2026-06-02T18:36:28,0.8,0.4,"목표가 돌파 (18,560 >= 1,950)",18620.0,0.3232758620689655,0.3232758620689655,0.0,18500.0,-0.3232758620689655,0.3232758620689655,-0.3232758620689655,18620.0,0.3232758620689655,0.3232758620689655,-0.3232758620689655,18490.0,-0.3771551724137931,0.3232758620689655,-0.3771551724137931,09:34:34,18370.0,43,SL,-9830.0365,0,1
|
|
||||||
199,2026-06-05,204320,HL만도,09:25:57,53800.0,53800.0,1500.0,53262.0,0.0,64500.0,61500.0,54912111300.0,62751.0,-6.6,중립,52,높음,1,"[""AI/로봇"", ""우주항공"", ""건설/재건축""]","[""반도체"", ""금융""]","[""454910"", ""011070"", ""051910""]",[],0,0.3111670478450407,0.7879673579754577,2026-06-02T18:36:28,0.8,0.24,"목표가 돌파 (53,800 >= 1,500)",53800.0,0.0,0.0,0.0,53900.0,0.18587360594795538,0.18587360594795538,0.0,54100.0,0.5576208178438662,0.5576208178438662,0.0,53900.0,0.18587360594795538,0.5576208178438662,0.0,09:52:11,53200.0,8,SL,-5694.48,0,1
|
|
||||||
200,2026-06-05,001510,SK증권,09:34:41,3590.0,3590.0,152.5,3554.1,0.0,3530.0,3225.0,25118288000.0,18762403.0,12.19,중립,52,높음,1,"[""AI/로봇"", ""우주항공"", ""건설/재건축""]","[""반도체"", ""금융""]","[""454910"", ""011070"", ""051910""]",[],0,0.433642576954848,0.780144530394883,2026-06-02T18:36:28,0.8,0.24,"목표가 돌파 (3,590 >= 152)",3590.0,0.0,0.0,0.0,3610.0,0.5571030640668524,0.5571030640668524,0.0,3555.0,-0.9749303621169917,0.5571030640668524,-0.9749303621169917,3525.0,-1.8105849582172702,0.5571030640668524,-1.8105849582172702,09:36:23,3550.0,133,SL,-6312.313,0,1
|
|
||||||
201,2026-06-05,261780,아리바이오랩,09:36:29,2700.0,2700.0,372.5,2673.0,0.0,3880.0,3135.0,13478473660.0,647644.0,1.89,중립,52,높음,1,"[""AI/로봇"", ""우주항공"", ""건설/재건축""]","[""반도체"", ""금융""]","[""454910"", ""011070"", ""051910""]",[],0,0.47894143647841786,0.8013313288800499,2026-06-02T18:36:28,0.8,0.24,"목표가 돌파 (2,700 >= 372)",2690.0,-0.3703703703703704,0.0,-0.3703703703703704,2695.0,-0.1851851851851852,0.0,-0.3703703703703704,2680.0,-0.7407407407407408,0.0,-0.7407407407407408,2685.0,-0.5555555555555556,0.0,-0.7407407407407408,09:43:09,2670.0,177,SL,-6303.2355,0,1
|
|
||||||
202,2026-06-05,347850,디앤디파마텍,09:43:15,91200.0,91200.0,6850.0,90288.0,0.0,106300.0,92600.0,310029079800.0,537165.0,-2.98,중립,52,높음,1,"[""AI/로봇"", ""우주항공"", ""건설/재건축""]","[""반도체"", ""금융""]","[""454910"", ""011070"", ""051910""]",[],0,0.3624412212679356,0.8339408325832915,2026-06-02T18:36:28,0.8,0.24,"목표가 돌파 (91,200 >= 6,850)",91000.0,-0.21929824561403508,0.0,-0.21929824561403508,90900.0,-0.3289473684210526,0.0,-0.3289473684210526,90600.0,-0.6578947368421052,0.0,-0.6578947368421052,89700.0,-1.644736842105263,0.0,-1.644736842105263,09:49:38,90200.0,5,SL,-5947.85,0,1
|
|
||||||
203,2026-06-05,027360,아주IB투자,09:49:47,9710.0,9710.0,1245.0,9612.9,0.0,13790.0,11300.0,101099868480.0,1288553.0,-5.18,중립,52,높음,1,"[""AI/로봇"", ""우주항공"", ""건설/재건축""]","[""반도체"", ""금융""]","[""454910"", ""011070"", ""051910""]",[],0,0.37020411801246755,0.8009178007551034,2026-06-02T18:36:28,0.8,0.24,"목표가 돌파 (9,710 >= 1,245)",9640.0,-0.7209062821833162,0.0,-0.7209062821833162,9660.0,-0.5149330587023687,0.0,-0.7209062821833162,9680.0,-0.30895983522142123,0.0,-0.7209062821833162,9710.0,0.0,0.0,-0.7209062821833162,11:19:48,9910.0,15,TIME,2688.285,1,0
|
|
||||||
204,2026-06-05,003280,흥아해운,09:52:20,1952.0,1952.0,112.5,1932.48,0.0,2290.0,2065.0,32976325200.0,1922900.0,0.15,중립,52,높음,1,"[""AI/로봇"", ""우주항공"", ""건설/재건축""]","[""반도체"", ""금융""]","[""454910"", ""011070"", ""051910""]",[],0,0.44352127575320216,0.7588575618154888,2026-06-02T18:36:28,0.8,0.24,"목표가 돌파 (1,952 >= 112)",1940.0,-0.6147540983606558,0.0,-0.6147540983606558,1940.0,-0.6147540983606558,0.0,-0.6147540983606558,1942.0,-0.5122950819672131,0.0,-0.6147540983606558,1932.0,-1.0245901639344261,0.0,-1.0245901639344261,10:00:45,1930.0,245,SL,-6383.7935,0,1
|
|
||||||
205,2026-06-05,290690,소룩스,10:00:55,4595.0,4595.0,195.0,4549.05,0.0,5350.0,4960.0,13424635680.0,1303919.0,-5.45,중립,52,높음,1,"[""AI/로봇"", ""우주항공"", ""건설/재건축""]","[""반도체"", ""금융""]","[""454910"", ""011070"", ""051910""]",[],0,0.3491354113731506,0.7819601622060224,2026-06-02T18:36:28,0.8,0.24,"목표가 돌파 (4,595 >= 195)",4630.0,0.7616974972796519,0.7616974972796519,0.0,4625.0,0.6528835690968444,0.7616974972796519,0.0,4615.0,0.4352557127312296,0.7616974972796519,0.0,4595.0,0.0,0.7616974972796519,0.0,10:13:11,4540.0,104,SL,-6712.394,0,1
|
|
||||||
206,2026-06-05,439960,코스모로보틱스,10:13:20,32350.0,32350.0,3550.0,32026.5,0.0,43750.0,36650.0,97240509800.0,6583783.0,11.36,중립,52,높음,1,"[""AI/로봇"", ""우주항공"", ""건설/재건축""]","[""반도체"", ""금융""]","[""454910"", ""011070"", ""051910""]",[],0,0.34360924042427765,0.8451523917392261,2026-06-02T18:36:28,0.8,0.24,"목표가 돌파 (32,350 >= 3,550)",32750.0,1.2364760432766615,1.2364760432766615,0.0,32600.0,0.7727975270479135,1.2364760432766615,0.0,32450.0,0.3091190108191654,1.2364760432766615,0.0,33000.0,2.009273570324575,2.009273570324575,0.0,10:19:48,32000.0,5,SL,-2086.2625,0,1
|
|
||||||
208,2026-06-05,088350,한화생명,10:19:54,4850.0,4850.0,137.5,4801.5,0.0,5050.0,4775.0,26196328000.0,6055425.0,-0.31,중립,52,높음,1,"[""AI/로봇"", ""우주항공"", ""건설/재건축""]","[""반도체"", ""금융""]","[""454910"", ""011070"", ""051910""]",[],0,0.3726991567547378,0.7673860653015449,2026-06-02T18:36:28,0.8,0.24,"목표가 돌파 (4,850 >= 138)",4845.0,-0.10309278350515465,0.0,-0.10309278350515465,4830.0,-0.4123711340206186,0.0,-0.4123711340206186,4825.0,-0.5154639175257731,0.0,-0.5154639175257731,4830.0,-0.4123711340206186,0.0,-0.5154639175257731,11:25:58,4780.0,98,SL,-7844.753,0,1
|
|
||||||
|
|||||||
|
Binary file not shown.
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"created_at": "2026-06-06T12:35:25",
|
"created_at": "2026-06-12T16:01:42",
|
||||||
"input_files": [
|
"input_files": [
|
||||||
"data\\training_dataset.csv",
|
"data\\training_dataset.csv",
|
||||||
"data\\external_training_dataset.csv"
|
"data\\external_training_dataset.csv"
|
||||||
@@ -25,22 +25,22 @@
|
|||||||
],
|
],
|
||||||
"targets": {
|
"targets": {
|
||||||
"label_stop_loss": {
|
"label_stop_loss": {
|
||||||
"rows": 5786,
|
"rows": 16885,
|
||||||
"train_rows": 4339,
|
"train_rows": 12663,
|
||||||
"test_rows": 1447,
|
"test_rows": 4222,
|
||||||
"positive_rows": 1241,
|
"positive_rows": 3469,
|
||||||
"accuracy": 0.7988942639944713,
|
"accuracy": 0.7524869729985789,
|
||||||
"precision": 0.5189620758483033,
|
"precision": 0.4453316953316953,
|
||||||
"roc_auc": 0.8921085482452407
|
"roc_auc": 0.855688199712251
|
||||||
},
|
},
|
||||||
"label_win": {
|
"label_win": {
|
||||||
"rows": 5786,
|
"rows": 16885,
|
||||||
"train_rows": 4339,
|
"train_rows": 12663,
|
||||||
"test_rows": 1447,
|
"test_rows": 4222,
|
||||||
"positive_rows": 2188,
|
"positive_rows": 7093,
|
||||||
"accuracy": 0.635798203178991,
|
"accuracy": 0.6271909047844624,
|
||||||
"precision": 0.511520737327189,
|
"precision": 0.5365230094959824,
|
||||||
"roc_auc": 0.7276183221612837
|
"roc_auc": 0.704072786104295
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,112 @@
|
|||||||
|
# 일간 결산 — 2026-06-08
|
||||||
|
|
||||||
|
## 요약
|
||||||
|
|
||||||
|
| 항목 | 값 |
|
||||||
|
|------|-----|
|
||||||
|
| 총 거래 | 0회 |
|
||||||
|
| 승/패 | 0승 / 0패 |
|
||||||
|
| 승률 | — |
|
||||||
|
| 순손익 | **0원** |
|
||||||
|
| 수수료 | 0원 |
|
||||||
|
| FORCE 청산 | 0건 |
|
||||||
|
|
||||||
|
**완전 무진입일** — KOSPI -6% 폭락 환경에서 전 종목 목표가 미달성, 시스템이 진입을 자제함.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 청산 사유 분포
|
||||||
|
|
||||||
|
없음.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 오늘 시장 상황
|
||||||
|
|
||||||
|
midday_context.json (11:20 생성) 기준:
|
||||||
|
|
||||||
|
- **KOSPI -6% 급락**: 인버스 ETF가 거래량 1~3위 석권
|
||||||
|
- **전 업종 급락**: 피해야 할 섹터에 반도체·전기전자·의약품·철강금속 등 6개 섹터 포함
|
||||||
|
- **Hot sector**: 운수창고 (하락장 방어 성격)
|
||||||
|
- **점심 세션 진입 중단**: lunch_trade_allowed=False, 배율 ×0.3
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 신호 진단
|
||||||
|
|
||||||
|
09:30~10:55 전체 구간 (`신호진단` 로그 기준):
|
||||||
|
|
||||||
|
- 유니버스 21종목 **전 종목 "목표가없음"**
|
||||||
|
- 변동성 돌파 전략은 전일 고가 기반 목표가 돌파를 조건으로 삼음
|
||||||
|
- KOSPI -6% 하락장에서는 대부분 종목이 갭다운 후 목표가 아래에서만 거래 → 유효 신호 없음
|
||||||
|
- **전략이 의도대로 작동한 결과**: 롱 진입 신호 없음 = 손실 없음
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 과매매 평가
|
||||||
|
|
||||||
|
- 0회 거래 — 과매매 없음
|
||||||
|
- 06-05의 SL cascade 12건 (-100,737원) 이후 이틀 연속 무진입
|
||||||
|
- 오늘은 시장 조건 때문에 자연스럽게 무진입, 06-04는 AI trade_allowed=false 설정
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## AI 필터
|
||||||
|
|
||||||
|
- midday_context가 하락장 진단 후 lunch_trade_allowed=False 정확히 설정
|
||||||
|
- 오전 신호 자체가 없어 AI 필터 개입 불필요
|
||||||
|
- 06-05 SL cascade 12건 직후 이틀 무진입 — 시스템 측면에서 자기보호적 결과
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 실행 품질
|
||||||
|
|
||||||
|
| 항목 | 상태 |
|
||||||
|
|------|------|
|
||||||
|
| 봇 기동 | 정상 (09:30 신호진단 시작) |
|
||||||
|
| midday_context 로드 | 정상 (11:20, 위험 판단 반영) |
|
||||||
|
| 강제 청산 (14:50) | 정상 완료 (포지션 없음) |
|
||||||
|
| 결산 (15:10) | 정상 완료 |
|
||||||
|
| 중복 결산 방지 | 정상 동작 (`결산 이미 처리됨: 2026-06-08`) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 30일 누적 현황
|
||||||
|
|
||||||
|
| 지표 | 값 | 기준 | 통과 |
|
||||||
|
|------|-----|------|------|
|
||||||
|
| 운영 거래일 | 13일 | 30일 이상 | ✗ |
|
||||||
|
| 30일 승률 | 41.1% | >48% | ✗ |
|
||||||
|
| MDD | -10.7% | >-10% | ✗ |
|
||||||
|
| Sharpe | -18.34 | >1.0 | ✗ |
|
||||||
|
| L3 발생 | 0회 | ≤2회 | ✓ |
|
||||||
|
|
||||||
|
오늘 0거래이므로 30일 누적 지표 변동 없음.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 실거래 준비도
|
||||||
|
|
||||||
|
**전 항목 미통과 — 실거래 전환 불가.**
|
||||||
|
|
||||||
|
- 운영 기간: 13/30일 (43%)
|
||||||
|
- Sharpe -18.34: 연속 소손실 구조 근본 개선 없이는 해소 불가
|
||||||
|
- 승률 41.1%: 기준 48% 대비 7% 부족
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 오늘 특이사항
|
||||||
|
|
||||||
|
1. **KOSPI -6% 급락**: 역대급 하락 환경에서 전략이 자동으로 무진입 처리 — 올바른 동작
|
||||||
|
2. **06-05 SL cascade 12건 이후 두 번째 무진입**: 연속 무진입이 반드시 나쁜 신호는 아님, 시장이 진입 불가 조건일 때는 쉬는 것이 정상
|
||||||
|
3. **SL cascade 차단 룰 (06-06 적용)**: 오늘은 진입 자체가 없어 cascade 발동 조건 미달 — 작동 검증 기회 없음
|
||||||
|
4. **봇 이중 실행 방지**: lock 파일 정상 유지, 중복 프로세스 없음
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 다음 검토 포인트
|
||||||
|
|
||||||
|
1. **목표가 계산 개선 가능성 검토**: 하락장에서도 일부 반등 종목은 목표가 형성 — 현재 전략은 이를 포착하지 못함 (단, 하락장 롱은 위험하므로 신중)
|
||||||
|
2. **06-05 SL cascade 차단 룰 (threshold=5)**: 다음 활성 거래일에 정상 발동 여부 관찰 필요
|
||||||
|
3. **06-02 제안 (TP2_PCT 2.5%→3.5%)**: 미적용 상태, 검토 대기 중
|
||||||
|
4. **13거래일 승률 41.1%**: 통계 신뢰 기준(30일)까지 17거래일 부족
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
# 일일 결산 — 2026-06-09
|
||||||
|
|
||||||
|
## 시장 요약
|
||||||
|
|
||||||
|
어제(6월 8일) KOSPI -6% 급락 이후 오늘 V자 반등. KOSPI +3.5%, SK하이닉스 레버리지 +15% 이상(젠슨황 방한 모멘텀 실현). 오전 예측과 달리 건설·금융이 반등 주도. 인버스 ETF 대규모 청산 확인. 변동성이 여전히 높은 날이었음.
|
||||||
|
|
||||||
|
- 리스크 레벨(오전): 높음 / 감성 점수: 58 / 포지션 배수: 0.8x → 점심 0.7x
|
||||||
|
- 오전 피해야 할 섹터: 건설, 금융
|
||||||
|
- 점심 피해야 할 섹터 변경: 기계, 운수창고, 2차전지
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 거래 결과
|
||||||
|
|
||||||
|
| 종목 | 진입 시간 | 청산 시간 | 진입가 | 청산가 | 수량 | 청산 이유 | 순손익 | 수수료 |
|
||||||
|
|---|---|---|---|---|---|---|---|---|
|
||||||
|
| 흥아해운(003280) | 09:20:20 | 09:34:51 | 1,884 | 1,923 | 594 | TP1 | +20,771원 | 2,395원 |
|
||||||
|
| 흥아해운(003280) | 09:20:20 | 10:24:47 | 1,884 | 1,864 | 255 | SL | -6,099원 | 999원 |
|
||||||
|
| 대한광통신(010170) | 09:21:04 | 09:21:25 | 19,640 | 19,430 | 81 | SL | -20,318원 | 3,308원 |
|
||||||
|
|
||||||
|
### 집계
|
||||||
|
|
||||||
|
| 항목 | 값 |
|
||||||
|
|---|---|
|
||||||
|
| 총 거래 | 3건 |
|
||||||
|
| 승/패 | 1승 2패 |
|
||||||
|
| 승률 | 33.3% |
|
||||||
|
| 순손익 | **-5,646원** |
|
||||||
|
| 총 수수료 | 6,702원 |
|
||||||
|
| 청산 분포 | SL 2 / TP1 1 / TIME 0 / FORCE 0 |
|
||||||
|
| AI 부스트 진입 | 0건 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 분석
|
||||||
|
|
||||||
|
### 1. 거래 품질
|
||||||
|
|
||||||
|
**흥아해운 분할 매매**: 동일 진입 시간(09:20:20)에 255주(SL 로트)와 594주(TP1 로트) 두 건이 기록됨 — 분할 진입 메커니즘이 동작한 것으로 추정. TP1 로트(+20,771원)가 SL 로트(-6,099원)를 만회해 종목 기준 +14,672원 순익. 어제 급락 이후 반등 수혜 정상 포착.
|
||||||
|
|
||||||
|
**대한광통신 즉시 SL (21초)**: 09:21:04 진입 → 09:21:25 청산(21초). 진입가 19,640 → 청산가 19,430, -1.07% 급하락. 손실 -20,318원으로 오늘 최대 단일 손실. 어제 급락 후 갭 복구 시도 중 진입했을 가능성이 높으며, 변동성이 큰 날 가격 확인 전 진입의 위험성을 보여주는 사례. 단일 사례이므로 전략 변경 근거로는 부족하나 지속 모니터링 필요.
|
||||||
|
|
||||||
|
### 2. 오버트레이딩
|
||||||
|
|
||||||
|
3건은 과하지 않음. 단, SL 2건 중 대한광통신이 21초 만에 청산된 것은 진입 조건 재검토 신호.
|
||||||
|
|
||||||
|
### 3. AI 필터
|
||||||
|
|
||||||
|
- 오전 부스트 티커: 090460, 036170 → 실제 진입 종목과 불일치 (두 종목 모두 진입 없음)
|
||||||
|
- 전체 거래 ai_boosted = 0 → AI 필터가 오늘 진입 결정에 기여하지 않음
|
||||||
|
- 모델 관찰용으로 운용 중이므로 정상 동작
|
||||||
|
|
||||||
|
### 4. 청산 품질
|
||||||
|
|
||||||
|
- FORCE 청산 0건 — 포지션이 장 마감 전 모두 정리됨. 양호.
|
||||||
|
- 14:00 이후 진입 차단 로그 정상 동작 확인.
|
||||||
|
|
||||||
|
### 5. 시스템 이슈
|
||||||
|
|
||||||
|
- **15:10 봇 재시작 감지(수정 완료)**: 로그에서 결산(15:10:01) 직후 watchdog이 종료된 봇을 재시작함(15:10:04). 이후 KIS API "초당 거래건수 초과" 오류 발생. 원인은 watchdog 감시 조건이 `15:10`을 포함한 것이며, `scripts/_watchdog.py`, `scripts/run_watchdog.ps1`, `scripts/setup_scheduler.ps1`을 수정해 watchdog을 09:00-15:05로 제한했다.
|
||||||
|
- **점심 섹터 변경**: 오전 어보이드(건설, 금융) → 점심 어보이드(기계, 운수창고, 2차전지). 흥아해운(해운업/운수창고)은 오전 진입이므로 룰 위반 없음. 그러나 점심 이후 해당 종목 재진입 시 차단이 정상 작동했는지 확인 필요.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 전략 제안
|
||||||
|
|
||||||
|
오늘 하루 3건, 단일 사례 부족으로 전략 파라미터 변경 근거 없음. 모니터링 포인트:
|
||||||
|
|
||||||
|
- 고변동성 장(전일 급락 이후)에서 즉시 SL 패턴 축적 시 진입 조건 강화 검토
|
||||||
|
- 점심 섹터 어보이드 동적 변경과 기존 포지션 관계 정리
|
||||||
|
|
||||||
|
→ 현시점 별도 제안서 작성 없음.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 라이브 현금 준비도
|
||||||
|
|
||||||
|
| 항목 | 기준 | 현재 | 결과 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 누적 운영 거래일 | 30일 이상 | 1일 | FAIL |
|
||||||
|
| 승률(30일) | > 48% | 33.3% | FAIL |
|
||||||
|
| MDD | > -10% | -0.1% | PASS |
|
||||||
|
| 샤프 비율 | > 1.0 | 0.00 | FAIL |
|
||||||
|
| L3 월 발동 | ≤ 2회 | 0회 | PASS |
|
||||||
|
|
||||||
|
**라이브 준비 미충족** — 데이터 축적 단계.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 다음 체크 포인트
|
||||||
|
|
||||||
|
- 대한광통신 형태(고변동성 즉시 SL) 재발 시 진입 슬리피지/변동성 필터 강화 검토
|
||||||
|
- 2026-06-10 15:10에 watchdog이 결산 직후 봇을 재시작하지 않는지 확인
|
||||||
|
- KIS API 초당 거래건수 초과 오류 빈도 모니터링
|
||||||
@@ -0,0 +1,124 @@
|
|||||||
|
# 일일 결산 — 2026-06-10
|
||||||
|
|
||||||
|
## 핵심 지표
|
||||||
|
|
||||||
|
| 항목 | 값 |
|
||||||
|
|---|---|
|
||||||
|
| 총 거래 | 6건 (2 티커) |
|
||||||
|
| 승/패 | 4승 2패 |
|
||||||
|
| 승률 | 66.7% |
|
||||||
|
| 순손익 | **+45,606원** |
|
||||||
|
| 수수료 | 11,534원 |
|
||||||
|
| 총손익(수수료 전) | +57,140원 |
|
||||||
|
|
||||||
|
## 청산 사유 분포
|
||||||
|
|
||||||
|
| 사유 | 건수 | 비율 |
|
||||||
|
|---|---|---|
|
||||||
|
| TP2 | 2 | 33.3% |
|
||||||
|
| TP1 | 2 | 33.3% |
|
||||||
|
| SL | 2 | 33.3% |
|
||||||
|
| TIME | 0 | — |
|
||||||
|
| FORCE | 0 | — |
|
||||||
|
|
||||||
|
TP 청산 비율 66.7%, FORCE/TIME 0%. 강제청산 없이 깔끔하게 마감.
|
||||||
|
|
||||||
|
## 거래 내역
|
||||||
|
|
||||||
|
### 라이콤 (388790) — +34,632원
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| TP1 | 09:20:31 | 09:21:05 (34초) | 8,750 → 8,950 | 127주 | +23,017원 |
|
||||||
|
| TP2 | 09:20:31 | 09:21:24 (53초) | 8,750 → 8,980 | 55주 | +11,615원 |
|
||||||
|
|
||||||
|
- 장 시작 20분 만에 진입, 1분 이내 TP1·TP2 모두 도달. 완벽 실행.
|
||||||
|
- AI 부스트 없음. 전략 자체 신호만으로 진입.
|
||||||
|
|
||||||
|
### 광전자 (017900) — +40,340원
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| TP1 | 09:46:00 | 09:48:30 (2분 30초) | 9,860 → 10,100 | 113주 | +24,727원 |
|
||||||
|
| TP2 | 09:46:00 | 09:48:46 (2분 46초) | 9,860 → 10,200 | 49주 | +15,613원 |
|
||||||
|
|
||||||
|
- 2분 46초 만에 TP2 청산. 빠른 돌파 종목.
|
||||||
|
- AI 부스트 없음.
|
||||||
|
|
||||||
|
### 씨아이에스 (222080) — -20,264원
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| SL | 10:32:43 | 11:02:32 (30분) | 10,380 → 10,270 | 154주 | -20,264원 |
|
||||||
|
|
||||||
|
- 진입 후 30분 버티다가 SL 발동. -1.06% 손실.
|
||||||
|
- 오후 신호 진단에서 SL 재진입 차단 정상 동작 확인.
|
||||||
|
|
||||||
|
### 대우건설 (047040) — -9,102원
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| SL | 11:21:27 | 12:41:15 (80분) | 21,000 → 20,750 | 31주 | -9,102원 |
|
||||||
|
|
||||||
|
- MAX_HOLD_MIN=90 내에 SL 발동. -1.19% 손실.
|
||||||
|
- 수량(31주)이 소량으로, 손실 영향이 제한적.
|
||||||
|
- 오후 신호 진단에서 SL 재진입 차단 정상 동작 확인.
|
||||||
|
|
||||||
|
## 과매매 점검
|
||||||
|
|
||||||
|
- 6건 / 2 티커 — 정상 범위.
|
||||||
|
- 동일 티커 2회(TP1+TP2 분할) 진입은 전략 설계에 따른 것으로 과매매 아님.
|
||||||
|
- 연속 SL: 씨아이에스(10:32) → 대우건설(11:21). 연속 2회지만 L3-B 발동 수준은 아님.
|
||||||
|
|
||||||
|
## AI 필터 품질
|
||||||
|
|
||||||
|
- 오늘 전 거래 `ai_boosted = 0`. AI 모델은 관찰 모드만.
|
||||||
|
- 학습 데이터는 아직 대부분 외부 분봉 기반 후보 행이며, 실제 봇 거래 표본은 부족해 AI 판단 의존은 아직 부적절.
|
||||||
|
- 오후 신호 진단: 목표가 미달 종목 다수, SL 차단 2종, TP 재진입 차단 2종 — 필터링 정상.
|
||||||
|
|
||||||
|
## 실행 품질
|
||||||
|
|
||||||
|
- 제로 가격 행 없음, 가격 불일치 없음.
|
||||||
|
- 라이콤/광전자 진입 후 초단시간 TP 달성 — 변동성 돌파 로직 정상.
|
||||||
|
- KIS 율한도 초과 경고가 장중 여러 차례 발생: `ENTRY price retry 1/4` 로그 확인.
|
||||||
|
- retry 후 정상 재개. 치명적 장애 아님.
|
||||||
|
- 장 마감 후 KISClient 기본 조회 간격 확대 및 rate-limit 전역 쿨다운 추가.
|
||||||
|
- 14:00 이후 ENTRY 차단 정상 동작 확인.
|
||||||
|
- 14:50 강제 청산 시작 → 완료 정상 (미청산 포지션 없음).
|
||||||
|
- 결산 중복 처리 방어 정상: `결산 이미 처리됨: 2026-06-10` 로그 확인.
|
||||||
|
|
||||||
|
## 운영 이슈
|
||||||
|
|
||||||
|
### KIS 율한도 초과 (경미)
|
||||||
|
- 가격 조회 시 `초당 거래건수를 초과하였습니다`가 여러 차례 발생.
|
||||||
|
- 현행 retry 로직으로 자동 복구됨.
|
||||||
|
- 오후 감시 루프에서 다수 종목 순차 조회 시 빈도 집중 가능성.
|
||||||
|
- 2026-06-10 장 마감 후 `app/execution/kis_client.py`에서 기본 조회 간격을 보수화하고 rate-limit 응답 후 전역 쿨다운을 추가함.
|
||||||
|
|
||||||
|
## 30일 누적 지표 (2거래일)
|
||||||
|
|
||||||
|
| 지표 | 값 | 기준 | 판정 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 누적 운영일 | 2일 | 30일 | FAIL |
|
||||||
|
| 승률 | 55.6% | >48% | PASS |
|
||||||
|
| MDD | -0.1% | >-10% | PASS |
|
||||||
|
| Sharpe | 12.38 | >1.0 | PASS |
|
||||||
|
| L3 발동 | 0회 | ≤2/월 | PASS |
|
||||||
|
|
||||||
|
**라이브 준비: 미완료** — 운영 일수 부족 (2/30일).
|
||||||
|
|
||||||
|
## 전략 제안
|
||||||
|
|
||||||
|
오늘 결과로는 전략 변경 근거 없음.
|
||||||
|
|
||||||
|
- TP1/TP2 분할 청산 구조가 오전 두 거래에서 최대 수익 포착.
|
||||||
|
- SL 2건은 모두 정상 범위 내 발동. 손실 과다 없음.
|
||||||
|
- 샘플 수 부족(누적 9거래)으로 파라미터 최적화 시도는 시기상조.
|
||||||
|
|
||||||
|
별도 제안서 미작성.
|
||||||
|
|
||||||
|
## 다음 체크사항
|
||||||
|
|
||||||
|
- 2026-06-11에 KIS 율한도 초과 빈도가 줄었는지 확인.
|
||||||
|
- 대우건설 80분 보유 후 SL: `MAX_HOLD_MIN=90` 경계에 근접. 현행 유지.
|
||||||
|
- 운영 데이터 누적 지속. 30거래일 도달 시 라이브 준비 재점검.
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
# 일일 결산 — 2026-06-11
|
||||||
|
|
||||||
|
## 핵심 지표
|
||||||
|
|
||||||
|
| 항목 | 값 |
|
||||||
|
|---|---|
|
||||||
|
| 총 거래 | 0건 |
|
||||||
|
| 승/패 | — |
|
||||||
|
| 승률 | — |
|
||||||
|
| 순손익 | **0원** |
|
||||||
|
| 수수료 | 0원 |
|
||||||
|
|
||||||
|
완전 무진입일. 6월 들어 두 번째 무진입 (6/8에 이어).
|
||||||
|
|
||||||
|
## 무진입 원인
|
||||||
|
|
||||||
|
### 1. AI 블랙리스트 — 매크로 쇼크 차단
|
||||||
|
|
||||||
|
오전 9:27부터 감시 로그 전반에서 다음 사유로 거래 차단:
|
||||||
|
|
||||||
|
> **미·이란 군사충돌 발발 + 미 CPI 4.2%(37개월 최대) + 코스피 변동성 쇼크**
|
||||||
|
|
||||||
|
차단 적용 종목 (로그 확인):
|
||||||
|
|
||||||
|
| 종목 | 설명 |
|
||||||
|
|---|---|
|
||||||
|
| 이수화학 (005950) | 9:27부터 종일 차단. 장중 13,540–13,950, 목표가 13,060 상회했으나 블랙리스트로 진입 불가 |
|
||||||
|
| 대한광통신 (010170) | 간헐적 차단 — 9:27, 9:32 등. 일부 시간대에 차단 해제 후 재차단 반복 |
|
||||||
|
| 디아이씨 (092200) | 9:32, 10:35 등 반복 차단 |
|
||||||
|
| 에치에프알 (230240) | 10:35에 단회 차단 후 해제 |
|
||||||
|
|
||||||
|
**이수화학 특이사항:** 목표가(13,060)보다 현재가(13,540–13,950)가 높았음에도 AI 블랙리스트가 진입을 차단했다. 변동성 쇼크 국면에서 역방향 급락 리스크를 선제 차단한 것으로 판단 — 올바른 동작.
|
||||||
|
|
||||||
|
### 2. 전종목 목표가 미달
|
||||||
|
|
||||||
|
AI 블랙리스트 미적용 종목들도 전부 목표가에 미달. 특히 근접 미달 사례:
|
||||||
|
|
||||||
|
| 종목 | 현재가(최고) | 목표가 | 도달률 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| HPSP (403870) | 54,600 | 54,725 | 99.8% |
|
||||||
|
| 에치에프알 (230240) | 24,600 | 25,025 | 98.3% |
|
||||||
|
| 신성이엔지 (011930) | 20,200 | 20,640 | 97.9% |
|
||||||
|
| SK증권 (001510) | 2,840 | 2,848 | 99.7% |
|
||||||
|
| 삼성중공업 (010140) | 25,200 | 26,050 | 96.7% |
|
||||||
|
|
||||||
|
변동성이 전반적으로 낮아 돌파 신호 발생 조건이 충족되지 않은 날.
|
||||||
|
|
||||||
|
### 3. 점심 세션 진입 중단
|
||||||
|
|
||||||
|
11:20 `midday_context.json` 로드 후 `진입허용: False` 설정 확인. 포지션 배율 ×0.5 설정도 정상 적용. (오전에 이미 진입이 없었으므로 실질적 영향은 없음.)
|
||||||
|
|
||||||
|
## 청산 사유 분포
|
||||||
|
|
||||||
|
거래 없음 — 해당 없음.
|
||||||
|
|
||||||
|
## 과매매 점검
|
||||||
|
|
||||||
|
거래 없음. 연속 SL 없음. L3-B 미발동.
|
||||||
|
|
||||||
|
## AI 필터 품질
|
||||||
|
|
||||||
|
- 블랙리스트 차단이 매크로 고위험 날에 전종목 적용되어 보호 역할 수행.
|
||||||
|
- 이수화학처럼 목표가를 상회한 종목도 블랙리스트로 차단 — 단기 과잉 차단의 가능성은 있으나 변동성 쇼크 국면에서는 보수적 판단이 타당.
|
||||||
|
- AI 모델 관찰 모드 유지 (실거래 표본 9건으로 신뢰도 부족).
|
||||||
|
|
||||||
|
## 실행 품질
|
||||||
|
|
||||||
|
- 봇 정상 가동 확인 (9:27 첫 신호 진단 로그 ~ 15:10 결산 로그).
|
||||||
|
- 14:50 강제 청산 실행: 포지션 없어 무처리 정상.
|
||||||
|
- 15:10 결산: 0건 / 0원 정상 출력.
|
||||||
|
- 결산 중복 방어: `결산 이미 처리됨: 2026-06-11` 정상 동작.
|
||||||
|
- 전날 체크사항(KIS 율한도 초과 빈도): 오늘 거래 없어 직접 확인 불가. 다음 유의미한 거래일에 재확인 필요.
|
||||||
|
|
||||||
|
## 시장 컨텍스트
|
||||||
|
|
||||||
|
| 이슈 | 내용 |
|
||||||
|
|---|---|
|
||||||
|
| 지정학 | 미·이란 군사충돌 발발 |
|
||||||
|
| 인플레이션 | 미 CPI 4.2% — 37개월 최대 |
|
||||||
|
| 증시 | 코스피 변동성 쇼크 |
|
||||||
|
|
||||||
|
이 조합은 단기 방향성 불확실성이 매우 높은 국면으로, 모멘텀 돌파 전략이 작동하기 어려운 환경. 목표가 미달 + AI 블랙리스트 이중 방어가 정상 작동했고, 자본 손실 없이 하루를 넘긴 것은 전략적으로 올바른 결과.
|
||||||
|
|
||||||
|
## 30일 누적 지표 (3거래일)
|
||||||
|
|
||||||
|
| 지표 | 값 | 기준 | 판정 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 누적 운영일 | 3일 | 30일 | FAIL |
|
||||||
|
| 승률 | 55.6% | >48% | PASS |
|
||||||
|
| MDD | -0.1% | >-10% | PASS |
|
||||||
|
| Sharpe | 9.22 | >1.0 | PASS |
|
||||||
|
| L3 발동 | 0회 | ≤2/월 | PASS |
|
||||||
|
|
||||||
|
**라이브 준비: 미완료** — 운영 일수 부족 (3/30일).
|
||||||
|
|
||||||
|
## 전략 제안
|
||||||
|
|
||||||
|
전략 변경 근거 없음. 제안서 미작성.
|
||||||
|
|
||||||
|
- 무진입일 자체는 전략 결함이 아님. 고변동성 날에 자본 보전이 기본 방어 목표.
|
||||||
|
- 목표가 근접 미달 패턴(99.7–96.7% 도달)은 관찰이 필요하나 표본 1일로 판단 불가.
|
||||||
|
- 누적 실거래 9건 — 어떤 파라미터 변경도 근거 불충분.
|
||||||
|
|
||||||
|
## 다음 체크사항
|
||||||
|
|
||||||
|
- 다음 거래일에 KIS 율한도 초과 빈도 재확인 (6/10 픽스 이후 첫 유의미한 거래일).
|
||||||
|
- 미·이란 / 미 CPI 이슈가 지속될 경우 AI 블랙리스트가 며칠 연속 전종목 차단할 수 있음 — 단순 무진입과 구분하여 모니터링.
|
||||||
|
- 운영 데이터 누적 지속. 30거래일 도달 시 라이브 준비 재점검.
|
||||||
@@ -0,0 +1,150 @@
|
|||||||
|
# 일일 결산 — 2026-06-12
|
||||||
|
|
||||||
|
## 핵심 지표
|
||||||
|
|
||||||
|
| 항목 | 값 |
|
||||||
|
|---|---|
|
||||||
|
| 총 거래 | 7건 (5 티커) |
|
||||||
|
| 승/패 | 4승 3패 |
|
||||||
|
| 승률 | 57.1% |
|
||||||
|
| 순손익 | **-25,678원** |
|
||||||
|
| 수수료 | 26,158원 |
|
||||||
|
| 총손익(수수료 전) | +482원 |
|
||||||
|
|
||||||
|
## 청산 사유 분포
|
||||||
|
|
||||||
|
| 사유 | 건수 | 비율 |
|
||||||
|
|---|---|---|
|
||||||
|
| TP2 | 2 | 28.6% |
|
||||||
|
| TP1 | 2 | 28.6% |
|
||||||
|
| SL | 3 | 42.9% |
|
||||||
|
| TIME | 0 | — |
|
||||||
|
| FORCE | 0 | — |
|
||||||
|
|
||||||
|
TP 청산 비율 57.1%, SL 비율 42.9%. 강제청산 없음.
|
||||||
|
|
||||||
|
## 거래 내역
|
||||||
|
|
||||||
|
### 케이뱅크 (279570) — +59,035원
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| TP1 | 09:20:23 | 09:55:58 (35분) | 6,470 → 6,610 | 280주 | +35,319원 |
|
||||||
|
| TP2 | 09:20:23 | 09:56:29 (36분) | 6,470 → 6,680 | 121주 | +23,716원 |
|
||||||
|
|
||||||
|
- TP1·TP2 모두 정상 달성. 35분 보유.
|
||||||
|
- AI 부스트 없음.
|
||||||
|
|
||||||
|
### SK네트웍스 (001740) — +54,631원
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| TP1 | 09:20:45 | 09:27:13 (6분) | 13,220 → 13,500 | 137주 | +34,482원 |
|
||||||
|
| TP2 | 09:20:45 | 09:28:07 (7분) | 13,220 → 13,590 | 59주 | +20,149원 |
|
||||||
|
|
||||||
|
- 7분 만에 TP1·TP2 완료. 오전 단기 돌파 최적 실행.
|
||||||
|
- AI 부스트 없음.
|
||||||
|
|
||||||
|
### 팬오션 (028670) — -44,497원
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| SL | 09:28:48 | 09:39:11 (10분) | 5,310 → 5,230 | 489주 | -44,497원 |
|
||||||
|
|
||||||
|
- 진입 10분 후 SL. -1.51% 하락.
|
||||||
|
- 489주 대량 포지션 → 손실 규모 확대.
|
||||||
|
|
||||||
|
### 삼표시멘트 (038500) — -33,152원
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| SL | 09:39:31 | 09:44:40 (5분) | 12,340 → 12,140 | 147주 | -33,152원 |
|
||||||
|
|
||||||
|
- 팬오션 SL 직후 연속 진입, 5분 만에 SL. -1.62% 하락.
|
||||||
|
- 연속 SL 2번째 (L3-B 미발동, 임계값 미도달).
|
||||||
|
|
||||||
|
### 미래에셋생명 (085620) — -61,697원
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| SL | 12:29:48 | 12:31:36 (2분) | 30,750 → 30,150 | 93주 | -61,697원 |
|
||||||
|
|
||||||
|
- **오늘 최대 단일 손실.** 점심 시간대 진입, 2분 만에 SL 발동.
|
||||||
|
- 진입 60초 시점 mae=-1.14%로 이미 빠르게 하락.
|
||||||
|
- 주가 단기 낙폭(-1.95%)이 크고 SL이 즉각 발동.
|
||||||
|
- 93주 × 30,750원 ≈ 285만원 포지션 대비 손실 2.16% 실효.
|
||||||
|
|
||||||
|
## 과매매 점검
|
||||||
|
|
||||||
|
- 7건 / 5 티커 — 동일 티커 TP1+TP2 분할 포함 시 5회 진입. 정상 범위.
|
||||||
|
- 연속 SL: 팬오션(09:39) → 삼표시멘트(09:44) → 미래에셋생명(12:31). 총 3회지만
|
||||||
|
SL_CASCADE_HALT_THRESHOLD=5 (60분 내) 미도달.
|
||||||
|
- 14:00 이후 ENTRY 차단 정상. 신규 진입 없음.
|
||||||
|
|
||||||
|
## AI 필터 품질
|
||||||
|
|
||||||
|
- 전 거래 `ai_boosted = 0`. AI 모델 관찰 전용 모드 유지.
|
||||||
|
- 오후 신호 진단: 팬오션·삼표시멘트·미래에셋생명 SL차단 정상 작동.
|
||||||
|
케이뱅크·SK네트웍스 TP 당일 재진입 차단 정상 작동.
|
||||||
|
- 블랙리스트/부스트 기능이 오늘 거래에 영향 없음.
|
||||||
|
|
||||||
|
## 실행 품질
|
||||||
|
|
||||||
|
- 제로 가격 행 없음. 가격 불일치 없음.
|
||||||
|
- 오전 두 티커(케이뱅크·SK네트웍스) TP1+TP2 완전 청산 — 변동성 돌파 로직 정상.
|
||||||
|
- 14:50 강제 청산 실행 → 미청산 포지션 없음.
|
||||||
|
- 결산 중복 처리 방어 정상: `결산 이미 처리됨: 2026-06-12` 로그 확인.
|
||||||
|
|
||||||
|
## 손익비 분석
|
||||||
|
|
||||||
|
| 구분 | 건수 | 합산 손익 | 건당 평균 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 승리 (TP) | 4 | +113,666원 | +28,417원 |
|
||||||
|
| 패배 (SL) | 3 | -139,346원 | -46,449원 |
|
||||||
|
|
||||||
|
- 오늘 손익비(R:R) ≈ 0.61. 승률 57.1%에도 불구하고 순손실 발생.
|
||||||
|
- 미래에셋생명 1건(-61,697원)이 전체 수익(+113,666원)의 54%에 달하는 손실.
|
||||||
|
- 팬오션 대량 포지션(489주)도 손실 기여.
|
||||||
|
|
||||||
|
## 운영 이슈 분석
|
||||||
|
|
||||||
|
### 점심 시간대 단기 SL (미래에셋생명)
|
||||||
|
- 12:29 진입은 미드데이 컨텍스트 로드 이후 구간.
|
||||||
|
- Post-entry t=60s mae=-1.14%, t=180s mae=-1.38% — 진입 즉시 역방향 이동.
|
||||||
|
- 점심 시간대는 거래량이 줄어 단기 변동성이 높아질 수 있음.
|
||||||
|
- **관찰 사항**: 12:00~14:00 구간 진입 시 SL 발생 빈도 지속 모니터링 권장.
|
||||||
|
현재 샘플(16거래) 부족으로 파라미터 변경 근거 없음.
|
||||||
|
|
||||||
|
### 연속 SL 패턴
|
||||||
|
- 팬오션(09:39) → 삼표시멘트(09:44): 5분 간격 연속 SL.
|
||||||
|
- 두 번째 SL 발동 후에도 신규 진입이 이루어짐 (미래에셋생명 12:29).
|
||||||
|
- L3-B 발동 기준(연속 3회 이상)에 아직 미도달. 현행 유지.
|
||||||
|
|
||||||
|
## 30일 누적 지표 (4거래일)
|
||||||
|
|
||||||
|
| 지표 | 값 | 기준 | 판정 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 누적 운영일 | 4일 | 30일 | FAIL |
|
||||||
|
| 승률 | 56.2% | >48% | PASS |
|
||||||
|
| MDD | -0.3% | >-10% | PASS |
|
||||||
|
| Sharpe | 2.17 | >1.0 | PASS |
|
||||||
|
| L3 발동 | 0회 | ≤2/월 | PASS |
|
||||||
|
|
||||||
|
**라이브 준비: 미완료** — 운영 일수 부족 (4/30일). 나머지 4개 지표 모두 기준 충족.
|
||||||
|
|
||||||
|
## 전략 제안
|
||||||
|
|
||||||
|
오늘 결과로는 전략 변경 근거 없음.
|
||||||
|
|
||||||
|
- 오전 모멘텀 두 거래(케이뱅크·SK네트웍스) 완벽 실행. 전략 핵심 로직 정상.
|
||||||
|
- SL 3건은 모두 정상 발동. 개별 손실이 크지만 리스크 제어 기전 작동.
|
||||||
|
- 미래에셋생명 점심 시간대 신속 SL은 개별 이벤트로 판단. 반복 시 `ENTRY_END_MORNING` 적용 검토 가능하나 현재 샘플 1건으로 근거 불충분.
|
||||||
|
- 팬오션 대량 포지션(489주)이 손실을 키운 점: 포지션 사이징 파라미터 검토 가능하나 역시 누적 데이터 필요.
|
||||||
|
|
||||||
|
별도 제안서 미작성.
|
||||||
|
|
||||||
|
## 다음 체크사항
|
||||||
|
|
||||||
|
- 점심 시간대(12:00~14:00) SL 비율을 향후 데이터 누적 후 확인.
|
||||||
|
- 연속 SL 이후 익일 첫 진입에서 L3-B 승수가 정상 적용되는지 확인.
|
||||||
|
- 운영 데이터 누적 지속. 30거래일 도달 시 라이브 준비 재점검.
|
||||||
@@ -0,0 +1,159 @@
|
|||||||
|
# 일일 결산 — 2026-06-15
|
||||||
|
|
||||||
|
## 핵심 지표
|
||||||
|
|
||||||
|
| 항목 | 값 |
|
||||||
|
|---|---|
|
||||||
|
| 총 거래 | 9건 (5 티커) |
|
||||||
|
| 승/패 | 6승 3패 |
|
||||||
|
| 승률 | 66.7% |
|
||||||
|
| 순손익 | **+88,648원** |
|
||||||
|
| 수수료 | 27,357원 |
|
||||||
|
| 총손익(수수료 전) | +116,005원 |
|
||||||
|
|
||||||
|
## 청산 사유 분포
|
||||||
|
|
||||||
|
| 사유 | 건수 | 비율 |
|
||||||
|
|---|---|---|
|
||||||
|
| TP1 | 3 | 33.3% |
|
||||||
|
| TP2 | 3 | 33.3% |
|
||||||
|
| TIME | 2 | 22.2% |
|
||||||
|
| SL | 1 | 11.1% |
|
||||||
|
| FORCE | 0 | — |
|
||||||
|
|
||||||
|
TP 청산 비율 66.7%, SL 비율 11.1%. 강제청산 없음.
|
||||||
|
|
||||||
|
## 거래 내역
|
||||||
|
|
||||||
|
### HL만도 (204320) — +56,291원
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| TP1 | 09:20:27 | 09:22:28 (2분) | 66,000 → 67,400 | 25주 | +31,467원 |
|
||||||
|
| TP2 | 09:20:27 | 09:25:18 (5분) | 66,000 → 68,400 | 11주 | +24,824원 |
|
||||||
|
|
||||||
|
- 2~5분 안에 TP1·TP2 완료. 오전 첫 돌파 가장 빠른 실행.
|
||||||
|
- AI 부스트 없음.
|
||||||
|
|
||||||
|
### 삼성전자 (005930) — -21,681원 ⚠️
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| TIME | 09:20:46 | 10:51:30 (91분) | 340,000 → 338,000 | 8주 | -21,681원 |
|
||||||
|
|
||||||
|
- **AI 부스트 적용**. 91분 보유 후 TIME 청산.
|
||||||
|
- 목표가 334,000 — 진입가 340,000 **보다 낮음**. 진입 시점부터 TP 달성 불가 구조.
|
||||||
|
- 아침 변동성 돌파 목표가가 갭업 진입가를 밑돌았으나 진입 차단 로직 없어 통과.
|
||||||
|
|
||||||
|
### HMM (011200) — +47,997원
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| TP1 | 09:44:06 | 10:12:59 (29분) | 21,175 → 21,600 | 79주 | +29,997원 |
|
||||||
|
| TP2 | 09:44:06 | 10:14:27 (30분) | 21,175 → 21,750 | 34주 | +18,000원 |
|
||||||
|
|
||||||
|
- 30분 내 TP1·TP2 달성. 안정적 돌파 패턴.
|
||||||
|
- AI 부스트 없음.
|
||||||
|
|
||||||
|
### HPSP (403870) — +49,100원
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| TP1 | 10:18:15 | 10:25:07 (7분) | 75,950 → 77,600 | 21주 | +31,233원 |
|
||||||
|
| TP2 | 10:18:15 | 10:26:31 (8분) | 75,950 → 77,900 | 10주 | +17,867원 |
|
||||||
|
|
||||||
|
- 7~8분 만에 TP1·TP2 완료. HMM과 함께 오전 중반 최고 수익 거래.
|
||||||
|
- AI 부스트 없음.
|
||||||
|
|
||||||
|
### 에이팩트 (200470) — -41,636원
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| SL | 10:35:15 | 10:38:48 (3분) | 12,430 → 12,240 | 193주 | -41,636원 |
|
||||||
|
|
||||||
|
- 진입 3분 만에 SL. -1.53% 하락.
|
||||||
|
- 193주 포지션 → 손실 규모 큼.
|
||||||
|
- 오늘 유일한 SL. SL차단 이후 당일 재진입 차단 정상 작동.
|
||||||
|
|
||||||
|
### 삼성전자 (005930) 2차 — -1,422원 ⚠️
|
||||||
|
|
||||||
|
| 구분 | 진입 | 청산 | 가격 | 수량 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| TIME | 11:51:54 | 13:22:28 (90분) | 338,500 → 338,500 | 2주 | -1,422원 |
|
||||||
|
|
||||||
|
- **AI 부스트 적용**. 1차 TIME 청산(10:51) 후 60분 쿨다운 소진 후 재진입.
|
||||||
|
- 목표가 334,000 — 진입가 338,500보다 낮음. 재진입도 TP 달성 불가 구조.
|
||||||
|
- 손익은 수수료만(-1,422원). 90분 보유 후 TIME 청산.
|
||||||
|
|
||||||
|
## 손익비 분석
|
||||||
|
|
||||||
|
| 구분 | 건수 | 합산 손익 | 건당 평균 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 승리 (TP) | 6 | +153,388원 | +25,565원 |
|
||||||
|
| 패배 (TIME+SL) | 3 | -64,739원 | -21,580원 |
|
||||||
|
|
||||||
|
- R:R ≈ **1.18**. 승률 66.7% × 양의 R:R = 드라이런 최고 성과일.
|
||||||
|
- 삼성전자 2건(-23,103원)이 없었다면 순손익 +111,751원.
|
||||||
|
|
||||||
|
## 과매매 점검
|
||||||
|
|
||||||
|
- 9건 / 5 티커. TP1+TP2 분할 포함 시 5회 진입. 정상 범위.
|
||||||
|
- SL 연속 없음. 에이팩트 SL 1건 후 신규 진입은 없었음 (SL차단 적용).
|
||||||
|
삼성전자 2차는 에이팩트 SL과 무관한 별도 쿨다운 만료 진입.
|
||||||
|
- 14:00 이후 진입 없음. 강제청산 대상 없음.
|
||||||
|
|
||||||
|
## AI 필터 품질
|
||||||
|
|
||||||
|
- 삼성전자 양쪽 모두 `ai_boosted = 1`. 두 거래 모두 TIME 손실(-23,103원 합산).
|
||||||
|
AI 부스트가 오히려 수익성 낮은 종목 진입을 유발한 패턴.
|
||||||
|
- HL만도·HMM·HPSP·에이팩트 — `ai_boosted = 0`. 수익 +153,388원 / 손실 -41,636원.
|
||||||
|
- 오늘 기준: AI 미부스트 거래가 부스트 거래보다 수익 우위.
|
||||||
|
**관찰**: AI 부스트 종목 누적 손익 추적 지속 권장. 현재 샘플 미미.
|
||||||
|
- SL차단(에이팩트), TP 당일 재진입 차단(HL만도·HMM·HPSP) 모두 정상 작동.
|
||||||
|
|
||||||
|
## 실행 품질
|
||||||
|
|
||||||
|
- 제로 가격 행 없음. 가격 불일치 없음.
|
||||||
|
- TP1+TP2 3쌍(HL만도·HMM·HPSP) 완전 청산 — 변동성 돌파 로직 정상.
|
||||||
|
- 14:50 강제 청산 실행 → 미청산 포지션 없음 (강제청산 전 전 포지션 이미 청산).
|
||||||
|
- 결산 중복 처리 방어 정상: `결산 이미 처리됨: 2026-06-15` 로그 확인.
|
||||||
|
- KIS 타임아웃: 라이콤(388790) 12:30 2회 재시도, 현대건설(000720) 12:57 1회 재시도.
|
||||||
|
모두 정상 복구. 실거래 영향 없음.
|
||||||
|
|
||||||
|
## 구조 이슈 — 삼성전자 TIME 후 동일 신호 재진입
|
||||||
|
|
||||||
|
| 항목 | 1차 진입 | 2차 진입 |
|
||||||
|
|---|---|---|
|
||||||
|
| 진입가 | 340,000 | 338,500 |
|
||||||
|
| 돌파 목표가 | 334,000 | 334,000 |
|
||||||
|
| 차이 | **-6,000원** | **-4,500원** |
|
||||||
|
| 청산 | TIME | TIME |
|
||||||
|
|
||||||
|
- 코드상 `목표가`는 익절가가 아니라 변동성 돌파 진입 기준가.
|
||||||
|
따라서 `현재가 >= 목표가` 자체는 정상 진입 조건.
|
||||||
|
- 실제 문제는 1차 `TIME` 청산 후에도 가격이 목표가 위에 머물러,
|
||||||
|
60분 쿨다운 종료만으로 같은 돌파 신호를 재사용해 2차 진입한 점.
|
||||||
|
- **적용 완료**: `TIME/FORCE` 청산 후에는 목표가 아래로 한 번 내려왔다가
|
||||||
|
다시 돌파해야 재진입 가능하도록 `재돌파 대기` 필터 추가.
|
||||||
|
- 적용 문서: `reports/proposals/2026-06-15_strategy_proposal.md`.
|
||||||
|
|
||||||
|
## 30일 누적 지표 (5거래일)
|
||||||
|
|
||||||
|
| 지표 | 값 | 기준 | 판정 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 누적 운영일 | 5일 | 30일 | FAIL |
|
||||||
|
| 승률 | 60.0% | >48% | PASS |
|
||||||
|
| MDD | -0.3% | >-10% | PASS |
|
||||||
|
| Sharpe | 7.92 | >1.0 | PASS |
|
||||||
|
| L3 발동 | 0회 | ≤2/월 | PASS |
|
||||||
|
|
||||||
|
**라이브 준비: 미완료** — 운영 일수 부족 (5/30일).
|
||||||
|
|
||||||
|
누적 PnL (운영 5일): -5,646 + 45,606 + 0 + (-25,678) + 88,648 = **+102,930원**
|
||||||
|
|
||||||
|
## 다음 체크사항
|
||||||
|
|
||||||
|
- `TIME/FORCE` 후 재돌파 대기 필터 내일 로그에서 정상 차단 여부 확인.
|
||||||
|
- AI 부스트 누적 손익 별도 집계 시작 권장.
|
||||||
|
- 에이팩트 대량 포지션 사이징(193주) — 리스크 대비 포지션 계산 재확인.
|
||||||
|
- 운영 데이터 누적 지속. 30거래일 도달 시 라이브 준비 재점검.
|
||||||
@@ -1,5 +1,32 @@
|
|||||||
# Implementation Log
|
# Implementation Log
|
||||||
|
|
||||||
|
## 2026-06-10
|
||||||
|
|
||||||
|
- Enabled wake-from-sleep behavior for Scheduler tasks:
|
||||||
|
- `scripts/setup_scheduler.ps1` now registers stock tasks with `WakeToRun`.
|
||||||
|
- Re-registered tasks and verified `WakeToRun=True` and `StartWhenAvailable=True`.
|
||||||
|
- Hardened KIS request throttling:
|
||||||
|
- Mock request spacing default: 1.7s.
|
||||||
|
- Real request spacing default: 0.35s, rate limit default: 3/sec.
|
||||||
|
- Added local `.env` override support for request spacing/rate limits.
|
||||||
|
- Added global cooldown after rate-limit responses.
|
||||||
|
- Updated the 2026-06-10 daily report to reflect repeated KIS rate-limit retries.
|
||||||
|
|
||||||
|
## 2026-06-09
|
||||||
|
|
||||||
|
- Re-registered all Windows Scheduler tasks from the live project path:
|
||||||
|
- `C:\Users\whdwo\Desktop\coding\stockbot_v3`
|
||||||
|
- Verified every task action script exists at that path.
|
||||||
|
- Fixed watchdog end-of-day behavior:
|
||||||
|
- `StockBot_Watchdog` now runs 09:00-15:05 every 5 minutes.
|
||||||
|
- `scripts/_watchdog.py` excludes 15:10 so normal daily settlement shutdown is not restarted.
|
||||||
|
- `scripts/run_watchdog.ps1` skips after 15:09:59.
|
||||||
|
- Hardened target calculation:
|
||||||
|
- Targets are cleared before recalculation.
|
||||||
|
- `open=0` is ignored before market open.
|
||||||
|
- Delayed restarts after 08:50 recalculate targets immediately.
|
||||||
|
- Updated operational docs and the 2026-06-09 daily report.
|
||||||
|
|
||||||
## 2026-05-28
|
## 2026-05-28
|
||||||
|
|
||||||
- Applied the approved 2026-05-28 strategy update:
|
- Applied the approved 2026-05-28 strategy update:
|
||||||
@@ -120,3 +147,18 @@ Open risks:
|
|||||||
- Verification:
|
- Verification:
|
||||||
- Python compile check passed.
|
- Python compile check passed.
|
||||||
- Runtime import confirmed `ENTRY_START == "09:15"`.
|
- Runtime import confirmed `ENTRY_START == "09:15"`.
|
||||||
|
|
||||||
|
## 2026-06-15
|
||||||
|
|
||||||
|
- Applied a stale breakout re-entry guard after reviewing the Samsung Electronics `TIME` re-entry.
|
||||||
|
- Changed `app/strategy/volatility_breakout.py`:
|
||||||
|
- `TIME` and `FORCE` final exits now mark the ticker as requiring a fresh breakout.
|
||||||
|
- While that marker is active, a ticker is blocked with `재돌파 대기` if it remains above the same volatility breakout target.
|
||||||
|
- The marker clears only after price moves back below the target, allowing a later fresh breakout entry.
|
||||||
|
- Rationale:
|
||||||
|
- The existing `current_price >= target` condition is the normal volatility breakout entry rule.
|
||||||
|
- The bug was reusing a still-active same-day breakout signal after `TIME/FORCE` cooldown, not the first breakout itself.
|
||||||
|
- This would have blocked the 2026-06-15 Samsung Electronics second entry after the first `TIME` exit.
|
||||||
|
- Updated docs:
|
||||||
|
- `reports/daily/2026-06-15.md`
|
||||||
|
- `reports/proposals/2026-06-15_strategy_proposal.md`
|
||||||
|
|||||||
@@ -0,0 +1,82 @@
|
|||||||
|
# 전략 제안서 — 2026-06-15
|
||||||
|
|
||||||
|
## 요약
|
||||||
|
|
||||||
|
`TIME/FORCE` 청산 후에는 같은 당일 돌파 신호를 그대로 재사용하지 않고,
|
||||||
|
목표가 아래로 한 번 식었다가 다시 돌파할 때만 재진입하도록 필터 추가.
|
||||||
|
|
||||||
|
**적용 완료:** 2026-06-15
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 관찰된 문제
|
||||||
|
|
||||||
|
오늘(2026-06-15) 삼성전자(005930)가 두 차례 진입됐다. 1차는 09:20 돌파 진입이었고,
|
||||||
|
10:51 `TIME` 청산 후 60분 쿨다운이 끝난 11:51에 다시 진입됐다.
|
||||||
|
|
||||||
|
| 진입 | 진입가 | 목표가(TP) | 차이 | 결과 |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| 1차 09:20 | 340,000 | 334,000 | -6,000 | TIME -21,681원 |
|
||||||
|
| 2차 11:51 | 338,500 | 334,000 | -4,500 | TIME -1,422원 |
|
||||||
|
|
||||||
|
주의: 코드상 `목표가`는 익절가가 아니라 변동성 돌파 진입 기준가다.
|
||||||
|
따라서 `현재가 >= 목표가`를 무조건 막으면 전략 전체 진입이 중단된다.
|
||||||
|
|
||||||
|
실제 구조적 문제는 `TIME/FORCE` 청산 후에도 현재가가 목표가 위에 머물면,
|
||||||
|
새로운 돌파가 없는데도 쿨다운 종료만으로 같은 신호를 재사용해 재진입할 수 있다는 점이다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 제안 내용
|
||||||
|
|
||||||
|
### TIME/FORCE 후 재돌파 조건 추가
|
||||||
|
|
||||||
|
`mark_final_exit()`에서 `TIME` 또는 `FORCE` 청산 종목을 재돌파 대기 목록에 넣고,
|
||||||
|
`check_entry()`에서 해당 종목이 목표가 아래로 내려오기 전까지 진입을 차단한다.
|
||||||
|
|
||||||
|
```python
|
||||||
|
if ticker in self._rebreak_required_tickers:
|
||||||
|
if current_price >= target:
|
||||||
|
result["reason"] = f"재돌파 대기 ({current_price:,} >= {target:,.0f})"
|
||||||
|
return result
|
||||||
|
self._rebreak_required_tickers.discard(ticker)
|
||||||
|
```
|
||||||
|
|
||||||
|
적용 위치: `app/strategy/volatility_breakout.py` — `check_entry()` 함수 내
|
||||||
|
진입 조건 검사 직전.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 기대 효과
|
||||||
|
|
||||||
|
- 오늘 기준: 삼성전자 2차 TIME 재진입(-1,422원) 방어 가능.
|
||||||
|
- 같은 날 같은 돌파 신호를 쿨다운 후 반복 사용하는 구조 차단.
|
||||||
|
- SL/TIME 낭비 거래 제거 → R:R 개선.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 위험 및 주의사항
|
||||||
|
|
||||||
|
- 최초 돌파 진입은 기존과 동일하게 허용된다.
|
||||||
|
- TIME/FORCE 뒤에도 가격이 목표가 아래로 내려갔다가 다시 돌파하면 재진입 가능하다.
|
||||||
|
- 샘플: 오늘 1건의 명확한 재진입 사례 관찰. 통계적 근거로는 부족하나, 이는 파라미터 조정이 아니라
|
||||||
|
**논리적 버그 수정**에 해당하므로 소량 샘플로도 충분히 정당화됨.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 증거
|
||||||
|
|
||||||
|
| 날짜 | 티커 | 진입가 | 목표가 | 차이 | 손익 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| 2026-06-15 | 삼성전자(005930) 1차 | 340,000 | 334,000 | -6,000 | -21,681원 |
|
||||||
|
| 2026-06-15 | 삼성전자(005930) 2차 | 338,500 | 334,000 | -4,500 | -1,422원 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 승인 조건
|
||||||
|
|
||||||
|
- [x] `volatility_breakout.py` 내 돌파 목표가 변수(`target`) 접근 확인.
|
||||||
|
- [x] `TIME/FORCE` 청산 후 같은 신호 재사용 경로 확인.
|
||||||
|
- [x] 수동 코드 검토 후 적용.
|
||||||
|
|
||||||
|
**FORCE_EXIT = "14:50"** 변경 없음. SL 우선순위 변경 없음.
|
||||||
@@ -85,7 +85,7 @@ async def main():
|
|||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
now_str = now.strftime("%H:%M")
|
now_str = now.strftime("%H:%M")
|
||||||
|
|
||||||
if not ("09:00" <= now_str <= "15:10"):
|
if not ("09:00" <= now_str < "15:10"):
|
||||||
print(f"[{now_str}] outside trading window - watchdog skipped")
|
print(f"[{now_str}] outside trading window - watchdog skipped")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
chcp 65001 | Out-Null
|
||||||
|
$OutputEncoding = [System.Text.Encoding]::UTF8
|
||||||
|
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
||||||
|
$env:PYTHONUTF8 = "1"
|
||||||
|
$env:PYTHONIOENCODING = "utf-8"
|
||||||
|
|
||||||
$Root = Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Path)
|
$Root = Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Path)
|
||||||
Set-Location $Root
|
Set-Location $Root
|
||||||
. "$Root\scripts\stockbot_env.ps1"
|
. "$Root\scripts\stockbot_env.ps1"
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ if ($LASTEXITCODE -ne 0) {
|
|||||||
|
|
||||||
$now = Get-Date
|
$now = Get-Date
|
||||||
$start = Get-Date -Hour 9 -Minute 0 -Second 0
|
$start = Get-Date -Hour 9 -Minute 0 -Second 0
|
||||||
$end = Get-Date -Hour 15 -Minute 10 -Second 59
|
$end = Get-Date -Hour 15 -Minute 9 -Second 59
|
||||||
if ($now -lt $start -or $now -gt $end) {
|
if ($now -lt $start -or $now -gt $end) {
|
||||||
Write-WatchdogLog "outside watchdog window - skipped"
|
Write-WatchdogLog "outside watchdog window - skipped"
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ function Register-StockTask {
|
|||||||
$Settings = New-ScheduledTaskSettingsSet `
|
$Settings = New-ScheduledTaskSettingsSet `
|
||||||
-ExecutionTimeLimit (New-TimeSpan -Minutes $LimitMinutes) `
|
-ExecutionTimeLimit (New-TimeSpan -Minutes $LimitMinutes) `
|
||||||
-StartWhenAvailable `
|
-StartWhenAvailable `
|
||||||
|
-WakeToRun `
|
||||||
-DontStopIfGoingOnBatteries `
|
-DontStopIfGoingOnBatteries `
|
||||||
-RunOnlyIfNetworkAvailable:$false
|
-RunOnlyIfNetworkAvailable:$false
|
||||||
$Settings.DisallowStartIfOnBatteries = $false
|
$Settings.DisallowStartIfOnBatteries = $false
|
||||||
@@ -47,15 +48,21 @@ function Register-StockTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function Register-WatchdogTask {
|
function Register-WatchdogTask {
|
||||||
$TaskName = "\StockBot\StockBot_Watchdog"
|
|
||||||
$ScriptPath = Join-Path $Project "scripts\run_watchdog.ps1"
|
$ScriptPath = Join-Path $Project "scripts\run_watchdog.ps1"
|
||||||
$Command = 'schtasks /Create /TN "\StockBot\StockBot_Watchdog" /TR "\"powershell.exe\" -NonInteractive -ExecutionPolicy Bypass -File \"' + $ScriptPath + '\"" /SC MINUTE /MO 5 /ST 09:00 /ET 15:10 /F'
|
$Command = 'schtasks /Create /TN "\StockBot\StockBot_Watchdog" /TR "\"powershell.exe\" -NonInteractive -ExecutionPolicy Bypass -File \"' + $ScriptPath + '\"" /SC WEEKLY /D MON,TUE,WED,THU,FRI /ST 09:00 /RI 5 /DU 06:05 /F'
|
||||||
cmd.exe /c $Command | Out-Null
|
cmd.exe /c $Command | Out-Null
|
||||||
if ($LASTEXITCODE -ne 0) {
|
if ($LASTEXITCODE -ne 0) {
|
||||||
throw "StockBot_Watchdog registration failed"
|
throw "StockBot_Watchdog registration failed"
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "[OK] StockBot_Watchdog registered at 09:00-15:10 every 5 minutes" -ForegroundColor Green
|
$Task = Get-ScheduledTask -TaskName "StockBot_Watchdog" -TaskPath $TaskPath
|
||||||
|
$Task.Settings.StartWhenAvailable = $true
|
||||||
|
$Task.Settings.WakeToRun = $true
|
||||||
|
$Task.Settings.DisallowStartIfOnBatteries = $false
|
||||||
|
$Task.Settings.StopIfGoingOnBatteries = $false
|
||||||
|
Set-ScheduledTask -TaskName "StockBot_Watchdog" -TaskPath $TaskPath -Settings $Task.Settings | Out-Null
|
||||||
|
|
||||||
|
Write-Host "[OK] StockBot_Watchdog registered weekdays at 09:00-15:05 every 5 minutes" -ForegroundColor Green
|
||||||
}
|
}
|
||||||
|
|
||||||
Register-StockTask "StockBot_Morning" "08:15" "run_morning.ps1" 20
|
Register-StockTask "StockBot_Morning" "08:15" "run_morning.ps1" 20
|
||||||
|
|||||||
+8
-6
@@ -155,8 +155,8 @@ AI는 두 종류로 나뉜다.
|
|||||||
| 08:15 | `StockBot_Morning` | `/morning`, 뉴스/시장 분석, `daily_context.json` 생성 |
|
| 08:15 | `StockBot_Morning` | `/morning`, 뉴스/시장 분석, `daily_context.json` 생성 |
|
||||||
| 08:30 | 봇 컨텍스트 로드 | AI 컨텍스트 로드, 유니버스 갱신 |
|
| 08:30 | 봇 컨텍스트 로드 | AI 컨텍스트 로드, 유니버스 갱신 |
|
||||||
| 08:50 | 목표가 계산 | 전일 고저와 당일 시가 기반 |
|
| 08:50 | 목표가 계산 | 전일 고저와 당일 시가 기반 |
|
||||||
| 09:00 | 매매 루프 시작 | 실제 신규 진입은 `ENTRY_START=09:15` 이후 |
|
| 09:00 | 매매 루프 시작 | 실제 신규 진입은 `ENTRY_START=09:20` 이후 |
|
||||||
| 09:00-15:10 | `StockBot_Watchdog` | 5분마다 봇 생존 감시 |
|
| 09:00-15:05 | `StockBot_Watchdog` | 5분마다 봇 생존 감시, 15:10 결산 직후 재시작 금지 |
|
||||||
| 11:00 | 점심 컨텍스트 대기 | `midday_context.json` 전까지 신규 진입 중지 |
|
| 11:00 | 점심 컨텍스트 대기 | `midday_context.json` 전까지 신규 진입 중지 |
|
||||||
| 11:20 | `StockBot_Midday` | `/midday`, 점심 세션 조건 생성 |
|
| 11:20 | `StockBot_Midday` | `/midday`, 점심 세션 조건 생성 |
|
||||||
| 14:00 | 신규 진입 중단 | 보유 포지션 청산 체크는 계속 |
|
| 14:00 | 신규 진입 중단 | 보유 포지션 청산 체크는 계속 |
|
||||||
@@ -177,9 +177,10 @@ AI는 두 종류로 나뉜다.
|
|||||||
| `StockBot_Midday` | 11:20 | `scripts/run_midday.ps1` |
|
| `StockBot_Midday` | 11:20 | `scripts/run_midday.ps1` |
|
||||||
| `StockBot_Evening` | 15:30 | `scripts/run_evening.ps1` |
|
| `StockBot_Evening` | 15:30 | `scripts/run_evening.ps1` |
|
||||||
| `StockBot_Training` | 16:00 | `scripts/run_training_pipeline.ps1` |
|
| `StockBot_Training` | 16:00 | `scripts/run_training_pipeline.ps1` |
|
||||||
| `StockBot_Watchdog` | 09:00-15:10, 5분마다 | `scripts/run_watchdog.ps1` |
|
| `StockBot_Watchdog` | 09:00-15:05, 5분마다 | `scripts/run_watchdog.ps1` |
|
||||||
|
|
||||||
모든 실행 스크립트는 프로젝트 내부 `.venv`의 Python을 우선 사용한다.
|
모든 실행 스크립트는 프로젝트 내부 `.venv`의 Python을 우선 사용한다.
|
||||||
|
08:50 이후 재시작 시 봇은 목표가를 즉시 재계산하며, KIS 시가가 `0`이면 목표가 계산에서 제외한다.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -273,7 +274,7 @@ Restore_StockBot.bat
|
|||||||
2. KIS REST 요청 제한 초과와 타임아웃이 장초반에 발생할 수 있다.
|
2. KIS REST 요청 제한 초과와 타임아웃이 장초반에 발생할 수 있다.
|
||||||
3. WebSocket/Redis 기반 실시간 구조는 아직 미완성이다.
|
3. WebSocket/Redis 기반 실시간 구조는 아직 미완성이다.
|
||||||
4. 실거래 전환 전에는 체결, 부분체결, 미체결, 취소/정정, 재시작 복구 로직이 더 필요하다.
|
4. 실거래 전환 전에는 체결, 부분체결, 미체결, 취소/정정, 재시작 복구 로직이 더 필요하다.
|
||||||
5. 초반 09:15 이후에도 손실 집중이 반복되는지 추가 검증이 필요하다.
|
5. 초반 09:20 이후에도 손실 집중이 반복되는지 추가 검증이 필요하다.
|
||||||
6. `AI_RISK_SL_MAP`의 한글 키 인코딩은 점검이 필요하다. 정상 risk level과 매핑되지 않으면 리스크별 SL 조정이 무력화될 수 있다.
|
6. `AI_RISK_SL_MAP`의 한글 키 인코딩은 점검이 필요하다. 정상 risk level과 매핑되지 않으면 리스크별 SL 조정이 무력화될 수 있다.
|
||||||
7. 기존 로그와 일부 문서는 인코딩 깨짐이 남아 있어 장기적으로 정리해야 한다.
|
7. 기존 로그와 일부 문서는 인코딩 깨짐이 남아 있어 장기적으로 정리해야 한다.
|
||||||
|
|
||||||
@@ -286,10 +287,11 @@ Restore_StockBot.bat
|
|||||||
| 제안 | 상태 |
|
| 제안 | 상태 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| `ENTRY_START` 09:05 -> 09:15 | 승인 및 적용 |
|
| `ENTRY_START` 09:05 -> 09:15 | 승인 및 적용 |
|
||||||
|
| `ENTRY_START` 09:15 -> 09:20 | 승인 및 적용 |
|
||||||
| 장초반 포지션 축소 | 보류 |
|
| 장초반 포지션 축소 | 보류 |
|
||||||
| 시간대별 SL 강화 | 보류 |
|
| 시간대별 SL 강화 | 보류 |
|
||||||
|
|
||||||
`ENTRY_START=09:15` 변경 후 최소 5거래 이상 관찰한 뒤 다음 조정을 판단한다.
|
`ENTRY_START=09:20` 변경 후 최소 5거래 이상 관찰한 뒤 다음 조정을 판단한다.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -323,7 +325,7 @@ DRY_RUN=false
|
|||||||
1. `AI_RISK_SL_MAP` 인코딩/키 매핑 점검
|
1. `AI_RISK_SL_MAP` 인코딩/키 매핑 점검
|
||||||
2. KIS API rate-limit 완화
|
2. KIS API rate-limit 완화
|
||||||
3. KIS minute-bar 실응답 검증
|
3. KIS minute-bar 실응답 검증
|
||||||
4. 장초반 09:15 이후 손익 데이터 축적
|
4. 장초반 09:20 이후 손익 데이터 축적
|
||||||
5. WebSocket 시세 구조 도입
|
5. WebSocket 시세 구조 도입
|
||||||
6. 실거래용 주문 복구/부분체결/미체결 처리 강화
|
6. 실거래용 주문 복구/부분체결/미체결 처리 강화
|
||||||
7. NAS Docker 이전
|
7. NAS Docker 이전
|
||||||
|
|||||||
Reference in New Issue
Block a user