Excel VBAで手軽に体験!株価シミュレーション

気になるメモ帳

Excelで株価のシミュレーションっていうとちょっと構えちゃうけど、実際に動かしてみると案外、簡単で楽しいよ。気負わず、ゆるっとやってみよう!

Excel VBAで手軽に株価シミュレーションを体験!Excel VBAを活用して実装した株価シミュレーションプログラムを紹介します。

幾何ブラウン運動(GBMモデル)をベースにしたロジックで、日々のリターンをランダムに生成しながら、実際のマーケットに近い値動きを再現しています。さらに、レバレッジの設定も可能なので、リスクとリターンの違いを視覚的に比較することができます。シンプルな構造ながら、金融の仕組みを体感できるのが魅力です。

興味がある方は、ぜひコードを参考にしたり、ちょっとアレンジして遊んでみてください。「へー、Excelってこんなことできるんだ」って思ってもらえたら嬉しいです!

まずはご確認ください:内容に関するご注意

  • このシミュレーションを作った本人は、金融の専門家ではありません。 難しい数式や理論も詳しくは理解していません。
  • 思いつきと、ネットや生成AIから得た情報をもとに組み立てたコードなので、専門的な視点で見ると「ん?」と思う部分があるかもしれません。
  • それでも、「なんとなく株価っぽい動き」を体感してもらえる内容にはなっていると思います。

ちなみに、幾何ブラウン運動(GBMモデル)についても、ちゃんと説明できるほど詳しくありません(…なのに作ってしまいました)。 細かいところは、どうかやさしい目で見ていただけると嬉しいです。

注意
  • 本記事で使用しているデータ、ソースコードは、あくまでExcelの機能を紹介するためのものであり、内容の正確性や整合性を確認したものではありません
  • データ、ソースコードはサンプルとして取り扱っており、実際の株価や市場データとは異なります
  • 本記事の内容をもとに、株式売買などの投資判断を行うことは推奨しておりません
  • 株式取引はリスクを伴う行為であり、最終的な判断はすべてご自身の責任でお願いいたします。
  • データ、ソースコードの活用については、目的に応じて適切な確認・加工を行った上で使用してください。

このシミュレーションでできること

  • 初期設定として、株価・利回り・リスクなどを定数で指定できます
  • 祝日などは考慮せず、営業日ベースで指定期間の日次株価を算出します
  • 幾何ブラウン運動(GBMモデル)のロジックを使って、株価をランダムに生成します
  • レバレッジ(倍率)をかけた2種類の株価も算出可能です(理論的GBM型、単純な日次変動率型)
  • 結果はExcelシートに出力されるので、グラフ化もラクラク!

利回りやリスクを指定して、株価の動きをざっくりと体感するためのツールです。 特定の銘柄の価格を予測するような、高度で精密な分析はできませんので、その点はご了承ください。

サンプルコード

ソースコードの解説

1.定数と変数の設定
  • シミュレーションに必要なパラメータ(初期株価、利回り、リスク、年間日数、レバレッジ倍率)を定数として宣言
  • 数字を変えるだけで、さまざまなパターンのシミュレーションが簡単に試せます

パラメータは以下のとおりです。

パラメータ名内容例(設定値)
initialStockPrice初期株価10,000円
annualReturn年間利回り(μ)0.07 → 7%
volatilityリスク(標準偏差:σ)0.25 → 25%
daysInYear年間日数(営業日ベース)260日(週末除く)
leverageレバレッジ倍率3倍(値動きが大きく)

たとえば、利回りやリスクの数値を変えるだけで、リスクの高い銘柄風や安定志向の動きなど、いろんなシナリオを再現できます。 レバレッジをかけると値動きが激しくなるので、リスクとリターンの関係も見えてきますよ。

2.出力先シートの取得とエラーチェック
  • 出力先として "Sheet1" を指定
  • シートが存在しない場合は、メッセージを表示して処理を中断
  • エラー処理でExcelが止まらないようにしています
3.Excelの描画更新・計算モードの一時停止
  • 画面のちらつきを防ぐため、描画更新をOFF
  • 計算モードを手動にして、処理速度をアップ!
 4.シミュレーション期間と初期値設定
  • シミュレーションの開始日と終了日を設定
  • 通常株価・レバレッジ株価の初期値をセット
  • Excelでの書き込み開始行(3行目)を指定
5.ワークシートの初期化と乱数の準備
  • 前回のデータをすべてクリアして、クリーンな状態に
  • Randomize で乱数の初期化(毎回違う結果になります)
6.ヘッダー行の作成と初期値の出力
  • 1行目に列タイトルを設定
  • 何度も実行すると、設定値がわからなくなるので、タイトル部分に設定値も表示して分かりやすく
  • 2行目に初期株価を出力
  • 日付を1日進めて、シミュレーションの準備完了!
7.毎営業日の株価を計算(メイン処理)
  • 指定期間を1日ずつループ
  • Weekday 関数で平日(月〜金)のみ処理
  • 土日はスキップ(祝日は考慮していません)
8.標準正規乱数の取得
  • Rnd で0〜1の乱数を生成
  • Norm_S_Inv で標準正規分布に変換
  • 株価の「揺らぎ(ショック)」の元になります
9.GBMモデル風ロジックで日次リターン計算
  • ドリフト:平均的な成長分
  • ショック:ランダムな揺れ
  • この2つを足して、日次のリターンを計算
  • 幾何ブラウン運動(GBMモデル)っぽい動きを再現しています!

ここが、このプログラムの肝です。いわゆる幾何ブラウン運動(GBMモデル)っぽい計算方法で、リターンに揺らぎを与えています。「毎日どれくらい変動するか」を、この数式で疑似的に作ってるイメージです。

10.通常株価の更新(GBMモデル)
  • 対数リターンを使って、株価を複利で更新
11.レバレッジGBMの計算と更新
  • レバレッジをかけたドリフトとショックを計算
  • レバレッジGBMの株価を更新
12.単純レバレッジ株価の更新
  • レバレッジ無しの株価変動率にレバレッジ倍率をかけて株価を更新
13.結果のExcel書き込み
  • 各日の株価をExcelに書き込み
  • Round で小数第2位までに調整して見やすく
14.後処理と完了メッセージ
  • 最初にOFFにした画面更新・計算モードを元に戻す
  • メッセージボックスで完了を通知(不要なら削除してOK)

計算結果とグラフ

今回のシミュレーションでは、年間利回り7%・リスク25%・レバレッジ3倍という、すこし攻めた設定で試してみました。

グラフにしてみると、株価の動きが一目瞭然! Excelって、こういうとき本当に便利ですよね。数字だけだとピンとこない変化も、グラフにすると「おぉ…」ってなります。

  • 青線:通常の株価(レバレッジなし)
  • オレンジ線:GBMモデルでレバレッジ3倍をかけた株価

オレンジのライン、めちゃくちゃ動いてます。まさにジェットコースター。 うまく上昇タイミングで売り抜けられれば大きな利益になりますが…現実はそんなに甘くないのが相場の世界です。

さらに、GBMレバレッジ型と単純レバレッジ型を比較してみると、意外にもほぼ同じ動き。

  • オレンジ線:GBMレバレッジ
  • 緑線:単純レバレッジ

ほとんど重なってしまって、オレンジが緑に隠れて見えなくなるくらいです。仲良しか!

でも、同じ利回り7%・リスク25%でも、ちょっとした乱数の違いで結果は大きく変わります。 下のグラフでは、レバレッジありの株価が地面を這うような動きに…。

とにかく、レバレッジをかけると価格の変動幅がとんでもなく大きくなるということがよくわかります。 怖いけど、面白い。そんな世界をExcelでちょっとだけ体験してみました。

まとめ

ExcelとVBAで株価シミュレーション、やってみたら意外とそれっぽい!

今回の株価シミュレーションは、「とりあえずやってみよう!」精神で組んでみたVBAコードを使って、Excelだけで10年分の株価の動きをそれっぽく再現してみる――そんな試みでした。

  • 難しい金融理論なしで、それっぽい株価データが作れた!
  • レバレッジをかけることで、リスクとリターンの違いが体感できた!
  • ExcelとVBAだけで、データの面白さにちょっと触れられた!

…と、金融の専門知識がなくても「おっ、なんかそれっぽい!」という感覚を味わえる内容になったんじゃないかと思います。

もちろん、数式の精度やモデルの厳密さについては、ツッコミどころもあるかもしれません。 でもこのブログの目的は、「数字とちょっと仲良くなるきっかけ」を作ること。 完璧じゃなくても、まずは触れてみることが大事だと思っています。

実際に動かしてみると、グラフの変化やレバレッジの暴れっぷりがなかなか面白いので、興味が湧いた方はぜひ試してみてください。 Excelのセルが、ちょっとだけ投資の世界に見えてくるかもしれませんよ。

最後まで読んでいただき、ありがとうございました!

まだまだ勉強中だけど、こうやって数字やExcelに触れてみると、世界がちょっと広がった気がします。難しく考えずに“ちょっと試してみる”って、案外面白い発見があるんですね!