Financial Toolbox™ 機能概説書

Financial Toolbox™
機能概説書
はじめに

本内容は、Windows®環境にインストールされたMATLAB® R2010b を用いて記述され
ています。Linux/Mac環境にインストールされたMATLABとは操作環境のインタフェ
ースが若干異なりますがご了承願います。

本概説書はMATLABの関数群のひとつであるFinancial Toolbox機能の紹介を目的とし
ております。本概説書の中に投資分析手法を扱っている部分がございますが、特定の
投資手法等を推奨するものではありません。したがって本概説書を利用した結果、惹
起されるいかなる事態に対しても、著者および著者の属する組織は一切責任を負いま
せんのでご了承願います。
目次
1 Financial Toolbox の機能について .................................................................................. 1
2 金融データのチャート作成 ............................................................................................ 2
2.1 ローソク足チャート作成 ......................................................................................... 2
2.2 高値−安値−終値チャート(High-Low-Close Chart)作成 ............................................ 3
2.3 ボリンジャーバンドチャート作成 ........................................................................... 5
3 キャッシュフローの分析と計算 ..................................................................................... 7
3.1 プロジェクト評価 .................................................................................................... 7
3.2 減価償却 ................................................................................................................ 10
3.3 年金(アニュイティ) .............................................................................................. 14
4 確定利付証券のプライシングと利回りの計算 .............................................................. 19
4.1 債券価格と利回りの計算 ....................................................................................... 19
4.2 感応度分析 ............................................................................................................. 21
4.3 ALM(資産と負債の総合管理)の考え方 .................................................................. 26
4.4 イミュニゼーション .............................................................................................. 28
5 株式デリバティブのプライシングと分析 ..................................................................... 30
5.1 オプションの損益図の作成 .................................................................................... 30
5.2 ブラック-ショールズ・モデル .............................................................................. 31
5.3 オプションの感応度分析(グリークス) .................................................................. 34
5.4 二項モデル ............................................................................................................. 45
6 GARCH 過程 ................................................................................................................ 46
7 ポートフォリオ分析 ..................................................................................................... 56
7.1 有効フロンティア .................................................................................................. 56
7.2 最適資産配分 ......................................................................................................... 60
7.3 制約条件付き資産配分 ........................................................................................... 62
7.4 VaR(バリュー・アット・リスク) ........................................................................... 65
8 金融統計 ...................................................................................................................... 71
9 Financial Time Series Object について .......................................................................... 75
9.1 Financial Time Series Object ................................................................................... 75
9.2 Financial Time Series Object の操作 ....................................................................... 78
10 テクニカル分析 .......................................................................................................... 82
10.1 MACD (移動平均収束発散法) .............................................................................. 82
10.2 ウィリアムスのパーセント・アール(W%R) ......................................................... 84
10.3 RSI ........................................................................................................................ 88
10.4 OBV(オン・バランス・ボリューム) ..................................................................... 91
11 データ操作 ................................................................................................................. 95
11.1 階差 ...................................................................................................................... 95
11.2 ボックス-コックス(Box-Cox)変換 ......................................................................... 97
11.3 移動平均 ............................................................................................................. 100
12 GUI 機能の活用 ........................................................................................................ 103
付録 A. 祝日データのインポート .................................................................................. 109
付録 B. 日付計算基準(デイカウント方式)の一覧 .......................................................... 110
付録 C. 関数一覧 ............................................................................................................ 111
[参考文献] .................................................................................................................... 122
1 Financial Toolboxの機能について
Financial Toolbox は、ファイナンス・金融工学で用いられる数理・統計分析のための計
算環境、および計算結果をグラフ化する環境を提供します。
Financial Toolboxでは、以下の分析ツールを用意しており利用可能です。
・ 債券、デリバティブ、その他の有価証券、ならびにポートフォリオに対する価
格、利回り、感応度の計算と分析
・ Securities Industry Association(SIA)準拠の確定利付証券の価格付け、利回り、感
応度分析
・ ポートフォリオ分析とマネジメント
・ ヘッジ戦略の立案と評価
・ リスクの認識、測定、管理
・ 収益率および減価償却を含むキャッシュフローの分析と計算
・ 経済活動の分析と予測
・ 外国為替商品を含む仕組み金融商品(structured financial instruments)の開発
・ 教育および学術研究
本概説書では例題をいくつかとりあげ、Financial Toolboxの機能の一部をご紹介いたしま
す。
1
2 金融データのチャート作成
株価の動きをグラフ化したものをチャートと呼びますが、Financial Toolbox を利用する
ことにより、より早く簡単にチャートを作成することができます。以下にチャートの作成
例を示します。
2.1 ローソク足チャート作成
チャートの中でも代表的なものがローソク足です。ローソク足という名称は、ある期間
の株価の動きをローソクのようなもので表すことからきています。ローソク足チャートを
見ることによりある特定期間の「始値」「高値」「安値」「終値」が分かります。
「始値」
「高値」
「安値」
「終値」をそれぞれ縦ベクトルで用意し、ローソク足チャートを
作成する関数、candle を実行し、チャート作成を行います。
>> Open
= [ 3960; 3910; 3860; 3900; 3920; 3930; 3940; 3910; 3960; 3920];
>> High
= [ 3980; 3940; 3900; 3910; 3940; 3940; 3970; 3920; 3960; 3950];
>> Low
= [ 3950; 3910; 3860; 3870; 3910; 3920; 3930; 3900; 3920; 3920];
>> Close = [ 3970; 3920; 3890; 3880; 3940; 3940; 3960; 3920; 3930; 3950];
>>
>> candle(High, Low, Close, Open, 'black'); % キャンドルチャート作成
>> xlim([0, 11]); % 横軸の調整
>> ylim([3850, 3990]); % 縦軸の調整
>> ylabel('株価(¥)'); % 縦軸にラベルの書き込み
>> title('ローソク足(日足)'); % タイトルの書き込み
2
図 2.1
2.2 高値−安値−終値チャート(High-Low-Close Chart)作成
「高値」「安値」「終値」のチャートを描きます。高値−安値−終値チャートを描く関数、
highlow を使用してグラフを描きます。
3
figure; % 新規Figureウィンドウの表示
highlow(High, Low, Close); % 高値-安値-終値チャートの作成
xlim([0, 11]);
ylim([3850, 3990]);
座標軸の目盛りを
>> ylabel('株価(¥)');
日付に変更する関
>> title('A社の株価変動');
>> dateaxis('x', 6, '12/01');
数 dateaxis
>>
>>
>>
>>
図 2.2
4
2.3 ボリンジャーバンドチャート作成
ボリンジャーバンドを描く関数 bolling を使用してグラフを描きます。ボリンジャー
バンドとは真中に中心線(下の例では 15 日移動平均線)を描き、上下に第 2 標準偏差線を描
きます。第 2 標準偏差線の中に 95%の確率で日々の終値が入る、というものです。バンド(帯)
が広いところと、狭いところで、前者はボラティリティが高く、後者はボラティリティが
低いということを意味します。
>> ibm = importdata('ibm.dat'); % サンプル用の株価データの読み込み
>>
>> figure;
>> bolling(ibm(:,4), 15); % ボリンジャーバンドチャートを作成
>> xlim([0, length(ibm(:,4))]);
>> ylim([min(ibm(:,4)), max(ibm(:,4))]);
>> ylabel('株価($)');
>> title('IBMのボリンジャーバンドチャート');
>> dateaxis('x', 6, '12/31');
ピリオドを3つ置くと
Enter キーを押しても
実行されません。
>> legend('原系列', '15日移動平均線', '第2標準偏差線', 'Location',
'NorthWest'); % 凡例の挿入
5
...
図 2.3
6
3 キャッシュフローの分析と計算
キャッシュフローの評価と金融会計に関する関数は、金利、収益率、および年金(annuity)
に関連する支払い、将来価値および現在価値、減価償却の計算等、キャッシュフローに関
する標準的計算を行います。
ここでは例題として、樹木を育成し後に板材として売るビジネスのプロジェクト評価、
固定資産会計の減価償却、住宅ローンの返済問題について取り上げ、キャッシュフローの
分析と計算に関する関数をご紹介します。
3.1 プロジェクト評価
プロジェクトや企業の価値評価の基本は、将来発生するキャッシュフローを評価するこ
とです。そして多様なキャッシュフローの流列を評価した上で投資対象を選択することに
なります。実際にいくつか異なるキャッシュフローの評価方法が使われていますが、ここ
では下の例題をとりあげ、もっともよく使われている NPV(現在価値)と IRR(内部収益率)
による方法の2つを扱います。
【例題 3.1】
樹木を育成し後に板材として販売するプロジェクトを考えます。初年度(第0年度)
に初期費用がかかり、後は樹木が伐採されるまでキャッシュフローは発生しません。
樹木の伐採は 1 年後もしくは 2 年後かを決めることができます。1 年後にすぐ伐採す
るならば、すぐに収益を得ることができます。しかしもう 1 年待てば、樹木はさら
に成長して得られる収益はより大きくなります。この 2 つの案に関するキャッシュ
フロー流列は以下のようになると仮定します。
(A) (-1000, 2000):1 年後に伐採する。
(B) (-1000, 0, 3000):2 年後に伐採する。
この 2 つのプロジェクトのうちどちらを採択するべきでしょうか?
7
1) NPV(現在価値)
NPV は、以下の式で計算されます。
NPV  Investment 
cf n
cf 1
cf 2


2
(1  r ) (1  r )
(1  r ) n
ここで、Investment は初期投資額(キャッシュアウトフロー)、 cf n は第 n 期の収益(キャッ
シュインフロー)、r は金利です。NPV 基準とは検討するプロジェクトの NPV を計算し、
NPV が最大になるプロジェクトに投資を行うべきという考え方です。
では例題のプロジェクト評価を行いましょう。金利を 10%として計算します。Financial
Toolbox の関数 pvvar を使用し、NPV を計算します。
以下のコマンドを実行します。
>> CashFlowA = [-1000, 2000];
>> CashFlowB = [-1000, 0, 3000];
>> r = 0.1; % 利率
>>
>> NPVA = pvvar( CashFlow A, r) % キャッシュフローから現在価値を計算
NPVA =
818.1818
>>
>> NPVB = pvvar( CashFlow B, r)
NPVB =
1.4793e+003
プロジェクト(A)に投資した場合の NPV は「818.2」、プロジェクト(B)に投資した場
合は「1479.3」と出力されました。よって NPV 基準ではプロジェクト(B)の採択が推奨
されます。
8
2) IRR(内部収益率)
IRR とは、キャッシュフローの現在価値と初期投資額を一致させる割引率のことです。
数式で表すと以下の方程式を満足する r のことです。
Investment 
cf n
cf 1
cf 2


0
2
(1  r ) (1  r )
(1  r ) n
ここで、Investment は初期投資額(キャッシュアウトフロー)、cf n は第 n 期の収益(キャッシ
ュインフロー)です。IRR 基準とは検討するプロジェクトの内部収益率を計算し、内部収益
率が最大となるプロジェクトに投資を行うべきという考え方です。
内部収益率の計算は、Financial Toolbox の関数 irr を使用すれば以下のように簡単に計算
できます。
以下のコマンドを実行します。
>> IRRA=irr(CashFlowA) % キャッシュフローから内部収益率を算出
IRRA =
1
>> IRRB=irr(CashFlowB)
IRRB =
0.7321
プロジェクト(A)に投資した場合の内部収益率は「1」、プロジェクト(B)に投資した場合は
「0.7321」と出力されました。よって IRR 基準ではプロジェクト(A)の採択を推奨するこ
とになります。
9
3.2 減価償却
固定資産の減価償却について企業が有する主な選択肢は、有形固定資産の償却について
は定額法または定率法のいずれかで行うというものです。これら以外にも級数法や生産高
比例法といった方法もありますが適用例は尐ないのが現状です。無形固定資産については
定額法が広く採用されています。よって、ここでは次の例題に基づき定額法と定率法によ
る減価償却について扱いたいと思います。
【例題 3.2】
第 1 年度の期首に 100 万円で取得した機械について、残存価格が取得原価の 10%、
耐用年数が 5 年として減価償却を行う。減価償却スケジュールを示しなさい。
定額法による毎年の減価償却費は、[(取得原価-残存価格)÷耐用年数]となります。上
記例題に当てはめると取得原価 100 万円から残存価格 10 万円を除いた要償却費 90 万円を
耐用年数 5 年間で均等に償却していくことになるので、毎年の減価償却費は 18 万円となり
ます。
定率法は[期首の未償却残高×一定率]として算定した額を各期の減価償却費とするもの
です。耐用年数を n とすれば一定率は
1
 残存価格  n
1 

 取得価格 
となります。上記例題において一定率は 0.369 となります。
減価償却額の計算には、定額法には depstln、定率法には depfixdb を使用します。以
下のように入力します。
10
1) 定額法
>> Cost = 1e6;
>> Salvage = Cost * 0.1;
>> Depreciation = depstln(Cost, Salvage, 5) % 定額法で減価償却費を計算
Depreciation =
180000
>> DepreciationStream = Depreciation * ones(5,1);
>> bar(1:5, DepreciationStream); % 棒グラフのを作図
>> hold on %グラフの上書きモードを宣言
>> plot(0:5, Depreciation*[0:5], '--k');
>> grid on % グリッドの表示
>> plot(0:5, Cost - Depreciation*[0:5], ':r');
>> xlabel('年度');
>> ylabel('金額');
>> title('定額法');
>> legend('減価償却費', '減価償却累計額', '未償却残高', 'Location', 'East');
>> hold off %グラフの上書きモード解除
11
図 3.1
2) 定率法
>> clear all % ワークスペース上の全ての変数をクリア
>>
>> Cost = 1e6;
>> Salvage = Cost * 0.1;
>> Depreciation = depfixdb(Cost, Salvage, 5, 5) % 定率法で減価償却費を計算
Depreciation =
1.0e+005 *
3.6904
2.3285
1.4692
0.9270
0.5849
>>
>> bar(1:5, Depreciation);
>> hold on
>> plot(0:5, [0, cumsum(Depreciation)], '--k');
12
>> grid on
>> plot(0:5, [Cost, Cost - cumsum(Depreciation)], ':r');
>> xlabel('年度');
>> ylabel('金額');
>> title('定率法');
>> legend('減価償却費', '減価償却累計額', '未償却残高', 'Location', 'East');
>> hold off
図 3.2
表にまとめると、およそ以下のようになります。
13
表 3.1
【単位:千円】
定額法
年度
減価
減価償却
未償却
償却費
累計額
残高
1
180
180
820
2
180
360
640
3
180
540
460
4
180
720
280
5
180
900
100
(注)千円未満は四捨五入して表示
減価
償却費
369
233
147
93
58
定率法
減価償却
累計額
369
602
749
841
900
未償却
残高
631
398
252
159
100
3.3 年金(アニュイティ)
ファイナンスでは積立預金やローンの返済等にみられるような、毎年一定額のキャッシ
ュフローが発生するものをアニュイティ(annuity、年金)と呼びます。ここでは、ローンを
返済する問題を考え、アニュイティに関する関数を紹介いたします。
【例題 3.3】
住宅を購入するのに 20,000,000 円を借りる必要がある。A 銀行からは 30 年、毎月
返済のローンが借りられるとする。もし金利が年率 12%(月利 1%)であるならば毎月の
返済額はいくらになるか。ただし、返済方法は元利均等返済方式とする。
また、B 銀行が 15 年の毎月 220,000 円返済のローンを貸してくれるとすれば、どちら
が得か?
元本(借入金残高)を y、毎月の返済額を p、毎回の金利を r、支払い回数を n とし、y[i]
を i 回支払いを終えた時の借入金残高とすると、毎月の返済額は以下のように計算されま
す。
1回支払いを終えた時点の借入金残高は、y[0]から支払額 p を引いたものに、利息 y[0]×r
14
を足したものになります。式に表わすと以下のようになります。
y1  y0   p  y0 r 
 1  r y0  p
2 回目の支払を終えた時点の借入金残高は同じように計算すると以下のようになります。
y2  1  r y1  p
右辺の y[1]に先ほど求めた y[1]を代入すると以下のようになります。
y2  1  r y1  p
 1  r 1  r  y0  p  p
 1  r  y0  1  r  * p  p
2
 1  r  y0  p1  1  r 
2
同じような計算を繰り返すと、以下の式を得ます。
yn  1  r  y0  p * S 1  r , n
n
・・・ (3,1)
ここで、 S 1  r , n  1  1  r   1  r     1  r 
2
n 1
S 1 r , n は等比級数の和なので、以下のように計算されます。
n

1 r 1
S 1  r , n  
r
これを式(3,1)に代入すると以下を得ます。
n

1 r 1
yn  1  r  y0  p *
n
r
15
ここで y[n]は、n 回支払った後の借入金残高となります。n 回支払っているので y[n]は 0
でなければなりません。
n

1 r 1
1  r  y0  p *
0
n
r
p について解けば毎月の支払額が求まります。
n

1 r  r
p
* y0
1  r n  1
それでは例題 3.3 のロ ーンの返済額を求めま しょう。 毎期の支払額 を出力する関数
amortize を使用します。支払額を計算するためには以下のように入力します。
>> RateA = 0.12/12;
>> NumPeriods = 30*12;
>> PV = 2e7;
>> [Principal, Interest, Balance, Payment] = amortize(RateA, ...
NumPeriods, PV);
>> Payment
Payment =
2.0572e+005
よって、月々の返済額は 205,720 円となります。
また、返済スケジュールをグラフ化するためには、次のように入力します。
>> plot([1, NumPeriods], [Payment, Payment],'k', 'LineWidth', 2);
>> hold on
>> fill([1:NumPeriods, NumPeriods, 1], [Principal, 0, 0], 'b');
>> fill([1:NumPeriods, NumPeriods, 1], ...
[Principal, Payment, Payment], 'r');
>> plot(Principal, '--k', 'LineWidth', 2);
16
指定された領域内を
塗りつぶす fill
>> xlim([0, NumPeriods]);
>> text(250, 30000, '元金', 'FontSize', 12, 'Color', 'white');
>> text(100, 100000, '利子', 'FontSize', 12, 'Color', 'white');
>> xlabel('Payment Month');
グラフ内に文字を
挿入する text
>> ylabel('円')
>> hold off
図 3.3
次に A 銀行と B 銀行どちらを選択すべきか調べます。
A 銀行から借入れを行うと、月支払いが 205,720 円、B 銀行だと 220,000 円なので一見 A
銀行の方が得に見えます。しかし、B 銀行の利子率を調べると B 銀行の方が得だというこ
とが分かります。実際に、B 銀行の貸出条件の利子率を調べます。関数 annurate を使用
します。次のように入力します。
17
>> Rate = annurate(15*12, 220000, PV)
Rate =
0.0087
>> Rate*12
ans =
0.1041
月当たりの利子率が 0.87%、年利 10.41%となります。よって支払能力に余力があるならば、
B 銀行からの借入れも検討の対象となるでしょう。
A 銀行から借入れを行った場合の返済総額は 74,059,200 円、B 銀行の場合は 39,600,000
円となり、A 銀行から借入れを行った場合の支払い総額は B 銀行の場合の支払い総額の二
倍弱になります。
18
4 確定利付証券のプライシングと利回りの計算
The Securities Industry Association(SIA)は、証券の価格付け、利回り計算、相場、時間係
数や経過利子、クーポンとみなしクーポン日付、デュレーション、コンベクシティ感応度
に関する慣例を設定しています。 Financial Toolbox は、確定利付証券の経過利子を計算し、
価格と利回りを決定し、コンベクシティとデュレーションを計算する SIA 準拠の関数を
用意しています。また、金利の期間構造を生成し、分析する関数群を含みます。
4.1 債券価格と利回りの計算
以下の条件の債券価格を計算します。Financial Toolbox の利付債の価格を計算する関数
bndprice を使用します。関数 bndprice は初回利払日を考慮するなど複雑な条件の場合
の債券価格を計算することが可能です。以下で例題を実行してみます。
[債券価格の計算]
>> Settle = '11-Nov-1992'; % 受渡日
>> Maturity = '01-Mar-2005'; % 償還日
>> IssueDate = '15-Oct-1992'; % 発行日
>> FirstCouponDate = '01-Mar-1993'; % 最初のクーポン支払日
>> CouponRate = 0.0785; % クーポン・レート
>> Yield = 0.0625; % 利回り(半年複利)
>> Period = 2; % 利払回数
>> Basis = 1; % 30/360 (SIA) 日付計算基準指定
>> [Price, AccruedInt] = bndprice(Yield, CouponRate, Settle, ...
Maturity, Period, Basis, [], IssueDate, FirstCouponDate)
Price =
113.6111
AccruedInt =
0.5669
19
債券価格は、113.61、経過利子 0.57 を出力します。
次に、債券価格は分かっているが利回りが分からないという場合を考えます。利回りを求
める関数 bndyield を使用します。
[利回りの計算]
>> Yield = bndyield(Price, CouponRate, Settle, Maturity, ...
Period, Basis, [], IssueDate, FirstCouponDate)
Yield =
0.0625
最終複利利回りが 6.25%と出力されます。これは債券価格を求めるときに指定した利回り
6.25%と同一となります。
この他にも Financial Toolbox には、財務省証券の価格やゼロクーポン債のような割引有
価証券の価格を計算する関数が用意されています。
20
4.2 感応度分析
債券価格 P はクーポン・レートを C、額面価格を F とすると、利付債の価格利回り y の
関数として以下の式で表わされます。
P y  
C
C
CF


2
1  y  1  y 
1  y n
この式を y で微分すると、
dP
1  n
kC
nF 
 



k
1  y   k 1 1  y  1  y n 
dy
と、なります。これで利回りが動いたときに債券価格がどの程度動くかが分かります。符
合がマイナスとなっているのは金利と債券価格は逆方向に動くことを示しています。
(マコーレー・)デュレーションは、以下の式で定義されます。
n
D
kC
 1  y 
k 1
k

nF
1  y n
P( y )
デュレーション D は、キャッシュフローの時間の加重平均となっています。デュレーショ
ンは時間の単位で、たとえば「年」となります。
デュレーションによる近似を用いて利回りの変化と債券価格の変化の関係を導出すると、
P P y
y

 D 
P
y P
1 y
となります。また、修正デュレーションは、以下の式で定義されます。
21
Dmod 
D
1 y
修正デュレーションによる近似を用いて利回りの変化と債券価格の変化の関係を導出する
と、
P P y

  Dmod  y
P
y P
となります。
【例題 4.1】
受渡日 2000 年 1 月 12 日、償還日 2001 年 10 月 1 日、クーポン・レート 5%(年 2 回
利払い)、利回り 4.5%の債券のデュレーションを計算せよ。また、計算したデュレーシ
ョンを使用し、利回りが 3.5%に低下した場合の債券価格を求めよ。
デュレーションを求める関数 bnddury を使用することにより簡単に計算できます。以下
のように入力します。
>> Settle = '12-Jan-2000';
>> Maturity = '01-Oct-2001';
>> CouponRate = 0.05;
>> Yield = 0.045;
>> Basis = 0; % actual/actual
>> Period = 2;
>>
>> Price = bndprice(Yield, CouponRate, Settle, Maturity, Period, Basis);
Price =
100.8112
>>
>>
>>
22
>> [ModDuration, YearDuration, PerDuration] = bnddury(Yield, ...
CouponRate, Settle, Maturity, Period, Basis)
ModDuration =
1.6107
YearDuration =
1.6470
PerDuration =
3.2940
出力結果は上から、修正デュレーション、デュレーション、半年ベースで報告される期間
単位のデュレーションとなります。半年ベースデュレーション(PerDuration)は、年率換算
されたデュレーション(YearDuration)の倍であることに注意してください。
よって、利回り1%低下時の価格変化率と債券価格は、
>> change1 = -YearDuration * (-0.01) / (1+Yield) % 価格変化率
change1 =
0.0158
>>
>> newPrice1 = Price * (1 + change1) % 債券価格
newPrice1 =
102.4001
102.4001 となります。一方、実際の債券価格は、
>> newPrice = bndprice(Yield-0.01, CouponRate, Settle, Maturity, ...
Period, Basis) % 利回りを1%下げて債券価格を算出
23
newPrice =
102.4755
102.4755 となります。
デュレーションは微分を用いて利回りの変化による債券価格の変化を直線で近似してい
るため、利回りの変化が大きくなると誤差が発生します。誤差を小さくするためにデュレ
ーションと共に用いられるのがコンベクシティです。
コンベクシティ(Convexity)とはデュレーションを利回り y で微分(債券価格 P(y)を利回
り y で 2 階微分)し、P(y)で割ることによって求めることができます。
P y  の2階微分は、
 n k k  1C nn  1F 
 


k
1  y n 
 k 1 1  y 
d 2P
1

2
dy
1  y 2
よってコンベクシティ Cv は以下の式で定義されます。
n
k k  1C
 1  y 
Cv 
k 1
k

nn  1F
1  y n
P

1
1  y 2
では、2階微分のコンベクシティまで考慮した利回りの変化と価格変動の関係を導出しま
す。
P' y
P ''  y 
y 2
P y  y   P y  
y 
1!
2!
P  y  y   P  y   P '  y y 
P ''  y 
y 2
2!
P
1
2
  Dm o 
Cv y 
d y 
P
2
24
(テーラー展開)
【例題 4.2】
例題 4.1 を条件とした債券のコンベクシティを計算せよ。また、デュレーションと
コンベクシティを使って利回りが 3.5%に下落した場合の債券価格および価格変化率
を計算せよ。
コンベクシティは、関数 bndconvy で求めることができます。以下のように入力します。
>> [YearConvexity, PerConvexity] = bndconvy(Yield, CouponRate, ...
Settle, Maturity, Period, Basis)
YearConvexity =
3.4575
PerConvexity =
13.8301
価格変化率は上記公式より、
>> change2 = -ModDuration*(-0.01) + 0.5*YearConvexity*(-0.01)^2
change2 =
0.0163
よって利回り変化による新しい価格は、
>> newPrice2 = Price * (1 + change2)
newPrice =
102.4525
となり、デュレーションのみ考慮した価格よりも精度が高くなっていることが分かります。
25
4.3 ALM(資産と負債の総合管理)の考え方
銀行は預金などで調達した資金を、貸付や有価証券を購入し運用することにより利益を
得ています。保険会社や事業会社でも同様です。確定給付型の年金制度でも将来の年金給
付を賄うように年金資産を運用する必要があります。資産面と負債面の両方の観点から総
合的に考慮・管理することにより損失を最小化し、利益を最大化しようとすることを
ALM(資産と負債の総合管理)といいます。
狭義の ALM は、金利リスクの管理のことを指し、企業や金融機関において必要不可欠
な手法として定着しています。ALM を考慮しないで資産運用をおこなったとき、金利が低
下するとどのようなことが起こるのかを例題を通して見ましょう。
【例題 4.3】
利回り 6%、デュレーション 5 年の確定利付証券を 5000、利回り(金利)4%、デュレー
ション 25 年の保険債務 4000 のバランスシートを持つ A 生保を考える(自己資本は
1000)。不況のため利回りがそれぞれ 3%低下しました。A 生保のバランスシートはど
のようになるか?
資産の価値変化率と資産は、
>> changeAsset = -5 * (-0.03) / (1 + 0.06)
changeAsset =
0.1415
>> newPriceAsset = 5000 * (1 + changeAsset)
newPriceAsset =
5.7075e+003
26
およそ 5,708 となります。一方、負債の価値変化率と負債は、
>> changeLiability = -25 * (-0.03) / (1 + 0.04)
changeLiability =
0.7212
>> newPriceLiability = 4000 * (1 + changeLiability)
newPriceLiability =
6.8846e+003
およそ 6,885 となります。
利回りの低下によって資産、負債とも増加しましたがデュレーションの違いから負債の
ほうが大きく膨らむ、という結果になります。
27
4.4 イミュニゼーション
ここで利回り変化のリスクから防御をする債券ポートフォリオを構築する問題を考えま
す。この手続きは、イミュニゼーションと呼ばれます。
【例題 4.4】
B 生保はデュレーション 10.3181、コンベクシティ 157.6346 の構造をもつ保険債務
を 100,000 抱えているとする。B 生保はこの債務の支払いに備えて投資したいと考え
ている。現在投資可能な債券は以下の3種類であるとし、保険債務をイミュナイズ
するような投資方法を求めよ。債券の取得日を 1999 年 8 月 19 日とする。
クーポン・レート
債券 1
債券 2
債券 3
Step1
償還日
額面価格
500
1000
250
7.00%
6.60%
8.00%
2005 年 6 月 15 日
2010 年 10 月 2 日
2025 年 3 月 14 日
債券の条件を入力します。
>> Settle = '19-Aug-1999';
>> Maturity = ['15-Jun-2005'; '02-Oct-2010'; '14-Mar-2025'];
>> Face = [500; 1000; 250];
>> CouponRate = [0.07; 0.066; 0.08];
>> Yield = [0.06; 0.07; 0.075];
Step2
3 証券の債券価格、デュレーション、コンベクシティを求めます。
>> [CleanPrice, AccruedInterest] = bndprice(Yield, CouponRate, ...
Settle, Maturity, 'Face', Face);
>> DirtyPrice = CleanPrice + AccruedInterest;
>> Duration
= bnddury(Yield, CouponRate, Settle, Maturity, ...
'Face', Face);
>> Convexity = bndconvy(Yield, CouponRate, Settle, Maturity, ...
'Face', Face);
28
Step3 保険債務のデュレーション・コンベクシティと一致するような 3 証券への投資割
合を求める。
>> A = [Duration.'; Convexity.'; ones(1,3)];
>> b = [10.3181, 157.6364, 1].';
>> Weight = A¥b;
Step4
ポートフォリオのデュレーション・コンベクシティを求める。
>> PortfolioDuration
= Weight.' * Duration
PortfolioDuration =
10.3181
>>
>> PortfolioConvexity = Weight.' * Convexity
PortfolioConvexity =
157.6364
Step5
求めるポートフォリオの債券数を算出する。
>> PortfolioValue = 1e5;
HedgeAmount = Weight ./ DirtyPrice * PortfolioValue
HedgeAmount =
-56.4014
71.3582
216.2038
以上より、債券 1 を 56.40 枚ショート、債券 2 を 71.36 枚ロング、債券 3 を 216.20 枚ロン
グすることにより、保険債務をイミュナイズすることが可能になることが分かります。
29
5 株式デリバティブのプライシングと分析
Financial Toolbox はオプションの損益の計算、ブラック-ショールズ・モデルにもとづく
オプション価格の計算、感応度分析(グリークス)のための関数、および二項モデルに基づ
くオプション評価のための関数を備えています。
5.1 オプションの損益図の作成
【例題 5.1】
株式を原資産とする行使価格 3000、プレミアム 100 のオプションについて考えま
す。原資産価格によって以下のオプションポジションをとっている場合、どのように
損益が変化するか損益図を作成しなさい。
1
2
3
4
コールオプションの買い
コールオプションの売り
プットオプションの買い
プットオプションの売り
Financial Toolbox の関数 opprofit を利用して、以下のように入力します。
>> S = 0:5000;
>> subplot(2,2,1); % 座標軸は2×2に配置し、左上に作図
>> Profit = opprofit(S, 3000, 100, 0, 0);
>> plot(S, Profit); grid on;
>> xlim([0, 5000]); xlabel('原資産価格(¥)');
>> ylabel('payoff'); title('コールオプションの買い');
>> subplot(2,2,2); % 右上の座標軸に作図
>> Profit = opprofit(S, 3000, 100, 1, 0);
>> plot(S, Profit); grid on;
>> xlim([0, 5000]); xlabel('原資産価格(¥)');
>> ylabel('payoff'); title('コールオプションの売り');
>> subplot(2,2,3); % 左下の座標軸に作図
>> Profit = opprofit(S, 3000, 100, 0, 1);
>> plot(S, Profit); grid on;
30
>> xlim([0, 5000]); xlabel('原資産価格(¥)');
>> ylabel('payoff'); title('プットオプションの買い');
>> subplot(2,2,4); % 右下の座標軸に作図
>> Profit = opprofit(S, 3000, 100, 1, 1);
>> plot(S, Profit); grid on;
>> xlim([0, 5000]); xlabel('原資産価格(¥)');
>> ylabel('payoff'); title('プットオプションの売り');
図 5.1
5.2 ブラック-ショールズ・モデル
オプション評価理論の中でもっとも有名なモデルはブラック-ショールズ・モデルです。
Financial Toolbox の関数 blsprice はブラック-ショールズ・モデルに基づくオプションの
31
価格を出力します。
ブラック-ショールズ・モデルの公式は次のとおりです。
C   d1 S 0   d 2 Ke  rT
P    d 2 Ke rT    d1 S 0
d1 
ln S K   r   2 2 T
 T
d 2  d1   T
ここで、各パラメータの意味は以下のとおり。
C :コールの価格
P :プットの価格
S0 :原資産価格
K :行使価格
r :無リスク金利
T :オプションの満期までの期間(年換算)
σ :原資産のボラティリティ
Φ(d):標準正規分布の分布関数
【例題 5.2】
現在の株価 17000、残存期間 1 ヶ月、行使価格 17500、無リスク利子率 0.4%、ボラ
ティリティを 25.3%(年率)とした場合の、コールオプションとプットオプションの価
格はいくらになるか?また、株価によってオプション価格がどのように変化するのか
を図示しなさい。
1)オプション価格の計算
>> [Call, Put] = blsprice(17000, 17500, 0.004, 1/12, 0.253)
Call =
293.4860
32
Put =
787.6536
2)グラフの作成
>> S0 = 12000:22000;
>> [Call, Put] = blsprice(S0, 17500, 0.004, 1/12, 0.253);
>> subplot(2,1,1);
>> plot(S0, Call);grid on;
>> xlabel('原資産価格(¥)');ylabel('call option');
>> title('コールオプションの価格');
>> subplot(2,1,2);
>> plot(S0, Put);grid on;
>> xlabel('原資産価格(¥)');ylabel('put option');
>> title('プットオプションの価格');
図 5.2
33
次に、オプション価格からインプライド・ボラティリティを求めます。この時は、blsimpv
関数を使用します。
【例題 5.3】
現在の株価 17000、残存期間 1 ヶ月、行使価格 17500、無リスク利子率 0.4%、コール
オプションの価格が 293.49 の時のインプライド・ボラティリティはいくつか?
>> Volatility = blsimpv(17000, 17500, 0.004, 1/12, 293.49, ...
[], [], [], {'Call'})
Volatility =
0.2530
このように、例題 5.2 にて算出されたコール・オプションの値を指定すれば、問題に登場
したボラティリティの値と一致することが分かります。
5.3 オプションの感応度分析(グリークス)
オプション価格の各種感応度は、通常ギリシャ文字を用いて表わされます。ここでは、
Financial Toolbox に用意されている、オプション価格の、原資産価格 S0 の変化に対する
感応度デルタ(Δ)、さらにその 2 階の感応度ガンマ(Γ)、時間 T の変化に対する感応度
セータ(Θ)、ボラティリティの σ の変化に対する感応度ベガ(κ)、金利 r の変化に対する
感応度ロー(ρ)を分析する関数を紹介します。
【例題 5.4】
例題 5.2 の条件の株式オプションの感応度分析を行いなさい。
1) デルタ(Δ)
デルタとは原資産価格の変化に対するそのオプションのプレミアムの感応度を表わしま
す。たとえばあるオプションのデルタが 0.7 とは、原資産価格が 1%動いた場合コールオプ
34
ションが 0.7%動くことを意味しています。
デルタは上記ブラック-ショールズ公式を原資産価格 S0 で微分することによって求めるこ
とができ、以下のように定義されます。
コール:Δ call= Φ( d 1 )
プット:Δ put= Φ( d 1 )-1
では実際に分析してみましょう。デルタを出力するには、関数 blsdelta を使用します。
>> [CallDelta, PutDelta] = blsdelta(17000, 17500, 0.004, 1/12, 0.253)
CallDelta =
0.3610
PutDelta =
-0.6390
株価水準によってデルタはどのように変化するのかを見てみましょう。以下のようにコマ
ンドを入力します。
>> S0 = 12000:22000;
>> [CallDelta, PutDelta] = blsdelta(S0, 17500, 0.004, 1/12, 0.253, 0);
>> plot(S0, CallDelta);grid on;hold on;
>> plot(S0, PutDelta,'r'); grid on;
>> legend('CallDelta', 'PutDelta', 'Location', 'NorthWest');
>> xlabel('原資産価格(¥)');ylabel('delta');
>> title('原資産価格とデルタの関係')
>> hold off
35
図 5.3
デルタは原資産価格の変化に対するオプション価格の感応度を表わしています。このた
め、オプションを 1 単位のロングポジションに対して、原資産を Δ 単位ショートすること
で価格変動リスクをなくすことができます。この考え方をデルタ・ヘッジと呼びます。
たとえばある投資家が 100 円で、デルタが 0.5 の株式コールオプションを 30 単位ロング
しているとします。オプション 30 単位で 3000 株が買えるものとすると、この投資家は 1500
株の株式をショートすることで株式の価格変化に対するオプションの価格変動リスクをヘ
ッジできることになります。
2) ガンマ(Γ)
ガンマとは原資産価格の価格変化に対するそのオプションのデルタの感応度を表わしま
す。ガンマは以下のようになります。
36

' d1 
S 0 T
ガンマを出力するには、関数 blsgamma を使用します。
>> Gamma = blsgamma(17000, 17500, 0.004, 1/12, 0.253)
Gamma =
3.0161e-004
株価水準によるガンマを見るには以下のように入力します。
>> S0 = 12000:22000;
>> Gamma = blsgamma(S0, 17500, 0.004, 1/12, 0.253);
>> plot(S0, Gamma); grid on;
>> xlabel('原資産価格(¥)');ylabel('gamma');
>> title('原資産価格とガンマの関係');
37
図 5.4
3) セータ(Θ)
セータとは時間の変化に対するそのオプション価格の感応度を表わします。セータは以
下のように表わされます。
S 0 ' d1 
 rKe  rT  d 2 
2 T
S  ' d1 
プット: put   0
 rKe  rT   d 2 
2 T
コール: call  
セータを出力するには、関数 blstheta を使用します。
38
>> [CallTheta, PutTheta] = blstheta(17000, 17500, 0.004, 1/12, 0.253)
CallTheta =
-2.8130e+003
PutTheta =
-2.7430e+003
株価水準とセータの関係を見るには、以下のコマンドを入力します。
>> S0 = 12000:22000;
>> [CallTheta, PutTheta] = blstheta(S0, 17500, 0.004, 1/12, 0.253, 0);
>> plot(S0,CallTheta); grid on; hold on;
>> plot(S0,PutTheta,'r');
>> legend('CallTheta','PutTheta');
>> xlabel('原資産価格(¥)');ylabel('theta');
>> title('原資産価格とセータの関係');
>> hold off;
39
図 5.5
4)ロー(ρ)
ローとは無リスク利子率の変化に対するそのオプション価格の感応度を表わします。ロ
ーは以下の式で表わされます。
コール:rhocall  KTe  rT  d 2 
プット:rho put   KTe  rT   d 2 
ローを出力する関数 blsrho を使用します。
>> [CallRho, PutRho] = blsrho(17000, 17500, 1/12, 1/12, 0.253)
CallRho =
532.3095
40
PutRho =
-915.9316
株価水準とローの関係を見るには、以下のコマンドを入力します。
>> S0 = 12000:22000;
>> [CallRho, PutRho]= blsrho(S0, 17500, 0.004, 1/12, 0.253, 0);
>> plot(S0,CallRho); grid on; hold on;
>> plot(S0,PutRho,'r');
>> legend('CallRho', 'PutRho', 'Location', 'NorthWest');
>> xlabel('原資産価格(¥)');ylabel('rho');title('原資産価格とローの関係');
>> hold off;
図 5.6
41
5) ベガ(κ )
ベガとはボラティリティの変化に対するそのオプション価格の感応度を表わします。ベ
ガは以下の式で表わされます。
  S0 T ' d1 
ベガを出力する関数 blsvega を使用します。
>> Vega = blsvega(17000, 17500, 0.004, 1/12, 0.253)
Vega =
1.8377e+003
株価水準とベガの関係を見るには、以下のように入力します。
>> S0 = 12000:22000;
>> Vega = blsvega(S0, 17500, 0.004, 1/12, 0.253, 0);
>> plot(S0,Vega); grid on;
>> xlabel('原資産価格(¥)');ylabel('vega');
>> title('原資産価格とベガの関係');
42
図 5.7
最後にガンマが原資産価格、満期までの時間の関係でどのように変化するのか 3 次元プ
ロットを作成します。以下のように入力します。
>> s0 = 12000:100:22000;
>> t
= 1:21;
% 原資産価格を100円刻み
%1ヵ月を21日とする
>> t = t / (21*12);
% 年換算
>> [S0, T] = meshgrid(s0, t); % 3次元プロットのための配列の作成
>> Pad = ones(size(S0));
>> Gamma
= blsgamma(S0, 17500*Pad, 0.004*Pad, T, 0.253*Pad);
>> CallDelta = blsdelta(S0, 17500*Pad, 0.004*Pad, T, 0.253*Pad);
>> mesh(S0, T*(21*12), Gamma, CallDelta);
>> axis([12000 22000
1 21
0 0.0015]);
>> xlabel('株価(¥)'); ylabel('満期日(日)');
>> title('Call Option Sensitivity Measures');
43
図 5.8
y 軸の満期日(日)の「21」の部分を切り出せば、
「2) ガンマ」で扱った原資産価格とガン
マの関係図と同じ図が得られることが分かります。
44
5.4 二項モデル
二項モデルとは、オプションの原資産価格が一定期間経過したときに上昇するか下落す
るかの 2 つの状態しかない場合を想定して、オプションの価値を導出するオプション評価
モデルです。Financial Toolbox には二項モデルによってオプションの価値を計算する関数
binprice が用意されています。
【例題 5.5】
配当のない株式の 5 ヶ月プットオプションを考える。現時点の株価 50、行使価格 50、
無リスク金利 10%(年率)、ボラティリティを 40%(年率)とします。このオプションの
価値を二項モデルにより評価せよ。オプション期間の長さを 1 ヶ月とせよ。
>> [Price, Option] = binprice(50, 50, 0.10, 5/12, 1/12, 0.40, 0)
Price =
50.0000
0
0
0
0
0
56.1200
44.5474
0
0
0
0
62.9892
50.0000
39.6894
0
0
0
70.6991
56.1200
44.5474
35.3611
0
0
79.3528
62.9892
50.0000
39.6894
31.5049
0
89.0656
70.6991
56.1200
44.5474
35.3611
28.0692
2.1625
6.9597
0
0
0
0
0.6360
3.7711
10.3613
0
0
0
0
1.3017
6.3780
14.6389
0
0
0
0
2.6641
10.3106
18.4951
0
0
0
0
5.4526
14.6389
21.9308
Option =
4.4885
0
0
0
0
0
オプション価格は 4.49 と出力されます。
45
6 GARCH過程
ここではIBMの株価収益率を題材にGARCH過程に関する話題を扱います。まずはデータ
をプロットします。期間は1993年8月30日から1995年9月21日(データ数は452)です。
>> data = importdata('ibm.dat');
>> Price = data(:,4);
>> Return = tick2ret(Price, [], 'Continuous');
>> plot(Return);
>> xlim([0 length(Return)]);
価格から収益率へ変換す
る Financial Toolbox の関
数 tick2ret を使用し、
株価を対数収益率へ変換
しています。
>> title(['収益率 19', num2str(data(1,1)),'~19', num2str(data(end,1))]);
図 6.1
ボラティリティ(標準偏差)の推移をプロットします。データ・ウィンドウの長さを 21 日間
としてボラティリティの推移を見ます。
46
>> Volatility=zeros(452-21+1, 1); % 初期化
>> for n = 1:452-21+1
Volatility(n)=sqrt(252)*std(Return(n:n+20));% 年率化
end
>> plot(Volatility);
>> xlim([0 length(Volatility)]);
>> title('ボラティリティ(年率%)の推移');
図 6.2
上の図を見ると、ある程度の長期をとれば収益率のボラティリティは一定ではなく
(heteroskedastic)、時間を通じて変化していることが分かります。ただしボラティリティが
大きい後は大きい状態が続き、小さい後は小さい状態が続くという特徴からボラティリテ
ィの時間的変化はある程度予測可能です。ボラティリティを予測する代表的なモデルとし
て、ARCH(Auto Regressive Conditional Heteroskedasticity)モデル、そして ARCH モデルを一
般化した GARCH(generalized ARCH)モデルがあります。
47
ARCH(p) / GARCH(p, q)モデル
(6.1)
ただし、
に従うとします。
ここで t 期首に利用可能な情報を与えたときの条件付分散を
(6.2)
とモデル化したものを ARCH モデルといい、ARCH(p)と記します。また、
(6.3)
とモデル化しものを GARCH モデルといい、GARCH(p, q)と記します。
(6.1)式は収益率 rt の条件付分布が確定項 b' X t と確率項  t の和に従うことを意味していま
す。そして(6.2)式および(6.3)式で t 期の条件付分散  t の変化が定式化されます。(6.2)式
2
では、t 期の条件付分散は t-1 期から t–p 期までの過去の収益率の残差変動の二乗の線形
結合で説明されると考えるものです。これによって過去の残差変動が大きいときは今期の
条件付分散も大きく、小さいときには小さい時期が持続することを説明できます。
また、(6.3)式は過去の収益率の残差変動だけでなく過去の条件付分散にも依存すると考
えるものです。
[IBM 株価収益率への応用]
では実際に IBM 株価収益率を用いて ARCH(1)モデルをあてはめパラメータの推定を行
います。ARCH 推定は Financial Toolbox の関数 ugarch を使用します。
IBM 株価収益率は以下のモデルで表わされるとします。
rt  b   t
以下のコマンドを実行します。
48
>> X = ones(length(Return),1);
>> [b, bint, ep] = regress(Return, X);
>> b
Statistics Toolbox™の回帰
分析を実行する関数
regress を使用。
b =
0.0017
>>
>> [kappa, alpha, beta] = ugarch(ep, 0, 1)
____________________________________________________________
診断情報
変数の数: 2
関数
Objective:
ugarchllf
Gradient:
finite-differencing
Hessian:
finite-differencing (or Quasi-Newton)
Constraints
Nonlinear constraints:
do not exist
Number of linear inequality constraints:
1
Number of linear equality constraints:
0
Number of lower bound constraints:
2
Number of upper bound constraints:
0
選択したアルゴリズム
medium-scale: SQP, Quasi-Newton, line-search
____________________________________________________________
診断情報の終了
Max
Iter F-count
f(x)
Line search
constraint
0
3
-843.236
-2.981e-005
1
39
-997.188
-0.001352
Directional
steplength
1.16e-010
49
First-order
derivative
-1.14e+007
optimality Procedure
1.17e+005
2
42
-1023.85
-1.11e-016
1
3
45
-1024.18
0
4
49
-1127.56
0
0.5
-1.28e+005
5.51e+004
Hessian modified twice
5
53
-1178.15
0
0.5
-1.77e+005
1.34e+005
Hessian modified twice
6
59
-1178.62
-0.0002958
0.125
-19.7
3.48e+004
7
65
-1178.64
-0.0002801
0.125
-30.4
2.81e+004
8
68
-1178.64
0
1
-13.6
2.15e+003
9
71
-1179
-0.0002979
1
-18.9
2.98e+003
10
74
-1179.01
-0.0003009
1
-3.02
279
11
77
-1179.01
-0.0003023
1
-0.994
514
12
80
-1179.01
-0.0003021
1
-5.49
13
83
-1179.01
-0.0003021
1
-0.372
1
-24.5
-1.28e+005
1.28e+005
1.28e+005
Hessian modified
261
0.392
Hessian modified
Local minimum possible. Constraints satisfied.
fmincon stopped because the size of the current search direction is less than
twice the default value of the step size tolerance and constraints were
satisfied to within the selected value of the constraint tolerance.
<stopping criteria details>
アクティブな不等式制約がありません。
kappa =
3.0405e-004
alpha =
Empty matrix: 0-by-1
beta =
0.0471
対数尤度を出力する関数
ugarchllf を使用。
>>
>> LogLikelihood = ugarchllf([kappa; beta], ep, 0, 1)
50
LogLikelihood =
-1.1790e+003
以上より、以下の結果を得ました。
rt  0.0017   t
 t2  0.000304  0.0471 t21
対数尤度 = 1179
つぎに GARCH(1,1)モデルを適用して推定します。
>>
[kappa, alpha, beta] = ugarch(ep, 1, 1)
____________________________________________________________
診断情報
変数の数: 3
関数
Objective:
ugarchllf
Gradient:
finite-differencing
Hessian:
finite-differencing (or Quasi-Newton)
Constraints
Nonlinear constraints:
do not exist
Number of linear inequality constraints:
1
Number of linear equality constraints:
0
Number of lower bound constraints:
3
Number of upper bound constraints:
0
選択したアルゴリズム
medium-scale: SQP, Quasi-Newton, line-search
____________________________________________________________
診断情報の終了
51
Max
Iter F-count
f(x)
Line search
constraint
Directional
First-order
steplength
derivative
7.28e-012
-2.53e+005
optimality Procedure
0
4
-1176.48
-2.981e-005
1
45
-1176.75
-3.165e-005
2
49
-1177.93
2.082e-017
3
55
-1180.23
-1.271e-021
0.25
-2.57e+003
7.73e+006
4
65
-1182.66
-2.327e-006
0.0156
-1.17e+003
1.98e+006
5
74
-1182.68
-4.355e-006
0.0313
-53.6
1.28e+006
6
80
-1182.8
-4.232e-006
0.25
-34.3
1.46e+006
7
84
-1183.3
-4.235e-022
1
-101
2.24e+006
8
88
-1183.97
-1.028e-006
1
9
92
-1184
0
10
96
-1184.11
11
100
-1184.12
1
-31.8
4.57e+004
9.39e+006
-231
9.34e+005
1
-122
8.93e+005
-5.878e-007
1
-97.8
2.09e+005
-5.239e-007
1
-20.4
5.07e+004
Local minimum possible. Constraints satisfied.
fmincon stopped because the predicted change in the objective function
is less than the selected value of the function tolerance and constraints
were satisfied to within the selected value of the constraint tolerance.
<stopping criteria details>
アクティブな不等式制約 (options.TolCon = 1e-006 内):
lower
upper
ineqlin
ineqnonlin
1
kappa =
2.5239e-006
alpha =
0.9744
beta =
0.0174
52
>> LogLikelihood = ugarchllf([kappa; alpha; beta], ep, 1, 1)
LogLikelihood =
-1.1841e+003
rt  0.0017   t
 t2  0.0000025  0.0174 t21  0.9744 t21
対数尤度 = 1184
GARCH(1,1)モデルをあてはめた ˆ t を出力します。GARCH モデルにあてはめた ˆ t とそ
2
2
の予測値を出力する関数 ugarchpred を使用します。
>> N = length(ep);
>> VarianceForecast = zeros(N, 1);
>> for n = 1:N
[VarianceForecast(n), H] = ugarchpred(ep(1:n), kappa, alpha, beta, 1);
end
>> plot(H);
>> xlim([0, N]); xlabel('time');
>> title('GARCH(1,1)モデル')
53
図 6.3
最後に、  t の 1 期先予測をプロットします。
2
>> figure; plot(VarianceForecast);
>> xlim([0, N]); xlabel('time');
>> title('条件付分散の1期先予測')
54
図 6.4
55
7 ポートフォリオ分析
7.1 有効フロンティア
ここではポートフォリオ分析に関する問題をいくつか考えます。扱うデータは次のよう
な期待収益率、標準偏差、相関行列をもつ新興企業 A 社、B 社、C 社の株価の日次リター
ンとします。
表 7-1
日次リターンの統計量
期待収益率
A社
0.48%
B社
0.34%
C社
0.16%
ボラティリティ
6.63%
4.32%
3.96%
日次リターンの相関係数
A社
B社
A社
1.00
B社
0.25
1.00
C社
0.28
0.47
C社
1.00
ここでは、上記の 3 社の株式で構成されるポートフォリオの有効フロンティアを計算す
ることを考えます。有効フロンティアに関する関数 frontcon を使用します。リスク回避
的な投資家は有効フロンティアだけを考えることになります。
以下のように入力します。
>> ExpReturn = 252.*[0.0048 0.0034 0.0016 ]; % 年率変換
>> Volatility = sqrt(252).*[0.0663 0.0432 0.0396]; % 年率変換
>> Correlation = [1.00, 0.25, 0.28; 0.25, 1.00, 0.47; 0.28, 0.47, 1.00];
>> ExpCovariance = corr2cov(Volatility, Correlation);
>> NumPorts = 20; % 構成ウェイトを計算する点の数
>> portopt(ExpReturn, ExpCovariance, NumPorts); %有効フロンティアのプロット
56
図 7.1
各点のボラティリティ、期待収益率、3 社株式の構成比率を計算するには以下のように入
力します。
>> [PortRisk, PortReturn, PortWts] = frontcon(ExpReturn,...
ExpCovariance, NumPorts)
PortRisk =
0.5461
0.5470
0.5498
0.5542
0.5605
0.5684
0.5779
57
0.5889
0.6014
0.6153
0.6304
0.6467
0.6703
0.7043
0.7474
0.7981
0.8550
0.9170
0.9830
1.0525
PortReturn =
0.6703
0.6987
0.7271
0.7555
0.7838
0.8122
0.8406
0.8690
0.8974
0.9258
0.9541
0.9825
1.0109
1.0393
1.0677
1.0961
1.1244
1.1528
1.1812
1.2096
PortWts =
0.1244
0.3676
0.5079
58
0.1450
0.3937
0.4613
0.1655
0.4197
0.4148
0.1861
0.4457
0.3682
0.2066
0.4718
0.3216
0.2272
0.4978
0.2750
0.2477
0.5239
0.2284
0.2683
0.5499
0.1818
0.2889
0.5759
0.1352
0.3094
0.6020
0.0886
0.3300
0.6280
0.0420
0.3564
0.6436
0
0.4368
0.5632
0
0.5173
0.4827
0
0.5977
0.4023
0
0.6782
0.3218
0
0.7586
0.2414
0
0.8391
0.1609
0
0.9195
0.0805
0
1.0000
0
0
この 3 社の株式をランダムに組み合わせたポートフォリオの期待収益率・ボラティリテ
ィのセットの点と有効フロンティアを同時プロットします。以下のように入力します。
>> Weights = rand(1000,3);
% 一様乱数による1000×3の重み行列を生成
>> Weights = Weights./repmat(sum(Weights,2),[1,3]);% 各行の和を1に標準化
>> [PortRisk, PortReturn] = portstats(ExpReturn, ExpCovariance, Weights);
>>
ポートフォリオの収益率と
リスク(標準偏差)を計算する
関数 portstats を使用。
>>
>>
>> hold on
>> plot (PortRisk, PortReturn, '.r')
>> title('Mean-Variance Efficient Frontier and Random Portfolios')
>> hold off
59
図 7.2
7.2 最適資産配分
無リスク資産を考慮した資産配分問題を考えます。無リスク資産を考慮すると、最適ポ
ートフォリオは無リスク資産へと接点ポートフォリオと呼ばれる資産への配分の組み合わ
せた点への資産配分が最適となります。
接点ポートフォリオ、最適ポートフォリオを求めるには以下のように入力します。
>> ExpReturn = 252.*[0.0048 0.0034 0.0016 ]; % 年率変換
>> Volatility = sqrt(252).*[0.0663 0.0432 0.0396]; % 年率変換
>> Correlation = [1.00, 0.25, 0.28; 0.25, 1.00, 0.47; 0.28, 0.47, 1.00];
>> ExpCovariance = corr2cov(Volatility, Correlation);
>> NumPorts = 20;
>> NumPorts = 20;
>> [PortRisk, PortReturn, PortWts] = portopt(ExpReturn, ...
ExpCovariance, NumPorts);
>> RisklessRate
=
0.08; %無リスク利子率
60
>> BorrowRate
=
0.12; %借入れ利子率
>> RiskAversion = 3; %投資家の危険回避係数
>> portalloc (PortRisk, PortReturn, PortWts, RisklessRate, ...
BorrowRate, RiskAversion);
Optimal Capital Allocation
1.4
1.2
Expected Return
1
Optimal Overall Portfolio
Optimal Risky Portfolio
0.8
0.6
0.4
0.2
0
0
0.2
0.4
0.6
0.8
Risk (Standard Deviation)
1
1.2
図 7.3
>> [RiskyRisk, RiskyReturn, RiskyWts, RiskyFraction,...
OverallRisk, OverallReturn] = portalloc(PortRisk, ...
PortReturn, PortWts, RisklessRate, BorrowRate, RiskAversion)
RiskyRisk =
0.6500
RiskyReturn =
0.9872
61
1.4
RiskyWts =
0.3697
0.6303
0
RiskyFraction =
0.7158
OverallRisk =
0.4652
OverallReturn =
0.7294
7.3 制約条件付き資産配分
ここでは制約がある場合の資産配分問題を考えます。ここで扱うデータは以下のような
期待収益率、分散・共分散行列をもつものとします。
表 7.2
X社
期待収益率
業種
10%
情報・通信
分散・共分散行列
X社
X社
Y社
Z社
0.005
-0.010
0.004
Y社
20%
電気・ガス
Y社
0.040
-0.002
62
Z社
15%
電気・ガス
Z社
0.023
制約 1:任意の資産への配分比率の制約は、ポートフォリオの価値の 10%までの空売りが可
能で、最大 110%の配分が可能とします。
制約 2:電気・ガスへの最大配分比率はポートフォリオの 80%まで、情報・通信への最大
配分比率は 70%までとします。
関数 frontcon を使用し、制約条件を引数に指定し有効フロンティアを計算します。ここ
では有効フロンティア上の 8 つの点を考えます。
>> ExpReturn = [0.1 0.2 0.15];
>> ExpCovariance = [0.005, -0.010, 0.004;
-0.010, 0.040, -0.002;
0.004, -0.002,0.023];
>> NumPorts = 8;
制約 1 を満たすようにするためには以下のように入力します。行列の 1 行目が配分比率の
下限、2 行目が上限となります。列は対応する資産を表わします。
>> AssetBounds = [-0.10, -0.10, -0.10;
1.10, 1.10, 1.10];
制約 2 を満たすようにするためには以下のように入力します。
まずはグループ分けを行います。グループ分けするためには以下のように入力します。列
は対応する資産、行で 0,1 を指定することによりグループ分けを行います。下記の例だと
1 行目で Y 社、Z 社を同じグループ、電気・ガスへ分類し、2 行目で X 社を別のグループ、
情報・通信に分類したことになります。
>> Groups =
[0, 1, 1;
1, 0, 0];
次に各グループへの配分比率の制約条件を指定します。各行は上で指定したグループに
対応します。以下の例だと電気・ガスへの配分比率を 80%、情報・通信への配分比率を 70%
に制限したことになります。
>> GroupBounds = [0, 0.80; 0, 0.70];
制約条件つき有効フロンティアは以下のように入力することにより得ることができます。
63
>> frontcon(ExpReturn,ExpCovariance, NumPorts, [], AssetBounds, Groups,
GroupBounds);
最後に以下のように入力することにより有効フロンティア上の点を出力します。
>> [PortRisk, PortReturn, PortWts] =
frontcon(ExpReturn, ...
ExpCovariance, NumPorts, [], AssetBounds, Groups, GroupBounds)
PortRisk =
0.0416
0.0499
0.0624
0.0767
0.0920
0.1100
0.1378
0.1716
PortReturn =
0.1279
0.1361
0.1442
0.1524
0.1605
0.1687
0.1768
0.1850
PortWts =
0.7000
0.2582
0.0418
0.6031
0.3244
0.0725
0.4864
0.3708
0.1428
0.3696
0.4172
0.2132
0.2529
0.4636
0.2835
64
0.2000
0.5738
0.2262
0.2000
0.7369
0.0631
0.2000
0.9000
-0.1000
7.4 VaR(バリュー・アット・リスク)
過去の相場変動をベースに収益率が正規分布にしたがっていると仮定して統計的手法を
用い、現在保有しているポジションがどの程度リスクを抱えているのかを金額ベースで推
定することを VaR(バリュー・アット・リスク)といいます。
有価証券の特定期間の収益率(R)が、平均 μ、分散  の正規分布に従っているとしま
2
す。ここで、確率 α で有価証券の価値が一日で下落する最大幅を求める問題を考えます。
この最大の下落幅のことを水準 100α%のバリュー・アット・リスク(VaR)といいます。
有価証券の現在価値を Q0 、T 日後の価値を QT とすれば、水準 100α%の VaR とは、
PQT  Q0    z   
z
 0
を満たす z のことです。T 日後の価値 QT が確率変数であり、下落幅
QT  Q0 が z 以内と
なる確率 α が与えられています。収益率の定義より
QT  Q0  Q0 R
となるので水準 100α%の VaR は、
PQ0 R   z   1  
z
 0
を満たす z と書き直すことができます。 z を求めるためには正規分布表を利用します。
上記の式を正規分布表が利用可能なように変形していきましょう。正規分布の標準化を
行います。 r   z Qo とおけば、
PR  r 
 PR      r       1  
となります。生存関数と密度関数の対称性により、
PR  r   L r       1  
65
となります。生存関数、
L( x )  

x
1 y 2
e
dy 
2
2
x
 0
で定義される標準正規分布のパーセント点を x とすれば、
z  Q0 x   
が求める VaR となります。
代表的なパーセント点を以下に表示しておきます。分布関数のパーセント点をもとめる
関数 norminv を利用して 1%、5%、10%のパーセント点を求めましょう。たとえば 90%パー
セント点は以下のように入力することにより求めることができます。
>> norminv(0.90, 0, 1)
ans =
1.2816
標準正規分布の分布関数の 90%分位点、1.2816 を戻り値として返します。
表 7-3
標準正規分布のパーセント点
100(1-α )
xα
10
1.2816
5.0
1.6449
1
2.3263
多くの金融機関では水準 99%で評価するようです。
【例題 7.1】
7.1 節でとりあげた A 社、B 社、C 社の株式のウェイトをそれぞれ 3 分の 1 としたポ
ートフォリオを考えます。このポートフォリオを 5 日間保有する場合の VaR を求めな
さい。ただし現在のポートフォリオの市場価値を 10 億円とし、評価する水準は 90%、
95%、99%とします。
66
VaR を計算する関数 portvrisk を使用します。ポートフォリオの VaR を求めるためには
以下のように入力します。
>> ExpReturn = 5.*[0.0048 0.0034 0.0016 ]; % 5日間の収益率へ変換
>> Volatility = sqrt(5).*[0.0663 0.0432 0.0396]; % 5日間のボラティリティへ変換
>> Correlation = [1.00, 0.25, 0.28; 0.25, 1.00, 0.47; 0.28, 0.47, 1.00];
>> ExpCovariance = corr2cov(Volatility, Correlation);
>> PortWts = 1/3 .* ones(1,3);
>>
>> [PortRisk, PortReturn] = portstats(ExpReturn, ExpCovariance, ...
PortWts);
>> RiskThreshold = [0.01;0.05;0.10];
>> PortValue = 1e9;
>> ValueAtRisk = portvrisk(PortReturn, PortRisk, RiskThreshold, ...
PortValue)
ValueAtRisk =
1.0e+008 *
1.7629
1.1986
0.8978
上から水準 99%、95%、90%VaR となります。たとえばポートフォリオの水準 99%VaR は
約 1 億 7629 万円となります。
【例題 7.2】
7.1 節でとりあげた A 社、B 社、C 社の株式のウェイトを 99%VaR が最小となるよう
に配分しなさい。
こ れ は 99%VaR が 最 小 と な る よ う な ポ ー ト フ ォ リ オ を 求 め る 問 題 で す 。 Optimization
Toolbox™の制約条件付き問題と解くための最適化ソルバー関数 fmincon を使用すると簡
単に最適なウェイトが見つかります。まずは、このソルバー関数を使用するために以下の
ような関数 MATLAB ファイル「portweight2var.m」を用意します。
67
function VaR = portweight2var(PortWts, ExpReturn, ExpCovariance, ...
RiskThreshold, PortValue)
[PortRisk, PortReturn] = portstats(ExpReturn, ExpCovariance, PortWts);
VaR = portvrisk(PortReturn, PortRisk, RiskThreshold, PortValue);
次に、コマンド・ウィンドウ上で以下を入力します。ここで、最適化の際の制約条件とし
て、「(ウェイトの総和) = 1」および「0≦(各ウェイト)≦1」という条件を fmincon の引
数として与えております。
>> ExpReturn = 5.*[0.0048 0.0034 0.0016 ];
>> Volatility = sqrt(5).*[0.0663 0.0432 0.0396];
>> Correlation = [1.00, 0.25, 0.28; 0.25, 1.00, 0.47; 0.28, 0.47, 1.00];
>> ExpCovariance = corr2cov(Volatility, Correlation);
>> RiskThreshold = 0.01; % 99%VaR
最適化のための
目的関数を設定。
>> PortValue = 1e9;
>>
>> objfun = @(x)portweight2var(x, ExpReturn, ExpCovariance, ...
RiskThreshold, PortValue);
>> x0 = 1/3.*ones(1,3); % 最適化のための初期値
>> optimopt = optimset('Algorithm', 'sqp', ...
'Display', 'off'); % ソルバーの設定
>>
Optimization Toolbox ™ の 制
約条件付き最適化用ソル
バー関数 fimncon。
>>
>> [optW, minVaR] = fmincon(objfun, x0, [], [], ones(1,3), 1, ...
zeros(1,3), ones(1,3), [], optimopt);
>>
>>
0≦(各ウェイト)≦1
>> optW
optW =
0.1439
0.3923
0.4638
>>
>> minVaR
minVaR =
1.6540e+008
68
(ウェイトの総和) = 1
よって、A 社のウェイト 14.39%、B 社のウェイト 39.23%、C 社のウェイト 46.38%のとき最
小 VaR「1 億 6540 万円」を達成します。それでは、このウェートが最適であることを視覚
的に確認してみましょう。
>> s = 1e-2; % 100ベーシスポイントずつデータ点作成
>> VaR = nan(1/s+1); % Not a Numberによる初期化
>> for k = 0:1/s
wA = k*s.*ones(1/s+1-k, 1);
% A社のウェイト
wB = linspace(0,1-k*s,length(wA)).'; % B社のウェイト
wC = ones(1/s+1-k,1)-(wA+wB);
PortWts=[wA wB wC];
% C社のウェイト
[PortRisk, PortReturn] = portstats(ExpReturn, ExpCovariance, PortWts);
VaR(1:end-k,k+1) = portvrisk(PortReturn, PortRisk, ...
RiskThreshold, PortValue);
end
>>
>> figure; mesh(0:s:1, 0:s:1, VaR);
>> hold on
>> plot3(optW(1), optW(2), minVaR, 'ro', ...
'MarkerFaceColor', [1 0 0], 'MarkerSize', 8);
>> title('各社のウェートによるVaR');
>> xlabel('A社のウェート');
>> ylabel('B社のウェート')
>> view(-45, 28);
>> legend('VaR曲面', '最適解');
>> hold off
この結果、最適解として算出されたウェート optW は 99%VaR を最小としていることが分
かります(図 7.4)
69
図 7.4
70
8 金融統計
Financial Toolboxは多変数の回帰モデルを扱うことができます。ここでは、多変数正規回
帰モデルのパラメータを推定する関数mvnrmleと、標準誤差を算出する関数 mvnrstd の使
用例を示します。その他にも、欠損値がある場合の多変数回帰モデル等を扱うことができ
ますが、詳細はヘルプ機能をご参照ください。
A 社、B 社、C 社の過去の 50 日分の収益率をから、各銘柄のベータ値とアルファ値を推
定する問題を考えます。市場ポートフォリオとして、ある指数となるデータ(Xidx)を用い
ます。あらかじめ必要となるデータを MAT-ファイル(capmdata.mat)として保存しておきま
す。多変量タイプの回帰モデルで推定すると、推定するモデルは以下のものとなります。
 y1t  1 xt
 y   0 0
 2t  
 y 3t  0 0
0 0
1 xt
0 0
 1 
 
0 0   1   1t 
 
0 0   2    2t 

1 xt   2   3t 
 3 
 
  3 
以下のように入力します。
>> load capmdata
>> % A:
A社の株価収益率
>> % B:
B社の株価収益率
>> % C:
C社の株価収益率
>> % Xidx: サンプル用説明変数
>>
>> Data = [A, B, C]; % 被説明変数の定義
>> N = length(A);
>> Design = cell(N, 1);
>>
>>
71
>> % 関数mvnrmleの入力に合致するように、説明変数用セル配列作成
>> for k = 1:N
Design{k,1} = [1, Xidx(k), 0, 0, 0, 0;
0, 0, 1, Xidx(k), 0, 0;
0, 0, 0, 0, 1, Xidx(k)];
end
>> [Params, Covar] = mvnrmle(Data, Design); % パラメータ推定
>> [StdParams, StdCovar] = mvnrstd(Data, Design, Covar); % 標準誤差算出
>> tV = Params./StdParams; % t値の算出
>> [Params tV]
ans =
-0.0033
-1.1543
0.9180
5.8039
0.0082
1.2860
1.8201
5.2115
0.0024
0.4770
1.7160
6.1417
以上より、結果は表 8.1 のようになりました。カッコ内の数値は t 値です。
表 8.1
α値
β値
A社
-0.0033 (-1.1543)
0.9180 (5.8039)
B社
0.0082 (1.2860)
1.8201 (5.2115)
C社
0.0024 (0.4770)
1.7160 (6.1417)
A 社のベータ値より、B 社や C 社のベータ値の方が大きいという結果が出ました。
72
複数の時系列間の影響を分析できるモデルに VAR(ベクトル自己回帰)モデルがあります。
ここでは 1995 年 1 月から 2006 年 3 月までの景気動向指数(遅行指数)と、GDP の成長率の
時系列間の関係を VAR モデルで分析したいと思います。GDP は 4 半期データで、景気動
向指数は月次データのため、分析には景気動向指数の 3 ヶ月ごとに平均をとったものを使
用します。あらかじめ必要となるデータを MAT-ファイル(vardata.mat)として保存しておき
ます。推定する VAR モデルは以下のものとします。
xt  b0  bx1 xt 1  bx 2 xt 2  bx 3 xt 3  b y1 yt 1  b y 2 yt 2  b y 3 yt 3   xt
yt  c0  c x1 xt 1  c x 2 xt 2  c x 3 xt 3  c y1 yt 1  c y 2 yt 2  c y 3 yt 3   yt
以下のように入力します。
>> load vardata
>> % X: 景気動向指数を3ヶ月ごとに平均をとったデータ
>> % Y: GDPの成長率
>>
>> N = length(X);
>> Data = [X(4:end), Y(4:end)]; % 被説明変数
>> Design = cell(N-3,1);
>>
>> for k = 1:N-3
Design{k,1} = [1, X(k+2:-1:k).', Y(k+2:-1:k).', zeros(1,7);
zeros(1,7), 1, X(k+2:-1:k).', Y(k+2:-1:k).'];
end
>>
>> [Params, Covar] = mvnrmle(Data, Design); % パラメータ推定
>> [StdParams, StdCovar] = mvnrstd(Data, Design, Covar); % 標準誤差
>> tV = Params./StdParams; % t-値
>> [Params, tV]
ans =
23.5485
1.8264
0.2818
1.5345
0.0470
0.2446
0.1848
0.9820
4.6673
1.6084
73
-1.4192
-0.4244
-0.5223
-0.1990
-1.2054
-1.5224
0.0275
2.4346
0.0070
0.5899
0.0032
0.2793
0.7037
3.9488
-0.1483
-0.7223
-0.2421
-1.5022
表 8.2 :景気動向指数 X と GDP 成長率 Y
定数
X t-1 の係数
X t-2 の係数
X t-3 の係数
Yt-1 の係数
Yt-2 の係数
Yt-3 の係数
Xt
23.5485
0.2818
0.0470
0.1848
4.6673
-1.4192
-0.5223
t-値
1.8264
1.5345
0.2446
0.9820
1.6084
-0.4244
-0.1990
Yt
-1.2054
0.0275
0.0070
0.0032
0.7037
-0.1483
-0.2421
t-値
-1.5224
2.4346
0.5899
0.2793
3.9488
-0.7223
-1.5022
推定値と t 値から、一期前の GDP 成長率は景気動向指数(遅行指数)に影響を与えている
ことが分かります。一方、景気動向指数(遅行指数)は GDP 成長率にあまり影響を与えてい
ないことが分かります。
74
9 Financial Time Series Objectについて
Financial Toolbox は、金融時系列データを分析するための計算環境を提供します。当機
能を使用することにより時間情報をもつ時系列データの加工と多様な分析が可能となりま
す。当機能を使用することによりベクトルや行列を利用した分析よりも、より直感的なデ
ータの取り扱いが可能となります。
ここからはいくつか例を用いて、金融時系列データ分析の機能のご紹介をいたします。
特に fints 関数の使い方がポイントになります。
9.1 Financial Time Series Object
金融時系列データの分析のためには、
「Financial Time Series Object」とよばれる時間情報
とデータを関連させたオブジェクトを基本としてデータを扱います。このオブジェクトは、
関数 fints によって作成されます。
>> ibm = importdata('ibm.dat'); % サンプルデータをインポート
>>
>> sd = num2str(ibm(:,1)); % 日付データを文字列に変更
>> sp = repmat('/', length(ibm(:,1)), 1);
>> C = repmat('19', length(ibm(:,1)), 1);
>> strdates = [C, sd(:,1:2), sp , sd(:,3:4), ...
sp, sd(:,5:6)]; % yymmdd を yyyy/mm/dd へ変更
>> dates = datenum(strdates); % 日付データをシリアル値に変更
>> myfts = fints(dates, ibm(:,2:4), {'High','Low','Close'}, ...
'Daily', 'IBM Stock Price');
>> myfts
myfts =
desc:
IBM Stock Price
freq:
Daily (1)
'dates:
(452)'
'30-Aug-1993'
'High:
[
(452)'
44.7500]
75
'Low:
[
(452)'
44.1250]
'Close:
[
(452)'
44.6250]
'31-Aug-1993'
[
45.8750]
[
44.7500]
[
45.7500]
'02-Sep-1993'
[
46.3750]
[
45.7500]
[
'03-Sep-1993'
[
46.3750]
[
45.6250]
[
45.8750]
'07-Sep-1993'
[
46.2500]
[
45.2500]
[
45.5000]
46]
:
:
Financial Time Series Object のデータをプロットすると、以下のような時間情報と対応する
データをグラフ化したものを出力します。
>> plot(myfts);
図 9.1 : Financial Time Series Object データのプロット 1
さらに出来高データを追加したオブジェクトを作成し、プロットすると以下のような出
来高情報も一覧できる図を作成することが可能となります。
76
>> myfts = fints(dates, ibm(:,2:5), {'High','Low','Close','Volume'}, ...
'Daily', 'IBM Stock Price');
>> figure; plot(myfts,[] ,'Volume', 1);
図 9.2 : Financial Time Series Object データのプロット 2
77
9.2 Financial Time Series Object の操作
Financial Time Series Object は、通常の MATLAB の操作と同じような操作で四則演算等
の計算が可能です。計算が可能なオブジェクトは、時間部分が同じオブジェクト同士とな
っています。
>> dates = (datenum('01/01/2005'):datenum('01/01/2005')+3)';
>> dataSeries1 = exp(randn(4,1)); % 仮想データ生成
>> dataSeries2 = exp(randn(4,1));
>> Data=[dataSeries1, dataSeries2];
>> myfts1 = fints(dates, Data);
>> myfts1
myfts1 =
desc:
(none)
freq:
Unknown (0)
'dates:
(4)'
'series1:
(4)'
'series2:
(4)'
'01-Jan-2005'
[
1.7120]
[
1.3754]
'02-Jan-2005'
[
6.2582]
[
0.2704]
'03-Jan-2005'
[
0.1045]
[
0.6482]
'04-Jan-2005'
[
2.3683]
[
1.4086]
>> % 演算用にもう一つオブジェクトを作成
>> Data2 =[exp(randn(4,1)), exp(randn(4,1))];
>> myfts2 = fints(dates, Data2);
>> >> myfts2
myfts2 =
desc:
(none)
freq:
Unknown (0)
'dates:
(4)'
'series1:
(4)'
'series2:
(4)'
'01-Jan-2005'
[
35.8161]
[
2.0656]
'02-Jan-2005'
[
15.9497]
[
0.9389]
'03-Jan-2005'
[
0.2593]
[
2.0437]
'04-Jan-2005'
[
20.7994]
[
0.8147]
78
>> myfts3 = myfts1 + myfts2
myfts3 =
desc:
(none)
freq:
Unknown (0)
'dates:
(4)'
'series1:
(4)'
'series2:
(4)'
'01-Jan-2005'
[
37.5281]
[
3.4410]
'02-Jan-2005'
[
22.2078]
[
1.2093]
'03-Jan-2005'
[
0.3637]
[
2.6918]
'04-Jan-2005'
[
23.1677]
[
2.2233]
以下のように入力することにより、オブジェクトの一部分を切り出して、新規オブジェ
クトを作成することができます。
>> myfts4 = myfts1.series2
myfts4 =
desc:
(none)
freq:
Unknown (0)
'dates:
(4)'
'series2:
(4)'
'01-Jan-2005'
[
1.3754]
'02-Jan-2005'
[
0.2704]
'03-Jan-2005'
[
0.6482]
'04-Jan-2005'
[
1.4086]
複数のデータ部分を切り出し、それらを結合して新規オブジェクトを作成するには、以
下のように入力します。
79
>> myfts5 = [myfts1.series2, myfts2.series1]
myfts5 =
desc:
freq:
//
Unknown (0)
'dates:
(4)'
'series2:
(4)'
'series1:
(4)'
'01-Jan-2005'
[
1.3754]
[
35.8161]
'02-Jan-2005'
[
0.2704]
[
15.9497]
'03-Jan-2005'
[
0.6482]
[
0.2593]
'04-Jan-2005'
[
1.4086]
[
20.7994]
また、関数 fts2mat を利用することによりオブジェクトを、通常の MATLAB で扱う形
式でデータを取り出すことができます。
>> fts2mat(myfts1)
ans =
1.7120
1.3754
6.2582
0.2704
0.1045
0.6482
2.3683
1.4086
>>
>> M = fts2mat(myfts1,1) % 引数追加によりシリアル日付番号を取得
ans =
1.0e+005 *
7.3231
0.0000
0.0000
7.3231
0.0001
0.0000
7.3232
0.0000
0.0000
7.3232
0.0000
0.0000
80
>> datestr(M(:,1))
ans =
01-Jan-2005
02-Jan-2005
03-Jan-2005
04-Jan-2005
81
10 テクニカル分析
テクニカル分析とは過去の相場の値動きを表わしたチャートを分析し、将来の価格を予
想しようとするものです。Financial Toolbox には多数のテクニカル分析を実行する関数が
用意されています。ここでは代表的な 4 つのテクニカル分析の実行例を示します。その他
の手法につきましては「MATLAB ヘルプ」等をご確認ください。
10.1 MACD (移動平均収束発散法)
このテクニカル分析手法では 2 本の指数平滑平均線を用います。MACD は 2 本の指数平
滑平均の差(短期指数平滑平均-中期指数平滑平均)として算出され、MACD の指数平滑平
均をシグナルとして算出します。
指数平滑平均の計算方法は以下のようになります。
Y t   Y t  1    C  Y t  1
Y t 
: 当日の指数平滑平均
Y t  1 : 前日の指数平滑平均(初日だけ単純移動平均を用いる)
C
: 当日の終値

: 平滑化定数、 0  
  2 n  1
 1
[n は単純移動平均の平均期間] として計算される.
MACD は、2 本の線が交差するときに「売り」や「買い」のサインと判断します。MACD
ラインがシグナルを下から上へ突き抜けた地点を「買いサイン」、上から下へ突き抜けた地
点を「売りサイン」と判断します。また、両方の線がゼロの基準線から上下どちらかに大
幅に移動したときには、それぞれ買われ過ぎや売られ過ぎのサインと判断します。
82
Financial Toolbox には MACD を算出する関数、macd が用意されています。関数 macd
は短期指数平滑平均を n =12 、中期指数平滑平均を n =26 として MACD を算出します。ま
た、シグナルは MACD を n =9 とする指数平滑したものを算出します。以下のように入力
することにより、MACD チャートを作成することができます。
>> ibm = importdata('ibm.dat'); % サンプルデータのインポート
>>
>> sd = num2str(ibm(:,1)); % 日付データを文字列に変更
>> sp = repmat('/', length(ibm(:,1)), 1);
>> C = repmat('19', length(ibm(:,1)), 1);
>> strdates = [C, sd(:,1:2), sp , sd(:,3:4), ...
sp, sd(:,5:6)]; % yymmdd を yyyy/mm/dd へ変更
>> dates = datenum(strdates); % 日付データをシリアル値に変更
>> myfts = fints(dates, ibm(:,2:4), {'High','Low','Close'}, ...
'Daily', 'IBM Stock Price');
>>
>> ibm_CloseMACD = macd(myfts, 'Close'); % 終値のMACDを算出
>>
>> figure; subplot(2,1,1);
>> plot(ibm_CloseMACD);
>>
>> title(['MACD for IBM, ', datestr(dates(1), 26), ...
'-',
datestr(dates(end), 26)]);
>> AxesIds = get(gcf, 'Children'); % 凡例オブジェクトのIDを取得
>> set(AxesIds(1), 'Location', 'SouthWest'); % 凡例を左下に移動
>> XTick = get(AxesIds(2), 'XTick'); %上段のX軸のラベルの位置情報を取得
>> XTickLabel = get(AxesIds(2), 'XTickLabel'); %上段のX軸のラベルの値を取得
>>
>> subplot(2,1,2);
>> highlow(ibm(:,2), ibm(:,3), ibm(:,4));
>> title(['IBMの株価変動, ', datestr(dates(1), 26), ...
'-', datestr(dates(end),26)]);
>> MGN = [XTick(1)-dates(1), XTick(end)-dates(end)];
>> XRange2 = [1+MGN(1), length(dates)+MGN(2)];
>> xlim(XRange2);
>> XTick2 = linspace(XRange2(1), XRange2(2), length(XTick));
>> set(gca, 'XTick', XTick2); % 下段のX軸のラベルの位置を変更
>> XTickLabel2 = [XTickLabel(1,:); datestr(dates(XTick2(2:end-1))); ...
XTickLabel(end,:)];
83
>> set(gca, 'XTickLabel', XTickLabel2); % 下段X軸のラベルの値を変更
図 10.1 : MACD
10.2 ウィリアムスのパーセント・アール(W%R)
この手法は、直近の終値を一定の数日間の価格の変動幅と比較するテクニカル分析のこ
とです。
ウィリアムスのパーセント・アールは以下のような式で算出されます。
84
W %R  
n日間の最高値  当日の終値
 100
n日間の最高値  n日間の最安値
表 10.1 を例に W%R の算出方法を説明します。ここでは、n = 3 とします。
初日の 8 月 1 日の W%R の算出には、8 月 1 日、2 日そして 5 日のデータを使用します。
該当の 3 日間の最高値は 2 日の「728」、最安値は 1 日の「700」ですので、初日の W%R は、
W %R  
728  710
 64.2857
728  700
となります。(n = 3 なので)8 月 5 日までの W%R は 8 月 1 日、2 日と 5 日までのデータを使
用し算出されます。
8 月 6 日の W%R は、8 月 2 日、5 日と 6 日のデータを使用します。該当の 3 日間の最高
値は 2 日の「728」、最安値は 6 日の「710」であるので、6 日の W%R は、
W %R  
728  711
 94.4444
728  710
となり、6 日以降の W%R は過去 3 日間のデータを使用し算出されます。
表 10.1
日付
高値
安値
W%R
終値
8月1日
715
700
710
-64.2857
8月2日
728
716
720
-28.5714
8月5日
726
715
723
-17.8571
8月6日
719
710
711
-94.4444
8月7日
714
702
703
-95.8333
85
8月8日
719
707
716
-17.6471
8月9日
716
710
715
-23.5294
一般的に記述すると、n 日目までの W%R の算出までは、初日から n 日目までのデータを
使用し、(n+1)日目以降は過去(n-1)日間と当日のデータを使用することになります。
W%R は、0%近辺を高値警戒水準、100%近辺を下値警戒水準と見ます。水準が 0%、100%
近辺に張りついた動きを「ガーベージ・トップ(ボトム)」と呼び、売買ポイントの参考と
されます。
Financial Toolbox には、W%R を算出する関数 willpctr が用意されています。以下のよ
うに入力することにより、W%R チャートを作成することができます。
>> ibm = importdata('ibm.dat'); % サンプルデータのインポート
>>
>> sd = num2str(ibm(:,1)); % 日付データを文字列に変更
>> sp = repmat('/', length(ibm(:,1)), 1);
>> C = repmat('19', length(ibm(:,1)), 1);
>> strdates = [C, sd(:,1:2), sp , sd(:,3:4), ...
sp, sd(:,5:6)]; % yymmdd を yyyy/mm/dd へ変更
>> dates = datenum(strdates); % 日付データをシリアル値に変更
>> myfts = fints(dates, ibm(:,2:4), {'High','Low','Close'}, ...
'Daily', 'IBM Stock Price');
>>
>> wpctribm = willpctr(myfts); %W%Rの算出
>> figure; subplot(2,1,1);
>> plot(wpctribm);
>> title(['Williams %R of IBM ', datestr(dates(1), 26), ...
'-',
datestr(dates(end), 26)]);
>> hold on;
>> plot(myfts.dates, -80*ones(1, length(myfts)), ...
'color', [0.5 0 0], 'linewidth', 2);
>> plot(myfts.dates, -20*ones(1, length(myfts)), ...
'color', [0 0.5 0], 'linewidth', 2);
>> AxesIds = get(gcf, 'Children');
>> XTick = get(AxesIds(2), 'XTick'); % 上段のX軸のラベルの位置情報を取得
86
>> XTickLabel = get(AxesIds(2), 'XTickLabel'); %上段のX軸のラベルの値を取得
>> hold off
>>
>> subplot(2,1,2);
>> highlow(ibm(:,2), ibm(:,3), ibm(:,4));
>> title(['IBMの株価変動, ', datestr(dates(1), 26), ...
'-', datestr(dates(end),26)]);
>> MGN = [XTick(1)-dates(1), XTick(end)-dates(end)];
>> XRange2 = [1+MGN(1), length(dates)+MGN(2)];
>> xlim(XRange2);
>> XTick2 = linspace(XRange2(1), XRange2(2), length(XTick));
>> set(gca, 'XTick', XTick2); % 下段のX軸のラベルの位置を変更
>> XTickLabel2 = [XTickLabel(1,:); datestr(dates(XTick2(2:end-1))); ...
XTickLabel(end,:)];
>> set(gca, 'XTickLabel', XTickLabel2); % 下段X軸のラベルの値を変更
図 10.2 : Williams %R
87
10.3 RSI
Relative Strength Index(相対強度指数)の略。現在の価格と過去の一定期間の価格とを比較
することで証券や相場のモメンタムを計測します。他のモメンタム指標と違って誤差が排
除されるので、広く使われる指標となっています。買われ過ぎや売られ過ぎのサインの確
認に使われると同時に、指数と価格との間に乖離が生じた場合には警告の役目も果たすも
のとなっています。
RSI は以下の式で算出されます。
第 m 日目の RSI(%) =
A
 100
A B
A : 過去 n 日間の値上がりケースの終値の合計
B : 過去 n 日間の値下がりケースの終値の合計
表 10.2 を例に RSI の算出方法を説明します。
n=6 とすると、第1日目の RSI の計算は、A を 2 日の終値 720、5 日の 723 と 8 日の 716、
B を 6 日の終値 711、7 日の 703 と 9 日の 715 とし、計算することになります。よって 9 日
の RSI を計算すると、
第 1 日目の RSI =
720  723  716
 100  50.3498
720  723  711  703  716  715
2 日目の RSI の計算は、1 日目の RSI の算出時に使用したデータで最も古い 2 日のデー
タを除き、12 日のデータを追加した、5 日から 12 日までのデータを A と B に分け RSI を
算出します。
第 2 日目の RSI =
723  716  728
 100  50.4423
723  711  703  716  715  728
同じように、最終日まで RSI を計算していきます。
表 10.2 の 4 列目に算出結果を表示しておきます。
88
表 10.2
日付
終値
前日比
RSI
8月1日
710
8月2日
720
+
8月5日
723
+
8月6日
711
-
8月7日
703
-
8月8日
716
+
8月9日
715
-
50.3498
8 月 12 日
728
+
50.4423
8 月 13 日
736
+
50.5918
8 月 14 日
740
+
67.3121
8 月 15 日
737
-
66.7887
RSI は、50%以上の水準であれば、計算期間内の「値上がり幅」が「値下がり幅」より
も大きかったことを示し、50%以下の水準であれば「値上がり幅」が「値下がり幅」より
も小さかったことを示します。上昇トレンド形成中は RSI が 50%以上の水準が多く、下降
トレンド形成中は 50%以下の水準をつけていることが多い、ということになります。
RSI30%以下の水準は売られすぎの状態、70%以上の水準は買われすぎの状態であり、こ
れらの水準が相場の反転の目安であり、売買のサインとされます。
Financial Toolbox には、RSI を算出する関数 rsindex が用意されています。以下のよう
に入力することにより、RSI チャートを作成することができます。
>> ibm = importdata('ibm.dat'); % サンプルデータのインポート
>>
>> sd = num2str(ibm(:,1)); % 日付データを文字列に変更
>> sp = repmat('/', length(ibm(:,1)), 1);
>> C = repmat('19', length(ibm(:,1)), 1);
>> strdates = [C, sd(:,1:2), sp , sd(:,3:4), ...
sp, sd(:,5:6)]; % yymmdd を yyyy/mm/dd へ変更
>> dates = datenum(strdates); % 日付データをシリアル値に変更
>> myfts = fints(dates, ibm(:,2:4), {'High','Low','Close'}, ...
'Daily', 'IBM Stock Price');
>>
>> rsiibm = rsindex(myfts); %RSIを算出.
89
>> figure; subplot(2,1,1);
>> plot(rsiibm);
>> title(['RSI of IBM, ', datestr(dates(1), 26), ...
'-',
datestr(dates(end), 26)]);
>> hold on;
>> plot(myfts.dates, 30*ones(1, length(myfts)), ... %30にラインを引く
'color', [0.5 0 0], 'linewidth', 2);
>> plot(myfts.dates, 70*ones(1, length(myfts)),... %70にラインを引く
'color', [0 0.5 0], 'linewidth', 2);
>> AxesIds = get(gcf, 'Children');
>> XTick = get(AxesIds(2), 'XTick'); % 上段のX軸のラベルの位置情報を取得
>> XTickLabel = get(AxesIds(2), 'XTickLabel'); %上段のX軸のラベルの値を取得
>> hold off
>>
>> subplot(2,1,2);
>> highlow(ibm(:,2), ibm(:,3), ibm(:,4));
>> title(['IBMの株価変動, ', datestr(dates(1), 26), ...
'-', datestr(dates(end),26)]);
>> MGN = [XTick(1)-dates(1), XTick(end)-dates(end)];
>> XRange2 = [1+MGN(1), length(dates)+MGN(2)];
>> xlim(XRange2);
>> XTick2 = linspace(XRange2(1), XRange2(2), length(XTick));
>> set(gca, 'XTick', XTick2); % 下段のX軸のラベルの位置を変更
>> XTickLabel2 = [XTickLabel(1,:); datestr(dates(XTick2(2:end-1))); ...
XTickLabel(end,:)];
>> set(gca, 'XTickLabel', XTickLabel2); % 下段X軸のラベルの値を変更
90
図 10.3 : RSI
10.4 OBV(オン・バランス・ボリューム)
OBV とは、 取引日ごとの出来高に値を付与したものです。OBV と価格との間に生じた
乖離がトレンドを逸脱するような OBV の変化を伴う場合には、買いや売りのサインとさ
れます。
OBV は終値の前日比がプラスの出来高を加算し、前日比のマイナスの出来高を減算して
算出します。終値が前日と変化無しなら前日の OBV を、そのまま算出します。
表 10.3 を例に OBV の計算方法を説明します。 8 月 1 日の計算初日は、1 日の出来高が
そのまま OBV となります。 2 日は、1 日との終値比がプラスなので 1 日の OBV「4,477,000」
と 2 日の出来高「2,470,000」を加算し、OBV を「6,947,000」と算出します。
91
6 日は 5 日との終値比がマイナスなので、5 日の OBV「8,992,000」と 6 日の出来高
「2,010,000」を減算し、OBV を「6,982,000」と算出します。
表 10.3
日付
終値
出来高
前日比
OBV
8月1日
710
4,477,000
8月2日
720
2,470,000
+
6,947,000
8月5日
723
2,045,000
+
8,992,000
8月6日
711
2,010,000
-
6,982,000
8月7日
703
2,860,000
-
4,122,000
8月8日
716
2,887,000
+
7,009,000
8月9日
715
2,673,000
-
4,336,000
4,477,000
OBV が以前の安値となった数値を下回らずに上昇を継続している状態である場合、株価
は上昇トレンド形成過程に入っているとされ、上昇トレンドはしばらく継続すると判断し
ます(図 10.4 左図)。
OBV が以前の高値となった数値を上回らずに下降を継続している状態である場合、株価
は囲うトレンド形成過程に入っているとされ、下降トレンドはしばらく継続すると判断し
ます(図 10.4 右図)。
下降トレンド
上昇トレンド
図 10.4 : OBV の見方
92
Financial Toolbox には、OBV を算出する関数 onbalvol が用意されています。以下の
ように入力することにより、OBV チャートを作成できます。
>> ibm = importdata('ibm.dat'); % サンプルデータのインポート
>>
>> sd = num2str(ibm(:,1)); % 日付データを文字列に変更
>> sp = repmat('/', length(ibm(:,1)), 1);
>> C = repmat('19', length(ibm(:,1)), 1);
>> strdates = [C, sd(:,1:2), sp , sd(:,3:4), ...
sp, sd(:,5:6)]; % yymmdd を yyyy/mm/dd へ変更
>> dates = datenum(strdates); % 日付データをシリアル値に変更
>> myfts = fints(dates, ibm(:,2:5), {'High','Low','Close','Volume'}, ...
'Daily', 'IBM Stock Price');
>>
>> obvibm = onbalvol(myfts); %OBVの算出
>>
>> subplot(2,1,1);
>> plot(obvibm);
>> hold on;
>> title(['On-Balance Volume, ', datestr(dates(1), 26), ...
'-',
datestr(dates(end),26)]);
>> AxesIds = get(gcf, 'Children');
>> set(AxesIds(1), 'Location', 'SouthEast'); % 凡例を右下に移動
>> XTick = get(AxesIds(2), 'XTick'); % 上段のX軸のラベルの位置情報を取得
>> XTickLabel = get(AxesIds(2), 'XTickLabel'); %上段のX軸のラベルの値を取得
>> hold off
>>
>> subplot(2,1,2);
>> highlow(ibm(:,2), ibm(:,3), ibm(:,4));
>> title(['IBMの株価変動, ', datestr(dates(1), 26), ...
'-', datestr(dates(end),26)]);
>> MGN = [XTick(1)-dates(1), XTick(end)-dates(end)];
>> XRange2 = [1+MGN(1), length(dates)+MGN(2)];
>> xlim(XRange2);
>> XTick2 = linspace(XRange2(1), XRange2(2), length(XTick));
>> set(gca, 'XTick', XTick2); % 下段のX軸のラベルの位置を変更
>> XTickLabel2 = [XTickLabel(1,:); datestr(dates(XTick2(2:end-1))); ...
XTickLabel(end,:)];
>> set(gca, 'XTickLabel', XTickLabel2); % 下段X軸のラベルの値を変更
93
図 10.5 : OBV
94
11 データ操作
データの持つ特徴を調べる、あるいは際立たせるためにデータを変換することがありま
す。Financial Toolbox には多数のデータ変換を行う関数が用意されています。ここでは、
階差、ボックス-コックス(Box-Cox)変換、移動平均を実行する関数を紹介いたします。そ
の他の計算手法はヘルプ機能等をご参照ください。
11.1 階差
株価やマネーサプライのように、多くの経済時系列データはトレンドや季節変動を持っ
ています。このような特徴をもつ経済データに対しては、しばしは階差と呼ばれる処理を
施します。
yt  をデータの列とすると、階差の処理は以下のようになります。
yt  yt 1  yt
Δ : 階差オペレータ
ここでは、対数データから階差をとる操作を考えます。対数階差は以下のように変形で
きます。
 y 
log yt  log yt 1  log t 
 yt 1 
 y 
 l o g1  t 
y t 1 

y  y t 1
 t
y t 1
対数階差は y t の変化率にほぼ等しいため、 y t が株価の場合、その対数階差は収益率を表
95
わすことになります。Financial Toolbox に用意されている、階差を計算する関数、diff を
使用し、ある企業の株価の収益率を求めてみましょう。
>> ibm = importdata('ibm.dat'); % サンプルデータのインポート
>> sd = num2str(ibm(:,1)); % 日付データを文字列に変更
>> sp = repmat('/', length(ibm(:,1)), 1);
>> C = repmat('19', length(ibm(:,1)), 1);
>> strdates = [C, sd(:,1:2), sp , sd(:,3:4), ...
sp, sd(:,5:6)]; % yymmdd を yyyy/mm/dd へ変更
>> dates = datenum(strdates); % 日付データをシリアル値に変更
>>
>> myfts = fints(dates, ibm(:,2), {'Close'}, 'Daily', 'IBM Stock Price');
>> logmyfts = log(myfts); %オブジェクトの終値を対数変換
>> logdiffmyfts = diff(logmyfts); %階差関数によって対数終値の階差(収益率)取得
>>
>> subplot(2,1,1);
>> plot(myfts);
>> ylabel('株価'); title('株価の推移');
>> AxesIds = get(gcf, 'Children');
>> set(AxesIds(1), 'Location', 'SouthEast'); % 凡例を右下に移動
>>
>> subplot(2,1,2);
>> plot(logdiffmyfts); % (日次)収益率のプロット
>> ylabel('対数収益率');title('対数収益率の推移');legend('対数収益率');
96
図 11.1 : 株価と収益率
11.2 ボックス-コックス(Box-Cox)変換
使用したい統計的手法により、データに正規分布の仮定が必要な場合があります。ボッ
クス-コックス変換はデータの分布を正規分布に近づけたい場合に使用します。また、デー
タが分散不均一性を持つ場合に、分散均一化になるようデータを変換したい場合にもボッ
クス-コックス変換を使用します。
yt  をデータ列とすると、ボックス-コックス変換は以下のようにデータの変換を行います。
97
 yt  1

  0
f   yt      l o g yt    0
ここで、λ は対数尤度を最大化するように決定されます。
ボックス-コックス変換を行う関数、boxcox を使用し変換されたデータをプロットしてみ
ましょう。データは Financial Toolbox デモ用にあらかじめ用意されているものを使用しま
す。以下のように入力します。
>> whrl = ascii2fts('whirlpool.dat', 1, 2, []);
>> f_whrl = fillts(whrl);
>> bc_whrl = boxcox(f_whrl); %Box-Cox変換
>> figure; subplot(2,1,1);
>> hist(f_whrl.Close,15);
>> title('変換前のデータの分布');
>> subplot(2,1,2);
>> hist(bc_whrl.Close,15);
>> title('ボックス-コックス変換後のデータの分布');
98
図 11.2 : ボックス-コックス変換 1
変換前後のデータをプロットします。
>> figure; subplot(2,1,1);
>> plot(f_whrl.Close);
>> title('変換前のデータのプロット');
>> subplot(2,1,2);
>> plot(bc_whrl.Close);
>> title('ボックス-コックス変換後のデータのプロット');
99
図 11.3 : ボックス-コックス変換 2
11.3 移動平均
移動平均を使うと、データを平準化するとともにトレンドを確認することが出来ます。
移動平均を求めるには、指定した期間の連続するデータを加算し指定した期間数で割って
平均値を求めます。時間の経過に従いデータの中でもっとも古いものを順次取り除き、最
新のデータを加え平均を求める、ということを順次繰り返しデータを得ます。 Financial
Toolbox の関数 tsmovavg を使用し、チャートを作成します。ここでは、単純移動平均を
計算しますが、その他にも加重移動平均等を計算することができます。詳細は「MATLAB
ヘルプ」をご参照ください。
>> ibm = importdata('ibm.dat'); % サンプルデータのインポート
100
>>
>> sd = num2str(ibm(:,1)); % 日付データを文字列に変更
>> sp = repmat('/', length(ibm(:,1)), 1);
>> C = repmat('19', length(ibm(:,1)), 1);
>> strdates = [C, sd(:,1:2), sp , sd(:,3:4), ...
sp, sd(:,5:6)]; % yymmdd を yyyy/mm/dd へ変更
>> dates = datenum(strdates); % 日付データをシリアル値に変更
>>
>> myfts = fints(dates, ibm(:,2), {'Close'}, 'Daily', 'IBM Stock Price');
>>
>> mov25myfts = tsmovavg(myfts, 's',25); %25日移動平均取得
>> mov75myfts = tsmovavg(myfts, 's',75); %75日移動平均取得
>> plot(myfts);
>> hold on;
>> plot(mov25myfts,'g');
>> plot(mov75myfts,'r');
>> ylabel('株価');title('移動平均線のプロット');
>> legend('原系列','25日移動平均線','75日移動平均線','Location', ...
'NorthWest');
>> hold off;
101
図 11.4 : 移動平均
102
12 GUI機能の活用
前章までに説明した機能は GUI 環境においても利用することができます。ここでは GUI
環境による Financial Toolbox の機能のご紹介をいたします。
まずは、サンプル用 Financial Time Series Object をカレント・ディレクトリに保存し
ます。
>> load disney.mat
>> save guiSmp.mat dis
>> clear all; clc
次に、 GUI ツールを起動する関数 ftsgui を入力します。
>> ftsgui %GUI ツールの起動
図 12.1 のメイン・ウィンドウが表示されます。
図 12.1 : GUI 環境の利用
そして、先ほど保存したを mat ファイル(guiSmp.mat)を読み込むために、メニューバー
の「ファイル」⇒「Load」からこの mat ファイルを指定します。保存されているオブジェ
クトデータが読み込まれ、図 12.2 のような画面が現れます。
103
図 12.2 : Financial Time Series Object の読込
「Financial Time Series GUI」ウィンドウのメニューバーの項目、
「データ」
「Analysis」
「Graphs」の中の特定の項目を選択することにより GUI でのデータの操作が可能となりま
す。
104
図 12.3 : 「データ」項目の一覧
週次データへ変換する場合は、メニューバーの「データ」から「Convert Data Frequency To」
⇒「To Weekly」を選択します。新しいフィギュアが立ち上がり、週次データへ変換された
グラフが出力されます。
図 12.4 : 週次データへの変換
105
つぎに、「Analysis」についてみましょう。
メニューバーの「Analysis」を選択すると、図 12.5 が現れます。
図 12.5 : 「Analysis」項目の一覧
たとえば、基本統計量を計算するには「Analysis」⇒「Basic Statistics」を選択します。
すると、図 12.6 のように計算結果が出力されます。
図 12.6 : 基本統計量の算出
つぎに、「Graphs」について見ておきましょう。
106
メニューバーの「Graphs」を選択すると、図 12.7 が現れます。
図 12.7 : 「Graphs」項目の一覧
ローソク足チャートを作成するには「Graphs」⇒「Candle Plot」を選択します。
図 12.8 : ローソク足の作成
GUI 環境で加工されたデータ、たとえば先ほど「Convert Data Frequency To」⇒「To Weekly」
によって週次データに変換されたデータは mat ファイルとして保存することにより、再び
107
コマンドラインにて操作することが出来ます。保存するには、Financial Time Series GUI
ウィンドウ上のメニューバーの「ファイル」から「Save As」を選択します。
図 12.9 : mat ファイルの保存 1
ここでは「guiSmp_Weekly.mat」という名前で保存します。保存に成功すると図 12.10 の
ポップアップメッセージが出現します。
図 12.10 : mat ファイルの保存 2
保存された mat ファイルをコマンドライン上で読み込むことによって、コマンドライン
にてデータを扱うことが可能となります。
108
付録A. 祝日データのインポート
Financial Toolbox には、holidays という祝日を管理する関数がありますがデフォルトの
状態ではアメリカの祝日を参照しております。たとえば、2011 年 01 月 01 日から 2011 年
12 月 31 日までの祝日を調べると
>> Syukujitsu = holidays('01-Jan-2011', '31-Dec-2011');
>> datestr(Syukujitsu)
ans =
17-Jan-2011
21-Feb-2011
マーティン・ルーサー・
キング・ジュニア・デー
等のアメリカの祝日が
出力
22-Apr-2011
30-May-2011
04-Jul-2011
05-Sep-2011
24-Nov-2011
26-Dec-2011
という結果が帰ってきます。この holidays 関数はキャッシュフローの計算をする関数や
Financial Time Series Object のメソッドなどの関数に呼び出されておりますので様々な
影響を及ぼします。そこで、ここでは祝日データをインポートし、新たな holidays 関数
を作成する方法を紹介します。
Step 1
FinancialCalendar.com より Data, Code および Info ファイルをダウンロード
カレンダー情報提供サイト<http://www.FinancialCalendar.com>から上記3つのファイ
ルをダウンロードしてください。
Step 2
Trading Calendars Graphical User Interface を使って各国のマーケットに則し
た holidays.m を生成
>> createholidays
を実行すると Trading Calendars Graphical User Interface が起動し、ダウンロードした
3 つのファイル、holidays.m を出力するフォルダ、チェック項目などを入力します。こ
の GUI の使い方については以下のヘルプをご覧ください。
109
>> web([matlabroot, '/help/toolbox/finance/f11-67944.html']);
付録B. 日付計算基準(デイカウント方式)の一覧
Financial Toolbox は 14 種類の日付計算基準をサポートし、各関数の入力引数(Basis)とし
て渡すことができます。
Day-count basis
Actual/Actual
30/360 (SIA)
Actual/360
Actual/365
30/360 (PSA)
30/360 (ISDA)
30/360 (European)
Actual/365 (Japanese)
Actual/Actual (ISMA)
Actual/360 (ISMA)
Actual/365 (ISMA)
30/360E (ISMA)
Actual/365 (ISDA)
BUS/252
Basis の値
0 (デフォルト値)
1
2
3
4
5
6
7
8
9
10
11
12
13
具体的な使用例が 4.1 債券価格と利回りの計算にありますのでご参照ください。
110
付録C. 関数一覧
日付の処理と変換
now
当日の年月日時間のシリアル日付番号
today
当日の年月日のシリアル日付番号
datefind
行列形式の日付番号のインデックス
datevec
日付の構成要素
day
年月日の日を出力
eomdate
指定された月の末日のシリアル日付を出力
eomday
指定された月の末日を出力
hour
日付の時間または時間
lweekdate
月の最後に発生する週日
minute
日付または時間の分
month
年月日の月を出力
months
日付間の全体の月数
nweekdate
月内に発生する特定の週日の日付
second
日付または時間の秒
weekday
週の曜日
weeknum
ある年の第何週目かを出力
year
年月日の年を出力
yeardays
年の日数
date2time
日付から時間と回数への変換
datedisp
日付項目の表示
datenum
日付番号の作成
datestr
日付文字列の作成
dec2thirtytwo
10 進数から 32 分数への変換
m2xdate
MATLAB シリアルデート番号から Excel シリアル値へ変換
thirtytwo2dec
32 分数を 10 進数に変換
time2date
時間と回数から日付に変換
uicalendar
カレンダーを表示
x2mdate
Excel シリアル値から MATLABシリアルデート番号への変換
busdate
前後の営業日
busdays
シリアル日付形式の営業日
createholidays 取引用カレンダーを作成
datemnth
将来または過去の日付
datewrkdy
将来または過去の営業日
111
days360
360 日の年を基準とする日付間の日数
days360e
360 日の年を基準とする日付間の日数(ヨーロピアン)
days360isda
360 日の年を基準とする日付間の日数(ISDA)
days360psa
360 日の年を基準とする日付間の日数(PSA)
days365
365 日の年を基準とする日付間の日数
daysact
日付間の実際の日数
daysadd
任意の日付カウントにおける開始日からの日数
daysdif
日付カウント基準における日付間の日数
fbusdate
月の最初の営業日
holidays
休日と休業日
isbusday
営業日の日付に対して真
lbusdate
月の最後の営業日
nyseclosures
ニュウヨーク証券取引所の閉鎖日を出力
thirdwednesday 月の第3水曜日
wrkdydif
日付間の営業日数
yearfrac
日付間の年の端数
accrfrac
決済日までのクーポン期間(SIA 準拠)
cfamounts
債券ポートフォリオのキャッシュフローと
タイムマッピング(SIA 準拠)
cfdates
確定利付証券のキャッシュフロー日付
cfport
キャッシュフロー額のポートフォリオ形式
cftimes
債券のキャッシュフロー日付に対応した時間係数(SIA 準拠)
cpncount
満期までのクーポン支払い残(SIA 準拠)
cpndaten
確定利付証券の次回クーポン日付(SIA 準拠)
cpndatenq
確定利付証券の次回クーポン日付(SIA 準拠)
cpndatep
確定利付証券の次回クーポン日付(SIA 準拠)
cpndatepq
確定利付証券の前回みなしクーポン日付(SIA 準拠)
cpndaysn
次回クーポン日付までの日数(SIA 準拠)
cpndaysp
前回のクーポン日付からの日数(SIA 準拠)
cpnpersz
クーポン期間内の日数(SIA 準拠)
通貨の書式変換
cur2frac
10 進数の通貨の値を分数の値に変換
cur2str
通貨書式(「$」付き)に変換
dec2thirtytwo
10 進法から 32 進法へ
frac2cur
分数の通貨価値を 10 進数の通貨価値に変換
112
thirtytwo2dec
32 進法から 10 進法へ
金融データのチャート作成
bar
棒グラフ
bar3
3次元棒グラフ
bar3h
水平方向の棒グラフ
barh
水平方向の3次元棒グラフ
bolling
ボリンジャーバンド
candle
株価データのローソク足チャート
candle
FINTS オブジェクトのローソク足チャート
chartfts
双方向チャート
dateaxis
シリアル日付形式軸からカレンダー日付形式軸
highlow
株価データの4本値のプロット
highlow
FINTS オブジェクトの4本値のプロット
kagi
カギ足チャート
linebreak
ラインブレーク・チャート
movavg
リード/ラグ移動平均チャートの作成
plot
データ系列のプロット
pointfig
点図形チャート
priceandvol
価格/出来高グラフ (2 座標軸)
renko
練行足チャート
volarea
価格/出来高グラフ (1 座標軸)
キャッシュフローの分析と計算
annurate 期間あたりの利子率の算出
annuterm 資金の支払い、または積立の目標達成までの時間の計算
amortize 償却スケジュールの計算
depfixdb 定率法による償却額の計算
depgendb 特別減価償却法の償却額の計算をする(ex.二倍定率法)
deprdv
未償却残高の計算
depsoyd
級数法による償却額の計算
depstln
定額法による償却額の計算
pvfix
定期かつ定額支払いの割引現在価値の算出
pvvar
不定期または不定額支払いによる割引現在価値の算出
fvdisc
割引債の満期受取額の計算
113
fvfix
定額かつ定期支払いの将来価値の算出
fvvar
不定期または不定額支払いによる将来価値の算出
payadv
金利払いを考慮した一回あたりの定期支払額の計算
payodd
最初の支払いが端数の場合の一回あたりの定期支払い額の計算
payper
将来の目標積立額を設定した上で、一回あたりの定期積立額の計算
payuni
変動キャッシュフローに等価な均一支払い額の算出
effrr
実質利子率を計算
elpm
期待下方部分モーメントの計算
irr
内部収益率を計算
mirr
修正内部収益率を計算
nomrr
実質利子率から名目利子率への変換
taxedrr
名目収益率から税引き後収益率の計算
xirr
非定期または不定額のキャッシュフローの内部収益率の計算
cfconv
キャッシュフローのコンベクシティを計算
cfdur
キャッシュフローのデュレーションを計算
確定利付証券
acrubond
利付債の経過利子
acrudisc
割引債の経過利子
bndprice
満期利回りからの確定利付証券の価格決定
prdisc
割引有価証券の価格
prmat
満期時利払いの有価証券の価格
prtbill
財務省証券の価格
disc2zero 与えられた割引曲線に対するゼロ曲線
fwd2zero 与えられた先渡し曲線に対するゼロ曲線
prbyzero
ゼロ曲線によるポートフォリオ債権の価格決定
pyld2zero 与えられた額面利回り曲線に対するゼロ曲線
tbl2bond 与えられた財務省短期証券パラメータに対する
財務省長期証券パラメータ
tr2bonds
与えられた財務省長期証券パラメータに対する期間構造パラメータ
zbtprice
価格の与えられたクーポン債データからのゼロ曲線ブートストラップ
zbtyield
利回りの与えられたクーポン債データからのゼロ曲線
zero2disc 与えられたゼロ曲線に対する割引曲線
zero2fwd 与えられたゼロ曲線に対する先物曲線
zero2pyld 与えられたゼロ曲線に対する額面利回り曲線
beytbill 財務省短期証券を長期債換算した利回り
bndyield
確定利付証券の満期利回り
114
discrate
金融市場証券の割引率
ylddisc
割引有価証券の利回り
yldmat
満期時利払いの有価証券の利回り
yldtbill
財務省短期証券の利回り
bndspread スポット曲線上の静的なスプレッド
bndconvp 価格から債権のコンベクシティを算出
bndconvy
利回りから債権のコンベクシティを算出
bnddurp
価格から債券のデュレーションを算出
bnddury
利回りから債券のデュレーションを算出
bndkrdur
ゼロ曲線から債権のキーレート・デュレーションを算出
ポートフォリオ分析
abs2active
制約を絶対フォーマットからアクティブフォーマットに変換
active2abs
制約をアクティブフォーマットから絶対フォーマットに変換
arith2geom
資産収益率の算術モーメントから幾何モーメントへ変換
corr2cov
標準偏差と相関行列から分散・共分散行列を計算
cov2corr
分散・共分散行列を標準偏差と相関行列に変換
ewstats
収益時系列からの期待収益と共分散を計算
frontcon
平均分散有効フロンティア
frontier
有効フロンティア
geom2arith
資産収益率の幾何モーメントから算術モーメントへ変換
holdings2weights
ポートフォリオ持分からウェイト
pcalims
資産分配の一次不等式
pcgcomp
資産グループ比較制約の一次不等式
pcglims
資産グループの最小最大資産配分の一次不等式
pcpval
合計ポートフォリオ値を結滞する不等式
periodicreturns
日次収益率から特定期間の収益率
portalloc
有効フロンティアポートフォリオへの最適資産分配
portcons
ポートフォリオ制約
portopt
制約条件付き有効フロンティア上のポートフォリオ
portrand
ランダムなポートフォリオのリスク、リターン、ウェイト
portror
ポートフォリオの期待収益率を算出
portsim
ポートフォリオ価値のデータ生成
portstats
ポートフォリオの期待収益とリスク
portvar
ポートフォリオの分散値を算出
portvrisk
ポートフォリオの Value at Risk
115
ret2tick
収益率から価格への変換
ret2tick (fts)
収益率から価格への変換 (Time Series Object 対応)
selectreturn
3次元有効フロンティアからポートフォリオの形状
targetreturn
ポートフォリオウェイトの正確性
totalreturnprice
価格から総収益率系列
tick2ret
価格から収益率への変換
tick2ret (fts)
価格から収益率への変換 (Time Series Object 対応)
weights2holdings
ウェイトからポートフォリオの持分
emaxdrawdown
期待最大ドローダウンを算出
inforatio
インフォメーションレシオの計算
lpm
下方部分モーメントを算出
maxdrawdown
最大ドローダウンを算出
portalpha
アルファと収益率を算出
sharpe
シャープレシオを算出
金融統計
mvnrfish
多変量正規、または最小二乗回帰のフィッシャー情報行列
mvnrmle
多変量正規回帰(欠損値は無視)
mvnrobj
欠損値が無い場合の多変量正規回帰の尤度関数
mvnrstd
多変量正規回帰モデルの標準誤差
ecmnfish
フィッシャー情報行列
ecmnhess
負の対数尤度関数のヘシアン
ecmninit
初期の期待値と分散共分散
ecmnmle
不完全の多変量正規データの平均と分散共分散
ecmnobj
多変量正規の負の尤度関数
ecmnstd
不完全のデータの平均と分散共分散の標準誤差
ecmmvnrfish
多変量正規回帰モデルのフィッシャー情報行列
ecmmvnrmle
欠損値があるデータの多変量正規回帰
ecmmvnrobj
欠損値があるデータの多変量正規回帰の対数尤度関数
ecmmvnrstd
多変量正規回帰モデルの標準誤差の評価
ecmlsrmle
欠損値があるデータの最小二乗回帰
ecmlsrobj
欠損値があるデータの最小二乗回帰の対数尤度関数
convert2sur
多変量正規回帰モデルから SUR モデル
116
デリバティブのプライシングと分析
binprice 二項モデルによるオプションのプライシング
blkimpv ブラックモデルによる先物オプションのインプライドボラティリティの算出
blkprice ブラックモデルによる先物オプションのプライシング
blsdelta BS モデルによる「デルタ」の算出
blsgamma BS モデルによる「ガンマ」の算出
blsimpv BS モデルによるオプションのインプライドボラティリティの算出
blslambda BS モデルの「ラムダ」の算出
blsprice BS モデルによるオプションのプライシング
blsrho
BS モデルによる「ロー」の算出
blstheta BS モデルによる「シータ」の算出
blsvega BS モデルによる「ベガ」の算出
opprofit オプションのペイオフの計算
信用リスク向けユーティリティ
transprob
信用格付けデータから遷移確率行列の推定
transprobbytotals 前処理済み信用格付けデータから遷移確率行列の推定
GARCH 過程
ugarch
GARCH モデルのパラメータ推定
ugarchllf
対数尤度の計算
ugarchpred
GARCH 過程に条件付分散の予測値
ugarchsim
GARCH 過程に従うデータ生成
Financial Time Series Object と ファイル構築
ascii2fts
ASCII データファイルから Financial Time Series object 作成
fints
Financial Time Series object 作成
fts2ascii
Financial Time Series object を ASCII データ形式に変換
fts2mat
Financial Time Series object を行列変換
merge
複数の Financial Time Series object を結合
117
Financial Time Series Object 向けの計算関数
end
Financial Time Series object の最新データを指定
horzcat
Financial Time Series object のデータ部分の結合
length
Financial Time Series object のデータの長さ
minus
Financial Time Series object のデータ部分の差
mrdivide Financial Time Series object のデータ部分の行列の除算
mtimes
Financial Time Series object のデータ部分の行列の積算
plus
Financial Time Series object のデータ部分の和
power
Financial Time Series object のデータ部分のべき乗
rdivide
Financial Time Series object のデータ部分の行列の要素毎の除算
size
Financial Time Series object のデータ部分のサイズ
subsasgn Financial Time Series object のサブスクリプトによるデータの代入
subsref Financial Time Series object のサブスクリプトによる参照
times
Financial Time Series object のデータ部分の行列の要素毎の積算
uminus
単項マイナス演算
uplus
単項プラス演算
vertcat
Financial Time Series object のデータ部分を垂直方向に結合
Financial Time Series Object 向けの数学関数
cumsum
累積和
exp
指数関数
hist
ヒストグラム
log
自然対数へ変換
log2
底 2 の対数へ変換
log10
常用対数へ変換
max
最大値
mean
平均
min
最小値
std
標準偏差
Financial Time Series Object 向けの記述統計
corrcoef
相関係数の算出
cov
共分散行列の計算
isempty
Fianacial Time Series Objetc に空データがあるか判別
118
nancov
欠損値(NaN)を除いた共分散
nanmax
欠損値(NaN)を除いた最大値
nanmean
欠損値(NaN)を除いた平均
nanmedian
欠損値(NaN)を除いた中央値
nanmin
欠損値(NaN)を除いた最小値
nanstd
欠損値(NaN)を除いた標準偏差
nansum
欠損値(NaN)を除いた和
nanvar
欠損値(NaN)を除いた分散
var
分散値を計算
Financial Time Series Object 向けのユーティリティ関数
chfield
Financial Time Series object のデータのフィールド名の変更
eq (fts)
Financial Time Series object の等価性を判定
extfield
Financial Time Series object の部分列取得
fetch
Financial Time Series object の部分行取得
fieldnames
Financial Time Series object のフィールド名取得
freqnum
Financial Time Series object の周期インデックス取得
freqstr
Financial Time Series object の周期インデックスから周期に変換
ftsbound
Financial Time Series object の初日と終日のシリアルデート番号取得
ftsinfo
Financial Time Series object の情報
ftsuniq
Financial Time Series object の一意性
getfield
Financial Time Series object のデータ部の部分列取得
getnameidx
リストから指定文字列を探索し、格納場所のインデックスを取得
iscompatible Financial Time Series object の比較
isequal
2 以上の Financial Time Series object の比較
isfield
Financial Time Series object の部分列の比較
issorted
Financial Time Series object の時間に関する単調増加性
rmfield
Financial Time Series object の指定するデータ列を除去
setfield
Financial Time Series object のデータ列へデータをセット
sortfts
Financial Time Series object の整列
119
データ変換
boxcox
ボックス-コックス変換
convert2sur
多変量正規回帰モデルから SUR モデル
convertto
指定する頻度データへ変換
diff
階差
fillts
欠損値補完
filter
線形フィルター
lagts
指定した遅行データをとる
leadts
指定した先行データをとる
peravg
指定した平均の列をとる
resamplets
Financial Time Series object からサンプリング
smoothts
Financial Time Series object のデータ部のスムージング
toannual
年次データ変換
todaily
日次データ変換
todecimal
10 進法数値へ変換
tomonthly
月次データ
toquarterly
四半期データ
toquoted
10 進数の数を指定進数の数へ変換
tosemi
半期データ
toweekly
週次データ
tsmovavg
移動平均
テクニカル分析
adline
アキュミュレーション/ディストリビュレーションライン
adosc
アキュミュレーション/ディストリビュレーションオシレータ
bollinger
ボリンジャーバンド
chaikosc
チャイキンズオシレータ
chaikvolat
チャイキンズボラティリティ
fpctkd
ストキャスティック(ファスト)
hhigh
指定した範囲内の高値取得
llow
指定した範囲内の安値取得
macd
MACD (移動平均収束発散法)
medprice
メディアン価格
negvolidx
ネガティブ・ボリューム・インデックス
onbalvol
オン・バランス・ボリューム
posvolidx
ポジティブ・ボリューム・インデックス
120
prcroc
プライス・レート・オブ・チェンジ(ROC)
pvtrend
プライスアンドボリュームトレンド
rsindex
相対力指数(RSI)
spctkd
ストキャスティック(スロー)
stochosc
ストキャスティックオシレータ
tsaccel
アクセラレーション
tsmom
特定期間のモメンタム
typprice
ティピカルプライス
volroc
ボリューム・レート・オブ・チェンジ
wclose
加重平均した価格
willad
ウィリアムのアキュミュレーション/ディストリビュレーション
willpctr
ウィリアム・パーセント・アール
Financial Time Series GUI
ftsgui
Financial Time Series 用 GUI 環境の呼び出し
Financial Time Series Tool
ftstool
Financial Time Series Tool の起動
121
[参考文献]
[1].新井清光 編(2000)『英和・和英会計経理ハンディ辞典(第2版)』中央経済社
[2].伊藤智洋(1998)『チャート救急箱』投資レーダー
[3].小暮厚之(1996)『ファイナンス講座① ファイナンスへの計量分析』朝倉書店
[4].桜井久勝(2003)『財務諸表分析(第2版)』中央経済社
[5].ジョン・C・ハル(2001)『先物・オプション取引入門』ピアソン・エデュケーション
[6].ツヴィ・ボティ,ロバート・C・マートン(2001)『現代ファイナンス論(改訂版)~意思決
定のための理論と実践~』ピアソン・エデュケーション
[7].デービッド・G・ルーエンバーガー(2002)『金融工学入門』日本経済新聞社
[8].野村金融研究所 編(2001)『金融工学辞典』東洋経済新報社
[9].藤林宏,矢野学,岡村孝(2001)『EXCELで学ぶファイナンス〈2〉証券投資分析(改訂版)
金融財政事情研究会
[10].森棟公夫(1999)『計量経済学 プログレッシブ経済学シリーズ』東洋経済新報社
[11].ロイター 編(2002)『ロイター最新金融用語辞典』ピアソン・エデュケーション
[12].渡部敏明(2000)『シリーズ<現代金融工学>④ ボラティリティ変動モデル』朝倉書店
[13].Jack Johnston. John DiNardo.(1997) Econometric Methods, 4th ed., The McGraw-Hill
Companies,Inc
[14].James D. Hamilton(1994) Time Series Analysis , Princeton Univ Pr
122
Financial Toolbox 概説書
2011 年 1 月作成
http://www.mathworks.co.jp
営業部: http://www.mathworks.co.jp/contact_us/
テクニカル・サポート: http://www.mathworks.co.jp/support/contact_us/
ユーザ・コミュニティ:
デモ:
http://www.mathworks.com/matlabcentral/
http://www.mathworks.com/products/demos/
トレーニング・サービス: http://www.mathworks.com/services/training/
サードパーティ製品/サービス: http://www.mathworks.co.jp/products/connections/
お問い合わせ: http://www.mathworks.co.jp/company/aboutus/contact_us/index.html
E-Mail: [email protected]