Analyse des données financières par pandas et leur visualisation (2)

Indice de retour et retour cumulé

Dans la continuité de Hier, nous continuerons d'analyser les données financières.

Lors de l'analyse d'un portefeuille d'actions, les rendements indiquent généralement une variation en pourcentage du prix des actifs. Trouvez la variation en pourcentage du cours de l'action à partir du cours de l'action d'Apple dans Yahoo! Finance.

Les dataframes pandas ont de puissantes fonctions de conversion de fréquence.

une fonction La description
resample Convertir les données en fréquence fixe
reindex Attribuer des données à un nouvel index

Voir la référence (http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.html) pour d'autres fonctions de trame de données.

[Cours de clôture ajusté](http://www.yahoo-help.jp/app/answers/detail/p/546/a_id/45316/~/%E8%AA%BF%E6%95%B4%E5%BE % 8C% E7% B5% 82% E5% 80% A4% E3% 81% A8% E3% 81% AF) (valeurs de clôture ajustées) est un fractionnement pour capturer des données en continu avant et après une division d'actions ou un dividende. Il est ajusté à la dernière valeur.

L'indice de rendement est un indice qui montre la performance lorsque le dividende de l'action est également pris en considération, et il s'agit de données de série chronologique avec une valeur qui représente l'unité d'investissement. L'indice de retour d'Apple est calculé par la méthode cumprod.

import pandas as pd
import pandas.io.data as web

#Cours de clôture ajusté acquis de l'action Apple depuis 2010
price = web.get_data_yahoo('AAPL', '2009-12-31')['Adj Close']
returns = price.pct_change()
ret_index = (1 + returns).cumprod() #Calcul de l'indice de rendement
ret_index[0] = 1 #1 car la première ligne est NaN.À 0
print ( ret_index )
# => 
# Date
# 2009-12-31    1.000000
# 2010-01-04    1.015602
# 2010-01-05    1.017330
# 2010-01-06    1.001136
# 2010-01-07    0.999309
# 2010-01-08    1.005974
# 2010-01-11    0.997087
# 2010-01-12    0.985731
# 2010-01-13    0.999654
# 2010-01-14    0.993828
# 2010-01-15    0.977239
# 2010-01-19    1.020490
# 2010-01-20    1.004789
# 2010-01-21    0.987410
# 2010-01-22    0.938432
# ...
# 2014-02-19    2.653155
# 2014-02-20    2.622445
# 2014-02-21    2.593315
# 2014-02-24    2.604671
# 2014-02-25    2.577565
# 2014-02-26    2.554310
# 2014-02-27    2.605263
# 2014-02-28    2.598203
# 2014-03-03    2.605708
# 2014-03-04    2.622889
# 2014-03-05    2.628419
# 2014-03-06    2.620470
# 2014-03-07    2.618939
# 2014-03-10    2.621309
# 2014-03-11    2.646835

#Calculer le rendement cumulé
m_returns = ret_index.resample('BM', how='last').pct_change()
print( m_returns['2014'] ) #Spectacle 2014
# =>
# Date
# 2014-01-31   -0.107696
# 2014-02-28    0.057514
# 2014-03-31    0.018718

#Le rendement cumulé peut également être calculé par rééchantillonnage lors de l'agrégation.
m_returns = (1 + returns).resample('M', how='prod', kind='period') - 1
print( m_returns['2014'] ) #Spectacle 2014(Même résultat)

Lorsque vous imprimez () les informations d'une trame de données volumineuse, elles sont automatiquement omises et le début et la fin sont affichés.

Calcul du rendement cumulé et visualisation du portefeuille d'actions de chaque entreprise

Tracons l'historique des cours du portefeuille d'actions dans les secteurs financier et informatique, en nous concentrant sur les trois années écoulées depuis 2010, en particulier après le tremblement de terre jusqu'au 11 mars de cette année.

def get_px(stock, start, end):
    return web.get_data_yahoo(stock, start, end)['Adj Close']

names = ['AAPL', 'GOOG', 'MSFT', 'DELL', 'GS', 'MS', 'BAC', 'C']
px = pd.DataFrame( {n: get_px(n, '1/1/2010', '3/11/2014') for n in names} )

px = px.asfreq('B').fillna(method='pad')
rets = px.pct_change()
result = ((1 + rets).cumprod() - 1)

plt.figure()
result.plot()
plt.show()
plt.savefig("image.png ")

image.png

À partir de là, vous pouvez calculer le rendement de votre portefeuille sur une période de temps et backtester votre stratégie avec diverses visualisations.

En traitant les données financières dans une trame de données facile à visualiser et dotée de nombreuses fonctions, nous avons constaté que l'analyse ad hoc pouvait être tentée sans recourir à un logiciel coûteux et payant.

référence

Introduction à l'analyse de données avec le traitement des données Python avec NumPy et pandas http://www.oreilly.co.jp/books/9784873116556/

Recommended Posts

Analyse des données financières par pandas et leur visualisation (2)
Analyse des données financières par pandas et leur visualisation (1)
Pratique de l'analyse de données par Python et pandas (Tokyo COVID-19 data edition)
Visualisation des données par préfecture
Comment visualiser les données par variable explicative et variable objective
Visualisation et analyse des informations de localisation des données Twitter Stava
Implémentez "Data Visualization Design # 3" avec pandas et matplotlib
Calcul des indicateurs techniques par TA-Lib et pandas
Analyse émotionnelle des données de tweet à grande échelle par NLTK
Visualisation des données avec les pandas
Vue d'ensemble et astuces de Seaborn avec visualisation de données statistiques
Histoire de l'analyse d'image du fichier PDF et de l'extraction de données
[Ingénierie de contrôle] Visualisation et analyse du contrôle PID et de la réponse par étapes
Analyse des données de mesure (2) -Hydrobacter et raccord, recommandation lmfit-
Vue d'ensemble du traitement du langage naturel et de son prétraitement des données
Mémo de visualisation par pandas, seaborn
Analyse de données à l'aide de pandas python
Jugement négatif / positif des phrases et visualisation des motifs par Transformer
Jugement négatif / positif des phrases par BERT et visualisation des motifs
Visualisation de la matrice créée par numpy
Début de l'analyse de l'encyclopédie Nico Nico ~ Appuyez sur les données fournies par JSON
Première analyse de données satellitaires par Tellus
Livres et sources recommandés de programmation d'analyse de données (Python ou R)
Une analyse simple des données de Bitcoin fournie par CoinMetrics en Python
Méthode de visualisation de données utilisant matplotlib (+ pandas) (5)
Acquisition automatique des données de niveau d'expression génique par python et R
Calcul scientifique / technique avec Python] Dessin et visualisation d'isoplans 3D et de leurs vues en coupe à l'aide de mayavi
Méthode de visualisation de données utilisant matplotlib (+ pandas) (3)
Impressions de toucher Dash, un outil de visualisation de données réalisé par python
10 sélections d'extraction de données par pandas.DataFrame.query
Animation des géodonnées par geopandas
Recommandation d'analyse des données à l'aide de MessagePack
Analyse des séries chronologiques 3 Prétraitement des données des séries chronologiques
Analyse de données à partir de python (visualisation de données 1)
Méthode de visualisation de données utilisant matplotlib (+ pandas) (4)
Analyse de données à partir de python (visualisation de données 2)
Agrégation et visualisation des nombres accumulés
Traitement des données 2 Analyse de divers formats de données
Représentez graphiquement le ratio de topcoder, Codeforces et TOEIC par note (Pandas + seaborn)
Prétraitement des fichiers de vidage Wikipedia et partage de grandes quantités de données avec MeCab
Visualisation des données de coordonnées de latitude / longitude (en supposant des données météorologiques) à l'aide de cartopy et matplotlib
[Didacticiel d'analyse Python dans la base de données avec SQL Server 2017] Étape 3: Exploration et visualisation des données
Résumé des distributions de probabilité qui apparaissent souvent dans les statistiques et l'analyse des données
Outil de visualisation Python pour le travail d'analyse de données
Un petit examen minutieux de Pandas 1.0 et Dask
Exemple d'analyse de squelette tridimensionnelle par Python
Modèle de régression utilisant scikit-learn et sa visualisation
Visualisation de corrélation entre la quantité de caractéristiques et la variable objective
Pandas du débutant, par le débutant, pour le débutant [Python]
Séparation de la conception et des données dans matplotlib
Recommandation d'Altair! Visualisation des données avec Python
Analyse d'image de microtomographie à rayons X par Python
Exemple de traitement efficace des données avec PANDAS
[Python] De l'analyse morphologique des données CSV à la sortie CSV et à l'affichage graphique [GiNZA]
Un beau dessin graphique avec Python -seaborn facilite l'analyse et la visualisation des données Partie 1
[Python] Comparaison de la théorie de l'analyse des composants principaux et de l'implémentation par Python (PCA, Kernel PCA, 2DPCA)
L'analyse d'image a été facile à l'aide des données et de l'API fournies par Microsoft COCO
Un beau dessin graphique avec Python -seaborn facilite l'analyse et la visualisation des données Partie 2
Prédire les travaux de courte durée de Weekly Shonen Jump par apprentissage automatique (Partie 1: Analyse des données)