こんにちは。今回はCFD(流体解析の方。差金決済取引の方ではありません)で有名なOpenFOAMを金融工学パッケージが用意されており、ブラック–ショールズ方程式を解くチュートリアルを紹介します。Mac + Homebrew環境でのセットアップから、ケース作成、実行、結果の可視化まで行います。
1. ブラック–ショールズ方程式のおさらい
ブラック–ショールズ方程式は、ヨーロッパ型オプションの価格 \(V(S,t)\)を求める偏微分方程式です:
以下の通り
$$\frac{\partial V}{\partial t} + \frac{1}{2}\sigma^2 S^2 \frac{\partial^2 V}{\partial S^2} + r S \frac{\partial V}{\partial S} – r V = 0$$
- \(s\) : 原資産価格
- \(t\) : 時間
- \(\sigma\) : ボラティリティ
- \(r\): 無リスク利子率
OpenFOAMのFinancialFoamは、この方程式を数値的に解くことができます。
2. MacでのOpenFOAM環境準備
2-1. OpenFOAMのインストール
Homebrewを使うと簡単です。
# HomebrewでOpenFOAMをインストール
brew install openfoam
これでfinancialFoamが使える状態になります。
2-2. ParaViewのインストール(可視化用)
OpenFOAMの計算結果を可視化するにはParaViewが便利です。
brew install --cask paraview
インストール後はアプリケーションフォルダから起動するか、Terminalで paraview と入力して起動します。
3. ケースディレクトリの作成
OpenFOAMは「ケースディレクトリ」にすべての設定を入れます。例として、チュートリアルれいをコピーし、「europeanCall」を作ります。
mkdir -p $FOAM_RUN #(フォルダがない初回のみ、runフォルダの作成)
cp-r $FOAM_TUTORIALS/financial/financialFoam/europeanCall/ $FOAM_RUN
run #runフォルダへ移動
ケースディレクトリには以下の3つのフォルダを作成しますが、チュートリアルそのままで構いません:
- 0/ : 初期条件
- constant/ : パラメータ(σ、rなど)
- system/ : 数値スキームや時間設定
3-1. 初期条件の設定(0ディレクトリ)
0/V に初期のオプション価格を設定します。ヨーロッパコールオプションなら次のようにします:
internalField uniform 0;
boundaryField
{
min
{
type fixedValue;
value uniform 0;
}
max
{
type fixedValue;
value uniform 100;
}
}
3-2. 金融パラメータの設定(constantディレクトリ)
constant/financialProperties に金融パラメータを記入します。
strike 40; #オプションの権利行使価格
r 0.1; #リスクフリーレート[%]
sigma 0.2; #ボラティリティ[%]
3-3. 数値スキームと時間設定(systemディレクトリ)
system/controlDict にアプリケーションや時間設定を記入します。
application financialFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 1; #時間[年]
deltaT 0.002;
writeControl timeStep;
writeInterval 50; #結果出力間隔
purgeWrite 0;
その他、fvSchemes と fvSolution も標準設定でOKです。
4. 実行
ケースが整ったら、Terminalで以下を実行します。
financialFoam
計算が進むと、時間ごとのオプション価格 \(V(S,t)\)がディレクトリに出力されます。
5. 結果の可視化
ParaViewを使うと、時間ごとのオプション価格分布を直感的に確認できます。
paraFoam
ParaView上で:
plot over lineを用いて、x軸方向を選択し、項目はVを選択- 横軸:原資産価格 \(S\)
- 縦軸:オプション価格 \(V(S,t)\)
数値的にブラック–ショールズ曲線が再現されているのが分かります。

6. まとめ
- Mac + HomebrewでOpenFOAMとParaViewを簡単にインストールできる
- FinancialFoamでブラック–ショールズ方程式を数値的に解ける
- 初期条件・金融パラメータ・数値スキームを設定するだけでシミュレーション可能
次回は「プットオプションや異なる境界条件でのリスク分析」に挑戦してみると面白いです。


コメント