feat: 3-variable macro model (USDKRW+RETAIL_SALES+INVEST_RATE), forced_vars support, methodology sync

This commit is contained in:
Variet Agent
2026-03-11 17:30:06 +09:00
parent f35ab389d5
commit 87725b7c19
4 changed files with 47 additions and 24 deletions

View File

@@ -52,7 +52,8 @@ class MacroZtModel:
zt_series: pd.Series,
macro_data: pd.DataFrame,
method: str = "stepwise_aic",
standardize: bool = True
standardize: bool = False,
forced_vars: Optional[List[str]] = None
) -> "MacroZtModel":
"""
Zt ~ 거시변수 회귀모형 적합
@@ -98,7 +99,14 @@ class MacroZtModel:
X = X.drop(columns=[col])
# 변수 선택
if method == "all":
if forced_vars:
available = [v for v in forced_vars if v in X.columns]
if len(available) != len(forced_vars):
missing = set(forced_vars) - set(available)
logger.warning(f"강제 지정 변수 중 누락: {missing}")
self.selected_vars = available
logger.info(f"강제 지정 변수 사용: {self.selected_vars}")
elif method == "all":
self.selected_vars = list(X.columns)
elif method.startswith("stepwise"):
criterion = "aic" if "aic" in method else "bic"
@@ -280,7 +288,8 @@ class MacroZtModel:
def build_macro_zt_model(
zt_dict: Dict[int, float],
macro_df: pd.DataFrame,
method: str = "stepwise_aic"
method: str = "stepwise_aic",
forced_vars: Optional[List[str]] = None
) -> MacroZtModel:
"""
편의 함수: Zt 딕셔너리 + 거시 DataFrame → 회귀모형 구축
@@ -293,6 +302,8 @@ def build_macro_zt_model(
index=연도, columns=거시변수
method : str
변수 선택 방법
forced_vars : List[str], optional
강제 지정 변수 (지정 시 method 무시)
Returns
-------
@@ -302,6 +313,6 @@ def build_macro_zt_model(
zt_series.index.name = "YEAR"
model = MacroZtModel()
model.fit(zt_series, macro_df, method=method)
model.fit(zt_series, macro_df, method=method, forced_vars=forced_vars)
return model