Applying Deep Learning to Enhance Momentum Trading Strategies in Stocks
abstract
우리는 개별 주식 가격의 history에서 feature를 추출하기 위해 stacked restricted Boltzmann machines로 구성된 autoencoder을 사용한다.우리 모델은 입력 기능의 extensive hand-engineering 없이 주식의 momentum effect의 향상된 버전을 발견하고 1990-2009 테스트 기간 동안 45.93 %의 연간 수익률을 basic momentum에 대해 10.53 %로 제공 할 수 있다.
momentum지표의 경향성을 추론하기 위해 보조 지표로 stacked restricted Boltzmann machines로 구성된 autoencoder을 사용한다.
1. Introduction
가격 모멘텀은 지난 3 개월에서 12 개월에 걸친 과거 수익률이 높은 종목이 과거의 낮은 수익률 (낙찰자)을 가진 종목과 비교해 향후 몇 개월 동안 계속 양호한 실적을 보인 것을 추론한 경험적 산물이다. (Jegadeesh & Titman, 1993).
이에 따른 후속 연구가 진행되면서 모멘텀 효과는 널리 알려지게 되었고 이는 미국 시장의 지속적인 강세에 좋은 종목 수익률 지표를 갱신하면서 국제 주식뿐만 아니라 외환, 상품 및 채권을 포함한 다른 자산 클래스에도 적용되게 되었다. (Asness et al., 2013 ).
특히 재무 학자들의 경우, 승자를 사거나 패자를 파는 단순한 전략이 분명히 수익성이 있을 수 있다는 사실과 시장이 가용 정보를 자산 가격에 신속하게 통합한다는 개념을 도입하게 되었고
실제로 파마와 프렌치 (2008)는 주식 수익률에있어 momentum가 “premier anomaly”라고 설명하게 되었다.
모멘텀 트레이딩 전략은 많은 세분화와 함께 주로 재무 학자와 실무자가 역사적인 주가에서 기능을 손으로 엔지니어링하는 방대한 노력의 산물이며 최근의 deep learning의 발전에 힘입어 machine learning algorithm이 labor-intensive feature engineering없이 데이터에서 차별 정보를 추출 할 수 있도록 보장할 수 있다는 사실이 증명되고 음성 인식, 이미지 인식 및 자연어 처리와 같은 분야에 성공적으로 적용된 사례를 통해서 momentum전략의 보조 지표로써의 쓰임이 실제적으로 실험되게 되었다. (Bengio 외. , 2012).
이 논문에서 우리는 deep learning 기법이 미래의 수익을 성공적으로 예측할 수있는 주가의 시계열에서 특징을 발견 할 수 있는지 여부를 검토한다.
이는 실험적인 것이며 심층 학습에 대한 대부분의 연구는 인간이 쉽게 수행 할 수있는 작업을 고려하지만 공개적으로 사용 가능한 정보를 사용하여 주식 수익률을 예측하는 것은 주가 변동에 높은 수준의 noise가 주어져 전문 투자자 조차도 쉽지 않은 영역이기에 상당히 도전적인 부분이다.
또한, 존재하는 모든 패턴은 투자자들이 시간이 지남에 따라 배우고 거래 이익을 위해 경쟁함에 따라 변경 될 수 있음을 전제한다.
투자자의 historical price charts 가 널리 보급되어 있고 분석의 기본 모드가 시각적이라는 점을 고려하면 Hinton과 Salakhutdinov (2006)가 손으로 쓴 숫자를 분류하는 데 사용되는 것과 유사한 접근법을 사용합니다.
특히 우리는 stacked restricted Boltzmann machines (RBMs)으로 구성된 autoencoder를 사용하여 주식 가격에서 피쳐를 추출하고 FFNN (Feedforward Network) 분류기로 전달합니다.
2. Data
우리는 보안 가격 연구 센터 (Center for Security Price)에서 개별 미국 주식에 대한 데이터를 얻습니다.
2.1. Sample selection
데이터 샘플을 구성하는 이유는 다양한 환경을 고려할 때 over fitting을 방지하기 위하여 constraints 조건을 두고 이를 바탕으로 실험하기 위해서다.
분석을 NYSE, AMEX 또는 Nasdaq의 보통주 거래로 제한합니다. Market microstructure-related noise의 영향을 줄이기 위해 포트폴리오 형성시 월 마감 가격이 주당 5 달러 미만인 주식은 제외합니다. 이 단계는 또한 extreme returns과 예제의 수를 줄입니다.
훈련 세트는 1965 년 1 월부터 1989 년 12 월까지의 기간을 포함하며, Jegadeesh and Titman (1993)이 처음으로 사용한 기간과 일치하며 848,000 개의 재고 / 월 사례를 포함합니다. 테스트 세트는 1990 년 1 월부터 2009 년 12 월까지의 기간을 다루며 924,300 개의 재고 / 월 예제를 포함합니다. 평균적으로 매달 샘플에 3,282 개의 주식이 있습니다.
2.2. Input variables and preprocessing
우리는 각 주식에 대한 과거 가격 차트에서 얻을 수있는 정보를 모델에 제공, extensive feature engineering 없이 유용한 feature을 추출합니다.
- 매월 t에 대해, 우리는 월 t-2에서 t-13까지의 12 월의 월별 수익률과 매월 t에 상응하는 20 일 수익률을 사용
- 1월에 떨어질 때 보유 기간인 월 t + 1이 하락할 경우 지표 변수로 사용
총 stock / month 예제마다 총 33 개의 입력 변수가 있습니다.
- 월간 수익률과 일일 수익률을 사용한 20 누적 수익률을 사용하여 일련의 12 누적 수익을 계산합니다.
가격 모멘텀은 과거 수익률이 높은 것과 다른 주식과 비교해 과거 수익률이 낮은 것을 가진 cross- sectional phenomenon이라는 것을 알 수 있다.
따라서 우리는 매월 또는 매일 모든 주식의 cross-sectional에 대한 z- 점수를 계산하여 각 누적 수익률을 정규화합니다.
그림 1은 테스트 세트의 한 예에 대한 12 회 월별 수익을 사용하여 사전 처리 파이프 라인을 보여줍니다.
마침내 우리는 다음 달 t + 1에 걸친 수익률을 사용하여 중간 값보다 작은 수익을 클래스 1에 속한 것으로, 중간에 수익률이 클래스 2에 속하는 것으로 표시합니다.
3.심층 학습 모델
3.1. 모델 및 학습 알고리즘
우리는 Hinton과 Salakhutdinov (2006)가 여러 개의 숨겨진 계층을 가진 네트워크를 교육하기 위해 도입 한 것과 유사한 접근 방식을 따르고 해당 모델은 전체 볼츠만 머신과 달리 층 내부 연결이 없는 RBM 스택으로 구성한다.
각 RBM은 보이는 단위 (입력)의 한 층과 대칭 링크로 연결된 숨겨진 단위의 한 층으로 구성되고, 각 RBM의 출력은 스택의 다음 RBM에 대한 입력으로 사용된다.
사전 트레이닝 단계에서 레이어별로 인코더 네트워크 (그림 2 참조)를 학습시키고, Hinton (2010)에 이어 우리는 데이터 세트를 더 작고 중복되지 않는 미니 배치로 분할한다.
그런 다음 인코더의 RBM이 un-rolling 되어 인코더 – 디코더를 형성한다.
이 인코더 – 디코더는 백 프레젠테이션을 사용하여 fine-tunning된다.
우리의 구현에서 인코더의 마지막 레이어에 숨겨진 유닛의 수가 급격히 차원이 감소되지만 이는 바로 아래에 설명한 바와 같이 병목 영역의 크기를 명시적으로 설계한 것이 아닌 네트워크 차원으로 정하는 데 사용되는 optimization pro-cedure의 결과이다.
이 단계에서 인코더는 입력의 낮은 차원 표현을 출력합니다.
이는 수익률 예측에 유용한 과거 주가 차트의 흥미로운 특징을 유지하지만 관련성이 없는 소음은 제거한다는 점이다.
우리는 지금까지 추정된 가중치를 사용하여 인코더와 FFNN 분류기로 구성된 전체 네트워크에서 해당 가중치를 초기화합니다. 마지막 단계는 backpropagation을 통해 labeled examples를 사용하여 전체 네트워크를 train하는 것 입니다.
3.2. Network specification
Hold-out cross validation를 사용하여 네트워크의 레이어 당 레이어 수와 레이어 수를 결정한다.
특히, 훈련 세트를 1965-1982와 1983- 1989을 각각 다루는 두 개의 하위 세트로 더 나누고 각 모델 사양은 첫 번째 하위 집합에서 학습 된 다음 두 번째 하위 집합에서 테스트된다.
충분히 큰 데이터 세트를 가지고 있으며 주어진 역사적 날짜에 이용할 수없는 데이터로 모델을 training함으로써 발생할 수 있는 look-ahead bias 을 피하기 위해 k-fold cross validation에 대해 Hold-out cross validation을 사용한다.
작업을 관리 가능하게 유지하기 위해 두 번째 두 번째 계층의 단위 수를 50으로 고정하기에 candidate specications의 첫 번째 집합은 33-s2 -50-2이고 두 번째 집합은 33-s2 -s3 -50-2입니다. 여기서 sl 계층 l의 단위 수를 결정합니다.
Hold-out cross validation scheme을 사용하는 단위 수에 대한 그리드 검색은 s2 = 40 및 s3 = 4가 가장 낮은 classification error를 나타냄을 찾을 수 있다.
그 다음 세트의 사양은 33-s2 -s3 -s4 -50-2이다. 많은 수의 차원이 주어지면 s2 = 40 및 s4 = 4를 사용하고 s3에 대해서만 검색한다.
따라서 다른 레이어를 추가해도 classification error가 줄어들지 않는다. 이에 최종 사양은 33 개의 입력을 가져 와서 4 차원 코드로 줄이는 인코더로 구성된 5- 계층 네트워크 33-40-4-50-2이며 이는 4 개의 입력을 받아 두 클래스에 대한 확률을 출력하는 분류기이다.
취해진 접근법은 틀림없이 heuristic이지만, 우리는 base case model을 명기하는 훈련된 method을 제공한다고 믿는다.
4.결과
우리는 1965-1989 년의 예제를 사용하여 모델을 훈련시키고 1990-2009 년의 모델을 사용하여 테스트한다. 이 섹션에서는 네트워크 구성과 가중치를 모두 고정하지만 나중에 시간에 따라 업데이트 할 수 있는 방법에 대해 추후 설명하겠다.
4.1. Classification Performance
표 1은 테스트 예제의 총 개수로 스케일 된 항목을 가진 혼동 행렬의 결과를 요약한다.
이 모델은 53.36 %의 전체 정확도를 달성하고 모델은 클래스 1을 예측할 때 시간의 53.84 %이고 클래스 2를 예측할 때 시간의 53.01 %보다 다소 낮다.
그러나 이들 가능성만으로는 모델의 성과에 대한 완벽한 그림을 제공하지 못한다. 왜냐하면 투자자는 실제로 그들의 objective function에서 수익에 대해 더 많은 관심을 가지기 때문이다.
특히, 클래스 1에 속하는 것으로 예상되는 주식에 대한 실현 수익률을 클래스 2에 속할 것으로 예상되는 주식에 대한 실현 수익률과 비교하고자 한다.
테스트 세트의 모든 month을 풀링하면 평균 1 개월 보유 기간 수익률은 0.11 % 클래스 1에 속할 것으로 예상되는 종목의 경우 1.50 % 또는 클래스 2에 속할 것으로 예측되는 종목의 경우 1.50 %, 또는 1.39 %의 차이.
또는 지난 12 개월간의 수익 (월 t – 13에서 t – 2까지)을 사용하고 과거 수익률이 중앙값보다 낮은 사례가 클래스 1에 있고 중간 값 이상인 사례가 클래스 2에 있다고 예측할 수 있다.
이 기본 momentum 전략은 평균 보유 기간은 클래스 1의 주식의 경우 0.64 %이고 클래스 2의 주식의 경우 1.20 % 또는 0.55 %의 차이입니다.
4.2. Information content of class probabilities
이러한 결과가 유망해 보이지만, 우리는 모델에 의해 생성 된 정보의 일부만 사용했다.
Figure 3은 모델에 따른 클래스 2에있는 예상 확률과 테스트 세트에 대해 실제로 실현 된 보유 기간 수익률 간의 관계를 보여준다.
여기서 곡선을 부드럽게하기 위해 Gaussian kernel regression 분석을 사용한다. 우리는 클래스 2 확률이 높아질수록 평균 수익률이 높아진다는 관계가 증가하는 것을 알 수 있다. 모든 주식을 보유 할 필요가 없기 때문에 투자자는 길고 짧은 포트폴리오를 형성하기 위해 50 % 임계치를 사용하는 것보다 distribution의 tails에 주식을 매매하여 팔면 분명히 나아질 수 있다.
우리는 매월 모든 주식을 2 등급 확률로 순위를 매기고 상위 십 분위수에있는 주식을 매입하여 하위 십 분위수에 판매한다.
다음 달에 우리는 이러한 포지션을 없애고 새로운 길고 짧은 포트폴리오를 형성합니다. 테스트 세트에 대해 이 프로세스를 반복하면 매월 투자 수익의 시계열이 생성된다.
비교를 위해 과거 12 개월 수익률을 사용하여이 분석을 수행하여 십진법을 형성한다. Table 2는 이 두 가지 전략에 대한 평균 수익률을 나타내며 이를 enhanced and basic momentum이라고 부른다.
향상된 전략은 9.26의 t- 통계량으로 3.35 %의 평균 월간 수익을 창출합니다. 대조적으로, 기본 전략은 더 겸손하지만 통계적으로 유의미한, 월간 1.10 %를 수익률이 나온다.
연간 기준으로 우리 모델의 수익률은 기본 모멘텀의 경우 10.53 % 대 45.93 %로 매우 인상적이다.
그림 4는 1990 년에서 2009 년까지 향상된 기본 전략에 투자 된 대수를 기준으로 한 대수적 성장을 보여준다.
Implementation costs을 고려하기 전에 부 (富)를 끝내는 것은 기본 전략의 경우 7.41 달러, 향상된 전략의 경우 1,919달러 259배 높았다
4.3. 투자 수익의 출처
이제는 10 분위 주가 10 분위수가 12 분위수보다 높다는 의미에서 개선 된 전략은 모멘텀 전략이라는 것을 보여준다.
Table 3은 강화 된 전략과 기본 전략에 대해 z 점수로 표현한 지난 12 개월 (월 t-13에서 t-2)과 지난 20 일 (월 t)의 결과를 보여준다. 우리는 이 두 가지 특징에 초점을 맞추고 있다. 왜냐하면 금융 문헌 (Jegadeesh & Titman, 1993)이 스톡 수익의 잠재적인 predictors라는 것이 강조 되었기 때문이다. By constructions 기본 모멘텀 전략은 3 개월 이상의 표준 편차가 있는 이 기능에서 10-1 스프레드로 지난 12 개월 수익률을 기반으로 한 극단적인 입장을 취한다. 향상된 전략은 0.62의 10 – 1 스프레드를 가지고 있으며 지난 12 개월 수익률을 기준으로 내기를하고 있지만 기본 전략보다 덜 extreme입니다. 표의 아래쪽 절반은 최근의 수익률이 좋지 않은 주식을 구매하고 단기 수익 효과 (Jegadeesh, 1990)와 일치하는 최근 수익률이 높은 주식을 판매한다는 것을 보여준다. 그러나 기본 모멘텀 전략은 decile 1과 10에서 지난 20 일 수익률이 비슷하다.
우리는 이 두 가지 특징을 강조하면서 모델이 역사적인 가격 차트에서 해석하기에 덜 직관적 인 다른 미묘한 패턴을 선택하고있을 가능성이 있음을 강조한다. Table 3은 향상된 전략이 지난 12 개월 및 지난 20 일 수익을 기준으로 지나치게 extreme 포지션을 취하지 않는다는 것을 보여준다. 금융 연구에서 일반적인 관행처럼 포트폴리오를 형성하기 위해 이러한 기능을 두 번 정렬하는 경우와 같다. 우리는 이 결과를 투자 수익의 규모와 함께 deep learning을 장려하는 것으로 제안한다. 이는 우리 모델이 주가의 알려진 패턴을 단순히 재발견하는 것이 아니라 인간이 달성 할 수 있었던 것 이상으로 나아가고 있음을 암시하기 때문이다.
5.토론 및 추가 작업
이 연구는 우리가 알고있는 한, 주식 거래에 대한 깊은 학습을 적용하고 적용된 기계 학습 문헌에 크게 두 가지 기여를 한 첫 번째 사례 중 하나이다.
첫째, RBM으로 구성된 누적 자동 인코딩 장치는 입력이 적절하게 사전 처리되면 금융 자산 가격과 같은 낮은 신호 대 잡음 (signal-to-noise) 시계열 데이터에서도 유용한 기능을 추출 할 수 있음을 보여준다.
둘째, 학습 연구자를 대상으로 오랜 기간 동안 관심을 기울여 온 응용 분야 (금융 시장)에서 확장 된 피쳐 엔지니어링에 대한 필요성을 줄이기위한 심화 학습의 잠재력을 설명하고, 이 모델은 다른 주파수의 수익과 비 수익성 데이터를 쉽게 수용하고 모멘텀 전략에 대한 막대한 재무 리터럴에서 대부분의 전략을 초과하는 투자 결과를 산출한다.
진행중인 업무에서 우리는 산업 및 시장 수익의 합계뿐만 아니라 회사 특성 및 거시 경제 지표와 같은 비 수익성 데이터와 같은 추가 기능을 고려하고 있다. 입력의 수를 늘릴 때 열려있는 질문은 다양한 기능 범주에 대한 별도의 자동 인코딩이 단일 자동 인코딩에서 모든 기능을 결합하는 것보다 더 잘 수행되는지 여부다.
우리는 또한 시간이 지남에 따라 네트워크에서 가중치를 업데이트 할 때의 영향을 조사하고 있다. 우리가 모델을 한 번 훈련하고 전체 테스트 기간 동안 고정 된 매개 변수를 보유하는 현재의 방법론은 시간이 지남에 따라 시장 변화의 제도적 틀뿐만 아니라 투자자 행동으로서 최적이 될 것 같지 않다. 또한 데이터가 고정 된 경우에도 각 날짜마다 사용 가능한 모든 데이터로 교육함으로써 성능을 향상시킬 수 있다. 중요한 구현 문제는 특히 기능의 수와 네트워크의 깊이가 증가함에 따라 계산 비용이다. 그래서 GPU에서 실행될 수있는 학습 알고리즘의 병렬 구현을 연구하고 있다.
이 접근법은 알고리즘이 네트워크 계층 수준뿐만 아니라 데이터 수준 (병렬 배치를 사용하기 때문에)에서 병렬화를 활용할 수 있으므로 교육 시간이 크게 감소할 것을 기대한다.
더 간단한 방법은 매월 분류기를 재교육하는 것이지만 계산 비용을 줄이기 위해서는 자동 인코딩을 덜 빈번하게 업데이트하는 것이 좋다.