diff --git a/.env.example b/.env.example index 0bf6dc4..1251a9f 100644 --- a/.env.example +++ b/.env.example @@ -1,38 +1,155 @@ -# DeepCoin — .env.example (비밀값 없음). 복사: cp .env.example .env +# DeepCoin — .env.example (비밀값 없음). 복사: cp .env.example .env 후 키만 채우세요. # Python: conda activate ncue && pip install -r requirements.txt +# --- 빗썸 API --- BITHUMB_ACCESS_KEY= BITHUMB_SECRET_KEY= +BITHUMB_API_URL=https://api.bithumb.com +BITHUMB_API_CANDLE_COUNT=200 +BITHUMB_MINUTE_INTERVALS=1,3,5,10,15,30,60,240 +HTS_API_RETRY_SLEEP_SEC=0.5 + +# --- 텔레그램 (선택, 알림 미사용 시 비워도 됨) --- COIN_TELEGRAM_BOT_TOKEN= COIN_TELEGRAM_CHAT_ID= +# --- 거래 대상 --- SYMBOL=WLD -CHART_LOOKBACK_DAYS=365 -# 01 다운로드 — 주봉(10080)·월봉(43200) 2년치 -DOWNLOAD_INTERVALS_WM=10080,43200 -DOWNLOAD_MONTHS_WM=24 -WEEK_INTERVAL_MIN=10080 -MONTH_INTERVAL_MIN=43200 +COIN_NAME=월드코인 -# 01 다운로드 (1분봉 제외 — 시뮬·MTF는 3분 이상만 사용) +# --- 경로 --- +DB_PATH=data/coins.db +GROUND_TRUTH_FILE=data/ground_truth/ground_truth_trades.json + +# --- 타임프레임 (분) --- +DAILY_INTERVAL_MIN=1440 +ENTRY_INTERVAL=3 +TREND_INTERVAL_1H=60 +TREND_INTERVAL_1D=1440 +ALL_INTERVALS=3,5,10,15,30,60,240,1440 DOWNLOAD_INTERVALS=3,5,10,15,30,60,240,1440 -DOWNLOAD_MONTHS=12 -# 05/06 루프마다 API 봉을 coins.db에 증분 저장 (01과 동일 append_data) -MONITOR_PERSIST_CANDLES=1 -# 05/06 시작 시 누락·지연 봉 자동 증분 (scripts/00_sync_ops.py 동일) -OPS_SYNC_ON_START=1 -OPS_SYNC_MAX_LAG_BARS=2 +GENERAL_ANALYSIS_INTERVALS=3,5,10,15,30,60,240,1440,10080,43200 +TIMING_INTERVALS=3,5,10,15 +TREND_INTERVALS=60,240,1440,10080,43200 +INTERVAL_PREFIX=3:m3,5:m5,10:m10,15:m15,30:m30,60:m60,240:m240,1440:d1,10080:w1,43200:mo1 -# 02 Ground Truth · 시뮬·live 배분 공통 초기 자금 +# --- 볼린저 / RSI --- +BB_PERIOD=20 +BB_STD=2 +BB_MIN_WIDTH_PCT=0.8 +RSI_PERIOD=14 +DISPARITY_PERIODS=5,20,60 +DISPARITY_OVERBOUGHT=105 +DISPARITY_OVERSOLD=95 +MACD_FAST=12 +MACD_SLOW=26 +MACD_SIGNAL=9 +STOCH_K_PERIOD=14 +STOCH_D_PERIOD=3 +STOCH_SMOOTH_K=3 +STOCH_OVERSOLD=20 +STOCH_OVERBOUGHT=80 +TREND_RANGE_MA_GAP_PCT=0.5 + +# --- MTF 정렬 --- +ALIGN_RSI_OVERSOLD=35 +ALIGN_RSI_OVERBOUGHT=65 +ALIGN_RSI_CONFLICT_TIMING_LOW=40 +ALIGN_RSI_CONFLICT_TIMING_HIGH=65 +ALIGN_RSI_CONFLICT_TREND_LOW=40 +ALIGN_RSI_CONFLICT_TREND_HIGH=65 +ALIGN_BB_POS_LOW=0.2 +ALIGN_BB_POS_HIGH=0.8 + +# --- 다운로드 / DB --- +DOWNLOAD_MONTHS=12 +INCREMENTAL_OVERLAP_BARS=3 +DOWNLOAD_BACKFILL_EXTRA_BARS=200 +DOWNLOAD_MIN_INCREMENTAL_BARS=50 +DOWNLOAD_DAILY_EXTRA_DAYS=20 +CHART_LOOKBACK_DAYS=365 +DB_READ_LIMIT_DEFAULT=7000 +DB_ROW_WARMUP_BARS=200 +DB_ROW_MIN_DAILY_BARS=100 +DB_ROW_DAILY_PADDING_DAYS=30 + +# --- Ground Truth --- +GT_MIN_SWING_PCT=4.0 +GT_PIVOT_ORDER=20 +GT_MIN_BARS_BETWEEN=30 +GT_MAX_ROUND_TRIPS=24 +GT_SELECTION_MODE=split_buy_peak_sell +GT_MIN_LEG_PCT=8.0 +GT_BUY_MIN_SWING_PCT=3.0 +GT_BUY_BB_MAX=0.45 +GT_BUY_MIN_BARS=24 +GT_MAX_BUYS_PER_LEG=12 +GT_MAX_SELLS_PER_LEG=2 +GT_SELL_SPLIT_GAP_PCT=2.5 +GT_MARKER_SIZE_MIN=10 +GT_MARKER_SIZE_MAX=32 GT_INITIAL_CASH_KRW=400000 +TRADING_FEE_RATE=0.0005 +GT_UNLIMITED_CHRONOLOGICAL_DAYS=300 + +# --- 모니터 --- +MONITOR_LOOP_SLEEP_SEC=180 +MONITOR_POOL_WORKERS=12 +MONITOR_DEFAULT_INTERVAL=60 +MONITOR_API_RETRIES=3 +MONITOR_API_BONG_COUNT=3000 +MONITOR_SLEEP_AFTER_REQUEST_SEC=0.5 +MONITOR_SLEEP_RATE_LIMIT_SEC=5 +MONITOR_SLEEP_BETWEEN_CHUNKS_SEC=0.3 +MONITOR_API_CHUNK_BARS=200 +MONITOR_MA_WINDOWS=5,20,40,120,200,240,720,1440 +MONITOR_NORM_WINDOW=20 +MONITOR_TELEGRAM_BATCH_SIZE=20 + +# --- general_analysis --- +GA_COL_PREFIX=ga_ +LOOKBACK_BARS=3:120,5:100,10:80,15:60,30:50,60:40,240:30,1440:60,10080:12,43200:6 +CONTEXT_TAIL_ROWS=3:6000,5:5000,10:4000,15:3000,30:2000,60:1500,240:800,1440:500,10080:120,43200:48 +GA_DEFAULT_TAIL_EXPORT=200 +GA_PATTERN_TOLERANCE_PCT=2.5 +GA_VP_BINS=30 +GA_VP_VALUE_AREA_PCT=0.70 +GA_HV_ROLLING_BARS=20 +GA_HV_PERCENTILE_WINDOW=120 +GA_HV_ANNUALIZE_SQRT=339.41148133 +GA_DIVERGENCE_LOOKBACK=10 +GA_SMA_PERIODS=5,20,60,120 +GA_EMA_SPANS=12,26 +GA_ATR_PERIOD=14 +GA_KELTNER_ATR_MULT=2 +GA_AO_FAST=5 +GA_AO_SLOW=34 +GA_LINREG_WINDOW=20 +GA_ADX_PERIOD=14 +GA_ADX_TREND_THRESHOLD=25 +GA_SUPERTREND_ATR_MULT=3 +GA_VOL_SPIKE_MULT=1.8 +GA_VOL_MA_WINDOW=20 +GA_CCI_PERIOD=20 +GA_WILLIAMS_PERIOD=14 +GA_ROC_PERIOD=10 +GA_MFI_PERIOD=14 +GA_CMF_PERIOD=20 +GA_DONCHIAN_PERIOD=20 +GA_BB_SQUEEZE_WINDOW=50 +GA_BB_SQUEEZE_QUANTILE=0.2 +GA_PIVOT_ORDER=3 +GA_PSAR_AF_START=0.02 +GA_PSAR_AF_STEP=0.02 +GA_PSAR_AF_MAX=0.2 + +# --- .env.example 누락 키 추가 (2026-06-01) --- GT_MIN_ORDER_KRW=5000 GT_BUY_PCT_LARGE_LEG=1.0 GT_BUY_PCT_SMALL_LEG=0.05 GT_LARGE_LEG_TOP_PCT=0.2 -# 시뮬·스캔: 1=인과적(운영 정합), 0=사후 ZigZag(정답 라벨용) GT_SIGNAL_CAUSAL=1 SIM_CAUSAL_TIER=1 -# 인과 GT leg 엔진 (scripts/04_causal_gt_calibrate.py) CAUSAL_GT_PEAK_MODE=local CAUSAL_GT_MIN_LEG_PCT=5.0 CAUSAL_GT_MIN_BARS_BETWEEN_LEGS=60 @@ -41,7 +158,6 @@ CAUSAL_GT_DD_LARGE_PCT=5.0 CAUSAL_GT_DD_MEDIUM_PCT=2.0 GT_BUY_PCT_MEDIUM_LEG=0.25 SIM_TIER_CONVICTION_DD_PCT=10.0 -# hybrid tier 승격 (auto=검증 통과 시 hybrid) SIM_PRIMARY_SIZING=auto SIM_HYBRID_MIN_HOLDOUT_PNL_PCT=0.0 SIM_HYBRID_MAX_MDD_PCT=30.0 @@ -52,25 +168,17 @@ SIM_OPTION_C_MIN_GT_CAPTURE=0.23 SIM_HYBRID_PORTFOLIO_WF_MIN_RATIO=0.5 GT_BUY_WEIGHT_RULE=inverse_price_normalized GT_SELL_SPLIT_WEIGHTS=0.65,0.35 - -# 04 매칭 MATCH_LABEL_MODE=leg_gt MATCH_HOLDOUT_RATIO=0.15 MATCH_MONITOR_MAX_PER_SIDE=1 - -# 1 시뮬레이션 SIM_GO_WF_POSITIVE_RATIO=0.5 SIM_FEE_STRESS_MULT=2.0 - -# 05 알림 (Phase C: MONITOR_LOOP_SLEEP_SEC=180 권장) -# 쿨다운 = 최소 봉 간격(3분)과 동일. 루프 주기 MONITOR_LOOP_SLEEP_SEC=180 +# 3분봉(MATCH_PRIMARY_INTERVAL=3) — 규칙·알림 쿨다운 1봉 MONITOR_ALERT_COOLDOWN_MIN=3 MONITOR_ALERT_KRW_AMOUNT=40000 -MONITOR_LOOP_SLEEP_SEC=180 -MATCH_LIVE_CACHE_SEC=180 - -# 3 실거래 (운영, LIVE=1 필수) +# Phase B-1: 실거래 (06_execute_live.py 만 빗썸 주문 — 05는 알림만) LIVE_TRADING_ENABLED=1 +# LIVE_* 원화 한도: GT_INITIAL_CASH_KRW(40만) — B-1: 일한도 1배, 손실 10%, 1회참고 10% LIVE_ORDER_KRW=40000 LIVE_BUY_PCT_LARGE=1.0 LIVE_BUY_PCT_SMALL=0.05 @@ -79,9 +187,8 @@ LIVE_COOLDOWN_MIN=3 LIVE_MAX_TRADES_PER_DAY=15 LIVE_DAILY_LOSS_LIMIT_KRW=40000 LIVE_SLIPPAGE_PCT=0.05 -# 시뮬 sim_causal_hybrid 와 동일: fire_outcomes monitor 발화 부트스트랩 +# 06: 시뮬 sim_causal_hybrid 정합 — fire_outcomes monitor 발화 부트스트랩 LIVE_HYBRID_BOOTSTRAP_FIRES=1 - # 07 일일 24h 수익률 텔레그램 (scripts/07_daily_pnl_telegram.py) DAILY_PNL_REPORT_ENABLED=1 DAILY_PNL_REPORT_HOUR=19 @@ -89,3 +196,15 @@ DAILY_PNL_REPORT_MINUTE=0 DAILY_PNL_REPORT_TZ=Asia/Seoul DAILY_PNL_SNAPSHOT_ON_LIVE=1 DAILY_PNL_SNAPSHOT_RETENTION_DAYS=90 +# 05/06 루프 시 봉 DB 증분 · live_eval 캐시(루프 주기와 동일) +MONITOR_PERSIST_CANDLES=1 +MATCH_LIVE_CACHE_SEC=180 +# 05/06 시작·루프마다 지연 봉 자동 보완 (간격당 허용 지연 = 간격분×OPS_SYNC_MAX_LAG_BARS) +OPS_SYNC_ON_START=1 +OPS_SYNC_MAX_LAG_BARS=2 + +# --- 주·월봉 다운로드 (01_download) --- +DOWNLOAD_INTERVALS_WM=10080,43200 +DOWNLOAD_MONTHS_WM=24 +WEEK_INTERVAL_MIN=10080 +MONTH_INTERVAL_MIN=43200