FinancialDerivativeをFinancialDataと一緒に使う方法
FinancialDataとFinancialDerivativeの関数を一緒に使うと,デリバティブの価格を求めることができます.例えば,S&P 500におけるアメリカンプットオプションの価格を計算したい場合は,指標の終値データを出します.
sp500data = FinancialData["SP500", {{2011, 1, 20}, {2011, 4, 23}}];
FinancialDataが2つ一組の数のリストを返します.それぞれのペアは,日付とその日の指標の終値を表しています.FinancialDerivativeを使って,sp500data
におけるアメリカンプットオプションの値を計算する関数を書きます.
americanPutPrice[{date_, currentPrice_}] :=
FinancialDerivative[{"American", "Put"}, {"StrikePrice" -> 1190,
"Expiration" -> {2011, 9, 20}}, {"CurrentPrice" -> currentPrice,
"Dividend" -> 0.03, "Volatility" -> 0.4, "InterestRate" -> 0.05,
"ReferenceTime" -> date}]
データに価格関数をマップすると,それぞれの日におけるオプションの価値のリストが返されます.
putPrice = Map[americanPutPrice, sp500]
しかし,このリストにはもとのデータに含まれていた日付がまったく含まれていません.RenkoChart等の金融のプロット関数は,日付がなくては使えず,入力の各要素は数のペア(最初の値が日付で,2つ目の値はアメリカンオプションの価格)でなければなりません.sp500[[All, 1]
を評価して,もとのデータソースからの日付を取り出し,これをTranspose関数を使って,オプション値のリストとインターリーブします.
Transpose[{sp500[[All, 1]], putPrice}]
RenkoChartは,これを入力として使うことができます.
RenkoChart[Transpose[{sp500[[All, 1]], putPrice}]]
[English]