금융공학의 전반적 흐름을 보자. 먼저 개별자산의 returns들로 시작한다.
- 개별자산의 수익률들의 분포를 분석하게 되고,
- 이 수익률들의 움직임에 대한 요인들을 factor model을 통해 분석한다.
- factor model을 통해 국면파악을 진행할 수도 있다.
- return과 risk를 가지고 model을 선정, optimization을 진행한다.
- 어떤 모델이 어떤 국면에 최적의 성과를 낼 수 있을지 평가한다.
- 모델평가를 위해 크게 backtest와 simulation을 진행할 수 있다.
이번에는 모델평가 부분의 'simulation'에 대해 자세하게 들여다보도록 하겠다.
[Backtest]
Simulation을 보기 전, 비교를 위해 backtest를 먼저 들여다보자.
Backtest란 historical data를 통해 optimized 된 포트폴리오 비중 (weights)가 실제 그 비중으로 과거에 투자했을 때 어느 성과를 낼지를 판단하는 방법이다.
예를들어 20년의 historical data가 있다면, 백테스트 기간을 2년으로 잡고 18 + 알파 기간을 lookback period로 진행한다.
여기서 lookback period란, optimization을 진행하는 기간이다.
가령 2001년 ~ 2021년까지 20년 historical data가 주어진다면, 2001년 ~ 2019년 + 알파 months를 lookback period로 진행하는 것이다.
가령,
t = 0 ; 2020년 1월 optimized weights - > 2001년 1월 ~ 2019년 12월 lookback period -> return: 2020년 1월~ 2020년 2월
t = 1 ; 2020년 2월 optimized weights - > 2001년 1월 ~ 2020년 1월 lookback period -> return: 2020년 2월~ 2020년 3월
t = 2 ; 2020년 3월 optimized weights - > 2001년 1월 ~ 2020년 2월 lookback period -> return: 2020년 3월~ 2020년 4월
t = 3 ; 2020년 4월 optimized weights - > 2001년 1월 ~ 2020년 3월 lookback period -> return: 2020년 4월~ 2020년 5월
t = 23 ; 2021년 12월 optimized weights -> 2001년 1월 ~ 2020년 3월 lookback period -> return: 2021년 12월~ 2022년 1월
이런식으로 rolling하며 return들을 분석하게 된다.
이 경우, 총 2년, 24개의 return 들에 대한 분석을 진행하게 된다.
이를 통해 return distribution 및 expected return, volatility, MDD, CVaR 등 성과지표 분석을 진행할 수 있다.
[Simulation]
위에서 본 backtest의 경우, 과거데이터를 기반으로 과거에 실제로 optimized된 weights로 투자했을 시 어떤 성과를 얻었을지를 본다. 이와 달리, Simulation은 과거데이터를 기반으로 하지만, 과거 성과를 얻는것이 아닌, 과거데이터를 기반으로 미래에 어떤 주가변동 또는 수익률변동을 가지는지 여러 시나리오들을 그려보는 것이다.
시나리오 분석 (Scenario Analysis)이라하면 의미있는 시나리오 몇개를 분석함을 의미한다.
시뮬레이션 (Simulation)이라하면 무수히 많은 시나리오들을 만들어내 분석하는 방법이다.
우리는 시뮬레이션에 대해 살펴보도록 한다.
Simulation의 경우 총 2가지의 단계로 나뉜다.
먼저 asset의 시나리오들을 만들고, 이 시나리오들에 대한 performance evaluation을 진행하게 된다.
시나리오들을 만드는 방법으로는 총 4가지의 방법이 존재한다 ; bootstrapping, MVN, GMM, Regime Model
bootstrapping의 경우 통계기법을 활용하는 모델이 아니지만, 나머지 세가지 모델은 통계를 활용하여 진행한다.
종목 1개에 대한 Simulation
종목 1개의 경우, historical data를 통하여 t=0시점 (보통 현시점)으로부터 t=T까지의 시나리오 10000개를 만든다.
rebalancing을 하지 않는 경우, 10000개의 시나리오들에 대한 return들의 performance evaluation을 진행하면 되고,
각 10000개의 시나리오들에 대하여 각각 rebalancing을 진행할 경우, 10000개 x rebalancing 개수에 대한 return이 나오게 된다. 시나리오 1~ 10000 에대하여 각각 performance evaluation을 진행할 수 있고, 각각의 시나리오에 대한 expected return (총 10000개)로 다시한번 performance evaluation을 진행할 수 있다.
종목 3개에 대한 Simulation
종목 3개에 대한 시뮬레이션을 진행할 시, 각 종목 세개에 대한 10000개의 시나리오들을 생성하게 된다. 이때 우리는 포트폴리오 내 자산간 corrleation을 고려하여 시나리오들을 생성해야 한다.
rebalancing을 하지 않을 시, 자산간 correlation을 고려하여 시나리오1 ~ 10000까지 생성하게 된다.
rebalancing을 진행할 시, 시나리오 하나 당, rebalancing 갯수만큼의 return이 추가적으로 나오게 되고, 앞에서와 마찬가지로 시나리오 하나의 performance evaluation을 진행하거나, 각 시나리오의 expected return들의 performance evalution을 진행할 수 있다.
앞서 언급한것처럼, 시나리오들을 만드는 방법으로는 총 4가지의 방법이 존재한다
- bootstrapping
- MVN
- GMM
- Regime Model
시나리오들을 만드는 방법들을 하나씩 자세히 들여다보자.
[ MVN (Multivariate Normal Distribution) ]
Univariate Gaussian이라하면, 변수가 하나인 정규분포를 의미한다.
Multivariate Gaussian은 다변량 정규분포로, 변수가 두개이상인 정규분포를 의미한다.
변수가 두개이상이기 때문에, 정규분포의 Mean은 벡터, variance는 공분산행렬로 나타나게 된다.
Y와 X라는 변수가 있을 때, Y와 X의 확률밀도함수가 이와 같이 나타내진다고 하면, 둘의 상관관계를 고려한 X,Y의 정규분포는 아래의 점들로 표현된다.
[ GMM (Gaussian Mixture Model) ]
GMM은 Gaussian Mixture Model으로, Gussian 분포 N개 여러개가 혼합된 모델이다. 이 Gussian 모델들은 clustering으로 혼합된다.
현실에 존재하는 분포의 경우, 실제로 단일 Gussian을 따르기 보다는 복잡한 경우가 많다. 이를 최대한 반영하기 위해 k개의 Gaussian Distribution을 혼합하여 표현한다.
가령 여러개의 pdf (Probability Densitiy Function)을 합하여 이와 같이 나타내게 된다.
K개의 Gaussian distribution이 있을 때, 각 Gaussian이 선택될 확률을 파이k로 정한다. 파이 k의 확률합은 1로 정한다.
Simulation Model
Simulation Models의 경우 statistics를 사용하는 모델과 사용하지 않는 모델로 나뉜다.
statistics를 사용하지 않는 모델 : Bootstrapping
statistics 사용모델: MVN, GMM, Regime-based Model (Markov-switching model)
statistics model의 경우 기본적으로 정규분포를 가정한다.
[Bootstrapping]
Bootstrapping이란, historical data를 random으로 samping하여 simulation 기간동안 랜덤으로 붙이는 것이다.
Bootstrapping 방식은 2가지가 있는데,
- Efron Bootstrapping : 단위기간 하나씩 sampling
- Block Boostrapping : block size씩 sampling
bootstrapping의 장점은 통계적 기법이 필요없어서 매우 간단하다는 점이다.
또한 실제 historical market data를 sampling하기 때문에 자산들간 corrleation이 그대로 반영되어있다. 가령 금과 같은 원자재를 추가할 경우, historical data를 통해 bootstrapping 하였기 때문에 옆에다가 그냥 추가해줘도 무관하다.
k개를 한 block으로 가져올시, k기간동안의 패턴을 그대로 가져오기 때문에 time-series data의 움직임을 그대로 가져올 수 있다는 장점을 가진다.
보통 bootstrapping은 long-term scenarios를 생성해낼 때 진행한다. 가령 pension management (연금관리)같은 경우 historical data의 size가 매우 높게 되어, statistics를 적용하기 힘들기 때문이다.
[MVN: Multivariate Normal Distribution]
기본적으로 MVN의 경우 GBM (Geometric Browinian Motion)을 사용하는 모델이다. GBM의 경우 historical data의 정규분포를 가정하여 진행한다.
GBM에 대한 설명은 아래 링크를 참조
2023.01.17 - [금융공학] - Asset Dynamics / GBM(Geometric Brownian Motion)
GBM을 통해 historical data를 정규분포로 가정하고, 나온 return matrix와 공분산행렬을 통해 T기간동안의 시나리오들을 생성하게 된다.
Multivaraite Normal Distribution의 advanced models 들에 대해 살펴보자.
Historical asset returns들은 fatter tails를 가진다. 이는 실제 normal distribution보다 extreme returns의 frequency가 많다는 뜻이다.
이를 보완하기 위해,
- GBM 모델에 normal distribtuion이 아닌 t distribution을 적용
- volatility clustering 진행
- GARCH, CCC-GARCH, DCC-GARCH
- Mixture of distributions (GMM)
등을 적용할 수 있다.
GARCH model?
2023.02.02 - [통계] - Volatility: Standard Deviation, EWMA, GARCH(1,1)
[GMM: Gaussian Mixture Model]
파이k vector는 mixing coefficient vector로k개의 Gaussian distribution이 있다고 했을 때, k번째 Gaussian distribution이 선택될 확률 vector이다.
각 파이들은 0에서 1 사이의 값이며, 총 파이들의 합은 1이다.
GMM학습이란 주어진데이터 (here, returns)에 대하여 파이 vector, mean return vector, covariance matrix를 추정하는 것이다.
가령 2개의 MVN (Multivaraite Normal Distribution)을 합친다고 하면,
첫번째 MVN일 확률, 파이1
두번째 MVN일 확률, 파이2 로 잡고,
파이1인 경우 첫번째 MVN으로 GBM진행, 파이2인 경우 두번째 MVN으로 GBM을 진행한다.
실제 머신러닝 진행
[Statistical models]
Multivariate Normal Distribution (MVN) : 전체데이터에 대하여 distribution 1개 존재
Gaussian Mixture Model (GMM) :전체데이터에 대하여 n개의 distribution 존개 (clustering으로 진행)
Markov -regime model (Markov chain ) : 전체데이터를 state로 나누고, 각 state별 distribution & probability 구하기
[MVN: Multivaraite Normal Distribution]
1. 개별종목인경우
개별종목에 대한 simulation 과정에 대해 보자. GBM 모델로 진행하기 위해 returns series data를 log return data로 변환한다. GBM의 경우 Historical log return data가 정규분포라고 가정하고 진행한다.
이후 Log return data의 statistics information을 통해 GBM 모델을 진행한다. CDF 역함수로 samping을 진행하고, 이후 GBM으로 시나리오들을 만든다.
2. 여러종목인경우
종목이 3개라고 가정해보자.
종목 3개의 포트폴리오 return matrix를 log return matrix로 변환한뒤, multivariate 정규분포를 구해주어 statistics information (mean vector, covaraince matrix)를 구한다.
개별종목과 마찬가지로 GBM 모델로 simulation을 진행한다.
[ GMM: Gaussian Mixture Model ]
GMM (Gaussian Mixture Model, Normal Mixture Model)은 n개의 정규분포를 가정하여 진행한다.
- distribution이 몇개일지 정한다
- 각 distribution에 대한 statistics information 정함 (or 분석)
- 각각의 distribtuion이 발생할 확률을 구함
n개의 normal distribution으로 진행하는 이유는 실제 historical data의 경우 extreme data (fatter tails) 존재할 수 있고, 단일 normal distribution이 이를 잡지 못할 수 있기 때문이다.
uniform distribtuion으로 0~1 중 sampling 하기 위해 cdf inverse를 통해 random error term을 구한다.
0~1 sampling 과정에서 첫번째 normal distribution이 나올 확률이 0.7, 두번째가 0.3 이라 가정할시
sampling이 0~0.7 사이로 될 시 분포1로 gbm 진행
sampling이 0.7~1 사이로 될 시 분포2로 gbm 진행한다.
각 scenario들을 생성하는 것을 하나씩 진행한다. (추세나 Trend를 잡지 못함)
GNN이 추세나 Trend를 잡지못하기 때문에, 이를 극복하는 모델로 국면전환모델 (Markov Model)을 사용한다.
[ GMM: Gaussian Mixture Model ]
Markov model 은 Markov chain을 활용한 모델이다.
return data의 log return을 구한뒤, state를 나뉘게 된다.
state를 나누는 방식으로
- 이미정해놓은 state들로 진행 ; ex) NBER 거시경제지표 그대로 사용
- states 직접사용 ; ex) Trend filtering
trend filtering?
2023.02.02 - [머신러닝/Time-Series Data Analysis] - Trend-Filtering/ L1, L2 Regulation
각 state별로 log return을 reorgnized 한뒤, 각 state별 data들의 statistical information들을 파악한다.
여기서 Markov Chian model을 사용하는데, 이는 각 분포 (current state) 에서 다음 분포 (next state)로 갈 모든 확률들을 구해서 진행한다.
여기서 모든 분포간 발생확률을 구해야한다.
각 state별 분포와, 분포간 확률들을 모두 구했다면 simulation 단계로 넘어간다.
- 시작 state 설정
- sampling을 통해 current state와 next state의 확률들에 해당하는 sample에 t번 진행하여 n개 시나리오 생성
이 경우, 생성된 시나리오들이 trend와 추세를 가질 수 있다는 장점이 있다. 보통 current state와 next state가 같을 확률이 가장 높기 때문이다.
Asset Dynamics / GBM(Geometric Brownian Motion)
금융공학 공부를 시작하는 후배에게 Asset Dynamics 및 최종적으로 GBM (Geometric Brownian Motion)을 자세하게 설명한다고 가정하고 GBM에 대해 자세히 설명해보도록 하겠습니다. 그림을 그려가며 설명할
fin-engin-story.tistory.com
Volatility: Standard Deviation, EWMA, GARCH(1,1)
금융에서 사용되는 Volatility(변동성)의 종류는 여러가지지만, 이번에는 Standard Deviation (Moving Average), EWMA, GARCH(1,1) 총 3가지 종류의 Volatility measurement methods에 대해 들여다 보자. [일반적인 Volatility: S
fin-engin-story.tistory.com
Trend-Filtering/ L1, L2 Regulation
금융데이터의 경우 시계열인 경우가 많다. 금융 시계열 모델은 노이즈 값이 많은 경향이 있으며, 분기별 국면파악을 위하여 노이즈를 줄일 수 있는 트렌드 필터링을 진행하였다. 추세파악을 위
fin-engin-story.tistory.com
'금융공학' 카테고리의 다른 글
Mean-Variance Portfolio Theory (1) | 2023.06.23 |
---|---|
Factor Model (0) | 2023.05.03 |
Portfolio Optimization (4) | 2023.01.30 |
Factor Model (4) - PCA (statistical Factors) (1) | 2023.01.27 |
Factor Model (3) - Fama-French Three Factor Model (0) | 2023.01.27 |