N'hésitez pas de consulter notre chaîne YouTube "INGÉNIERIE et BOURSE" pour profiter des cours et tutos gratuits !
Objectifs
- Savoir créer et faire grandir sa base de données des actifs financiers
- Savoir générer une liste des symboles à partir du Screener Yahoo au format CSV
- Savoir importer la liste des symboles avec Matlab
- Savoir récupérer les données des symboles
- Etc.
Pourquoi créer une base de données ?
Le développement le la BD en local nous permettra d’avoir les données en local sans avoir besoin de la connexion internet. De plus, le temps de téléchargement des données historiques des actifs est important. En particulier, lorsqu’on a besoin de faire une analyse multi-actifs (corrélation, extraction des caractéristiques des actifs, etc.). Par conséquent, le temps de téléchargement des données par Matlab est limité à celui de l’importation des données à partir du fichier CSV.
On aura besoin par la suite d’un nombre important des actifs pour qu’on puisse faire des prévisions et anticiper les scénarios probables d’un actif quelconque.
La procédure de l’importation du fichier SCV des symboles
Le script Matlab abordé dans la partie 1 nécessite la connaissance du symbole de l’actif (nom) prédéfinie par Yahoo. Le nom n’est pas forcement celui de l’actif ! L’objectif de la première étape consiste à l’importation d’une liste des symboles, de préférence par pays. Le tutoriel aborde l’importation d’une liste de +700 actifs en France (voir le tutoriel pour plus de détails). Dès l’obtention de la liste au format CSV, on peut par la suite importer les données historiques de chaque symbole en utilisant Matlab. Ci-dessous l’extrait du code qui nous permettra d’importer les données de la liste « TEST.csv ». Assurez –vous bien de positionner le fichier dans le dossier principal de votre script main.
[pastacode lang=”c” manual=”TempsSec%3D3%3B%0ANomFileCSV%3D’TEST.csv’%20%3B%0AdownlistTitres(NomFileCSV%2CTempsSec)%3B” message=”” highlight=”” provider=”manual”/]
La définition de la fonction downlistTitres()
La fonction sert à importer le fichier CSV et extraire les données historiques. La fonction prend en entrée le nom du fichier ainsi la durée de téléchargement par fichier. Vous pouvez ajuster la durée de téléchargement (voir le tuto pour plus de détails). La fonction fait appel aux deux fonctions:
- geList(): Importation de la liste
- getYahoo(): Téléchargement des données
Ci-dessous la définition des fonctions
[pastacode lang=”c” manual=”function%20downlistTitres(filenamecsv%2C%20TempsSec)%0A%0A%0A%25%20Param%C3%A8tres%0AyahooLink%3D’https%3A%2F%2Fquery1.finance.yahoo.com%2Fv7%2Ffinance%2Fdownload%2F’%3B%0AfileFolder%3D%20’C%3A%5CUsers%5C…%5CDownloads’%3B%20%25%20A%20d%C3%A9finir!%0A%0A%25%20Importation%20de%20la%20liste%20des%20Symboles%20%0ATitres%20%3D%20geList(filenamecsv)%3B%0AnMax%3Dlength(Titres)%3B%0ASatart%3D’Jan-01-2010’%3B%0AStop%3Ddatestr(now%2C1)%3B%0A%5Bnn%2C%20mm%5D%20%3D%20month(Stop)%3B%0AStop%3Dstrcat(mm%2C’-‘%2Cnum2str(day(Stop))%2C’-‘%2Cnum2str(year(Stop)))%3B%0A%0A%0A%25%20T%C3%A9l%C3%A9chargement%20des%20donn%C3%A9es%20historiques%20%0Adisp(‘D%C3%A9but%20de%20T%C3%A9l%C3%A9chargement…’)%3B%0Afor%20i%3D1%3AnMax%0A%20%20%20%20%0A%20%20%20%20Titre%3Dchar(Titres(i))%3B%0A%20%20%20%20disp(strcat(num2str(i)%2C’%20-%20’%2CTitre))%3B%0A%20%20%20%20%0A%20%20%20%20%25%20T%C3%A9l%C3%A9chargement%20du%20titre%0A%20%20%20%20filename%20%3D%20%5BfileFolder%2C’%5C’%2CTitre%2C’.csv’%5D%3B%0A%20%20%20%20%0A%20%20%20%20if%20~(exist(filename%2C%20’file’)%20%3D%3D%202)%0A%20%20%20%20%20%20%20%20getYahoo(yahooLink%2C%20Satart%2C%20%20Stop%2C%20Titre)%3B%0A%20%20%20%20%20%20%20%20pause(TempsSec)%3B%20%25%20Attendre%20le%20t%C3%A9l%C3%A9chargement%20du%20fichier%0A%20%20%20%20end%0Aend%3B%0Adisp(‘Fin%20de%20T%C3%A9l%C3%A9chargement…’)%3B%0A%0Aend%0A%0A” message=”” highlight=”” provider=”manual”/]
[pastacode lang=”c” manual=”function%20Titres%20%3D%20geList(filename)%0A%0A%25%25%20Initialize%20variables.%0Adelimiter%20%3D%20’%2C’%3B%0AstartRow%20%3D%202%3B%0A%0A%25%25%20Format%20string%20for%20each%20line%20of%20text%3A%0AformatSpec%20%3D%20’%25s%25f%25s%25s%25f%25f%25f%25f%25f%25s%25s%25s%25s%25s%25s%25s%25%5B%5E%5Cn%5Cr%5D’%3B%0A%0A%25%25%20Open%20the%20text%20file.%0AfileID%20%3D%20fopen(filename%2C’r’)%3B%0A%0A%25%25%20Read%20columns%20of%20data%20according%20to%20format%20string.%0AdataArray%20%3D%20textscan(fileID%2C%20formatSpec%2C%20’Delimiter’%2C%20delimiter%2C%20’HeaderLines’%20%2CstartRow-1%2C%20’ReturnOnError’%2C%20false)%3B%0A%0A%25%25%20Close%20the%20text%20file.%0Afclose(fileID)%3B%0A%0A%25%25%20Create%20output%20variable%0AdataArray(%5B2%2C%205%2C%206%2C%207%2C%208%2C%209%5D)%20%3D%20cellfun(%40(x)%20num2cell(x)%2C%20dataArray(%5B2%2C%205%2C%206%2C%207%2C%208%2C%209%5D)%2C%20’UniformOutput’%2C%20false)%3B%0AData%20%3D%20%5BdataArray%7B1%3Aend-1%7D%5D%3B%0A%0ATitres%3DData(%3A%2C1)%3B%0A%0A%0A%25%25%20Clear%20temporary%20variables%0Aclearvars%20filename%20delimiter%20startRow%20formatSpec%20fileID%20dataArray%20ans%3B%0A%0Aend” message=”” highlight=”” provider=”manual”/]
[pastacode lang=”c” manual=”function%20getYahoo(%20yahooLink%2C%20Start%2C%20%20Stop%2C%20Titre)%0A%0A%0A%25%20Start%3D’Jan-01-2012’%3B%0A%25%20Stop%3D’Jun-01-2021’%3B%0A%25%20Titre%3D’KO’%3B%0A%0A%0Astart_datenum%20%3D%20(datenum(Start)%20-%20datenum(‘Jan-01-1970’))%20*%2086400%3B%0AstartDateStr%20%3D%20num2str(start_datenum)%3B%0A%0Aend_datenum%20%3D%20(datenum(Stop)%20-%20datenum(‘Jan-01-1970′))%20*%2086400%3B%20%25%2086400%3D60*60*24%20(1%20journ%C3%A9e)%0AendDateStr%20%3D%20num2str%20(end_datenum)%3B%0A%0A%0Alink%3D%5ByahooLink%2CTitre…%0A%20%20%20%20%2C’%3Fperiod1%3D’%2CstartDateStr%2C’%26period2%3D’%2CendDateStr%2C’%26interval%3D1d%26events%3Dhistory%26includeAdjustedClose%3Dtrue’%5D%3B%0Aweb(link%2C’-browser’)%3B%0A%0A%0Aend%0A%0A” message=”” highlight=”” provider=”manual”/]
Voir la partie #1 de la série pour plus de détails.
Bourse et Matlab #2: Comment développer une base de données financières ?1 thought on “”