6.9 KiB
Cash Parking
2026-03-30 기준 정리 문서. 이 문서는 현재 실전/비교 대상으로 유지하는 cash parking preset만 다룬다.
Cash parking은 이벤트 엔진이 쓰지 않는 유휴 현금을 장마감 기준으로 별도 sleeve에 파킹하는 기능이다. 현재 추천 구성은 레버리지를 쓰지 않고 QQQM과 SGOV만 사용한다.
목적
- 이벤트 포지션이 비어 있는 시간의 idle cash를 활용한다.
- 본체 이벤트 전략의 DD를 크게 해치지 않으면서 전체 수익을 높인다.
- 과적합을 피하기 위해 전략 하나가 아니라 여러
return_max_long_*전략에 교차검증한 규칙만 유지한다.
현재 유지 preset
qqqm_low_dd
공용 기본 preset.
- risk asset:
QQQM - defensive sleeve:
SGOV - gate:
volatility - 주요 조건
vol_20 < 27.5%temperature <= 1.2entropy_20 <= 1.45mom_20 > 0기반 trend 유지- re-entry margin
0.1% autocorr_20 >= 0
- top-up 규칙
- 기존
QQQMparking sleeve가 진입 후 고점 대비2%이상 밀리면 새 idle cash를 더 얹지 않음 - 막힌 top-up 금액은
SGOV로 보냄
- 기존
qqqm_low_dd_risk25
qqqm_low_dd의 optional 변형.
- 기본 규칙은 동일
- 추가 규칙
- 기존
QQQMparking sleeve가 고점 대비 밀린 구간에서 새 top-up을 하려 할 때 - composite parking risk score가
25를 넘으면 top-up 차단
- 기존
이 preset은 일부 전략에서 수익과 2026 DD를 같이 개선했지만, 모든 전략에서 일관되지는 않았다. 그래서 기본값이 아니라 비교용 optional preset으로만 남긴다.
사용법
experiment config의 overrides.risk에 preset 이름만 넣으면 된다.
{
"overrides": {
"risk": {
"cash_parking_preset": "qqqm_low_dd"
}
}
}
optional variant를 쓰려면:
{
"overrides": {
"risk": {
"cash_parking_preset": "qqqm_low_dd_risk25"
}
}
}
CLI 예시:
fithia2 paper backtest --config 1099 --parking qqqm_low_dd --capital 10000 --start 2022 --end 2026
현재 결론
- 기본 추천:
qqqm_low_dd - 비교 실험용:
qqqm_low_dd_risk25 - 최근에 만든 alias와 실험용 preset은 정리했다.
- 옛 이름
qqqm_v275_t12_e145_ac0_r001,peak020,peak010,tu005등은 더 이상 preset registry에 없다.
대표 검증 결과
아래 수치는 2022-01-01 ~ 2026-03-24 전체 구간, 2026-01-01 ~ 2026-03-24 서브구간 기준이다.
| 전략 | preset | 전체 수익률 | 전체 DD | 2026 수익률 | 2026 DD |
|---|---|---|---|---|---|
return_max_long_v7.70 |
qqqm_low_dd |
1033.65% |
5.57% |
33.55% |
1.73% |
return_max_long_v7.70 |
qqqm_low_dd_risk25 |
1033.74% |
5.57% |
33.55% |
1.73% |
return_max_long_v11.49 |
qqqm_low_dd |
1254.18% |
5.56% |
39.56% |
2.90% |
return_max_long_v11.49 |
qqqm_low_dd_risk25 |
1255.34% |
5.56% |
39.53% |
2.69% |
return_max_long_v12.13 |
qqqm_low_dd |
1329.09% |
5.56% |
40.02% |
2.69% |
return_max_long_v12.13 |
qqqm_low_dd_risk25 |
1332.39% |
5.56% |
40.00% |
2.90% |
교차검증 요약
대표 13개 전략
v7.40, v7.70, v7.98, v8.4, v8.33, v9.2, v9.5, v10.31, v11.41, v11.49, v11.61, v12.13, v12.19
에 대해 검증했다.
qqqm_low_dd_risk25는13개 중 11개에서 전체 수익률이 개선되거나 동일13개 중 10개에서 2026 DD가 개선되거나 동일- 평균 변화
- 전체 수익률
+0.74%p - 2026 DD
-0.073%p
- 전체 수익률
- 하지만
v12.13,v12.19에서는 2026 DD가2.69% -> 2.90%로 나빠졌다
그래서 qqqm_low_dd_risk25는 기본값으로 승격하지 않았다.
최근 수정 사항
의미 없는 일별 churn 버그 수정
이전에는 같은 날짜 안에서 parking target 판정이 두 번 다르게 나와서, 다른 이벤트가 없어도 QQQM을 종가에 팔고 다음 날 다시 사는 식의 무의미한 parking 거래가 반복될 수 있었다.
이 문제는 수정되었고, 현재는 같은 날짜 target이 일관되게 유지된다.
falling sleeve top-up 억제
현재는 기존 QQQM parking sleeve가 자기 고점에서 의미 있게 밀린 상태라면 새 idle cash를 무조건 계속 얹지 않는다. 이 규칙이 없을 때보다 과도한 averaging-in이 줄었다.
아직 남아 있는 한계
- parking만으로
1100%대 수익과7%대 DD를 동시에 안정적으로 만들지는 못했다. return_max_long_v11.49에서 보였던2025-12-09 -> 2025-12-18큰 parking 손실은qqqm_low_dd_risk25로도 직접 해소되지는 않았다.- 즉
risk25는 top-up behavior를 다듬는 규칙이지, 모든 single worst parking trade를 없애는 규칙은 아니다.
과적합 원칙
- 전략 하나에만 좋아지는 규칙은 기본값으로 채택하지 않는다.
peak010,tu005, blocked top-up split, risk-score 발동 보조조건 같은 시도는 일부 전략엔 좋아 보여도 교차검증에서 일관되지 않아 버렸다.- 현재 유지하는 로직은 여러 전략에 대해 다시 돌려도 수치가 재현되는 규칙만 남긴 결과다.
수동 설정
preset 대신 직접 설정하려면 아래가 현재 qqqm_low_dd와 같은 값이다.
{
"overrides": {
"risk": {
"cash_parking_enabled": true,
"cash_parking_symbol": "qqqm",
"cash_parking_gate_mode": "volatility",
"cash_parking_gate_vol_lookback": 20,
"cash_parking_gate_vol_threshold": 0.275,
"cash_parking_temperature_threshold": 1.2,
"cash_parking_entropy_lookback": 20,
"cash_parking_entropy_threshold": 1.45,
"cash_parking_require_trend": true,
"cash_parking_trend_mode": "momentum",
"cash_parking_trend_sma_period": 20,
"cash_parking_trend_reentry_pct": 0.001,
"cash_parking_autocorr_threshold": 0.0,
"cash_parking_topup_max_peak_drawdown_pct": 0.02,
"cash_parking_reserve_pct": 0.0
}
}
}
qqqm_low_dd_risk25는 여기에 아래 한 줄만 추가하면 된다.
"cash_parking_topup_risk_score_max": 25.0
동작 방식
백테스터
매일 다음 순서로 동작한다.
- 아침: parking gate를 확인하고 필요하면 기존 parking sleeve를 청산한다.
- 이벤트 EXIT 처리로 현금이 생긴다.
- 이벤트 ENTRY 처리 중 현금이 부족하면 parking이 자동 청산될 수 있다.
- 저녁: 남은 idle cash를 target symbol에 parking한다.
- 기존과 같은 symbol의 parking sleeve가 있으면 top-up 규칙을 먼저 검사한다.
- top-up이 막히면 그 금액은
SGOV로 간다.
실전/구현 파일
| 파일 | 역할 |
|---|---|
libs/backtest/domain.py |
RiskConfig와 cash parking preset 정의 |
apps/backtester/run.py |
parking gate, top-up, 매수/매도, trade 기록 |
libs/backtest/snapshot_store.py |
vol, momentum, entropy, autocorr 등 macro signal 제공 |
apps/paper_trader/engine.py |
실전/paper trading parking 실행 |