金融商品に適応したプログラミング言語を設計するにはどうすればよいでしょうか?
-
19-09-2019 - |
質問
私は金融専門のブティックで働いています。
私たちは、金融市場に関連する金融エンティティを記述する言語を設計することを考えました。
これは主に、スプレッドシートや VBA マクロで実行される多くのプロセスを置き換える、ある種のスクリプト言語として使用されます。
シンプルである必要があり、実際には、舞台裏でさまざまな C++ および C# ライブラリを呼び出す必要があります。ユーザーが時系列 (日中および日次) を表すオブジェクトを抽象的に処理できるようにする必要があります。
完全にデバッグ可能である必要があり、ユーザーが問題を抱えたときに、C++/C# コードにステップインしてバグを再現できなければなりません。理想的には、Excel 内の何らかのメカニズムを介して起動でき、Excel 内で結果を返せる必要があります。(残念ながら、財務部門で働くほぼ全員が Excel を使用しています)
この仕事をしなければならないとしたら、どうやって取り組みますか?
関数型構文を使いますか?
解釈されるスクリプト言語を開発しますか、それとも別の言語でコンパイルしますか (C++ または C# でスクリプトを変換するなど)。
この種の開発のためのオープンソース プロジェクトは見つかりませんでしたが、この種の構文を使用する商用製品はありますか?
編集:いただいた回答はすべて読みましたが、回答を選ぶまでにはもう少し時間がかかります。どれもとても有益な意見ばかりですが!
編集2:High-Performance Mark を解決策としてマークしました。あなたの返信はすべて非常に役立つので、すべて修正しました。彼は最初の回答者の 1 人であり、彼の返答は私たちにとって非常に洞察力に富んでいます。
解決
私は(私はあなたがそれが簡単にエクセルで、元の統合を見つけるかもしれない疑いがあるものの、C#やC ++のいずれか)あなたがお好みのオブジェクト指向言語のクラスの豊富なセットの開発に専念することを示唆しています。これは、金融市場に関連した金融機関を記述するためにあなたの<私>の言語を与えるだろう。あなたは、いくつかのドメイン固有言語でこれらのクラスをラップする、または単にユーザーコミュニティにそれらを公開するために継続するかどうかを検討すべきであることをやったときます。
私はあなたのドメインは、いくつかのirreducable複雑さを持っており、中間DSLは、クラスのあなたのセットとして、したがって、あなたはそれを作成することによって得るために少しを持って、その複合体として(ほぼ)する必要があることと思われる。
別のアプローチは、ヴォルフラムはある種のツールボックスを産生するためのMathematicaとExcelを統合することであろう。私はこの経験がないが、Mathematicaは確かにあなたがする必要があります計算のいずれかに適してます。
よろしく
他のヒント
私はPythonでC ++のライブラリをラップなります。
実際には - - 私のドメイン固有言語だった。私は流暢なクラスのパッケージを定義します
私が直接これら二つの基盤に基づいてPython言語を使用します。私は自分の新しい構文を発明しません。世界は別の構文を必要としません。私たちは、構文を持っていると、時間の終わりまで続くように、解析するのに十分な十分な文法ます。
を使用すると、機能的な構文のために行くだろうか?のPythonは機能的な能力を持っています。あなたはPythonのクラスの設計には注意している場合は、きれいな機能的なスタイルを実現することができます。
を理想的には、Excel内、いくつかのメカニズムを介して起動することができるようにして、Excelで結果を返すことがあります。の
PythonインタプリタはC ++(またはC#の)アプリケーションに埋め込むことができますので、あなたは簡単にExcelのAPIのを作成することができます。 Excelからあなたの新しい言語に、Pythonの機能を開始するために、C ++ APIで可能な限りほとんどありません。
ところで、あなたの競争はリゾルバの一つのです。これは、彼らが何をすべきかです。
ResolverOne( http://www.resolversystems.com/products/resolver-one/ の)エクセルとPythonを組み合わせたものです。あなたはそれを使用して考えたことはありますか?
使用することをお勧めします R.
- R には、多数の財務および時系列パッケージがあります。を見てください。 ファイナンス, 計量経済学, 、 そして 時系列 ビュー。R は金融の分野でも広く使用されています (「 この最近のカンファレンス 例として)。
- R は Excel と統合できます。見て このテーマに関するこのブログ投稿.
- R は C++ コードを実行でき、COM を通じて C# と対話できます。
のC#を利用する他の視点を
あなたはすでに強力な汎用関数型プログラミングツールを持っているとしてユーザーが精通していると私はその周りにソリューションを構築することになりますエクセルの形状にに購入しています。あなたはまだ選択肢に他のサードパーティのアドオンと統合されたオプション(例えばRとMathematica)
を使用することができるということ方法を取得します私は<強い/>ユーザー定義関数のための管理オートメーションアドインになります。これらは、基本的にこの記事<のhref = "http://blogs.msdn.com/eric_carter/archive/2004/12/01/writing-user-defined-で説明したようにSystem.Runtime.InteropServicesを使用するC#ライブラリプロジェクトです機能・エクセル・イン・net.aspxのための」REL = 『nofollowをnoreferrer』>リンクテキストに。ユーザーにこれらの関数は、関数ウィザードを使用して、通常の方法で、細胞レベルで追加され、あなたがそれらになりたい何より以下とすることができます。これは、あなたのDSLです。ユーザーが簡単に既存のモデルに機能を統合することを選択できます。また、これの実現可能性をテストするために何かをプロトタイプに速いだろう。これらは、完全にデバッグされます。
また、あなたが完全なExcelのオブジェクト階層にアクセスし、より複雑なデータ入力要件のコントロールをドラッグ&ドロップでレイアウトすることができ、アクションペインを追加することができますオフィスのVisual Studioツールを使用して。私はあなたが専門的なビジュアライゼーションを追加するために必要な場合は、この方法でExcelとWPFを使用することも可能であると考えています。あなたはSQL Serverのを言うために戻ってデータを永続化するために必要な場合は、このアプローチを使用して、検証フォームターンアラウンドを構築することができます。
私はM $のサクラのように聞こえます! (ただ、私は彼らのために動作しないレコードストレートを設定する)。
あなたはこのの性能を評価する必要があるだろうと私はそれがスケールだろうかわかりません。
サイモンペイトンジョーンズは、紙は、『作曲契約:金融工学での冒険』関数型言語は、金融デリバティブ契約の実行ファイルの記述を構成するに自分自身を貸してどのように議論しているに。このような方法は、F#で可能である必要があります。
私は LexiFiするの製品は、この研究の一部を商業化することを目的としたと信じています。
ジェーン・ストリートキャピタルはOCamlのを使用しており、ここでの彼らの経験を書きました。幅広い読む場合、それはかなり面白います。
ご使用の環境のために、あなたは彼らのモデルに従った場合、あなたが使用することができます<のhref = "http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/" のrel = "nofollowをnoreferrer" OCamlの方言としての生活を始めたが、もちろんこれは、.NETの世界で実行されます。
> F#のに、あなたはGroovyでDSLをやって見てみる必要があります。これについてポッドキャストの数と記事がありますが、「DSLのGroovy」をグーグルでみてください。
ほとんどの大量の演算金融機関はすでにMatlabのライセンスを取得しています。私は彼らの金融で、あなたは確かに、MATLABが提供するオブジェクト指向の施設を見て(とすることをお勧めしますツールボックスで)ます。
前まで私は、あなたが3つのことを得ることだと思います:
1)ユーザーは、実装上の問題に集中することができず、高レベルの環境へのアクセス 高品質のグラフィックスの2)可用性 3)Excelとのシームレスな統合や他の生産性パッケージ
あなたのユーザーのための学習曲線を避けるため、このように -私はあなたの言語を知っている言語を開発(アプリケーションではなく)が、ウェルにピギーバックあなたのセマンティクスを検討する意味を知っています