保费预算与优先级排序
"我应该花多少在保险上?" 是最常见的问题。本章给出马来西亚背景下的预算框架,帮你在有限预算中最大化风险覆盖,避免买错顺序导致"钱烧完了,真正重要的反而没买"。
保险优先级金字塔
graph TB
A["🏥 医疗卡\n(无限期可续保)\n【第一优先】"]
B["☠️ 定期寿险\n(有家庭负担者)\n【第二优先】"]
C["🦠 批判性疾病险\n(36种重疾一次性赔付)\n【第三优先】"]
D["🚑 个人意外险\n(高性价比覆盖)\n【第四优先】"]
E["💼 残疾收入保障\n(收入替代)\n【第五优先】"]
F["🦷 牙科 / 光学\n(福利性)\n【可选】"]
A --> B --> C --> D --> E --> F
style A fill:#F44336,color:#fff
style B fill:#FF5722,color:#fff
style C fill:#FF9800,color:#fff
style D fill:#FFC107,color:#000
style E fill:#8BC34A,color:#fff
style F fill:#78909C,color:#fff
预算法则:10–15% 月收入规则
马来西亚保险业建议 月收入的 10%–15% 作为保费上限。低于 10% 可能保障不足,超过 15% 则会对日常生活造成压力。
Python:保险预算分配器
from dataclasses import dataclass
from typing import Dict, List, Tuple
@dataclass
class InsuranceBudgetAllocation:
"""保险预算分配计算器"""
monthly_income: float
has_dependents: bool # 有家庭负担?
has_mortgage: bool # 有房贷?
age: int
# 预算比例上限
BUDGET_PCT_LOW = 0.10 # 10% — 保守预算
BUDGET_PCT_HIGH = 0.15 # 15% — 标准预算
def budget_range(self) -> Tuple[float, float]:
"""月保费合理范围"""
return (
self.monthly_income * self.BUDGET_PCT_LOW,
self.monthly_income * self.BUDGET_PCT_HIGH
)
def allocate(self, total_premium_budget: float) -> Dict[str, float]:
"""按优先级分配预算(RM/月)"""
allocation: Dict[str, float] = {}
remaining = total_premium_budget
# 1. 医疗卡 —— 硬性必需,先扣
medical_cost = self._estimate_medical_card()
allocation["医疗卡"] = min(medical_cost, remaining)
remaining -= allocation["医疗卡"]
# 2. 定期寿险(有家庭负担才需要)
if self.has_dependents and remaining > 0:
life_cost = self._estimate_term_life()
allocation["定期寿险"] = min(life_cost, remaining)
remaining -= allocation["定期寿险"]
# 3. 批判性疾病险
if remaining > 0:
ci_cost = self._estimate_ci()
allocation["批判性疾病险"] = min(ci_cost, remaining)
remaining -= allocation["批判性疾病险"]
# 4. 个人意外险
if remaining > 0:
pa_cost = self._estimate_pa()
allocation["个人意外险"] = min(pa_cost, remaining)
remaining -= allocation["个人意外险"]
# 5. 残疾收入险(若有余裕)
if remaining > 80:
di_cost = self._estimate_di()
allocation["残疾收入险"] = min(di_cost, remaining)
remaining -= allocation["残疾收入险"]
allocation["剩余未分配"] = max(remaining, 0)
return allocation
def _estimate_medical_card(self) -> float:
"""医疗卡月保费估算(基于年龄)"""
if self.age < 30: return 150
if self.age < 40: return 250
if self.age < 50: return 480
return 800
def _estimate_term_life(self) -> float:
"""定期寿险月保费(RM 500k 保额)"""
if self.age < 35: return 120
if self.age < 45: return 220
return 380
def _estimate_ci(self) -> float:
"""批判性疾病险月保费(RM 200k 保额)"""
if self.age < 30: return 150
if self.age < 40: return 250
if self.age < 50: return 450
return 700
def _estimate_pa(self) -> float:
"""个人意外险月保费(RM 200k 保额)"""
return 50 if self.age < 55 else 80
def _estimate_di(self) -> float:
"""残疾收入险月保费(RM 3k/月)"""
if self.age < 40: return 120
return 200
def generate_report(self) -> None:
budget_low, budget_high = self.budget_range()
budget = budget_high # 使用标准预算
print(f"\n{'='*55}")
print(f"月收入:RM {self.monthly_income:,.0f} 年龄:{self.age} 岁")
print(f"有家庭负担:{'是' if self.has_dependents else '否'} 有房贷:{'是' if self.has_mortgage else '否'}")
print(f"\n建议月保费范围:RM {budget_low:,.0f} – RM {budget_high:,.0f}")
print(f"\n按优先级分配(总预算 RM {budget:,.0f}/月):")
print(f"{'─'*45}")
allocation = self.allocate(budget)
for product, amount in allocation.items():
if product != "剩余未分配":
bar_len = int(amount / budget * 30)
bar = "█" * bar_len
pct = amount / budget * 100
print(f" {product:<12} RM {amount:>6.0f} {bar} {pct:.0f}%")
print(f"{'─'*45}")
print(f" {'合计':<12} RM {sum(v for k,v in allocation.items() if k!='剩余未分配'):>6.0f}")
# 四种收入场景演示
scenarios = [
InsuranceBudgetAllocation(3000, False, False, 25),
InsuranceBudgetAllocation(5000, True, True, 32),
InsuranceBudgetAllocation(8000, True, True, 40),
InsuranceBudgetAllocation(12000, True, False, 48),
]
for s in scenarios:
s.generate_report()
四种收入水平的保险预算参考
| 月收入 | 10% 预算 | 15% 预算 | 建议核心购买 |
|---|---|---|---|
| RM 3,000 | RM 300 | RM 450 | 医疗卡 + 批判性疾病(初级) |
| RM 5,000 | RM 500 | RM 750 | 医疗卡 + 寿险 + 批判性疾病 |
| RM 8,000 | RM 800 | RM 1,200 | 全套覆盖(含残疾) |
| RM 12,000 | RM 1,200 | RM 1,800 | 全套升级版(含子女) |
优先级排序原则
| 顺序 | 保险类型 | 核心原因 | 预算不足时 |
|---|---|---|---|
| 1 | 医疗卡 | 单次住院可达数十万 | 保留降级,不能断 |
| 2 | 定期寿险 | 保护家人,保费最低 | 只有家庭负担才优先 |
| 3 | 批判性疾病 | 癌症等需长期治疗 + 收入损失 | 降低保额至 RM 100k 起步 |
| 4 | 个人意外 | 月费 RM 50 即可 RM 200k 保额 | 几乎不需要妥协 |
| 5 | 残疾收入 | 收入替代,避免失能破产 | 非有家庭负担可延后 |
| 6 | 牙科/光学 | 配合雇主计划,单买 ROI 一般 | 可完全跳过 |
常见预算失误
| 失误 | 后果 | 修正 |
|---|---|---|
| 先买储蓄/全寿险,医疗卡后买 | 发生疾病时医疗没保障 | 医疗卡永远第一 |
| 高保额寿险导致无预算买 CI | 生病存活但无收入 | 寿险降额换 CI |
| ILP 保费占预算 80% | 其他险种空白 | 改用定期 + 独立 CI |
| 买够 15% 后止步,不 review | 保额随通胀缩水 | 每 3 年检视保额 |
本章小结
- 📌 月收入 10–15% 是保险预算合理范围
- 📌 医疗卡永远第一,其他顺序按家庭负担调整
- 📌 RM 3k 月收入也可以建立基本医疗 + 重疾保障
- 📌 意外险性价比最高,不应因预算跳过
- 📌 储蓄型保险永远排在风险保障之后
下一章:保单审查与年度检视