Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Calculer la valeur à risque (VaR) à l'aide de AWS services
Créée par Sumon Samanta () AWS
Environnement : PoC ou pilote | Technologies : analytique ; sans serveur | AWSservices : Amazon Kinesis Data Streams ; AWS Lambda ; Amazon ; SQS Amazon ElastiCache |
Récapitulatif
Ce modèle décrit comment implémenter un système de calcul de la valeur à risque (VaR) à l'aide de AWS services. Dans un environnement sur site, la plupart des systèmes VaR utilisent une vaste infrastructure dédiée et un logiciel de planification de réseau interne ou commercial pour exécuter les processus par lots. Ce modèle présente une architecture simple, fiable et évolutive pour gérer le traitement de la VaR dans le AWS cloud. Il construit une architecture sans serveur qui utilise Amazon Kinesis Data Streams comme service de streaming, Amazon Simple Queue Service (AmazonSQS) comme service de file d'attente géré, ElastiCache Amazon comme service de mise en cache et AWS Lambda pour traiter les commandes et calculer les risques.
La VaR est une mesure statistique que les traders et les gestionnaires de risques utilisent pour estimer les pertes potentielles de leur portefeuille au-delà d'un certain niveau de confiance. La plupart des systèmes VaR impliquent l'exécution d'un grand nombre de calculs mathématiques et statistiques et le stockage des résultats. Ces calculs nécessitent des ressources de calcul importantes, de sorte que les processus par lots VaR doivent être divisés en de plus petits ensembles de tâches de calcul. Il est possible de diviser un lot important en tâches plus petites car ces tâches sont pour la plupart indépendantes (c'est-à-dire que les calculs d'une tâche ne dépendent pas des autres tâches).
Une autre exigence importante pour une architecture VaR est l'évolutivité du calcul. Ce modèle utilise une architecture sans serveur qui évolue automatiquement en entrée ou en sortie en fonction de la charge de calcul. La demande de calcul par lots ou en ligne étant difficile à prévoir, une mise à l'échelle dynamique est nécessaire pour terminer le processus dans les délais imposés par un accord de niveau de service ()SLA. En outre, une architecture optimisée en termes de coûts doit être capable de réduire chaque ressource de calcul dès que les tâches associées à cette ressource sont terminées.
AWSles services sont parfaitement adaptés aux calculs de la VaR car ils offrent des capacités de calcul et de stockage évolutives, des services d'analyse pour un traitement optimisé en termes de coûts et différents types de planificateurs pour gérer vos flux de travail de gestion des risques. De plus, vous ne payez que pour les ressources de calcul et de stockage que vous utilisezAWS.
Conditions préalables et limitations
Prérequis
Un compte AWS actif.
Fichiers d'entrée, qui dépendent des besoins de votre entreprise. Un cas d'utilisation typique implique les fichiers d'entrée suivants :
Fichier de données de marché (entrée dans le moteur de calcul de la VaR)
Fichier de données commerciales (sauf si les données commerciales proviennent d'un flux).
Fichier de données de configuration (modèle et autres données de configuration statiques)
Fichiers de modèles de moteurs de calcul (bibliothèques quantitatives)
Fichier de données de séries chronologiques (pour les données historiques telles que le cours des actions des cinq dernières années)
Si les données de marché ou d'autres entrées arrivent par le biais d'un flux, Amazon Kinesis Data Streams est configuré et les autorisations Amazon Identity and Access Management IAM () sont configurées pour écrire dans le flux.
Ce modèle crée une architecture dans laquelle les données commerciales sont écrites depuis un système de trading vers un flux de données Kinesis. Au lieu d'utiliser un service de streaming, vous pouvez enregistrer vos données commerciales dans de petits fichiers par lots, les stocker dans un bucket Amazon Simple Storage Service (Amazon S3) et invoquer un événement pour commencer à traiter les données.
Limites
Le séquençage des flux de données Kinesis est garanti sur chaque partition. Il n'est donc pas garanti que les ordres de transaction écrits sur plusieurs partitions soient livrés dans le même ordre que les opérations d'écriture.
La limite d'exécution AWS Lambda est actuellement de 15 minutes. (Pour plus d'informations, consultez le Lambda FAQ
.)
Architecture
Architecture cible
Le schéma d'architecture suivant présente les AWS services et les flux de travail du système d'évaluation des risques.
Le diagramme illustre les éléments suivants :
Les transactions sont effectuées depuis le système de gestion des commandes.
La fonction Lambda de compensation de la position des tickets traite les commandes et écrit des messages consolidés pour chaque ticker dans une file d'attente des risques sur Amazon. SQS
La fonction Lambda du moteur de calcul des risques traite les messages d'AmazonSQS, effectue des calculs de risques et met à jour les informations de profits et pertes (PnL) vAR dans le cache des risques d'Amazon. ElastiCache
La fonction Lambda de lecture ElastiCache des données extrait les résultats des risques ElastiCache et les stocke dans une base de données et un compartiment S3.
Pour plus d'informations sur ces services et les étapes à suivre, consultez la section Epics.
Automatisation et mise à l'échelle
Vous pouvez déployer l'architecture complète à l'aide du AWS Cloud Development Kit (AWSCDK) ou de AWS CloudFormation modèles. L'architecture peut prendre en charge à la fois le traitement par lots et le traitement intrajournalier (en temps réel).
La mise à l'échelle est intégrée à l'architecture. Au fur et à mesure que de nouvelles transactions sont enregistrées dans le flux de données Kinesis et attendent d'être traitées, des fonctions Lambda supplémentaires peuvent être invoquées pour traiter ces transactions, puis peuvent être réduites une fois le traitement terminé. Le traitement via plusieurs files d'attente de calcul des SQS risques Amazon est également une option. Si un ordre ou une consolidation stricts sont requis entre les files d'attente, le traitement ne peut pas être parallélisé. Toutefois, pour un lot end-of-the journalier ou un mini-lot intrajournalier, les fonctions Lambda peuvent traiter en parallèle et enregistrer les résultats finaux. ElastiCache
Outils
AWSservices
Amazon Aurora My SQL -Compatible Edition est un moteur de base de données relationnelle entièrement géré et SQL compatible My qui vous aide à configurer, exploiter et dimensionner vos déploiements My. SQL Ce modèle utilise My SQL comme exemple, mais vous pouvez utiliser n'importe quel RDBMS système pour stocker des données.
Amazon vous ElastiCache aide à configurer, à gérer et à faire évoluer des environnements de cache en mémoire distribués dans le AWS cloud.
Amazon Kinesis Data Streams vous aide à collecter et à traiter de grands flux d'enregistrements de données en temps réel.
AWSLambda est un service de calcul qui vous permet d'exécuter du code sans avoir à approvisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
Amazon Simple Queue Service (AmazonSQS) fournit une file d'attente hébergée sécurisée, durable et disponible qui vous aide à intégrer et à dissocier les systèmes et composants logiciels distribués.
Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
Code
Ce modèle fournit un exemple d'architecture pour un système VaR dans le AWS Cloud et décrit comment utiliser les fonctions Lambda pour les calculs VaR. Pour créer vos fonctions Lambda, consultez les exemples de code dans la documentation Lambda. Pour obtenir de l'aide, contactez les services AWS professionnels
Bonnes pratiques
Faites en sorte que chaque tâche de calcul VaR soit aussi petite et légère que possible. Testez différents nombres de transactions dans chaque tâche de calcul pour déterminer laquelle est la plus optimisée en termes de temps et de coût de calcul.
Stockez des objets réutilisables sur Amazon ElastiCache. Utilisez un framework tel qu'Apache Arrow pour réduire la sérialisation et la désérialisation.
Tenez compte de la limite de temps de Lambda. Si vous pensez que vos tâches de calcul peuvent dépasser 15 minutes, essayez de les décomposer en tâches plus petites pour éviter le délai Lambda. Si cela n'est pas possible, vous pouvez envisager une solution d'orchestration de conteneurs avec AWS Fargate, Amazon Elastic Container Service (Amazon) et ECS Amazon Elastic Kubernetes Service (Amazon). EKS
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Commencez à écrire des transactions. | Les transactions nouvelles, réglées ou partiellement réglées sont enregistrées depuis le système de gestion des ordres dans un flux de risques. Ce modèle utilise Amazon Kinesis comme service de streaming géré. Le hachage du ticker des ordres de transaction est utilisé pour placer les ordres de transaction sur plusieurs partitions. | Amazon Kinesis |
Tâche | Description | Compétences requises |
---|---|---|
Commencez le traitement des risques avec Lambda. | Exécutez une fonction AWS Lambda pour les nouvelles commandes. En fonction du nombre d'ordres commerciaux en attente, Lambda évoluera automatiquement. Chaque instance Lambda reçoit une ou plusieurs commandes et récupère la dernière position pour chaque ticker sur Amazon. ElastiCache (Vous pouvez utiliser un CUSIP identifiant, un nom de courbe ou un nom d'indice pour d'autres produits financiers dérivés comme clé pour stocker et récupérer des données ElasticCache.) Dans ElastiCache, la position totale (quantité) et la paire clé-valeur < ticker, position nette >, où la position nette est le facteur d'échelle, sont mises à jour une fois pour chaque ticker. | Amazon Kinesis, LambdaAWS, Amazon ElastiCache |
Tâche | Description | Compétences requises |
---|---|---|
Écrivez des messages consolidés dans la file d'attente des risques. | Ecrivez le message dans une file d'attente. Ce modèle utilise Amazon SQS comme service de file d'attente géré. Une seule instance Lambda peut recevoir un mini-lot d'ordres de transaction à tout moment, mais elle n'écrira qu'un seul message pour chaque ticker à Amazon. SQS Un facteur d'échelle est calculé : (ancienne position nette + position actuelle)/ancienne position nette. | AmazonSQS, AWS Lambda |
Tâche | Description | Compétences requises |
---|---|---|
Commencez à calculer les risques. | La fonction Lambda pour le moteur de gestion des risques lambda est invoquée. Chaque position est traitée par une seule fonction Lambda. Toutefois, à des fins d'optimisation, chaque fonction Lambda peut traiter plusieurs messages provenant d'Amazon. SQS | AmazonSQS, AWS Lambda |
Tâche | Description | Compétences requises |
---|---|---|
Récupérez et mettez à jour le cache des risques. | Lambda extrait la position nette actuelle de chaque ticker à partir de. ElastiCache Il récupère également un tableau des profits et pertes vAR (PnL) pour chaque ticker à partir de. ElastiCache Si le tableau PnL existe déjà, la fonction Lambda met à jour le tableau et le VaR avec une échelle, qui provient du message SQS Amazon écrit par la fonction Lambda de netting. Si le tableau PnL n'y figure pas ElasticCache, un nouveau PnL et un nouveau VaR sont calculés à l'aide de données de séries de prix simulées. | AmazonSQS, AWS Lambda, Amazon ElastiCache |
Tâche | Description | Compétences requises |
---|---|---|
Conservez les résultats relatifs aux risques. | Une fois les numéros VaR et PnL mis à jour ElastiCache, une nouvelle fonction Lambda est invoquée toutes les cinq minutes. Cette fonction lit toutes les données stockées ElastiCache et les stocke dans une base de données Aurora My SQL -Compatible et dans un compartiment S3. | AWSLambda, Amazon ElastiCache |