Factor Model
MVO 모델에서 n개 주식을 optimization하기 위해서는 n개의 수익률 기댓값, n개의 분산, n(n-1)/2개의 공분산, 총 2n + n(n-1)/2 개의 값을 알아야 한다. 이 때 n의 값이 커지면 매우 많은 값들을 예측해야지만 최적화를 진행할 수 있다. 가령, 1000개의 주식의 경우 501,500개의 값들을 알아야지만 MVO를 진행할 수 있다. 때문에 이러한 단점을 MVO의 단점을 보완하는 방법 중 하나가 바로 Factor Model 이다.
- MVO 모델에 비해 간단한 접근을 제공
- 랜덤한 n개의 주식 수익률들은 개별자산들에 영향을 주는 랜덤한 몇몇 작은 수의 팩터들로 나타낼 수 있음
- 팩터모델은 개별자산 수익률들과 팩터요인들의 관계를 나타내며, 이는 개별자산간 공분산의 간소화된 구조를 가질 수 있도록 해줌
- 거시경제, 회사의 규모, 퀀트요인들 모두가 팩터로 사용될 수 있음
Instead of estimating individual values or information of individual stocks, we just come up with the factors that describe the overall movement, and describe the individual stock returns using these factors.
개별주식들의 수익률, 분산, 공분산을 일일이 추정하는 것이 어렵기 때문에 팩터모델을 사용한다. 팩터모델이란 개별주식의 수익률을 나타내는 요인들을 찾아서 그 요인들로 주식의 수익률들을 표현하는 것이다.
각각의 학생들이 매주 몇시간을 공부하는 지를 알고자 할 때, 각각 학생들에 대한 모든 조사가 들어가야 한다.
- 학생들 : 개별자산들
- 공부시간 : 실제 개별자산 수익률들
공통된 요인들을 찾는다면?
공부시간에 영향을 미치는 요인 = 숙제의 개수
single-factor model의 경우 하나의 factor로 구성된 model이며 간단한 예시를 보면, 각 학생들이 금융공학 강좌를 위해 매주 공부를 몇시간을 하는지를 모델링 하고자 할때, 첫번째 방법은 모든 학생들의 공부시간을 개인별로 모두 조사하는 방법이 있고, 두번째 방법은 공통된 요인을 찾아서 모델링을 하는 경우가 있다. 만약 요인을 과제 개수로 지정할 경우, 개별 학생들의 공부시간은 과제 개수와 선형회귀식으로 나오게 된다.
bi : 각 학생이 과제마다 몇시간씩 공부하는 시간
ai : 과제에 상관없이 각 학생이 매주 몇시간씩 공부하는 시간
따라서 각 학생들마다 회귀식이 세워지는 경우 간단하게 factor에 해당하는 값만 바뀌어주면 각 학생이 매주 몇시간씩 공부를 할지 (하는지)에 대한 정보가 쉽게 나오게 된다. (매주 각 학생들이 실제 공부하는 시간들을 조사할 필요가 없어짐 - 회귀식에 의한 예측값으로 쉽게 예측가능)
물론 실제로 각 학생들이 매주 공부한 시간들은 회귀식에 의하여 예측된 시간과는 조금 다른 오차가 존재할 것이다. 따라서 Error term을 추가해주면 된다. Error term의 경우 기댓값이 0이라고 가정한다.
왜 팩터모델이 더 나을까?
- parameters (bi, 계수) 와 intercept (ai, 절편)은 각 학생들마다 stable (잘 바뀌지 않음)
- 따라서 계수(bi)와 절편(ai)만 알면, 매주 몇개의 과제가 있을지만 예측(f) 하면 각 학생들의 주당 공부시간을 예측할 수 있음
- 팩터모델이 없다면, 매주 모든 학생들의 공부시간을 직접 예측해야함 (매주 모델링을 새로해야함)
- MVO에서도 동일하게 적용 (팩터 모델을 사용할 경우 공분산 계산이 훨씬 간단해짐 - 계산해야하는 estimate이 확 줄어들게 됨)
- single-factor model이 팩터모델들 중 가장 간단한 모델
- sing-factor model은 랜덤한 값을 갖는 요인이 하나만 존재
- 계수와 절편의 경우 constants (상수항)
- 계수는 특히 'factor loadings'라 불리며 이는 요인에 대한 수익률의 sensitivity를 의미한다.
- ri, i = 1 ~n : i번째 주식의 rate of return
- ai, bi - 상수항, f - factor, ei - error term (오차)
- bi - shows the sensitivty of return to the factor f
- error term -> 기댓값 = 0 , 요인 f와 uncorrleated (공분산 = 0)
- single factor model은 factor가 하나기 때문에 graphfically 쉽게 표현할 수 있음
- 선형회귀분석에서 그래프 그리는 것과 동일
- 선형회귀모델에서 선 자체는 '평균'적으로 어떻게 되는지 관계를 나타내기 때문에 Error term을 뺀 것
- 실제값과 회귀선의 오차를 ei로 표시
- data point (점들 ) - 실제값
- 우리가 만약 회귀식 (straight line)을 안다면, data point (실제값을 나타내는 점들)에 비슷하게 떨어지는 값들을 예측할 수 있음
- 1) data point가 주어짐 -> 2) data point들을 통하여 line을 구함 -> 3) line 주변으로 형성되는 새로운 data point들을 line을 통해 예측함
- 선형회귀분석과 마찬가지로 data point들을 통해 line (선형회귀식)을 세웠을 때, 얼마나 회귀식이 유의미한지를 판단해야 함 (t-value, p-value, r-squared, etc)
- 개별자산들의 과거 수익률 데이터와 one-factor의 과거 데이터가 있다면, 선형회귀직선을 구하기 위한 factor의 계수 (bi)를 구할 수 있다.
- 선을 찾는게 중요하고 과거 데이터가 있다면 선을 구할 수 있음 -> 또한 회귀분석과 마찬가지로 선이 얼마나 유의미한지 파악한 후 회귀식을 사용해야 함
요약하자면, 개별 주식의 수익률을 예측하기 위해서 우리는
1) 각 개별주식의 ai, bi, ei의분산과
2) f의 기댓값, f의 분산
만 알면 된다.
MVO 모델에 비해서 훨씬 더 적은 수의 estimator를 알면 된다. 특히 공분산을 알기 위해서 bi, bj, f의 분산만 알면 개별자산간 공분산을 쉽게 알 수 있으며,
이는 MVO 모델의 n개의 수익률 기댓값, n개의 분산, n(n-1)/2개의 공분산, 총 2n + n(n-1)/2 개의 값
보다 훨씬 적은 값이다.
가령 1000개의 주식에 대한 공분산을 알아내기 위해서는 MVO의 경우 1000*999/ 2 = 499500 개의 값을 구해야하지만
팩터모델의 경우, b1~b1000, f의 분산만 알면되어 총 1001개의 값으로 모든 공분산을 구할 수 있다.
- 수익률의 기댓값은 1) mean factor return ( f^bar), 2) factor loading (bi), 3) intercept (ai) 로 표현가능
- 수익률의 분산은 1) factor variance (f의 분산), 2) factor loading (bi), 3) variance of error term (ei의 분산) 으로 표현가능
- 개별자산 수익률간 공분산은 1) factor loading (bi, bj), 2)factor variance (f의 분산)으로 표현가능
- MVO 모델의 n개의 수익률 기댓값, n개의 분산, n(n-1)/2개의 공분산, 총 2n + n(n-1)/2 개 -> Factor model : 3n+2 개
- bi -n개, ai-n개, ei의 분산 -n개, f의 기댓값 -1개, f의 분산 -1개
인덱스 하나가 하나의 factor라고 가정하고 factor 분석을 했다. 네 개의 주식이 있고, 각 주식마다 10년의 수익률 데이터가 있을 때, 각 개별주식 수익율의 factor model을 찾으려고 한다. 과거데이터로부터 선형회귀분석을 해서 선형회귀를 진행한다. 독립변수의 계수를 찾는 것도 선형회귀분석을 하는 것과 동일하게 covariance (ri, factor) 를 varaince (factor)로 나눠주면 되고, bi를 찾은 이후, 종속변수의 평균과 독립변수의 평균을 사용해서 역으로 ai 또한 찾아줄 수 있다.
이후 factor model이 얼마나 의미있는지를 찾기위해서 몇가지 분석들을 할 수 있는데, 여기서는 간단히 error variance를 구해보았다. error variance의 절대적 수치가 얼마나 크고 작냐로 factor model이 얼마나 좋은지를 판단할 수는 없지만, 개별주식들의 variance 수치대비 error variance가의 수치가 아주 크다는 사실로 모델이 좋은 factor model은 아니라는 결론을 내릴 수 있다. 설명력이 높지 않은 이유는 factor 하나만 사용했고, factor 하나만으로 개별자산의 수익률을 설명하기가 쉽지 않고, 10년 (10개)밖에 안되는 sample을 사용했기 때문이라고 볼 수 있다.
앞 부분에서 single-factor model을 설명했는데, single-factor model을 포트폴리오 return에도 동일하게 적용할 수 있다. 한 개별자산의 수익률을 ri = ai +bif + ei로 나타낼 때, 포트폴리오 수익률의 경우 rp = sum of (wi*ri) = sum of (wi * ai) + sum of (wi *bif) + sum of (wi * ei)로 간단히 나타낼 수 있다. 이때,
sum of (wi*ai) = a
sum of (wi*bi) = b
sum of (wi*ei) = e
로 나타내면
앞서 보았던 r = a+bf +e 의 형태로 포트폴리오 수익률을 나타낼 수 있게된다.
a와 b는 상수항이며, 이 둘은 weighted averages of ai, bi로 이루어진다.
e 항 역시 weighted average of the individual ei 이므로,
ei의 기댓값 = 0, ei는 f와 uncorrelated이였다는 것을 따라 마찬가지로
e의 기댓값 또한 0이고, e는 f와 uncorrelated 하다.
포트폴리오 error term, e의 variance를 계산하게 되면, 최종적으로 개별 error term의 variance와 개별 주식비중의 제곱들의 곱의 합으로 나타낼 수 있다.
variance (e) = sum of [ wi^2 * varaicne (ei) ]
팩터모델을 사용하면 수익률을 나타낼 수 있는데, risk 또한 나타낼 수 있다.
error term의 variance를 구하기 위해 간단하게 각 개별기업 error term의 분산을 s^2, 각 개별자산 비중을 동일비중 1/n으로 둔다면,
포트폴리오의 variance (e) = 1/n * s^2 가 된다.
즉, n이 커질수록 포트폴리오의 error term variance가 작아질 수 있다. -> 분산효과
single-factor model을 가지고 포트폴리오의 분산을 계산해보면,
portfolio varaince = b^2 * f의 분산 + 포트폴리오 error term의 분산
이 된다.
앞서 보았듯이, 포트폴리오 error term의 경우 분산투자를 사용해서 줄이는 게 가능하지만 (diversifiable risk)
첫번째 항의 경우,
1) b가 개별 bi들의 가중평균이기 때문에 bi들이 양수이면 b 또한 양수가 되고
2) f의 분산의 경우, 동일하게 factor의 분산이 모든 개별주식의 분산에 영향을 주기 때문에 포트폴리오 분산에도 영향을 주게 됨 (모든 자산들이 영향을 받게 되는 factor로 부터 나오는 분산이기 때문에 분산효과를 누릴 수 없음)
-> 따라서 분산투자를 통해서 없앨 수 없는 risk임 (systematic risk, undiversifiable risk)
아직까지 factor가 무엇인지를 말하지는 않았음, factor가 시장전체의 초과수익률이 되면 이 모델은 CAPM이 되는 것임
요인이 하나만 존재하지 않고, 개별주식 수익률을 설명할 수 있는 여러요인들이 있다면 이는 multifactor model이라고 부른다.
팩터들을 찾는 방법들은 무엇일까? 팩터는 크게 3가지로 나눌 수 있다.
1. 경제지표 팩터 (GDP, CPI, PPI, ..)
2. 주식시장 팩터 (market index, 산업군 return들)
3. 기업재무재표 (PER, Dividend)
CAPM
- CAPM은 facto model을 가정하고 나온 모델이 아님!
- Mean-variance model -> EF -> Market Portfolio -> single stock 과의 관계로 부터 나온 것이 CAPM
- CAPM을 보니 single-factor model가 거의 비슷하더라
- 차이점은 single-factor model의 경우 factor가 정확히 무엇인지 정하지 x
- CAPM의 경우 알파 = 0을 가정
- 실제 개별주식의 historical return data로부터 계산한 expected return과 CAPM으로 예측한 개별주식의 estimated return과의 차이를 알파로 계산할 수 있음 (제이슨 알파)
모든 슬라이드는 경희대학원 빅데이터응용학과 김장호 교수님의 수업자료를 참고했습니다.