前篇:年收入50萬的投資人如何累積八千萬或提前15年累積千萬退休金?
使用excel的fv()函數計算
不同投資金額/不同年期的終值(FV):

如何使用python算出一樣的表?
其實用法都跟Excel一樣
套件是numpy_financial.fv()
點此或下圖連結numpy官網


code:
# -*- coding: utf-8 -*-
"""
Created on Fri May 25 18:48:55 2023
@author: SavingKing
"""
import numpy_financial as npf
import numpy as np
import pandas as pd
gain = 50/12 #4.166666666666667
#salary
saving_rate = np.array([0.2,0.3,0.5,0.6,0.7,2.5])
#儲蓄率
pay:np.ndarray[float] = -saving_rate*gain
#array([-0.83333333, -1.25, -2.08333333, -2.5, -2.91666667])
# len = 5
years = [7,10,15,20,25,30,35,40]
#len = 7
shap = ( len(years),len(pay) )
fv_table = np.zeros( shape=shap )
#shape= (7, 5)
rate=0.07
for p in range(len(pay)):
for y in range(len(years)):
#print(years[y])
fv_table[y][p]=\
npf.fv(rate/12,years[y]*12,pay[p],0,"begin")
df_fv = pd.DataFrame(fv_table,columns=pay,index=years)
print("不同投資金額/年期之終值表:\n",df_fv)報酬率假設7%
代表性工具是大範圍股票ETF
如: VT
#豐存股建構全世界股市
#豐存股建構全世界股市VT
(若想了解永豐粉絲團專屬優惠,
請在Google表單留下聯絡資料)
code:

跟先前的試算比較,
儲蓄率多了2.5倍,
就是超過年收入50萬的投資人月薪
年期多了更短的7年
是為不同的朋友試算
其目標是七年存到一千萬
輸出結果
pd.set_option(“display.max_columns”,None) :

可以看到跟Excel計算結果是一樣的
輸出成excel檔案比較好看:

儲蓄率70%
(每月投資2.9萬)
累積投資15年
終值FV = 930萬
接近千萬
但如果你計畫
這麼年輕就要退休
千萬台幣可能不是
合宜的目標
若儲蓄率這麼高
且累積投資40年
終值FV = 7700萬
千里之行始於足下
八千萬始於月投資2.9萬
現在就開始你的
小額指數投資之路!
#豐存股建構全世界股市VT
片尾彩蛋有更多投資金額可以參考
因為程式碼已經寫好,
多列一些投資金額
給不同族群參考
saving_rate = np.array([0.2,0.3,0.5,0.6,0.7,1,1.2,1.5,2,2.5])

輸出結果:

推薦hahow線上學習python: https://igrape.net/30afN

![Python Pathlib 實戰:優雅地篩選多種圖片檔案; images = [f for f in p.glob(“*”) if f.suffix.lower() in img_extensions] Python Pathlib 實戰:優雅地篩選多種圖片檔案; images = [f for f in p.glob(“*”) if f.suffix.lower() in img_extensions]](https://i1.wp.com/savingking.com.tw/wp-content/uploads/2026/01/20260128111659_0_736612.png?quality=90&zoom=2&ssl=1&resize=350%2C233)

![Python: 如何用 pandas.DataFrame.apply 讓DataFrame增加新的一欄 ; df[“mean”] = df.apply( np.mean, axis=1) ; DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs) Python: 如何用 pandas.DataFrame.apply 讓DataFrame增加新的一欄 ; df[“mean”] = df.apply( np.mean, axis=1) ; DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs)](https://i1.wp.com/savingking.com.tw/wp-content/uploads/2023/05/20230519084320_22.png?quality=90&zoom=2&ssl=1&resize=350%2C233)
![為什麼 Python 要用 `max` 配合 `key=lambda`?從找最長文字的 Span 談起 ; #spans:list[dict] ; max(spans, key=lambda s: len(s.get(“text”, “”))) 為什麼 Python 要用 `max` 配合 `key=lambda`?從找最長文字的 Span 談起 ; #spans:list[dict] ; max(spans, key=lambda s: len(s.get(“text”, “”)))](https://i2.wp.com/savingking.com.tw/wp-content/uploads/2026/06/20260602132524_0_c45d06.png?quality=90&zoom=2&ssl=1&resize=350%2C233)



![Python 進階實戰:深入 Word 核心,挖出那一坨 BLOB (含自省 Debug 技巧, BLOB= Binary Large Object) ; part = doc.part.rels[rid].target_part ; return part.blob if “ImagePart” in type(part).__name__ else None Python 進階實戰:深入 Word 核心,挖出那一坨 BLOB (含自省 Debug 技巧, BLOB= Binary Large Object) ; part = doc.part.rels[rid].target_part ; return part.blob if “ImagePart” in type(part).__name__ else None](https://i1.wp.com/savingking.com.tw/wp-content/uploads/2026/01/20260126111046_0_cd8751.png?quality=90&zoom=2&ssl=1&resize=350%2C233)

近期留言