헤지펀드의 딥러닝 트레이딩 소개

게시 됨: 2022-03-11

지난 몇 년 동안 심층 신경망은 매우 인기를 얻었습니다. 이 떠오르는 컴퓨터 과학 분야는 생물학적 신경망 개념을 중심으로 만들어졌으며 딥 러닝은 오늘날 화두가 되었습니다.

딥 러닝 과학자와 엔지니어는 생물학적 신경계의 다양한 패턴을 수학적으로 설명하려고 합니다. 딥 러닝 시스템은 컴퓨터 비전, 음성 인식, 자연어 처리, 기계 번역 등 다양한 문제에 적용되었습니다. 일부 작업에서 딥 러닝이 인간 전문가를 능가했다는 것은 흥미롭고 흥미진진합니다. 오늘은 금융권 딥러닝에 대해 알아보도록 하겠습니다.

딥 러닝의 더 매력적인 응용 프로그램 중 하나는 헤지 펀드입니다. 헤지펀드는 투자자로부터 자금을 조달해 운용하는 투자펀드, 금융기관이다. 그들은 일반적으로 시계열 데이터로 작업하고 몇 가지 예측을 시도합니다. 시계열 분석에 적합한 특수한 유형의 딥 러닝 아키텍처가 있습니다: 순환 신경망(RNN), 더 구체적으로 말하면 특수한 유형의 순환 신경망인 장단기 기억(LSTM) 네트워크입니다.

LSTM은 시계열 데이터에서 가장 중요한 기능을 캡처하고 해당 종속성을 모델링할 수 있습니다. 헤지펀드가 그러한 시스템을 어떻게 사용할 수 있는지에 대한 예시적인 사례 연구로 주가 예측 모델이 제시됩니다. Python으로 작성된 PyTorch 프레임워크는 모델 학습, 실험 설계 및 결과 도출에 사용됩니다.

실제 예제로 넘어가기 전에 몇 가지 딥 러닝 기초부터 시작하겠습니다.

  • 딥러닝을 추상적 개념으로 소개합니다.
  • RNN, 더 구체적으로 LSTM을 소개하고 시계열 데이터를 모델링하는 데 사용할 수 있는 방법을 소개합니다.
  • 딥 러닝에 적합한 금융 데이터를 독자들에게 익히십시오.
  • 실제 헤지 펀드가 딥 러닝을 사용하여 주가를 예측하는 방법을 보여줍니다.
  • 마지막으로 딥 러닝을 사용/활용하여 성과를 높이는 방법에 대해 신규 및 기존 헤지 펀드에 실행 가능한 권장 사항을 제공합니다.

딥러닝 트레이딩 사례 발표

금융 산업에서 가장 어렵고 흥미로운 작업 중 하나는 미래에 주가가 오를지 내릴지를 예측하는 것입니다. 오늘날 우리는 딥 러닝 알고리즘이 복잡한 작업을 해결하는 데 매우 뛰어나다는 것을 알고 있으므로 딥 러닝 시스템을 실험하여 미래 가격 예측 문제를 성공적으로 해결할 수 있는지 확인하는 것이 좋습니다.

개념적으로 인공 신경망은 오래전부터 존재했지만 하드웨어가 딥 러닝에서 빠른 실험을 할 수 있을 만큼 충분하지 않았습니다. Nvidia는 10년 전 Tesla 시리즈 제품의 범용 컴퓨팅을 위한 매우 빠른 GPU(그래픽 처리 장치)를 제공하기 시작하면서 딥 러닝 네트워크에 혁명을 일으켰습니다. 게임 및 전문 디자인 응용 프로그램에서 다각형을 음영 처리하는 대신 고도로 병렬화된 GPU는 다른 데이터도 계산할 수 있으며 많은 경우 CPU보다 훨씬 뛰어납니다.

금융에서 딥러닝을 활용하는 것에 대한 과학 논문은 거의 없지만 핀테크 기업의 딥러닝 전문가에 대한 수요는 강력합니다. 이 기사는 금융 데이터가 딥 러닝 시스템을 구성하는 데 사용되는 방법을 설명하여 금융 분야의 딥 러닝이 점점 인기를 얻고 있는 이유를 설명하는 데 도움이 될 것입니다. 특별한 유형의 순환 신경망인 LSTM 네트워크도 소개됩니다. 순환 신경망을 사용하여 금융 관련 작업을 해결하는 방법을 간략하게 설명합니다.

이 기사는 또한 실험을 통해 제시된 헤지펀드가 그러한 시스템을 어떻게 사용할 수 있는지에 대한 예시적인 사례 연구를 제공합니다. 우리는 또한 딥 러닝 시스템을 개선할 수 있는 방법과 헤지 펀드가 이러한 시스템을 구축하기 위해 인재를 고용하는 방법, 즉 딥 러닝 인재가 갖추어야 할 배경 지식을 고려할 것입니다.

헤지펀드를 차별화하는 요소

문제의 기술적 측면으로 진행하기 전에 헤지펀드를 독특하게 만드는 요소를 설명해야 합니다. 그렇다면 헤지펀드는 무엇일까요?

헤지 펀드는 투자자로부터 자금을 조달하여 장단기 투자 또는 다양한 금융 상품에 배치하는 금융 기관인 투자 펀드입니다. 일반적으로 합자회사 또는 유한 책임 회사로 구성됩니다. 헤지 펀드의 목표는 수익을 극대화하는 것입니다. 수익은 특정 기간 동안 헤지 펀드의 순자산에 대한 손익입니다. 일반적으로 더 많은 위험을 감수할수록 더 높은 수익과 손실을 입을 가능성이 더 커집니다.

헤지펀드는 좋은 수익률을 달성하기 위해 다양한 유형의 투자 전략에 의존하고 시장의 비효율성을 이용하여 돈을 벌려고 합니다. 일반 투자 펀드에서는 허용되지 않는 다양한 투자 전략으로 인해 헤지 펀드는 일반적으로 다른 펀드와 같이 국가의 감독을 받지 않는 펀드로 등록되지 않습니다. 그들은 투자 전략과 비즈니스 결과를 공개할 필요가 없으므로 상당히 위험할 수 있습니다. 일부 헤지 펀드는 시장 평균보다 더 많은 돈을 벌지만 일부는 손실을 봅니다. 그 중 일부는 영구적인 결과를 가져오는 반면 일부 헤지 펀드의 결과는 가변적입니다.

헤지 펀드에 투자함으로써 투자자는 펀드의 순자산을 증가시킵니다. 하지만 아무나 헤지펀드에 투자할 수 있는 것은 아닙니다. 헤지펀드는 소수의 부유한 투자자를 대상으로 합니다. 일반적으로 헤지펀드에 참여하고자 하는 사람은 공인을 받아야 합니다. 즉, 금융 규제법과 관련하여 특별한 지위가 있어야 합니다. 누가 그 특별한 지위를 가질 수 있는지에 관해서는 국가마다 차이가 있습니다. 일반적으로 투자자의 순자산은 매우 높아야 합니다. 개인뿐 아니라 은행과 대기업도 헤지펀드에서 운용할 수 있습니다. 해당 인증은 상당한 투자 지식을 가진 개인만 참여할 수 있도록 설계되어 소규모 및 경험이 없는 투자자를 위험으로부터 보호합니다.

이 기사는 미국이 세계에서 가장 발전된 금융 시장을 가지고 있기 때문에 미국 규제 프레임워크를 고려합니다. 따라서 미국에서 "공인 투자자"라는 용어는 미국 증권 거래 위원회(SEC) 규정 D의 규칙 501에 정의되어 있습니다.

이 규정에 따라 공인 투자자는 다음과 같을 수 있습니다.

  • 은행
  • 민간 사업 개발 회사
  • 조직
  • 제안 또는 판매되는 증권 발행인의 이사, 집행임원 및 무한책임사원
  • 개인 순자산 또는 배우자와의 공동 순자산이 $1,000,000를 초과하는 자연인
  • 가장 최근 2년 동안 개인 소득이 $200,000를 초과하거나 해당 연도에 배우자와의 공동 소득이 $300,000를 초과하고 현재 연도에 동일한 소득 수준에 도달할 것으로 합리적인 기대가 있는 자연인
  • 총 자산이 $5,000,000를 초과하는 신탁
  • 모든 지분 소유자가 공인 투자자인 법인

헤지펀드 매니저는 헤지펀드를 운용한다. 헤지 펀드 매니저는 성공하기 위해 경쟁 우위, 즉 경쟁자보다 우위를 확보하고 더 큰 가치를 창출할 수 있는 능력을 창출하는 방법을 찾아야 합니다. 개인이 펀드 관리에 탁월하면 매우 수익성이 높을 수 있으므로 매우 매력적인 직업 선택이 될 수 있습니다.

반면에 헤지펀드 운용사의 결정이 잘못된 것으로 판명되면 보수를 받지 못하고 부정적인 평판을 얻게 된다. 최고의 헤지 펀드 매니저는 모든 산업 분야에서 최고의 급여를 받는 직업 중 하나입니다. 헤지 펀드 매니저는 관리 수수료 외에 투자자에게 얻은 수익의 일정 비율을 받습니다. 이러한 보상 방식은 헤지 펀드 매니저가 더 큰 수익을 얻기 위해 더 공격적으로 투자하게 하는 반면, 이는 투자자의 위험을 증가시킵니다.

헤지펀드의 간략한 역사

최초의 헤지 펀드는 전직 작가이자 사회학자인 Alfred Winslow Jones가 설립한 1949년에 나타났습니다. 1948년에 Fortune의 현재 투자 동향에 대한 기사를 작성하던 중이었습니다.

그는 돈을 관리하려고 노력했고 매우 성공적이었습니다. 그는 현재 롱/숏 에퀴티로 널리 알려진 투자 혁신을 통해 자금을 조달했습니다. 이 전략은 여전히 ​​헤지펀드 사이에서 매우 인기가 있습니다. 주식은 매수(매수: 매수)하거나 매도(매도: 매도)할 수 있습니다.

주가가 낮고 주가가 오를 것으로 예상되는 경우 고점에 도달하는 즉시 주식을 매수(롱)하고 매도(공매)하는 것이 논리적이며, 알프레드 윈슬로 존스(Alfred Winslow Jones)가 만든 혁신의 핵심은 바로 가치가 상승할 것으로 예상되는 주식에서 롱 포지션을 취하고 하락할 것으로 예상되는 주식에서 숏 포지션을 취하는 것입니다.

재무 데이터 및 데이터 세트

재무 데이터는 시계열 데이터에 속합니다. 시계열은 시간에 따라 인덱싱된 일련의 데이터 포인트입니다. 일반적으로 시계열은 동일한 간격의 연속적인 시점에서 취한 시퀀스입니다. 즉, 이산 시간 데이터 시퀀스입니다. 시계열의 예로는 조수 높이, 흑점 수, 다우존스 산업 평균의 일일 종가 등이 있습니다.

이 컨텍스트의 기록 데이터는 과거의 시계열 데이터입니다. 미래의 가격을 추측하는데 있어 가장 중요하고 가장 가치 있는 부분 중 하나입니다. 온라인에 공개적으로 사용 가능한 데이터 세트가 있지만 일반적으로 해당 데이터에는 많은 기능이 포함되어 있지 않습니다. 일반적으로 1일 간격 데이터, 1시간 간격 데이터 또는 1분 간격 데이터입니다.

더 풍부한 기능과 더 짧은 시간 간격의 데이터 세트는 일반적으로 공개적으로 사용할 수 없으며 얻는 데 매우 비쌀 수 있습니다. 간격이 작다는 것은 고정된 기간에 더 많은 시계열 데이터를 의미합니다. 1년에는 365(또는 366)일이 있으므로 최대 365(또는 366)개의 데이터 포인트를 사용할 수 있습니다. 하루는 24시간이므로 1년에는 8,760(또는 8,784)개의 시간당 데이터 요소를 사용할 수 있고 매일 86,400분을 사용할 수 있으므로 1년에는 525,600(또는 527,040)분의 데이터 요소를 사용할 수 있습니다.

더 많은 데이터를 사용하면 더 많은 정보를 사용할 수 있으며 더 많은 정보를 사용하면 다음 기간에 일어날 일에 대해 더 나은 결론을 내릴 수 있습니다. 글로벌 금융 위기가 한창이던 2007년부터 2008년까지의 주가 데이터는 편향되어 있으며 오늘날 가격 예측에 적합하지 않을 수 있습니다. 시간 간격이 짧을수록 고정 간격에 많은 데이터 포인트가 있기 때문에 다음에 일어날 일을 더 쉽게 예측할 수 있습니다. 고정된 n 년 간격으로 모든 나노초에 대한 모든 데이터 요소가 있는 경우 다음 나노초에 어떤 일이 일어날지 예측하는 것이 매년 n 데이터 요소가 모두 있는 경우 내년 주식 시장에서 일어날 일보다 더 쉽습니다. 고정된 n 년 간격.

그러나 그렇다고 해서 일련의 빠른 단기 예측이 맞다고 가정할 때 장기 예측도 맞아야 한다는 의미는 아닙니다. 각 예측에는 오류가 발생하고 여러 예측을 연결하여 장기적 예측에는 결국 상당한 양의 오류가 포함되어 쓸모가 없게 됩니다. 다음은 Yahoo Finance에서 온라인으로 스크랩한 Google 주식에 대한 1일 간격 데이터의 예입니다.

알고리즘 거래를 위한 Google 주식의 금융 데이터 시계열

데이터 세트에는 날짜, 시가, 고가, 저가 및 종가와 같은 몇 개의 열만 있습니다. 각각 증권이 거래소 개설 시 처음 거래되는 가격이며 해당 증권이 주어진 거래일에 달성한 최고 가격입니다. , 주어진 거래일에 달성된 최저 가격 및 해당 증권이 거래되는 최종 가격.

일반적으로 이러한 데이터 세트에는 조정 마감 및 거래량이라는 두 개의 열이 더 있지만 여기서는 관련이 없습니다. 조정된 종가는 적용 가능한 분할 및 배당금 분배를 조정한 후 종가이고 거래량은 주어진 기간 동안 시장에서 거래된 주식의 수입니다.

일부 날짜가 누락된 것을 볼 수 있습니다. 증권 거래소가 작동하지 않는 날, 보통 주말과 공휴일입니다. 딥 러닝 알고리즘 시연을 위해 누락된 날짜는 이전에 사용 가능한 가격으로 보완됩니다. 예를 들어, 2010-01-16, 2010-01-17, 2010-01-18의 종가는 모두 288.126007이 됩니다. 왜냐하면 그것이 2010-01-15에 있었기 때문입니다. 데이터에 공백이 없도록 하여 혼동하지 않도록 하는 것이 알고리즘에서 중요합니다. 딥 러닝 알고리즘은 주말과 공휴일이 있을 때 여기에서 학습할 수 있습니다. 예를 들어, 5영업일이 지나면 마지막 영업일부터 고정 가격으로 이틀이 있어야 함을 학습합니다.

일정 기간 동안의 Google 주가 움직임의 시각적 표현

2010-01-04 이후 구글 주가 움직임 차트입니다. 그래프를 그리는 데 거래일만 사용됩니다.

딥 러닝이란 무엇입니까?

딥 러닝은 머신 러닝의 일부이며 학습 데이터 표현을 기반으로 합니다. 기계 학습은 기능이 프로그래밍되지 않았지만 데이터에서 학습된 알고리즘을 검사합니다. 본질적으로 인공 지능에 대한 접근 방식입니다.

딥 러닝은 컴퓨터 비전, 음성 인식, 자연어 처리, 기계 번역 등 다양한 분야에 적용되었으며, 이러한 작업 중 일부에서는 인간보다 뛰어난 성능을 달성했습니다.

심층 신경망은 딥 러닝의 중심에 있습니다. 심층 신경망의 가장 간단하고 기본적인 예는 피드포워드 신경망입니다. 아래는 간단한 피드포워드 신경망의 이미지입니다. 입력 및 출력 레이어와 은닉 레이어로 구성됩니다.

입력 및 출력 및 학습 레이어가 노드로 표시된 간단한 피드포워드 신경망 다이어그램

숨겨진 레이어는 입력 레이어와 출력 레이어 사이의 모든 레이어입니다. 하나 이상의 은닉층이 있는 경우 신경망이 딥다고 합니다. 각 층은 다양한 수의 뉴런으로 구성됩니다. 이 기본 피드포워드 신경망의 계층은 선형 계층이라고 합니다. 선형 계층의 뉴런은 1D(또는 데이터가 네트워크를 통해 일괄적으로 전송되는 경우 2D) 입력 값에 적절한 가중치를 곱하고 곱을 합산합니다. 최종 결과를 1차원 또는 2차원 출력으로 제공합니다.

활성화 함수는 일반적으로 피드포워드 네트워크에 적용되어 네트워크가 더 복잡한 비선형 문제를 모델링할 수 있도록 비선형성을 도입합니다. 피드포워드 네트워크에서 데이터는 루프백 없이 입력 계층에서 출력 계층으로 흐릅니다. 뉴런 간의 연결에 가중치가 부여됩니다. 신경망이 주어진 입력에 대해 올바른 출력을 반환하도록 가중치를 조정해야 합니다. 피드포워드 네트워크는 입력 공간에서 출력 공간으로 데이터를 매핑합니다. 은닉 레이어는 이전 레이어의 기능에서 중요하고 추상적인 기능을 추출합니다.

일반적인 딥 러닝 파이프라인은 머신 러닝 파이프라인과 동일하며 다음 단계로 구성됩니다.

  1. 데이터 수집. 데이터는 훈련 데이터, 검증 데이터 및 테스트 데이터의 세 부분으로 구분됩니다.
  2. 여러 "epoch"(각각 여러 반복으로 구성됨)에 걸쳐 훈련 데이터를 사용하여 DNN을 훈련하고 유효성 검사 데이터를 사용하여 각 epoch 후에 유효성 검사를 수행합니다.
  3. 일련의 훈련 세션 및 검증 후에 모델(고정 매개변수가 있는 신경망의 한 인스턴스)을 테스트합니다.

신경망을 훈련한다는 것은 실제로 확률적 경사하강법과 함께 역전파 알고리즘을 사용하여 손실 함수를 최소화하여 뉴런 쌍 간의 가중치를 조정하는 것을 의미합니다. 학습 과정을 통해 결정되는 가중치를 제외하고 딥 러닝 알고리즘은 일반적으로 하이퍼파라미터(학습되지 않지만 학습 전에 고정되는 매개변수)를 설정해야 합니다. 하이퍼파라미터는 레이어 수, 레이어의 뉴런 수, 레이어 유형, 뉴런 유형 및 가중치 초기화입니다.

하이퍼파라미터 설정에는 하드웨어 제한이 있습니다. 현재 단일 GPU에 1조 개의 뉴런을 설정하는 것은 물리적으로 불가능합니다. 철저한 하이퍼파라미터 탐색의 두 번째 문제는 조합 폭발입니다. 무한한 시간이 걸리기 때문에 가능한 모든 하이퍼파라미터 조합을 검색하는 것은 불가능합니다. 그 때문에 초매개변수는 무작위로 설정되거나 과학 논문에 설명된 일부 휴리스틱 및 잘 알려진 예를 사용하여 설정됩니다. 이 블로그 게시물의 뒷부분에 나와 있는 재무 데이터 분석에 사용되는 초매개변수 중 하나는 과학자와 엔지니어가 반복 뉴런을 사용하는 것입니다. 시계열 데이터와 잘 작동함을 입증했습니다. 일반적으로 주어진 문제에 대한 하이퍼파라미터가 좋은지 여부를 확인하는 가장 좋은 방법은 실험을 통해서입니다.

훈련의 요점은 신경망을 훈련 데이터에 맞추는 것입니다. 각 훈련 단계 후에 수행되는 모델 검증과 전체 훈련 절차 후에 수행되는 모델 테스트는 모두 모델이 잘 일반화될 수 있는지 확인하기 위해 수행됩니다. 일반화는 신경망이 보이지 않는 새로운 데이터에 대해 좋은 예측을 할 수 있음을 의미합니다.

모델 선택과 관련된 두 가지 중요한 용어가 있습니다. overfittingunderfitting 입니다. 신경망이 훈련된 데이터와 관련하여 너무 복잡한 경우(너무 많은 매개변수(너무 많은 계층 및/또는 계층에 너무 많은 뉴런)가 있는 경우) 신경망은 데이터를 과적합할 수 있습니다. 모든 데이터에 적합할 만큼 충분한 용량을 가지고 있기 때문에 훈련 데이터에 잘 적응할 수 있지만 검증 및 테스트 세트의 성능은 좋지 않습니다.

신경망이 훈련된 데이터에 대해 너무 단순하면 신경망이 데이터를 과소적합할 수 있습니다. 이 경우 신경망의 용량이 훈련 데이터에 적합하고 일반화하기에 충분하지 않기 때문에 훈련, 검증 및 테스트 세트에 대한 성능이 저하됩니다. 아래 이미지에서 해당 용어가 그래픽으로 설명되어 있습니다. 파란색 선은 신경망에서 모델링한 것을 나타냅니다. 첫 번째 이미지는 신경망 매개변수가 적어 훈련 데이터에 적합하고 일반화하기에 충분하지 않은 상황을 보여줍니다. 두 번째 이미지는 최적의 매개변수 수가 있고 신경망이 보이지 않는 데이터에 대해 잘 일반화할 수 있는 상황을 보여주고, 세 번째 이미지는 신경망의 매개변수 수가 너무 많아 신경망이 완벽하게 처리할 수 있는 상황을 보여줍니다. 훈련 세트의 모든 데이터에 적합하지만 검증 및 테스트 세트에서 성능이 좋지 않습니다.

과소적합, 최적 및 과적합 시나리오의 그래픽 표현

순환 신경망

신경망의 더 복잡한 버전은 순환 신경망입니다. 순환 신경망에서 데이터는 피드포워드 신경망과 달리 모든 방향으로 흐를 수 있습니다. 시계열 종속성을 잘 배울 수 있습니다. 일반적인 순환 신경망의 아키텍처는 아래 이미지와 같습니다.

일반 rnn 아키텍처의 그래픽 표현

아래 이미지에는 하나의 반복 뉴런이 표시됩니다. X_{t} , 시점 t 를 입력으로 사용하고 t 시점의 은닉 상태인 h_{t} 를 출력으로 반환합니다. 숨겨진 출력은 뉴런으로 다시 전파됩니다. 순환 뉴런은 오른쪽에서 같은 이미지에 표시된 대로 펼쳐질 수 있습니다. X_{t_0} 은 기간 t_{0} 의 한 지점이고, X_{t_1} 은 기간 t_{1} 이며, X_{t} 는 기간 t 입니다. t_{0} , t_{1} , ..., t_{n} 기간 동안 입력 X_{t_0} , X_{t_1} , …, X_{t_n} 을 사용하여 얻은 출력은 소위 숨겨진 출력입니다. h_{t_0} , h_{t_1} , ..., h_{t_n} , 각각.

반복 뉴런의 i/o 구조를 시각적으로 보여줍니다.

최고의 순환 신경망 아키텍처 중 하나는 LSTM 아키텍처입니다. LSTM은 아래와 같습니다.

lstm 아키텍처의 시각화

LSTM은 일반적인 순환 신경망과 일반적인 구조가 동일하지만 순환 뉴런은 구조가 좀 더 복잡합니다. 위의 이미지를 보면 하나의 LSTM 셀 내부에서 많은 연산이 수행되는 것을 볼 수 있습니다. LSTM 셀은 이 게시물의 맥락에서 블랙박스로 관찰될 수 있지만, 호기심이 더 많은 독자를 위해 이 훌륭한 블로그 게시물은 LSTM 내부의 계산 등을 설명합니다.

신경망에 대한 입력을 "특징 벡터"라고 합시다. 요소가 f_{0} , f_{1} , f_{2} ..., f_{n} 기능인 n 차원 벡터입니다.

 \vv{X} = [f_{0}, f_{1}, f_{2}, …, f_{n}]

이제 재무 관련 작업에 순환 신경망을 어떻게 적용할 수 있는지 설명하겠습니다. 순환 신경망에 대한 입력은 [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}] 입니다. n = 5 라고 합시다. 2010-01-04와 2010-01-08 사이의 연속 5일(위의 시가/고가/저가/종가 데이터가 있는 표 참조)에서 5개의 Google 종가 주가를 가져옵니다. 즉, [[311.35], [309.98], [302.16], [295.13], [299.06]] . 이 예에서 특징 벡터는 1차원입니다. 시간 시퀀스는 5개의 이러한 특징 벡터로 구성됩니다. 순환 신경망의 출력은 숨겨진 기능 [h_{t_0}, h_{t_1}, h_{t_2}, …, h_{t_n}] 입니다. 이러한 기능은 입력 기능보다 더 추상적인 수준에 있습니다 [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}] LSTM은 입력 기능의 중요한 부분을 학습하고 이를 숨겨진 기능 공간. 이러한 숨겨진 추상 기능은 다음 LSTM 셀에서 전파될 수 있습니다. 그러면 다음 세트의 숨겨진 추상 기능이 제공되며, 이는 다음 LSTM으로 다시 전파되는 식입니다. 연결된 LSTM 시퀀스 후 신경망의 최종 구성 요소는 마지막 LSTM의 숨겨진 기능을 1차원 공간의 한 지점으로 매핑하는 선형 계층(이전 섹션에서 설명한 단순 피드포워드 네트워크의 구성 부분)입니다. 그 지점은 네트워크의 최종 출력인 X_{t+1} 기간의 예측된 종가입니다. X_{t+1} 에 대한 이 예의 정답은 298.61 입니다.

참고: LSTM이 하나만 있을 수도 있습니다. LSTM의 수를 설정하는 것은 하이퍼파라미터이며 일반적으로 경험적으로 찾을 수 있지만 일부 경험적 방법을 사용할 수는 있습니다. 데이터가 그렇게 복잡하지 않다면 덜 복잡한 아키텍처를 사용하여 모델이 데이터를 과적합하지 않도록 합니다. 데이터가 복잡한 경우 모델이 데이터에 과소적합하지 않도록 복잡한 모델을 사용합니다.

훈련 단계에서 예측된 종가는 실측 가격과 비교되고 예측된 종가와 실측 가격 간의 차이는 역전파 알고리즘과 경사하강법 최적화 알고리즘(또는 그 형식 중 하나)을 사용하여 최소화됩니다. 블로그에서는 신경망의 가중치를 변경하여 소위 "Adam" 버전의 경사하강법 최적화 알고리즘을 사용합니다.

훈련 및 테스트 후, 미래에 사용자는 입력 데이터를 신경망에 제공하기만 하면 예상 가격을 반환할 것입니다.

여기서 언급할 또 하나의 사항은 일반적으로 테스트 단계의 교육에서 네트워크를 통해 데이터 배치가 전송되어 네트워크가 단 한 번의 패스로 여러 출력을 계산할 수 있다는 것입니다.

아래는 실험을 위해 이 블로그에서 사용된 아키텍처의 이미지입니다. 두 개의 적층 LSTM과 하나의 선형 레이어로 구성됩니다.

위에서 설명한 아키텍처의 시각적 표현

헤지펀드 알고리즘 실험

다음과 같이 간단한 알고리즘 거래 전략을 사용해 보십시오. 알고리즘이 다음 날 가격이 오를 것으로 예측하면 회사의 n (이 예에서는 n = 1 ) 주식을 매수(롱)하고, 그렇지 않으면 모든 주식을 매도합니다. 회사(짧은). 포트폴리오의 초기 가치(현금과 주식을 합한 가치)는 $100,000로 설정됩니다. 각각의 롱 또는 숏 액션은 회사의 n 주(이 예에서는 Google)를 사거나 회사의 모든 주식을 각각 판매합니다. 처음에 시스템은 주어진 회사의 0주를 소유합니다.

실제로 잘 작동하도록 모델을 조정하려면 더 많은 R&D 작업이 필요하기 때문에 이것은 실제 세계에서 사용하기 위한 것이 아닌 매우 기본적이고 간단한 예라는 것을 항상 기억하십시오. 실제 시나리오에서 고려해야 하는 몇 가지 사항은 여기에서 무시됩니다. 예를 들어 거래 수수료는 모델에 포함되지 않습니다. 시스템이 매일 정확히 같은 시간에 거래할 수 있다고 가정하고, 주말이나 공휴일에도 매일이 거래일이라고 가정합니다.

테스트를 위해 백 테스팅 방법이 사용됩니다. 백테스팅 방법은 과거 데이터를 사용하여 개발된 전략으로 정의된 규칙을 사용하여 과거에 발생했을 거래를 재구성합니다. 데이터 세트는 두 부분으로 나뉩니다. 첫 번째 부분은 훈련 세트(과거)이고 두 번째 부분은 테스트 세트(미래)입니다. 모델은 훈련 세트에서 훈련되고 훈련 후 데이터 세트의 두 번째 부분에서 미래를 시뮬레이션하여 훈련된 모델이 훈련되지 않은 미래에 어떻게 작동했는지 확인합니다.

거래 전략을 평가하는 지표는 샤프 비율(연간 버전, 1년의 모든 날이 거래일이고 연도가 365일이라고 가정: sqrt(365)*mean(returns)/std(returns)) 입니다. 수익률은 p_{t}/p_{t-1} - 1 로 정의되고 p_{t} 는 기간 t 의 가격입니다. 샤프비율은 수익률과 추가로 발생하는 위험의 비율을 나타내므로 샤프비율이 높을수록 좋다. 일반적으로 비율이 1보다 크면 투자자가 수용할 수 있고, 2는 매우 양호하고, 3은 우수합니다.

Yahoo Finance 데이터 세트의 Google 과거 가격 중 매일 종가만 기능으로 사용됩니다. 더 많은 기능이 도움이 될 것이지만 데이터 세트의 다른 기능(Open, High, Low)이 중요한지 테스트하는 것은 이 블로그의 범위를 벗어납니다. 표에 포함되지 않은 다른 기능도 도움이 될 수 있습니다. 예를 들어 특정 분의 뉴스 감정이나 특정 날짜의 중요한 사건이 있습니다. 그러나 신경망 입력에 유용한 데이터 표현을 만들고 기존 기능과 결합하는 것이 때로는 매우 어렵습니다. 예를 들어, 특징 벡터를 확장하고 각 주어진 기간 동안 뉴스 감정이나 트럼프의 트윗 감정을 나타내는 숫자( -1 매우 부정적, 0 중립, +1 매우 긍정적 등)를 넣는 것은 쉽지만 그렇지 않습니다. 특성 벡터에 특정 이벤트 기반 순간(수에즈 운하의 해적, 텍사스 정유소의 폭탄 1 을 넣는 것은 매우 쉽습니다. 이벤트가 발생했거나 그렇지 않으면 0 모든 가능한 순간에 대해 무한한 수의 요소가 발생합니다.

더 어려운 데이터의 경우 몇 가지 범주를 정의하고 매 순간에 해당 데이터가 속한 범주를 결정할 수 있습니다. 다른 회사의 주가 간의 상관 관계를 학습하는 시스템을 위해 다른 회사의 주식에서 기능을 추가할 수도 있습니다. 또한, 컴퓨터 비전에 특화된 신경망 유형인 컨볼루션 신경망이 있는데, 이는 반복 계층과 결합하고 시각적 기능이 일부 회사의 가격과 어떻게 관련되는지 확인하는 데 흥미로울 것입니다. 혼잡한 기차역의 카메라 피드를 기능으로 사용하고 해당 피드를 신경망에 첨부하고 신경망이 보는 것이 일부 회사의 주가와 상관 관계가 있는지 확인할 수 있습니다. 진부하고 터무니없는 예.

아래는 평균 훈련 손실이 시간이 지남에 따라 어떻게 감소하는지 보여주는 그래프입니다. 딥 러닝 알고리즘이 수렴할 수 있도록 데이터를 정규화해야 한다고 말하는 것이 중요합니다.

시간 경과에 따른 평균 손실을 보여주는 딥 러닝 거래 그래프

아래는 평균 테스트 손실이 시간이 지남에 따라 어떻게 감소하는지 보여주는 그래프입니다. 이는 신경망이 보이지 않는 데이터를 일반화할 수 있음을 의미합니다.

시간 경과에 따른 평균 테스트 손실을 보여주는 딥 러닝 거래 그래프

알고리즘은 욕심이 많습니다. 다음 날 가격이 오를 것으로 예측하면 알고리즘은 즉시 회사의 n=1 주를 매수하고(포트폴리오에 충분한 현금이 있는 경우), 그렇지 않으면 회사의 모든 주식을 매도합니다. ). 투자 기간은 고정되어 있으며 300일이 소요됩니다. 300일이 지나면 모든 주식이 매각됩니다. 약간의 훈련 후 보이지 않는 데이터에 대한 시뮬레이션은 아래에서 볼 수 있습니다. 포트폴리오 가치가 매일 롱/숏(또는 아무것도 하지 않음) 동작으로 시간이 지남에 따라 어떻게 증가하는지 보여줍니다.

보이지 않는 데이터에 대한 시뮬레이션을 보여주는 딥 러닝 금융 그래프

위 시뮬레이션의 샤프 비율은 1.48입니다. 300일 후의 최종 포트폴리오 가치는 $100,263.79입니다. 첫날에 주식을 매수하고 300일 후에 매도했다면 포트폴리오 가치는 $99,988.41입니다.

아래는 신경망이 제대로 훈련되지 않아 300일이라는 고정 기간이 지나면 돈을 잃는 상황입니다.

신경망 거래 결과

샤프 비율은 -0.94입니다. 300일 후의 최종 포트폴리오 가치는 $99,868.36입니다.

여기 한 가지 흥미로운 예가 있습니다. 위의 알고리즘은 욕심이 많으며 다음 날의 가격을 예측하고 해당 예측만을 기반으로 조치를 취합니다. 여러 예측을 연결하고 향후 몇 단계에서 가격을 예측하는 것이 가능합니다. 예를 들어, [X_ground_truth_{t0}, X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}] 의 첫 번째 입력과 [X_predicted_{t5}] 의 첫 번째 출력을 사용하여 다음 입력은 [X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}] 이고 출력은 [X_predicted_{t6}] 입니다. 다음 입력은 [X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}, X_predicted_{t6}] 이며, 결과적으로 [X_predicted_{t7}] 등이 됩니다. 여기서 문제는 아래 이미지와 같이 새로운 단계마다 증가하고 결국 매우 나쁜 장기적 결과로 끝나는 예측 오류를 도입한다는 것입니다. 초기 예측은 실제 감소 추세를 따르다가 정체되고 시간이 지남에 따라 점점 더 나빠집니다.

공유 가치의 실제와 대조되는 누적 예측을 보여주는 그래프

매우 간단한 딥 러닝 분석이 Google 주가에 대해 수행되었지만 데이터 양이 충분히 크고 품질이 좋다면 거의 모든 재무 데이터 세트를 통합할 수 있습니다. 데이터는 식별 가능해야 하며 문제를 잘 설명하고 나타내야 합니다.

마무리

광범위한 테스트에서 잘 작동하고 일반화된다면 이 시스템을 통해 헤지 펀드 관리자는 딥 러닝을 사용하고 알고리즘 거래 전략에 의존하여 회사 주식의 미래 가격에 대해 추측할 수 있습니다.

헤지 펀드 매니저는 시스템에 매일 자동으로 거래할 수 있는 금액을 제공할 수 있습니다. 그러나 자동화된 거래 알고리즘이 감독 없이 거래되도록 하는 것은 매우 나쁩니다. 헤지 펀드 매니저는 딥 러닝 기술을 가지고 있거나 시스템을 감독하고 시스템이 일반화하고 잘 거래할 수 있는 능력을 상실한 시기를 결정하는 데 필요한 기술을 갖춘 사람을 고용해야 합니다.

If the system lost the ability to generalize, then it would be necessary to retrain it from the beginning and test it again (maybe by introducing more discriminative features or new knowledge—using new data from the past that didn't exist when the model was first trained).

Sometimes, the data is simply not good enough for the deep learning system to be trained and generalize well and, in that case, an experienced deep learning engineer should be able to detect and rectify such a situation. To build a deep learning trading system, you need hedge funds data scientists, machine learning/deep learning experts (both scientists and engineers), R&D engineers familiar with machine learning/deep learning, etc. No matter which part of an application of machine learning they are familiar with, whether it's computer vision or speech recognition, seasoned professionals will be able to put their experience to good use in the financial sector. At its root, deep learning has the same basics regardless of application or industry, and it should be easy for someone experienced to switch from theme to theme.

The system we presented is very basic and, to be applied in the real world, more R&D should be done in order to increase the returns. Possible improvements of the system could be in developing better trading strategies. Collecting more data for training, which is usually very expensive, will help. A smaller time interval between the points is better. Improvements can also surface in using more features (eg, news sentiments or important happenings corresponding to each point in the dataset, despite being hard to code for a neural network) and extensive grid search for hyperparameters and RNN architecture discovery.

Also, more computing power (powerful GPUs are a must) is needed to make a lot of extensive experiments in parallel and to process a large amount of data, provided that a large amount of data is collected.

참조:

  • https://www.datacamp.com/community/tutorials/finance-python-trading
  • http://colah.github.io/posts/2015-08-Understanding-LSTMs/
  • https://en.wikipedia.org
  • https://www.investopedia.com/
  • https://finance.yahoo.com/
  • http://pytorch.org/

Author's Note: I would like to thank Ivan Capalija and Matej Paradzik for the constructive conversations and advice about deep learning in finance, which helped me in writing this blog.