알고리즘 트레이딩에서의 파이썬 - 페이지 23

 

RNN 시퀀스 데이터 균형 - Python, TensorFlow 및 Keras를 사용한 딥 러닝 p.10



RNN 시퀀스 데이터 균형 - Python, TensorFlow 및 Keras를 사용한 딥 러닝 p.10

여러분 안녕하세요. Python, TensorFlow 및 Keras 튜토리얼 비디오를 사용한 또 다른 딥 러닝에 오신 것을 환영합니다. 이 비디오에서 우리는 순환 신경망(RNN)을 사용하여 미래의 암호화폐 가격 움직임 예측기를 계속 구축할 것입니다."

튜토리얼 비디오는 딥 러닝 기술을 사용하여 암호화폐 가격 움직임에 대한 예측기를 구축하는 데 중점을 둡니다.

발표자는 순차적 데이터 구축 및 유효성 검사 데이터 분리를 포함하여 사전 처리 단계를 이미 수행했다고 언급합니다. 그들은 또한 데이터를 정규화했습니다.

프로세스의 다음 단계는 데이터의 균형을 맞추는 것입니다. 데이터 세트에 동일한 수의 구매 및 판매 인스턴스가 있는 것이 중요합니다. 불균형이 있으면 모델의 성능에 영향을 줄 수 있습니다. 발표자는 약간의 불균형이 있더라도 한 클래스를 다른 클래스보다 선호하는 모델을 피하기 위해 데이터의 균형을 맞추는 것이 더 낫다고 제안합니다.

데이터의 균형을 맞추기 위해 발표자는 구매 및 판매라는 두 가지 목록을 만듭니다. 순차 데이터를 반복하고 목표가 0(매도)인지 1(매수)인지 확인합니다. 판매인 경우 판매 목록에 시퀀스를 추가합니다. 구매인 경우 구매 목록에 추가합니다. 그런 다음 두 목록을 섞습니다.

다음으로 두 목록(매수 및 매도) 사이의 최소 길이를 찾습니다. 더 짧은 목록의 길이까지 요소만 포함하도록 구매 및 판매 목록을 업데이트합니다. 이렇게 하면 두 목록의 인스턴스 수가 동일해집니다.

그런 다음 발표자는 구매 및 판매 목록을 sequence_data 목록에 결합합니다. 데이터 순서를 추가로 무작위화하기 위해 데이터 순차 데이터 목록을 다시 섞습니다.

다음 단계는 sequence_data를 기능(X)과 레이블(Y)로 분할하는 것입니다. 빈 목록 x와 y를 만들어 기능과 레이블을 각각 저장합니다. 이들은 sequence_data를 반복하고 시퀀스를 x 목록에 추가하고 대상을 y 목록에 추가합니다.

마지막으로 전처리된 데이터로 x와 y의 배열을 반환합니다.

그런 다음 발표자는 교육 및 검증 데이터 세트의 크기, 구매 및 판매 인스턴스 간의 균형과 같은 데이터에 대한 일부 통계를 인쇄합니다.

다음 비디오에서는 사전 처리된 데이터를 사용하여 모델을 빌드하고 훈련할 계획입니다.
Balancing RNN sequence data - Deep Learning w/ Python, TensorFlow and Keras p.10
Balancing RNN sequence data - Deep Learning w/ Python, TensorFlow and Keras p.10
  • 2018.09.17
  • www.youtube.com
Welcome to the next part of our Deep Learning with Python, TensorFlow, and Keras tutorial series. In this tutorial, we're going to continue building our cryp...
 

암호화폐 예측 RNN 모델 - Python, TensorFlow 및 Keras를 통한 딥 러닝 p.11



암호화폐 예측 RNN 모델 - Python, TensorFlow 및 Keras를 통한 딥 러닝 p.11

여러분 안녕하세요. Python, TensorFlow 및 Keras를 사용한 또 다른 딥 러닝 튜토리얼에 오신 것을 환영합니다. 이 자습서에서는 이전 자습서에서 중단한 부분부터 계속합니다. 우리의 목표는 과거 가격, 거래량 및 기타 주요 암호화폐를 기반으로 특정 암호화폐의 미래 가격 움직임을 예측하는 것입니다. 순환 신경망(RNN)을 사용하여 이를 달성할 것입니다.

시작하려면 필요한 라이브러리를 가져와야 합니다. 나중에 사용하기 위해 시간 라이브러리를 가져올 것입니다. 다음으로 몇 가지 상수를 정의합니다. 첫 번째 상수는 모델을 훈련하려는 에포크의 수입니다. 처음에는 배치 크기를 64로 설정했지만 필요한 경우 나중에 조정할 수 있습니다. 마지막으로 F-문자열을 사용하여 모델의 이름을 정의합니다. 쉽게 비교하고 식별할 수 있도록 모델과 TensorBoard 로그에 고유한 이름을 지정하는 것이 중요합니다.

이제 필요한 TensorFlow 모듈을 가져옵니다. TensorFlow를 tf로 가져오고 필수 하위 모듈인 tf.keras.models, tf.keras.layers, tf.keras.optimizers, tf.keras.callbacks 및 tf.keras.backend를 가져옵니다. 또한 데이터 처리 및 시각화를 위해 numpy 및 matplotlib를 가져옵니다.

다음으로 모델 구축을 시작합니다. model = tf.keras.models.Sequential()을 사용하여 순차 모델을 만듭니다. 모델 내부에서 model.add() 함수를 사용하여 레이어를 추가합니다. 첫 번째 레이어는 128개의 노드가 있는 LSTM 레이어입니다. 출력을 다음 레이어로 전달하려고 하므로 return_sequences=True로 설정합니다. 입력 형태를 train_X.shape[1:]로 지정합니다. 여기서 train_X는 입력 데이터입니다. 또한 비율이 0.2인 드롭아웃 레이어와 배치 정규화 레이어를 추가합니다.

이 프로세스를 두 번 더 반복하여 각각 128개의 노드가 있는 LSTM 레이어를 두 개 더 추가합니다. Dense 레이어가 뒤따를 것이기 때문에 마지막 LSTM 레이어에 대해 return_sequences=True를 제거합니다. 또한 각 LSTM 레이어에 드롭아웃 및 배치 정규화 레이어를 추가합니다.

LSTM 레이어 뒤에 32개의 노드와 정류된 선형 활성화 함수가 있는 dense 레이어를 추가합니다. 속도가 0.2인 드롭아웃 레이어를 추가하고 마지막으로 두 개의 노드와 소프트맥스 활성화 함수가 있는 출력 레이어를 추가합니다.

이제 모델에 대한 옵티마이저를 지정합니다. 우리는 학습률이 0.001이고 감쇠율이 1e-6인 Adam 옵티마이저를 사용합니다. model.compile()을 사용하여 모델을 컴파일하고 손실 함수를 sparse categorical cross-entropy로 지정하고 메트릭을 정확도로 지정합니다.

다음으로 모델에 대한 콜백을 정의합니다. 로그 디렉토리가 'logs'로 설정된 TensorBoard 콜백을 생성합니다. 또한 훈련 중에 최상의 모델을 저장하기 위해 ModelCheckpoint 콜백을 생성합니다. 문자열 형식을 사용하여 체크포인트를 저장하기 위한 파일 경로를 지정합니다.

마지막으로 model.fit()을 사용하여 모델을 훈련합니다. 교육 데이터(train_X 및 train_Y), 배치 크기, 에포크 수 및 검증 데이터(validation_X 및 validation_Y)를 전달합니다. 이전에 정의한 콜백도 전달합니다.

훈련 후에는 나중에 사용할 수 있도록 model.save()를 사용하여 모델을 저장할 수 있습니다.

그게 다야! 우리는 암호화폐의 미래 가격 움직임을 예측하기 위한 순환 신경망 모델을 성공적으로 구축하고 훈련했습니다. 또한 TensorBoard를 사용하여 훈련 진행 상황을 시각화했습니다.

Cryptocurrency-predicting RNN Model - Deep Learning w/ Python, TensorFlow and Keras p.11
Cryptocurrency-predicting RNN Model - Deep Learning w/ Python, TensorFlow and Keras p.11
  • 2018.09.18
  • www.youtube.com
Welcome to the next tutorial covering deep learning with Python, Tensorflow, and Keras. We've been working on a cryptocurrency price movement prediction recu...
 

Python의 알고리즘 거래 전략


Python의 알고리즘 거래 전략

오늘 튜토리얼에서는 Python을 사용하여 알고리즘 주식 거래 전략을 구현할 것입니다. 바로 들어가 보겠습니다.

시작하기 전에 이 비디오는 투자 또는 재정적 조언을 위한 것이 아님을 강조하고 싶습니다. 저는 주식 전문가, 투자 전문가 또는 금융 전문가가 아닙니다. 이 비디오의 목적은 Python을 사용하여 알고리즘 거래 전략을 구현하는 방법을 보여주는 것입니다. 투자에 사용 여부는 전적으로 귀하의 결정과 책임입니다. 저는 프로그래밍 측면에만 집중할 것입니다.

시작하려면 주식 데이터를 가져오기 위한 "pandas-datareader"와 데이터 시각화를 위한 "matplotlib"의 두 라이브러리를 설치해야 합니다. 명령 프롬프트(CMD)를 열고 이러한 라이브러리를 설치합니다. 설치가 완료되면 코딩을 진행할 수 있습니다.

먼저 필요한 모듈을 가져옵니다. 날짜 및 시간을 처리하기 위한 "datetime", 그래프 플로팅을 위한 "matplotlib.pyplot", 주식 데이터를 검색하기 위한 "web"으로 "pandas_datareader"입니다.

다음으로 사용할 이동 평균(MA)을 정의합니다. 이동 평균은 30일 또는 100일과 같은 지정된 기간 동안의 평균 주가를 나타냅니다. 각각 30과 100으로 설정될 두 개의 변수 "ma1"과 "ma2"를 생성합니다. 이 값은 분석할 이동 평균의 길이를 결정합니다.

이제 분석을 위한 시간 프레임을 설정하겠습니다. 현재 날짜와 3년의 시간 델타를 사용하여 시작 날짜와 종료 날짜를 정의합니다. 이 시간 프레임은 주식 데이터를 가져오는 데 사용됩니다.

"datareader" 라이브러리를 사용하여 Yahoo Finance API에서 특정 회사(이 경우 Facebook)의 주식 데이터를 검색합니다. 관련 데이터를 가져오기 위해 시작 날짜와 종료 날짜를 전달합니다.

이동 평균을 계산하기 위해 데이터 DataFrame에 두 개의 새 열을 추가합니다. "롤링" 기능을 사용하여 "ma1" 및 "ma2" 기간 모두에 대한 이동 평균을 계산합니다. "조정 종가" 열은 주식 분할에 대해 조정된 종가를 나타냅니다. 이동 평균을 각 열에 저장합니다.

계속 진행하기 전에 데이터와 이동 평균을 시각화해 보겠습니다. 조정된 종가를 주가로 표시하고 이동 평균을 동일한 그래프에 표시합니다. 어두운 배경을 사용하도록 그래프 스타일을 설정하고 적절한 레이블과 색상을 지정하여 선을 구분합니다. 마지막으로 범례를 추가하여 표시된 선을 식별하고 그래프를 표시합니다.

이제 알고리즘 트레이딩 전략을 구현해 보겠습니다. 각각 구매 및 판매 신호를 저장할 두 개의 빈 목록인 "buy_signals" 및 "sell_signals"를 만듭니다. 또한 전략의 변경 사항을 추적하는 데 도움이 되는 "트리거" 변수를 도입합니다.

for 루프를 사용하여 데이터 DataFrame을 반복합니다. 루프 내에서 두 가지 조건을 확인합니다. 첫 번째 이동 평균("ma1")이 두 번째 이동 평균("ma2")보다 큰 경우와 트리거가 1이 아닌 경우입니다. 두 조건이 모두 충족되면 다음을 추가합니다. 구매 신호를 "buy_signals" 목록에 추가하고 "NaN"(숫자가 아님)을 "sell_signals" 목록에 추가합니다. 또한 트리거를 1로 업데이트합니다.

반대로 "ma1"이 "ma2"보다 작고 트리거가 -1이 아닌 경우 "sell_signals" 목록에 매도 신호를 추가하고 "buy_signals" 목록에 실제 주가를 추가합니다. 트리거를 -1로 업데이트합니다.

어떤 조건도 충족되지 않으면 일관된 길이를 유지하기 위해 두 목록에 "NaN" 값을 추가합니다.

마지막으로 데이터 DataFrame에 두 개의 열을 추가하여 구매 및 판매 신호를 저장합니다.

우리는 매도 신호도 분산시킬 것이므로 plt.scatter를 사용하여 또 다른 산점도를 추가할 것입니다. 이번에는 data.index의 매도 신호를 x 값으로 분산시키고 해당 매도 신호 가격을 y 값으로 분산시킵니다. 이 산점도를 매수 신호와 구별하기 위해 "매도 신호"로 표시합니다.

마지막으로 plt.legend를 사용하여 플롯에 범례를 추가하여 다른 요소에 대한 레이블을 표시합니다. 그런 다음 plt.show()를 호출하여 플롯을 표시합니다.

코드:

plt.plot(data.index, data[ 'Adj Close' ], label= 'Share Price' , color= 'lightgray' )
plt.plot(data.index, data[ 'sma_{}' .format(ma1)], label= 'SMA {}' .format(ma1), linestyle= '--' )
plt.plot(data.index, data[ 'sma_{}' .format(ma2)], label= 'SMA {}' .format(ma2), linestyle= '--' )
plt.scatter(data.index, data[ 'Buy Signal' ], label= 'Buy Signal' )
plt.scatter(data.index, data[ 'Sell Signal' ], label= 'Sell Signal' )
plt.legend(loc= 'upper left' )
plt.show()
이제 코드를 실행하면 주가, 이동 평균, 매수 및 매도 신호를 보여주는 도표가 표시되어야 합니다.

이것은 Python으로 구현된 단순한 알고리즘 거래 전략일 뿐이며 금융 또는 투자 조언으로 받아들여지기 위한 것이 아님을 기억하십시오. 투자 결정을 내리기 전에 철저한 조사를 하고 전문가와 상담하는 것이 중요합니다.

Algorithmic Trading Strategy in Python
Algorithmic Trading Strategy in Python
  • 2021.07.04
  • www.youtube.com
In this video we learn how to implement an algorithmic trading strategy in Python.DISCLAIMER: This is not investing advice. I am not a professional who is qu...
 

Python을 사용한 알고리즘 거래 소개 - 거래 알고리즘을 만들고 테스트하는 방법


Python을 사용한 알고리즘 거래 소개 - 거래 알고리즘을 만들고 테스트하는 방법

이 비디오에서는 알고리즘 트레이딩 전략 개발에 대해 살펴보겠습니다. 이 비디오의 내용은 순전히 교육 목적이며 투자 조언으로 간주되어서는 안 됩니다. 우리가 집중적으로 다룰 전략은 다양한 해석이 가능하지만 일반적으로 모멘텀 전략으로 알려져 있습니다. 일반적으로 이 전략에는 특정 방향으로 움직이는 유가 증권을 식별하는 것이 포함됩니다. 예를 들어, 우리는 50일 이동 평균 또는 우리가 조사한 다른 메트릭보다 높은 증권을 선별하는 것으로 시작할 수 있습니다.

이 접근 방식은 증권의 상향 및 하향 움직임 모두에서 이익을 얻을 수 있기 때문에 종종 추세 추종 전략이라고 합니다. 그러나 수익성이 있을 수 있는 잠재적인 거래 신호를 식별하기 위해 철저한 조사를 수행하는 것이 중요합니다. 이상적으로는 이러한 신호를 여러 증권에 적용할 수 있어야 보다 일반화할 수 있습니다.

시작하려면 필요한 라이브러리를 가져오고 관련 데이터를 다운로드합니다. 이 경우 Yahoo Finance API를 사용하여 Gold ETF(GLD)에 대한 데이터를 검색합니다. 데이터를 다운로드한 후 처음 몇 행을 검사하여 정확성을 확인합니다.

다음으로 데이터 프레임에 열을 추가합니다. 추가할 첫 번째 열은 시계열의 위치를 추적하는 데 도움이 되는 날짜 카운터입니다. 또한 날짜 바로 뒤에 날짜가 오도록 열을 재정렬합니다. 다른 증권이나 특정 분석에 유용할 수 있지만 "Adjusted Close" 및 "Volume"과 같은 불필요한 열을 삭제할 수 있습니다.

계속해서 빠른 이동 평균(9일)과 느린 이동 평균(21일)의 두 가지 이동 평균을 계산합니다. 이러한 이동 평균은 거래 진입 및 청산에 대한 신호 역할을 합니다. 빠른 이동 평균이 느린 이동 평균 위로 교차하면 긴 거래에 들어가고 아래로 교차하면 거래를 종료하거나 심지어 짧은 거래가 됩니다. 그러나 이 전략은 당일 종가 데이터에 액세스할 수 있다고 가정하므로 실시간 거래에서는 현실적이지 않습니다. 이 문제를 해결하기 위해 Pandas의 이동 방법을 사용하여 이동 평균을 하루 앞으로 이동합니다.

다음으로 이동 평균 신호를 기반으로 장단기 거래에 있어야 하는지 여부를 나타내는 "신호" 열을 추가합니다. 값 1은 긴 거래를 나타내고 -1은 짧은 거래를 나타냅니다. 이 열을 계산하기 위해 np.where 함수를 사용하여 빠른 이동 평균과 느린 이동 평균을 비교합니다.

이동 평균을 계산하려면 특정 수의 관찰이 필요하므로 데이터가 충분하지 않은 행을 삭제합니다. 이 단계는 이동 평균을 사용할 수 없는 초기 행을 제거합니다.

그런 다음 "반품" 열을 추가하여 종가를 기준으로 순간 수익률을 계산합니다. 또한 신호와 반환에 따라 달라지는 "시스템 반환" 열을 계산합니다. 이 열은 거래 시스템에 특정한 수익을 제공합니다.

데이터를 시각화하고 거래 신호를 이해하기 위해 종가, 빠른 이동 평균 및 느린 이동 평균의 선 그래프를 그립니다. 또한 거래 방향이 변경될 때를 나타내기 위해 녹색 상향 화살표로 진입점을 표시합니다.

또한 거래 시스템의 성과를 매수 후 보유 전략과 비교할 것입니다. 5년 동안 두 접근 방식의 누적 수익률을 도표로 표시합니다. 파란색 선은 매수 후 보유 전략을 나타내고 주황색 선은 우리 시스템을 나타냅니다. 그래프에서 우리는 시스템의 성능이 상대적으로 평탄한 상태를 유지하고 있음을 관찰할 수 있으며 이는 매수 후 보유 전략을 능가하지 않는다는 것을 나타냅니다.

결론적으로 이 비디오는 모멘텀 기반 접근 방식을 사용하여 알고리즘 거래 전략을 개발하는 교육적인 연습을 제공합니다.

  • 00:00:00 이 섹션에서 비디오 자습서는 Python을 사용하여 알고리즘 거래 전략을 개발하는 데 중점을 둡니다. 이 자습서는 교육 목적으로만 제공되며 추세 추종 전략이라고도 하는 특정 방향으로 움직이는 유가 증권을 식별하려는 모멘텀 전략을 살펴봅니다. 비디오는 단일 보안에 대한 잠재적인 거래 신호를 조사하고, Yahoo Finance API 및 pandas 데이터 리더를 사용하여 데이터를 다운로드하고, 데이터 프레임에 열을 추가하고, 신호를 식별하기 위해 두 개의 이동 평균(느림 및 빠름)을 사용하는 과정을 안내합니다. . 튜토리얼은 시청자가 거래 알고리즘을 생성하는 데 도움이 되는 코드 예제를 제공합니다.

  • 00:05:00 이 섹션에서 발표자는 알고리즘에 이동 평균을 추가하는 방법을 설명합니다. 종가를 기준으로 9일 이동 평균과 21일 이동 평균에 대한 열을 추가합니다. 그러나 이동 평균에는 알고리즘에 일종의 예측 정보가 있음을 암시하는 문제가 있습니다. 이 문제를 해결하기 위해 팬더의 이동 방법을 사용하여 이동 평균을 하루 앞으로 굴립니다. 그런 다음 긴 거래 또는 짧은 거래에 있어야 할 때 알고리즘에 알려주는 신호 열을 추가합니다. 마지막으로 시스템 수익률을 계산하고 이를 매수 후 보유 수익률과 비교하기 위해 수익률 열을 추가합니다.

  • 00:10:00 비디오의 이 섹션에서 발표자는 롱 포지션에 있을 때 매수 후 보유 전략을 모방하도록 시스템을 설정하는 방법, 방향 변경을 표시하기 위해 항목 열을 추가하는 방법 및 시스템을 시각화하는 방법을 설명합니다. 라인 플롯을 사용한 성능. 주황색 선은 시스템 수익률이고 파란색 선은 매수 후 보유입니다. 이 시스템은 매수 후 보유와 유사하게 매우 평평하게 수행되며, 이는 이 시스템이 작동하지 않음을 나타냅니다. 화자는 또한 오픈에 진입하는 것이 더 나은 수익을 가져오지 않는다고 언급합니다.

  • 00:15:00 이 섹션에서는 연사가 거래 알고리즘의 전체 수익을 평가하는 방법을 설명합니다. 마지막 날의 수익에서 1을 빼서 매수 후 보유의 수익과 알고리즘의 수익을 비교할 수 있습니다. 결과는 알고리즘의 경우 6%의 손실에 비해 매수 및 보유의 경우 약 36%입니다. 그런 다음 스피커는 알고리즘의 성능을 잘못 나타내는 묵시적인 미리 보기를 생성할 수 있으므로 이동 평균을 앞으로 롤링하고 데이터를 조작할 때 주의해야 한다고 조언합니다. 마지막으로 그는 시청자에게 다양한 이동 평균 길이를 탐색하여 매수 후 보유보다 우수한 알고리즘 거래 전략을 개발하도록 권장합니다.
Introduction to Algorithmic Trading Using Python - How to Create & Test Trading Algorithm
Introduction to Algorithmic Trading Using Python - How to Create & Test Trading Algorithm
  • 2021.04.12
  • www.youtube.com
#python #algorithmic #trading How to create a Trading Algorithm - Algorithmic Trading Using Pythonhttps://alphabench.com/data/python-algorithm-trading...
 

Alpha Vantage 무료 실시간 주식 API 및 Python을 사용하여 일일 최고치 및 최저치 시간을 추출하는 방법


Alpha Vantage 무료 실시간 주식 API 및 Python을 사용하여 일일 최고치 및 최저치 시간을 추출하는 방법

이 영상에서는 Jupyter Notebook을 사용하여 Alpha Vantage API를 탐색하고 1분 거래 데이터를 사용하여 주식의 고가 및 저가를 추출합니다. Alpha Vantage는 실시간 거래 데이터를 얻기 위해 사용할 수 있는 여러 API 중 하나이며 부분 유료화 모델에서 작동합니다. 시작하려면 무료 계정에 가입하고 Alpha Vantage 웹사이트에서 API 키를 받아야 합니다.

API 호출 프로세스를 간소화하는 "alpha_vantage"라는 Alpha Vantage 도우미 라이브러리를 사용할 것입니다. 라이브러리가 설치되어 있지 않은 경우 명령줄에서 "pip install alpha_vantage" 명령을 실행하여 라이브러리를 설치할 수 있습니다.

시작하려면 필요한 타사 라이브러리를 가져와서 환경을 설정합니다. 완료되면 API 키를 변수에 저장합니다. API 키를 비공개로 유지하려면 별도의 텍스트 파일에 저장하고 노트북에서 읽을 수 있습니다. 다음으로 API 키와 원하는 출력 형식을 지정하여 시계열 객체를 생성합니다. 이 경우 기본적으로 JSON 형식인 출력 데이터로 작업하는 더 쉬운 방법을 제공하는 pandas 라이브러리를 사용하도록 선택합니다.

거래 데이터를 검색하기 위해 "get_intraday" 기능을 사용하여 Alpha Vantage API를 호출합니다. 이 기능을 사용하면 주식의 기호와 원하는 간격(예: 1분, 5분 또는 1시간)을 지정할 수 있습니다. 또한 검색하려는 기록 데이터의 양을 결정하는 출력 크기를 설정할 수 있습니다. 이 비디오에서는 약 10일간의 데이터를 제공하는 "전체"로 설정했습니다.

데이터를 가져온 후에는 "meta" 특성에 액세스하여 데이터와 연결된 메타데이터를 검사할 수 있습니다. 메타 개체는 다운로드한 데이터에 대한 정보(예: 간격, 데이터 날짜 및 포함된 열)를 제공합니다. 그런 다음 열 이름과 날짜-시간 인덱스를 표시하는 "info" 메서드를 호출하여 데이터 자체를 검사할 수 있습니다.

데이터를 시각적으로 표현하기 위해 종가와 같은 열 중 하나를 그릴 수 있습니다. 그러나 Alpha Vantage에서 반환된 열 이름은 작업하기에 편리하지 않을 수 있으므로 보다 의미 있는 이름으로 이름을 바꿀 수 있습니다.

다음으로 왜곡이 발생할 수 있는 시간 외 거래를 제외한 정규 거래 시간에 해당하는 데이터를 추출한다. 데이터에 시간 기반 필터를 적용하여 "시장"이라는 새 변수를 만듭니다. Pandas는 시장의 시작 및 종료 시간을 지정할 수 있는 편리한 기능인 "between_time"을 제공합니다.

이제 최고점과 최저점의 날짜와 시간을 추출할 준비가 되었습니다. 우리는 이것을 두 가지 방법으로 합니다. 먼저 데이터를 거래일별로 그룹화하고 "ag" 방법을 사용하여 각각 낮은 열과 높은 열의 최소값과 최대값을 계산합니다. 이 접근 방식은 각 거래일의 실제 저가 및 고가를 제공합니다.

둘째, 우리는 다른 접근 방식을 취하고 낮음과 높음이 발생한 순간에 집중합니다. 우리는 "loc" 기능을 사용하여 각 거래일에 최저점과 최고점이 발생하는 특정 행을 찾습니다. 그런 다음 최소값과 최대값에 대한 인덱스(날짜 및 시간)를 각각 추출합니다. 이를 통해 저가 및 고가에 도달한 정확한 분을 식별할 수 있습니다.

결과를 검토하여 거래일 내내 최저점과 최고점의 타이밍과 같은 흥미로운 패턴을 관찰할 수 있습니다.

이 비디오는 Alpha Vantage API를 사용하여 분 단위 거래 데이터를 검색하고 분석을 위해 고점과 저점을 추출하는 방법에 대한 기본 개요를 제공합니다. 자신의 프로젝트에서 Alpha Vantage API를 탐색하고 활용하기 위한 출발점 역할을 합니다.

결론적으로 이 비디오 자습서는 Jupyter Notebook에서 Alpha Vantage API 및 Alpha Vantage 도우미 라이브러리를 사용하여 1분 거래 데이터를 사용하여 주식의 고가 및 저가를 추출하는 방법을 보여줍니다. 비디오에 설명된 단계를 따르면 실시간 거래 데이터를 검색하고, pandas를 사용하여 분석하고, 주어진 거래일 내 고점 및 저점 타이밍에 대한 통찰력을 얻을 수 있습니다.

Alpha Vantage API는 이 비디오에서 다룬 것 이상의 다양한 기능과 데이터 옵션을 제공한다는 점에 유의해야 합니다. 5분 또는 1시간 데이터와 같은 다양한 간격과 일별 또는 기록 데이터를 비롯한 다양한 유형의 데이터를 탐색할 수 있습니다. API는 기술 지표 및 기본 데이터와 같은 추가 기능도 제공합니다.

분석을 더욱 향상시키기 위해 추가 데이터 조작 및 시각화 기술을 통합할 수 있습니다. 예를 들어 추출된 고가 및 저가를 기반으로 추가 지표를 계산하거나, 통계 분석을 수행하거나, 대화형 시각화를 생성하여 보다 직관적인 방식으로 데이터를 표시할 수 있습니다.

사용 가능한 API 호출, 매개변수 및 옵션에 대한 자세한 내용은 Alpha Vantage 문서를 참조하십시오. 또한 무료 계정과 관련된 제한 또는 사용 제한을 포함하여 Alpha Vantage API의 이용 약관을 준수해야 합니다.

Alpha Vantage API를 활용하고 이를 Jupyter Notebook 및 pandas 라이브러리의 기능과 결합하면 풍부한 거래 데이터를 잠금 해제하고 다양한 전략과 통찰력을 탐색하여 투자 결정 및 양적 분석을 지원할 수 있습니다.

How to Use Alpha Vantage Free Real Time Stock API & Python to Extract Time of Daily Highs and Lows
How to Use Alpha Vantage Free Real Time Stock API & Python to Extract Time of Daily Highs and Lows
  • 2021.01.11
  • www.youtube.com
#alphavantage #pythonUsing the free API to download minute by minute trading data and extract daily highs and lowsTutorial demonstrates using downloaded d...
 

데이터 과학용 matplotlib Python을 사용한 산점도 소개


데이터 과학용 matplotlib Python을 사용한 산점도 소개

이것은 Matplotlib 소개 시리즈의 두 번째 비디오입니다. 이 비디오에서는 산점도에 중점을 둘 것입니다. 산점도는 두 변수 간의 관계의 강도와 특성을 결정하는 데 도움이 되는 시각적 보조 도구입니다. 테마 설정, 컬러 맵 추가, 버블 차트 생성 및 차원 추가를 포함하여 산점도 생성의 기본 사항을 다룹니다.

시작하려면 필요한 라이브러리를 가져와서 환경을 설정하겠습니다. NumPy, Matplotlib 및 Pandas 데이터 판독기를 가져올 것입니다. Pandas 데이터 리더를 사용하면 작업할 실제 데이터를 다운로드할 수 있습니다. 이 경우 Google, Amazon 및 금 ETF에 대한 3~4개월 분량의 데이터를 다운로드합니다.

데이터가 있으면 처음 몇 행을 살펴보고 데이터 세트에 익숙해질 수 있습니다. 데이터가 8월 1일에 시작되고 종가가 포함된 것을 볼 수 있습니다.

이제 Matplotlib의 산포 방법을 사용하여 기본 산점도를 만들어 보겠습니다. 데이터 세트에서 두 개의 열을 선택하고 플롯할 수 있습니다. 그러나 이 기본 산점도는 변수 간의 관계에 대한 많은 정보를 제공하지 않습니다.

추가 조사를 위해 각 증권의 순간 수익률을 계산할 수 있습니다. 이를 통해 가격 변화가 서로 어떻게 관련되어 있는지 더 잘 이해할 수 있습니다. 절대 가격을 제거하고 백분율 변경으로 줄입니다. 처음 몇 가지 관찰을 보면 Amazon과 Google이 1% 이상의 감소를 경험한 반면 금은 상대적으로 변하지 않은 상태로 모든 증권이 하락했음을 알 수 있습니다.

다음으로 숫자가 아닌 첫 번째 관찰을 제거하고 Google의 변경 사항이 Amazon의 변경 사항과 관련이 있는지 알아보기 위해 산점도를 그립니다. 이 산점도는 이전 것과 다른 이야기를 들려줍니다. Google이 올라갈수록 Amazon도 올라가는 일반적인 경향을 관찰할 수 있습니다. 이는 두 변수 사이에 강력한 양의 관계가 있음을 나타냅니다.

이제 기본 산점도가 있으므로 몇 가지 기능을 추가하여 개선할 수 있습니다. 먼저, 더 잘 보이도록 플롯의 크기를 변경해 보겠습니다. Matplotlib에서 매개변수 모듈을 가져와서 이를 수행할 수 있습니다.

또한 다양한 방향으로 포인트의 움직임을 보여주는 안내선을 추가하여 산점도에 시각적 매력을 더할 수 있습니다. X축과 Y축의 0을 통과하는 선을 그리면 점이 함께 이동하거나 멀어지거나 반대 방향으로 이동할 때 신속하게 식별할 수 있습니다.

안내선의 가시성을 향상시키기 위해 RGB 표기법을 사용하여 색상을 회색 음영으로 설정할 수 있습니다. 또한 다른 시각적 효과를 위해 선 스타일을 파선으로 설정할 수 있습니다.

산점도를 더욱 향상시키기 위해 색 구성표를 추가할 수 있습니다. 나타낼 세 번째 변수가 없지만 여전히 산점도에 색상 맵을 추가할 수 있습니다. Amazon에 대한 반품 색상을 포함하도록 산점도 코드를 수정하고 스펙트럼 색상 맵을 선택합니다. 이 컬러 맵은 수익 값에 따라 포인트에 서로 다른 색상을 지정합니다. 빨간색은 가장 음수 값을 나타내고 보라색은 가장 양수 값을 나타냅니다.

그러나 중간 범위의 일부 지점은 색상 그라데이션으로 인해 보기 어려울 수 있습니다. 이 문제를 해결하기 위해 점의 가장자리 색상을 검은색으로 변경하여 더 뚜렷하게 만들 수 있습니다.

색상 그라데이션에 대한 추가 정보를 제공하기 위해 색상 막대를 추가할 수 있습니다. 색상 막대는 반환을 기반으로 색상 매핑을 나타내는 범례를 그립니다.

또한 테마를 적용하여 플롯의 전체적인 모양을 개선할 수 있습니다. 시각적으로 매력적인 스타일을 제공하는 Matplotlib의 래퍼인 Seaborn을 테마로 사용할 수 있습니다. 이 테마는 플롯된 데이터를 손상시키지 않고 배경을 변경하고 눈금선을 추가합니다.

마지막으로 가이드 라인이 중앙에 오도록 플롯의 한계를 조정할 수 있습니다.

마지막으로 플롯의 한계를 조정하여 안내선을 중앙에 배치하고 분산형 플롯을 시각적으로 균형 있게 만들 수 있습니다. 가이드 라인이 플롯의 중심에서 교차하도록 하기 위해 수익의 최소값과 최대값에 대한 x축 및 y축 제한을 설정할 수 있습니다. 이 조정은 안내선과 관련된 점의 움직임을 보다 효과적으로 시각화하는 데 도움이 됩니다.

이제 이러한 개선 사항을 적용하여 산점도가 더 많은 정보를 제공하고 시각적으로 매력적입니다. 구글과 아마존의 수익률 관계, 그리고 컬러맵을 기반으로 한 수익률 분포를 명확하게 볼 수 있습니다. 안내선은 여러 방향의 점 이동을 해석하기 위한 시각적 참조를 제공합니다.

기본 산점도 외에도 Matplotlib를 사용하여 거품형 차트를 만들 수 있습니다. 거품형 차트는 세 번째 변수를 기반으로 표식의 크기를 변경하여 플롯에 세 번째 차원을 추가합니다. 우리의 경우 세 번째 변수로 각 보안의 볼륨을 사용할 수 있습니다.

버블 차트를 생성하기 위해 크기 매개변수를 지정하고 각 증권의 볼륨을 마커 크기로 전달하여 산점도 코드를 수정합니다. 이것은 각 증권의 볼륨에 비례하는 크기의 원을 생성하여 수익률, 볼륨 및 포인트 이동 간의 관계를 시각화할 수 있습니다.

산점도에 이 세 번째 차원을 추가하면 변수 간의 관계를 더 깊이 이해할 수 있습니다. 더 큰 원은 더 높은 거래량을 나타내고 포인트의 움직임은 수익 및 거래량 모두와 상관 관계가 있음을 알 수 있습니다.

결론적으로 산점도와 거품형 차트는 변수 간의 관계를 이해하는 데 도움이 되는 강력한 시각화 도구입니다. 이를 사용하여 데이터를 분석 및 해석하고, 패턴과 추세를 식별하고, 정보에 입각한 결정을 내릴 수 있습니다. Matplotlib를 사용하면 사용자 지정되고 시각적으로 매력적인 산점도를 만들고 색상 맵, 안내선 및 테마와 같은 다양한 기능으로 이를 향상시킬 수 있습니다.

Introduction to Scatter Plots with matplotlib Python for Data Science
Introduction to Scatter Plots with matplotlib Python for Data Science
  • 2019.11.18
  • www.youtube.com
#scatterplot #matplotlib #python‡‡‡Learn how to use matplotlib with examples of scatter plots Please SUBSCRIBE:https://www.youtube.com/subscription_cente...
 

Python을 사용한 알고리즘 거래 소개: 평균 되돌리기 거래 알고리즘 만들기


Python을 사용한 알고리즘 거래 소개: 평균 되돌리기 거래 알고리즘 만들기

이 비디오에서는 교육 목적으로만 평균 회귀 거래 알고리즘을 살펴봅니다. 이 비디오는 투자 조언을 제공하지 않는다는 점에 유의하는 것이 중요합니다. 알고리즘은 Jupyter Notebook을 사용하여 구현되며 노트북을 다운로드할 수 있는 링크는 비디오 설명에 제공됩니다. 이 비디오는 이전에 논의된 모멘텀 거래 전략의 동반자 역할을 하며 해당 비디오에 대한 링크도 제공됩니다.

평균 회귀 거래 전략은 증권이 평균값에서 너무 멀리 벗어날 때마다 다시 평균값으로 이동할 것이라고 가정합니다. 선형 회귀 또는 이동 평균 사용과 같이 이 전략에 접근하는 여러 가지 방법이 있습니다. "너무 멀다"의 결정과 사용된 측정은 다를 수 있습니다. 어떤 사람들은 절대 달러 가치를 사용하지만 이 비디오에서는 백분위수를 사용합니다. 또한 이동 평균은 평균값을 결정하는 데 사용됩니다.

시작하려면 데이터 조작을 위한 Pandas, 라이브 데이터를 다운로드하기 위한 Pandas DataReader(다른 서비스도 사용할 수 있음), 수치 연산을 위한 NumPy, 그래프 작성을 위한 Matplotlib, 플롯 스타일 지정을 위한 Seaborn 등 필요한 라이브러리를 가져옵니다. 필요한 라이브러리는 해당 코드 셀을 실행하여 가져옵니다.

다음으로 분석할 데이터를 얻습니다. 좋은 거래 알고리즘은 여러 증권에 대해 일반화할 수 있어야 하지만 이 비디오는 단일 증권인 금 ETF에 중점을 둡니다. Pandas DataReader는 금 ETF에 대한 약 5년 분량의 데이터를 다운로드하는 데 사용됩니다. 종가에만 관심이 있기 때문에 다운로드를 해당 열로 제한합니다. 데이터가 확보되면 처음 몇 행을 검사하여 적절한 검색을 보장합니다.

데이터를 얻은 후 데이터 프레임에 일부 열을 추가합니다. 추가된 첫 번째 열은 이동 평균용입니다. 쉽게 조작할 수 있는 이동 평균 기간을 정의하는 변수를 설정합니다. 전일 종가의 순간 수익률을 계산하여 새로운 컬럼에 저장합니다. "이동 평균"이라는 이름의 또 다른 열은 21일(또는 한 거래 월) 평균을 사용하여 종가를 기준으로 평균 값을 추적하기 위해 생성됩니다. 또한 종가를 이동 평균으로 나눈 값을 나타내는 "비율" 열이 추가되었습니다. 이 열은 가격이 평균에서 너무 멀리 떨어져 있는 경우를 확인하는 데 도움이 됩니다.

데이터 분포에 대한 통찰력을 얻기 위해 "비율" 열에 대한 설명 통계가 계산됩니다. 예상대로 가격은 일반적으로 평균값에 가깝습니다. 25번째 및 75번째 백분위수는 데이터의 하한 및 상한 경계를 정의하는 반면 최소값 및 최대값은 평균에서 극단적인 편차를 나타냅니다. 5번째, 10번째, 90번째 및 95번째 백분위수와 같은 추가 가격 포인트가 분석을 위해 선택되어 평균에서 상당한 편차를 결정합니다. numpy 백분위수 함수는 "골드 비율" 열을 기준으로 각 값을 계산하는 데 사용됩니다. 계산을 수행하기 전에 누락된 값이 삭제됩니다.

평균 주위의 비율 열의 움직임을 시각화하기 위해 플롯이 생성됩니다. 관련 없는 값은 삭제되고 비율 열은 범례로 표시됩니다. 선택한 백분위수(5, 50, 95)의 가격 할인을 나타내기 위해 수평선이 추가됩니다. 이 시각적 표현은 편차를 수정하는 경향을 나타내는 평균 주위의 비율 열의 주기적 움직임을 관찰하는 데 도움이 됩니다.

다음으로 특정 임계값을 정의하여 매도 또는 매수 시기를 결정합니다. 숏 포지션은 95번째 백분위수로 정의되고 롱 포지션은 5번째 백분위수로 정의됩니다. 위치가 긴지 짧은지 나타내는 새 열이 데이터 프레임에 추가됩니다. Numpy의 "where" 함수는 금 비율 열을 기반으로 값을 할당하는 데 사용됩니다. 비율이 숏 임계값보다 작으면 -1 값이 할당되어 숏 포지션을 나타내고, 비율이 롱 임계값보다 크면 롱 포지션을 나타내는 1 값이 할당됩니다. 마지막으로 위치를 시각화하기 위해 플롯이 생성됩니다. 플롯은 비율 열을 표시하고 다른 색상으로 긴 위치와 짧은 위치를 강조 표시합니다.

포지션을 파악한 후 다음 단계는 일일 수익률을 계산하는 것입니다. 이는 포지션 열에 일일 수익률 열을 곱하여 수행되며, 이는 보유한 포지션을 기준으로 매일 수익을 제공합니다. 일일 수익률을 저장하기 위해 "전략"이라는 새 열이 데이터 프레임에 추가됩니다.

전략의 성과를 평가하기 위해 누적 수익이 계산됩니다. 누적 수익률은 전략 수익률의 누적 곱에 1을 더한 다음 백분율 표시를 위해 100을 곱하여 얻습니다. 시간 경과에 따른 누적 수익을 시각화하기 위해 플롯이 생성됩니다.

다음으로 전략의 성과를 평가하기 위해 추가 성과 메트릭이 계산됩니다. 총수익률, 일일평균수익률, 일일수익률의 표준편차, 샤프비율, 최대손실률을 계산한다. 이러한 메트릭은 전략의 수익성, 위험 및 위험 조정 수익률에 대한 통찰력을 제공합니다. 쉽게 참조할 수 있도록 값이 인쇄됩니다.

마지막으로 평균 회귀 전략과 매수 후 보유 전략의 누적 수익률을 비교하기 위한 플롯이 생성됩니다. 매수 후 보유 전략은 거래 결정 없이 전체 기간 동안 자산을 보유한다고 가정합니다. 이 플롯을 통해 두 가지 전략을 시각적으로 비교할 수 있습니다.

요약하면 이 동영상은 Python과 Jupyter Notebook을 사용하여 평균 회귀 거래 전략을 구현하는 방법을 보여줍니다. 데이터 검색, 이동 평균 계산, 임계값 결정, 포지션 시각화, 일일 수익률 계산, 성과 지표 평가, 매수 후 보유 전략과의 비교를 다룹니다. 함께 제공되는 Jupyter Notebook은 전략을 다시 만들고 구현을 추가로 탐색하기 위한 단계별 가이드를 제공합니다. 이 비디오는 교육 목적으로만 제공되며 투자 조언을 제공하지 않습니다.

Introduction to Algorithmic Trading with Python: Create a Mean Reverting Trading Algorithm
Introduction to Algorithmic Trading with Python: Create a Mean Reverting Trading Algorithm
  • 2021.05.14
  • www.youtube.com
#python #stocktrading #algorithmHow to create a Trading Algorithm - Algorithmic Trading Using Pythonhttps://alphabench.com/data/python-algorithm-trading...
 

파이썬 팬더 || 주가에 대한 이동 평균 및 롤링 윈도우 통계


파이썬 팬더 || 주가에 대한 이동 평균 및 롤링 윈도우 통계

이 비디오 자습서에서는 이동 평균 및 롤링 표준 편차에 대한 계산을 자동화하는 pandas 롤링 방법을 사용하는 방법을 보여줍니다. 롤링 방법은 롤링 창 집계를 수행하기 위한 강력한 도구이며 pandas 버전 0.21을 사용하여 쉽게 구현할 수 있습니다. 이 튜토리얼에서 참고할 수 있도록 Jupyter Notebook에 대한 링크를 제공하겠습니다.

시작하려면 환경을 설정해야 합니다. pandas가 의존하기 때문에 numpy 라이브러리를 가져옵니다. numpy를 광범위하게 직접 사용하지는 않겠지만 pandas가 올바르게 작동하려면 numpy가 필요합니다. 또한 데이터를 가져오기 위해 pandas 데이터 리더를 가져오고 플로팅 목적으로 matplotlib를 가져옵니다. 매직 기능을 사용하여 플롯이 Jupyter Notebook 내에 표시되도록 합니다.

다음으로 분석을 위해 데이터를 수집합니다. 금 ETF(Exchange-Traded Fund)에 대한 데이터를 Yahoo Finance에서 다운로드하겠습니다. 원하는 기간을 지정하기 위해 시작 날짜를 약 1년 전의 대통령 선거일로 설정했습니다. 데이터가 올바르게 가져왔는지 확인하기 위해 데이터 세트의 처음 몇 줄을 표시합니다. 우리는 주로 이 데모의 종가에 관심이 있으므로 다른 열은 제거합니다. 또한 다운로드되는 데이터 프레임은 일련의 시리즈이며 필요한 특정 속성이 없기 때문에 데이터 프레임으로 캐스팅합니다.

이제 롤링 방법을 시연할 준비가 되었습니다. 9일 이동 평균을 나타내기 위해 "MA9"라는 데이터 프레임에 새 열을 추가하겠습니다. 롤링 방법을 사용하여 지정된 기간 또는 행 수의 평균을 계산합니다. 21일이라는 더 긴 기간 동안 이 과정을 반복합니다. 이 두 개의 새로운 열은 우리가 계산한 이동 평균을 나타냅니다. 데이터를 시각화하기 위해 종가, 9일 이동 평균, 21일 이동 평균을 표시합니다.

때로는 이동 평균을 지연시키는 것이 유용합니다. 롤링 방법을 사용할 때 "center=True" 매개변수를 추가하면 21일 기간 동안 이동 평균선을 10일 뒤로 이동할 수 있습니다. 이렇게 하면 해당 데이터와 정렬되는 지연된 선이 생성됩니다. 플롯된 그래프에서 이러한 변화를 관찰할 수 있습니다.

이동 평균을 계산할 때 현재 관찰이 평균에 포함된다는 점에 유의해야 합니다. 전통적인 예측 도구로 사용하려면 이동 평균을 앞으로 이동하는 것이 좋습니다. 이동 방법을 사용하고 양의 정수를 지정하면 이동 평균을 원하는 기간만큼 앞으로 이동할 수 있습니다. 이렇게 하면 현재 관찰이 평균에 포함되지 않습니다.

또한 롤링 방법은 지연 값을 설정하거나 음의 정수를 사용하여 이동 평균을 첫날로 이동하는 기능과 같은 다른 매개변수를 제공합니다.

또한 옵션 가격 책정에 자주 사용되는 역사적 변동성을 계산하는 방법을 보여줍니다. 이렇게 하려면 데이터 프레임에 다른 열을 추가해야 합니다. numpy를 사용하여 종가를 전일 종가로 나누어 대수 수익률을 계산합니다. 이러한 수익을 플로팅하면 0을 중심으로 잡음이 많은 그래프가 표시됩니다.

역사적 변동성을 얻기 위해 우리는 일반적으로 한 달에 21 거래일이 있기 때문에 21일 창의 롤링 표준 편차를 사용합니다. 이 계산에는 21번째 관찰이 포함되므로 변동성을 정확하게 반영하기 위해 결과를 하루 앞당깁니다. 이것은 우리가 미래의 지식을 가지고 있다는 암시를 피합니다. 변동성을 플로팅하면 데이터를 더 명확하게 표현할 수 있고 금 가격의 변동성이 높은 기간과 낮은 기간을 알 수 있습니다.

향후 영상에서는 pandas를 사용한 추가 가격 분석 기법을 다룰 것입니다. 이 튜토리얼이 이동 평균 및 롤링 표준 편차를 위해 pandas에서 롤링 방법을 사용하는 데 도움이 되는 소개를 제공했기를 바랍니다.

Python Pandas || Moving Averages and Rolling Window Statistics for Stock Prices
Python Pandas || Moving Averages and Rolling Window Statistics for Stock Prices
  • 2017.12.21
  • www.youtube.com
#pandas #python #rollingPlease SUBSCRIBE:https://www.youtube.com/subscription_center?add_user=mjmacartyTry my Hands-on Python for Finance course on Udemy...
 

Python, pandas, NumPy matplotlib 및 SciPy를 사용한 정량적 주가 분석


Python, pandas, NumPy matplotlib 및 SciPy를 사용한 정량적 주가 분석

이 비디오에서 연사는 주가 변동을 분석하기 위한 정량적 분석 방법을 소개합니다. 주요 목표는 주가 변동이 정규 분포를 따르는지 여부를 확인하고 일일 변동에 방향성 편향이 있는지 식별하며 가격 변동이 랜덤 워크로 설명될 수 있는지 평가하는 것입니다. 발표자는 Jupyter 노트북 사용을 언급하고 노트북을 다운로드할 수 있는 링크를 제공합니다.

발표자는 환경을 설정하고 NumPy, Pandas 및 Matplotlib와 같은 데이터 분석 라이브러리를 가져오는 것으로 시작합니다. 그들은 또한 Pandas Data Reader 라이브러리를 사용하여 Yahoo API에서 라이브 데이터를 다운로드한다고 언급합니다. 그런 다음 화자는 Amazon의 주식 데이터를 검색하여 시작 날짜와 종료 날짜를 지정합니다. 기본값은 지난 5년 간의 가격 데이터입니다.

데이터를 얻은 후 화자는 사용 가능한 정보를 확인하기 위해 처음 몇 행을 검사합니다. 고가, 저가, 시가, 종가, 거래량 및 조정 종가를 나타내는 열을 가리킵니다. 그들은 주로 종가에 관심이 있기 때문에 "종가" 또는 "조정된 종가" 열을 사용하는 옵션에 대해 논의합니다. 후자는 분할을 거친 주식에 유용합니다. 이 경우 Amazon의 마지막 분할이 1999년이었기 때문에 두 열 사이의 선택은 크게 중요하지 않습니다.

다음으로 화자는 종가 열을 별도의 변수로 추출하고 연속된 종가 차이의 로그를 사용하여 순간 수익률을 계산합니다. 첫 번째 날에 대한 수익을 계산할 수 없기 때문에 첫 번째 행에 NaN(숫자가 아님) 값이 포함되어 있다는 점에 유의하면서 결과 값을 표시합니다.

그런 다음 화자는 Matplotlib를 사용하여 데이터를 선 그래프로 플로팅하여 일일 가격 변동을 시각화합니다. 그들은 가격 변화가 상당히 변동하고 5년 기간 동안 예측할 수 없는 대규모 이벤트가 가끔 발생하는 0 근처에 모여 있음을 관찰합니다. 특정 시간 프레임을 분석하기 위해 그들은 밀도가 더 낮지만 동일한 전체 패턴을 유지하는 작년의 데이터 가치를 표시합니다.

가격 변동에 대한 기술 통계는 Pandas "설명" 기능을 사용하여 얻습니다. 화자는 개별적으로 또는 다른 도구를 사용하여 통계를 얻을 수 있는 가능성을 언급하지만 Pandas 방법이 목적에 충분하다고 생각합니다. 또한 SciPy 라이브러리를 소개하고 SciPy 통계의 "설명" 기능을 사용하여 기술 통계를 계산하는 또 다른 방법을 보여줍니다. 그들은 NumPy 및 SciPy에서 누락된 값을 처리하기 때문에 일부 값이 "NaN"으로 표시된다고 언급합니다.

숫자를 더 쉽게 이해할 수 있도록 화자는 값에 100을 곱하여 백분율로 변환합니다. 이 변경은 데이터를 변경하지 않고 출력의 가독성을 향상시킵니다.

계속해서 화자는 일일 가격 변동 분포를 정규 분포에서 추출한 샘플과 비교합니다. 그들은 Amazon 반품 데이터의 히스토그램을 작성하고 중앙 주변에서 상당한 활동을 보여주고 반품이 왼쪽과 오른쪽으로 퍼져 정규 분포에 비해 더 두꺼운 꼬리를 나타내는 것을 관찰합니다. 그런 다음 SciPy 통계 모듈을 사용하여 정규 분포에서 동일한 크기의 샘플을 생성하고 Amazon 반환 데이터와 함께 히스토그램으로 플로팅합니다. 정규 분포 표본은 Amazon 데이터보다 덜 쪼그리고 있고 더 균일하게 퍼져 있는 것처럼 보입니다.

다음으로 화자는 정상 변수와 아마존 반환 모두에 대해 통계 테스트, 특히 첨도 테스트를 수행합니다. 첨도 검정은 귀무 가설이 정규 분포를 가정하여 분포가 정규로 간주될 수 있는지 여부를 검사합니다. 검정 통계량과 p-값을 구하고 화자가 결과 해석을 설명합니다. 정규 변수의 경우 검정 통계량은 약간 부정적이며 귀무 가설에 반대되는 강력한 증거가 없음을 나타냅니다. 대조적으로 아마존 반품의 경우 테스트 통계가 훨씬 더 커서 귀무 가설을 기각하고 아마존의 가격 변동이 정규 분포로 설명될 수 없다는 결론을 내립니다.

차이를 더 시각화하기 위해 화자는 빈도 대신 비율과 분포에 얼마나 잘 맞는지를 표시하여 히스토그램을 수정합니다. 이를 위해 초기 히스토그램을 몇 가지 변경하겠습니다. 빈도를 표시하는 대신 비율을 표시하겠습니다. 이렇게 하면 히스토그램 위에 이론적 정규 곡선을 오버레이하고 얼마나 잘 맞는지 확인할 수 있습니다.

계속해서 정규 곡선으로 히스토그램을 플로팅합니다. scipy.stats의 norm 모듈을 사용하여 법선 곡선을 생성한 다음 히스토그램과 동일한 그래프에 플로팅합니다.

import matplotlib.pyplot as plt

# Plot histogram
plt.hist(amazon_return, bins= 50 , density=True, alpha= 0.5 , label= 'Amazon Returns' )

# Generate normal curve
x = np.linspace(amazon_return.min(), amazon_return.max(), 100 )
normal_curve = norm.pdf(x, mu, sigma)

# Plot normal curve
plt.plot(x, normal_curve, 'r-' , label= 'Normal Distribution' )

# Add labels and legend
plt.xlabel( 'Daily Price Change' )
plt.ylabel( 'Proportion' )
plt.title( 'Histogram of Amazon Returns with Normal Distribution' )
plt.legend()

# Show the plot
plt.show()
이제 줄거리를 살펴보겠습니다. 아마존 수익률의 히스토그램과 이론적 정규 분포 곡선의 오버레이가 있습니다. 이 시각적 비교를 통해 일일 가격 변동이 정규 분포와 얼마나 잘 일치하는지 평가할 수 있습니다.

플롯을 관찰하면 Amazon 수익률의 히스토그램이 정규 분포의 모양에서 크게 벗어나는 것을 볼 수 있습니다. 이 분포는 더 두꺼운 꼬리를 가지고 있으며 정규 분포에서 기대하는 것과 비교하여 극단적인 가격 변동이 더 많이 발생함을 나타냅니다. 이는 Amazon 반환 데이터에서 과도한 첨도를 나타내는 이전의 첨도 분석과 일치합니다.

결론적으로, 우리가 채택한 정량적 분석 방법을 기반으로 Amazon의 주가 변동은 정규 분포 현상으로 설명할 수 없음을 확인할 수 있습니다. 데이터는 왜도 및 초과 첨도와 같은 특성을 나타내며 정규 분포로부터의 편차를 나타냅니다. 일일 가격 변동은 더 크고 예측할 수 없는 움직임이 자주 발생하면서 0 근처에 더 많이 모여 있습니다. 이 정보는 Amazon 주가 행동의 특성을 이해하는 데 유용하며 투자 전략 또는 위험 관리 접근 방식을 개발하는 데 유용할 수 있습니다.

Quantitative Stock Price Analysis with Python, pandas, NumPy matplotlib & SciPy
Quantitative Stock Price Analysis with Python, pandas, NumPy matplotlib & SciPy
  • 2021.06.07
  • www.youtube.com
#pythonprogramming #Stock #DataAnalysishttps://alphabench.com/data/pandas-quantitative-analysis-tutorial.html✅ Please SUBSCRIBE:https://www.youtube...
 

Python, NumPy, pandas 및 Seaborn을 사용한 선형 회귀 모델 기법


Python, NumPy, pandas 및 Seaborn을 사용한 선형 회귀 모델 기법

이 비디오에서는 Python의 몇 가지 간단한 회귀 기술을 살펴봅니다. Python에서 회귀를 구현하는 데 사용할 수 있는 여러 도구가 있지만 특히 NumPy를 사용하는 몇 가지 도구에 중점을 둘 것입니다. 이 자습서는 완전하지 않으며 통계 테스트를 실행하지 않습니다. 간단히 선을 맞추고 출력을 시각화합니다.

GitHub의 비디오 설명에 제공된 링크에서 노트북을 다운로드하여 따라할 수 있습니다. 환경을 설정하고 필요한 라이브러리를 가져오는 것으로 시작하겠습니다. NumPy, pandas, Yahoo Finance API를 사용하여 라이브 데이터를 가져오고, matplotlib를 시각화하고, seaborn을 사용하여 플롯에 테마를 적용할 것입니다.

다음으로 데이터를 검색해야 합니다. Google과 S&P 500 ETF에 대한 데이터를 약 1년 전으로 가져옵니다. 이를 위해 pandas 데이터 리더와 Yahoo Finance API를 사용합니다. 데이터가 있으면 빠르게 살펴볼 수 있습니다. 우리는 분석을 위해 "종가" 가격에만 관심이 있으므로 이에 따라 데이터를 조정할 것입니다.

회귀를 수행하기 위해 Google과 S&P 500 ETF 모두에 대한 순간 수익률을 계산합니다. 유효하지 않은 값을 삭제하면 두 변수 간의 상관 관계를 계산할 준비가 된 것입니다. 우리는 그것들이 강한 상관관계가 있다는 것을 발견했지만, 이 분석에서 인과관계를 결정하려고 시도하지는 않을 것입니다. 대신 S&P 500을 독립 변수로 간주합니다.

시각화를 더 쉽게 하기 위해 데이터 포인트의 더 작은 하위 집합을 샘플링합니다. 이 경우 무작위로 60개의 수익을 샘플링하고 전체 데이터 세트와 유사한 상관관계를 관찰합니다. 그런 다음 x축에 S&P 500, y축에 Google이 있는 산점도를 그려 데이터 시각화를 진행합니다.

회귀로 이동하여 NumPy의 polyfit 함수를 사용하여 선형 모델을 피팅합니다. 다항식의 차수(단순 선형 회귀의 경우 1)와 함께 S&P 500을 독립 변수로, Google을 종속 변수로 사용하여 샘플 데이터를 전달합니다. 이는 베타 값으로 해석할 수 있는 최적선의 기울기와 y 절편을 제공합니다.

추세선을 그리기 위해 NumPy의 polyval 함수를 사용하여 회귀와 독립 변수를 전달합니다. 이 추세선을 산점도에 오버레이할 수 있습니다. 또한 회귀는 미래 가격을 예측하는 기술적 지표로 사용될 수 있습니다. 이 예에서는 S&P 500 종가를 시간에 따라 회귀합니다.

회귀 계수를 얻은 후 미래 시점에 대한 예측 값을 계산할 수 있습니다. 시간에 대한 실제 데이터를 플로팅하고 추세선을 추가하고 선형 모델에서 하나의 표준 편차를 더하고 빼서 채널을 만듭니다. 이 채널은 예측의 신뢰 구간을 시각적으로 나타냅니다.

마지막으로 회귀 모델을 사용하여 특정 시점에 대한 예측을 수행하는 방법을 보여줍니다. 회귀 계수가 있는 poly1d 개체를 생성하여 값(미래 시점을 나타냄)을 연결하고 예측 값을 얻을 수 있습니다. 또한 추세선과 신뢰 구간으로 산점도를 시각화하는 대안적인 방법을 제공하는 Seaborn의 regplot에 대해서도 간단히 언급합니다.

이 자습서를 따르면 Python에서 선형 회귀를 시작하고 분석 및 예측을 위한 다양한 기술을 탐색할 수 있습니다.

이제 Python에서 선형 회귀의 기본 사항을 다루었으므로 몇 가지 추가 기술과 개념을 살펴보겠습니다.

회귀 분석의 한 가지 중요한 측면은 모델의 적합도를 평가하는 것입니다. 즉, 선형 회귀선이 변수 간의 관계를 얼마나 잘 나타냅니까? 독립 변수로 설명할 수 있는 종속 변수의 분산 비율을 나타내는 R-제곱 값과 같이 적합도를 평가하는 데 사용할 수 있는 다양한 통계 측정이 있습니다.

R-제곱 값을 계산하기 위해 Python의 statsmodels 라이브러리를 사용할 수 있습니다. 필요한 모듈을 가져오고 선형 회귀 모델을 데이터에 맞춥니다. 그런 다음 모델의 rsquared 속성을 사용하여 R-제곱 값을 추출할 수 있습니다.

예를 들어 이를 보여드리겠습니다. 두 개의 변수 X와 Y가 있는 데이터 세트가 있고 X를 기반으로 Y를 예측하기 위해 선형 회귀 모델을 맞추려고 한다고 가정합니다. statsmodels 라이브러리의 sm.OLS(Ordinary Least Squares) 함수를 사용하여 회귀를 수행합니다. 분석.

먼저 필요한 모듈을 가져옵니다.

import statsmodels.api as sm
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
다음으로 데이터를 pandas DataFrame에 로드하고 X 및 Y 변수를 추출합니다.

data = pd.read_csv( 'data.csv' )
X = data[ 'X' ]
Y = data[ 'Y' ]
그런 다음 독립 변수 X에 상수 항을 추가합니다. 이것은 statsmodels 라이브러리가 회귀 모델에 절편 항을 포함하는 데 필요합니다.

X = sm.add_constant(X)
이제 선형 회귀 모델을 적합하고 R 제곱 값을 계산할 수 있습니다.

model = sm.OLS(Y, X).fit()
r_squared = model.rsquared
마지막으로 R-제곱 값을 인쇄하여 적합도를 평가할 수 있습니다.

print( "R-squared:" , r_squared)
R-제곱 값의 범위는 0에서 1까지이며 1은 완벽하게 일치함을 나타냅니다. 일반적으로 R-제곱 값이 높을수록 모델이 데이터에 더 적합함을 나타냅니다.

R-제곱 값 외에도 선형 회귀 가정의 위반을 나타낼 수 있는 패턴이나 추세를 확인하기 위해 잔차 플롯을 검사하는 것도 중요합니다. 잔차는 종속 변수의 관측값과 예측값 간의 차이입니다. 좋은 선형 회귀 모델은 0 주위에 무작위로 고르게 분포된 잔차를 가져야 합니다.

잔차를 시각화하기 위해 잔차에 대한 예측 값의 산점도를 그릴 수 있습니다. 플롯에 임의성에서 패턴 또는 체계적 편차가 표시되면 선형 회귀 모델이 데이터에 적합하지 않을 수 있음을 나타냅니다.

잔차 플롯을 생성하기 위해 Python에서 matplotlib 라이브러리를 사용할 수 있습니다.

predicted_values = model.predict(X)
residuals = Y - predicted_values

plt.scatter(predicted_values, residuals)
plt.axhline(y= 0 , color= 'r' , linestyle= '-' )
plt.xlabel( 'Predicted Values' )
plt.ylabel( 'Residuals' )
plt.title( 'Residual Plot' )
plt.show()
잔차에 대한 예측 값의 산점도는 명확한 구조나 추세가 없는 구름과 같은 패턴을 보여야 합니다. 곡선 모양 또는 스프레드 증가/감소와 같은 뚜렷한 패턴을 관찰하면 선형 회귀 가정이 유지되지 않을 수 있음을 나타냅니다.

결론적으로 선형 회귀는 변수 간의 관계를 모델링하는 데 강력하고 널리 사용되는 기술입니다. 회귀선을 데이터에 맞추면 예측을 수행하고 독립 변수를 기반으로 종속 변수에 대한 통찰력을 얻을 수 있습니다. R-제곱 값과 같은 측정값을 사용하여 적합도를 평가하고 회귀 모델의 유효성을 평가하기 위해 잔차 플롯을 확인하는 것이 중요합니다.

Linear Regression Model Techniques with Python, NumPy, pandas and Seaborn
Linear Regression Model Techniques with Python, NumPy, pandas and Seaborn
  • 2021.07.05
  • www.youtube.com
#Python #Regression #NumPyhttps://alphabench.com/data/python-linear-regression.html✅ Please SUBSCRIBE:https://www.youtube.com/subscription_center?add...