금융 Technical Analysis Library 설치

TA-LIB 는 C/C++ 로 제작된 Tachnical Analysis Library 이다.

  • Includes 150+ indicators such as ADX, MACD, RSI, Stochastic, Bollinger Bands, etc…
  • Candlestick pattern recognitio
  • Open-source API for C/C++, Java, Perl, Python and 100% Managed .NET
  • python 에서 ta-lib 를 위한 wraper 로 ta-lib-python 과 C ta-lib 와 headers 가 필요하다.

ta-lib-python:

https://github.com/TA-Lib/ta-lib-python

  • C 라이브러리가 설치되지 않으면 "ta-lib/ta_defs.h" not found 에러가 난다.
  • pypi 에서 설치시 build를 해서 설치한다.
  • ta-lib C library 설치가 된후에 파이썬 모듈을 설치한다.

1. Dependencies ta-lib C library 설치

  1. macOS: https://github.com/TA-Lib/ta-lib-python#mac-os-x
  2. Windows: https://github.com/TA-Lib/ta-lib-python#windows
  3. Linux: https://github.com/TA-Lib/ta-lib-python#linux

linux / macos

2024년 현재 ta-lib C library 는 github 에서 호스팅을 하고 있다.

git 에서 Tag의 릴리스 소스를 다운받는다.

1
2
3
4
5
6
$ wget https://github.com/TA-Lib/ta-lib/releases/download/v0.4.0/ta-lib-0.4.0-src.tar.gz
$ tar -xzf ta-lib-0.4.0-src.tar.gz
$ cd ta-lib/
$ sudo ./configure
$ sudo make
$ sudo make install

이전 0.4.0 까지 sourceforge 에서 호스팅했다.

windows:

Windows 빌드

Download ta-lib-0.4.0-msvc.zip and unzip to C:\ta-lib.

https://blog.quantinsti.com/install-ta-lib-python/

2. ta-lib python

파이썬 ta-lib python 모듈을 설치한다.

1
2
3
pip install TA-Lib

conda install -c conda-forge ta-lib

[논문] 캔들스틱 차트와 합성곱 신경망을 이용한 주가 갭 예측 연구

원문: https://www.kais99.org/jkais/journal/Vol24No01/vol24no01p64.pdf

CNN 모형에 학습시킨 점과 단기거래에서 중요한 역할을 하는 주가 갭을 예측

캔들스틱 차트(candlestick chart) 패턴과 딥러닝 모형을 결합하여 주가의 갭(gap)을 예측하는 것이다.

합성곱 신경망(CNN : Convolutional Neural Network, 이하 CNN)을 이용하여 2차원의 이
미지 데이터를 학습하고 주가 갭을 예측한다.

첫째, 2017년 1월부터 2022년 8월까지의 기간에서 KOSPI200을 구성하는
개별종목의 일중 주가 자료와 KOSPI, S&P500,
NASDAQ 지수의 일별 자료로 이미지를 생성하고, 이미
지에 갭 수익률을 라벨링(labeling) 한다.
둘째, 갭 상승과 갭 하락을 예측하는 이진 분류 CNN
모형을 설계하고 이미지를 모형에 학습시킨 후, 모형의
성능을 평가할 것이다.

셋째, 학습, 검증, 테스트에 이용되지 않은 표본 외 자
료를 예측하여 결과를 평가하고, 예측 결괏값으로 롱숏전략(long-short strategy, L-S)을 시뮬레이션하여 실제
투자에서의 활용 가능성을 살펴볼 것이다

2. 이론적 배경

Lee et al.(1997)은 주식가격의 변동을 예고하는 패턴들을 정의하고 이를 이용해 차
트해석기(chart interpreter)를 개발하였다[6].

1992년 부터 1997년까지 데이터를 이용하여 패턴 매매 방식을 시뮬레이션한 결과 평균 투자 성공률이 72%를 보였지만, 사용자가 패턴을 정의해주어야 한다는 부분에 한계가
있다고 밝혔다. 이후 패턴을 이용한 분석은 Lee(2012)의 이동평균선 패턴과 전환점 행렬을 이용한 연구, Yang et al.(2019)의 M&W 패턴과 유전자 알고리즘을 이용한 연
구처럼 지능형 매매시스템을 이용한 연구로 발전하였다[7,8].

주가 갭

주가 갭은 거래가 중단되는 전일의 장 마감 시점부터 당일 장 시
작 시점까지 거래가 중단되는 시간 동안 새로운 정보가 발생한다면 당일 시가는 전일 종가와 차이가 발생할 수있다.

주가 갭 식(1)

$$
\text{gap}_t = {\text{Open}t \over \text{Close}{t-1}} - 1
$$

주가 갭 이례 현상(price gap anomaly) 연구

  1. Cross(1973)는 금요일과 월요일 사이에 주가 수익률 분포가 변함을 밝혔으며[9]
  2. French(1980), Gibbons and Hess(1981), Keim and Stambaugh (1984) 등에 의해 주말효과(weekend effect)가 연구되었다[10-12].
  3. 주가 갭에 관한 다른 연구로는 시가가 형성될 때 주가가 과잉반응하고 장중에는 과잉반응이 해소된다 주장하는 과잉반응가설(overreaction hypothesis)이 있다. Grant
    et al.(2005)은 시가에 뚜렷한 양의 수익률이 나타나고 이후 장중에는 수익률이 반전한다고 분석했다[13].
  4. Ham et al.(2022)은 미국 주식시장에서 야간수익률이 주간수익률 보다 높은 오버나잇 퍼즐(overnight puzzle) 현상이 나타남을 밝혔다[14]
  5. Kim(2022)은 이 현상을 코스피 주가지수에 적용하여 실증 분석한 결과, 2003년 2월부터 2022년 6월까지의 기간에서 야간수익률의 평균이 하루 전체 수익률의 평균보다 4.08배 이상 높게 나타난다 분석했다[15].

합성곱 신경망과 주가 예측

  1. CNN은 LeCun et al.(1989)이 문자인식을 위해 소개한 방법으로, 픽셀로 변환한 이미지의 특징을 추출하여 분류(classification)하는 것에 강점이 있는 딥러닝 모형
    이다[16]

  2. LSTM(long shortterm memory) 등을 이용한 시계열 예측 연구와 함께 국내외에서 활발히 연구되고 있다[17].

  3. Jiang et al.(2020), CNN과 이미지를 이용한 예측 성능 좋고, 일간 자료로 학습한 모형은 월간 자료를 예측하는 데 유용하며, 미국 주식에서 학습한 패턴은 국제 시장에서도 예측력이 높음을 보여주었다[18].

  4. Sim et al.(2020)은 S&P500 지수에 9개의 기술적
    지표(technical indicator)를 적용 후 이미지로 변환시켜
    학습한 결과 CNN이 ANN(artificial neural network)
    이나 SVM(support vector machine)보다 정확도가
    높음을 밝혔다. 그리고 이 연구에서는 CNN에 사용되는
    하이퍼파라미터(hyperparameter)를 최적화하여 변수
    가 결괏값에 미치는 영향을 비교하였다[19].

3. 자료 및 연구 모형

[논문] Stock Chart Pattern recognition with Deep Learning

Stock Chart Pattern recognition with Deep Learning

이 논문은 주식 가격에서 챠트 패턴을 인식하는 CNN, LSTM 의 성능을 평가한다.

1. 서론

  1. 주가의 OHLC(Open High Low Close)[1] 에서 반복적으로 나타나는 캔들 차트 패턴으로 트레이더가 매수/매도 신호로 사용했다.

  2. 여러 연구 불코프스키[2]에 따르면 패턴과 미래 추세의 상관관계를 발견했다.

  3. 딥러닝으로 이런 패턴을 감지하고 하드코딩 인식 방법과 비교 평가한다.

  4. 패턴은 가격과 상관관계가 작기 때문에[1][2] 주식 시장 예측에 도움이 된다.

  5. 다른 지표와 함께 활용하면 다른 결과를 얻을 수 있다.

여러 유형의 탐지 알고리즘이 존재합니다.

  1. 첫 번째 솔루션은 하드 코딩된 알고리즘입니다.

    • 구현이 빠르고 빠른 결과를 제공하지만, 주어진 패턴에 대한 매개변수를 찾는 데 사람이 필요.
    • 일반화할 수 있는 가능성이 없습니다. 패턴이 정의된 범위에서 약간 벗어난 경우 범위를 약간 벗어나는 경우, 사람이 다르게 분류했더라도 감지되지 않습니다.
    • 인식되는 패턴의 수를 늘리려면 사람이 직접 캔들스틱 차트를 검토하여 신호 특성을 추론한 후 해당 패턴에 특정한 조건을 사용하여 감지를 구현하는 것을 의미합니다.
  2. DWT Dynamic Time Warping

    • 두 시계열의 거리를 계산하여 계산하는 것으로 구성
    • 알고리즘을 사용하려면 사람이 선택해야 하는 참조 시계열을 사용해야 합니다. 참조 시계열은 패턴과 유사한 신호와 비교했을 때 잘 일반화되어야 합니다.
  3. 딥러닝

    • 2D CNN 에 차트 이미지를 사용해 인식하도록 한다.
    • 1D CNN 과 LSTM 의 순환신경망을 사용할 수 있다.

2. TARGET PATTERN

첫번째 패턴은 bearish flag 이다

bearish flag 패턴:

  1. flag pole 하락 추세 발견
  2. 하락중 상승 기울기 bear flag 발견
  3. 되돌림이 50%이상은 flag 패턴이 아니고, 38% 이하여야 한다.
  4. 되돌림 flag 상단 또는 하단 채널의 저점 아래 돌파 시 진입 시점
  5. flag pole 의 크기와 같은 저점의 가격을 목표가격으로 정한다.

bearish flag 트레이딩 전략

두번째 패턴은 “double top”이다.


3. POSSIBLE APPROACHES

2 단계로 연구를 진행

1단계: 하드코딩 인식기 구현

- 모델을 감지하는데 사용한ㄷ
- 훈련 세트를 구축하는데 사용.

2단계: 딥러닝 모델 훈련

- 훈련세트를 이용 여러 딥러닝 모델을 훈련
- 훈련 세트의 패턴뿐만 아니라 하드코딩된 모델이 감지할 수 없는 일부 패턴도 감지할 수 있는지 관찰하여 일반화 기능을 평가합니다.

하드코딩된 인식기는 여백을 사용하여 다양한 비율의 세그먼트에서
패턴을 감지합니다. 우리는
더 많거나 적은 패턴을 감지하기 위해 여백을 변경할 수 있습니다.
감지할 수 있습니다. 이 감지기를 지정된 시간 프레임에 걸쳐
으로 이 탐지기를 실행했습니다.
사용 된 시간 프레임은 예측을 위해 더 많은 과거 정보를 제공한다는 것을 의미했습니다. 이 값의 범위는 15분에서 3시간까지
분에서 3시간까지입니다. 각 샘플의 시간 프레임은
날씨와 관련된 클래스가 있는 OHLC 값의 시간 프레임입니다.
패턴이 해당 기간 동안 존재했는지 여부입니다. 이 분석은
2017년 1월부터 2018년 3월까지 알파벳 C 주식의 데이터를 기반으로 분석했습니다.
부터 2018년 3월까지의 일별 1분 데이터를 기반으로 분석했습니다.


참고

  1. http://thepatternsite.com/

[논문] Going deeper with convolutions

원문: https://arxiv.org/pdf/1409.4842v1.pdf

제안하는 코드네임 Inception 신경망 구조는 ImageNet Large-Scale Visual Recognition Challenge 2014 (ILSVRC14) 에 사용해서 컴퓨팅 성능을 최적화한 구조로 GoogleLeNet 이라 부른다. 심층 네트워크로 22개의 층을 가지고 분류와 검출에 대한 컨텍스트에서 품질이 평가된다.

1. 서론

  1. 2010년대에 컨벌루션 네트워크는 이미지 인식과 검출에서 강력한 하드웨어가 아닌 새로운 네트워크 구조, 새 아이디어 와 알고리즘으로 강력해 졌다.

  2. ILSVRC 2014 이미지를 사용해 GoogleLeNet 2012년 Krizhevsky[9] 가 수행한 파라미터 보다 12배 적은 수로 좋은 정확도를 냈다.

  3. 객체 검출에서 가장큰 이득은 심층망(deep network) 혹은 거대 모델의 성능이 아니고 심층 구조와 전통 컴퓨터 비전인 Girshick의 R-CNN [6] 들의 시너지로 얻어 냈다.

  4. 이 논문에서 모바일과 임베디드에서 전력과 메모리 사용에 중요성을 고려했다. 그래서 1.5억개 곱을 추론에 유지하도록 설계되었다.

  5. 이 논문에서 Lin [12] 가 제시한 Inception 코드네밈의 컴퓨터 비전을 위한 심층망 구조에 집중했다.

  6. 여기서 “deep” 은 2가지 다른 의미로 사용했다. 첫번째, Inception module 형태로 네트워크 에 사용한다.

2. 관련 연구

  1. LeNet-5 [10] 이후 CNN 은 적층한 컨벌루션 층의 표준 구조가 되었다. 추가적으로 상수 정규화와 max pooling 층 이후에 적층 컨벌루션 층을 갖을 수 있다.

  2. 마지막으로 하나 혹은 다수의 fully-connected layer을 갖는다.

  3. 이 기본 디자인의 변형을 이용해 MNIST, CIFAR 이미지 세트의 분류에서 가장 좋은 결과를 도출했다. [9],[21]

  4. 아주 큰 Imagenet 같은 데이터세트는 층의 수[12] 를 늘리거나 층의 크기[21],[14] 를 늘리는 한편 Dropout [7] 을 적용해 과적합을 방지한다.

  5. 최대 풀링 레이어로 인해 정확한 공간 정보가 손실될 수 있다는 우려에도 불구하고 같은 컨벌루션 네트워크 구조가 [9] 같이 사용되어 지역화 [9][14], 객체감지 [6],[14] [18] [5] 와 인간자세추정 [19]에 적용되었었다.

  6. 신경과학에서 영감을 받아, 영장류 시각 피질 모델을 Serre et al. [15]가 다양한 크기의 일련의 고정 Gabor 필터를 Inception 모델과 유사하게 여러 규모를 처리하기 위해 사용 했다.
    그러나 고정된 것과는 반대로 [15]의 2계층 심층 모델에서는 Inception 모델의 모든 필터가 학습됩니다. 게다가 인셉션 레이어가 여러 번 반복되어 GoogLeNet의 경우 22레이어 심층 모델이 됩니다.