ビットコイン(BTC)積立シミュレーター

目次

ビットコイン(BTC)積立シミュレーター

ビットコイン積立シミュレーター

過去の実績データで「あの時から積立していたら?」をシミュレーション

現在の評価額 ¥0
投資元本 ¥0
積立数量 0.00000000 BTC
評価損益 ¥0
損益率 +0.0%

⚠️ 注意事項

  • このシミュレーションは過去の実績データに基づいています(BTC価格:月初始値、為替レート:月初始値、期間:2013年4月〜2025年10月)。
  • 実際の取引では、取引手数料、スプレッド、税金等が発生します。
  • 仮想通貨は価格変動が非常に大きく、元本割れのリスクがあります。
  • 過去の実績は将来の成果を保証するものではありません。

免責事項

本シミュレーションは投資判断の参考となる情報提供のみを目的として作成されたもので、特定の商品の購入を推奨したり、個々の投資家の特定の投資目的、または要望を考慮しているものではありません。投資に関する最終決定は投資家ご自身の判断と責任でなされるようお願いします。万一、本シミュレーションに基づいてお客様が損害を被ったとしても、当方は一切その責任を負うものではありません。

データ出典

  • BTC/USD価格:CoinGecko(月初始値)
  • USD/JPY為替レート:Investing.com(月初始値)
  • データ期間:2013年4月〜2025年10月

コード

<!--
================================================
WordPress カスタムHTMLブロック用コード
================================================
セキュリティ】✅ ブラウザ内完結通信ゼロ
利用規約無償無保証投資判断は自己責任
================================================
-->

<!-- MSIM:STYLE-START -->
<style>
.btc-simulator * {margin:0; padding:0; box-sizing:border-box}
.btc-simulator {font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif; line-height:1.6; color:#333}
.btc-simulator .container {max-width:1200px; margin:0 auto; background:#fff; border-radius:12px; box-shadow:0 2px 12px rgba(0,0,0,.1); padding:30px}
.btc-simulator h1 {font-size:28px; margin:0 0 10px; color:#1a1a1a; text-align:center}
.btc-simulator .subtitle {font-size:14px; color:#666; text-align:center; margin:0 0 30px}
.btc-simulator .input-section {display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:20px; margin:0 0 30px}
.btc-simulator .input-group {display:flex; flex-direction:column}
.btc-simulator .input-group label {font-size:14px; font-weight:600; margin:0 0 8px; color:#555}
.btc-simulator .input-group input,
.btc-simulator .input-group select {padding:12px; border:2px solid #e0e0e0; border-radius:8px; font-size:16px; transition:.3s; background:#fff}
.btc-simulator .input-group input:focus,
.btc-simulator .input-group select:focus {outline:0; border-color:#f7931a; box-shadow:0 0 0 3px rgba(247,147,26,.1)}
.btc-simulator .input-group input:hover,
.btc-simulator .input-group select:hover {border-color:#b0b0b0}
.btc-simulator .results-section {display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:20px; margin:0 0 30px; padding:20px; background:#fff8f0; border-radius:8px}
.btc-simulator .result-item {display:flex; flex-direction:column; align-items:center; padding:15px; background:#fff; border-radius:8px; box-shadow:0 1px 3px rgba(0,0,0,.05)}
.btc-simulator .result-label {font-size:13px; color:#777; margin:0 0 8px; font-weight:500}
.btc-simulator .result-value {font-size:24px; font-weight:700; color:#f7931a}
.btc-simulator .result-value.principal {color:#757575}
.btc-simulator .result-value.profit {color:#2ecc71}
.btc-simulator .result-value.gain {color:#f7931a; font-size:20px}
.btc-simulator .chart-section {position:relative; height:400px; margin-top:20px}
.btc-simulator .chart-section canvas {width:100%!important; height:100%!important}
.btc-simulator .disclaimer-section {margin-top:40px; padding:20px; background:#fff3cd; border-left:4px solid #ffc107; border-radius:4px}
.btc-simulator .disclaimer-section .disclaimer-title {font-size:13px; font-weight:600; color:#856404; margin:0 0 10px}
.btc-simulator .disclaimer-section ul {margin:0 0 15px 20px}
.btc-simulator .disclaimer-section li {font-size:12px; color:#856404; margin:0 0 6px; line-height:1.6}
.btc-simulator .disclaimer-section .disclaimer-text {font-size:12px; color:#856404; line-height:1.6; margin:0}

@media (max-width:768px) {
  .btc-simulator .container {padding:20px}
  .btc-simulator h1 {font-size:24px; margin-bottom:8px}
  .btc-simulator .subtitle {font-size:13px; margin-bottom:20px}
  .btc-simulator .input-section {grid-template-columns:1fr; gap:15px}
  .btc-simulator .results-section {grid-template-columns:1fr; padding:15px}
  .btc-simulator .result-value {font-size:20px}
  .btc-simulator .chart-section {height:300px}
}

@media (max-width:480px) {
  .btc-simulator .container {padding:15px}
  .btc-simulator h1 {font-size:20px}
  .btc-simulator .input-group input,
  .btc-simulator .input-group select {padding:10px; font-size:14px}
  .btc-simulator .result-value {font-size:18px}
}
</style>
<!-- MSIM:STYLE-END -->

<!-- MSIM:HTML-START -->
<div class="btc-simulator" data-tool="btc-accumulation" data-version="1.1.0">
  <div class="container">
    <h1>ビットコイン積立シミュレーター</h1>
    <p class="subtitle">過去の実績データで「あの時から積立していたら?」をシミュレーション</p>

    <div class="input-section">
      <div class="input-group">
        <label>積立開始時期</label>
        <select data-ms-start-period>
          <option value="12">1年前</option>
          <option value="24">2年前</option>
          <option value="36" selected>3年前</option>
          <option value="48">4年前</option>
          <option value="60">5年前</option>
          <option value="72">6年前</option>
          <option value="84">7年前</option>
          <option value="96">8年前</option>
          <option value="108">9年前</option>
          <option value="120">10年前</option>
          <option value="132">11年前</option>
          <option value="144">12年前</option>
        </select>
      </div>
      <div class="input-group">
        <label>毎月の積立額(円)</label>
        <input type="number" data-ms-monthly-amount value="500" min="500" max="1000000" step="500">
      </div>
    </div>

    <div class="results-section">
      <div class="result-item">
        <span class="result-label">現在の評価額</span>
        <span class="result-value" data-ms-total>¥0</span>
      </div>
      <div class="result-item">
        <span class="result-label">投資元本</span>
        <span class="result-value principal" data-ms-principal>¥0</span>
      </div>
      <div class="result-item">
        <span class="result-label">積立数量</span>
        <span class="result-value" data-ms-btc-amount style="font-size:20px">0.00000000 BTC</span>
      </div>
      <div class="result-item">
        <span class="result-label">評価損益</span>
        <span class="result-value profit" data-ms-profit>¥0</span>
      </div>
      <div class="result-item">
        <span class="result-label">損益率</span>
        <span class="result-value gain" data-ms-gain>+0.0%</span>
      </div>
    </div>

    <div class="chart-section">
      <canvas data-ms-canvas></canvas>
    </div>

    <div class="disclaimer-section">
      <p class="disclaimer-title">⚠️ 注意事項</p>
      <ul>
        <li>このシミュレーションは過去の実績データに基づいています(BTC価格:月初始値、為替レート:月初始値、期間:2013年4月〜2025年10月)。</li>
        <li>実際の取引では、取引手数料、スプレッド、税金等が発生します。</li>
        <li>仮想通貨は価格変動が非常に大きく、元本割れのリスクがあります。</li>
        <li>過去の実績は将来の成果を保証するものではありません。</li>
      </ul>
      <p class="disclaimer-title">免責事項</p>
      <p class="disclaimer-text">本シミュレーションは投資判断の参考となる情報提供のみを目的として作成されたもので、特定の商品の購入を推奨したり、個々の投資家の特定の投資目的、または要望を考慮しているものではありません。投資に関する最終決定は投資家ご自身の判断と責任でなされるようお願いします。万一、本シミュレーションに基づいてお客様が損害を被ったとしても、当方は一切その責任を負うものではありません。</p>
      <p class="disclaimer-title">データ出典</p>
      <ul>
        <li>BTC/USD価格:<a href="https://www.coingecko.com/" target="_blank" rel="noopener nofollow" style="color:#856404;text-decoration:underline">CoinGecko</a>(月初始値)</li>
        <li>USD/JPY為替レート:<a href="https://www.investing.com/" target="_blank" rel="noopener nofollow" style="color:#856404;text-decoration:underline">Investing.com</a>(月初始値)</li>
        <li>データ期間:2013年4月〜2025年10月</li>
      </ul>
    </div>

    <div style="text-align:right;margin-top:30px;color:#999;font-size:12px">
      Powered by <a href="https://minna-calc.com/" target="_blank" rel="noopener" style="color:#0066cc;text-decoration:none">みんなのシミュレーター</a>
    </div>
  </div>
</div>
<!-- MSIM:HTML-END -->

<!-- MSIM:JS-START -->
<script>
(()=>{
  "use strict";

  // ビットコイン月次価格データ(2013年4月〜2025年10月)
  // BTC価格(USD)+ 実際の為替レート(月初始値)で計算
  const btcData = [
    {date:'2013-04-28',usd:135.30,jpy:12747,fx:94.21},{date:'2013-05-01',usd:117.00,jpy:11402,fx:97.45},
    {date:'2013-06-01',usd:129.09,jpy:12983,fx:100.57},{date:'2013-07-01',usd:97.50,jpy:9682,fx:99.30},
    {date:'2013-08-01',usd:106.23,jpy:10398,fx:97.88},{date:'2013-09-01',usd:138.17,jpy:13593,fx:98.38},
    {date:'2013-10-01',usd:132.55,jpy:13019,fx:98.22},{date:'2013-11-01',usd:205.26,jpy:20187,fx:98.35},
    {date:'2013-12-01',usd:1033.39,jpy:105871,fx:102.45},{date:'2014-01-01',usd:767.74,jpy:80835,fx:105.29},
    {date:'2014-02-01',usd:832.52,jpy:84942,fx:102.03},{date:'2014-03-01',usd:560.11,jpy:56879,fx:101.55},
    {date:'2014-04-01',usd:478.72,jpy:49413,fx:103.22},{date:'2014-05-01',usd:455.09,jpy:46529,fx:102.24},
    {date:'2014-06-01',usd:640.16,jpy:65188,fx:101.83},{date:'2014-07-01',usd:643.94,jpy:65256,fx:101.34},
    {date:'2014-08-01',usd:593.87,jpy:61049,fx:102.80},{date:'2014-09-01',usd:475.82,jpy:49514,fx:104.06},
    {date:'2014-10-01',usd:380.89,jpy:41765,fx:109.65},{date:'2014-11-01',usd:323.98,jpy:36438,fx:112.47},
    {date:'2014-12-01',usd:379.49,jpy:45049,fx:118.71},{date:'2015-01-01',usd:313.99,jpy:37585,fx:119.70},
    {date:'2015-02-01',usd:226.27,jpy:26582,fx:117.48},{date:'2015-03-01',usd:257.71,jpy:30835,fx:119.65},
    {date:'2015-04-01',usd:246.78,jpy:29645,fx:120.13},{date:'2015-05-01',usd:232.74,jpy:27785,fx:119.38},
    {date:'2015-06-01',usd:223.32,jpy:27720,fx:124.13},{date:'2015-07-01',usd:257.51,jpy:31542,fx:122.49},
    {date:'2015-08-01',usd:280.70,jpy:34815,fx:124.03},{date:'2015-09-01',usd:227.16,jpy:27539,fx:121.23},
    {date:'2015-10-01',usd:237.74,jpy:28500,fx:119.88},{date:'2015-11-01',usd:325.00,jpy:39214,fx:120.66},
    {date:'2015-12-01',usd:363.45,jpy:44741,fx:123.10},{date:'2016-01-01',usd:434.43,jpy:52257,fx:120.29},
    {date:'2016-02-01',usd:371.04,jpy:44940,fx:121.12},{date:'2016-03-01',usd:431.37,jpy:48611,fx:112.69},
    {date:'2016-04-01',usd:416.75,jpy:46914,fx:112.57},{date:'2016-05-01',usd:452.59,jpy:48111,fx:106.30},
    {date:'2016-06-01',usd:539.17,jpy:59691,fx:110.71},{date:'2016-07-01',usd:677.71,jpy:70001,fx:103.29},
    {date:'2016-08-01',usd:605.75,jpy:61829,fx:102.07},{date:'2016-09-01',usd:571.59,jpy:59120,fx:103.43},
    {date:'2016-10-01',usd:614.06,jpy:62235,fx:101.35},{date:'2016-11-01',usd:729.20,jpy:76443,fx:104.83},
    {date:'2016-12-01',usd:753.06,jpy:86187,fx:114.45},{date:'2017-01-01',usd:998.05,jpy:116772,fx:117.00},
    {date:'2017-02-01',usd:986.57,jpy:111295,fx:112.81},{date:'2017-03-01',usd:1227.48,jpy:138435,fx:112.78},
    {date:'2017-04-01',usd:1085.25,jpy:120897,fx:111.40},{date:'2017-05-01',usd:1408.44,jpy:156774,fx:111.31},
    {date:'2017-06-01',usd:2436.04,jpy:269840,fx:110.77},{date:'2017-07-01',usd:2439.82,jpy:273601,fx:112.14},
    {date:'2017-08-01',usd:2737.76,jpy:301866,fx:110.26},{date:'2017-09-01',usd:4863.19,jpy:534854,fx:109.98},
    {date:'2017-10-01',usd:4347.58,jpy:489363,fx:112.56},{date:'2017-11-01',usd:6714.79,jpy:763069,fx:113.64},
    {date:'2017-12-01',usd:10995.72,jpy:1237459,fx:112.54},{date:'2018-01-01',usd:14093.61,jpy:1587927,fx:112.67},
    {date:'2018-02-01',usd:10114.50,jpy:1104503,fx:109.20},{date:'2018-03-01',usd:10346.66,jpy:1103782,fx:106.68},
    {date:'2018-04-01',usd:6975.28,jpy:741193,fx:106.26},{date:'2018-05-01',usd:9198.19,jpy:1005822,fx:109.35},
    {date:'2018-06-01',usd:7460.17,jpy:811815,fx:108.82},{date:'2018-07-01',usd:6366.50,jpy:704708,fx:110.69},
    {date:'2018-08-01',usd:7738.25,jpy:865755,fx:111.88},{date:'2018-09-01',usd:7027.63,jpy:780700,fx:111.09},
    {date:'2018-10-01',usd:6626.04,jpy:753381,fx:113.70},{date:'2018-11-01',usd:6366.72,jpy:719121,fx:112.95},
    {date:'2018-12-01',usd:4009.69,jpy:455020,fx:113.48},{date:'2019-01-01',usd:3692.53,jpy:404628,fx:109.58},
    {date:'2019-02-01',usd:3431.94,jpy:373670,fx:108.88},{date:'2019-03-01',usd:3815.61,jpy:425059,fx:111.40},
    {date:'2019-04-01',usd:4103.52,jpy:454711,fx:110.81},{date:'2019-05-01',usd:5292.80,jpy:589830,fx:111.44},
    {date:'2019-06-01',usd:8575.65,jpy:929429,fx:108.38},{date:'2019-07-01',usd:10888.10,jpy:1177112,fx:108.11},
    {date:'2019-08-01',usd:10063.00,jpy:1094854,fx:108.80},{date:'2019-09-01',usd:9607.29,jpy:1020774,fx:106.25},
    {date:'2019-10-01',usd:8271.29,jpy:893961,fx:108.08},{date:'2019-11-01',usd:9151.82,jpy:989038,fx:108.07},
    {date:'2019-12-01',usd:7556.40,jpy:827728,fx:109.54},{date:'2020-01-01',usd:7195.15,jpy:781610,fx:108.63},
    {date:'2020-02-01',usd:9308.06,jpy:1009087,fx:108.41},{date:'2020-03-01',usd:8552.99,jpy:918591,fx:107.40},
    {date:'2020-04-01',usd:6421.71,jpy:690654,fx:107.55},{date:'2020-05-01',usd:8610.64,jpy:922974,fx:107.19},
    {date:'2020-06-01',usd:9466.96,jpy:1019970,fx:107.74},{date:'2020-07-01',usd:9149.72,jpy:987621,fx:107.94},
    {date:'2020-08-01',usd:11325.55,jpy:1199263,fx:105.89},{date:'2020-09-01',usd:11672.32,jpy:1236449,fx:105.93},
    {date:'2020-10-01',usd:10770.88,jpy:1136005,fx:105.47},{date:'2020-11-01',usd:13778.64,jpy:1440970,fx:104.58},
    {date:'2020-12-01',usd:19609.52,jpy:2045665,fx:104.32},{date:'2021-01-01',usd:29022.42,jpy:2996855,fx:103.26},
    {date:'2021-02-01',usd:33064.79,jpy:3461222,fx:104.68},{date:'2021-03-01',usd:44970.16,jpy:4792470,fx:106.57},
    {date:'2021-04-01',usd:58817.37,jpy:6514024,fx:110.75},{date:'2021-05-01',usd:57828.51,jpy:6318921,fx:109.27},
    {date:'2021-06-01',usd:37340.68,jpy:4091418,fx:109.57},{date:'2021-07-01',usd:35171.49,jpy:3907904,fx:111.11},
    {date:'2021-08-01',usd:41754.17,jpy:4580432,fx:109.70},{date:'2021-09-01',usd:47335.42,jpy:5208316,fx:110.03},
    {date:'2021-10-01',usd:43859.33,jpy:4880666,fx:111.28},{date:'2021-11-01',usd:61471.87,jpy:7006564,fx:113.98},
    {date:'2021-12-01',usd:57011.28,jpy:6452537,fx:113.18},{date:'2022-01-01',usd:46319.65,jpy:5331392,fx:115.10},
    {date:'2022-02-01',usd:38555.53,jpy:4438899,fx:115.13},{date:'2022-03-01',usd:43225.40,jpy:4971354,fx:115.01},
    {date:'2022-04-01',usd:45528.41,jpy:5539441,fx:121.67},{date:'2022-05-01',usd:37820.61,jpy:4908359,fx:129.78},
    {date:'2022-06-01',usd:31865.75,jpy:4099529,fx:128.65},{date:'2022-07-01',usd:19608.40,jpy:2661448,fx:135.73},
    {date:'2022-08-01',usd:23379.70,jpy:3114878,fx:133.23},{date:'2022-09-01',usd:20023.55,jpy:2782673,fx:138.97},
    {date:'2022-10-01',usd:19476.93,jpy:2816558,fx:144.61},{date:'2022-11-01',usd:20494.60,jpy:3047752,fx:148.71},
    {date:'2022-12-01',usd:17186.50,jpy:2372940,fx:138.07},{date:'2023-01-01',usd:16540.69,jpy:2168981,fx:131.13},
    {date:'2023-02-01',usd:23137.32,jpy:3009703,fx:130.08},{date:'2023-03-01',usd:23155.54,jpy:3154248,fx:136.22},
    {date:'2023-04-01',usd:28516.78,jpy:3792447,fx:132.99},{date:'2023-05-01',usd:29362.06,jpy:4002048,fx:136.30},
    {date:'2023-06-01',usd:27245.47,jpy:3796657,fx:139.35},{date:'2023-07-01',usd:30480.78,jpy:4400510,fx:144.37},
    {date:'2023-08-01',usd:29233.14,jpy:4160168,fx:142.31},{date:'2023-09-01',usd:25927.42,jpy:3773476,fx:145.54},
    {date:'2023-10-01',usd:26969.88,jpy:4031457,fx:149.48},{date:'2023-11-01',usd:34672.29,jpy:5260480,fx:151.72},
    {date:'2023-12-01',usd:37711.82,jpy:5588891,fx:148.20},{date:'2024-01-01',usd:42208.20,jpy:5944181,fx:140.83},
    {date:'2024-02-01',usd:42583.26,jpy:6255056,fx:146.89},{date:'2024-03-01',usd:61298.22,jpy:9193507,fx:149.98},
    {date:'2024-04-01',usd:71246.95,jpy:10781089,fx:151.32},{date:'2024-05-01',usd:60749.47,jpy:9586874,fx:157.81},
    {date:'2024-06-01',usd:67474.95,jpy:10615160,fx:157.32},{date:'2024-07-01',usd:62734.39,jpy:10093337,fx:160.89},
    {date:'2024-08-01',usd:64679.78,jpy:9701320,fx:149.99},{date:'2024-09-01',usd:58960.24,jpy:8619397,fx:146.19},
    {date:'2024-10-01',usd:63243.28,jpy:9083632,fx:143.63},{date:'2024-11-01',usd:70265.00,jpy:10683090,fx:152.04},
    {date:'2024-12-01',usd:96513.14,jpy:14452843,fx:149.75},{date:'2025-01-01',usd:93507.86,jpy:14699435,fx:157.20},
    {date:'2025-02-01',usd:102382.39,jpy:15863128,fx:154.94},{date:'2025-03-01',usd:84441.90,jpy:12707662,fx:150.49},
    {date:'2025-04-01',usd:82514.09,jpy:12373813,fx:149.96},{date:'2025-05-01',usd:94235.75,jpy:13482309,fx:143.07},
    {date:'2025-06-01',usd:104687.51,jpy:15081282,fx:144.06},{date:'2025-07-01',usd:107132.80,jpy:15431408,fx:144.04},
    {date:'2025-08-01',usd:115700.00,jpy:17442932,fx:150.76},{date:'2025-09-01',usd:108253.36,jpy:15921904,fx:147.08},
    {date:'2025-10-01',usd:114024.23,jpy:16866464,fx:147.92}
  ];

  // 通貨フォーマッター
  const fmt = new Intl.NumberFormat("ja-JP", {
    style: "currency",
    currency: "JPY",
    minimumFractionDigits: 0,
    maximumFractionDigits: 0
  });

  // Chart.js 遅延読み込み
  const CJ_URL = "https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js";
  let loadingCJ = false, loadedCJ = !!window.Chart;

  function ensureChartJs(cb) {
    if (loadedCJ) { cb(); return }
    if (!loadingCJ) {
      loadingCJ = true;
      const s = document.createElement("script");
      s.src = CJ_URL;
      s.defer = true;
      s.onload = () => { loadedCJ = true; cb && cb() };
      s.onerror = () => console.error("Chart.js load failed");
      document.head.appendChild(s);
    } else {
      const t = setInterval(() => {
        if (loadedCJ) { clearInterval(t); cb && cb() }
      }, 50);
    }
  }

  // ブート関数
  function boot(root) {
    let chart = null, lastData = null;
    const q = s => root.querySelector(s);
    const els = {
      startPeriod: q("[data-ms-start-period]"),
      monthlyAmount: q("[data-ms-monthly-amount]"),
      total: q("[data-ms-total]"),
      principal: q("[data-ms-principal]"),
      btcAmount: q("[data-ms-btc-amount]"),
      profit: q("[data-ms-profit]"),
      gain: q("[data-ms-gain]"),
      cv: q("[data-ms-canvas]")
    };

    // 計算関数
    function calc(months, monthlyAmount) {
      const startIdx = Math.max(0, btcData.length - months - 1);
      const currentPrice = btcData[btcData.length - 1].jpy;

      let totalBTC = 0;
      let totalInvested = 0;
      const timeline = [];

      for (let i = startIdx; i < btcData.length - 1; i++) {
        const price = btcData[i].jpy;
        const btcAmount = monthlyAmount / price;
        totalBTC += btcAmount;
        totalInvested += monthlyAmount;

        const currentValue = totalBTC * currentPrice;
        const profit = currentValue - totalInvested;

        timeline.push({
          date: btcData[i].date,
          invested: totalInvested,
          value: Math.round(currentValue),
          profit: Math.round(profit)
        });
      }

      const finalValue = totalBTC * currentPrice;
      const finalProfit = finalValue - totalInvested;
      const gainPercent = totalInvested > 0 ? (finalProfit / totalInvested) * 100 : 0;

      return {
        totalValue: Math.round(finalValue),
        totalInvested: Math.round(totalInvested),
        totalProfit: Math.round(finalProfit),
        totalBTC: totalBTC,
        gainPercent: gainPercent,
        timeline: timeline
      };
    }

    // グラフ描画関数
    function draw(data) {
      lastData = data;
      if (!loadedCJ) {
        ensureChartJs(() => draw(lastData));
        return;
      }

      const labels = data.timeline.map(d => d.date.substring(0, 7));
      const invested = data.timeline.map(d => d.invested);
      const values = data.timeline.map(d => d.value);

      const cfg = {
        type: "line",
        data: {
          labels,
          datasets: [
            {
              label: "評価額",
              data: values,
              borderColor: "#f7931a",
              backgroundColor: "rgba(247,147,26,.1)",
              borderWidth: 2,
              fill: false,
              tension: 0.3
            },
            {
              label: "投資元本",
              data: invested,
              borderColor: "#757575",
              backgroundColor: "rgba(117,117,117,.05)",
              borderWidth: 2,
              fill: false,
              tension: 0
            }
          ]
        },
        options: {
          responsive: true,
          maintainAspectRatio: false,
          interaction: {
            mode: 'index',
            intersect: false
          },
          plugins: {
            legend: {
              display: true,
              position: "top",
              labels: {
                font: { size: 13, family: '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif' },
                padding: 15
              }
            },
            tooltip: {
              mode: "index",
              intersect: false,
              callbacks: {
                label: t => (t.dataset.label ? t.dataset.label + ": " : "") + fmt.format(t.parsed.y)
              },
              backgroundColor: "rgba(0,0,0,.8)",
              padding: 12,
              titleFont: { size: 14 },
              bodyFont: { size: 13 }
            }
          },
          scales: {
            x: {
              grid: { display: false },
              ticks: {
                font: { size: 11 },
                maxRotation: 45,
                minRotation: 45
              }
            },
            y: {
              beginAtZero: true,
              ticks: {
                callback: v => fmt.format(v),
                font: { size: 11 }
              },
              grid: { color: "rgba(0,0,0,.05)" }
            }
          },
          animation: { duration: 750, easing: "easeInOutQuart" }
        }
      };

      if (chart) { chart.destroy() }
      chart = new Chart(els.cv, cfg);
    }

    // 更新関数
    function update() {
      const months = parseInt(els.startPeriod.value) || 36;
      const monthlyAmount = parseFloat(els.monthlyAmount.value) || 30000;

      const result = calc(months, monthlyAmount);

      els.total.textContent = fmt.format(result.totalValue);
      els.principal.textContent = fmt.format(result.totalInvested);
      els.btcAmount.textContent = result.totalBTC.toFixed(8) + ' BTC';
      els.profit.textContent = fmt.format(result.totalProfit);

      const sign = result.gainPercent >= 0 ? '+' : '';
      els.gain.textContent = sign + result.gainPercent.toFixed(1) + '%';
      els.gain.style.color = result.gainPercent >= 0 ? '#2ecc71' : '#e74c3c';

      draw(result);
    }

    // イベントリスナー
    els.startPeriod.addEventListener("change", update);
    ["input", "change"].forEach(ev => {
      els.monthlyAmount.addEventListener(ev, update);
    });

    // Chart.js 遅延読み込み(IntersectionObserver)
    if ("IntersectionObserver" in window) {
      const io = new IntersectionObserver(es => {
        es.some(e => e.isIntersecting) && (ensureChartJs(() => {}), io.disconnect());
      });
      io.observe(els.cv);
    }

    update();
  }

  // 初期化
  window.addEventListener("DOMContentLoaded", () =>
    document.querySelectorAll('.btc-simulator[data-tool="btc-accumulation"]').forEach(boot)
  );
})();
</script>
<!-- MSIM:JS-END -->

シミュレーターについて

使用データ

ビットコイン積立シミュレーターでは、実際の市場データを使用しています。

価格データの取得元は次の通りです。

項目内容
BTC/USD価格CoinGeckoから取得した月初始値
USD/JPY為替レートInvesting.comから取得した月初始値
データ期間2013年4月〜2025年10月(計151ヶ月分)

計算方法

積立シミュレーションの仕組みを説明します。

毎月の購入処理では、選択した開始時期から毎月初日に指定金額でビットコインを購入します。

その月のBTC価格(円建て)でBTC数量を算出する仕組みです。

たとえば月初のBTC価格が100万円、積立額が1万円なら0.01 BTCを購入します。

評価額は、累積購入したBTC数量に現在のBTC価格(2025年10月時点)をかけて算出します。

評価損益は評価額から投資元本を引いた金額です。

損益率は評価損益を投資元本で割って100をかけた数値になります。

円建て価格の算出では、次の計算式を使用しています。

BTC/USD価格(ドル)× USD/JPY為替レート = BTC/JPY価格(円)

すべての計算に実際の為替レートを反映しました。

特徴

ドルコスト平均法により、毎月一定額を積み立てて価格変動リスクを分散します。

実際の市場データを使用した正確なシミュレーションです。

ブラウザで完結するため、データ送信はなくプライバシーを完全に保護します。

注意事項

シミュレーションに含まれていない項目があります。

項目説明
取引手数料取引所に支払う手数料
スプレッド売買価格差
税金雑所得として最大55%課税
送金手数料ウォレット間の送金コスト

実際の投資ではコストが発生するため、シミュレーション結果より利益は減少します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

目次