Googleスプレッドシートで投資シミュレーション!複利運用 vs 売却戦略を徹底比較

がいの部屋

投資でシミュレーションするのに役立つスクリプトです。

前提とした複利計算方法

前提とした計算の流れを整理すると、以下のようになります。

  1. 毎月1万円の投資:初めの投資額は一定。
  2. 20%利益が出たら売却:利益が出たら確定し、売却益を得る。
  3. 売却益を10年分に分割して、毎月の投資額に追加:売却した利益を分割して再投資。

計算の流れ

  • 毎月1万円投資を続け、毎年12万円の投資額。
  • 仮に年利20%の利益が得られると仮定すると、年末には1.2倍(元本 + 利益)になる。
  • その後、利益を売却し、10年分で分割して再投資額に追加。
  • これを繰り返した結果、複利効果によって資産は増加。

使用方法

  1. Googleスプレッドシートを開く
  2. 拡張機能Apps Script を選択
  3. 上記のスクリプトをコピーして貼り付け
  4. calculateInvestment(); を実行すると、計算結果が Investment シートに出力されます

複利計算

複利計算の式 積立投資で複利を考慮すると、総資産は次の式で求められます:

ここで

  • P は毎月の投資額
  • r は月利(例えば年利20%を12分割 → 約1.67%)
  • N は投資期間の月数

作成したGoogle Apps Script

以下のコードをGoogleスプレッドシートに追加し、計算を自動化できます。

function calculateInvestment() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Investment");
  if (!sheet) {
    sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet("Investment");
  }
  
  sheet.clear();
  sheet.appendRow(["月", "投資額", "総資産", "利益", "売却額", "再投資額", "単純複利"]);

 var configSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Settings");
  if (!configSheet) {
    configSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet("Settings");
    configSheet.appendRow(["項目", "値"]);
    configSheet.appendRow(["毎月の投資額", 10000]); // 初期値
    configSheet.appendRow(["仮定する年利 (%)", 20]); // 初期値
    configSheet.appendRow(["投資期間 (月)", 120]); // 初期値
  }

  var initialInvestment = configSheet.getRange(2, 2).getValue(); // 毎月の投資額
  var annualRate = configSheet.getRange(3, 2).getValue() / 100; // 年利(%を小数に変換)
  var months = configSheet.getRange(4, 2).getValue(); // 投資期間(月)

  var totalInvestment = 0;
  var totalAssets = 0;
  var reinvestmentPool = 0;
  var compoundAssets = 0; // 単純複利計算用

  

  for (var month = 1; month <= months; month++) {
    totalInvestment += initialInvestment + reinvestmentPool;
    totalAssets *= (1 + annualRate / 12); // 複利の適用
    totalAssets += initialInvestment + reinvestmentPool;

    var profit = totalAssets - totalInvestment;
    var sellAmount = 0;

    // もし総資産が投資額の1.2倍を超えたら売却
    if (totalAssets >= totalInvestment * 1.2) {
      sellAmount = totalAssets - totalInvestment; // 利益部分を売却
      totalAssets -= sellAmount; // 総資産から売却分を引く
      reinvestmentPool = sellAmount / 120; // 10年分割して再投資額を算出
    }
    

    // G列:単純な複利計算
    compoundAssets *= (1 + annualRate / 12);
    compoundAssets += initialInvestment;

    sheet.appendRow([month, initialInvestment, totalAssets, profit, sellAmount, reinvestmentPool, compoundAssets]);
    
  }
  createInvestmentChart(); // グラフを作成
}


// グラフ作成用関数
function createInvestmentChart() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Investment");
  var range = sheet.getRange("A:G"); // 月数・総資産・単純複利のデータ範囲

  var chart = sheet.newChart()
    .setChartType(Charts.ChartType.LINE) // 折れ線グラフ
    .addRange(sheet.getRange(1, 1, sheet.getLastRow(), 1)) // X軸(A列:月)
    .addRange(sheet.getRange(1, 3, sheet.getLastRow(), 1)) // Y軸(E列:総資産)
    .addRange(sheet.getRange(1, 7, sheet.getLastRow(), 1)) // Y軸(G列:単純複利)
    .setPosition(2, 9, 0, 0) // グラフの位置
    .setOption("title", "投資シミュレーション: 総資産 vs. 単純複利")
    .setOption("hAxis.title", "月数")
    .setOption("vAxis.title", "金額(円)")
    .build();

  

  sheet.insertChart(chart);
}

使い方

  1. Google スプレッドシートを開く
  2. 拡張機能Apps Script を開く
  3. このコードをコピーして貼り付け
  4. calculateInvestment(); を実行すると、シミュレーション結果と折れ線グラフが表示される

実際の例

Settingsのシートのなかにボタンを作成して、年利を変えてシミュレーションすることも可能です。

結果は次のようになります。

純資産は結局20%利益がでたら売って、その売却益を10年に分けて毎月積み立てる場合で、単純複利は売らなかった場合です。

今回のシミュレーションでの結論

「売却せずにそのまま積み立てた方が有利になる可能性が高い」

理由:

  1. 複利効果の最大化 売却せずに運用を続けると、元本と利益の合計がさらに増え、その増えた分にも利息がつきます。つまり、「元本+利益」に対しての利回りがつくので、時間が経つほど資産の増加スピードが加速します。
  2. 売却すると複利の成長がリセットされる 20%の利益が出た時点で売却すると、確かに利益を確定できますが、その利益が本来生み出すはずだったさらなる複利効果を失います。その売却益を10年に分けて積み立てると、再び複利運用は可能ですが、元の運用を続ける場合と比べると資産の成長スピードは緩やかになります。
  3. 期間が長いほど「そのまま積み立て」が有利 投資期間が長いほど、複利の影響は大きくなります。仮に投資を10年ではなく、20年、30年と続ける場合、売却せずに積み立てた方が圧倒的に資産が増える可能性が高いです。

例外ケース:

  • もし市場のボラティリティが高く、20%の利益が出た後に大きく下落するような相場では、利益確定を優先する戦略も有効。
  • 売却益を使って異なる投資対象に分散する場合は、リスク管理という観点でメリットがある。

まとめ

このシミュレーションを利用して、ベストの投資条件を探してみてください。

Copied title and URL