🧪LONGTERM_BACKTEST 는 백테스트 잡(BacktestJob)으로만 생성되는 읽기 전용 장기 백테스트입니다 — 실거래 엔진과 완전히 분리되어 있고, 입출금·승격·수동 편집이 불가합니다. 청산되지 않은 포지션은 통계에 잡히지 않아 Trades / PnL 이 0으로 보일 수 있습니다.
Loading...
Performance
——
TWR Return—
Period PnL (NAV)—
Win Rate—
Trades—
Risk-Adjusted
—Sharpe (annualized)
Sortino (ann.)—
Max Drawdown—
MDD Duration—
Sample (NAV)—
Trade Quality
—Profit Factor
Expectancy / Trade—
Payoff Ratio—
Avg Win / Loss—/—
Max Profit / Worst—/—
Win / Loss Streak—/—
Activity
—Market Exposure
Avg Holding—
Trades / Month—
—
vs BTC
—Alpha vs BTC Hold (TWR)
BTC Hold (TWR)—
Pool Return (TWR)—
Pool Capital—
Sample (NAV)—
Strategy—
Phase—
Run—
State—
NAV—
Idle—
Deployed—
Realized—
Unrealized—
Net—
Tokens—
Open—
Trades—
Best—
Worst—
Sort
Pool을 선택하세요
← 토큰을 선택하면 상세가 표시됩니다
Total PnL-
Realized PnL-
Return %-
Win / Lose-
Win Rate-
Trades-
Avg Dur-
Active-
No token selected
RS~KST
Futures~KST
- 지지/저항 · 1D · 토큰을 선택하세요
실봉(Binance) 기반. ZigZag로 스윙 극점 → 가격 몰림 → 강한 것부터 표기. 지지=초록/저항=빨강은 현재가 기준. (tmp/sr-real.html 이식)
10%클수록 큰 스윙만
2%이 % 안이면 같은 레벨
8
지지 (현재가 아래)
저항 (현재가 위)
현재가
POC · 볼륨 VA(70%)
라벨 = 가격 ×터치수
저점=지지 · 고점=저항 터치점
휠 줌 · 드래그 이동 · 더블클릭 전체
표기된 선 (강한 순)
숫자 = 지지(저점)·저항(고점) 터치수
Trade Timeline
No token selected
Detail Settings
Binance Chart
px (200–800)
1h Indicator Panels
RS Indicator Panels
Trade Timeline
% (15–40)
Tokens
수익손실
Pool을 선택하세요
BTC 국면 데이터를 불러오는 중…
Create New Position Pool
Pool Management
⚠️여기에는 LIVE_TESTING / LIVE_TRADING 풀만 표시됩니다. LONGTERM_BACKTEST(장기 백테스트) 풀은 이 화면에서 생성하거나 관리할 수 없으며, 반드시 백테스트 잡(BacktestJob)을 통해서만 생성·삭제됩니다 (synthetic user_id bt:{jobId}:{overrideIndex}).
UserStrategyPool IDState
Select a pool to view details
💰 Deposit
Adds capital to this pool's accounting ledger and records a DEPOSIT entry.
📌 LIVE_TRADING 풀에서는 서버가 Binance free USDT 와 backing 일치를 검증한다. 부족 시 400.
-
Current free cash: $0.00
Enter an amount to preview the new free cash.
↗ Withdraw
Removes capital from this pool's accounting ledger and records a WITHDRAW entry.
📌 출금 가능 금액은 자유 현금(free cash) 으로 제한된다. 포지션은 자동 청산되지 않는다.
-
Free cash available: $0.00
Enter an amount to preview the new free cash.
🚀 Promote to LIVE_TRADING
Creates a new LIVE_TRADING pool with the same strategy and config,
then deactivates the source LIVE_TESTING pool.
📌 No crypto is transferred — Binance USDT must already be funded on your account.
-
⚖ Binance free USDT is validated server-side on submit. Insufficient balance returns a 400 error with no state change.
Metric
LONGTERM_BACKTEST 완전 가이드
LONG-RANGE PERSISTENT BACKTEST
한 줄 요약 — LONGTERM_BACKTEST(장기 백테스트)는 DB에 영속되는, 잡(Job)으로만 굴러가는 읽기 전용 백테스트 Phase입니다.
실거래 엔진과 완전히 분리되어 실시간으로 거래하지 않고, 잡이 실행될 때만 과거 데이터를 따라 전진합니다.
그래서 라이브 풀에서 당연한 동작(입출금·승격·실시간 체결·자산 곡선 기록)이 여기서는 의도적으로 차단되거나 적용되지 않습니다.
BacktestJob (백테스트 잡) — 장기 백테스트를 정의·실행·재개하는 DB 영속 작업 단위. 하나의 잡이 풀들을 생성하고 소유합니다.
Override (오버라이드) — 한 잡 안에서 비교할 개별 전략 설정. 오버라이드 1개 = 풀 1개. 한 잡으로 여러 설정을 동시에 돌려 비교합니다 (multi-config, 다중 설정).
Synthetic user_id (합성 사용자 ID) — bt:{jobId}:{overrideIndex} 형식. 실제 사용자가 아니라 잡이 풀을 소유함을 나타냅니다.
Chunk (청크) — 백테스트 시간 구간을 1일 단위로 잘라 순차 처리하는 단위. 긴 구간에서 메모리 초과(OOM, Out Of Memory)를 막기 위함입니다.
processed_until (처리 커서) — 어디까지 처리했는지 기록하는 시점. 중단·크래시 후 이 지점부터 재개(resume)합니다.
Frozen strategy (고정 전략) — 실행 도중 설정이 바뀌지 않도록 잠근 전략(FixedStrategyManager). 모든 청크에서 동일 설정 → 재현성 보장.
Closed-only PnL (청산 기준 손익) — 매도(SELL)가 일어난 포지션만 집계하는 실현 손익. 아직 안 판(ON_TRADE) 포지션의 미실현(unrealized) 손익은 제외됩니다.
Promote (승격) — LIVE_TESTING 풀을 검증 후 LIVE_TRADING으로 올리는 동작. 백테스트에는 해당 경로가 없습니다.
라이브 Phase와의 차이 한눈에 보기
항목
LONGTERM_BACKTEST
LIVE_TESTING / LIVE_TRADING
풀 생성
백테스트 잡으로만
+ Pool / Pool Mgmt 에서 수동
풀 삭제
잡 삭제 시 풀+설정 cascade(연쇄) 삭제
수동 삭제
소유자(user_id)
bt:{jobId}:{overrideIndex} (합성)
실제 사용자 ID
실시간 체결
없음 — 잡 실행 시에만 전진
RabbitMQ kline 으로 실시간
입금 / 출금
차단 (불변 시드 자본)
허용
승격(Promote)
없음 (종착 상태)
LIVE_TESTING → LIVE_TRADING
전략 설정
잡 override 에 동결(frozen)
실행 중 변경 가능
실행 방식
1일 청크 + processed_until 재개
연속 스트리밍
다중 설정
한 잡 → 여러 풀 병렬
1 풀 = 1 설정
자산 곡선 스냅샷
제외 (cron 미수집)
시간별 수집
설정 캐시 / 이벤트
비참여 (라이브 엔진 비가시)
config-updated 이벤트로 캐시
영속성
DB 영속 (재시작 후 재개 가능)
DB 영속 (라이브 상태)
참고 — 대시보드 어디에도 안 보이는 BACK_TESTING(메모리 내 즉석 백테스트)은 영속되지 않고 재시작 시 사라집니다. LONGTERM_BACKTEST 는 이를 DB 영속·재개 가능 형태로 만든 것입니다.
① 생성 · 삭제 — 잡이 풀의 생애를 소유
풀은 오직 백테스트 잡으로만 만들어집니다. 잡 1개가 override 배열을 받아 override당 풀 1개를 생성하며, user_id 는 bt:{jobId}:{overrideIndex} 입니다.
잡을 삭제하면 그 잡이 만든 모든 풀과 trading_config 가 함께 cascade(연쇄) 삭제됩니다 — 고아 문서가 남지 않습니다.
대시보드의 + Pool / Pool Mgmt 는 LIVE_TESTING/LIVE_TRADING 만 다루므로 이 풀들은 거기서 보이지도, 편집되지도 않습니다.
② 실거래 엔진과의 완전 분리
실시간 거래 안 함 — 라이브 엔진은 LIVE_TRADING_PHASES(= LIVE_TESTING, LIVE_TRADING)에 속한 풀에만 kline(캔들) 이벤트를 흘립니다. LONGTERM_BACKTEST 는 여기 없어 RabbitMQ 실시간 캔들을 받지 않습니다.
설정 캐시 비참여 — 잡은 config-updated 이벤트를 emit(발행)하지 않아, 라이브 엔진의 설정 캐시에 잡 풀이 들어가지 않습니다.
자산 곡선 — 잡 완료 시 일괄 산출 — 시간별 equity(자산) 스냅샷 cron 은 라이브 phase 전용이라 백테스트 풀에는 돌지 않습니다. 대신 잡이 COMPLETED 될 때 테스트 구간 [from, until] 전체를 한 번에 계산해 기록하므로, 자산 곡선/NAV 지표가 라이브 풀과 동일하게 표시됩니다.
요약: 잡이 돌 때만 합성 kline 으로 포지션이 전진하고, 그 외 시간엔 완전히 멈춰 있습니다.
③ 자본 — 입출금·승격 차단
입금/출금 불가 — 자본 변경은 라이브 phase 화이트리스트(positive allowlist)에서만 허용됩니다. 백테스트 풀의 자본은 잡 생성 시점에 한 번 시드(seed)된 뒤 불변이라, 입출금 시도는 거부됩니다.
초기 자본은 잡 생성 시 주입 — 풀은 0 잔액으로 만들어진 뒤 백테스트 시작 시점 타임스탬프로 시드 입금됩니다. 사용자 지갑이 아니라 잡에 종속됩니다.
승격(Promote) 없음 — LIVE_TESTING→LIVE_TRADING 같은 진급 경로가 없습니다. 백테스트는 라이브 파이프라인과 분리된 종착 상태입니다.
④ 실행 방식 — 청크 전진 · 재개 · 비원자성
1일 청크로 전진 — 긴 구간을 1일씩 잘라 순차 처리하고, 처리한 구간의 데이터는 메모리에서 비워(slide) OOM 을 막습니다.
processed_until 커서로 재개 — 어디까지 처리했는지 잡 문서에 기록합니다. 크래시·리스(lease) 상실 후 /run 재트리거 시 이 커서부터 이어서 실행됩니다.
마지막 청크는 비원자적(non-atomic) — standalone MongoDB(비 replica-set) 제약으로 트랜잭션을 쓰지 않습니다. 포지션 flush 후 커서 저장이 실패하면 재개 시 해당 청크를 다시 처리할 수 있습니다(의도적으로 단순성을 택한 트레이드오프, 비프로덕션 전용).
⑤ 다중 설정 — 한 잡으로 여러 설정 동시 비교
잡의 override 배열이 풀과 1:1 매핑됩니다. 모든 풀이 같은 잡 안에서 청크 단위로 함께 전진하므로, 같은 기간·같은 데이터로 여러 전략 설정을 공정하게 비교할 수 있습니다.
전략 설정(strategy_config)은 잡 override 에만 저장되고 TradingConfig 에는 들어가지 않습니다 → 실행 내내 동결되어 재현성이 보장됩니다.
⑥ 통계 해석 — 왜 Trades / PnL 이 0 으로 보이나
탭 배지의 Trades 와 +$0.00 은 청산된(매도 SELL 이 있는) 포지션만 집계합니다 (closed-only, 청산 기준).
백테스트 데이터 구간이 끝날 때까지 exit(청산) 조건이 trigger 되지 않은 포지션은 ON_TRADE(보유 중)로 남고, 0 · O3 처럼 "청산 0건 · 열린 포지션 3건"으로 표기됩니다. 미실현(unrealized) 손익은 합산에서 빠집니다.
백테스트 종료 시 열린 포지션을 강제 청산(mark-to-market)하지 않으므로, 진입만 하고 모두 미청산이면 Trades 0, 배지 +$0.00 이 정상입니다 — 버그가 아닙니다.
Win Rate · Profit Factor · Sharpe 등 실현 손익 기반 지표는 청산 표본이 쌓여야 의미를 가집니다.