跳至主要內容
回研究文章
方法論2026年8月6日· 閱讀約 11 分鐘

如何用個股計算 S&P 500 指數

完整拆解 S&P 500 的除數與流通量調整市值加權公式:怎麼把單一個股的漲跌換算成指數點數、每一項輸入的資料實際來自哪裡,以及常見的簡化算法會在哪裡失準。

作者:Elnath Finance Academy

多數人認識的 S&P 500,就是一個會上下跳動的數字。但再往下問一句,能回答的人就少了:指數今天漲了 30 點,這 30 點是哪些股票貢獻的?各自貢獻多少?

這個問題是算得出來的。指數不是黑盒子 —— S&P Dow Jones Indices 公開了完整的數學定義,而大部分輸入資料也都能免費取得。真正拿不到的,是其中一個專有參數,而這正是多數網路教學會悄悄略過的地方。這篇文章走完整套計算、給一個完全可驗證的算例、指名每一項輸入的資料來源,並且誠實說明「公開資料能重現到什麼程度」。

這是一篇方法論文章,說明一個計算怎麼運作。它不是對任何證券的推薦。

1. S&P 500 到底是哪一種指數

兩件事決定了一切:

它是流通量調整後的市值加權指數。 一家公司的權重來自它公眾實際可投資的那部分股票的市值 —— 不是股價,也不是總股數。這就是為什麼道瓊工業指數和 S&P 500 在同一天可能走勢不一致:道瓊是價格加權,一檔 500 美元的股票對它的影響大於一檔 50 美元的股票,跟公司規模無關。

它是除數制的。 指數點位是「一堆市值加總」除以一個被持續維護的常數。這個常數就是除數(divisor),它存在的目的是讓成分股變動時指數能保持連續。如果一家 3,000 億美元的公司取代了一家 400 億美元的公司,市值總和會瞬間跳升 —— 但那不是市場表現,所以除數會同步被調整吸收掉這段落差,公開的指數點位不會因此跳動。

2. 公式

先算每一檔成分股的流通量調整市值:

  • — 股價
  • — 流通在外總股數
  • — 流通量調整因子(Investable Weight Factor),也就是 當中被視為可投資的比例

指數點位就是:

單一個股的權重,則是它佔總額的比例:

IWF 就是那道流通量調整。S&P DJI 會扣掉政府、其他上市公司、創辦人與其他策略性股東持有的股份 —— 也就是公眾投資人實際上買不到的那些。一家有 40% 由創辦人持有的公司,進入指數時大約只用它帳面市值的 60% 計算。

3. 從一檔個股到指數點數

以下是做貢獻拆解時真正要用的部分。因為除數在同一天內是固定的(沒有公司行動的話),指數點位的變動就等於分子的變動除以同一個除數。所以單一個股當天貢獻的指數點數是:

把 500 多檔全部加總 —— 在沒有除數調整的日子 —— 就會精確還原指數當天的點數變動。

如果你手上沒有除數,還有一個只用到權重、報酬率與昨日指數點位的等價形式:

  • — 前一交易日收盤的權重
  • — 個股當日漲跌百分比

這兩條公式在代數上完全相同。 把定義代進去,第二條會直接塌回第一條:

除了那條精確公式之外,其他全部消掉了。這件事值得記住,因為它告訴你誤差究竟從哪裡來:不是來自「近似」這個動作,而是來自你餵給它錯的權重。 只要 是對的,這個「近似式」就是精確的。

4. 完整算例

三檔股票、整數、一個虛構的指數。以下數字為示範用途,不是真實的 S&P 500 資料。

第 1 天收盤:

個股股價流通在外股數IWF流通量調整市值權重
Alpha$200.001,000,000,0001.00$2,000 億48.0769%
Beta$50.004,000,000,0000.90$1,800 億43.2692%
Gamma$120.00500,000,0000.60$360 億8.6538%
合計$4,160 億100%

取除數為 100,000,000,指數點位就是 $4,160 億 ÷ 100,000,000 = 4,160.00

先注意 Beta 和 Gamma:在同一個價格量級下,Beta 的帳面市值是 Gamma 的兩倍,但 0.90 對上 0.60 的 IWF,讓兩者的流通量調整市值差距被拉得比帳面數字看起來更大。

第 2 天走勢:

個股漲跌新股價ΔP貢獻
Alpha+1.50%$203.00+$3.00+30.00 點
Beta−0.80%$49.60−$0.40−14.40 點
Gamma+4.00%$124.80+$4.80+14.40 點
合計+30.00 點

用長算法驗證一次:新的流通量調整市值總額是 $4,190 億,指數收在 4,190.00 —— 上漲 30.00 點,也就是 +0.7212%。各股貢獻加總與指數變動完全吻合。

有兩件事值得注意。Gamma 漲了 4.00%,將近 Alpha 那 1.50% 的三倍,貢獻的點數卻不到 Alpha 的一半 —— 規模的影響大於漲幅。另外,Gamma 的 +4.00% 與 Beta 的 −0.80% 在 +14.40 與 −14.40 完美互相抵銷,兩者的漲跌幅看起來天差地遠,但 Beta 的流通量調整市值是 Gamma 的五倍。

如果略過流通量調整會怎樣

同樣這一天,改用總流通在外股數來算,也就是所有股票的 IWF 都當成 1.00 —— 這正是你只靠 SEC 股數資料算權重時會得到的結果:

個股未調整權重未調整貢獻真實貢獻誤差
Alpha43.4783%+27.13+30.00−2.87
Beta43.4783%−14.47−14.40−0.07
Gamma13.0435%+21.70+14.40+7.30
合計+34.37+30.00+4.37

估出來的指數變動大了約 15%,而 Gamma —— 那檔股權集中的公司 —— 被高估的幅度超過它真實貢獻的一半。(個別數字四捨五入到小數點後兩位;合計為未四捨五入前加總。)

這是所有「用免費資料重現這個計算」的做法當中最大的單一誤差來源,而且它不是隨機雜訊:它會系統性地高估創辦人、家族或策略性股東持股集中的公司。

5. 每一項輸入從哪裡來

輸入來源費用注意事項
成分股清單S&P 500 指數頁;ETF 持股檔(SPY、IVV、VOO)免費ETF 持股是代理值,不等於指數本身;再散布前先確認各家使用條款
流通在外股數 SEC EDGAR XBRL API —— dei:EntityCommonStockSharesOutstanding,走 companyfactsframes 端點免費美國政府著作、公有領域。取自 10-Q/10-K 封面,因此最多可能落後一季
股價 你的券商、交易所行情,或資料商(Databento、Polygon、EODHD、Tiingo、Nasdaq Data Link)免費 → 高價標榜「個人使用」的免費報價 API 幾乎都禁止再散布與公開顯示 —— 見第 7 節
S&P DJI —— 專有資料,公開管道取不到可用代理值:dei:EntityPublicFloat、DEF 14A 的實質受益股權表、SC 13D/13G 申報
除數不公開免費提供。可反推:除數 = Σ FMC ÷ 指數點位需要指數點位完整的 FMC,所以上游每一個誤差都會傳進來
指數點位FRED 的 SP500 序列 —— 十年日資料免費著作權屬 S&P Dow Jones Indices;再製需事先取得書面同意(見第 7 節)

IWF 那一列就是那道誠實的缺口。其他每一項你都能用公有領域資料重建;流通量調整因子是 S&P DJI 自己的產出,沒有免費的等價替代品。你可以逼近它 —— 用 EntityPublicFloat 除以市值大致抓得到量級 —— 但你重現不了它。

6. 這套重現會在哪裡失準

在把任何一個數字公開之前,先知道它的誤差預算:

  1. 沒有做流通量調整。 前面已經示範過。會系統性高估股權集中的公司。單一最大誤差來源。
  2. 多股別公司。 Alphabet(GOOGL/GOOG)、Fox(FOX/FOXA)與 News Corp(NWS/NWSA)都有兩個股別在指數裡,但 SEC 封面常常給的是合計或單一股別的數字,無法乾淨對應到指數用的股數。這些需要人工處理。
  3. 股數資料過期。 封面股數最多落後一季。大額庫藏股或增資會在你的資料反映之前就先改變權重。
  4. 除數變動。 除數會因為新增、刪除、分拆、股數變動與現金增資而調整。只要當天發生過其中一項,你的貢獻就對不回官方變動。
  5. 貢獻加總永遠不會完全吻合。 因為上面第 1 到第 4 點,殘差是這套重現的特性,不是你程式的 bug。要把它報出來,不要藏起來。
  6. 價格報酬 vs. 總報酬。 大家看到的 S&P 500 是價格指數,不含股息。拿你的數字去跟總報酬序列比對不會相符。

一份站得住腳的重現,會標示資料時間戳、講明是收盤後日更而非即時、把抓不到資料的個股標成「資料暫無」而不是補 0 或補估算值,並且公開自己相對官方指數變動的殘差。

7. 沒人提的授權問題

自己算來自己看,沒有任何限制。但公開發布是另一回事,而且這個限制不是紙上談兵。

FRED 自己的 S&P 500 序列頁面就載明:該資料著作權屬 S&P Dow Jones Indices,未事先取得書面同意不得以任何形式再製,並可向 [email protected] 申請授權。指數點位、成分股權重,以及由 S&P DJI 專有資料衍生出來的個股貢獻拆解,都落在同一把傘底下。另外,多數免費行情 API 會把使用範圍限縮在個人、非商業用途並禁止再散布 —— 而「我又沒靠它賺錢」通常不是那些條款採用的判準。

以上都不妨礙你學這套方法,也不妨礙你私下跑它。它的意思只是:如果你打算把結果公開顯示,正確的第一步是讀條款,第二步是去問指數公司 —— 而不是自己假設。

8. 可重現的步驟

1. 取得成分股清單。
2. 逐一從 SEC XBRL(companyfacts / frames)抓流通在外股數。
3. 從有授權的來源抓昨日與今日收盤價。
4. 取得或逼近 IWF。若取不到,設 IWF = 1 並把輸出明確標示為
   「未做流通量調整」—— 不要把它當成指數權重呈現。
5. FMC_i  = P_prev * Q * IWF          (前一交易日收盤)
6. w_i    = FMC_i / sum(FMC)
7. r_i    = P_today / P_prev - 1
8. 貢獻_i = 昨日指數點位 * w_i * r_i
9. 依貢獻排序。把 sum(貢獻_i) 與指數實際變動相比,並報出殘差。
10. 任何一項輸入抓不到的個股,一律顯示「資料暫無」——
    不補 0,不補估算值。

第 10 步的重要性超過它的外表。一檔被默默填成 0.00 的股票不會自己舉手說「我是錯的」,它只會安靜地待在你排行榜的最底端,然後一直待在那裡。

參考資料

S&P Dow Jones Indices(第一手來源)

資料來源

免責聲明

本文由 Elnath Finance Academy 發布,僅供一般資訊與教育目的。內容寫給所有讀者,且對每位讀者完全相同。它不是投資建議、不是針對任何個人的推薦,也不構成買賣任何證券的要約或要約邀請。Elnath Finance Academy 並非註冊投資顧問(RIA)。

算例中的所有數字皆為虛構,是為了示範計算過程而設計。它們不是真實的 S&P 500 數值;文中任何個股、指數點位或報酬率,都不應被理解為對實際市場資料的陳述。

文中出現的公司名稱與指數名稱均為其各自所有人之財產,此處僅作辨識與教學引用之用。Elnath Finance Academy 與 S&P Dow Jones Indices LLC 無任何隸屬、贊助或背書關係。

投資有風險,可能損失全部本金。你依本文建立的任何計算,都應由你自己驗證。必要時請諮詢合格的專業人士。

免責聲明

本網站內容由 Elnath Finance Academy 製作,僅供一般性資訊與教育目的,不構成投資建議,也不是針對任何個別讀者的個人化推薦。Elnath Finance Academy 並非註冊投資顧問(RIA),亦不提供受監理的投資顧問服務。所有數據與分析可能存在延遲或誤差,過往表現不代表未來績效。投資涉及風險,可能損失本金;任何投資決策請自行判斷並諮詢合格的專業人士。