Les langages de programmations :
Les plus utilisés par les API sont généralement le c/c++, java, python, basic et c# (autres langages passés votre chemins).
Les plateformes ayant un module backtest et trading algo intégrés :
- Meta trader 4 (programmer dans une sorte de c).
- Meta trader 5 (programmer dans un dérivé du c#)
- Ninja Trader (Programmer en c#)
- Pro real time (basic)
Les courtiers proposant une API permettant de connecté directement un programme perso (transmettre les ordres et récupéré les données de marchés) :
- interactive broker (java, c++, c#, excel)
- Pinnacle trading (c++, perl ,excel)
- ig (je ne sais pas ! mais vu sur le forum)
- TD ameritrade (c#)
- TradeStation (easy language, ressemble à du c#)
Pour du prototypage d’idée quelques petit soft sympa :
- Mathlab
- R
- Excel
- Orange (data mining open source)
Pour récupérer les données des cotations (très orienté action us ):
- L’api de google finance
- L’api de yahoo
- netfonds.no
- finam.ru
- investopedia
- quotmedia
- msn (moneycentral)
- aol
Pour récupérer les données financières concernant les entreprises (usa toujours, bilan , compte de résultat etc…)
- usfundamentals.com
- SEC (avec api et XBRL)
Données macroéconomique :
- https://fred.stlouisfed.org/ (tout est récupérable par api)
- Je conseille aussi assetmacro.com et OECD (l’ocde) mais pas d’api
Quelques librairies sympa pour les développeurs (très orienté c++ et c#)
- HTML agility (permet de parser des sites internet très facilement)
- REST api permettant de parser les twittes
- FANN réseaux de neurones artificiels ( MLP surtout, mais je ne l’ai pas utilisé depuis au moins 5 ans)
- Servicestack (pour simplifier la partie sql)
- Quantlib
Des exemples de codes, des tutos et de la recherche:
- https://www.mql5.com/ (code pour metatrader 4 et 5)
- http://www.mathfinance.cn/
- http://www.javaquant.net/
- https://www.quantstart.com/articles
- http://pages.stern.nyu.edu/~adamodar/New_Home_Page/spreadsh.htm (le site contient aussi de la data intéressante)
Algorithme très utile, à avoir sous le coude (où plutôt dans la tête)
- Pour l’optimisation : algorithme génétique, optimisation par essaims particulaire (mes deux chouchoux)
- Pour la classification non linéaire, apprentissage non supervisé : carte auto-organisatrice de Kohonen
- Pour la classification ou régression non linéaire, apprentissage supervisé : perceptron multi couche, réseaux RBF, machine à vecteur de support (astuce du noyau)
- Pour la régression non linéaire seule : filtre de kalman étendue
- Pour de la régression linéaire : filtre de kalman, adaline, régression linéaire etc…
- Pour de l’apprentissage probabiliste : réseaux bayésiens
- Pour humaniser un programme (le rendre un peu moins binaire) : logique flou
Développer un algo, les pièges à évités :
- Pour éviter que le programme ne gagne qu’en backtest, il doit être développer sur un premier historique, puis validé sur un second, avant d’être mis en production.
- Il faut prévoir la panne de courant et la coupure internet. Donc, redémarrage du pc, de la connexion, du programme, possibilités de placer un ordre complexe en une fois (combo, take profit + stop etc…) etc… on est jamais trop parano.
- Il faut prévoir une gestion du capital rigoureuse et du nombre de position prise simultanément.
- Avant passage en réel il faut une validation quasiment scientifique du programme. J’invite à se renseigner sur la méthode scientifique (échantillon test, témoin, test d’hypothèse, échantillon statistiquement significatif, comparaison avec un benchmark pertinent etc…).
- Il faut une gestion d’erreur parfaite (noyer votre programme de try catch si vous êtes en c#), le programme ne doit pas planter à un moment critique.
- Gérer le temps, afin d’éviter de trader hors des heures de marchés normal (spread trop large), mais aussi afin d’éviter de rester sur une position ayant un coût en temps trop longtemps et de vous retrouver avec un profit flat voir négatif une fois tous les frais déduits.