출처 : [Cruset] Analysis of Trend Following Systems
1.요약 정리
[ Trend Follwing Systems ]
오늘날 많은 헤지 펀드들 사이에서 추세 추종 시스템이 가장 유명하다. 추세 추종 시스템(Trend Follwing Systems)이란 장기적인 추세를 타지만 자주 거래하지 않는 시스템이다. 이런 추세 추종 시스템은 가격 변동을 측정하여 주 추세를 찾아내고, 수익이 지속되는 추세에서는 머물고, 수익이 떨어지는 stop loss 지점에서는 빠져나가는 방식을 사용한다. (이때 money management(포지션 사이즈)는 수용할 수 있는 최대의 리스크를 말한다. )
다양한 추세 추종 시스템들은 entry, exit 수준을 결정하는 방식과 추세를 감지하는 시간구조에 따라 차이가 있다. 이 논문에서 소개하는 추세 추종 시스템은 1) Moving averages(이동 평균선), 2) Donchian Channel(변동성 지표), 3) Bollinger bands 4) Symbol Rotation 사용하는 방법이 있다.
추세 추종 시스템을 설명하기 전, 이 논문에서 소개하는 simulation시 고려사항과 권고사항을 먼저 접은글에 정리해봤다.
(1) Data
이 논문에서는 한 증권(security)의 daily price를 사용한다. P/F는 상관관계가 서로 아주 적고 시장이 유동성있는 것들만 편입했다. 또한 다양한 delivery month를 하나의 연속적인 데이터로 합성하는 비율 역 조정 데이터를 사용하여 백테스팅을 진행한다. 물론 비율 역 조정 데이터가 실제를 100% 반영하는 것은 아니지만 특정한 trading 전략이 수익성이 있는지 없는지는 보여줄 수 있다.
(2) Position sizing
처음에 포지션 사이즈는 각 포지션에서 기꺼이 수용할 수 있는 최대 리스크를 기반으로 정한다. the worst case를 가정해서 이 논문에서는 각 trade마다 주식 2%의 리스크가 있다고 정한다. 즉 포지션 사이즈는 2%의 리스크이다.
(3) Commision and Slippage
이 논문의 simulation에서는 각 계약마다 20$의 roundturn commision을 slippage는 4틱으로 정하였다. (물론 실제는 이것보다 더 많은 틱이 소모된다. )
(4) Stability-tests
trading system을 개발할 때는 시장의 변화를 견딜 수 있을 만큼 견고한 시스템인지를 주의해야한다. 너무 strict하면 과거 데이터에만 너무 의존하게 되어 미래에는 실패할 가능성이 높다. 따라서 너무 strict하게 trading rule을 정하지 않는 것으로 한다.
(5) Out of sample data
다양한 시장 상황에서도 적용될 수 있도록 다양한 다른 시장에 개발한 trading system을 테스트해보고 견고함을 보여야한다.
(6) Test various parameter values
또 우리는 system의 견고함을 증명하기 위해 다양한 input 파라미터를 simulation해 볼 필요가 있다.
(권고사항) Monte Carlo simulation
이 논문에서는 모든 trading system 에 Monte Carlo simulation을 돌려 볼 것을 권한다. Monte Carlo simulation을 했을 때도 여전히 System이 좋은 성과가 나온 다면, 이 System은 견고한 전략일 확률이 매우 높아진다.
[ The systems ]
1. Moving averages(이동평균)
추세를 감지하기 위한 이동 평군선은 기술적 분석에서 가장 많이 사용되는 지표이다. 가중이동평균(WMA), 지수이동평균(EMA)도 존재하지만, 결과가 크게 다르지 않아 여기서는 단순이동평균(이하 SMA)를 사용한다. SMA란 특정 기간동안의 단순한 평균 가격을 말한다.
① Fast SMA, Slow SMA
단기 추세를 따르는 Fast SMA와 장기추세를 반영하는 Slow SMA, 2가지 SMA를 사용하는 방법이다.
여기서는 Fast SMA을 50일 이평선(SMA)으로, Slow SMA를 100일 이평선(SMA)로 둔다. Fast SMA(여기서는 50일 이평선)이 Slow SMA(여기서는 100일 이평선)을 상향 돌파하면, 다음날 시가에 매수하고, Fast SMA(여기서는 50일 이평선)이 Slow SMA(여기서는 100일 이평선)을 하향 돌파하면, 매수 포지션을 청산하고 다음날 시가에 매도하는 전략이다. 이때 Stoploss는 10일 기준 Average True range(이하 ATR)의 4배로 둔다.
Average True range(이하 ATR)는 특정한 기간의 이평선을 True range로 적용하는 것을 말한다.
포지션 사이즈를 stoploss의 2%로 하고 S&P 지수에 이 모델을 백테스팅해보면, 연간 수익률이 19.59%, 최대 drawdown(이하 MDD)가 -46.96%이며, profitable trade도 낮은편이고 P/F 주식 곡선도 꽤 꾸준히 증가하기 때문에 좋은 성과를 낸다고 결론내린다.
system의 견고함을 증명하기 위해 다른 parameter로 여러번 simulation을 돌렸을 때에도 여전히 좋은 성과를 낸 것을 확인했다.
② SMA crossover weekly
daily가 아닌 weekly SMA를 사용하는 방법이다.
한주에 한 번 거래하기 때문에 훨씬 더 편리한 측면이 있다. 주목해야 할 점은 마진 대비 주식 익스포져 비율이 8.2%에 불과하기 때문에 초기 위험 설정치 2%가 아닌 3%로 설정한다. 여기서는 10주 SMA가 20주 SMA를 상향돌파하면 매수, 하향 돌파하면 매수 포지션을 청산하고 매도한다. Stoploss는 10주 기준 ATR의 4배로 설정한다.
포지션 사이즈는 stoploss의 3%로 두고, Crude oil 지수에 이 모델을 백테스팅해보면, P/F 주식 곡선은 daily system과 같이 꾸준히 증가하지만 연간수익률은 11.45%로 비교적 낮은 것으로 나타났다. 그렇지만 여전히 좋은 성과를 내고 있고, 거래 빈도가 작고 exposure도 12.43%로 낮기 때문에 포지션 사이즈를 늘리는 방안을 고려해 볼 수 있다.
③ Trend with pattern entry(TPE)
추세 추종 개념에 역 카운터 추세 개념을 결합한 방법이다.
이 system의 메인 아이디어는 SMA 이상의 가격은 강세 흐름을, SMA 이하의 가격은 약세흐름을 보인다는 것이다. 이에 추가적으로 가격이 단기의 역 카운터 추세가 들어가는데, 여기서는 가격이 100일 SMA 이하이고 최근 3일 동안 종가가 상승하는 경우 다음날 매수하고, 가격이 현재 종가에서 10일 ATR의 4배를 뺀 추적 손절매(trailing stop)에 도달하면 매수 포지션을 청산하는 것을, 가격이 100일 SMA 이상이고 최근 3일 동안 종가가 하락하는 경우 다음날 매도하고, 가격이 현재 종가에서 10일 ATR의 4배를 더한 추적 손절매(trailing stop)에 도달하면 매도 포지션을 청산하는 것을 방법으로 한다.
포지션 사이즈는 stoploss의 2%로 하고 S&P 지수에 이 모델을 백테스팅해보면, P/F 주식 곡선은 꾸준히 증가하고, 연간 수익률은 21.77%이고 MDD도 -49.06%로 성과가 좋은 것으로 알 수 있다.
④ SMA crossover Pyramiding
첫번째 포지션과 동일한 방향으로 두번째 포지션으로 시장에 진입하는 것을 말한다.
이 system의 아이디어는 추세는 지속될 확률이 매우 높다는 것이다. 여기서는 fast SMA(50일 SMA)가 slow SMA(100일 SMA)을 상향돌파하면 다음날 매수하고, 진입 가격보다 1% 상승하면 다음날 추가 매수 포지션을 들어가는 것을, fast SMA(50일 SMA)가 slow SMA(100일 SMA)을 하향돌파하면 다음날 매수 포지션을 청산하고 매도 포지션으로, 진입 가격보다 1% 하락하면 다음날 추가 매도 포지션을 들어가는 것을 방법으로 한다. stoploss는 10일 ATR의 4배로 설정한다. 포지션 사이즈는 stoploss의 2%로 두고, British Pound에 이 모델을 백테스팅해보면, P/F 주식 곡선은 꾸준히 증가하지만 변동성이 높은것으로 보인다. 연간수익률은 25.02% 이고, MDD가 -64.28%인 것으로 보아 높은 exposure으로 인해 더 많은 risk를 take한 것으로 보인다. 물론 성과 또한 좋다. 따라서 우리는 이 시스템이 수익성있는 시스템이며 성과를 상당히 높인다고 결론내릴 수 있다. system의 견고함을 증명하기 위해 다른 parameter로 여러번 simulation을 돌렸을 때에도 여전히 좋은 성과를 낸 것을 확인했다.
⑤ TrendStrength A system
TrendStrength 지수는 다양한 이평선을 하나의 지수로 결합한 것을 말한다.
이평선 가격이 위에 있을수록 이 지수, TrendStrenth 지수 값은 높아지고, 이평선 가격이 아래에 있을수록 이 지수 값은 낮아진다. 또한 이 지수는 +100과 -100 사이에서 움직이는 데, 양의 값을 가지면 상승 추세를, 음의 값을 가지면 하락 추세를 보여준다. TrendStrength 지수가 +100에 도달하면 다음날 매수하고, 이 지수가 -100에 도달하면 다음날 매도하고, 이 지수가 0에 도달하거나 돌파할 때 포지션을 청산하는 것을 방법으로 한다. 이때 stoploss는 현재 가격에서 가장 멀리 떨어진 SMA의 값으로 설정한다.
포지션 사이즈는 stoploss의 2%로 두고, Natural gas에 이 모델을 백테스팅해보면, P/F 주식 곡선은 꾸준히 증가하지만 MDD가 -60.77%로 변동성이 높은것으로 보인다. 그렇지만 이 논문에 나온 모든 시스템 방식 중 24.6%로 거래비율이 가장 낮다. 연간수익률은 16.9%로 좋은 성과를 낸다고 볼 수 있다. 특히나 이 시스템의 TrendStrength는 다양한 SMA를 분석하는 지표이므로 하나의 지표만을 쓰는 다른 시스템에 비해 견고하다는 것에 주목할 필요가 있다.
2. Donchian Channel(변동성 지표)
Donchian Channel은 상한선과 하한선으로 구성되어 있다. 이때 상한선은 지난 n일 동안 가장 높은 가격을, 하한선은 지난 n일 동안 가장 낮은 가격을 나타낸다. 이러한 선들은 심리적으로 중요한 선들이며, 선들이 crossover되는 것은 시장의 의견이 변화하는 것을 말한다. 따라서 진입, 청산 신호는 가격이 상한선, 하한선 을 통과할 때 발생한다.
① Donchian Channel breakout 100
여기서는 100일 Donchain band를 상향 또는 하향 돌파하는 경우 각각 매수, 매도하고, 역 100일 Donchain band를 돌파하게 되면 기존 포지션을 청산하고 반대 포지션을 취하는 것을 방법으로 한다. stoploss는 10일 ATR의 4배로 설정한다.
포지션 사이즈는 stoploss의 2%로 두고, Nasdaq 100에 이 모델을 백테스팅해보면, P/F 주식 곡선은 꾸준히 증가하고 연간수익률은 21.2%이고 MDD는 -32.74% 한번 보였다. 전반적으로 이 시스템은 좋은 성과를 보이는 것으로 볼 수 있다.
system의 견고함을 증명하기 위해 다른 sample test를 했지만 비슷한 성과가 나왔다.
② Two different channels for entry and exit
두 Donchain band 사이가 서로 너무 넓어서 기존 포지션을 청산할 때 상당 부분의 이익을 포기하는 경우가 발생할 때가 있다. 이를 해소하기 위해 2개의 Donchain band을 사용하는 방식을 말한다. 즉 진입시에는 넓은 band를 청산시에는 타이트한 band를 사용하는 것이다.
여기서는 100일 Donchain band을 상향 돌파하는 경우에는 매수, 50일 Donchain band을 하향 돌파하는 경우에는 매수 포지션 청산, 100일 Donchain band을 하향 돌파하는 경우에는 매도, 50일 Donchain band을 상향 돌파하는 경우에는 매도 포지션을 청산하는 것을 방법으로 한다. stoploss는 10일 ATR의 4배로 설정한다.
포지션 사이즈는 stoploss의 2%로 두고, Corn에 이 모델을 백테스팅해보면, P/F 주식 곡선은 특히 최근에 변동성이 높았고 연간수익률은 16.3%이고 MDD는 -37.24% 인 것으로 나타났다. 여기서 주목해야 할 점은 수정된 이 시스템은 거래를 조기 종료하므로 익스포져가 낮기 때문에 포지션 사이즈를 늘리는 고민을 할 필요가 있다는 것이다.
system의 견고함을 증명하기 위해 다른 sample test를 했을 때, 다른 포트폴리오가 성과가 더 좋았다. 그렇지만 두 경우 모두 성과가 좋다고 볼 수 있다.
3. Bollinger bands
Bollinger band는 SMA를 기준으로 표준편차 만큼 위에 있는 상한선과 아래에 있는 하한선으로 구성된 band이다. 표준편차를 기반으로 band의 거리를 정하기에, band는 기초가격의 변동성을 말하기도 한다.
① Bollinger band breakout
여기서는 100일 SMA과 1 표준편차를 사용하고, Bollinger band 상한선을 돌파하면 매수를, Bollinger band 의 하한선을 돌파하면 매수 포지션을 청산하고 매도를, 또 Bollinger band의 상한선을 돌파하면 매도 포지션을 청산하고 매수를 하는 방식이다. stoploss는 10일 ATR의 4배로 설정한다.
포지션 사이즈는 stoploss의 2%로 두고, T-bond에 이 모델을 백테스팅해보면, P/F 주식 곡선은 꾸준히 증가하고 연간수익률은 17.13%이고 MDD는 -54.83% 를 보였다. 전반적으로 이 시스템은 좋은 성과를 보이는 것으로 볼 수 있다.
system의 견고함을 증명하기 위해 다른 Bollinger band 파라미터를 테스트 했을 때, 더 좋은 성과를 보였다. 그렇지만 두 경우 모두 성과가 좋다고 볼 수 있다.
4. Symbol Rotation
다른 시스템에 비해서 투자자의 선호에 따라 투자 자산을 변경한다는 차이점이 있다. 지금까지 제시한 전략들은 각 시장들은 독립적이기에 한 시장에서의 매매의 결정은 다른 시장에 영향을 주지 않는다는 것을 전제로 하고 있었다. Symbol Rotation은 총 20개의 선물중에 short 포지션 3개, long 포지션 3개 총 딱 6개의 선물에만 투자하는 방식이다. 이러한 방식은 각 시장이 얼마나 추세가 강한지를 분석하고 가장 추세를 보이는 것을 포트폴리오에 편입, 강한 추세를 보이지 않는 것은 다른 추세가 강한 시장으로 대체하는 것이다.
① TrendStrenth C Symbol Rotation
여기서는 TrendStrenth C 지표가 사용되는데, TrendStrenth A 지표와 비슷하지만, 몇개의 SMA가 상승, 하락하는 지 계산하고 SMA값이 높을 수록 추세가 강하다고 판단하는 지표라는 점에서 차이가 있다. 또 이 지표는 monthly data를 활용한다. 즉 한달에 한번만 거래한다. 여기서는 월별 TrendStrenth C에서 수치가 가장 높은 3개의 시장에서는 매수를, 수치가 가장 낮은 3개의 시장에서는 매도를, 즉 6개의 선물에만 포지션을 취하고, 다른 계약의 지표 수치가 높아진다면 포지션을 청산하는 방식이다.
포지션 사이즈는 현재가격과 SMA가격의 차이가 가장 큰 간격의 4%로 두고, 이 모델을 백테스팅해보면, P/F 주식 곡선은 1999년 까지 꾸준히 증가하다가 최근 6년 간 높은 변동성을 보였다. 연간수익률은 14.92%이고 MDD는 -49.78% 를 보였다. 전반적으로 이 시스템은 좋은 성과를 보이는 것으로 볼 수 있다.
system의 견고함을 증명하기 위해 다른 sample을 테스트 했을 때, 더 좋은 성과를 보이지 못했다. 그러나 거의 유사했으며 수용가능한 결과였다. 그래서 우리는 이 시스템이 broad 범위에서 효과가 있다고 볼 수 있다.
다음은 이 논문에서 제시된 모든 시스템의 연간수익률과 MDD 성과를 비교한 표와 그래프이다.
2. 가장 중요하다고 생각하는 핵심 부분
추세를 추종하는 여러 시스템이 이 논문에서 제시되었다. 각 시스템의 특징과 rule, 조건들, 그리고 이들 모델을 백테스팅했을 때 성과가 어떤지를 분석하는 것까지 일련의 시스템 백테스팅 과정에 주목할 필요가 있다.
이 모든 시스템들은 높은 drawdown(모두 30% 이상이였다)를 가졌지만서도 높은 수익(모두 11% 이상이였다)를 가지고 있다. 높은 리스크를 take하는 만큼 큰 수익을 내는 것이다. 물론 돈을 얻기도 전에 우리는 손실을 겪을 수도 있으므로, 초반에 높은 drawdown을 겪더라도 견딜 수 있는지를 스스로 물어볼 필요가 있다. 또한 최대의 이익보다는 리스크 분석에 더 비중을 두는 것을 이 논문은 권고한다.
3. 논문을 읽으면서 이해하기 어려웠던 부분
Q1.
전체적으로 long+short, long only, short only로 구분된 성과 비교 표를 이 논문에서 제시해주고 있는데, 단순 B&H전략과 성과를 비교하는 것이 아니라 왜 굳이 모멘텀전략을 사용한 long only, short only 전략과 성과를 비교하는 것인지 모르겠다.
Q2.
p. 35의 "The system enters long in January 2004 when the price
crossed (intraday) the 100-day High. It stays in the market until the price crosses the 50-day Low in
May 2004. Thus, it exists earlier as the original system thus not giving away too much profit. " 부분에서 2004년 1월에 시장에 진입하고, 50일 최저가를 돌파할 때까지 시장에 남아있는다고 했다. 그러나 뒤 문장에서 기존의 시스템으로 일찍이 있었기에 많은 이익을 주지 않는다고 설명했는데, 이 말의 뜻을 이해하지 못했다. 장기간 포지션에 있었기 때문에 더 한계 이익이 생기지 않는다는 말인지.
Q3.p.35에서 "Compared to the initial system, the yearly profit is lower (16.3% vs. 19.8%) and the maximum drawdown increased (37.2% vs. 33.8%). Bear in mind that the modified system now has a lower exposure (20.7% vs. 26.2%) as it exits each trade earlier. So, you might want to consider increasing the position size to improve profits." 부분에서 어째서 100일 밴드가 하나일 때보다 50일 밴드, 100일 밴드 2개가 존재할 때가 성과가 낮을 수 있는 지 모르겠다.
4. 논문을 읽고 난 후 본인의 생각과 견해
지금까지의 논문은 팩터를 설명해주거나 전략을 설명해주는 논문이였는데 이 논문은 실제로 다양한 모멘텀 모델을 어떻게 백테스팅하며 어떤 결과가 나오고 어떻게 이 결과를 분석하는 지를 보여주는 논문이였다. 조금더 직접 스스로 퀀트 모델링과 백테스팅하는 일련의 퀀트 과정에 더더욱 가까워지는 느낌이 들어 좋았다. 아직은 이 모멘텀 전략들이 익숙하지 않은 탓인지, 아리송한 부분이 아직 남기도 했고, 어떤 전략이 어떤 상황에서 유불리 한지도 모르겠다. 어찌되었든 모멘텀 전략은 좋은 성과를 달성할 수 있는 팩터라는 것은 분명해졌다. 조금 더 공부가 필요할 듯 싶다. :-)