EPF投资组合与提前退休
马来西亚雇员公积金(EPF/KWSP)是退休储蓄的核心。很多 IT 人在没有充分理解 EPF 账户结构的情况下,错过了可观的自愿缴纳税务优惠和提前退休选项。
EPF三账户结构(2024年起)
graph TB
EPF["EPF 雇员公积金"] --> A1["🏦 Akaun Persaraan(退休)\n75% 的月供\n55岁前禁止提取\n用途:退休生活"]
EPF --> A2["🏠 Akaun Sejahtera(幸福)\n15% 的月供\n可提取:房产/教育/医疗\n55岁提取上限弹性"]
EPF --> A3["🌱 Akaun Fleksibel(弹性)\n10% 的月供\n可随时提取(月1次)\n用作紧急资金"]
A1 --> RET["退休核心资产\n不可随意动用"]
A2 --> FLEX["弹性大事用途\n适度规划"]
A3 --> EMERGENCY["流动性缓冲\n不建议全取光"]
style A1 fill:#1565C0,color:#fff
style A2 fill:#2E7D32,color:#fff
style A3 fill:#E65100,color:#fff
EPF 余额预测模型
from dataclasses import dataclass
@dataclass
class EPFProjectionModel:
"""
EPF 余额预测 + 退休时间规划
"""
current_age: int
current_epf_balance: float # MYR
monthly_gross_salary: float # 税前月薪(MYR)
employer_contribution_pct: float = 0.13 # 雇主:13%(≤RM5k/月)
employee_contribution_pct: float = 0.11 # 雇员:11%
annual_dividend_rate: float = 0.057 # EPF 年均分红(5-7%,取5.7%)
voluntary_monthly_top_up: float = 0.0 # i-Saraan 自愿额外缴纳(MYR)
def monthly_contribution(self) -> float:
employer = self.monthly_gross_salary * self.employer_contribution_pct
employee = self.monthly_gross_salary * self.employee_contribution_pct
return employer + employee + self.voluntary_monthly_top_up
def project_to_age(self, target_age: int) -> float:
"""预测至目标年龄的 EPF 余额"""
years = target_age - self.current_age
balance = self.current_epf_balance
monthly = self.monthly_contribution()
for _ in range(years):
balance = balance * (1 + self.annual_dividend_rate)
balance += monthly * 12
return balance
def retirement_income_monthly(self, retire_age: int, draw_years: int = 25) -> float:
"""
退休时每月可提取金额
假设 EPF 余额分摊在 draw_years 年内提取
"""
final_balance = self.project_to_age(retire_age)
total_months = draw_years * 12
return final_balance / total_months
def fi_timeline(self, monthly_expenses: float) -> None:
"""打印不同退休年龄的财务就绪情况"""
fi_number = monthly_expenses * 12 * 25
print(f"\n{'='*55}")
print(f" EPF 退休预测报告")
print(f" 当前余额: MYR {self.current_epf_balance:,.0f}")
print(f" 月缴纳(含自愿): MYR {self.monthly_contribution():,.0f}")
print(f" FI 数字(4% 法则): MYR {fi_number:,.0f}")
print(f"{'='*55}")
print(f"\n {'退休年龄':^8} | {'EPF余额':>14} | {'月提取额':>12} | {'达到FI%':>8}")
print(" " + "-"*50)
for age in [50, 55, 57, 60, 65]:
if age <= self.current_age:
continue
balance = self.project_to_age(age)
monthly = self.retirement_income_monthly(age)
fi_pct = balance / fi_number * 100
print(f" {age}岁{' ':^5} | MYR {balance:>10,.0f} | MYR {monthly:>7,.0f}/月 | {fi_pct:>6.1f}%")
# 示例:42岁,月薪 RM 20,000
model = EPFProjectionModel(
current_age=42,
current_epf_balance=300_000,
monthly_gross_salary=20_000,
voluntary_monthly_top_up=1_000 # 每月自愿额外缴纳
)
model.fi_timeline(monthly_expenses=8_000)
i-Saraan 自愿缴纳税务优惠
| 特征 | 详情 |
|---|---|
| 计划名称 | i-Saraan(针对自雇/自由职业) |
| 年度上限 | RM 60,000(超出部分不享税务减免) |
| 税务减免 | 可抵扣应税收入(与 EPF 雇员缴纳共享上限) |
| 适合对象 | 独立顾问、自由职业者、Sdn Bhd 董事 |
| 收益率 | 与正常 EPF 相同(历史 5–7%/年) |
| 流动性 | 55岁前锁仓(Akaun Persaraan 部分) |
FIRE 数字的马来西亚版本
- 标准 FIRE Number = 年支出 × 25
- 马来西亚调整:加入 EPF 预期余额(因为 EPF 会持续分红)
- 推荐公式:
- 如果 55岁退休:EPF(Akaun 1)+ 个人投资 ≥ FI Number
- 如果 50岁提前退休(RE):需要额外的"桥接资金"支撑 55岁前的生活
本章小结
- 📌 EPF 2024 年起变为三账户结构(退休/幸福/弹性),理解各账户用途
- 📌 自雇和顾问可通过 i-Saraan 自愿缴纳,年上限 RM 60,000,享税务减免
- 📌 EPF 余额复利增长强劲:42岁余额 30 万,到 55岁可增至约 80 万(不含后续缴纳)
- 📌 FIRE 需要"桥接资金":EPF 提前提取限制意味着你需要个人投资资产
- 📌 每月额外缴纳 RM 1,000 到 EPF,10 年后差距约达 RM 16 万以上
下一章:技术人的被动收入构建