EN

LittleCheeseCake MoneySense

拆解101投连险(101 ILPs)

December 19, 2023 | 储蓄和投资 数据分析 观点

目录

我的保险经纪给我推荐了FWD Invest First Plus这个ILP,借机拆解了一下。因为受网上很多负面评价的影响,我本身对ILPs有一定偏见,但是拆解这个产品以后,让我的态度有了一些改观。

免责声明

我没有购买任何ILP,我的投资主要在Robo advisor(Endowus)和券商平台的ETF(FSMOne,IBKR)。ILPs的费用只是其中一个原因,灵活度和沉没成本是最重要的原因。

基金选择

FWD提供50+基金选择(FWD Fund Lab),股、债、货币基金平衡,可以做合理的搭配控制风险。当然相对于Robo advisor和券商平台,基金选择的还是非常有限。可选基金包括S&P500 Index Fund,对于我这样无脑投大盘的投资者是一个选项。

保险经纪极力推荐的Fundsmith Equity Fund,据说是表现非常好的AI Fund(accredited investor Fund)。粗略看这个基金,投资的分布基本是Large-cap+Growth,这个组合就是在控制风险的同时追求增长。过去十年表现良好,当然过去十年大盘也表现很好。我不会分析基金——因为不懂,所以我不会轻易投,investmentmoats做了很详细的分析。

费用

ILP被很多人诟病的一个原因,是它的费用问题。那它到底多贵呢?我看到不少人说,退掉ILP,用Robo。那是不是Robo advisor就更有优势呢?于是我用网上的资源做了一个具体的计算。以下的计算完全是给予公开信息和基本投资收益假设,不保证绝对准确,更不代表任何投资建议。

计算数据基于以下假设

投资计划

  • 年投入12000
  • 定投15年
  • 继续持续增长10年
  • 定投S&P500 Index,假设年回报率8%

ILP: FWD Investment first plus

Robo: Endowus

ETF: FSMOne

计算假设

  • 假设投资同一类产品 - S&P500 index: 实际不同平台有不同的投资产品。
  • 假设没有波动 :实际S&P的波动可以到上下40%。
  • 假设年定投 :实际ILP可以选择每月入金,Robo可以无交易费用随时投资,券商平台的交易也很灵活。
  • 假设入金除费用外全部投入基金:实际是除券商外,ILP和Robo都会有资金隔离,保证一部分现金收取费用。Robo的隔离资金量很小,ILP的具体投资模式是什么样我不确定。
  • 假设无汇率风险。
计算脚本 (展开查看)
import numpy as np
import pandas as pd
from IPython.display import display
import matplotlib.pyplot as plt

premium = 12000
payment_term = 15
policy_term = 25
irr = 0.08

# ILP Bonus and Fees---------------------
# booster bonus rate
reward_band = lambda a : 4 if (a / 12000 > 4) else int(a / 12000)
booster_bonus_rate_table = np.array([
    [0.17, 0.18, 0.19, 0.20, 0.21], # 15
    [0.17, 0.18, 0.19, 0.20, 0.21], # 16
    [0.17, 0.18, 0.19, 0.20, 0.21], # 17
    [0.17, 0.18, 0.19, 0.20, 0.21], # 18
    [0.17, 0.18, 0.19, 0.20, 0.21], # 19
    [0.20, 0.21, 0.22, 0.23, 0.24], # 24
    [0.20, 0.21, 0.22, 0.23, 0.24], # 24
    [0.20, 0.21, 0.22, 0.23, 0.24], # 24
    [0.20, 0.21, 0.22, 0.23, 0.24], # 24
    [0.20, 0.21, 0.22, 0.23, 0.24], # 24
    [0.26, 0.27, 0.31, 0.32, 0.33], # 25
    [0.26, 0.27, 0.31, 0.32, 0.33], # 26
    [0.26, 0.27, 0.31, 0.32, 0.33], # 27
    [0.26, 0.27, 0.31, 0.32, 0.33], # 28
    [0.26, 0.27, 0.31, 0.32, 0.33], # 29
    [0.27, 0.28, 0.32, 0.33, 0.34], # 30
])
booster_bonus_rate = lambda premium, pt: booster_bonus_rate_table[pt - 15][reward_band(premium)]

# loyalty bonus rate
loyalty_bonus_rate = lambda py: 0.012 if py >= 21 else 0.01 if py >= 11 else 0.007 if py >= 6 else 0

# initial account charge, throughout the premium payment term only, monthly charge
# N is policy year
A = lambda pt: 0.01 if pt >= 30 else 0.012 if pt >= 25 else 0.014 if pt >= 20 else 0.018
inital_account_charge_monthly = lambda premium, pt, N: A(pt) / 12 * premium * N 

# policy charge: start from the 25th policy month (5th year) to the end of policy term
# N is policy year or payment term if policy year passed the term
policy_charge = lambda premium, N, pt: 0.012 / 12 * premium * (N if N <= pt else pt) 

# ---------------------

# Calculation---------------------

fig, ax = plt.subplots()  # Create a figure containing a single axes.

def cal_return(fund_expense_ratio, type_of_investment, fix_fee=0):
    policy_values = [0] * policy_term
    policy_value_total = 0
    fees = [0] * policy_term
    bonuses = [0] * policy_term
    interests = [0] * policy_term
    for N in range(0, policy_term):  
        booster_bonus = 0 if not type_of_investment == 'ILP' else 0 if N > 4 else booster_bonus_rate(premium, payment_term) * premium
        bonuses[N] = int(booster_bonus)
        policy_values[N] = 0 if N >= payment_term else (premium + booster_bonus)
    
        # monthly fee
        yearly_fee = 0
        yearly_interest = 0
        for n in range(0, 12):
            # calculate fee
            fee = 0
            if type_of_investment == 'ILP':
                fee += inital_account_charge_monthly(premium, payment_term, N + 1) if N < payment_term else 0
                fee += 0 if N < 3 else policy_charge(premium, N + 1, payment_term)

            fee += (policy_value_total + policy_values[N]) * (fund_expense_ratio / 12)
            policy_values[N] -= fee
    
            # for record only
            yearly_fee += fee
            
        # add fee
        policy_values[N] -= fix_fee
        yearly_fee += fix_fee
        
        # yearly interest 
        yearly_interest = (policy_value_total + policy_values[N]) * (irr)
        policy_values[N] += yearly_interest
        fees[N] = int(yearly_fee)
        interests[N] = int(yearly_interest)

        # add loyalty_bonus, which paid at the end of policy year based on the policy value
        if type_of_investment == 'ILP':
            loyalty_bonus = 0 if N < 5 else loyalty_bonus_rate(N + 1) * policy_value_total
            policy_values[N] += loyalty_bonus

            # for record
            bonuses[N] += int(loyalty_bonus)

        policy_values[N] = int(policy_values[N])
        policy_value_total += policy_values[N]

    df = pd.DataFrame(data=[policy_values, interests, fees, bonuses])
    transposed_df = df.transpose()
    transposed_df.columns = ['value_per_annual', 'interest', 'fees', 'bonuses']
    display(transposed_df)
    print("Total Value:", sum(policy_values))

    # plot the graph
    ax.plot([i for i in range(1, policy_term + 1)], np.cumsum(policy_values), label=type_of_investment)
    leg = plt.legend(loc='upper center')

cal_return(0.0061, "ILP") # https://lgi.dzhintl.com/doc/uploads/documents/index.php?type=FS&fid=IUSI&lang=EN
cal_return(0.004 + 0.0032, "Robo") # https://endowus.com/investment-funds-list/lion-global-infinity-u.s-500-stock-index-fund-SG9999003289
cal_return(0.000945, "ETF", 50) # https://www.ssga.com/library-content/products/factsheets/etfs/us/factsheet-us-en-spy.pdf
plt.show()

我的总结

  • 费用对资产的累积有很大的影响:Cost really matters a lot!

  • 101 ILPs的费用并没有比Robo advisor高。当然计算本身很多假设性,保险产品的复杂操作可能会影响收益。ILPs产品本身也存在政策风险,boost bonus,loyalty bonus,包括基金收费模型保险公司有权更改(如下):

    • Reserving the right to change the pricing model of subfund
    • We can change the Booster Bonus rates and reward bands at any time
    • We can change the Loyalty Bonus rate at any time
    • Switching charge: we have kept this charge at zero but we may review this in future. If we change this, we will notify you by giving you 30 days’ notice
  • 产品介绍里有一条"Reserving the right to change the pricing model of subfund"。这让产生我疑问:ILP背后Fund的费用到底是多少,这可能一定程度上影响计算。上面的计算我使用了Factsheet里的expense ratio。在FWD Fund Lab网站上并不能看到它的费用。至少从Endowus的返利模型上看,机构投资Sub-fund的费用和个人投资者是不一样的。基金管理的隐形费用在ILP里很难看出来。

  • 相比Robo,101 ILPs的设计太复杂,其中的各种福利和规则让人感觉不透明和无掌控感,也就是通常大家觉得保险公司各种隐型条款,层层收费,对此信心不足。

  • ILPs灵活度太低是更大的问题。对于年轻人,投资是一个持续学习的过程,ILPs最大的诟病,是沉没成本太高。Robo advisor在初始资金少的情况下,费用低,也没有退出成本。资产累计到一定程度可以选择其他的方式。

  • 以上的假设是无脑定投标普500指数。实际情况要更复杂。因为股票市场的高波动性,很难保证在我们需要用钱时市场状况好。理论上在逐步接近退休年龄时,我们需要调整股债比例降低风险。ILPs和Robo都选择股债组合的搭配,自动平衡。而券商平台上只能自己调配,增加交易成本。ILPs和Robo的优势就是可以让你做到hands-free。

在逐步拆解这个ILP产品过程中我也学到很多,对ILPs的态度有了改观,可以更中立的去看待不同的理财投资产品。总体来说,我对这家年轻的保险公司印象不错,比较认可它的电子化,信息透明度。这个产品的低管理费和返利力度(相比于其他很多保险产品),也让我对保险投资产品有了新的看法。以及更好的认识了Robo advisor——我才意识到它费用其实很高!如果已经购买101 ILPs,没有必要焦虑,保险也有独特的好处,比如资产隔离,遗产规划等,本身也可以很好的累积财富。而Robo advisor也不一定是保险理财产品的最佳替代方式。盲目退保可能得不偿失,如果没有信心自己管理资产,那安心的供保也会有很好的收益。

数据仍告诉我们:定投被动指数基金是最有效的低成本、低维护的资产增值方式。但仅仅是历史数据,未来谁都不可以预测!第一个ETF产生于1993,30年前而已,谁知道以后金融会如何发展,说不定比特币统治世界。保持开放心态,持续学习。

附录

这是我偶然搜到的一位保险经纪对于ILPs的解释。我以自己目前有限的认知予以反驳。我觉得因为一些误导性的推销话术反而让ILPs诸多诟病:当客户发现这些错误引导后,对ILPs的态度就特别负面。

参考:

免责声明: 这个博客中的内容仅供信息参考,不旨在提供个人财务建议。请在进行尽职调查后做出您的财务决策。
Buy Me A Coffee