해당 포스팅은 과거 글[Link]의 업그레이드 버젼입니다.
MSCI KOREA VALUE INDEX와 같은 팩터 인덱스를 검색해보시면
기대에 못미치는 결과를 확인할 수 있습니다.
2002년부터 현재까지의 성과가
벤치마크 대비 미세하게 우수한 정도 밖에 되지 않기 때문이죠
이는 우리에게 익숙한 팩터지수와 해당지수 간
접근법의 차이가 있기 때문입니다.
모지수인 벤치마크(예: KOSPI 200)과 특정 팩터(예: Value Factor)가
있다고 가정합니다.
이 때 접근법은 크게 두가지가 있습니다.
1. 모지수의 구성종목 중 특정 팩터가 높은 종목을 선정
이게 우리에게 익숙한 각종 스마트베타ETF 의 접근법 입니다.
2. 모지수의 구성종목 중 특정 팩터가
우수한 종목은 비중을 더, 그렇지 않은 종목은 비중을 덜 부여
위 MSCI Factor지수 및 해외의 각종 팩터지수들이 채용하는 방법입니다.
첫번째 방법이 전체 종목 중 일부만 매수하므로
장기성과는 더 우수할 수 있지만, 추적오차가 커지는 반면,
두번째 방법은 전체 종목을 매수하는 대신 비중만 변경하므로
장기성과는 다소 떨어지지만, 추적오차가 매우 작습니다.
그건 국내에서의 팩터 관련 상품은
대부분 첫번째 방법론을 채택하였습니다.
(아마 수익률에만 집중하는 국내의 문화 때문에...??)
그러나 얼마전 한국거래소에서도
2번의 방법을 추종하는 지수가 생겨났습니다.
[Link]
가장 대표적인 팩터인 밸류, 퀄리티, 모멘텀, 로우볼 4가지 지수가 있으며,
지수 방법론을 보면 제 설명과 같음을 알 수 있습니다.
해당 지수를 생성하는 법은 다음과 같습니다.
모 지수가 되는 코스피 200 종목 데이터와, 각 팩터의 랭킹을 구합니다.
이 랭킹을 바탕으로 Z-Score를 생성해 줍니다.
심플하게 5종목이 있다면 다음과 같겠죠
변동성은 낮을 수록 좋으니 Z-Score에 마이너스를 해줍니다.
(왜 그런지는 뒤에 나옵니다.)
하지만 종목이 많아지면 Z-Score가 튀는 종목들이 생깁니다.
아래에서 Z-Score가 -4까지 나오는 종목은
변동성이 엄청 큰 종목이겠져??
물론 해당 Z-Score 값을 그대로 사용하여도 되나
극단치를 조정해 주기 위한 기법을 사용합니다.
특정값 (-3. 3)을 초과하는 종목은
모두 제거해버리는 방법을 사용하는 업체도 있으나
우리는 모든 종목을 포함하여야 되기 때문에 그렇게는 못하겠죠.
특정값을 초과하는 종목의 Z-Score를 특정값으로 강제로 바꿔줍니다.
Z-Score가 -4가 나왔다면, -3으로 강제로 바꿔줍니다.
강제 치환된 Z-Score를 바탕으로 다시 Z-Score를 구하면
특정값을 초과하는 종목이 다시 생기게 됩니다.
그러나 벌어지는 범위는 첫번째 보단 덜하게 되죠
그러면 다시 특정값으로 치환해 주고, 리스케일링 하고,
치환하고, 리스케일링 하고,....
이러한 작업을 최대, 최소 Z-Score가 특정값을 벗어나지 않을 때 까지 합니다.
코드에서는 while 구문 쓰면 쉽게 됩니다.
이제 구해진 Z-Score 값들을 바탕으로 누적분포함수를 구해줍니다.
위 그림이 우리가 구한 Z-Score의 분포였다면,
아래 그림이 이제 구할 누적분포 함수이겠죠
이는 시가총액비중에서 늘리거나 줄일 비중을 계산하기 위해서 입니다.
투자비중 = 시가총액비중 X 누적확률 (각 종목의 Y축값)
Z-Score가 매우 높은 종목, 즉 우수한 팩터의 종목은
최대값인 1을 곱해주는, 즉 시총 만큼 투자 합니다
반면 Z-Score가 매우 낮은 종목, 즉 열등한 팩터의 종목은
최소값인 0을 곱해주는, 즉 투자하지 않습니다.
결과적으로 팩터의 랭킹이 높은 종목은 더 많이 투자하고
팩터의 랭킹이 낮은 종목은 거의 더 작게 투자합니다.
이렇게 계산하면 전체 투자비중이 50% 정도 밖에 되지 않습니다.
이를 리스케일링 하기 위해
투자비중 / sum(투자비중) 을 해줍니다.
초록색 (+)가 기존 KOSPI 200 내 비중이었다면,
붉은색 ○가 새롭게 구해진 비중입니다.
초록색 보다 위에 위치한다면 팩터가 우수하다는,
아래에 위치한다면 팩터가 열등하다는 뜻이겠죠?
여기서 끝낼 수도 있지만, 그러기엔 문제가 발생합니다.
특정 종목의 경우 벤치마크와의 비중이 너무 틀어진다는 거죠
위 그림은 벤치마크와 틸트지수 간 비중의 차이입니다.
삼성전자의 경우 비중차이가 무려 6% 가까이 납니다.
다른 대형주의 경우도 0.5% 가까이 차이가 납니다.
엄청난 트래킹 에러가 발생하겠죠??
이번에는 마지막으로 투자비중의 상한과 하한을 정해줍니다.
예를 들어 제약조건을 20%라 주면,
투자비중의 상한선은 벤치마크비중의 120%,
하한선은 벤치마크비중의 80%로 지정해 줍니다.
삼성전자의 시가총액 비중을 30%라 가정했을 때
팩터가 우수할 경우 최대 한도는 30% * 1.2 = 36%,
최소 한도는 30% * 0.8 = 24% 로 설정합니다.
물론 트래킹에러를 줄이고 싶다면
제약조건을 더욱 낮게 부여하면 됩니다.
상한을 넘는 종목은 상한만큼만,
하한보다 낮은 종목은 하한만큼만 투자하도록 설정합니다.
그 후 다시 스케일링을 해줍니다.
삼성전자와 시가총액비중의 차이가 2% 밖에 차이가 나지 않게 되었습니다.
다른 종목들의 차이도 많이 줄어들게 되었죠?
해당 방식을 각각
밸류, 퀄리티. 모멘텀, 로우볼에 적용한 결과와
KOSPI200 TR의 차이는 다음과 같습니다.
물론 One Factor 만이 아닌
2가지, 3가지, 아니면 여러가지 다 합친
Multi-Factor Tilt 도 얼마든지 만들 수 있습니다.
이는 우리에게 익숙한 팩터지수와 해당지수 간
접근법의 차이가 있기 때문입니다.
모지수인 벤치마크(예: KOSPI 200)과 특정 팩터(예: Value Factor)가
있다고 가정합니다.
이 때 접근법은 크게 두가지가 있습니다.
1. 모지수의 구성종목 중 특정 팩터가 높은 종목을 선정
이게 우리에게 익숙한 각종 스마트베타ETF 의 접근법 입니다.
2. 모지수의 구성종목 중 특정 팩터가
우수한 종목은 비중을 더, 그렇지 않은 종목은 비중을 덜 부여
위 MSCI Factor지수 및 해외의 각종 팩터지수들이 채용하는 방법입니다.
첫번째 방법이 전체 종목 중 일부만 매수하므로
장기성과는 더 우수할 수 있지만, 추적오차가 커지는 반면,
두번째 방법은 전체 종목을 매수하는 대신 비중만 변경하므로
장기성과는 다소 떨어지지만, 추적오차가 매우 작습니다.
그건 국내에서의 팩터 관련 상품은
대부분 첫번째 방법론을 채택하였습니다.
(아마 수익률에만 집중하는 국내의 문화 때문에...??)
그러나 얼마전 한국거래소에서도
2번의 방법을 추종하는 지수가 생겨났습니다.
[Link]
가장 대표적인 팩터인 밸류, 퀄리티, 모멘텀, 로우볼 4가지 지수가 있으며,
지수 방법론을 보면 제 설명과 같음을 알 수 있습니다.
해당 지수를 생성하는 법은 다음과 같습니다.
모 지수가 되는 코스피 200 종목 데이터와, 각 팩터의 랭킹을 구합니다.
이 랭킹을 바탕으로 Z-Score를 생성해 줍니다.
심플하게 5종목이 있다면 다음과 같겠죠
Volatilty
|
|||||
변동성
|
1%
|
2%
|
3%
|
4%
|
5%
|
랭킹
|
1
|
2
|
3
|
4
|
5
|
평균 (랭킹)
|
3
|
||||
변동성 (랭킹)
|
1.58
|
||||
- (Z-Score)
|
1.26
|
0.63
|
0.00
|
-0.63
|
-1.26
|
변동성은 낮을 수록 좋으니 Z-Score에 마이너스를 해줍니다.
(왜 그런지는 뒤에 나옵니다.)
하지만 종목이 많아지면 Z-Score가 튀는 종목들이 생깁니다.
아래에서 Z-Score가 -4까지 나오는 종목은
변동성이 엄청 큰 종목이겠져??
비수정값 |
물론 해당 Z-Score 값을 그대로 사용하여도 되나
극단치를 조정해 주기 위한 기법을 사용합니다.
특정값 (-3. 3)을 초과하는 종목은
모두 제거해버리는 방법을 사용하는 업체도 있으나
우리는 모든 종목을 포함하여야 되기 때문에 그렇게는 못하겠죠.
특정값을 초과하는 종목의 Z-Score를 특정값으로 강제로 바꿔줍니다.
Z-Score가 -4가 나왔다면, -3으로 강제로 바꿔줍니다.
1차 윈저라이징 값 |
강제 치환된 Z-Score를 바탕으로 다시 Z-Score를 구하면
특정값을 초과하는 종목이 다시 생기게 됩니다.
그러나 벌어지는 범위는 첫번째 보단 덜하게 되죠
1차 윈저라이징 값의 리스케일링 후 Z-Score |
그러면 다시 특정값으로 치환해 주고, 리스케일링 하고,
치환하고, 리스케일링 하고,....
이러한 작업을 최대, 최소 Z-Score가 특정값을 벗어나지 않을 때 까지 합니다.
코드에서는 while 구문 쓰면 쉽게 됩니다.
최종 Z-Score 값 |
이제 구해진 Z-Score 값들을 바탕으로 누적분포함수를 구해줍니다.
위 그림이 우리가 구한 Z-Score의 분포였다면,
아래 그림이 이제 구할 누적분포 함수이겠죠
이는 시가총액비중에서 늘리거나 줄일 비중을 계산하기 위해서 입니다.
투자비중 = 시가총액비중 X 누적확률 (각 종목의 Y축값)
Z-Score가 매우 높은 종목, 즉 우수한 팩터의 종목은
최대값인 1을 곱해주는, 즉 시총 만큼 투자 합니다
반면 Z-Score가 매우 낮은 종목, 즉 열등한 팩터의 종목은
최소값인 0을 곱해주는, 즉 투자하지 않습니다.
결과적으로 팩터의 랭킹이 높은 종목은 더 많이 투자하고
팩터의 랭킹이 낮은 종목은 거의 더 작게 투자합니다.
이렇게 계산하면 전체 투자비중이 50% 정도 밖에 되지 않습니다.
이를 리스케일링 하기 위해
투자비중 / sum(투자비중) 을 해줍니다.
초록색 (+)가 기존 KOSPI 200 내 비중이었다면,
붉은색 ○가 새롭게 구해진 비중입니다.
초록색 보다 위에 위치한다면 팩터가 우수하다는,
아래에 위치한다면 팩터가 열등하다는 뜻이겠죠?
여기서 끝낼 수도 있지만, 그러기엔 문제가 발생합니다.
특정 종목의 경우 벤치마크와의 비중이 너무 틀어진다는 거죠
위 그림은 벤치마크와 틸트지수 간 비중의 차이입니다.
삼성전자의 경우 비중차이가 무려 6% 가까이 납니다.
다른 대형주의 경우도 0.5% 가까이 차이가 납니다.
엄청난 트래킹 에러가 발생하겠죠??
이번에는 마지막으로 투자비중의 상한과 하한을 정해줍니다.
예를 들어 제약조건을 20%라 주면,
투자비중의 상한선은 벤치마크비중의 120%,
하한선은 벤치마크비중의 80%로 지정해 줍니다.
삼성전자의 시가총액 비중을 30%라 가정했을 때
팩터가 우수할 경우 최대 한도는 30% * 1.2 = 36%,
최소 한도는 30% * 0.8 = 24% 로 설정합니다.
물론 트래킹에러를 줄이고 싶다면
제약조건을 더욱 낮게 부여하면 됩니다.
상한을 넘는 종목은 상한만큼만,
하한보다 낮은 종목은 하한만큼만 투자하도록 설정합니다.
그 후 다시 스케일링을 해줍니다.
삼성전자와 시가총액비중의 차이가 2% 밖에 차이가 나지 않게 되었습니다.
다른 종목들의 차이도 많이 줄어들게 되었죠?
해당 방식을 각각
밸류, 퀄리티. 모멘텀, 로우볼에 적용한 결과와
KOSPI200 TR의 차이는 다음과 같습니다.
KOSPI 200
TR |
Value
Tilted |
Quality
Tilted |
Momentum
Tilted |
Low Vol
Tilted |
|
Ann Ret (Arith)
|
7.73%
|
8.35%
|
8.12%
|
8.03%
|
7.76%
|
Ann Ret (CAGR)
|
5.27%
|
5.94%
|
5.77%
|
5.54%
|
5.46%
|
Ann Std Dev
|
22.67%
|
22.61%
|
22.32%
|
22.82%
|
22.02%
|
Ann Sharpe
|
0.2324
|
0.2629
|
0.2585
|
0.243
|
0.2479
|
Win Ratio
|
57.84%
|
57.84%
|
57.35%
|
57.84%
|
57.84%
|
MDD
|
52.78%
|
50.44%
|
52.13%
|
52.78%
|
52.38%
|
Tracking Error
|
1.50%
|
1.54%
|
1.84%
|
1.48%
|
장기적으로 우수한 팩터들에 틸트된 만큼
성과들이 미세하게 좋습니다.
연율화 트래킹에러도 1.5 ~ 2% 정도로 매우 낮습니다.
물론 One Factor 만이 아닌
2가지, 3가지, 아니면 여러가지 다 합친
Multi-Factor Tilt 도 얼마든지 만들 수 있습니다.
Robeco는 이미 예전부터 해당 방법론을 적용한
Enhanced Indexing 을 사용하고 있습니다.
댓글 없음:
댓글 쓰기