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]
Frédéric
Intéressant le code. C’est un projet qui m’intéresse aussi beaucoup mais je regardais surtout du côté des API d’IB (Inberactive Brokers). https://www.interactivebrokers.com/en/?f=api&p=comparison1
C’est pas un projet pour tout de suite de mon côté mais j’aurais aimé pouvoir coder mes stratégies sur options pour sauver du temps de recherche. Sinon dans le plus « paresseux » il y a le screener de Stockcharts que j’aime bien et qui m’aide à sélectionner des titres qui pourraient effectuer un retour sur la moyenne. Par exemple une stratégie que j’aime bien c’est de sélectionner des titres qui sont plus haut ou plus bas de 2 écarts type sur le prix à l’aide des Bollinger Bands et qui ont une stochastique de moins de 20 ou au dessus de 80 et de vendre des options hors jeu (de 1 sigma) en direction opposée. Une autre que j’aime bien aussi c’est de vendre des options sur le S&P500 (Emini). Je vend une option de vente quand le S&P500 baisse de plus de 15 points (je profite d’un VIX élevé lié à la baisse significative pour vendre « de la peur ») et je vend des call quand le S&P500 monte de plus de 10 points de la même façon. Un screener programmé pour ça qui placerait des ordre automatiques serait vraiment très bien.
Le blogueur masqué
Frédéric,
au travers de mes expériences, je suis évidemment tombé sur des posts à propos de l’API d’interactive broker, mais je n’ai pas encore mis le nez dedans. Il faut dire que je ne suis pas client d’interactive brokers et que pour l’instant je n’en ai pas l’intention non plus.
Quant à tes stratégies, ça se code plutôt bien à mon avis. Avec l’API d’IB et Python, tu pourrais faire ça assez facilement je pense. Il y a bcp d’informations sur le sujet.
Je commence à bien maîtriser TA-lib aussi à force de jouer dedans et de fouiller dans le code source en C pour comprendre comment interpréter les outputs notamment. Tu peux calculer les bollinger bands et la stochastic en 2 ou 3 lignes de code. C’est vraiment cool cette librairie là. C’est un Québécois qui l’a créé je pense.
Je ne suis pas certain que je laisserais un logiciel envoyer les ordres automatiquement à ma place, mais… certains le font! J’aurais peur d’avoir oublié un cas de figure ou quelque chose et de flamber mon argent sur une erreur de code!
Plus je travaillais sur l’analyse technique dernièrement, plus je me disais que tant qu’à essayer de faire du profit sur des stocks en achetant et vendant le stock, je serais aussi bien de le faire avec des options. 🙂 Je pourrais travailler avec des stocks plus « fiables » que des penny stocks et aller chercher le même rendement potentiel avec probablement moins de risque.
Une fois qu’on se met le nez dans tout ça, je pense qu’on peut s’amuser longtemps… les options, l’analyse technique, les futures, les forex, alouette!
Quant aux stratégies, il y en a des tas, mais jusqu’à maintenant, avec tous les tests que j’ai fait dans le passé, je n’en ai pas trouvé qui donne vraiment un edge statistique intéressant.
Quel est ton taux de succès avec ces stratégies d’option?
Je me suis un peu amusé aussi avec le machine learning cette semaine. Je n’ai pas fini, mais je voulais voir si des titres pouvaient être corrélés entre eux mais en retard. Donc, l’avancé de l’un pourrait prédire l’avancé future de l’autre. Par exemple, l’avancée des matières premières peuvent-elles prédire l’avancée (ou le recul) de titres qui sont dépendants des matières premières.
Exemple, si l’or monte est-ce que les titres miniers liés à l’or montent instantanément ou avec un peu de retard? Et les titres de cies qui utilisent de l’or mais qui peuvent avoir des réserves et donc n’ont pas à en acheter « right now », peuvent-ils être affecté à retardement?
C’est un peu l’hypothèque que je veux valider. À mon avis il doit y avoir des titres qui suivent mais qui lags. Peut-être que c’est quelque chose à exploiter et je me disais « quoi de mieux que d’utiliser Python pour tester ça automatiquement? ».
Je pense que c’est une avenue intéressante à exploiter si jamais c’est le cas. Mais, le machine learning, c’est une grosse bibite et en plus de Python que je ne maîtrise pas, de mes cours de statistique qui datent d’il y a 15 ans… ça en fait bcp!
J’ai quand même une job à temps plein, 20h de voyagement, une femme enceinte qui veut de l’attention et un jeune enfant… 🙂
Mais je pourrais tellement passer mes jours et mes nuits là-dessus si je ne me retenais pas!
Quant à mon code… je l’ai codé très rapidement. Il est encore en évolution!
Il y a une demi heure, je viens de rajouter une fonction pour poster automatiquement un article dans WordPress. C’est vraiment cool!
Une fois que le code sera « parfait », c’est-à-dire, une fois qu’il tiendra compte des dates pour déterminer réellement quelle cie vient de hausser son dividende au cours du dernier mois (au lieu de dernier dividende publié vs dividende précédent publié), ça me fera 12 posts par an qui se généreront automatiquement!
Frédéric
Faut pas se faire d’illusion avec les options. Contrairement aux actions où il y a de la création de valeur, les options ont une espérance mathématique de rendement nulle car ce que l’un perd, un autre le gagne. C’est pourquoi il faut ajouter un facteur humain à l’équation et comme les gens sont impulsifs, ça rend l’espérance mathématique positive (par exemple aller à contre courant la nuit du Brexit ou celle de l’élection de Trump quand le VIX est irrationnellement élevé). Le taux de succès ne veux rien dire non plus. Par exemple, je place volontairement mes ordres pour avoir un delta de 0.05 ce qui donne une probabilité de gain d’environ 95% mais le montant associé est faible. Quand je tombe dans le 5% de probabilité de perte, la perte est 20 x plus élevée que le gain et donc on revient à une espérance mathématique nulle. Cependant, encore là, il y a des stratégies pour rouler ton option dans le temps et/ou sur un prix d’exercice différent. Depuis un peu plus de 15 ans où j’utilise les 2-3 même stratégies je conserve mes primes 95% du temps et je fais un rendement moyen de 0,85% par mois (10,7% annuel composé). L’intérêt c’est que le rendement est stable peu importe la direction du marché et qu’il immobilise moins de 20% de mon capital et donc si le marché plante pas mal, j’ai une bonne partie de mon capital libre pour acheter des actions à bon prix.
Quant aux autres théories dont tu parle de plus en plus souvent, si ça fonctionnait, on en entendrait pas parler. Les trucs que les charlatans essaient de nous vendre ne fonctionnent pas. Sinon ils n’auraient pas besoin de les vendre et ils ne feraient que les appliquer. C’est le principe de l’arbitrage. Une opportunité qui existent et qui est exploité par plusieurs disparaît et par conséquent il n’y aurait aucun intérêt à les partager. Cependant, de petites stratégies simples pour stabiliser un rendement moyen à peine supérieur au marché c’est faisable.
Si ça t’intéresse, on pourra en parler de vive voix devant un verre et en discuter, c’est un peu long par écrit et moi aussi j’ai des enfants à la maison. J’aime bien te lire mais participer c’est plus long 😉
Tu as accès à mon courriel avec ton blogue. Au plaisir.
Le blogueur masqué
Frédéric,
enfin un réaliste-logique!!! 🙂
Je suis 100% d’accord avec ce que tu dis. Je suis sorti avec une crack de la finance et elle ne cessait de me répéter que « outsized returns over the long term is not sustainable » et elle se lançait ensuite dans des explications que j’avais du mal à suivre. En gros, elle me disait que je ne suis pas Warren Buffett, ni l’un de ces requins de Wall Street qui grab des cies, se payent en stock options, liquident les actifs, volent le fonds de pension, restructurent, pompent des nouvelles et font monter le prix de l’action à court terme pour exercer leurs options et se sauver avec le cash!
En fait, mes idées « cachées » derrière tout ça c’était davantage :
1) d’apprendre Python en ayant du plaisir (travailler sur des projets qui m’intéressent)
2) possiblement de faire des tutoriels YouTube …¸
3) ou un site web automatique où je partagerais mes codes à propos de la finance, mais aussi à propos d’une foule d’autres sujets…
Bon, on pourrait dire que c’est un peu « immoral » de faire vivre les mythes de l’analyse technique, mais ça dépend de l’angle pris.
Et puis, l’analyse technique ça attire du trafic et mon objectif est de vivre de mes revenus passifs alors…! lol
L’autre idée cachée, c’est de voir si je ne pourrais pas détecter les « pump and dump » et faire partie du « pump » (jeu dangereux car je ne sais pas quand ils vont faire le dump)… Qui saît?!
Avec Python, on peut faire de
l’analyse lexicale (sentiment analysis) relativement facilement. Je pourrais filtrer les nouvelles, corroborer le tout avec des indicateurs de tendance etc…
Bref, des heures de plaisir!
Reste que certains algorithmes arrivent à exploiter certaines failles dans l’efficience du marché (par la vitesse surtout – flash traders).
Quant aux options… je suis loin d’être aussi « callé » que toi sur le sujet. Je n’ai d’ailleurs même pas encore de compte d’options d’ouvert parce que les stratégies pépères que je veux utiliser ne valent pas la peine pour moi pour l’instant (trop de manipulation pour des gains potentiels mineurs… frais gobent tout).
Il va vraiment falloir que je m’y mette.
Pour la bière, on en reparle. 😉