카테고리 없음

주가의 움직임 #5 - 상관 관계가 있는 두 개의 브라운 운동

horust 2025. 4. 11. 16:25

모든 주식의 수익율이 완전히 따로 놀지는 않습니다. 어떤 주식끼리는 같은 방향으로 움직이기도 하고, 또 어떤 주식들은 서로 다른 방향으로 움직이기도 할 겁니다. 주식 A의 수익율이 브라운 운동을 한다고 가정하면 주가의 흐름을 만들어 낼 수 있습니다. 주식 B도 마찬가지입니다. 그런데 이렇게 만들어 낸 주가의 흐름은 서로 아무런 관련이 없습니다. 만약 주식 A와 B의 수익율 간에 어떤 상관 관계가 있다면 주가의 흐름들도 이를 반영할 수 있어야 합니다.

분산-공분산 행렬

확률 변수들 사이의 공분산은 행렬로 표현할 수 있습니다. 다음은 세 개의 확률 변수 X1, X2, X3 사이의 공분산을 나타낸 행렬입니다. Cov(a,b)=Cov(b,a)이므로 좌상에서 우하로 그은 대각선을 기준으로 상하 대칭이 됩니다.

[Cov(X1,X1)Cov(X1,X2)Cov(X1,X3)Cov(X2,X1)Cov(X2,X2)Cov(X2,X3)Cov(X3,X1)Cov(X3,X2)Cov(X3,X3)]

한편 Cov(a,a)=Var(a)이므로 대각선 상의 값은 분산으로 대체할 수 있습니다.
[Var(X1)Cov(X1,X2)Cov(X1,X3)Cov(X2,X1)Var(X2)Cov(X2,X3)Cov(X3,X1)Cov(X3,X2)Var(X3)]

이렇게 여러 확률 변수들의 분산 그리고 그들 간의 공분산을 표현한 행렬을 분산-공분산 행렬(variance-covariance matrix)라고 합니다.

3개의 확률 변수도 아래와 같이 3x1 행렬로 묶어서 X라고 하겠습니다. 행렬 X의 행과 열을 바꾼 행렬은 전치(transposed) 행렬 XT라고 합니다. X의 1열이 XT에서는 1행이 됩니다.

X=[X1X2X3]

XT=[X1,X2,X3]

위의 분산-공분산 행렬은 행렬 XXT를 이용하여 이렇게 쓸 수 있습니다(주석 (1)). 여기서 Cov(X)는 행렬 X에 속한 모든 확률 변수들 간의 공분산이 들어 있는 행렬이고, E(X)는 행렬 X에 속한 모든 확률 변수들의 기대값이 들어 있는 행렬입니다.

(1)Cov(X)=E(XXT)E(X)E(XT)

그런데 X1, X2, X3가 서로 무관한 독립적인 브라운 운동이라고 합시다. xi는 평균이 0, 분산이 1인 확률 변수로서 브라운 운동에서는 표준 정규 확률 변수를 사용합니다.
Xi=ΔWn,i(t)=xiΔt(i=1,2,3)

그러면 분산-공분산 행렬은 이렇게 됩니다(주석(2)). I는 대각선 상의 값은 모두 1이고 나머지는 모두 0인 항등 행렬(identity matrix)를 말합니다.
(2)Cov(X)=ΔtI

그리고 양변을 Δt로 나눈 행렬은 상관 계수 행렬이 되는데 이 행렬은 항등 행렬이 됩니다(주석(3)).
(3)Corr(X)=1ΔtCov(X)=I

춀레스키 분해

이제부터 상관 관계가 있는 두 개의 브라운 운동 Y1Y2를 만들어 보도록 하겠습니다. 두 개의 브라운 운동을 행렬로 묶어서 Y라고 하겠습니다.
Y=[Y1Y2]

Y1Y2의 상관 계수가 ρ라면 Y의 상관 계수 행렬은 이렇게 됩니다.
(4)Corr(Y)=[1ρρ1]

또 하나의 행렬 X를 정의하겠습니다. X 역시 두 개의 브라운 운동 X1X2로 이루어져 있지만 Y와 다른 점은 서로 독립이라는 것입니다.
X=[X1X2]

그리고 YX와 어떤 상수 행렬 L의 곱으로 나타낼 수 있다고 합시다.

Y=LX

Y의 분산-공분산 행렬을 간단히 정리하면 아래와 같이 됩니다.

Cov(Y)=E(YYT)E(Y)E(YT)(1)=E(YYT)E(Y)=E(YT)=O=E(LX(LX)T)(LX)T=XTLT=E(LXXTLT)=LE(XXT)LT=LΔtILT(2)

(5)Cov(Y)=ΔtLLT

그리고 (5)의 양변을 Δt로 나누면 이렇게 됩니다.
(6)1ΔtCov(Y)=LLT=Corr(Y)(3)

(4)와 (6)이 같아야 하므로 최종적으로 Y의 상관 계수 행렬은 LLT의 곱이 됩니다.
Corr(Y)=[1ρρ1]=LLT

이제 L만 찾으면 Y를 구할 수 있는데 그 방법은 춀레스키 분해(Cholesky Decomposition)라고 합니다. 춀레스키 분해는 어떤 행렬을 하삼각행렬(lower triangular matrix)과 그 전치 행렬의 곱으로 분해하는 방법을 말합니다. 아무 행렬이나 이렇게 분해할 수는 없고 특정한 성질을 갖는 행렬만 가능한데 상관 계수 행렬은 분해 가능하다고 합니다. 그리고 어떤 행렬을 촐레스키 분해를 했을 때 L은 단 하나만 존재한다고 합니다.

Y의 상관 계수 행렬을 춀레스키 분해를 하여 L을 구하면 다음과 같습니다(주석(4)). 하삼각행렬이란 대각선 및 그 아래를 제외하고는 모두 값이 0인 행렬을 말합니다.
L=[10ρ1ρ2]

마지막으로 상관 관계가 있는 두 개의 브라운 운동 Y1Y2는 이렇게 구할 수 있습니다.
Y=LX=[10ρ1ρ2][X1X2]=[X1ρX1+1ρ2X2]

Y1=X1Y2=ρX1+1ρ2X2

상관 계수가 1이면 Y2=X1가 되어 Y1과 같아집니다. 반대로 상관 계수가 -1이면 Y2=X1이 되어 정반대가 됩니다.

몬테카를로 시뮬레이션

엑셀을 이용하여 시뮬레이션을 해 보았습니다. 상관 계수가 -1이면 예상대로 완전히 반대로 움직이는 흐름이 만들어졌습니다.

상관 계수가 -1일때

상관 계수가 1이면 역시 예상대로 완전히 동일한 흐름이 만들어집니다. 두 그래프가 완전히 겹쳐서 하나가 뒤에 숨어서 잘 안보입니다.

상관 계수가 1일때

상관 계수가 0이면 대중이 없는데 예시적으로 하나를 보여 드리면 이렇습니다.

상관 계수가 0일때

주석

(1) 분산-공분산 행렬

Cov(X)=[Var(X1)Cov(X2,X1)Var(X2)Cov(X3,X1)Cov(X3,X2)Var(X3)]=[E(X12)E(X1)2E(X2X1)E(X2)E(X1)E(X22)E(X2)2E(X3X1)E(X3)E(X1)E(X3X2)E(X3)E(X2)E(X32)E(X3)2]=[E(X12)E(X2X1)E(X22)E(X3X1)E(X3X2)E(X32)][E(X1)2E(X2)E(X1)E(X2)2E(X3)E(X1)E(X3)E(X2)E(X3)2]=E([X12X2X1X22X3X1X3X2X32])[E(X1)2E(X2)E(X1)E(X2)2E(X3)E(X1)E(X3)E(X2)E(X3)2]=E(XTX)E(X)E(XT)

(2) 브라운 운동의 분산-공분산 행렬

브라운 운동의 분산은 Δt이고, 서로 독립인 브라운 운동이라면 공분산은 0입니다.
Var(Xi)=Var(xiΔt)=ΔtVar(xi)=ΔtCov(Xi,Xj)=0

따라서 브라운 운동 행렬의 분산-공분산 행렬은 아래와 같이 간단히 표현할 수 있습니다.
Cov(X)=[Var(X1)Cov(X2,X1)Var(X2)Cov(X3,X1)Cov(X3,X2)Var(X3)]=[Δt0Δt00Δt]=Δt[101001]=ΔtI

(3) 브라운 운동의 상관 계수 행렬

브라운 운동 행렬의 분산-공분산 행렬을 Δt로 나누면 상관 계수 행렬이 되는데 이 행렬은 항등 행렬이 됩니다.

Corr(X)=I=1ΔtCov(X)=[Var(X1)ΔtCov(X2,X1)ΔtVar(X2)ΔtCov(X3,X1)ΔtCov(X3,X2)ΔtVar(X3)Δt]=[Var(X1)ΔtCov(X2,X1)ΔtΔtVar(X2)ΔtΔtCov(X3,X1)ΔtΔtCov(X3,X2)ΔtΔtVar(X3)Δt]=[1ρ12ρ13ρ211ρ23ρ31ρ321]=[100010001]

(4) 촐레스키 분해

L은 하삼각행렬이므로 1행 2열은 0이 되어야 합니다.
L=[L110L21L22],LT=[L11L210L22]

LLT=[L112L11L21L21L11L212+L222]=[1ρρ1]

L의 각 원소는 값이 두 개씩 나오는데 부호가 음수인 값은 버립니다. 정확한 이유는 모르겠습니다만 실제로 이 값들을 사용하여 Y를 구해 보면 안되는 것은 맞습니다.
L112=1L11=±1L11L21=±L21=ρL21=±ρL212+L222=ρ2+L222=1L21=±1ρ2

L=[10ρ1ρ2]

참고