EXCEL VBAによる 投資分析ツールの開発と応用 2007年 経済学部4年 B033206 城野 圭史 はじめに 背景 Excelは、汎用ソフトウェアであるため、ユー ザーのニーズに合致する全ての関数や分析 ツールが用意されているわけではない。 →Excel上で動作する操作性の良い計量ファ イナンス・分析ツールに対するニーズは多い。 →Excel VBAによるプログラム製作 はじめに 開発した分析ツール →1 ショートフォール確率・VaR分析ツール →2 株価評価ツール →3 債券評価ツール 導入 ①セキュリティ [ツール][マクロ][セキュリティ]を選択 導入 ②インストール (ⅰ) ファイル→名前を付けて保存(投資分析 ツール) 導入 (ⅱ)ツール→アドイン 導入 ツール→マクロ→マクロ 1 ショートフォール確率・VaR分析ツー ル ショートフォール確率とは 個別証券やポートフォリオのリターンがある一定の利率を下 回る確率を示したもの VaRとは バリュー・アット・リスク(VAR)とは、ある資産を保有している とき、その保有期間中に一定の確率で発生し得る最大損失 額を統計的に推計したもの 1-1 ショートフォール確率を求める手 順 ショートフォール確率の計算コード Sub calculater15(gr As Single, er As Single, h As Single, outrange As String) Dim sf As Single, asf As Single sf = Application.NormDist(gr, er, h, True) asf = sf * 100 Range(outrange).Select ActiveCell.Range("a1") = "ショートフォール確率(%)" ActiveCell.Offset(0, 1).Select ActiveCell.Range("a1") = asf If asf <= 30 Then ActiveCell.Interior.ColorIndex = 5 Else ActiveCell.Interior.ColorIndex = 3 End If End Sub 1-2 VaRを求める手順 VaRの計算コード Sub calculater16(gr As Single, h As Single, k As Single, outrange As String) Dim Var As Single Var = Application.NormInv(1 - k / 100, gr, h) Range(outrange).Select ActiveCell.Range("a1") = "VaR(%)" ActiveCell.Offset(0, 1).Select ActiveCell.Range("a1") = Var If Var <= 0 Then ActiveCell.Interior.ColorIndex = 5 Else ActiveCell.Interior.ColorIndex = 3 End If End Sub 2 株価評価ツール 定率成長モデル P=D/k-g 内部成長率 g=ROE×(1-配当性向) 2-1 成長率を求める 「成長率を求める」の計算コード Sub calculater3(roe As Single, h As Single, outrange As String) Dim g As Single g = roe * (1 - h) Range(outrange).Select ActiveCell.Range("a1") = "成長率(%)" ActiveCell.Offset(0, 1).Select ActiveCell.Range("a1") = g End Sub 2-2 株価を求める 「株価を求める」の計算コード Sub calculater4(d As Single, k As Single, g As Single, outrange As String) Dim p As Single p = d / (k - g) Range(outrange).Select ActiveCell.Range("a1") = "予想株価" ActiveCell.Offset(0, 1).Select ActiveCell.Range("a1") = p End Sub 3 債券評価 受取額 →元本x円の金融商品を金利y%でz年間運用 したときの受け取れる額 利率 →元本x円をz年後にa円にして受け取るための 利率 元本 →利率y%でz年後にa円受け取るための元本 計算式 受取額 単利: 複利: ÷a)} 利率 単利: 複利: 元本 単利: 複利: 受取額=元本×{1+(利率×運用年数)} 受取額=元本×{1+(利率÷a)^(運用年数 利率={(受取額÷元本)-1}÷運用年数 利率={(受取額÷元本)^(1÷運用年数)}-1 元本=受取額÷{1+(利率×運用年数)} 元本=受取額÷{(1+利率)^運用年数} 3-1 債券評価の手順(単利で受取額 を計算する場合) 受取額(単利)の計算コード Sub calculater1(g As Single, r As Single, t As Single, outrange As String) Dim p As Single p = g * (1 + (r * t)) Range(outrange).Select ActiveCell.Range("a1") = "受取額(単利)" ActiveCell.Range("a1").Interior.ColorIndex = 3 ActiveCell.Offset(0, 1).Select ActiveCell.Range("a1") = p ActiveCell.Range("a1").Interior.ColorIndex = 3 ActiveCell.Offset(1, -1).Select ActiveCell.Range("a1") = "元本" ActiveCell.Offset(0, 1).Select ActiveCell.Range("a1") = g ActiveCell.Offset(1, -1).Select ActiveCell.Range("a1") = "利率" ActiveCell.Offset(0, 1).Select ActiveCell.Range("a1") = r ActiveCell.Offset(1, -1).Select ActiveCell.Range("a1") = "運用期間" ActiveCell.Offset(0, 1).Select ActiveCell.Range("a1") = t End Sub 3-2 債券評価の手順(複利で利率を 計算する場合) 利率(複利)の計算コード Sub calculater6(p As Single, g As Single, t As Single, outrange As String) Dim r As Single r = (((p / g) ^ (1 / t)) - 1) * 100 Range(outrange).Select ActiveCell.Range("a1") = "利率(%)" ActiveCell.Range("a1").Interior.ColorIndex = 3 ActiveCell.Offset(0, 1).Select ActiveCell.Range("a1") = r ActiveCell.Range("a1").Interior.ColorIndex = 3 ActiveCell.Offset(1, -1).Select ActiveCell.Range("a1") = "受取額" ActiveCell.Offset(0, 1).Select ActiveCell.Range("a1") = p ActiveCell.Offset(1, -1).Select ActiveCell.Range("a1") = "元本" ActiveCell.Offset(0, 1).Select ActiveCell.Range("a1") = g ActiveCell.Offset(1, -1).Select ActiveCell.Range("a1") = "運用期間" ActiveCell.Offset(0, 1).Select ActiveCell.Range("a1") = t おわりに 3つの分析ツールを開発 →ショートフォール・VaR分析ツール →株価評価ツール →債券評価ツール →→ニーズに合致するものを作ることが可能
© Copyright 2024 ExpyDoc