6

私は金融を専門とするブティックで働いています。

金融市場に関連する金融機関を説明する言語を設計することを考えました。

これは主に、スプレッドシートやVBAマクロで実行される多くのプロセスを置き換えるためのある種のスクリプト言語として使用されます。

シンプルである必要があり、実際には、さまざまなC ++およびC#ライブラリを舞台裏で呼び出す必要があります。ユーザーが時系列(日中および毎日)を表すことができるオブジェクトを抽象的に処理できるようにする必要があります。

完全にデバッグ可能である必要があります。ユーザーに問題が発生した場合は、C ++ / C#コードにステップインして、バグを再現できる必要があります。理想的には、Excel内の何らかのメカニズムを介して起動し、Excel内で結果を返すことができる必要があります。(残念ながら、財務部門で働くほとんどすべての人がExcelを使用しています)

このタスクを実行する必要がある場合、どのように実行しますか?

機能的な構文を使用しますか?

解釈されるスクリプト言語を開発しますか、それとも別の言語でコンパイルしますか(C ++またはC#でスクリプトを変換するなど)?

この種の開発のためのオープンソースプロジェクトは見つかりませんでしたが、この種の構文を使用した商用製品はありますか?

編集:私はあなたのすべての答えを読みましたが、答えを選ぶ前にもっと時間を待ちます。とはいえ、それらはすべて非常に有益な意見です!

EDIT2:私はハイパフォーマンスマークを解決策としてマークしました。すべての返信は非常に便利で、私はそれらすべてを変更しました。彼は最初の答えの1つであり、彼の返事は私たちにとって非常に洞察に満ちています。

4

7 に答える 7

10

好みの OO 言語 (C# または C++ のいずれか、ただし前者を Excel に統合する方が簡単だと思うかもしれませんが) で豊富なクラスのセットを開発することに専念することをお勧めします。これにより、金融市場に関連する金融機関を説明する言語が得られます。それが完了したら、これらのクラスをドメイン固有言語でラップし続けるか、単にユーザー コミュニティに公開するかを検討する必要があります。

あなたのドメインにはいくらかの単純化できない複雑さがあり、中間 DSL はクラスのセットと (ほぼ) 同じくらい複雑でなければならず、したがって、それを作成することによって得られるものはほとんどないと思います。

もう 1 つのアプローチは、Wolfram が何らかのツールボックスを作成するための Mathematica と Excel を統合することです。私はこれを経験したことがありませんが、Mathematica はあなたがしなければならないどんな計算にも確かに適しています.

よろしく

于 2009-12-11T17:35:19.140 に答える
5

C++ライブラリをPythonでラップします。

流暢なクラスのパッケージを定義します。これは、事実上、私のドメイン固有言語でした。

私はこれらの2つの基盤に直接基づいてPython言語を使用します。私は自分の新しい構文を発明しませんでした。世界は別の構文を必要としません。構文解析するのに十分な構文と文法があり、時間の終わりまで続くのに十分です。

機能的な構文を使用しますか?Pythonには機能的な機能があります。Pythonクラスの設計に注意すれば、クリーンな機能スタイルを実現できます。

理想的には、Excel内の何らかのメカニズムを介して起動し、Excel内で結果を返すことができる必要があります。

PythonインタープリターはC++(またはC#)アプリケーションに埋め込むことができるため、ExcelAPIを簡単に作成できます。Excelから新しい言語まで、Python機能を開始するためにC++APIで可能な限り実行しないでください。

ところで、あなたの競争相手はResolverOneです。これは彼らがしていることです。

于 2009-12-11T17:11:29.087 に答える
3

C# を活用する別の視点。

強力な汎用関数型プログラミング ツールが既にあり、ユーザーが Excel の形で慣れ親しんでいるので、私はそれを中心にソリューションを構築することを検討します。他のサード パーティのアドオンや統合オプション (R や Mathematica など) を使用できるオプションも引き続き利用できます。

ユーザー定義関数用のマネージド オートメーション アドインを調べます。これらは基本的に、この記事のリンク テキストで説明されているように、System.Runtime.InteropServices を使用する C# ライブラリ プロジェクトです。これらの関数は、関数ウィザードを使用して通常の方法でセル レベルでユーザーに追加されます。これがあなたのDSLです。ユーザーは、既存のモデルに機能を簡単に統合することを選択できます。また、これの実現可能性をテストするために何かをプロトタイプ化することも高速です。これらは完全にデバッグ可能です。

さらに、Visual Studio Tools for Office を使用すると、完全な Excel オブジェクト階層にアクセスしたり、より複雑なデータ入力要件のためにコントロールをドラッグ アンド ドロップしてレイアウトできるアクション ペインを追加したりすることもできます。特殊なビジュアライゼーションを追加する必要がある場合は、このように Excel で WPF を使用することも可能だと思います。データを保持して Sql Server に戻す必要がある場合は、このアプローチを使用してターンアラウンド検証フォームを作成できます。

私はM $のサクラのように聞こえます!(記録をまっすぐにするために、私は彼らのために働いていません)。

これのパフォーマンスを評価する必要がありますが、どのようにスケーリングするかはわかりません。

于 2009-12-11T22:43:35.790 に答える
3

Haskell で有名な Simon Peyton-Jones は、関数型言語が金融デリバティブ契約の実行可能な記述を構成するのにどのように役立つかを論じた論文「コントラクトの構成: 金融工学における冒険」に貢献しました。このような方法は、F# で可能になるはずです。

LexiFiの提供物は、この研究の一部を商業化することを目的としていたと思います。

于 2009-12-15T00:12:24.817 に答える
2

Jane Street Capital は OCaml を使用しており、その経験をここに書いています。広く読めばかなり面白い。

あなたの環境では、彼らのモデルに従った場合、OCaml 方言として誕生したF#を使用できますが、もちろん .NET の世界で実行されます。

于 2009-12-11T18:45:27.497 に答える
1

基盤となるライブラリが Java を使用している場合は、Groovy で DSL を実行する方法を検討する必要があります。これに関するポッドキャストや記事が多数あります。Google で「DSL Groovy」を検索してみてください。

于 2009-12-11T17:37:48.030 に答える
1

数値計算を行うほとんどの金融機関 (またはその部門) は、既に Matlab ライセンスを取得しています。Matlab が提供するオブジェクト指向の機能 (および、実際にはFinancial Toolbox )を参照することをお勧めします。

まず、次の 3 つのことが得られると思います。

1) ユーザーが実装ではなく問題に集中できる高レベルの環境へのアクセス 2) 高品質のグラフィックスの可用性 3) Excel およびその他の生産性パッケージとのシームレスな統合

(アプリケーションではなく) 言語を開発するつもりであることは承知していますが、セマンティクスをよく知られた言語に便乗させることを検討してください。このようにして、ユーザーの学習曲線を回避できます。

于 2009-12-12T02:44:38.207 に答える