강건 최적화와 팩터 모델로 설계하는 포트폴리오
강건 포트폴리오 최적화와 Fama-French 팩터 모델을 결합해 추정오차를 줄이고 자산배분 리스크를 구조화하는 방법
2026-08-14 · 최초 발행 2024-04-29
평균-분산 최적화는 기대수익 벡터 μ와 공분산 행렬 Σ의 작은 추정오차에도 가중치가 크게 달라질 수 있다. 시장 변동성과 추정오차가 성과를 좌우하는 환경에서는, 팩터로 리스크 구조를 정리하고 불확실한 추정치를 강건하게 다루는 방식이 실무적인 대안이 된다.
강건 포트폴리오 최적화와 Factor Models (Fama-French)를 결합하면 공분산 추정의 잡음을 줄이고, 최악의 경우까지 고려한 자산배분 문제를 구성할 수 있다.
추정치의 불확실성을 포트폴리오 문제에 넣는 방식
평균-분산 최적화(MVO)는 μ와 Σ를 바탕으로 분산을 최소화하거나 효용을 극대화한다. 그러나 데이터가 충분하지 않거나 노이즈가 크면 이 입력값 자체가 불안정해진다.
강건 포트폴리오 최적화는 μ와 Σ의 오차를 불확실성 집합으로 표현하고, 그 범위에서 가장 불리한 상황을 고려해 해를 찾는다. 엘립소이드형·박스형 불확실성 집합과 분포강건 최적화(DRO)가 이 틀에 포함된다.
팩터 모델은 종목 수익률을 시장·규모·가치 같은 공통 요인으로 설명하는 선형 모델이다. Fama-French 3/5-팩터는 시장, SMB, HML, RMW, CMA 요인을 사용하며, 리스크 구조를 추정하고 공분산을 축소하는 데 활용된다.
두 접근을 함께 쓰면 팩터 기반 리스크 모델로 Σ를 안정화하고, μ와 Σ의 불확실성은 강건화로 보완하는 구성이 된다. 외부표본 변동성을 낮추고 턴오버를 안정화하는 것이 목적이다.
리스크 모델과 최적화 문제를 구성할 때 볼 지점
평균수익 μ에는 엘립소이드형 불확실성 집합을 두고 보수성 파라미터 Γ를 조정할 수 있다. 불확실성 집합의 크기는 데이터 길이, 시계열 안정성, 베이지안 사전정보에 따라 결정한다. Σ에는 수축(shrinkage)과 범위 제약(box constraint)을 결합해 변동성이 급등하는 구간에서도 해가 과도하게 흔들리지 않도록 한다.
팩터 리스크 모델은 노출행렬 B, 팩터 공분산 F, 특이 리스크 S를 사용해 다음과 같이 구성한다.
Σ ≈ B F Bᵀ + S
이 표현은 차원을 낮추고 잡음을 억제한다. Fama-French 팩터를 활용하면 설명력과 공분산 추정의 조건수 개선을 기대할 수 있으며, 섹터나 스타일 같은 구조적 제약과도 연결하기 쉽다.
목적함수에는 분산 최소화와 기대수익 극대화를 함께 둘 수 있다. L2/L1 정칙화는 과적합과 턴오버를 제어하는 수단이다. 엘립소이드 강건화에서는 Γ∥w∥₂ 같은 폐형식 보정항으로 최악의 기대수익을 반영한다.
현실의 운용 제약도 문제 정의에 포함해야 한다. 합계=1, 롱온리·레버리지·가중치 박스·섹터 노출·팩터 중립 조건이 여기에 해당한다. 거래비용과 시장충격 페널티까지 목적함수에 반영하면 실행 성능을 함께 고려할 수 있다.
입력은 가격·리턴, 회계·펀더멘털 데이터, Fama-French 팩터로 구성한다. 팩터 적합, Σ 수축, 불확실성 집합 추정, 강건 최적화를 거쳐 포트폴리오 가중치, 팩터 노출, 리스크 기여도, 백테스트 성능을 산출한다.
운용 목적에 따라 달라지는 결합 방식
글로벌 ETF 유니버스의 장기 자산배분에서는 팩터 리스크 모델을 적용한 뒤 엘립소이드 강건화로 기대수익 추정에 대한 민감도를 낮출 수 있다. 분기 리밸런싱, 박스 제약, 거래비용 페널티를 함께 두면 운영 안정성을 확보하기 좋다.
롱온리 퀀트 주식 전략에서는 종목 수준의 Fama-French 5-팩터에 산업·퀄리티 요인을 섞을 수 있다. μ의 신뢰구간을 바탕으로 강건화하면 외부표본 샤프비율 드리프트를 줄이는 방향으로 설계할 수 있다.
마켓 뉴트럴이나 팩터 타이밍 전략은 시장·스타일 중립 제약과 팩터 공분산 기반의 리스크 균형화를 함께 사용한다. DRO는 테일 리스크 구간에서 최악의 분포에 대비하는 방법이 된다.
리스크 패리티에는 순수 변동성 가중만 적용하는 대신, 팩터 리스크 분해와 강건화를 보강할 수 있다. 구조적 상관이 급등할 때 특정 가중치가 비정상적으로 커지는 현상을 억제하는 데 유용하다.
기대할 수 있는 변화와 한계
이 구성을 적용하면 외부표본 변동성 1030% 축소 가능성과 과최적화 억제를 기대할 수 있다. 유니버스와 거래비용에 따라 샤프비율은 1020%p 상대 개선 가능성이 있으며, 턴오버는 15~40% 감소하고 거래비용도 줄어들 수 있다. 팩터 노출이 안정화되고 설명력이 높아지면 운영 관측가능성도 개선된다.
다만 성능·안정성 평가는 일반적 경향이다. 유니버스, 표본 길이, 거래비용에 따라 달라질 수 있다.
| 접근법 | 성능(외부표본 샤프) | 확장성(자산 수 증가) | 일관성(추정 민감도) | 안정성(테일 리스크) | 운영 편의 |
|---|---|---|---|---|---|
| 고전 MVO | 중간, 변동성 큼 | 보통 | 낮음 | 낮음 | 높음 |
| 강건 MVO(엘립소이드) | 중상, 안정적 | 보통 | 중상 | 중상 | 보통 |
| DRO(분포강건) | 상, 보수적 | 보통 | 상 | 상 | 보통~낮음 |
| 팩터 리스크 모델 결합 | 상, 설명력 높음 | 상 | 상 | 중상 | 보통 |
데이터 추정부터 리밸런싱까지의 흐름
추정과 제약을 조정할 때의 선택
μ는 다중 시계열과 단면을 혼합해 추정하고, 베이지안/Black-Litterman으로 사전정보를 주입하는 방식을 고려할 수 있다. Σ에는 Ledoit–Wolf 수축과 팩터 리스크 모델을 우선 적용하고, 특이 리스크 하한을 설정한다. 표본분산 기반 신뢰구간에서 시작해 엘립소이드 반경 Γ를 교차검증으로 조정하며, 노출·섹터·총액·턴오버·레버리지 같은 현실 제약은 사전에 모델링한다.
보수성을 높이는 Γ는 과도한 분산 지향과 기대수익 포기 위험을 키울 수 있다. 팩터 차원 축소는 설명력을 높이는 반면 미설명 특이 리스크를 과대평가할 위험이 있다. L1 정칙화는 희소 가중치를 만들 수 있지만 거래비용 점프가 증가할 가능성도 있다.
엘립소이드 강건화와 팩터 리스크 예제
전제조건: Python 3.10, numpy 1.26+, pandas 2.1+, cvxpy 1.4.2, pandas-datareader 0.10+
가정: 유니버스 50개, 사전 계산된 β, F, S 사용. 교육 목적의 단순화 예제.
# pip install numpy pandas cvxpy pandas-datareader
import numpy as np
import pandas as pd
import cvxpy as cp
np.random.seed(42)
n, k = 50, 5 # 50 assets, 5 factors (FF5)
# 가상의 팩터 공분산(F), 특이 리스크 대각(S), 노출행렬(B) 생성
F = np.diag([0.04, 0.02, 0.02, 0.015, 0.01])
S = np.diag(0.05 * np.ones(n))
B = np.random.randn(n, k) * 0.8
Sigma = B @ F @ B.T + S # 팩터 리스크 기반 Σ
# 기대수익 μ, 추정오차 크기 gamma(엘립소이드 반경) 설정
mu_hat = 0.06 + 0.02 * np.random.randn(n) # 연율 가정
gamma = 0.5 # 보수성 파라미터(교차검증 권장)
risk_aversion = 10.0
# 변수: 가중치
w = cp.Variable(n)
# 엘립소이드 강건화의 보정(최악 기대수익 = mu_hat^T w - gamma ||w||_2)
risk_term = cp.quad_form(w, Sigma)
robust_return = mu_hat @ w - gamma * cp.norm(w, 2)
# 목적함수: 분산 최소화 - 위험선호*강건 기대수익
obj = cp.Minimize(risk_term - (1.0 / risk_aversion) * robust_return)
# 제약: 합계=1, 롱온리 박스, 섹터/팩터 노출 예시(단순화)
constraints = [
cp.sum(w) == 1,
w >= 0, w <= 0.1 # 개별 10% 상한
]
prob = cp.Problem(obj, constraints)
prob.solve(solver=cp.OSQP, verbose=False)
print("Status:", prob.status)
print("Objective:", prob.value)
print("Top weights:", np.round(np.sort(w.value)[-5:], 4))
gamma와 risk_aversion은 롤링 아웃오브샘플 검증과 턴오버 제약을 함께 고려해 조정한다. 거래비용은 목적함수에 λ·||w − w_prev||를 추가하거나 제약으로 구현할 수 있다. 팩터 중립 또는 타겟 노출은 Bᵀw = 노출타겟 제약으로 넣는다.
재적합과 모니터링에서 확인할 항목
팩터 시계열의 결측과 이상치를 검출하고 대체 절차를 명시한다. 리밸런싱 주기마다 β, F, S, μ를 다시 추정하며, 상관 급등·변동성 점프·유동성 위축 시나리오로 스트레스 테스트를 수행한다.
노출 임계치나 위험예산을 초과하면 자동 리밸런싱 룰이 작동하도록 정의한다. 모니터링 대시보드에서는 실현 변동성, 샤프, 턴오버, 코스트, 팩터 RC를 관제한다. 강건화의 효과는 불확실성 집합 설계, 수축 공분산, 제약과 비용 반영, 교차검증 기반 파라미터 튜닝이 같은 절차 안에서 일관되게 작동할 때 확인할 수 있다.