Manipulation de données financières sous MATLAB Exane BNP Paribas Trading & Arbitrage Research nov 2005 Charles-Albert Lehalle, Nicolas Bertrand {charles-albert.lehalle|nicolas.bertrand}@exane.com
Manipulation de données financières avec MATLAB Prise en compte de la spécificité des données financières Prise en compte de la spécificité des traitements financiers Importance de la documentation Exemples didactiques de manipulations de données financières Screening Simulation de données réalistes Bilan Un socle unique pour de nombreuses applications Atouts traditionnels de MATLAB
Opérationnel Résultats Données Déploiement Validation Prototypage Objectif: Une approche métier au service du développement d’outils internes Opérationnel Données Résultats Déploiement Validation Prototypage
quotidiens Entre chocs Quels types de données ? Explicitement rythmés Evénementiels Temporels et multivariés Implicitement rythmés Explicitement rythmés quotidiens Entre chocs
Types de données, types d’analyses, sources de données Diversification de portefeuille Analyse technique Pricing, volatilité, etc Portefeuille events Ensemble de cours cours Covariances, bêta Scanning systématique informations mixtes Bloomberg, Reuters, DataStream, FacSet, etc… Market impact, etc Euronext database stocks trades
Eléments d'implémentation: le signal financier Un type MATLAB polymorphe: struct Un signal = Un titre Une série de date Une série de données (volume, open, close, high, low) au même pas d'échantillonnage Les noms de ces variables + des informations optionnelles En MATLAB: >> data = struct( 'title', 'le titre', 'date', vecteur-colonne, ...) value: [20732x8 double] date: [20732x1 double] names: {1x8 cell} title: ‘BN FP Equity'
Quels types de traitements ? Au fil de l’eau (filtrage) pour produire Pricing (titre / portefeuille) Des alarmes (risque / gain associé à une configuration, …) Des caractéristiques (formes, configurations, …) Par « batchs » pour produire Calcul d’allocations Reporting (PnL, VaR) Des estimateurs du comportement du marché (corrélations, modèles, …) Des anticipations court terme (probabilités de retournement, …)
Prototype unique pour tout les traitements Entrées / sorties : listes de signaux Mode de sollicitation (initialisation, détection, estimation, bootstrap, etc) Etat Il s'agit d'une fonction MATLAB dont le prototype est de la forme Function [outputs, state] = analyse( mode, state, inputs, ...) solicitation entrées sorties état
Vers une architecture optimale des traitements Chaînage Séparation claire des analyses Travail collaboratif / maintenabilité Backtesting naturel affichage Conjonction prix - volumes Travail sur les prix écriture lecture Decoupage quotidien des volumes Travail sur les volumes
Documenter pour échanger documentation utilisateur m2html documentation technique OCAMAWEB
Exemples didactiques Exemples de manipulations de données financières Screening Simulation de données réalistes
Screening Objectifs : Screener automatiquement des données financières et des indicateurs de marché Sous forme de charts paramétrables et de documents de synthèse Moyens : Accès aux données Calcul des indicateurs (bandes de Bollinger, moyennes mobiles, performances, etc.) Construction des charts
Screening: principe Extraction des données financières Calcul des indicateurs Paramétrage, tracé des charts
Screening: rendu Chart seul Document de synthèse (pdf)
Simulation de données réalistes Objectifs : A partir d’historiques de données (courbes, certaines quotidiennes, d’autres mensuelles) Simuler des « années réalistes » concordant avec les caractéristiques statistiques des courbes réelles Conserver les corrélations (et autre moments) entre les courbes Moyen : Modélisation de la structure des données avec des copules (non paramétriques) Simulation par Monte Carlo
Simulation de données réalistes : principe Simulation de données indépendantes Inversion des copules Espace de représentation (dans lequel les données sont indépendantes) copules non paramétriques Application des corrélations Prétraitements (stationnarisation) Modèle de corrélations
Déploiement : compilation EXCEL COM Déploiement sur les postes utilisateurs via Excel COM/Builder Entrées : les données par DataStream Sorties : 1000 simulations d’années plausibles Exploitation: Distribution de l’exposition au risque (VaR) u v w v u w
MATLAB: un socle unique pour de multiples applications 1/3 Asset Liability Management Families Real Estate (geographical statistics) Statistics Fixed Income (sensibility, …, yield curves) Statistics Equity (volatility, correlations, Markovitz, …) Statistics, Optimization Credit (structural models –Merton-, copula, …) Finance, Statistics Diversified Portfolio (Markovitz, Black & Litterman, …) Optimization, Control Risk Management Value at Risk (correlations, copula) Statistics Stress testing (extreme values, …) Base, Statistics Insurance Population dynamics Statistics, Base Fixed Income & Currency Derivatives Yield curves (Vasicek, …) Statistics Swaps Finance Fixed income options Finance Statistics = Statistics & Data analysis Optimization = Math & Optimization
MATLAB: un socle unique pour de multiples applications 2/3 Equity Derivatives Families Closed form models (B&S, …) Finance Simulations (multinomial trees, monte carlo, finite differences) Optimization, Stats Sensibilities (greeks) Finance, Optimization Credit Derivatives Structural models Finance, Optimization Reduced form models (empirical probabilities of default, …) Optimization, Statistics Copula Statistics Trading & Arbitrage Technical analysis Finance, Statistics, Signal Processing Arbitrage Statistics, Base, Optimization Trading Statistics, Control, Signal Processing, Optimization
MATLAB: un socle unique pour de multiples applications 3/3 Math and Optimization Optimization Toolbox, Symbolic Math (Extended Symbolic Math), [Partial Differential Equation], Genetic Algorithm and Direct Search Toolbox Statistics and Data Analysis Statistics, Neural Network, Curve Fitting, Spline, [Model-Based Calibration] Control System Design and Analysis Control System, System Identification, [Fuzzy Logic], Robust Control Model, Predictive Control Signal Processing and Communications Signal Processing, [Communications], [Filter Design], [Filter Design HDL Coder], Wavelet, Fixed-Point, [RF] Financial Modeling and Analysis Financial, Financial Derivatives, GARCH, Financial Time Series, Datafeed, Fixed-Income
Bilan Pré requis : un format de stockage de données et un format de manipulation de données, Les atouts de MATLAB Un socle unique pour de nombreuses applications (réduction des coûts) Maîtriser l’enchaînement de plusieurs méthodologies (approche « grey box », contrôle du risque de modèle) Prototypage rapide (script, graphiques, toolboxes) Accès aux données (en évolution) Peuvent être mis efficacement à disposition de la finance quantitative Calculs en lignes + calculs en batch sur de gros volumes de données Mise en place rapide d’applications pour validation / backtesting Interactions avec les providers de données financières (actx / dde) et les legacy systems
Références Documentation technique de programmes Literate programming / OCAMAWEB http://www.literateprogramming.com/ftools.html Séquencement de calculs Jérôme Lacaille, Projet d’habilitation à diriger des recherches Chap 5; http://www.cmla.ens-cachan.fr/Utilisateurs/lacaille/hdr/hdr.pdf J.P. Morrison, Flow-Based Programming: A New Approach to Application Development http://www.jpaulmorrison.com/fbp/
Manipulation de données financières avec MATLAB