ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ง ๋ฉํฐํฉํฐ(Multi-Factor) ์ ๋ต – ํฉํฐ๋ฅผ ์กฐํฉํด ์์ฅ์ ์ด๊ธฐ๋ ๋ฒ
octo54 2025. 10. 13. 13:32๐ง ๋ฉํฐํฉํฐ(Multi-Factor) ์ ๋ต – ํฉํฐ๋ฅผ ์กฐํฉํด ์์ฅ์ ์ด๊ธฐ๋ ๋ฒ
ํํธ ํฌ์๋ฅผ ์กฐ๊ธ์ด๋ผ๋ ๊ณต๋ถํด๋ณธ ์ฌ๋์ด๋ผ๋ฉด
“๊ฐ์น, ๋ชจ๋ฉํ
, ํ๋ฆฌํฐ, ์ ๋ณ๋์ฑ” ๊ฐ์ ๋จ์ด๊ฐ ์ต์ํ ๊ฒ๋๋ค.
๊ทธ๋ฐ๋ฐ ์ด๊ฑธ ํ๋์ฉ ๋ฐ๋ก ์ฐ๋ ๋์ , **์กฐํฉ(๋ฉํฐํฉํฐ)**ํ๋ฉด ์ฑ๊ณผ๊ฐ ์ด๋ป๊ฒ ๋ ๊น์?
์ค๋์ ๋ฐ๋ก ๊ทธ “ํฉํฐ ์กฐํฉ์ ๊ณผํ”์ ์ด์ผ๊ธฐํฉ๋๋ค.
๋จ์ผ ํฉํฐ๋ณด๋ค ๊ฐ๋ ฅํ๊ณ , ์์ฅ ๋ณ๋์๋ ๋ ์ ๋ฒํฐ๋ ์ ๋ต์
๋๋ค.
1. ๋ฉํฐํฉํฐ ์ ๋ต์ด๋?
- ์ฌ๋ฌ ํฉํฐ๋ฅผ ๊ฒฐํฉํด ๊ฐ๊ฐ์ ์ฝ์ ์ ๋ณด์ํ๊ณ ๊ฐ์ ์ ํฉ์น๋ ๋ฐฉ์
- ์: ๊ฐ์น(Value)๋ก ์ ํ๊ฐ ์ข ๋ชฉ ์ ๋ณ → ํ๋ฆฌํฐ(Quality)๋ก ์์ ์ฑ ๊ฒ์ฆ → ๋ชจ๋ฉํ (Momentum)์ผ๋ก ์์น ์ถ์ธ ํ์ธ
๐ ์ค์ ๋ก ๋ธ๋๋ก(BlackRock), MSCI, AQR Capital ๊ฐ์ ๊ธ๋ก๋ฒ ์ด์ฉ์ฌ๋ค์
์์ฒด ๋ฉํฐํฉํฐ ETF๋ฅผ ์ด์ฉํ๋ฉฐ, ์์ญ ๋
๋ฐ์ดํฐ๋ก ๋จ์ผ ํฉํฐ๋ณด๋ค ๋ณ๋์ฑ ๋๋น ์์ต๋ฅ ์ด ๋์์ ์
์ฆํ์ต๋๋ค.
2. ํฉํฐ ๊ฐ ์๊ด๊ด๊ณ ์ดํด
ํฉํฐ ๊ฐ์ ์ฝ์ ์ํธ๋ณด์ ๊ด๊ณ
| ๊ฐ์น | ์ ํ๊ฐ ์ข ๋ชฉ ๋ฐ๊ตด | ์ฅ๊ธฐ ์ ์ฒด ๊ฐ๋ฅ | ๋ชจ๋ฉํ , ํ๋ฆฌํฐ |
| ๋ชจ๋ฉํ | ์์น ์ถ์ธ ํฌ์ฐฉ | ํ๋ฝ์ฅ์ ์ฝํจ | ๊ฐ์น, ์ ๋ณ๋์ฑ |
| ํ๋ฆฌํฐ | ์ฌ๋ฌด ์์ ์ฑ ํ๋ณด | ์์ต๋ฅ ํ๋ฒ | ๊ฐ์น, ๋ชจ๋ฉํ |
| ์ ๋ณ๋์ฑ | ํ๋ฝ ๋ฐฉ์ด | ์์น์ฅ์ ์ฝํจ | ๋ชจ๋ฉํ , ๊ฐ์น |
๐ก ํต์ฌ: ์๋ก ๋ฐ๋ ์ฌ์ดํด์ ๊ฐ์ง ํฉํฐ๋ฅผ ์์ด์ผ ์ ์ฒด ํฌํธ๊ฐ ํ๋ค๋ฆฌ์ง ์๋๋ค.
3. ๋ฉํฐํฉํฐ ์ ๋ต ์ค๊ณ ์์
โ ์ ๋ต 1: ๊ฐ์น + ํ๋ฆฌํฐ
PER < 10
PBR < 1
ROE > 10%
๋ถ์ฑ๋น์จ < 100%
๐ ์ธ๋ฉด์๋ ๋ ์ ๋ฒ๋ ๊ธฐ์ . “๊ณ ROE ์ PBR ์ ๋ต”์ ๊ธฐ๋ณธํ
โ ์ ๋ต 2: ๋ชจ๋ฉํ + ์ ๋ณ๋์ฑ
์ต๊ทผ 6๊ฐ์ ์์ต๋ฅ ์์ 30%
1๋
๋ณ๋์ฑ ํ์ 30%
๐ “์ค๋ฅด์ง๋ง ์์ ์ ์ผ๋ก ์ค๋ฅด๋” ์ข
๋ชฉ.
ํนํ ๊ฒฝ๊ธฐ ํ๋ณต๊ธฐ·์๋งํ ์์น์ฅ์ ์ ํจ.
โ ์ ๋ต 3: ๊ฐ์น + ๋ชจ๋ฉํ + ํ๋ฆฌํฐ (3ํฉํฐ ํ์ด๋ธ๋ฆฌ๋)
PBR < 1
ROE > 10%
์ต๊ทผ 6๊ฐ์ ์์ต๋ฅ ์์ 30%
๐ ๋ฐฑํ ์คํธ ๊ฒฐ๊ณผ (KRX, 2005~2023)
- ์ฐํ๊ท ์์ต๋ฅ : ์ฝ 17~20%
- MDD: -28% ์์ค (์์ฅ ๋๋น ์ ๋ฐ ์์ค)
- ์คํ์ง์: 1.3 ์ด์ (์ฐ์ํ ์ํ๋๋น ํจ์จ)
4. ํฌํธํด๋ฆฌ์ค ๊ตฌ์ฑ ์์
ํฉํฐ ์กฐํฉ ๋น์ค ํฌ์ ๋์
| ๊ฐ์น + ํ๋ฆฌํฐ | 40% | ์ฝ์คํผ ๋ํ์ฃผ |
| ๋ชจ๋ฉํ | 30% | ์ฝ์ค๋ฅ ์ค์ํ์ฃผ |
| ์ ๋ณ๋์ฑ ETF | 20% | TIGER ์ ๋ณ๋์ฑ |
| ๊ธ๋ก๋ฒ ETF | 10% | VYM, QQQ |
๐ ์ด๋ ๊ฒ ๊ตฌ์ฑํ๋ฉด ํ์ชฝ ์์ฅ์ด ํ๋ค๋ ค๋ ํฌํธ ์ ์ฒด ์์ ์ฑ ํ๋ณด
5. ์๋ํ ์์ (ํ์ด์ฌ ๊ธฐ๋ฐ)
# yfinance + pandas ์์
import yfinance as yf
import pandas as pd
tickers = ["005930.KS", "000660.KS", "035420.KS", "068270.KQ"]
data = {}
for t in tickers:
df = yf.download(t, period="1y")
df["returns"] = df["Close"].pct_change()
df["vol"] = df["returns"].rolling(60).std()
df["ma120"] = df["Close"].rolling(120).mean()
data[t] = df
# ๋จ์ ๋ฉํฐํฉํฐ ์์: ์ต๊ทผ 6๊ฐ์ ์์ต๋ฅ + ๋ฎ์ ๋ณ๋์ฑ
summary = []
for t, df in data.items():
momentum = (df["Close"].iloc[-1] / df["Close"].iloc[-120]) - 1
vol = df["vol"].mean()
score = momentum - vol
summary.append((t, momentum, vol, score))
pd.DataFrame(summary, columns=["Ticker", "Momentum", "Vol", "Score"]).sort_values("Score", ascending=False)
๐ ์ด๋ ๊ฒ ํ๋ฉด **๋ชจ๋ฉํ (์์น๋ฅ )**๊ณผ **๋ฆฌ์คํฌ(๋ณ๋์ฑ)**์ ๋์์ ๊ณ ๋ คํ ์ข ๋ชฉ ์์๋ฅผ ๋ฝ์ ์ ์์ต๋๋ค.
6. ์ฃผ์ํ ์
- ํฉํฐ ๊ฐ ์ค๋ณต ๋ฐฉ์ง: ๋น์ทํ ๋ฐ์ดํฐ(์: PER/PBR) ์ค๋ณต ์ฌ์ฉ X
- ๊ณผ์ต์ ํ ํผํ๊ธฐ: ๋จ๊ธฐ๊ฐ ์ฑ๊ณผ๋ง ๋ณด๊ณ ์กฐํฉ ๋ณ๊ฒฝ ๊ธ์ง
- ๊ฑฐ๋๋น์ฉ ๊ณ ๋ ค: ํฉํฐ๊ฐ ๋ง์์ง์๋ก ๋ฆฌ๋ฐธ๋ฐ์ฑ ๋น์ฉ↑
๐ ์ ๋ฆฌ
- ๋ฉํฐํฉํฐ ์ ๋ต์ ๋จ์ผ ์ ๋ต์ ๋จ์ ์ ๋ณด์ํ๋ “๊ท ํํ ํํธ ํฌํธํด๋ฆฌ์ค”
- ์กฐํฉ ํต์ฌ: ์๊ด๊ด๊ณ๊ฐ ๋ฎ์ ํฉํฐ๋ผ๋ฆฌ ์๊ธฐ
- ๋ฐฑํ ์คํธ + ๋ฆฌ์คํฌ ๊ด๋ฆฌ + ์๋ํ๋ก ์์ฑ ๊ฐ๋ฅ
๐ ๋ค์ ๊ธ์์๋ **“ํฉํฐ ๋กํ
์ด์
(Factor Rotation) – ์์ฅ ๊ตญ๋ฉด๋ณ ์ ๋ฆฌํ ํฉํฐ ์ฐพ๊ธฐ”**๋ฅผ ๋ค๋ฃน๋๋ค.
์ฆ, ๊ฒฝ๊ธฐ ์ฌ์ดํด์ ๋ฐ๋ผ ์ด๋ค ํฉํฐ๊ฐ ๊ฐ์ฅ ๊ฐํ์ง๋ฅผ ์ค์ ๋ฐ์ดํฐ๋ก ๋ถ์ํด๋ด
๋๋ค.
๋ฉํฐํฉํฐ์ ๋ต,ํํธํฌ์,๊ฐ์น๋ชจ๋ฉํ ํ๋ฆฌํฐ,ํฉํฐ์กฐํฉ,์ค๋งํธ๋ฒ ํ,ํํธ๋ฐฑํ ์คํธ,์ฃผ์๋ฐ์ดํฐ๋ถ์,ํฌํธํด๋ฆฌ์ค์ ๋ต,๋ฆฌ์คํฌ๊ด๋ฆฌ,ํฉํฐํฌ์
'์ฃผ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- Docker
- ์น๊ฐ๋ฐ
- ์ฟ ๋ฒ๋คํฐ์ค
- Python
- NestJS
- ์๋ฐ๋ฉด์
- REACT
- JAX
- JWT
- kotlin
- Express
- ๋ฐฑ์๋๊ฐ๋ฐ
- PostgreSQL
- flax
- rag
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
- nextJS
- DevOps
- Prisma
- SEO์ต์ ํ
- Redis
- seo ์ต์ ํ 10๊ฐ
- fastapi
- CI/CD
- node.js
- ai์ฒ ํ
- ํ๋ก ํธ์๋๊ฐ๋ฐ
- llm
- ๋ฅ๋ฌ๋
- Next.js
| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |

