Lemma
수학, 거꾸로
도입 · 두 위험, 더 안전한 한 조합

위험한 자산 두 개를 섞으면 왜 더 안전해질 수 있을까?

같은 평균 수익률, 같은 변동성을 가진 주식 둘. 하나만 들면 — 위험. 다른 하나만 들면 — 똑같이 위험. 그런데 절반씩 섞으면 — 그 조합이 두 자산 각각보다 위험할 수 있다. 가끔은 훨씬 덜. 우연도 수수료 구조도 아니다. 이차식의 교차항 하나가 그 일을 하고, 그 이차식은 벡터 모듈이 합의 제곱 길이를 쓸 때 나오는 식과 똑같다.

위험은 더해지지 않는다 — 상관계수를 통해 엮인다. 위험은 단일 수익률이 아니라 가능한 수익률의 에서 출발한다. 최소 분산 비중을 찾는 일은 두 자산이면 닫힌 형식, 고차원이면 반복으로 푸는 최적화다.

위젯 — 포트폴리오 믹서
ρ0.00
비중 w (A)50.0%
σ_p (현재)0.707
σ_p (최소 @ w*)0.707
결합 수익률 · A 대 B
A →B ↑
포트폴리오 분산 σ²_p, w의 함수
0.250.500.751.000.00.51.0w (fraction in A)
w* = 0.50
두 자산, 둘 다 평균 수익률 5%, 표준편차 σ = 1. 어떤 비중이든 평균은 똑같은 5%. 그러나 분산은 다르다. 점선은 섞지 않을 때의 기준 (σ² = 1). 초록 점은 분산 최소 비중 w*. 주황 점은 네가 고른 비중. ρ = +1에서 곡선은 1의 평평한 직선 — 섞어도 얻는 게 없다. ρ = 0에서 곡선은 w = 0.5에서 0.5까지 내려간다. ρ = −1에서는 0에 닿는다 — 위험이 완전히 사라진다. 같은 기대 수익, 전혀 다른 위험. 2 w (1−w) ρ σ_A σ_B의 교차항이 그 지렛대.
흐름
1

위험 = 분산 — 'risky'가 실제로 측정하는 것

금융에서 _위험_은 _최악의 경우 얼마나 잃을 수 있는가_가 아니라 _결과가 평균 주변에서 얼마나 흔들리는가_를 줄여 부르는 말이다. 표준 도구는 : Var(r)=E[(rμ)2]Var(r) = E[(r − μ)²] — 평균에서 벗어난 편차를 제곱한 기대값. 그 제곱근인 표준편차 σσ는 수익률과 단위가 같고, 사람들이 흔히 “변동성”이라 부르는 양이 바로 이것이다. σ가 두 배면 그런 의미에서 “두 배 위험”, 절반이면 “절반의 위험”이다. 완벽한 대용품은 아니다 (한 번 크게 폭락하는 차트와 매일 자잘하게 흔들리는 차트는 σ가 같아도 성격이 다르다). 그래도 이차식 수학이 펼쳐지는 좌표가 바로 분산이다. 현대 포트폴리오 이론, CAPM, 샤프 지수 — 모두 분산 위에 서 있다.

2

두 자산, 네 개의 수

자산 A, B를 고른다. 각각 평균 수익률과 분산이 있다: μA,σA2,μB,σB2μ_A, σ_A², μ_B, σ_B². A에 비중 ww, B에 비중 1w1−w로 섞는다. 조합의 평균은 어렵지 않다 — 가중 평균이다:

μp=wμA+(1w)μBμ_p = w μ_A + (1−w) μ_B

평균만 보면, μ가 같은 자산을 섞는 건 의미가 없다 — 똑같은 μ가 나올 뿐이다. 그런데 조합의 _분산_에는 두 항이 아니라 항이 있다:

σp2=w2σA2+(1w)2σB2+2w(1w)Cov(A,B)σ_p² = w² σ_A² + (1−w)² σ_B² + 2 w (1−w) Cov(A, B)

앞 두 항은 짐작대로다 — 각 자산의 분산에 비중의 제곱을 곱한 것. 놀라운 건 세 번째, 이다. 이게 교차항이고, 섞어서 무언가를 얻거나 잃는 지점이다. A와 B가 같이 움직이면 (양의 공분산) 섞을수록 위험이 쌓이고, 반대로 움직이면 (음의 공분산) 섞을수록 위험이 상쇄된다.

import numpy as np

# Two assets: same mean return 5%, same standard deviation σ = 1.
# We'll compute portfolio mean and variance for any (weight, correlation).
mu_A, mu_B = 0.05, 0.05
sig_A, sig_B = 1.0, 1.0

def portfolio(w, rho):
    """w: fraction in A; (1-w) in B. rho: correlation of returns."""
    mu  = w * mu_A + (1 - w) * mu_B
    var = (w**2 * sig_A**2
         + (1 - w)**2 * sig_B**2
         + 2 * w * (1 - w) * rho * sig_A * sig_B)
    return mu, var

# Same expected return regardless of weight (because mu_A == mu_B).
# Variance is what moves.
[(rho, *portfolio(w=0.5, rho=rho)) for rho in (1.0, 0.0, -1.0)]
# → [(1.0,  0.05, 1.00),    perfect lockstep — no diversification benefit
#    (0.0,  0.05, 0.50),    independent — variance halves at 50/50
#    (-1.0, 0.05, 0.00)]    perfect anti — risk literally vanishes
3

상관계수 — 정규화된 공분산

공분산은 단위가 어색하다 (A의 단위 × B의 단위). 그래서 단위 없는 버전을 쓴다: ρ=Cov(A,B)/(σAσB)ρ = Cov(A, B) / (σ_A σ_B), 범위는 [1,1][−1, 1]. 분산 공식은 이렇게 된다:

σp2=w2σA2+(1w)2σB2+2w(1w)ρσAσBσ_p² = w² σ_A² + (1−w)² σ_B² + 2 w (1−w) ρ σ_A σ_B

세 가지 경우가 있다. ρ=+1ρ = +1 — 완전히 같이 움직이면 — σpσ_p는 그저 σAσ_AσBσ_B의 가중 평균이다. 섞어서 얻는 게 없다. ρ=0ρ = 0 — 독립이면 — 교차항이 사라지고, σp2σ_p²는 분산의 가중 평균 아래로 떨어진다. ρ=1ρ = −1 — 정반대로 움직이면 — 교차항이 큰 _음수_가 된다. σA=σBσ_A = σ_B이고 w=1/2w = 1/2일 때 분산은 정확히 0이 된다. 위험이 줄어드는 정도가 아니라 아예 사라진다. 위 위젯은 이 세 경우를 다이얼 하나로 훑어 보여준다.

# Minimum-variance weight, closed form.
# Take d/dw of σ²_p(w) and set to zero:
#   w* = (σ_B² − ρ σ_A σ_B) / (σ_A² + σ_B² − 2 ρ σ_A σ_B)
def min_var_weight(rho, sig_A=1.0, sig_B=1.0):
    num = sig_B**2 - rho * sig_A * sig_B
    den = sig_A**2 + sig_B**2 - 2 * rho * sig_A * sig_B
    return num / den if abs(den) > 1e-12 else 0.5

[(rho, min_var_weight(rho)) for rho in (-1, -0.5, 0, 0.5, 0.99)]
# → [(-1,    0.50),    A and B equally weighted — perfect cancellation
#    (-0.5, 0.50),    still 50/50 because σ_A = σ_B
#    (0,    0.50),
#    (0.5,  0.50),
#    (0.99, 0.50)]
# With σ_A = σ_B the answer is always 0.5; differing σ's would tilt w*.
4

이건 벡터의 |a + b|²와 같은 대수

포트폴리오 분산 공식은 금융이 새로 발명한 게 아니다 — 벡터 합의 제곱 길이 공식에 금융 용어를 입힌 것일 뿐이다. 수익률을 무작위 벡터로 보자. 각 자산이 2D 벡터의 한 성분이고, 포트폴리오는 그 가중 결합이다. 벡터 모듈의 제곱 길이 항등식:

a+b2=a2+b2+2ab|a + b|² = |a|² + |b|² + 2 a · b

a2|a|²w2σA2w² σ_A²로, b2|b|²(1w)2σB2(1−w)² σ_B²로, 내적 aba · bw(1w)Cov(A,B)w (1−w) Cov(A, B)로 바꿔 보자 — 포트폴리오 분산이 그대로 복원된다. 공분산은 무작위 변수에 정의된 내적이다. 둘 사이 각도의 코사인이 바로 _상관계수_다. “두 자산이 직각” = 무상관, “두 자산이 같은 방향” = 양의 상관, “두 자산이 반대 방향” = 음의 상관이고, 이 짝이 서로를 _상쇄_한다.

벡터 모듈이 물리·그래픽·ML·그리고 금융에서까지 쓰이는 이유가 여기에 있다 — 같은 두 연산 (더하기, 늘이기)이 베지에 제어점을 움직이고 포트폴리오를 만든다. 응용들이 정리를 공유하는 게 아니라 대수를 공유한다.

5

분산 최소 비중

d/dw[σp2]=0d/dw [σ_p²] = 0. 한 줄짜리 미분 문제다. 답:

w=(σB2ρσAσB)/(σA2+σB22ρσAσB)w* = (σ_B² − ρ σ_A σ_B) / (σ_A² + σ_B² − 2 ρ σ_A σ_B)

σA=σBσ_A = σ_B이면, 모든 ρρ에 대해 w=1/2w* = 1/2로 정리된다. 변동성이 같은 두 자산의 가장 안전한 조합은 언제나 반반이다. σAσBσ_A ≠ σ_B이면 식이 한쪽으로 기운다 — 변동성이 낮은 자산이 더 큰 비중을 받지만, 그 기울기는 ρρ에도 달려 있다. 위젯은 ww*를 분산 곡선 위 초록 점으로 표시한다. ρρ를 움직여 보면 그 주변에서 곡선이 평평해지거나 날카로워진다. 본격적인 _현대 포트폴리오 이론_의 일반화 — N개 자산, N×N 공분산 행렬, 제약 아래에서 이차식을 최소화하는 문제 — 도 결국 같은 계산을 벡터-행렬 형태로 옮겨 적은 것일 뿐이다. 한 짝, 세 항, 한 교차항. 나머지는 장부 정리다.

# Sanity check via Monte Carlo: simulate joint returns at given ρ,
# form the 50/50 portfolio, measure realized variance, compare to formula.
import numpy as np

def simulate(rho, n=200_000, seed=0):
    rng = np.random.default_rng(seed)
    z1 = rng.standard_normal(n)
    z2 = rng.standard_normal(n)
    a = mu_A + sig_A * z1
    b = mu_B + sig_B * (rho * z1 + np.sqrt(1 - rho**2) * z2)
    p = 0.5 * a + 0.5 * b
    return p.mean(), p.var()

formula = portfolio(w=0.5, rho=-0.5)
sim     = simulate(rho=-0.5)
formula, sim
# → ((0.05, 0.25), (0.0501, 0.2503))
# Closed form and simulation agree to three decimals.
# The whole MPT machinery from Markowitz onward sits on top of this single
# scalar identity; the rest is generalizing to N assets and adding
# constraints (no shorts, sector caps, etc.).
이제 깨봐

ρ = 0은 독립이라는 뜻이 아니라 선형으로 무상관이라는 뜻이다. A와 B가 비선형 관계 (예: B = A²)로 단단히 묶여 있어도 대칭 범위에서는 ρ ≈ 0이 나올 수 있다. 포트폴리오 분산 공식은 ρ를 그대로 쓰기 때문에 이런 경우엔 위험을 과소평가한다. 2008년 이전의 quant 전략들이 과거 ρ만으로 짝을 줄세우다 비싸게 배운 교훈이다. 분산은 이차 모멘트일 뿐이고, 나머지는 더 높은 모멘트와 copula에 들어 있다. 여기 수학은 가정 아래에서는 정확하다 — 위험은 그 가정 안에 숨어 있다.

위험은 더해지지 않는다 — 상관계수를 통해 엮인다. 포트폴리오 분산은 w2σA2+(1w)2σB2+2w(1w)ρσAσBw² σ_A² + (1−w)² σ_B² + 2 w (1−w) ρ σ_A σ_B — 세 항, 그 중 한 교차항. 섞어서 얻는 것이 바로 이 교차항이고, 음수가 될 수도 있다. 그래서 위험한 두 가지를 합쳤을 때 각자보다 더 안전할 수 있다.

exercises · 손으로 풀기
1손으로 계산 · 50/50 평균계산기 없이

자산 A의 평균 수익률 μA=8%μ_A = 8\%, B는 μB=12%μ_B = 12\%. 50/50 조합을 든다. 포트폴리오 평균 수익률은? 이제 25% A, 75% B로 기울이면 무엇이 변하는가?

2ρ = 1 · 왜 섞기가 도움 안 되는가계산기 없이

A, B 둘 다 σ=1σ = 1, ρ=1ρ = 1 (완전한 동조). w=0.5w = 0.5에서 σpσ_p를 계산하라. w=0w = 0 (전부 B), w=1w = 1 (전부 A)과 비교해 보라.

3ρ = −1 · 마법 같은 상쇄

둘 다 σ = 1, 이번엔 ρ=1ρ = −1이다. σp=0σ_p = 0이 정확히 되는 ww가 있다는 것을 보이고, 그 값을 찾아라. 실제 포트폴리오가 이걸 이룰 수 없는 이유는?

4사악한 것 · 수익률만 최대화

자산 A: μA=12%μ_A = 12\%, σA=0.20σ_A = 0.20. 자산 B: μB=8%μ_B = 8\%, σB=0.10σ_B = 0.10, ρ=0.0ρ = 0.0. “상식적인” 투자자는 이렇게 말한다: A의 기대 수익이 더 높고 기간도 같으니 A에 올인. 섞은 조합이 위험 조정 수익 (무위험 수익률 위 μ를 σ로 나눈 값)에서 더 나을 수 있음을 보여라. w = 0.5에서 σ_p를 계산해 σ_A와 비교하라.

왜 교과서는 이렇게 안 가르치나

금융 강의는 포트폴리오 분산을 새로운 항등식처럼 들이민다. 공분산 행렬은 출처 없이 등장한다. 선형대수 강의는 내적과 제곱 길이를 다루면서도 내적이 곧 포트폴리오를 부분의 합 이상으로 만드는 바로 그 연산이라는 사실을 짚지 않는다. 둘은 같은 수학 조각이다. Lemma는 a+b2=a2+b2+2ab|a + b|² = |a|² + |b|² + 2 a · bσp2=w2σA2+(1w)2σB2+2w(1w)Cov(A,B)σ_p² = w² σ_A² + (1−w)² σ_B² + 2 w (1−w) Cov(A, B) 옆에 나란히 두어 그 동일성을 눈으로 보게 한다. 현대 포트폴리오 이론, 샤프 비율, efficient frontier — 모두 이 항등식 위에 차원과 제약을 더 쌓아 올린 것이다. 새로운 수학이 필요한 게 아니라, 장부 정리를 견딜 인내심이 필요할 뿐이다.

용어집 · 이 페이지에서 쓰임 · 4
distribution·분포
_불확실성의 모양_. 가능한 결과들에 확률이 어떻게 배분돼 있는가. 이산 분포는 각 결과에 수를 매긴다 — `P(X = "고양이") = 0.6, P(X = "강아지") = 0.3, P(X = "새") = 0.1`. 연속 분포는 구간 위에 *밀도*를 배분한다 — 정확히 한 점에 확률은 없고, 구간 위에서만 있다. 이산은 합이, 연속은 적분이 1이어야 한다 — _무엇인가는 일어나야_ 하니까. 확률 하나는 수 한 개이고, 분포는 그 뒤에 있는 모양 전체다. 모델이 예측하는 양, 자산이 낼 수 있는 수익, 픽셀이 가질 수 있는 값 — 대부분은 단일 수가 아니라 분포다. 그리고 그 분포의 *퍼짐*이 종종 중심값보다 더 중요하다.
variance·분산
확률량이 평균에서 떨어진 거리의 제곱의 기대값. 평균 `μ`인 수익률 `r`에 대해 `Var(r) = E[(r − μ)²]`. 단위가 원래 단위의 *제곱*이라 보통은 그 제곱근인 *표준편차*를 쓴다. 분산은 금융에서 *위험*의 표준 척도다: "최악에 얼마나 잃을 수 있나?"가 아니라 "결과가 평균 주변에서 얼마나 흔들리나?". 같은 평균 수익률이라도 분산이 크게 다를 수 있고, 그 격차가 포트폴리오가 단순한 부분의 합 이상인 이유 전체다.
covariance·공분산
분산의 두 변수 친척. 확률량 `X`와 `Y`에 대해 `Cov(X, Y) = E[(X − μ_X)(Y − μ_Y)]`: 두 양의 평균-편차의 곱의 기대값. 둘이 같이 움직일 때 (둘 다 평균 위에, 둘 다 평균 아래에 있을 때) 양수, 반대로 움직일 때 음수, 결합 운동이 평균적으로 상쇄될 때 0. 분산은 `Cov(X, X)`의 특수한 경우일 뿐. 공분산은 포트폴리오에서 두 자산을 연결하는 것 — 분산 공식의 교차항이 `2 w_A w_B Cov(A, B)`이고, 분산투자가 그 문으로 들어간다.
correlation·상관계수
공분산을 `[−1, 1]`에 살도록 정규화한 것. `ρ(X, Y) = Cov(X, Y) / (σ_X · σ_Y)`. 원시 공분산보다 좋은 점: _단위 없음_, _스케일 없음_ — "더 상관됐다"가 일별 수익률을 비교하든 연별 수익률을 비교하든 같은 의미를 갖는다. `ρ = 1`: 두 변수가 한 몸으로 움직임 (같은 방향, 고정 비율). `ρ = -1`: 완벽한 반대 움직임. `ρ = 0`: 선형 무상관 — 단, *독립*이라는 뜻은 _아니다_. 상관계수는 결합 운동의 선형 부분만 본다. 분산투자의 핵심은 `ρ < 1`인 짝을 찾는 것.