팩터 포트폴리오는 특정 섹터에 구조적으로 집중될 수 있습니다. 예를 들어 저PBR 가치 팩터는 금융·조선·철강에 과도하게 쏠리고, 모멘텀 팩터는 IT·바이오에 집중되는 경향이 있습니다. 섹터 중립화는 이 편향을 제거해 팩터 순수 신호만으로 종목을 선별합니다.
중립화 미적용
저PBR 전략 → 금융주 50% 집중 → 금리 상승기에 금융 섹터 동반 하락 → 팩터 리스크가 아닌 섹터 리스크로 손실
섹터 중립화 적용
각 섹터 내에서 독립 랭킹 → 모든 섹터에서 고르게 상위 종목 선택 → 팩터 신호만 순수하게 반영된 포트폴리오
python
import pandas as pd
def sector_neutral_score(
df: pd.DataFrame,
score_col: str = 'score',
) -> pd.Series:
"""섹터 내 백분위 랭킹으로 섹터 중립 팩터 스코어 생성"""
return (
df.groupby('sector')[score_col]
.rank(pct=True) # 섹터 내 상대 순위 (0~1)
)
df['value_sn'] = sector_neutral_score(df, 'value_score')
df['momentum_sn'] = sector_neutral_score(df, 'mom_score')
df['composite'] = (
0.40 * df['value_sn'] +
0.35 * df['momentum_sn'] +
0.25 * df['quality_score']
)
def apply_sector_cap(
selected: pd.DataFrame,
max_sector_weight: float = 0.25,
) -> pd.DataFrame:
"""섹터별 비중 상한 적용"""
max_count = int(len(selected) * max_sector_weight)
return (
selected
.sort_values('composite', ascending=False)
.groupby('sector')
.head(max_count)
)KOSPI/KOSDAQ 섹터 분류 기준
한국거래소(KRX)의 GICS(글로벌 산업분류기준) 또는 FnGuide의 섹터 분류를 사용하세요. KOSDAQ 바이오는 헬스케어로 별도 분리해야 모멘텀 팩터의 바이오 과집중을 효과적으로 통제할 수 있습니다.
섹터 중립화 강도 선택
- 소프트 중립화: 섹터 내 상대 랭킹만 사용, 섹터 간 비중은 자유
- 하드 중립화: 벤치마크(KOSPI200 등) 섹터 비중에 포트폴리오를 고정
- 섹터 뷰(view)가 없다면 소프트 중립화로 시작하는 것을 권장