⬡ Crystal Trading
대시보드
KOSPI
--
 
KOSDAQ
--
 
KOSPI200
--
 
VKOSPI
--
 
야간선물
--
 
VKOSPI 전일종가
--
 
실계좌 당일손익
--
 
실계좌 주간손익
--
 
실계좌 월간손익
--
 
주문가능금액
--
 
운영 전략 실적 (당일) 운영
전략거래승/패승률실현손익
테스트 전략 실적 (당일) 테스트
전략거래승/패승률실현손익
운영 포지션 운영
전략종목명수량평균단가 현재가수익률평가손익
테스트 포지션 테스트
전략종목명수량평균단가 현재가수익률평가손익
운영 주문 내역 운영
시간전략상태구분종목코드종목명주문번호 주문수량주문가체결수량체결가미체결
테스트 주문 내역 테스트
시간전략상태구분종목코드종목명주문번호 주문수량주문가체결수량체결가미체결
전략 관리
운영 전략 운영
테스트 전략 테스트
전략 상세 설명
프로세스
로그
저장: logs/daemon/market_feed_YYYYMMDD.log
로그를 불러오는 중...
SHM 조회
분봉 차트
배치 실행
데이터 수집
각 배치의 예정 시각·오늘 실행 결과(작업 스케줄러 기준)와 기능 설명입니다. 버튼을 누르면 수동 실행됩니다. (휴장일엔 실행되지 않는 게 정상)
시장 레짐
레짐 데이터를 불러오는 중… (WebSocket 연결 후 상단 설명·실시간 판정이 표시됩니다)
ETF 데이트레이딩 — V-Reversal ORB Long
룰: 음갭 -2~0% + 09:00~09:29 박스(폭≤5%) + 09:30~13:00 박스 상단 돌파 시 시장가 매수 / 손절 -1.5% / 트레일링(+2% 활성·peak −1% 되돌림). 데이터 소스: crystal_etf_state SHM (daemon/etf_day_runner) · 트레이드 이력: logs/daemon/etf_day_runner_YYYYMMDD.log의 매도 체결 라인.
ETF 데몬이 실행 중이 아닙니다 — python -m daemon.etf_day_runner --mode test 시작 후 자동 표시됩니다.
리서치 파이프라인
르네상스式 micro-signal 연구 공장. StrategyA~R을 손으로 더 만드는 게 아니라, 약한 시그널을 대량 생산 → 통계로 죽이기 → 살아남은 것만 결합하는 자동화 파이프라인입니다. AI 에이전트는 가설·코드·비평만 쓰고, survive/reject 판정은 Python 게이트만, prod 반영은 사람만 합니다. 이 화면은 read-only — 여기서 운영 코드 수정·prod 승격은 불가 (사람 SOP: docs/research/procedures/promotion_human_gate.md).
게이트 사다리 — 시그널이 순서대로 통과해야 살아남는다
L0
데이터 깊이 — OOS 거래일·캘린더가 부족하면 전부 hold. 최상위 kill switch(allow_survive). 데이터가 적으면 어떤 통계도 못 믿으니 문 자체를 닫음.
L1
Trial·FDR·DSR — batch 시도 수 N 회계 + Benjamini–Hochberg + Deflated Sharpe. "수백 번 돌려서 하나 건진" 다중검정 편향을 제거.
L2
KR 비용 — 거래세 0.2%·수수료·회전율·세후 edge(bps). 한국 시장 비용을 못 이기는 micro-signal을 태어나기 전에 죽임.
L3
Standalone OOS — 빈도별 표본 수·PF·IS/OOS 열화·단일 regime 집중·regime 커버리지(RISK_ON/OFF/NEUTRAL 관측). 단독 성능과 견고성.
L4
직교·한계기여 — 이미 살아남은 시그널과의 상관·incremental Sharpe. "눌림목 매수 50개"처럼 똑같은 시그널 중복을 차단 — 르네상스의 심장.
L5
Shadow live — 레짐 무관 실시간 counterfactual(shadow 30+ round-trip). 백테는 과거에 핏되지만 shadow는 미래 데이터 — 차단 구간까지 검증.
L6
Paper live — runner PaperOrderClient 실경로로 paper 30+ round-trip 검증(prod 직전 마지막 관문). promotion_ready = L5 ∧ L6. 통과해도 prod 반영은 사람만.
흐름: manifest(가설) → sandbox 백테 → L0~L4 게이트 → verdict(reject/hold/survive_standalone/survive) → registry signal → combiner bundle → L5 shadow 검증 → L6 paper 검증 → promotion pending → 사람
WebSocket 연결 후 walk-forward 결과가 표시됩니다.
WebSocket 연결 후 리서치 데이터가 표시됩니다.
데이터 마이닝
PG 보유 feature 자동 패턴 발굴. 일봉·수급·변동성 등 catalog feature를 체계적으로 스크린 → preregistered batch → L1~L3-xsec 게이트로 검증합니다. 리서치 파이프라인(manifest→sandbox)과 별도 축입니다. gen 기본 book은 single_name(prod 체결 가능)이며, gen --book cross_sectional 배치 survivor만 combiner 입력 후보입니다. 설계: docs/research/data_mining_design.md · CLI: python -m research.mining
WebSocket 연결 후 마이닝 데이터가 표시됩니다.
런타임 아키텍처 Crystal Trading — 프로세스 · IPC · 데이터 흐름 (실행 중인 시스템)
색 = 컴포넌트 타입 (밴드 라벨 = 역할)
외부 데이터소스 — 키움 REST/WS · eSignal · KRX 외부 출력 — Telegram 데몬 — 상시 프로세스(굵은 테두리=market_feed 허브) DBMS — PostgreSQL 배치 — 스케줄 1회성 작업 / IPC — ZMQ · 공유메모리(SHM) research 재사용 — research/ 산출물을 SHM read만으로 사용하는 격리 데몬
코드 구성·전략 프레임워크·리서치 에이전트는 사이드바 「SW 컴포넌트」 페이지 참조.
외부 데이터소스 · 출력 키움 REST API 주문·잔고·일/분봉 조회 키움 WebSocket 실시간 시세 · 토큰당 200종목 eSignal 야간선물 실시간 KRX 종가·선물 폴백 Telegram 외부 출력 · 알림(단방향) 데몬 · 실시간 코어 collect_vkospi 4지수 30초 폴링 → crystal_index SHM market_feed (실시간 허브) 모든 SHM 단독 소유(create=True) · WebSocket 시세 수신(200종목 한도) ZMQ PUB 2개 — tick:5555 / fill:5556 · 23:00 자체 종료 0B 체결 · 0D 호가(coalesce) · 0F 거래원 · 00 내 주문체결 collect_night_futures KOSPI200 야간 근월물 → crystal_night_futures SHM 프로세스 간 통신 (IPC) ZMQ PUB/SUB tick · tcp:5555 0B → TickHub → on_tick fill · tcp:5556 00 → Hub → 체결 처리 공유메모리 SHM — market_feed가 create=True로 단독 소유, 나머지는 create=False 연결 (+ crystal_sim_pnl: paper 전략 있을 때 strategy_runner가 create=True) crystal_mktdata crystal_bars crystal_index crystal_night_futures crystal_strategy_ctrl crystal_pnl crystal_account crystal_order_history crystal_order_registry crystal_dynamic_sizer crystal_strategy_exec crystal_ws_metrics crystal_etf_state crystal_etf_order_history crystal_positions crystal_vkospi_prev crystal_strategy_sub 데몬 · 전략/컨슈머 strategy_runner 18 전략 A~R (momentum·stress_breakout·breakout·reversal·flow·ipo·panic_relief) TickHub(SUB 2개) · 인메모리 팬아웃 · crystal_strategy_sub 포지션·PnL·계좌·order_history SHM 갱신(create=False) 동적 사이저 · same-stock 1일1회 · 오버나잇 carry · 레짐 게이트 실주문→키움 REST · 체결←키움 WS 00 · prod/paper/shadow etf_day_runner ETF V-Reversal ORB Long 122630 KODEX 레버리지 BaseStrategy 미상속(독립) crystal_etf_state / _order_history 키움 토큰·잔고 runner와 공유 tick_archiver 0B SUB + 호가 SHM read → logs/ticks_*.jsonl EOD parquet 변환(zstd ~10×) hot path 무영향 tick 백테 원천 데이터 데몬 · 실험/보조 (별도 격리 · 기존 SHM 미접촉) etf_ha_st_runner HA(하이킨아시)+SuperTrend · 5분봉 · 122630 레버리지 롱(기본) — 114800 인버스는 market_feed 미구독 flip 진입 · 손절-1.5%·트레일(+2%/-1%) · 자체 trades 메모리 + JSONL, crystal_etf_state 미사용 xsec_paper_runner (research 재사용) 크로스섹션 L6-xsec paper — close_to_ma20_pct 모멘텀(exp-003 h=5), PG cross_evaluator 재사용 crystal_mktdata SHM read 의존(market_feed 선행 07:50) · → research/registry/xsec_paper_daily.jsonl · 08:20 기동·23:00 종료 데몬 · 관측/제어 dashboard (FastAPI · 포트 18472) WebSocket 1초 브로드캐스트 · SHM read-only · 페이지별 자동새로고침 토글 레짐 백그라운드 1초 → market_regime_minute upsert · 배치 트리거 · 데몬 start/stop 전략/포지션/주문/레짐/ETF/리서치/아키텍처 페이지 watchdog 프로세스 헬스체크 텔레그램 알림 · 23:00 종료 DBMS · 영속 계층 PostgreSQL 127.0.0.1:5433 — 멀티 운영자(3인) 공유 DB · date/time TEXT 유지 stock_master · daily_price(+ma5/20/60/120) · minute_bars(코스피·코스닥 전체) · index_daily · index_minute_bars pool_1~6 · pool_history · market_regime_minute overnight_positions · overnight_strategy_state (layer = main / shadow / etf) · research/registry/*.jsonl (xsec) 배치 (스케줄 1회성) 배치 / 스케줄러 (Windows 작업스케줄러 · Linux systemd timer) collect_stock_master(07:00) · collect_daily_price(17:00) · select_pool · collect_index_daily(17:00) · collect_index_minute_bars(17:30) collect_minute_bars(18:00) · collect_etf_daily_price(17:10) · collect_etf_minute_bars(18:10) · snapshot_overnight(17:00) · convert_ticks_to_parquet(17:30) 시세 SHM write write → crystal_index write → crystal_night_futures publish 0B / 00 SUB (+ETF·archiver) 포지션·PnL write SHM read regime upsert 적재(write) 키움 REST 조회 → 배치 풀·일봉·오버나잇 복원
핵심 흐름 요약
① 시세 키움 WebSocket → market_feed → 공유메모리(SHM) 기록 + ZMQ tick(5555) 발행(페이로드 type+volume)
② 판단·주문 strategy_runner TickHub(프로세스당 SUB 2개) → 관심 종목만 인메모리 큐 → 전략 on_tick → 진입 시 키움 REST 실주문
③ 체결 루프 키움 WS 00 → market_feed → ZMQ fill(5556) → Hub → strategy_runner 포지션·PnL SHM 갱신 (0B/00 큐 분리로 간섭 차단)
④ 관측 dashboard가 SHM을 1초 read → WebSocket 브로드캐스트 · 레짐을 분단위로 PG upsert
⑤ 영속·배치 장 전후 배치가 키움 REST 조회 → PostgreSQL 적재(종목마스터·일/분봉·풀·지수). market_feed/runner는 시작 시 PG에서 풀·오버나잇 복원
⑥ 실험/보조 etf_ha_st_runner(HA+SuperTrend, 122630 롱)·xsec_paper_runner(research L6-xsec paper)는 market_feed SHM만 read하고 crystal_positions/sim_pnl 등 기존 SHM을 건드리지 않는 격리 레이어
↳ 오프라인 리서치 파이프라인·에이전트와 코드 모듈 구조는 「SW 컴포넌트」 페이지에서 따로 다룹니다.
SW 컴포넌트 Crystal Trading — 코드 모듈 · 전략 프레임워크 · 리서치 에이전트 (논리 구조)
패키지(디렉토리) 단위 논리 구조입니다. 실행 중인 프로세스·IPC·데이터 흐름은 「런타임 아키텍처」 페이지를 보세요.
전략 프레임워크 · strategy/ strategy/ — base.py(BaseStrategy) 상속 18종 + ETF 독립 base.py · BaseStrategy (공통) _loop_hub · TickHub 인메모리 drain _allows_orders — 레짐 게이트 _try_enter — same-stock 1일1회(원자) _calc_qty_or_block — 동적사이저 _submit_buy/_submit_sell · _register_order _handle_fill — 부분체결 delta·round-trip export/restore_overnight_state momentumB · E breakoutH · I · M reversal · VK · L · N flowC · J · P micro(틱·OBI)F ipo 시초D overnight 모멘텀Q panic / stressR · G etf_day_strategyETF ORB(독립) etf_ha_st_strategyHA·SuperTrend paper_order모의 체결 shadow_ordershadow 격리 dynamic_sizerstreak·cap 배수 데이터 · 상태 계층 · data/ data/ — 영속(PG) · 공유상태(SHM) · 레짐 영속 · DB · 외부피드 storage.py — MarketStorage + _PgConn ?→%s · row=dict · NUMERIC→float trading_calendar.py (거래일/휴장) collector.py · fetch_stocks.py esignal_night.py (야간선물 Socket.IO) kospi·kosdaq·kospi200·vkospi.py (지수·VKOSPI 폴러) SHM 인프라 + writer/reader shm.py · shm_util.py create_shm/attach_shm · resource_tracker position · pnl · account · order_history order_registry · strategy_exec · dynamic_sizer bar · index · ws_metrics · night_futures vkospi_prev · sim_pnl etf_state · etf_order_history 레짐 · 상태 market_regime.py 8축 매트릭스 · 레짐 평가 · 전략 hints inmem_position.py (shadow 격리 포지션) overnight.py (스냅샷/복원 공통) tick.py (틱 dtype) * SHM 소유=market_feed(create=True) 나머지는 create=False 연결 브로커 어댑터 · 메시징 · kiwoom/ messaging/ kiwoom/ · messaging/ — 키움 API · ZMQ/텔레그램 전송 kiwoom/ — 키움 API 어댑터 auth.py (토큰 발급·갱신) · client.py (REST 베이스) order.py (주문 발주/취소) · account.py (kt00001 잔고) · pnl.py (ka10074 실현손익) websocket.py (0B 체결 · 0D 호가 · 0F 거래원 · 00 내체결 · 200한도 grp분할 · PING echo) orderbook_coalesce.py (0D 호가 코얼레싱 30/50ms) messaging/ — 전송 tick_publisher.py (orjson.dumps) ZMQ PUB 5555(tick)/5556(fill) · LINGER=0 tick_hub.py (runner: SUB 1쌍 → 인메모리 팬아웃) tick_subscriber.py · telegram.py (suppress 토글) 수집 · 풀 · batch/ batch/ — 장 전후 데이터 수집 (스케줄러 구동 · 1회성) 마스터 · 일봉 collect_stock_master (07:00) collect_daily_price (17:00) collect_etf_daily_price (17:10) + ma5/20/60/120 자동계산 분봉 · 지수 collect_minute_bars (18:00) collect_etf_minute_bars (18:10) collect_index_minute_bars (17:30) collect_index_daily (17:00) 풀 · 스냅샷 select_pool (pool_1~6 선정) backfill_pool_history snapshot_overnight_positions (17:00 오버나잇 폴백) 야간 · 변환 · 백필 collect_night_futures · collect_vkospi_prev collect_today (당일 일괄) convert_ticks_to_parquet (17:30) backfill_{daily,minute}_*_window 백테스트 · backtest/ backtest/ — 검증 엔진 + 최적화 + 분석 스크립트 (오프라인) 엔진 engine.py (OHLCV · 봉당3틱) tick_engine.py (parquet 실호가) sim_clock.py (replay 시계) context.py · db.py MockShmReader/BarReader 주입 실행 · 참조 run.py (CLI ·engine/·overnight·tick-reverify) walk_forward_eval.py (fold·gate·2단계 tick 재검정) window_runner.py · ref_data.py · regime_gates.py real_trades.py · mae_mfe.py wf_eval_store.py → logs/backtest/walk_forward 최적화 optimize_{a,b,e,g,h,i,k,m,n} refine_h.py · verify_best.py _compare_dynamic_sizing _grid_c{1..6} (C 그리드) _sweep_b_* · _strategy_o_grid 분석 (40+ 스크립트) _loss_pattern_v2 · _deep_* _weekly_loss_pattern · _trade_context _signal_bar_* · _winner_analysis _pair_*(페어) · _etf_*(ETF) _devil_mk2_*(Q) · _tick_*(틱) 리서치 존 · research/ (오프라인 · 에이전트 파이프라인) research/ — micro-signal 연구공장 · 운영코드 무수정 · 수집/승격은 사람 산출물 파이프라인 (artifact) Proposals데이터축 제안 Manifest가설 사전등록 Experimentsmetrics·verdict GatesL0 ~ L6 Signalsregistry Bundlescombiner Promotion사람 승인 에이전트 흐름 (누가 수행하나) — ■ LLM 에이전트(Cursor SDK) ■ 결정론 Python cluster_audit결정론 Python커버리지 진단 data_scout5.6-terra→ proposals/*.yaml alpha_miner5.6-sol→ manifest 등록 code_engineersonnet-5→ features·sandbox backtest_runner결정론 Python→ metrics.json analyst결정론 · L0~L4→ verdict.json backtest_criticsonnet-5→ critique MD orchestrator/(pipeline · model_resolver · cursor_agent) · sourcing/ · features/ · sandbox/ · registry/(signals·bundles) · promotion/ · combiner · guards/path_guard path_guard가 모든 에이전트 쓰기를 research/ 경계로 강제 · models.yaml 모델 라우팅 · backtest_critic은 다른 계열로 blind-spot 교차검증(verdict 숫자 불변) survive → registry signal → combiner bundle → L5 shadow · L6 paper → promotion pending(사람) · shadow paper 상시가동 → shadow_paper_events_*.jsonl runner/(xsec_paper_session — daemon/xsec_paper_runner 재사용) · paper/(xsec-validate·bundle-forward-validate CLI) · live_validation/(--eod → registry/paper_daily.jsonl) 진입점(데몬) · 대시보드 · 설정 · 배포 daemon/ · dashboard/ · config/ · monitoring/ · deploy/ daemon/ — 진입점(런타임 데몬) market_feed · strategy_runner · etf_day_runner · etf_ha_st_runner tick_archiver · watchdog · collect_vkospi · xsec_paper_runner(research) dashboard/ app.py (FastAPI · WS · 배치트리거) research_feed.py · static/index.html 설정 · 관측 · 배포 config/settings.py · monitoring/(regime·pipeline_stats) deploy/systemd(generate_units) · scripts/*.ps1
일일 트레이딩 보고서
WebSocket 연결 후 보고서 인덱스가 표시됩니다.
용어집 대시보드·시스템에서 쓰이는 영문 약어 풀이