投資計算器公式大全:CAGR / IRR / 最大回撤 + Excel / Python

Winson
閱讀量: ...
投資計算器公式大全:CAGR / IRR / 最大回撤 + Excel / Python

如果你在 2026 年還只用「這次賺了 20%」「今年虧了 10%」這種口頭數字描述自己的投資績效,那這篇會直接幫你把投資計算器的全部核心公式一次補齊。

我不是要賣你什麼工具,而是想用一個 .NET 工程師的視角,把過去 4 年我用過的所有投資計算器公式——CAGRIRR最大回撤夏普比率、倉位大小——拆成「公式推導 + Excel 函數 + Python 範例」三層,讓你今天就能在自家電腦上跑出來。投資報酬不該是憑感覺的數字,必須是可以重算、可審計、可比較的指標。

工程師桌面的投資計算器工作流

Fig 1. 一個工程師的投資計算器工作流:左邊 ExcelCAGR / IRR,右邊 VSCode 跑 pandas 算最大回撤,中間一杯咖啡,淺色木紋桌面。

一、為什麼投資計算器很重要:你缺的不是更多資訊,是可量化的指標

很多散戶的問題不是「資訊不夠」,而是「沒有把資訊翻譯成可比較的數字」。我自己在 2022 年之前也是這樣:帳面看起來賺,但實際年化是多少?最慘的時候虧到多深?梭哈某檔個股的倉位佔比到底有多大?這些問題我都答不出來,因為我沒用過任何投資計算器,全部是憑感覺。

1. 散戶常見的 3 個「感覺陷阱」

第一個陷阱是只看帳面總報酬。去年賺 30%、今年虧 10%,聽起來好像 +20%,但如果你中間曾經從 -40% 爬回來,你的「最大回撤」其實是 40%,這個數字對心理素質的考驗遠比 -10% 大得多。如果沒有最大回撤這個指標,你根本不知道自己實際承受了多少下行風險。

第二個陷阱是忽略資金的時間價值。同樣 5 年賺 60%,分批投入跟一次梭哈算出來的「年化回報」完全不同。前者要用 IRR(內部報酬率)算,後者可以用 CAGR(年複合成長率)算。用錯公式的話,你會高估或低估自己的實際能力。

第三個陷阱是滿倉梭哈。很多散戶連「倉位大小公式」是什麼都不知道,就直接 all-in。這種做法在牛市中或許能跑贏,但在熊市一次就能回到解放前。

2. 工程師視角:把投資決策拆成可計算的輸入

做程式的人喜歡把一個複雜問題拆成可計算的輸入。在我看來,投資決策的核心輸入只有 4 個:

  1. 投入:你總共投了多少本金(含分批加倉的時點與金額)
  2. 回報:你最後拿回多少(減去手續費、稅、匯費)
  3. 時間:你持有多久(按年、按月、按日算)
  4. 風險:你中間承受的最大回撤是多少、波動度多高

把這 4 個輸入套進 5 個常用投資計算器公式CAGRIRR最大回撤夏普比率、倉位大小),你就能把一個黑箱的「感覺」轉成白盒的「數字」。下面就一個一個拆。

二、CAGR 計算公式 / IRR 內部報酬率 Excel:衡量「長期年化回報」的兩大公式

衡量年化回報的投資計算器公式有兩個,看你的現金流是「一次投入」還是「分批投入」。

1. CAGR 公式推導 + Excel =POWER() 範例

CAGR(Compound Annual Growth Rate,年複合成長率) 是投資計算器裡最直觀的年化公式,適用於「一次投入、中間不再加碼」的場景:

CAGR = (終值 / 起初值) ^ (1 / 年數) − 1

例如你 5 年前投入 100 萬,今天帳戶變 161 萬:

  • CAGR = (161 / 100) ^ (1/5) − 1 = 1.10 − 1 = 10%

Excel 裡只要兩個儲存格:

=POWER(終值 / 起初值, 1 / 年數) - 1

把數字帶進去就是 =POWER(161/100, 1/5) - 1 = 0.10。注意 CAGR 的前提是中間沒有任何資金進出——一旦你在第 3 年加碼 50 萬,這個公式就算不準了,要改用 IRR

2. IRR 公式 + Excel =IRR() / =XIRR() 範例

IRR(Internal Rate of Return,內部報酬率) 是投資計算器裡處理「不規則現金流」的標準答案。你只要把所有投入記為負值、最終贖回記為正值,Excel 會自動幫你求出讓 NPV=0 的折現率。

  • =IRR(現金流範圍):用在等間距現金流(例如每月 1 號定投)
  • =XIRR(現金流範圍, 日期範圍):用在任意日期現金流(更貼近實戰)

假設你 2024-01-15 投 30 萬、2024-06-15 再投 20 萬、2025-12-20 全部贖回拿回 58 萬。Excel=XIRR({-300000,-200000,580000}, {DATE(2024,1,15),DATE(2024,6,15),DATE(2025,12,20)}) 就會回傳年化約 7.3%。這個數字比 CAGR 真實得多,因為它考慮了「錢什麼時候進場」這個時間價值。

3. CAGR vs IRR 怎麼選

簡單口訣:一次性投入用 CAGR,分批 / 定投用 IRR。前者看「資金在場的年化成長率」,後者看「包含資金時間價值的真實報酬率」。我自己的習慣是兩者都算,互相比對——如果 IRR 遠低於 CAGR,代表你「加碼太早,把錢砸在高位」;如果 IRR 遠高於 CAGR,代表你「加碼時機很好,DCA 策略成功」。

CAGR 公式 + Excel 範例對照圖

Fig 2. CAGR 公式推導(LaTeX 排版)vs Excel =POWER() 函數實作對照:5 年 100→161 萬 → 年化 10%。

三、最大回撤 計算 / 夏普比率 計算:衡量「下行風險」的兩個核心指標

光看回報不夠,一個完整的投資計算器還要告訴你「中間最慘的時候虧到多深」「每承擔 1 單位風險能換幾倍無風險回報」。這就要靠最大回撤夏普比率這兩個風險指標。

1. 最大回撤 (MDD) 公式 + Excel 公式法 + Python 迴圈法

最大回撤 (Maximum Drawdown, MDD) 是投資計算器裡最關鍵的風險指標,定義是「從歷史最高點到後續最低點的最大跌幅」,公式很簡單:

MDD = (Peak − Trough) / Peak

其中 Peak 是區間內的最高價、Trough 是 Peak 之後出現的最低價。例如你的股價序列從 100 漲到 130(Peak),再跌到 80(Trough),後回升到 100:

  • MDD = (130 − 80) / 130 = 38.46%

Excel 公式法(假設價格在 A2:A100):

=MAX(IF(ROW(A2:A100)=MATCH(MAX(A2:A100),A2:A100,0)+ROW(A2)-1, ...))  // 太複雜,建議用輔助欄

實戰上我會用 Python 迴圈算(10 行內搞定):

import pandas as pd
prices = pd.Series([100, 110, 130, 95, 80, 92, 100, 105])
peak = prices.cummax()
drawdown = (prices - peak) / peak
mdd = drawdown.min()  # 結果: -0.3846 (即 -38.46%)

最大回撤是最重要的風險指標,沒有之一。你可以接受 MDD = -20% 的策略,但你必須事先知道這件事——這就是投資計算器在風險面的最大價值。

2. 標準差 / 波動度:MDD 的好朋友,年化波動率換算公式

**波動度(年化標準差)**是 MDD 的好朋友,衡量「價格上下震盪的劇烈程度」:

  • 日標準差:=STDEV(日報酬序列)Excel)或 df['daily_return'].std()(pandas)
  • 年化波動率:=日標準差 * SQRT(252)(252 是一年的交易日數)

一般股票的年化波動率在 20-40%,加密貨幣在 60-120%。如果你看到一個策略號稱年化 30%、波動度只有 5%,那是穩賺不賠的聖杯,根本不存在。波動度的另一個用途是做夏普比率的分母。

3. 夏普比率公式 + 意義:每承擔 1 單位風險換幾倍無風險回報

夏普比率 (Sharpe Ratio) 是投資計算器裡跨策略比較的標配指標,衡量「每多承擔 1 單位風險,能多換幾倍無風險回報」:

Sharpe = (策略年化報酬 − 無風險利率) / 策略年化波動率

無風險利率常用美國 10 年期公債殖利率(2026 年約 4.2%)或台灣 1 年期定存(1.7%)。假設策略年化 12%、波動度 15%,無風險 4%:

  • Sharpe = (12 − 4) / 15 = 0.53

這個數字的意思是「每承擔 1 單位風險,換 0.53 單位的超額回報」。一般來說,Sharpe > 1 算優秀、> 2 算頂級、百億私募 2025 平均大概在 1.5-2.2 區間。夏普比率讓你可以跨策略、跨市場地比較風險調整後回報,這是任何投資計算器都應該輸出的核心指標之一。

股價最大回撤示意圖

Fig 3. 最大回撤示意圖:股價從 100 上升到 130(Peak)、跌到 80(Trough)、後回升到 100。MDD = (130-80)/130 = 38.46%,紅色虛線標示 Peak→Trough 區段。

四、倉位大小公式:凱利公式 + 風險百分比法,梭哈之前先算這條

倉位管理是散戶最容易忽略、卻是職業交易員最在意的環節。梭哈之前,請先把倉位大小 公式這條算清楚。

1. 倉位 = 持倉市值 ÷ 總資金(含現金 + 持倉動態重算)

最基本的倉位公式,也是投資計算器最常被忽略的一條:

倉位% = 持倉市值 / (持倉市值 + 現金)

例如你持倉 80 萬 + 現金 20 萬,總資金 100 萬,倉位 = 80%。這個數字每天隨股價變動,要動態重算。散戶最常犯的錯是「以為自己倉位 50%,但股價漲了 2 倍後實際倉位已經 75%」——沒有動態重算就等於沒有倉位管理。

2. 凱利公式 (Kelly Criterion) + 為什麼實戰只用 1/4 Kelly

凱利公式 是投資計算器裡最理論化的倉位公式,告訴你「贏面 p、賠率 b 時,最優下注比例」:

f* = (p × (b + 1) − 1) / b

例如你勝率 60%、賺賠比 1:1(贏 1 賠 1):

  • f* = (0.6 × 2 − 1) / 1 = 0.2 → 最優倉位 20%

但實戰上永遠不要用滿 Kelly,因為:(1) 你對勝率、賺賠比的估計一定有誤差;(2) 滿 Kelly 的下注波動極大,MDD 會很恐怖。職業交易員的共識是用 1/4 Kelly 或更保守的版本,例如 60% 勝率 1:1 賠率只用 5% 倉位,MDD 立刻降一個數量級。

3. 風險百分比法:單筆最大虧損 ÷ 帳戶 = 該筆倉位

工程師最愛的倉位公式,因為它直接跟止損綁定

單筆倉位 = (帳戶 × 單筆最大虧損%) / (進場價 − 止損價)

例如帳戶 100 萬、單筆最大虧損 2%(2 萬)、進場價 100、止損價 92:

  • 單筆倉位股數 = 20000 / (100 − 92) = 2500 股
  • 單筆倉位市值 = 2500 × 100 = 25 萬
  • 倉位% = 25 / 100 = 25%

這個公式的好處是「不管你進什麼股票,單筆最大虧損永遠固定在 2%」——你只要把止損設好,剩下交給市場。即使連虧 5 筆,帳戶也只虧 10%,心理素質完全可以撐住。

倉位大小計算機小卡片

Fig 4. 倉位大小計算機範例:帳戶 100 萬、單筆最大虧損 2%、止損 8% → 單筆可開倉位 = 25 萬(25% 倉位)。無論進哪檔股票,最大虧損永遠固定在 2 萬。

五、Python 投資 計算 + Excel 兩條路線:工程師實作怎麼選

公式都會了,接下來的問題是投資計算器要走 Excel 路線還是 Python 路線?這是工程師讀者最常問我的問題,答案是「看場景」。

1. Excel 路線:5 分鐘上手、券商匯出 CSV 就能算,缺點是不能批次

Excel 路線的投資計算器優勢是所見即所得。你把券商匯出的 CSV 貼到工作表,=POWER()=IRR()=STDEV() 直接拉一拉就出來了。5 分鐘就能上手,對非程式背景的散戶最友善。

Excel 的瓶頸也很明顯:

  • 不能批次:要算 100 支股票的 CAGR,要手動複製 100 次公式
  • 公式容易爆:上千列的數據會讓工作表變慢
  • 視覺化弱:要做 MDD 折線圖,要在另一張工作表用 =IF(ROW...) 搞輔助欄,痛苦

2. Python 路線:pandas + numpy + 量化套件,10 行算完 100 支股票

Python 路線的投資計算器優勢是批次處理 + 視覺化。同樣算 100 支股票的 CAGR、MDD、夏普,pandas 10 行就能搞定:

import pandas as pd
import numpy as np
df = pd.read_csv('prices.csv', parse_dates=['date'])
df['return'] = df.groupby('ticker')['close'].pct_change()
df['cagr'] = (1 + df['return'].groupby(df['ticker']).mean()) ** 252 - 1
df['mdd'] = df.groupby('ticker')['close'].apply(
    lambda x: ((x - x.cummax()) / x.cummax()).min()
)
print(df.groupby('ticker')[['cagr','mdd']].mean())

缺點是學習曲線陡——你得先會 Python、pandas、matplotlib,至少 1-2 個月才會上手。

3. 混合路線:Excel 寫死公式、Python 算回測訊號、定期匯出 .xlsx

我自己投資計算器的做法是兩者並用

  • Excel:日常看盤 + 簡單 CAGR/IRR 計算 + 倉位試算
  • Python:批次回測、VCP 訊號掃描、MDD 歷史回算
  • 匯出Python 算完的 DataFrame 用 df.to_excel('monthly_report.xlsx') 匯出,每月發到自己信箱

這個混合路線的好處是「平日用 Excel 應急、週末用 Python 深度分析」,兩邊的優點都吃到。如果你也是工程師但不想放棄 Excel 的便利性,這條路線最實用。

六、6 款現成投資計算器橫評(聚焦 CAGR / 回撤 / 倉位類)

不想自己寫公式的話,市面上也有不少現成投資計算器。我把它們分成 3 類:

1. 線上計算器:itool / 叩富網 / Google 搜尋小工具(免裝、臨時算)

如果你只是要臨時驗證投資計算器的某個數字(例如 CAGR),直接 Google 搜「CAGR 計算」就有一堆線上小工具——例如叩富網的 CAGR 計算機、itool 的倉位試算、BigQuant 維基的 MDD 計算頁。免裝、即開即用、適合驗證單一數字。但缺點是:不能批次、不能存歷史、廣告多。

2. 券商內建工具:富途 / IBKR 報表裡的 MDD 與 IRR 欄位

如果你用富途牛牛、IBKR(盈透)、Firstrade 等券商,APP 內建的「持倉分析」或「績效報表」通常已經有年化報酬、最大回撤、波動度這幾個欄位。優點是數據真實(直接從你的成交單算)、缺點是只算單一帳戶、不能跨帳戶加總。對大多數散戶來說,券商報表就夠了。需要券商功能細節對照的話,可以參考前一篇 工具箱橫評文 裡富途牛牛的章節。

3. WinStock 風格自製:把計算結果串進月報與復盤報告

如果你是進階使用者,想要把「投資計算器」的結果跟「交易覆盤」串起來,那就要考慮自製了。我自己 寫了一個叫 WinStock 的 iOS 交易覆盤 App,它的 AI 月報會自動幫你算月度 CAGR、月度 MDD、月度勝率,再跟「情緒標籤」交叉比對——例如「FOMO 進場的交易勝率只有 38%,遠低於冷靜進場的 62%」這種結論,靠純公式算不出來,必須把交易資料 + 情緒資料 + 公式串成 pipeline。這是自製投資計算器相較於線上小工具的最大價值:把數字變成可行動的洞察

如果你對這類自製工具有興趣,可以參考之前寫的 2026 港美股投資者必備的 7 個工具WinStock 重大更新:AI 復盤報告 + AI 月報 兩篇,分別講了工具箱的橫向評測、以及 AI 復盤功能的具體介面。WinStock 怎麼把 CAGR / MDD 串進月報、怎麼把情緒標籤跟公式交叉比對,那篇有完整截圖。

七、選哪一條?給三類讀者的決策樹(散戶 / 進階 / 工程師

最後幫你做個決策,看你適合哪條路線:

1. 散戶:先用 Excel + 線上計算器,別一開始就寫 code

如果你一年交易不到 50 筆、不懂 Python直接用 Excel + 線上計算器就好。花一個下午把這篇的 5 個公式都拉出來,以後每次結算就填一次。比起「要不要寫 Python pipeline」,更重要的是「你有沒有把公式算出來」。沒算的話,再多工具也救不了你。

2. 進階:用券商報表數據 + WinStock 月報,視覺化為主

如果你一年交易 50-200 筆、有在用券商 APP,但不想寫 code,用券商內建報表 + WinStock 月報就夠了。每月打開一次,看月度 CAGR、MDD、勝率、情緒標籤分佈,找出「哪一種情緒下勝率最高」這類規律。進階散戶的關鍵不是工具多強,而是「每月看一次報表」這個紀律

3. 工程師:自建 Python pipeline,把 CAGR / 回撤 / 倉位全串進復盤

如果你一年交易 200+ 筆、會 Python、且有自己的資料源,自建 pipeline 是最自由的選擇。pandas + numpy + matplotlib + 自己的 SQLite/MySQL 資料庫,所有指標都可以自己算、自己視覺化、自己串進復盤。我自己的 _vcp_project 就是這條路線的實現——每天收盤後自動跑回測、自動算 MDD、自動把結果推到手機。具體的 pipeline 介面與 AI 月報串接,可以看 WinStock AI 復盤那篇 裡的 4 張截圖。


投資這條路,最怕的不是「賺得少」,而是「不知道自己賺得少」。CAGRIRR最大回撤夏普比率、倉位大小——這 5 個投資計算器公式就是把你從「感覺世界」拉回「數字世界」的最基本工具。

先把這 5 個投資計算器公式算起來,再談選股、談擇時、談策略。**數字是策略的底層,沒有底層,上面的策略都是空中樓閣。**把今天這篇投資計算器公式大全存進書籤,下個月結算時回來對照一次,你會發現自己的投資決策品質提升一個檔次。


你目前最常用哪個投資計算器?是 Excel、券商 APP、還是自己寫 code 跑 Python?歡迎留言分享你的工作流,我會挑幾個有意思的回覆做下一期的讀者案例分析。

如果這篇對你有幫助,歡迎訂閱本站 RSS,或在 前面評測過的 7 個工具箱橫評文 看看我整理的 7 個工具,那篇跟這篇剛好互補。

W

關於作者 Winson

擁有多年經驗的 .NET 程式設計師。這裡記錄的是我試圖用代碼解碼金融市場的真實歷程。 不保證賺錢,但保證代碼能跑。