Phase C dry-run·문서화·DB 증분 저장 및 운영 env 동기화

- 1분봉 다운로드 제외, MONITOR_PERSIST로 05/06 수집 시 coins.db INSERT
- Phase C paper_fires 로그·07 모의 리포트, hybrid 시뮬 산출물·reference 문서 갱신
- .env Phase C(LIVE=0), bootstrap dotenv override=True

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dsyoon
2026-06-01 23:32:47 +09:00
parent 3cbfa40aab
commit b9ee241d14
19 changed files with 877 additions and 333 deletions

View File

@@ -6,75 +6,75 @@
"walk_forward": [
{
"month": "2025-06",
"pnl_pct": 10.39,
"pnl_pct": 12.78,
"start_asset_krw": 1000000.0,
"end_asset_krw": 1103874.0
"end_asset_krw": 1127825.0
},
{
"month": "2025-07",
"pnl_pct": 60.89,
"start_asset_krw": 1103874.0,
"end_asset_krw": 1776051.0
"start_asset_krw": 1127825.0,
"end_asset_krw": 1814584.0
},
{
"month": "2025-08",
"pnl_pct": 22.9,
"start_asset_krw": 1776051.0,
"end_asset_krw": 2182728.0
"start_asset_krw": 1814584.0,
"end_asset_krw": 2230083.0
},
{
"month": "2025-09",
"pnl_pct": 57.63,
"start_asset_krw": 2182728.0,
"end_asset_krw": 3440648.0
"start_asset_krw": 2230083.0,
"end_asset_krw": 3515283.0
},
{
"month": "2025-10",
"pnl_pct": 9.29,
"start_asset_krw": 3440648.0,
"end_asset_krw": 3760442.0
"start_asset_krw": 3515283.0,
"end_asset_krw": 3842010.0
},
{
"month": "2025-11",
"pnl_pct": 11.24,
"start_asset_krw": 3760442.0,
"end_asset_krw": 4183047.0
"start_asset_krw": 3842010.0,
"end_asset_krw": 4273771.0
},
{
"month": "2025-12",
"pnl_pct": -0.87,
"start_asset_krw": 4183047.0,
"end_asset_krw": 4146498.0
"start_asset_krw": 4273771.0,
"end_asset_krw": 4236421.0
},
{
"month": "2026-01",
"pnl_pct": 33.77,
"start_asset_krw": 4146498.0,
"end_asset_krw": 5546639.0
"start_asset_krw": 4236421.0,
"end_asset_krw": 5666889.0
},
{
"month": "2026-02",
"pnl_pct": 15.61,
"start_asset_krw": 5546639.0,
"end_asset_krw": 6412274.0
"start_asset_krw": 5666889.0,
"end_asset_krw": 6551242.0
},
{
"month": "2026-03",
"pnl_pct": 9.12,
"start_asset_krw": 6412274.0,
"end_asset_krw": 6996857.0
"start_asset_krw": 6551242.0,
"end_asset_krw": 7148390.0
},
{
"month": "2026-04",
"pnl_pct": 22.86,
"start_asset_krw": 6996857.0,
"end_asset_krw": 8596129.0
"pnl_pct": 22.85,
"start_asset_krw": 7148390.0,
"end_asset_krw": 8782116.0
},
{
"month": "2026-05",
"pnl_pct": 47.58,
"start_asset_krw": 8596129.0,
"end_asset_krw": 12686054.0
"pnl_pct": 47.57,
"start_asset_krw": 8782116.0,
"end_asset_krw": 12959660.0
}
],
"walk_forward_summary": {
@@ -292,7 +292,7 @@
{
"name": "hybrid_holdout_pnl",
"pass": true,
"value": 62.36
"value": 62.35
},
{
"name": "hybrid_max_mdd",
@@ -302,19 +302,19 @@
{
"name": "hybrid_fee_stress_pnl",
"pass": true,
"value": 952.77
"value": 975.74
},
{
"name": "option_c_target_300pct",
"pass": true,
"value": 1120.97,
"value": 1147.3,
"optional": true
}
]
},
"go_no_go_option_c_phase2": {
"go": true,
"gt_capture_ratio": 0.2612,
"gt_capture_ratio": 0.2674,
"targets": {
"phase2_pnl_pct": 1000.0,
"min_gt_capture": 0.23,
@@ -328,17 +328,17 @@
{
"name": "full_pnl_1000pct",
"pass": true,
"value": 1120.97
"value": 1147.3
},
{
"name": "gt_capture_23pct",
"pass": true,
"value": 0.2612
"value": 0.2674
},
{
"name": "holdout_pnl_positive",
"pass": true,
"value": 62.36
"value": 62.35
},
{
"name": "max_mdd",
@@ -348,13 +348,13 @@
{
"name": "fee_stress_ratio",
"pass": true,
"value": 952.77,
"value": 975.74,
"threshold": 850.0
},
{
"name": "slippage_stress_positive",
"pass": true,
"value": 27.66,
"value": 31.58,
"note": "체결가 슬리피지 반영 후에도 흑자"
},
{
@@ -434,19 +434,19 @@
},
"sim_causal_gt": {
"initial_cash_krw": 1000000,
"final_asset_krw": 1146560.0,
"pnl_krw": 146560.0,
"pnl_pct": 14.66,
"total_fees_krw": 2101.0,
"cash_krw": 1146560.0,
"final_asset_krw": 1147944.0,
"pnl_krw": 147944.0,
"pnl_pct": 14.79,
"total_fees_krw": 2025.0,
"cash_krw": 1147944.0,
"holding_qty": 0.0,
"holding_value_krw": 0.0,
"mark_price": 487.0,
"fee_rate": 0.0005,
"trade_count": 134,
"trade_count": 124,
"max_drawdown_pct": 0.96,
"peak_asset_krw": 1117188.0,
"trough_asset_krw": 1106457.0,
"peak_asset_krw": 1118535.0,
"trough_asset_krw": 1107793.0,
"leg_count": 17,
"sizing_mode": "causal_gt_leg_engine",
"sizing_note": "인과 GT leg: split_buy + peak_sell, causal tier 복리 (미래 미사용)",
@@ -461,46 +461,46 @@
"use_local_trough": false
},
"alloc_stats": {
"buy_executed": 101,
"buy_executed": 91,
"buy_skipped": 0,
"sell_executed": 33,
"sell_skipped": 0,
"buy_total_krw": 2026492.0,
"buy_total_krw": 1950020.0,
"large_leg_count": 0,
"large_tier_buy_count": 0,
"buy_amount_avg_krw": 20064.0,
"buy_amount_avg_krw": 21429.0,
"buy_amount_min_krw": 5000,
"buy_amount_max_krw": 57147.0
"buy_amount_max_krw": 57216.0
}
},
"sim_causal_hybrid": {
"initial_cash_krw": 1000000,
"final_asset_krw": 12209700.0,
"pnl_krw": 11209700.0,
"pnl_pct": 1120.97,
"total_fees_krw": 695439.0,
"final_asset_krw": 12473032.0,
"pnl_krw": 11473032.0,
"pnl_pct": 1147.3,
"total_fees_krw": 710297.0,
"cash_krw": 0.0,
"holding_qty": 25071.252612,
"holding_value_krw": 12209700.0,
"holding_qty": 25611.975633,
"holding_value_krw": 12473032.0,
"mark_price": 487.0,
"fee_rate": 0.0005,
"trade_count": 5225,
"max_drawdown_pct": 19.22,
"peak_asset_krw": 1149472.0,
"trough_asset_krw": 928596.0,
"peak_asset_krw": 1174413.0,
"trough_asset_krw": 948744.0,
"sizing_mode": "monitor_dd_tier",
"sizing_note": "monitor buy+sell + drawdown·past-leg tier (미래 미사용)",
"alloc_stats": {
"buy_executed": 1608,
"buy_skipped": 679,
"buy_executed": 1632,
"buy_skipped": 655,
"sell_executed": 2938,
"sell_skipped": 0,
"buy_total_krw": 695591657.0,
"large_leg_count": 1598,
"large_tier_buy_count": 1598,
"buy_amount_avg_krw": 432582.0,
"buy_amount_min_krw": 814.0,
"buy_amount_max_krw": 8437092.0
"buy_total_krw": 710442254.0,
"large_leg_count": 1535,
"large_tier_buy_count": 1535,
"buy_amount_avg_krw": 435320.0,
"buy_amount_min_krw": 828.0,
"buy_amount_max_krw": 8620153.0
},
"input_fires": 5225
},
@@ -510,32 +510,32 @@
},
"sim_tier_enhanced": {
"initial_cash_krw": 1000000,
"final_asset_krw": 485326.0,
"pnl_krw": -514674.0,
"pnl_pct": -51.47,
"total_fees_krw": 111808.0,
"cash_krw": 0.0,
"holding_qty": 996.562036,
"holding_value_krw": 485326.0,
"final_asset_krw": 487437.0,
"pnl_krw": -512563.0,
"pnl_pct": -51.26,
"total_fees_krw": 107068.0,
"cash_krw": 1.0,
"holding_qty": 1000.895401,
"holding_value_krw": 487436.0,
"mark_price": 487.0,
"fee_rate": 0.0005,
"trade_count": 5225,
"max_drawdown_pct": 74.08,
"peak_asset_krw": 1534299.0,
"trough_asset_krw": 397703.0,
"peak_asset_krw": 1540984.0,
"trough_asset_krw": 399432.0,
"sizing_mode": "monitor_tier_enhanced",
"sizing_note": "monitor buy+sell + past-leg·drawdown tier + conviction (미래 미사용)",
"alloc_stats": {
"buy_executed": 183,
"buy_skipped": 2104,
"buy_executed": 279,
"buy_skipped": 2008,
"sell_executed": 2938,
"sell_skipped": 0,
"buy_total_krw": 112251943.0,
"large_leg_count": 144,
"large_tier_buy_count": 144,
"buy_amount_avg_krw": 613399.0,
"buy_total_krw": 107514607.0,
"large_leg_count": 136,
"large_tier_buy_count": 136,
"buy_amount_avg_krw": 385357.0,
"buy_amount_min_krw": 5000,
"buy_amount_max_krw": 1533530.0
"buy_amount_max_krw": 1540213.0
},
"input_fires": 5225
},
@@ -548,156 +548,156 @@
"note": "전기간 복리(causal tier) 후 holdout 구간 자산 증감"
},
"sim_hybrid_holdout": {
"initial_asset_krw": 7813594.0,
"final_asset_krw": 12686054.0,
"pnl_krw": 4872460.0,
"pnl_pct": 62.36,
"initial_asset_krw": 7982769.0,
"final_asset_krw": 12959660.0,
"pnl_krw": 4976891.0,
"pnl_pct": 62.35,
"trade_count": 845,
"note": "전기간 복리(hybrid DD tier) 후 holdout 구간 자산 증감"
},
"sim_hybrid_fee_stress": {
"initial_cash_krw": 1000000,
"final_asset_krw": 10527724.0,
"pnl_krw": 9527724.0,
"pnl_pct": 952.77,
"total_fees_krw": 1261948.0,
"final_asset_krw": 10757384.0,
"pnl_krw": 9757384.0,
"pnl_pct": 975.74,
"total_fees_krw": 1289111.0,
"cash_krw": -0.0,
"holding_qty": 21617.503526,
"holding_value_krw": 10527724.0,
"holding_qty": 22089.084224,
"holding_value_krw": 10757384.0,
"mark_price": 487.0,
"fee_rate": 0.001,
"trade_count": 5225,
"max_drawdown_pct": 19.37,
"peak_asset_krw": 4363286.0,
"trough_asset_krw": 3518190.0
"max_drawdown_pct": 16.02,
"peak_asset_krw": 7104706.0,
"trough_asset_krw": 5966238.0
},
"sim_hybrid_slippage_stress": {
"initial_cash_krw": 1000000,
"final_asset_krw": 1276559.0,
"pnl_krw": 276559.0,
"pnl_pct": 27.66,
"total_fees_krw": 695439.0,
"cash_krw": 0.0,
"holding_qty": 2621.271075,
"holding_value_krw": 1276559.0,
"final_asset_krw": 1315755.0,
"pnl_krw": 315755.0,
"pnl_pct": 31.58,
"total_fees_krw": 710297.0,
"cash_krw": -0.0,
"holding_qty": 2701.755603,
"holding_value_krw": 1315755.0,
"mark_price": 487.0,
"fee_rate": 0.0005,
"trade_count": 5225,
"max_drawdown_pct": 59.37,
"peak_asset_krw": 3404596.0,
"trough_asset_krw": 1383204.0,
"max_drawdown_pct": 59.08,
"peak_asset_krw": 3483599.0,
"trough_asset_krw": 1425625.0,
"slippage_pct": 0.05,
"sizing_mode": "hybrid_slippage_stress"
},
"hybrid_portfolio_walk_forward": [
{
"month": "2025-06",
"pnl_pct": 10.39,
"pnl_pct": 12.78,
"start_asset_krw": 1000000.0,
"end_asset_krw": 1103874.0
"end_asset_krw": 1127825.0
},
{
"month": "2025-07",
"pnl_pct": 60.89,
"start_asset_krw": 1103874.0,
"end_asset_krw": 1776051.0
"start_asset_krw": 1127825.0,
"end_asset_krw": 1814584.0
},
{
"month": "2025-08",
"pnl_pct": 22.9,
"start_asset_krw": 1776051.0,
"end_asset_krw": 2182728.0
"start_asset_krw": 1814584.0,
"end_asset_krw": 2230083.0
},
{
"month": "2025-09",
"pnl_pct": 57.63,
"start_asset_krw": 2182728.0,
"end_asset_krw": 3440648.0
"start_asset_krw": 2230083.0,
"end_asset_krw": 3515283.0
},
{
"month": "2025-10",
"pnl_pct": 9.29,
"start_asset_krw": 3440648.0,
"end_asset_krw": 3760442.0
"start_asset_krw": 3515283.0,
"end_asset_krw": 3842010.0
},
{
"month": "2025-11",
"pnl_pct": 11.24,
"start_asset_krw": 3760442.0,
"end_asset_krw": 4183047.0
"start_asset_krw": 3842010.0,
"end_asset_krw": 4273771.0
},
{
"month": "2025-12",
"pnl_pct": -0.87,
"start_asset_krw": 4183047.0,
"end_asset_krw": 4146498.0
"start_asset_krw": 4273771.0,
"end_asset_krw": 4236421.0
},
{
"month": "2026-01",
"pnl_pct": 33.77,
"start_asset_krw": 4146498.0,
"end_asset_krw": 5546639.0
"start_asset_krw": 4236421.0,
"end_asset_krw": 5666889.0
},
{
"month": "2026-02",
"pnl_pct": 15.61,
"start_asset_krw": 5546639.0,
"end_asset_krw": 6412274.0
"start_asset_krw": 5666889.0,
"end_asset_krw": 6551242.0
},
{
"month": "2026-03",
"pnl_pct": 9.12,
"start_asset_krw": 6412274.0,
"end_asset_krw": 6996857.0
"start_asset_krw": 6551242.0,
"end_asset_krw": 7148390.0
},
{
"month": "2026-04",
"pnl_pct": 22.86,
"start_asset_krw": 6996857.0,
"end_asset_krw": 8596129.0
"pnl_pct": 22.85,
"start_asset_krw": 7148390.0,
"end_asset_krw": 8782116.0
},
{
"month": "2026-05",
"pnl_pct": 47.58,
"start_asset_krw": 8596129.0,
"end_asset_krw": 12686054.0
"pnl_pct": 47.57,
"start_asset_krw": 8782116.0,
"end_asset_krw": 12959660.0
}
],
"hybrid_portfolio_wf_summary": {
"months": 12,
"positive_months": 11,
"positive_ratio": 0.9167,
"mean_pnl_pct": 25.03
"mean_pnl_pct": 25.23
},
"primary_sizing": "hybrid",
"sim_primary": {
"initial_cash_krw": 1000000,
"final_asset_krw": 12209700.0,
"pnl_krw": 11209700.0,
"pnl_pct": 1120.97,
"total_fees_krw": 695439.0,
"final_asset_krw": 12473032.0,
"pnl_krw": 11473032.0,
"pnl_pct": 1147.3,
"total_fees_krw": 710297.0,
"cash_krw": 0.0,
"holding_qty": 25071.252612,
"holding_value_krw": 12209700.0,
"holding_qty": 25611.975633,
"holding_value_krw": 12473032.0,
"mark_price": 487.0,
"fee_rate": 0.0005,
"trade_count": 5225,
"max_drawdown_pct": 19.22,
"peak_asset_krw": 1149472.0,
"trough_asset_krw": 928596.0,
"peak_asset_krw": 1174413.0,
"trough_asset_krw": 948744.0,
"sizing_mode": "primary_hybrid_dd_tier",
"sizing_note": "권장: monitor + past-leg·drawdown tier (검증 통과, 미래 미사용)",
"alloc_stats": {
"buy_executed": 1608,
"buy_skipped": 679,
"buy_executed": 1632,
"buy_skipped": 655,
"sell_executed": 2938,
"sell_skipped": 0,
"buy_total_krw": 695591657.0,
"large_leg_count": 1598,
"large_tier_buy_count": 1598,
"buy_amount_avg_krw": 432582.0,
"buy_amount_min_krw": 814.0,
"buy_amount_max_krw": 8437092.0
"buy_total_krw": 710442254.0,
"large_leg_count": 1535,
"large_tier_buy_count": 1535,
"buy_amount_avg_krw": 435320.0,
"buy_amount_min_krw": 828.0,
"buy_amount_max_krw": 8620153.0
},
"input_fires": 5225
},
@@ -706,11 +706,11 @@
"sim_sized_pnl_pct": 74.69,
"gt_model_capture_ratio": 0.0019,
"causal_gt_capture_ratio": 0.0034,
"sim_causal_gt_pnl_pct": 14.66,
"causal_hybrid_capture_ratio": 0.2612,
"sim_causal_hybrid_pnl_pct": 1120.97,
"tier_enhanced_capture_ratio": -0.012,
"sim_tier_enhanced_pnl_pct": -51.47,
"sim_causal_gt_pnl_pct": 14.79,
"causal_hybrid_capture_ratio": 0.2674,
"sim_causal_hybrid_pnl_pct": 1147.3,
"tier_enhanced_capture_ratio": -0.0119,
"sim_tier_enhanced_pnl_pct": -51.26,
"causal_gt_params": {
"peak_mode": "local",
"pivot_order": 8,