Comment télécharger automatiquement l’historique de versement de dividende d’une compagnie grâce à Python!

Ad Blocker Detecté

Ce site web est rendu possible grâce à la publicité. Veuillez considérer de désactiver votre "adblocker" afin de nous encourager à maintenir ce site gratuit.

Aujourd’hui, je vais partager avec vous un petit code que j’ai écrit très rapidement (soyez donc indulgent, je ne suis pas un codeur professionnel…). Ce code permet de télécharger automatiquement l’historique de dividende de toutes les cies de la liste de David Fish, mais aussi de valider si le dividende a été augmenté depuis la dernière mise à jour faite par le logiciel.

Je prévois lancer ce code tous les mois pour obtenir la liste de tous les titres qui ont fait croître leur dividende au cours du mois.

Programmer est un de mes hobbys préférés

Comme vous le savez, je suis un passionnée de l’investissement par croissance du dividende. Et, j’adore aussi programmer pour le plaisir.

Récemment, j’ai remis mes connaissances en programmation à jour en apprenant à coder en Python. Et depuis, mon cerveau spin à 100 miles à l’heure!!

Savoir coder est définitivement un super pouvoir!

À peu près tout ce qui est répétitif, qui prend plus de 90 secondes et qu’on fait devant un ordinateur peu théoriquement être automatisé et devrait l’être. Et, des tâches répétitives, j’en fais des tas!

Il y a longtemps que je dis que le temps est notre plus précieuse ressource et qu’on ne devrait l’échanger à bas prix (emploi salarié à temps plein) qu’en dernier recours.

Depuis que j’ai compris cela et surtout depuis que j’ai compris comment me libérer de la rat race, je n’ai de cesse de tenter d’automatiser mes revenus. Car, une fois mes revenus automatisés, je ferai un gain majeur de temps libre.

Mais pourquoi s’arrêter là?

Grâce à la programmation on peut automatiser des tas de tâches répétitives.

Par exemple, lorsque je choisis un titre boursier, une grande part du travail est quantitatif. Je vérifie différents ratios, la croissance des revenus, des bénéfices par actions, la décroissance du nombre d’actions en circulation, les ratios d’endettement, la croissance du dividende, l’évolution du payout ratio etc… Je valide aussi son prix en fonction des bénéfices, du flux de trésorerie, de la valeur au livre et je le compare aux moyennes 5 ans.

Tout cela prend quand même un temps considérable.

Avec Python, je vais fort probablement et très bientôt, automatiser cette tâche en allant directement filtrer ces informations sur Morningstar. Mon screener de fondamental ne me redonnera que les titres les plus intéressants.

Il pourrait même me créer de beaux graphiques automatiquement qui pourraient me servir à agrémenter mes articles qui, franchement, manquent de couleur et de vie!

Je le sais… mais tout ce site web est tenu à jour à 99,9% sur mon téléphone cellulaire pendant que je suis coincé dans les transports en commun… alors je fais de mon mieux avec un écran de 3 pouces par deux…

Automatiser sa vie grâce au internet of things est à votre portée

Pour ceux qui aiment la robotique et l’automatisation, aujourd’hui on peut s’acheter un processeur Raspberry PI pour des peanuts et automatiser tout ce qui nous entoure (le lien mène vers un kit complet plus dispendieux mais pour 20-30$ on peut s’en sortir avec le matériel de base) et même relier tout ça entre eux avec le WIFI ou BluTooth et ce plutôt facilement.

Les possibilités sont là, à tout un chacun de les saisir!

Voici le code qui vous permet de savoir quel titre vient de hausser son dividende!

Aujourd’hui, je vais vous présenter un petit code tout simple qui permet de télécharger l’historique de dividende d’une compagnie automatiquement et de représenter le tout sur graphique. Le code permet aussi de vérifier s’il y a eu croissance du dividende entre le dernier dividende publié et le dividende publié précédemment. Le code ne test pas encore les dates. Il ne fait qu’une comparaison entre le dernier dividende versé et le dividende précédent.

Bien sûr, il pourrait être peaufiné et amélioré, mais il fait la job comme on dit!

Voici un exemple d’output du logiciel :

Avec quelques lignes de code supplémentaires, on pourrait faire diverses manipulations sur les données téléchargées telles que de calculer la croissance du dividende d’un titre depuis 3 ans, 5 ans, 10 ans par exemple etc…

Mais, pour l’instant, ce petit code simple vous permet d’automatiser le téléchargement des données de versement de dividende de toutes les cies qui font partie de la liste de David Fish qui versent un dividende en croissance depuis plus de 5 ans. Les fichiers obtenus sont des fichiers .csv que vous pouvez manipuler dans Excel ou OpenOffice. Ça peut servir de base toute simple à une foule de manipulations. Ça pourrait notamment servir à garder à jour le total de ses revenus de dividende anticipés notamment.

Pour exécuter ce code il vous faudra le fichier suivant qui contient la liste de tous les tickers USA des cies qui versent des dividendes en croissance. Il vous faudra le placer dans le même dossier que celui dans lequel vous sauvegarderez le code.

Il vous faudra aussi installer la dernière version de Python (python.org) et installer les différentes librairies qu’on importe au début du code grâce à « pip install » qu’on appelle à partir de la ligne de commande windows.

Si vous avez des questions, n’hésitez pas à les poser dans les commentaires.

Voici le fichier Python du code si vous préférez éviter de le retaper : DGSusaDividendDataDownloader.py

J’ai du l’enregistrer en fichier .txt car mon serveur ne permet pas de partager des codes Python pour des raisons de sécurité. Vous n’avez qu’à recopier le tout dans Python ou encore, de renommer le fichier avec l’extention ‘.py’.

Pour ma part, j’ai ajouté une fonction qui m’envoie un email pour me signaler les nouvelles hausses de dividendes et j’ai créé un batch file et une tâche Windows afin que le tout se fasse automatiquement.

Ainsi, à chaque mois, je pourrai partager avec vous la liste des titres qui ont haussé leur dividende durant le dernier mois.

 

[sourcecode language="python" wraplines="false" collapse="false"]
# Télécharge les données de dividendes des DGstocksUSA
# requiert une liste de tickers qu'on nommera dgsusa.csv

import pandas as pd
import pandas_datareader.data as web
import datetime as dt
import pickle
import os
import matplotlib.pyplot as plt
from matplotlib import style

def createtickerlist():
 tickers = []
 tickers = np.genfromtxt('dgsusa.csv',delimiter=',',dtype='str')

 with open('dgsusa.pickle', 'wb') as f:
 pickle.dump(tickers, f)

def get_dividend_data():
 try:
     with open("dgsusa.pickle","rb") as f:
     tickers = pickle.load(f)
 
     start = dt.datetime(1980,1,1)
     end = dt.datetime.today()

     if not os.path.exists('dividendData_dgsusa'):
     os.makedirs('dividendData_dgsusa')

     for ticker in tickers:
         try :
 
             if not os.path.exists('dividendData_dgsusa/{}.csv'.format(ticker)):
             df = web.DataReader(ticker, 'yahoo-dividends', start, end)
             df.to_csv('DividendData_dgsusa/{}.csv'.format(ticker))
             print(ticker, ' dividend data downloaded')
 
         except Exception as e:
             print ('*** ' + ticker + ' introuvable' + ' ***', str(e))
             continue


 except Exception as e:
     print ('erreur de téléchargement', str(e))

def show_dividend_chart():

 try :
     style.use('ggplot')
 
     ticker = input('Entrez un ticker DGsUSA?')
     df = pd.read_csv('dividendData_dgsusa/{}.csv'.format(ticker), parse_dates=True, index_col=0)
     df.plot(title=ticker, legend = False)
     plt.show()
 except Exception as e:
     print ('Erreur, Entrez un ticker valide: ' + str(e))
     show_dividend_chart()

def check_dividend_growth():

 try:
     with open("dgsusa.pickle","rb") as f:
     tickers = pickle.load(f) 

     for count,ticker in enumerate(tickers):
         try:
             df = pd.read_csv('dividendData_dgsusa/{}.csv'.format(ticker))
             df = pd.DataFrame(df, df.index)
 
             if df['Dividends'].iloc[-1] > df['Dividends'].iloc[-2]:
                 nouvDiv = df['Dividends'].iloc[-1]
                 ancienDiv = df['Dividends'].iloc[-2] 
                 divGrowth = (nouvDiv/ancienDiv*100-100)
                 print (ticker + ' a augmenté son dividende de ' + str(round(divGrowth,2)) + '%')
                 print ('Le dividende précédent était de : ' + str(ancienDiv))
                 print ('Le nouveau dividende est de : ' + str(nouvDiv))
                 print ('--------------------------------------------------------------')
         except Exception as e:
             continue
 except Exception as e:
     print (str(e))

createtickerlist()
get_dividend_data()
check_dividend_growth()
show_dividend_chart()
 [/sourcecode]

4 Comments

  1. Frédéric
  2. Frédéric

Leave a Reply