BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース F# と QuantLibによる金融アプリケーションの開発

F# と QuantLibによる金融アプリケーションの開発

原文(投稿日:2013/04/26)へのリンク

QuantLibは、量的金融のモデリング、トレーディングとリスク管理用のオープンソースのライブラリでF#言語で使うことができる。QuantLibにアクセスするには、.NETコンポーネントのNQuantLib.dllとネイティブコンポーネントのNQuantLibc.dllを使わなければならない。

もし上記のライブラリファイルが利用できないなら、.libファイル、C++ソースとヘッダーファイルからそれらをからそれらを作成することができる。.libおよびヘッダファイルを取得するにはBoostをインストールする。また、BoostまたはBoostProの公式リポジトリでソースを構築することこともできる。

次のステップは、Quantlibのインストールで、.libおよびヘッダファイルをビルドする。この時Microsoft Visual C++ を使うが、公式ドキュメントに提供されている手順に従えばよい。インストール後、Quantlib-SWIGのzipファイル、 SWIGをダウンロードして、C++ラッパーファイルを生成するためにQuantLib-SWIG\CSharpディレクトリにあるswig.cmdファイルを実行する。これでVisual Studioを使用してNQuantLibc.dllとNQuantLib.dllをビルドすることができます。

Visual C++ 2012を使ってビルドしたいなら、以下のようにauto_link.hppを修正する必要がある。

auto_link.hppをオープンして以下の行を見つける。

#else
# error "unknown Microsoft compiler"

上の行の直前に以下の行を挿入する。

#elif (_MSC_VER == 1700)
# define QL_LIB_TOOLSET "vc110"

Right click on the QuantLibプロジェクトで右クリックしてプロパティを選ぶ。プロパティの構成 | 一般でターゲット名をQuantLib-vc110-mt あるいは QuantLib-vc110-mt-gdに変更する( QuantLibのリリースあるいはデバッグバージョンをビルドしているかに応じて)。

上記の回避策は、公式のMicrosoftのブログにpmcsというニックネームのF#開発者によって書かれ、製品チームによりチェックされている。

上記の手順が完了した後、参照と呼ばれるF#スクリプトディレクトリ下のディレクトリにNQuantLib.dllとNQuantLibc.dllを置く。プロジェクトを使用している場合、プロジェクトにファイルとしてNQuantLibc.dllを追加し、Newerの場合はコピーを出力へコピーに設定する。

Visual Studioを使ってF# と QuantLibで開発を始めるためにツール|オプション| F#ツール| F#インタラクティブ| 64ビットをFalseにする必要がある。またMonoDevelop, Xamarin Studioあるいは好みのテキストエディタを使うこともできる。

#I "references"
#r "NQuantLib.dll"
let date = QuantLib.Date.todaysDate()
printfn "today is: %s" (date.ISO())

上記のコード片は、F#の対話型コンソールに日付を出力する。見ての通り、我々はNQuantLib.dllを参照して、todaysDate()関数を呼んだ。

大きなプロジェクトでは、オブジェクトを適切に破棄するために、 'let'でなくキーワード 'use'も使うことができる。

use date = QuantLib.Date.todaysDate()

The F# product team led by Don Syme氏が率いるF#製品チームには、Alexandre Radicchi氏と一緒にMonoで、ライブラリファイルをコンパイルするのに必要な手順を確認し、更に欧州のコール・オプションの価格設定、日付とスケジュールなどのいくつかの追加サンプルを提供している。

Donは、QuantLibを詳しく調べることに興味をもつ人にImplementing QuantLibと題する本を薦めている。本の著者は、無料でアクセスできる全章のドラフトを提供している。

この記事に星をつける

おすすめ度
スタイル

BT