積立投資シミュレーター

積立条件を入力
📊
条件を入力して「計算する」を押してください
予想評価額・資産推移グラフが表示されます

新NISAシミュレーターについて

本ツールは、2024年から始まった新NISA制度(少額投資非課税制度)に対応した、無料で使える資産運用シミュレーターです。積立投資一括投資資産取り崩し(FIRE)新NISA枠を考慮したシミュレーションの4種類に対応しており、月額・年利・運用年数を自由に設定して将来の予想評価額を計算できます。複利計算により、長期投資の力を視覚的に確認できる本格的なツールです。

新NISAは年間最大360万円(積立投資枠120万円+成長投資枠240万円)、生涯投資枠1,800万円の非課税投資が可能な制度です。本シミュレーターでは、これらの枠の使用率も自動計算し、最適な投資プランの検討に役立ちます。

主な機能

各シミュレーションの解説

積立投資|複利運用と長期積立のメリット

毎月一定額を投資し続ける積立投資は、購入価格が平準化されるドルコスト平均法により高値づかみのリスクを抑えられます。さらに運用益を再投資する複利の効果で、運用期間が長いほど資産は加速度的に増えます。例えば毎月3万円を年利5%で20年積み立てると、元本720万円に対し評価額は約1,237万円。時間を味方につけることが資産形成の王道です。

一括投資|積立との違いとリスク分散

一括投資はまとまった資金を一度に投じるため運用期間を最大化できますが、投資直後の下落の影響を受けやすい面があります。積立投資は時間分散でリスクを抑えられる一方、上昇相場では機会損失になることも。どちらが有利かは相場と手元資金次第です。投資対象の地域・資産の分散と長期保有を組み合わせることで、価格変動の影響をさらに平準化できます。

新NISA|非課税制度と1,800万円枠

新NISAは年間最大360万円、生涯1,800万円まで投資でき、運用益・配当が非課税になる制度です。通常は約20.315%課税される運用益が非課税になるため、長期・複利運用との相性は抜群です。非課税保有期間は無期限で、売却した分の枠は翌年に復活します。本タブでは積立枠と成長投資枠を組み合わせた複数フェーズ設定に対応し、枠の使用率も自動計算します。

FIRE逆算・取り崩し|4%ルールと取り崩し戦略

FIREは年間生活費の25倍の資産で経済的自立を目指す考え方です。築いた資産を年4%程度ずつ取り崩しても長期間維持しやすいという経験則が4%ルールです。ただし相場下落の時期やインフレで安全な取り崩し率は変動するため、保守的には3〜4%が目安。FIRE逆算タブで達成年数を、取り崩しタブで資産寿命をそれぞれ確認し、無理のない出口戦略を検討できます。

使い方

  1. タブを選択:画面上部から「積立投資」「一括投資」「資産取り崩し」「新NISAシミュレーター」のいずれかを選びます。
  2. 条件を入力:月額積立額・想定年利・運用年数などをスライダーまたは入力欄で設定します。
  3. 結果を確認:将来評価額・元本・運用益が自動計算され、グラフと数値で表示されます。
  4. シナリオ比較:必要に応じて「シナリオ比較」をONにし、複数条件を並べて比較できます。

よくある質問(FAQ)

Q1. 新NISAはいくらから始められますか?
A. 新NISAの積立投資枠は、金融機関によっては月100円から始められます。本シミュレーターでは月額・年利・運用年数を自由に設定して将来の予想評価額を試算できます。
Q2. 新NISAの年間投資上限はいくらですか?
A. 新NISAの年間投資上限は360万円です(積立投資枠120万円+成長投資枠240万円)。生涯投資枠は1,800万円(うち成長投資枠は1,200万円まで)です。
Q3. 積立投資と一括投資、どちらがおすすめですか?
A. どちらが有利かは相場状況や手元資金により異なります。本シミュレーターで両方のシナリオを比較し、ご自身の状況に合った判断にお役立てください。
Q4. FIRE達成に必要な資産はいくらですか?
A. 一般的に「年間生活費×25倍」(4%ルール)が目安とされています。本ツールの『資産取り崩し』タブで、保有資産から毎月いくら取り崩せるかをシミュレーションできます。
Q5. 計算結果は投資結果を保証しますか?
A. 本シミュレーターは想定利回りに基づく試算であり、将来の投資成果を保証するものではありません。実際の投資判断はご自身の責任で行ってください。

⚠️ ご利用にあたっての注意

本シミュレーターは情報提供のみを目的としており、特定の金融商品の購入・売却を推奨するものではありません。表示される結果は入力された条件に基づく試算であり、実際の運用成果を保証するものではありません。投資は元本割れのリスクを伴います。最終的な投資判断はご自身の責任で行ってください。

// ── help-pop を body に detach + fixed 位置で表示(panel overflow:auto に影響されない) ── (function setupHelpPop(){ function setup(){ document.querySelectorAll('.help-wrap').forEach(wrap => { const ic = wrap.querySelector('.help-ic'); const pop = wrap.querySelector('.help-pop'); if (!ic || !pop || pop.dataset.detached) return; // body 直下に移動 document.body.appendChild(pop); pop.dataset.detached = '1'; pop.style.position = 'fixed'; pop.style.top = '0'; pop.style.left = '0'; pop.style.zIndex = '9999'; pop.style.transition = 'opacity .15s'; pop.style.opacity = '0'; pop.style.visibility = 'hidden'; pop.style.pointerEvents = 'none'; pop.style.transform = 'none'; function show() { const rect = ic.getBoundingClientRect(); const vw = window.innerWidth, vh = window.innerHeight; pop.style.visibility = 'visible'; pop.style.opacity = '1'; // モバイル: 下部固定 if (vw <= 640) { pop.style.left = '16px'; pop.style.right = '16px'; pop.style.top = 'auto'; pop.style.bottom = '16px'; pop.style.width = 'auto'; pop.style.maxWidth = 'none'; return; } // PC: ?ボタン下に配置、viewport内に収める pop.style.right = 'auto'; pop.style.bottom = 'auto'; pop.style.width = '280px'; pop.style.maxWidth = 'min(300px, ' + (vw - 32) + 'px)'; let left = rect.left + rect.width/2 - 140; // 280/2 let top = rect.bottom + 9; if (left < 8) left = 8; if (left + 280 > vw - 8) left = vw - 288; if (top + 200 > vh) top = rect.top - 200 - 9; pop.style.left = left + 'px'; pop.style.top = top + 'px'; } function hide() { pop.style.opacity = '0'; pop.style.visibility = 'hidden'; } ic.addEventListener('mouseenter', show); ic.addEventListener('mouseleave', hide); ic.addEventListener('focus', show); ic.addEventListener('blur', hide); ic.addEventListener('touchstart', e => { show(); e.stopPropagation(); }, { passive: true }); document.addEventListener('touchend', () => setTimeout(hide, 100), { passive: true }); }); } setup(); new MutationObserver(setup).observe(document.body, { childList: true, subtree: true }); })(); // T-079: linkSlider 拡張 - スライド済み部分を青く塗りつぶす function syncRangeBg(range) { if (!range) return; const v = +range.value, mn = +range.min, mx = +range.max; const pct = mx > mn ? ((v - mn) / (mx - mn)) * 100 : 0; range.style.setProperty('--pct', pct + '%'); } // 既存 linkSlider を拡張: input イベントで syncBg (function enhanceLinkSliders(){ document.querySelectorAll('input[type="range"]').forEach(range => { syncRangeBg(range); range.addEventListener('input', () => syncRangeBg(range)); }); // 動的追加にも対応 new MutationObserver(() => { document.querySelectorAll('input[type="range"]').forEach(syncRangeBg); }).observe(document.body, { childList: true, subtree: true }); })();