[PYTHON] Holen Sie sich Aktienkursdaten für S & P 500-Bestandteile von Yahoo Finance und finden Sie stark korrelierte Paare.

Artikelübersicht

Phänomene wie "Wenn Lager A steigt, steigt Lager B" und "Wenn Lager A fällt, sinkt Lager B" werden als "Aufnehmen" und "Abnehmen" bezeichnet. BNF, ein genialer Händler, kaufte und verkaufte damit Aktien und verdiente viel Geld. Verdienen Sie viel Geld, indem Sie sich selbst nachahmen! Ich dachte, aber ich konnte keinen Weg finden, ein Paar zu finden, mit dem ich arbeiten konnte. Also habe ich es in Python implementiert, also werde ich den Code und seine Beschreibung veröffentlichen.

Code

Ich habe es auf Github. Wie du willst https://github.com/toshiikuoo/puclic/blob/master/%E6%A0%AA%E4%BE%A1%E7%9B%B8%E9%96%A2.ipynb

Bewegung

Der Betriebsablauf ist wie folgt

Informationen zur Bestandsliste erhalten Sie auf der Wikipedia S & P500-Seite. ↓ Erwerben Sie den Aktienkurs der erworbenen Aktienliste von Yahoo Finance ↓ Berechnen Sie die Korrelation der Aktienkurse für alle Aktienkombinationen. * Korrelation: Eine Quantifizierung der Ähnlichkeit der beiden Daten ↓ Sortieren Sie Paare in absteigender Reihenfolge der Korrelation

Codebeschreibung

Ich werde es erklären, während ich den obigen Code extrahiere.


#Erforderlicher Bibliotheksimport
!pip install lxml html5lib beautifulsoup4

import pandas as pd
from pandas import Series,DataFrame
from pandas_datareader import DataReader

import numpy as np

from datetime import datetime

from scipy.stats.stats import pearsonr
import itertools

# Install yfinance package.

!pip install yfinance
 
# Import yfinance
import yfinance as yf  

# S&P Erstellen Sie eine Liste aller Bestände
url="https://en.wikipedia.org/wiki/List_of_S%26P_500_companies"
sp500_list=pd.read_html(url)[0].Symbol.values.tolist()
len(sp500_list)
#Speichern Sie den Schlusskurs der SP500-Aktie in einem DataFrame
close_sp500_list=yf.download(sp500_list_yahoo,'2019-10-04','2019-11-01')["Adj Close"]
#Berechnen Sie die Korrelation mit Paaren für jede Spalte

#Erstellen eines Wörterbuchtyps zur Eingabe der berechneten Korrelation
correlations={}

#Korrelation berechnen
for cola,colb in itertools.combinations(sp500_list_yahoo,2):
  nas=np.logical_or(np.isnan(close_sp500_list.loc[:,cola]),np.isnan(close_sp500_list.loc[:,colb]))
  try:
    correlations[cola + '__'+ colb]=pearsonr(close_sp500_list.loc[:,cola][~nas],close_sp500_list.loc[:,colb][~nas])
  except ValueError:
    pass    

#Ausgabeergebnis"correlations"Ist ein Listenformat, konvertieren Sie es in einen DataFrame
result=DataFrame.from_dict(correlations,orient='index')
result.columns=['PCC','p-value']
print(result.sort_values('PCC'))

Ergebnis

Die endgültige Ausgabe ist unten. Die Korrelation jedes Aktienpaares wird sortiert und ausgegeben.

           PCC       p-value
BKR__SPGI   -0.968878  1.437804e-03
BIIB__HAS   -0.962712  8.038530e-13
BKR__PGR    -0.959178  2.465597e-03
PGR__WCG    -0.941347  6.818268e-11
CI__PGR     -0.935051  1.840799e-10
...               ...           ...
CNC__WCG     0.996087  1.493074e-22
BKR__PRGO    0.997290  1.101006e-05
CBS__VIAB    0.998546  7.579099e-27
BBT__STI     0.998835  8.266321e-28
GOOGL__GOOG  0.999502  1.701271e-31

[127260 rows x 2 columns]

Zukünftige Handlung

Ich möchte stark korrelierte Aktien anhand der Output-Ergebnisse gruppieren. (Bitte zögern Sie nicht, mich bei Fragen oder Verbesserungen zu kontaktieren. Dies ist mein erster Beitrag, daher finde ich das seltsam. Github ist schwierig ...)

Recommended Posts

Holen Sie sich Aktienkursdaten für S & P 500-Bestandteile von Yahoo Finance und finden Sie stark korrelierte Paare.
Holen Sie sich japanische Aktieninformationen von Yahoo Finance mit Pandas