6
votes

Comment concevoir un langage de programmation adapté aux instruments financiers?

Je travaille pour une boutique spécialisée dans la finance.

Nous avons pensé à concevoir une langue pour décrire les entités financières liées aux marchés financiers.

Ceci serait principalement utilisé comme une sorte de langue de script pour remplacer de nombreux processus exécutés dans des feuilles de calcul et des macros VBA.

Il doit être simple et il a en fait d'appeler diverses bibliothèques C ++ et C # dans les coulisses. Il doit laisser les utilisateurs à gérer des objets abstraites qui pourraient représenter la série chronologique (intraday et quotidiennement).

Il doit être entièrement déburgible lorsqu'un utilisateur aura un problème, nous devons pouvoir intervenir dans le code C ++ / C # et reproduire les bugs. Idéalement, il doit pouvoir être lancé via un mécanisme d'Excel et renvoyer les résultats dans Excel. (Malheureusement, presque toutes les personnes travaillant dans la finance utilisent Excel)

Si vous deviez faire cette tâche, comment allez-vous y aller?

iriez-vous pour une syntaxe fonctionnelle?

Souhaitez-vous développer un langage de script qui serait interprété ou le compileriez-vous dans une autre langue (comme convertir les scripts en C ++ ou C #)?

Je n'ai trouvé aucun projet open-source pour ce type de développement, mais y a-t-il un produit commercial utilisant ce type de syntaxe?

Edit: Je lis toutes vos réponses mais j'attendrai plus de temps avant de choisir une réponse. Ils sont tous des opinions très utiles cependant!

Edit2: J'ai marqué la marque haute performance comme solution. Toutes vos réponses sont très utiles et je les ai toutes modifiées. Il était l'une des premières réponses et sa réponse est assez perspicace pour nous.


3 commentaires

N'est-ce pas ce que Cobol a été conçu à l'origine? = P


Désolé mais c'était un commentaire amusant :)


Jetez un coup d'œil à Stackoverflow.com/questions/23448/dsl-in-finance . Il y a de bonnes références dans les réponses à la question postée sur ce lien.


7 Réponses :


5
votes

J'enverrais les bibliothèques C ++ dans Python.

Je définirais un paquet de classes fluides qui - en vigueur - était ma langue spécifique au domaine.

J'utiliserais le langage Python directement basé sur ces deux fondations. Je n'envierais pas ma propre nouvelle syntaxe. Le monde n'a pas besoin d'une autre syntaxe; Nous avons suffisamment de syntaxe et de grammaires pour analyser, assez pour durer jusqu'à la fin des temps.

iriez-vous pour une syntaxe fonctionnelle? Python a des capacités fonctionnelles. Si vous êtes prudent avec votre conception de classe Python, vous pouvez obtenir un style fonctionnel propre.

idéalement, il doit pouvoir être lancé via certains mécanismes dans Excel et renvoyer les résultats dans Excel.

Étant donné que l'interprète Python peut être intégré dans une application C ++ (ou C #), vous pouvez facilement créer des API Excel. D'Excel à votre nouvelle langue, faites le moins possible dans l'API C ++ pour lancer la fonctionnalité Python.

BTW, votre concurrence est Résolver One . C'est ce qu'ils font.


1 commentaires

Appuyé (même si la langue sous-jacente ne finit pas d'être python); C'est exactement ce que les DSL sont destinés, et cela vous libère de vous concentrer sur les exigences commerciales de l'API, plutôt que des détails Murkier.



10
votes

Je vous suggère de vous concentrer sur le développement d'un ensemble riche de classes dans votre langue préférée de OO (C # ou C ++, bien que je soupçonne que vous puissiez trouver plus de facilité d'intégrer l'ancien avec Excel). Cela vous donnerait votre Langue pour décrire les entités financières liées aux marchés financiers . Lorsque vous avez fait que vous devriez déterminer s'il faut continuer à envelopper ces classes dans une langue spécifique du domaine ou simplement à les exposer à votre communauté d'utilisateurs.

Je soupçonne que votre domaine a une complexité irréductible et qu'une DSL intermédiaire devra être (presque) aussi complexe que votre ensemble de classes et que vous avez donc peu à gagner en la créant.

Une autre approche serait d'intégrer Excel avec Mathematica pour lequel Wolfram produise une boîte à outils de quelque sorte. Je n'ai aucune expérience de cela, mais Mathematica convient certainement à l'un des calculs que vous aurez à faire.

considère


0 commentaires

1
votes

Si votre bibliothèque sous-jacente utilise Java, vous devez jeter un coup d'œil à une DSL à Groovy. Il existe un certain nombre de podcasts et d'articles à ce sujet, essayez Googling "DSL Groovy".


2 commentaires

J'allais suggérer Scala, pour des raisons similaires. Mais l'une des langues la toux ils veulent s'interfacer à la C #, et je ne pense pas que cela soit vraiment lisse pour intégrer une langue jvm avec une langue CLR.


D'Oh, manqua ce détail, alors oui, ce serait "difficile" d'interfacer avec C # :-)



2
votes

Jane Street Capital utilise OCAML et a écrit leurs expériences ici . C'est une assez intéressante si large lue.

Pour votre environnement, si vous avez suivi leur modèle, vous pouvez utiliser F # , qui a commencé la vie en tant que dialecte OCAML, mais qui fonctionne bien dans le monde .Net.


1 commentaires

Merci pour votre réponse, je suis suivant F #, il semble qu'un candidat très fort pour ce type d'applications étant une langue fonctionnelle.



3
votes

Un autre point de vue qui exploite C #.

Comme vous avez déjà un outil de programmation fonctionnelle à usage général puissant, vos utilisateurs connaissent et ont été achetés dans la forme d'Excel, je souhaiterais construire une solution autour de cela. Vous avez toujours l'option de la manière de pouvoir utiliser d'autres add-ons 3ème partie et des options intégrées (par exemple, R et Mathematica)

Je regarderais dans Automatisation gérée Automation pour des fonctions définies par l'utilisateur . Ce sont essentiellement des projets de bibliothèque C # qui utilisent le système.Runtime.Interservices comme décrit dans cet article Texte de liaison . Pour les utilisateurs, ces fonctions sont ajoutées à un niveau de cellule de manière normale à l'aide de l'assistant de fonction et peuvent être plus ou moins ce que vous voulez qu'ils soient. C'est alors votre DSL. Les utilisateurs peuvent choisir d'intégrer facilement la fonctionnalité dans leurs modèles existants. Il serait également rapide de prototyper quelque chose pour tester la faisabilité de cela. Ceux-ci sont entièrement débisibles.

En outre, à l'aide de Visual Studio Tools for Office, vous pouvez accéder à la hiérarchie de l'objet Excel complet et même ajouter des vitres d'action pouvant être définies en faisant glisser des contrôles de saisie de données plus complexes. Je crois qu'il est même possible d'utiliser WPF avec Excel de cette manière si vous devez ajouter des visualisations spécialisées. Si vous aviez besoin de persister les données de retourner à SQL Server, vous pouvez construire un tour de validation du formulaire de validation à l'aide de cette approche.

Je sonne comme un m $ Shill! (Juste pour définir l'enregistrement droit, je ne travaille pas pour eux).

Vous auriez besoin d'évaluer la performance de cela et je ne suis pas sûr de savoir comment cela serait à l'échelle.


1 commentaires

Excel-ADN est une excellente mise en œuvre de ce concept.



1
votes

La plupart des institutions financières (ou des divisions) ont déjà acquis des licences MATLAB. Je vous recommande de jeter un coup d'œil aux installations orientées objet offertes par Matlab (et, en effet, à leur Financial Boîte à outils ).

Avant, je pense que vous gagnez trois choses:

1) accès à un environnement de haut niveau où les utilisateurs peuvent se concentrer sur le problème et non sur la mise en œuvre 2) Disponibilité de graphiques de haute qualité 3) Intégration transparente avec Excel et autres emballages de productivité

Je sais que vous voulez développer une langue (par opposition à une application), mais envisager de soutenir votre sémantique à une langue bien connue - de cette façon, vous évitez la courbe d'apprentissage pour vos utilisateurs.


0 commentaires

3
votes

Simon Peyton-Jones de Haskell Fame a contribué à un papier 'COMPOSANT DES CONTRATS: Une aventure en génie financier' , qui a discuté de la façon dont les langues fonctionnelles se sont prêtées pour former des descriptions exécutables des contrats dérivés financiers. Une telle méthode devrait être possible avec F #.

Je crois aux offres de Lexifi visant à commercialiser une partie de cette recherche.


0 commentaires