392 lines
27 KiB
YAML
392 lines
27 KiB
YAML
meta:
|
||
title: "은퇴자산포트폴리오 — 정수 수량·변동성 타기팅·베이지안 명세"
|
||
parent_file: "RetirementAssetPortfolio.yaml"
|
||
version: "2026-05-16-F3_kosdaq_strict"
|
||
language: "ko-KR"
|
||
timezone: "Asia/Seoul"
|
||
has_code_implementation: true
|
||
code_path: "src/quant_engine/compute_formula_outputs.py"
|
||
purpose: "메인 manifest에서 로드되는 구조화 규칙 명세 파일."
|
||
|
||
position_sizing:
|
||
sequence: ["BUY_PERMISSION_MATRIX_V1", "계좌별 투자 가능 현금", "목표비중", "변동성 조정", "손절가 기준 손실허용액", "유동성 상한", "정수 수량", "매수금액=지정가×수량", "잔여 현금 이월"]
|
||
|
||
pre_permission_gate: # [2026-05-20_APEX_V1] POSITION_SIZE_V1 선행 허가 매트릭스
|
||
purpose: >
|
||
정수 매수수량을 계산하기 전에 현금·Total Heat·선행 알파·돌파 확인·설거지 위험·기대우위를
|
||
하나의 하네스 상태로 잠근다. 이 게이트가 BLOCKED/WATCH이면 POSITION_SIZE_V1을 호출해도
|
||
final_qty는 null 또는 0주 관찰만 허용한다.
|
||
formula_ref: "spec/13b_harness_formulas.yaml:BUY_PERMISSION_MATRIX_V1"
|
||
required_inputs:
|
||
- "cash_floor_status"
|
||
- "heat_gate_status"
|
||
- "alpha_lead_score"
|
||
- "follow_through_state"
|
||
- "distribution_risk_score"
|
||
- "expected_edge"
|
||
states:
|
||
ALLOW_PILOT: "선행 파일럿만 허용. max_tranche_pct 20~30."
|
||
ALLOW_ADD_ON: "FOLLOW_THROUGH_CONFIRM_V1 확인 후 본진입/증액 허용."
|
||
WATCH: "조건 대기. 수량 산출 금지."
|
||
BLOCKED: "매수 차단. 수량 산출 금지."
|
||
hard_rules:
|
||
- "cash_floor_status != PASS → BLOCKED"
|
||
- "heat_gate_status=BLOCK_NEW_BUY → BLOCKED"
|
||
- "distribution_risk_score >= 55 → WATCH 또는 BLOCKED"
|
||
- "alpha_lead_score < 75 AND follow_through_state != CONFIRMED_ADD_ON → WATCH"
|
||
- "expected_edge floor 미달 → BLOCKED"
|
||
output_contract:
|
||
buy_permission_json: "종목별 buy_permission_state, max_tranche_pct, blocked_reason_codes"
|
||
buy_qty_inputs_json: "buy_permission_state가 ALLOW_*가 아니면 final_qty=null"
|
||
prohibition:
|
||
- "BUY_PERMISSION_MATRIX_V1 미출력 상태에서 POSITION_SIZE_V1만으로 신규 BUY 수량 확정 금지"
|
||
- "설거지 차단(BLOCK_BUY)을 시장 해설·뉴스로 완화 금지"
|
||
- "ALLOW_PILOT 상태에서 계획수량 30% 초과 금지"
|
||
|
||
volatility_targeting:
|
||
formula: "수량 = floor((총투자자산 × risk_budget) / (20일 ATR × atr_multiplier))"
|
||
default: {risk_budget: 0.007, atr_multiplier: 1.5}
|
||
risk_budget_note: "0.007은 base값. 수량 산출 전 반드시 cascade_risk_budget_rule 적용 후 최종값 사용. bayesian_confidence.application_order 선행 필수."
|
||
requirements:
|
||
- "20일 ATR·지정가·총투자자산이 모두 확인된 경우에만 정수 수량 산출."
|
||
- "20일 ATR이 [데이터누락]이면 매수수량 0주 처리."
|
||
- "산출 수량은 계좌별 현금·목표비중·섹터한도 중 최솟값으로 재삭감."
|
||
- "ATR 화면값이 장중 지연값인지 종가 기준인지 불명확하면 정수 수량 산출 불가."
|
||
|
||
liquidity_constraint:
|
||
cap:
|
||
core_large_cap: "1회 주문금액은 최근 5거래일 평균 거래대금의 1.0% 이하"
|
||
normal_core: "0.5% 이하"
|
||
satellite: "0.25~0.5% 이하"
|
||
etf: "1.0% 이하. 괴리율·스프레드 미확인 시 0.5% 이하."
|
||
final_quantity_rule: "최종수량 = min(ATR수량, 현금한도수량, 목표비중한도수량, 섹터한도수량, 유동성상한수량)"
|
||
split_order: "산출 주문금액이 유동성 상한의 50% 초과 시 최소 2회 분할."
|
||
execution_quality_guard: # [2026-05-20_APEX_V1]
|
||
formula_ref: "spec/13b_harness_formulas.yaml:EXECUTION_QUALITY_GUARD_V1"
|
||
rule: >
|
||
매수·매도 모두 주문금액이 avg_trade_value_5d의 1%를 초과하면 분할 필요,
|
||
3%를 초과하면 HTS 단일 주문 PASS 금지. 스프레드·호가단위·장중변동성 검증 실패 시
|
||
validation_status=EXECUTION_QUALITY_BLOCKED.
|
||
output_required:
|
||
- "execution_quality_status"
|
||
- "split_count"
|
||
- "child_order_amount_krw"
|
||
- "hts_allowed"
|
||
prohibition:
|
||
- "execution_quality_status!=PASS인데 HTS 주문표 PASS 금지"
|
||
- "시장가 주문 금지. 비상 예외는 하네스 reason_code 필요"
|
||
|
||
bayesian_confidence:
|
||
base_prior: "데이터가 완전하지 않으면 기본 확률 중립 이하. prior 상향은 데이터 완성도 기준으로만. → master_prohibitions.P3"
|
||
multiplier:
|
||
high_confidence: "핵심 필드 모두 OK + 최근 30건 신호 net_expectancy > 0 → risk_budget 1.0배"
|
||
medium_confidence: "핵심 필드 1개 PARTIAL 또는 성과검증 30건 미만 → 0.5배"
|
||
low_confidence: "핵심 필드 2개 이상 PARTIAL/DATA_MISSING → 0.25배"
|
||
no_bet: "ATR20 미확인, Flow_Rows<5, DART_Risk 존재, 상장 리스크, 기대값<=0 → 0주"
|
||
application_order: "volatility_targeting 수량 산출 전 risk_budget에 multiplier 먼저 곱한다."
|
||
performance_brake: # regime_reset은 아래 완전 버전 하나만 유지 (중복 제거)
|
||
rule: "계좌 총자산이 3거래일 연속 하락하거나 최근 5건 매매 승률이 40% 미만 시, 목표 risk_budget을 절반(예: 0.007 → 0.0035)으로 삭감하여 파산확률을 원천 차단한다."
|
||
scope: "price-flow 불일치(kelly.brake_conditions)와는 독립적인 성과 기반 감액 트리거."
|
||
reset_condition: "계좌 총자산 3거래일 연속 회복 AND 연속 5건 매매 승률 50% 이상 복귀 시 risk_budget 단계적 원복. 전액 즉시 복구 금지 — +25%p씩 최대 2회에 걸쳐 순차 복귀."
|
||
equity_curve_protection: # [2026-05-19_ALPHA_SHIELD_APEX_V2] ECP001
|
||
rule: "총자산 곡선이 10일 이동평균선(total_asset_ma10)을 하회할 경우, 시스템 전체 base_risk_budget을 50% 즉시 삭감(0.007 → 0.0035)한다."
|
||
priority: "최상위 리스크 브레이크. 다른 모든 multiplier 적용 전 base 삭감."
|
||
rationale: "개별 종목 승률과 무관하게 계좌 전체 추세가 꺾이면 리스크 노출을 물리적으로 축소."
|
||
regime_reset:
|
||
rule: "시장 국면 전환(KOSPI 20일선 이탈 또는 VIX 25 돌파) 시, 기존 모든 confidence multiplier를 0.5x~0.7x로 강제 리셋하고 신규 데이터 5건 확인 전까지 유예한다."
|
||
recovery_condition: "KOSPI 20일선 안정 회복 AND VIX 18 이하 하락 AND 신규 성과 데이터 5건 이상 확인 후 multiplier 원복 검토 (performance_brake 동일 단계 원복 규칙 준용)."
|
||
prohibition: ["필요수익률 높다는 이유로 multiplier 상향 금지", "뉴스·테마·목표가만으로 high_confidence 부여 금지", "성과검증 표 없으면 high_confidence 금지"]
|
||
# [P_B / 2026-05-15] Net-R 피드백 루프 — performance_evidence 결과가 risk_budget으로 직접 환류하는
|
||
# 명시적 경로 부재로 A등급 금지 시에도 risk_budget 0.007 full 산출 가능한 공백 해소.
|
||
net_return_feedback:
|
||
source: "performance_evidence.pass_fail — net_expectancy 및 downgrade_rule 결과"
|
||
rule_1:
|
||
condition: "최근 20건 net_expectancy <= 0 (비용차감 후 기대값 0 이하)"
|
||
action: "bayesian_multiplier를 medium_confidence(0.5x) 강제 적용. high_confidence 부여 금지."
|
||
note: "performance_evidence.pass_fail.downgrade_rule(A등급 금지)과 중첩 적용."
|
||
rule_2:
|
||
condition: "최근 30건 net_expectancy <= -2%p"
|
||
action: >
|
||
base_risk_budget 0.007 → 0.003 강제 삭감.
|
||
performance_evidence.pass_fail.retire_rule 발동과 동시에 적용.
|
||
해당 신호 타입(섹터·진입 패턴)을 표에 명시하고 LLM 보고서에 RETIRE 표시.
|
||
reset_condition: >
|
||
최근 5건 net_expectancy > 0 회복 후 performance_brake.reset_condition과 동일한
|
||
단계적 원복 규칙 준용 (+25%p씩 최대 2회). 즉각 0.007 복귀 금지.
|
||
output_required:
|
||
- "net_return_feedback 상태: NORMAL / CAUTION(rule_1) / REDUCED(rule_2) / RETIRE"
|
||
- "현재 유효 base_risk_budget 값"
|
||
- "rule_2 발동 시 해당 신호 타입 명시"
|
||
prohibition:
|
||
- "net_expectancy 미산출(거래 20건 미만) 상태에서 이 규칙 적용 금지 — NORMAL로 간주"
|
||
- "→ master_prohibitions.P3 전역 적용 (REDUCED 상태 원복 포함)"
|
||
|
||
kelly:
|
||
status: "brake_only"
|
||
purpose: >
|
||
과유불급. 부정확한 승률 W 기반 증액은 파산 가속기다.
|
||
켈리는 오직 가격-수급 불일치 돌발 상황에서 ATR 수량을 절반으로 깎는 브레이크로만 사용한다.
|
||
increase_allowed: false
|
||
brake_conditions:
|
||
- "가격-수급 불일치: Close 5거래일 연속 하락이나 Frg_5D 또는 Inst_5D만 기계적 순매수 증가"
|
||
- "flow_credit < 0.40 AND 주가 추세 하락 이탈 동시 성립 (flow_credit 정의: quant_feed_contract.investor_flow_rules.active_quality_gate.formula 참조)"
|
||
action: "brake_conditions 해당 시 volatility_targeting ATR수량의 50% 강제 감액 (Half-Brake). 조건 해소 확인 전 원복 금지."
|
||
prohibition:
|
||
- "Kelly 공식으로 risk_budget 증액 금지"
|
||
- "승률 W 단독 추정으로 배팅 계산 금지"
|
||
- "→ master_prohibitions.P3 전역 적용 (kelly brake 해제 포함)"
|
||
|
||
# [Q1 / 2026-05-15] risk_budget 범위 표현이 cascade 기본값(0.007=0.7%)과 겉으로 충돌해
|
||
# LLM이 상한(1.2%=0.012)을 기본값으로 오산출하는 할루시네이션 방지.
|
||
risk_budget:
|
||
base: 0.007 # 총자산의 0.7% — cascade_risk_budget_rule의 base_risk_budget과 동일
|
||
ceiling: 0.012 # 총자산의 1.2% — CSCS >= 90 AND bayesian high_confidence 경우에만 허용
|
||
floor: 0.001 # cascade_risk_budget_rule.floor 참조. 미만이면 no_bet(0주)
|
||
canonical_formula: "cascade_risk_budget_rule을 거친 final값이 실제 적용값. 이 범위는 참고 상한/하한만."
|
||
prohibition: "base(0.007) 무시하고 ceiling(0.012) 직접 사용 금지. 반드시 cascade_risk_budget_rule 통과 후 결정."
|
||
|
||
cascade_risk_budget_rule:
|
||
purpose: >
|
||
kelly Half-Brake × Bayesian 감액이 동시 발동할 때 실제 risk_budget을 명시한다.
|
||
미문서화 상태에서 0주 또는 근사 0주 산출이 반복되는 것을 방지한다.
|
||
step_1_base: "base_risk_budget = volatility_targeting.default.risk_budget (0.007)"
|
||
step_2_bayesian: "bayesian_adjusted = base × bayesian_confidence_multiplier # high:×1.0 / medium:×0.5 / low:×0.25 / no_bet:0주"
|
||
step_3_kelly: "final = bayesian_adjusted × 0.50 # kelly Half-Brake 발동 시에만 적용"
|
||
worst_case_examples:
|
||
high_confidence_kelly_brake: "0.007 × 1.0 × 0.50 = 0.0035"
|
||
low_confidence_kelly_brake: "0.007 × 0.25 × 0.50 = 0.000875 → floor 적용으로 no_bet 처리"
|
||
floor:
|
||
min_risk_budget: 0.001
|
||
action: "산출된 final < 0.001 이면 수량=0주(no_bet). 0.001로 올려 강제 진입 금지."
|
||
no_bet_override: "bayesian_confidence_multiplier=0(no_bet 등급)이면 연쇄 감액 계산 무관하게 수량=0주 강제."
|
||
# [Q6 / 2026-05-15] performance_brake·regime_reset·net_return_feedback 3개 규칙이
|
||
# 동시 발동 시 처리 순서 없어 연쇄 삭감(0.007×0.5×0.5×0.5=0.000875 → 0주)으로
|
||
# 좀비 상태 지속되는 공백 해소.
|
||
simultaneous_trigger_rule:
|
||
purpose: "cascade 외부 성과 기반 규칙(performance_brake·regime_reset·net_return_feedback·equity_curve_protection)이 동시 발동 시 처리 기준."
|
||
rule: >
|
||
세 규칙은 각각 독립적으로 base_risk_budget을 조정한다.
|
||
단, 최종 조정 결과는 cascade_risk_budget_rule의 step_1→step_2→step_3 순서를 따르며,
|
||
외부 규칙들은 step_1의 base_risk_budget 입력값만 변경한다.
|
||
priority_order:
|
||
1: "equity_curve_protection: 자산 MA10 하회 시 base 0.007 → 0.0035 선제 삭감 (ECP001)"
|
||
2: "net_return_feedback (rule_2 발동 시): base를 0.0035 또는 0.007 → 0.003 강제 삭감"
|
||
3: "performance_brake (발동 시): 현재 결과의 50% 추가 삭감"
|
||
4: "regime_reset (발동 시): 결과에 multiplier 0.5x~0.7x 적용"
|
||
deduplication: "동일 규칙이 여러 차례 발동해도 해당 step은 1회만 적용. 중복 삭감 금지."
|
||
floor_check: "모든 단계 적용 후 final < 0.001이면 no_bet(0주). 강제 진입 금지."
|
||
recovery:
|
||
rule: "세 규칙 각각의 reset_condition이 충족되는 순서대로 단계별 원복."
|
||
example: "net_return_feedback 먼저 reset → base 0.003 → 0.007. performance_brake reset → 50% 삭감 해제."
|
||
|
||
execution_cost_gate:
|
||
required: ["왕복수수료", "거래세 또는 세금효과", "예상 호가스프레드", "예상 슬리피지"]
|
||
default_slippage: {core_large_cap: "0.10%", normal_core: "0.20%", satellite: "0.30~0.50%", thin_liquidity: "0.70% 이상 또는 신규매수 금지"}
|
||
net_rr_rule: "비용 차감 후 기대수익비 2:1 미만이면 A등급 금지."
|
||
designated_price_calc:
|
||
buy:
|
||
math: "지정가 = 진입희망가 + (ATR20 × 0.05)"
|
||
purpose: "호가 우선 체결을 위한 소폭 상향 보정. ATR20 미확인 시 사용 금지."
|
||
sell:
|
||
math: "지정가 = 목표가 - (세금+수수료율 합산) - (ATR20 × 0.05)"
|
||
purpose: "비용 선반영 실질 익절가 산출. HTS 입력 기준값."
|
||
on_atr_missing:
|
||
buy: "희망가 그대로 사용. [ATR보정불가] 표기."
|
||
sell: "목표가 그대로 사용. [ATR보정불가] 표기."
|
||
prohibition: "ATR20=DATA_MISSING 상태에서 이 공식 산출값을 [계산값]으로 표기 금지."
|
||
|
||
correlation_check:
|
||
default_sector_cap: 25
|
||
benchmark_core_sector_cap: {normal: "벤치마크 중립비중 + 10%p", risk_on_earnings: "벤치마크 + 15%p, 총자산 65% 초과 금지", risk_off: "벤치마크 중립비중 또는 총자산 50% 중 낮은 값"}
|
||
exception: "삼성전자·SK하이닉스는 special_exception.kospi_semiconductor_leadership, 반도체 ETF는 duplicate_exposure_rule 우선."
|
||
|
||
zero_share: "0주 산출 시 관찰"
|
||
|
||
# [proposal_92 / 2026-05-16] 코스닥 종목 비중 상한 별도 설정
|
||
kosdaq_weight_cap:
|
||
purpose: "코스닥 종목은 유동성·변동성·구조적 리스크가 코스피보다 높으므로 단일 비중 상한을 별도 적용."
|
||
single_stock_max:
|
||
kosdaq_satellite: "총자산 5% — 코스피 위성 7% 대비 -2%p"
|
||
kosdaq_core: "총자산 10% — 코스닥 종목은 코어 편입 후에도 코스피 general core(18%) 상한 미적용"
|
||
aggregate_cap:
|
||
rule: "코스닥 종목 합산(코어+위성) 총자산 20% 이하 유지"
|
||
exception: "삼성전자·SK하이닉스는 코스피 종목이므로 이 캡 미적용"
|
||
action: "초과 시 신규 코스닥 매수 전면 중단. 기존 포지션 손절·익절 실행은 허용."
|
||
staged_entry_size_adjustment:
|
||
purpose: "staged_entry_v2의 코스닥 종목 단계별 투입 비중을 코스피보다 보수적으로 설정"
|
||
stage_1_explore: "코스닥 종목: 총자산 0.3~0.5% (코스피 0.5~1.0% 대비 절반 수준)"
|
||
stage_2_confirm: "코스닥 종목: 총자산 0.8~1.5% (코스피 1.5~3.0% 대비 절반 수준)"
|
||
stage_3_core_load: "코스닥 종목: 총자산 2.0~4.0% (코스피 4.0~7.0% 대비 절반 수준. kosdaq_core 상한 10% 이내)"
|
||
prohibition:
|
||
- "코스닥 종목에 코스피 코어 비중 규칙(18% 상한) 적용 금지"
|
||
- "코스닥 aggregate 20% 초과 시 신규 코스닥 매수 금지"
|
||
- "코스닥 단일 종목 5% 초과를 CSCS 점수만으로 정당화 금지"
|
||
- "staged_entry_v2 실행 시 코스닥 종목에 코스피 투입 비중 그대로 사용 금지"
|
||
|
||
special_exception:
|
||
kospi_semiconductor_leadership:
|
||
principle: "삼성전자·SK하이닉스가 KOSPI를 주도하는 장세에서는 절대비중만으로 매도·매수제한을 결정하지 않는다."
|
||
benchmark_gate:
|
||
rule: "KOSPI 내 삼성전자+SK하이닉스 합산 비중 확인 후 포트폴리오 직접보유 비중과 비교."
|
||
if_missing: "벤치마크 대비 초과비중 판단 금지. 단, 손실예산·현금부족·추세이탈 기준은 적용."
|
||
samsung_electronics:
|
||
target_band: "총자산 32~42%; 주도장에서 45%까지 허용"
|
||
max_weight_soft: "45%"
|
||
hard_stop_weight: "48%"
|
||
add_buy_condition: ["비중 38% 이하", "Price_Status=PRICE_OK, Flow_OK=Y", "20일선 위 또는 눌림 후 지지 확인, 외국인 또는 기관 20D 순매수, 거래대금 급감 아님", "돌파 직후 전량매수 금지", "반도체 실질노출이 semiconductor_total_cap 이내"]
|
||
trim_condition: ["45% 초과 + 현금 7% 미만", "45% 초과 + 20일선 종가 이탈", "45% 초과 + 5D 동반 순매도", "48% 초과 시 초과분 3회 이내 분할 축소"]
|
||
no_trim_condition: ["KOSPI 주도력 유지, 20일선 위, 20D 수급 훼손 없음", "단순히 18% 초과한다는 이유"]
|
||
sk_hynix:
|
||
target_band: "총자산 8~18%; 강한 실적장세·수급 우위에서 22%까지 허용"
|
||
max_weight_soft: "22%"
|
||
hard_stop_weight: "25%"
|
||
add_buy_condition: ["Price_Status=PRICE_OK, Flow_OK=Y", "20일선 위 또는 신고가 후 눌림", "기관 또는 외국인 20D 순매수", "돌파 첫날은 시범진입만", "신규매수 후 단일종목 손실예산 1.0% 이내"]
|
||
trim_condition: ["22% 초과 + 20일선 종가 이탈", "22% 초과 + 5D 동반 순매도", "25% 초과 시 2~3회 분할 축소"]
|
||
semiconductor_total_cap:
|
||
calculation: "삼성전자 + SK하이닉스 + 반도체 ETF 실질노출"
|
||
base_cap: "총자산 60%"
|
||
risk_on_earnings_cap: "총자산 65%; 현금 7% 이상 유지"
|
||
risk_off_cap: "총자산 50%"
|
||
action_above_cap: "중복 ETF → 수급 이탈 종목 → 후순위 반도체 순서 축소. 삼성전자·SK하이닉스 직접보유는 마지막."
|
||
|
||
# [proposal_84 / 2026-05-16] 주도주 리스크 예산 계단 — offensive_risk_budget_ladder
|
||
offensive_risk_budget_ladder:
|
||
purpose: >
|
||
SECULAR_LEADER_RISK_ON 국면에서 삼성전자·SK하이닉스에 한해
|
||
staged_entry 단계별로 risk_budget을 계단형으로 상향한다.
|
||
base 0.007 → stage_2에서 0.009 → stage_3에서 0.0105.
|
||
ceiling 0.012는 어떤 경우에도 초과하지 않는다.
|
||
activation_required_all:
|
||
- "market_regime_state == SECULAR_LEADER_RISK_ON"
|
||
- "종목이 삼성전자 OR SK하이닉스"
|
||
- "CSCS >= 85"
|
||
- "bayesian_confidence == high_confidence"
|
||
- "Total_Heat < 7%"
|
||
- "post_trade_immediate_cash_ratio >= cash_floor.normal.min_cash_ratio (7%)"
|
||
- "Expected_Edge >= 1.8"
|
||
levels:
|
||
level_1_stage1:
|
||
applied_stage: "staged_entry_v2 stage_1 신규 또는 초기 진입"
|
||
risk_budget: 0.007
|
||
note: "base값 그대로. SECULAR_LEADER_RISK_ON 발동만으로 상향 없음."
|
||
level_2_stage2:
|
||
applied_stage: "staged_entry_v2 stage_2_confirm 조건 충족 시"
|
||
activation_extra:
|
||
- "stage_2 진입 조건 충족 (price +1.5% 이상 상승, C2·C4 재확인)"
|
||
- "미실현수익 양수 (현재가 > stage_1 평단가)"
|
||
risk_budget: 0.009
|
||
level_3_stage3:
|
||
applied_stage: "staged_entry_v2 stage_3_core_load 조건 충족 시"
|
||
activation_extra:
|
||
- "20일 신고가 돌파 (종가 기준)"
|
||
- "20D 수급 유지 (C4 지속)"
|
||
- "반도체 sector_flow Rotation_Score 1위"
|
||
risk_budget: 0.0105
|
||
hard_limits:
|
||
- "0.012 ceiling 초과 절대 금지 — 상한은 risk_budget.ceiling과 동일"
|
||
- "Total_Heat >= 7%이면 ladder 비활성. cascade_risk_budget_rule caution 50% 감액 우선 적용"
|
||
- "performance_brake 발동 시 ladder 비활성 (base 0.007에 50% 삭감 적용)"
|
||
- "net_return_feedback REDUCED 발동 시 ladder 비활성 (base 0.003 고정)"
|
||
- "ladder 비활성 조건 해소 전까지 level_2·level_3 미적용. level_1(0.007) 유지."
|
||
deactivation:
|
||
condition: "SECULAR_LEADER_RISK_ON 비활성화 즉시 ladder 전체 비활성. base 0.007로 복귀."
|
||
output_required:
|
||
- "보고서에 [ladder_state: ACTIVE/INACTIVE, 적용 level, risk_budget값] 표기 필수"
|
||
|
||
# [proposal_50 / 2026-05-15] 피라미딩(증액) 규칙 — pyramiding_rule
|
||
pyramiding_rule:
|
||
purpose: "이기는 종목에 증액, 지는 종목은 절대 증액 금지(물타기 금지). 수익 중 종목만 켈리 원칙에 따라 단계적 증액."
|
||
prerequisite: "staged_entry_v2 stage_2 이상 완료, 현재 미실현 수익 양수, anti_climax_buy_gate <= 1"
|
||
scale_in_rules:
|
||
first_add:
|
||
trigger: "진입가 대비 +3~+5% 도달 AND stage_2 수급 조건(C4) 유지"
|
||
size: "기존 보유수량의 20~30% 추가. 총자산 대비 합산 비중 7% 이내 유지."
|
||
method: "지정가. 현재가 기준 -0.3~-0.5% 매수. 추격매수 금지."
|
||
second_add:
|
||
trigger: "진입가 대비 +8~+10% 도달 AND C4 수급 지속 AND sector_priority_ranking Tier_1 유지"
|
||
size: "기존 보유수량의 15~20% 추가. 총자산 대비 합산 비중 10% 이내."
|
||
method: "지정가. 현재가 기준 -0.3~-0.5%."
|
||
max_add_count: "2회. 이후 추가 증액 금지."
|
||
trailing_stop_reset:
|
||
rule: "증액 후 trailing_stop 기준가를 새 평단가 기준으로 재설정. 기존 trailing_stop이 더 빡빡한 경우 기존 기준 유지."
|
||
scale_down_rules:
|
||
MA20_breach: "종가 MA20 하회 시 증액분 우선 청산. 원래 stage_1 수량만 유지."
|
||
sector_weakness: "sector_priority_ranking Tier_2 이하로 강등 시 증액분 전량 청산."
|
||
prohibition:
|
||
- "손실 중 추가매수(물타기) 절대 금지 — 진입가 대비 음수 수익률 종목 증액 금지"
|
||
- "aggregate_risk_cap 초과 증액 금지"
|
||
- "증액 후 합산 비중 total 10% 초과 금지 (special_exception 제외)"
|
||
- "소수점 수량 산출 금지. 정수 단위만."
|
||
|
||
# [proposal_54 / 2026-05-15] 탐색 실패 허용 예산(Failure Cut) — explore_loss_budget
|
||
explore_loss_budget:
|
||
purpose: >
|
||
staged_entry_v2 stage_1 탐색매수의 손절 손익은 이 FC 예산 계정에 귀속.
|
||
performance_brake·net_return_feedback 등 성과 기반 규칙에서 제외하여
|
||
탐색 실패 공포로 인한 공격 슬롯 마비를 방지한다.
|
||
budget:
|
||
formula: "monthly_FC_budget = 총자산 × 0.025 (월 2.5%)"
|
||
note: "매월 1일 초기화. 미사용 잔액은 이월 불가."
|
||
accounting_rules:
|
||
in_scope: "staged_entry_v2 stage_1 탐색 손절, staged_exit_on_stall 타임아웃 청산"
|
||
out_scope: "stage_2 이상 손절, core 손절, stop_loss 정상 발동 손절"
|
||
net_return_exclusion: "FC 귀속 손익은 net_return_feedback.rule_2 판정 계산에서 제외"
|
||
performance_brake_exclusion: "FC 귀속 손익은 performance_brake 발동 판정에서 제외"
|
||
budget_exhaustion:
|
||
condition: "당월 FC 잔액 = 0"
|
||
action: "stage_1 탐색매수 중단. stage_2·stage_3은 정상 가동."
|
||
reset: "다음 달 1일 budget 초기화 → 탐색 재개"
|
||
output_table:
|
||
columns: ["월", "월초예산(원)", "사용금액(원)", "잔액(원)", "당월탐색건수", "당월손절건수"]
|
||
orbit_gap_interaction: # [proposal_81 / 2026-05-15] FC 손절의 orbit_gap 포함/제외 및 FC 소진 시 슬롯 조정
|
||
purpose: "FC 탐색 손절비용의 orbit_gap 계산 포함 여부 및 FC 소진 시 다음 달 슬롯 조정 규칙"
|
||
orbit_gap_treatment:
|
||
rule: "orbit_gap 계산의 실제누적수익률에 FC 손절 비용 포함 (총자산 기준 전체 반영)"
|
||
exception: "performance_feedback_loop의 재교정 계산에서만 FC 분리 적용 (탐색 실패율 별도 추적)"
|
||
rationale: "orbit_gap은 순자산 변화를 측정하므로 FC 손절도 총자산 감소로 반영해야 현실적 궤도 추적 가능"
|
||
fc_exhaustion_rule:
|
||
trigger: "당월 FC 소진율 >= 100% (= monthly_FC_budget 전액 소진)"
|
||
action_next_month:
|
||
stage_1_reduction: "다음 달 탐색매수(stage_1) 허용 건수 -1건 자동 감액"
|
||
output_required: "블록11A section_C FC잔액 항목에 [FC 소진 — 다음 달 stage_1 -1건 적용 예정] 표기"
|
||
reset_condition: "FC 소진율 < 50%인 달이 1개월 경과 시 다음 달부터 감액 해제"
|
||
prohibition:
|
||
- "FC 손절을 orbit_gap에서 제외해 궤도 달성률을 과장 표기 금지"
|
||
- "FC 소진 후 다음 달 슬롯 감액 없이 동일 건수 유지 금지"
|
||
prohibition:
|
||
- "FC 예산 핑계로 stage_1 탐색 손절을 performance_brake에 포함시켜 과도한 규제 금지"
|
||
- "FC 예산 소진 후 stage_1 탐색 강행 금지"
|
||
- "FC 예산을 stage_2 이상 손절에 사용 금지 (별도 계정)"
|
||
|
||
# [proposal_60 / 2026-05-15] 성과 피드백 루프 통합 — performance_feedback_loop
|
||
performance_feedback_loop:
|
||
purpose: >
|
||
daily_leader_scan → staged_entry_v2 → pyramiding_rule → take_profit/stop_loss →
|
||
net_expectancy 측정 → C1~C5 임계치 재교정의 전체 피드백 루프.
|
||
30건 매매 데이터 후 파라미터를 데이터 기반으로 업데이트한다.
|
||
trigger:
|
||
primary: "30건 매매 완료 (탐색 진입 기준 카운트)"
|
||
secondary: "net_expectancy < 0 상태 10건 연속 지속 시 즉시 중간 점검"
|
||
emergency: "손절률 > 55% 또는 평균수익 < 2% 시 즉시 전체 임계치 상향 검토"
|
||
net_expectancy:
|
||
formula: "net_expectancy = (win_rate × avg_win_pct) - (loss_rate × avg_loss_pct)"
|
||
target: "net_expectancy > 0.5% per trade"
|
||
targets:
|
||
win_rate_target: ">= 55%"
|
||
avg_win_target: ">= 4%"
|
||
avg_loss_target: "<= 3.5%"
|
||
note: "explore_loss_budget(FC) 귀속 손절은 별도 집계. net_expectancy 계산 제외."
|
||
recalibration_rules:
|
||
if_win_rate_below_45pct: "탐색 후보 등재 최소 점수 4점 → 4.5점 상향"
|
||
if_avg_loss_above_5pct: "anti_climax_buy_gate 임계치 3개 → 2개 하향 (더 보수적)"
|
||
if_net_expectancy_above_1pct: "탐색 후보 최소 점수 4점 → 3.5점 하향 (MRS <= 3 구간에서만)"
|
||
pyramiding_success_below_50pct: "1차 증액 트리거 +3% → +4%로 상향"
|
||
data_required_per_trade:
|
||
- "입장일·청산일·입장 시 daily_leader_scan 점수(C1~C5 각각)"
|
||
- "입장 단계(stage_1/2/3)·청산 유형·수익률(%)·보유기간"
|
||
- "입장 시 MRS 점수·anti_climax_buy_gate 신호 수"
|
||
prohibition:
|
||
- "30건 미만 데이터로 임계치 변경 금지"
|
||
- "단일 대형 손실 건을 근거로 긴급 임계치 상향 금지"
|
||
- "재교정 결과가 risk_block(master_prohibitions P1~P5)과 충돌하면 재교정 결과 파기"
|