【Python 精算實戰】定期壽險 01-保險成本之計算

撰寫你的第一個精算程式

Joseph Jiang
ActuaViz|Actualize Your Future
7 min readJun 20, 2022

--

The Valuation of term life insurance benefit

在保險精算實務作業上,要對一個保險商品進行各項精算評估前,首要事項是先了解保險商品的成本。要先知道成本,才能進行後續的分析,本篇先從「保險成本(Insurance Benefit Cost)」談起。

「保險成本」是指保險公司提供保障的成本,不包含其他費用成本(如:佣金、營業、核保、理賠、稅等費用),只計算承諾給保戶的保障項目(Benefits)的成本。

本篇文章將以「定期壽險(Term Life Insurance)」作為初步範例,帶大家進入精算與 Python 的世界。

定期壽險介紹

定期壽險:被保險人在保險期間內身故才會獲得理賠金。

舉例來說——購買一張 10 年定期壽險的保單。若被保險人在保險期間 10 年內身故,保險公司將按保險金額給付身故保險金;若 10 年到期無發生理賠事件,則契約自然終止,保險公司無須給付任何保險金。

保險成本計算相關的變數是:

  • 商品規格(Product Specifications):保險金額(Sum Assured)、保險期間(Insurance Period)
  • 精算假設(Actuarial Assumptions):死亡率(Mortality Rate)、保單預定利率(Assumed Interest Rate),其中假設死亡率是由性別(Gender)、保險年齡(Insurance Age)兩個風險因子決定。
Insurace Benefit Cost

台灣壽險業經驗生命表

台灣壽險定價有業界標準使用的生命表,可以在財團法人保險事業發展中心(保發中心)的網站下載,網站連結如下圖:

取自:https://www.tii.org.tw/tii/actuarial/actuarial3/report/index.html?category=56

本範例使用的是「台灣壽險業第六回經驗生命表」,簡稱 2021TSO,讀者可以直接在此下載檔案「2021TSO.csv」。

【實作】一年期壽險計算

為方便理解,我們先從一年期開始撰寫程式碼,試算以下情境:

21 歲女性購買保額金額為 1 萬的一年期定期壽險,保單預定利率為 2%。此外,為簡化計算,假設不論事故發在何時,保險理賠金一律在事故當年之年底給付。請試算保險成本。

這裡的保險成本是指「期望」的保險成本,是考慮機率模型的期望值。保險公司期望身故理賠金的公式如下:

期望身故理賠金 = 保險金額 * 當期死亡人數比率 
= 保險金額 * 期初存活人數比率 * 當期死亡率
= Sum Assured * Survivals *
Mortality Rate (Gender, Insurance Age)
註:在保單開始之初,期初存活人數比率=100%

在計算成本時需考慮「金錢的時間價值」,因為本範例假設理賠金都是在年底給付,而這裡的保險成本指的是「期初價值」,所以「期望保險成本」就是「期望身故理賠金」折現到期初的「現金價值」,公式如下:

(期望)保險成本 = 期望身故理賠金之期初現值
     = 保險金額 * 當年度死亡人數 * 當期折現利率
      = Sum Assured *
      Mortality Rate(Gender, Insurance Age)*
      (1 + Assumed Interest Rate)^(-1)

Python 程式碼如下:

Insurance Benefit Cost Example 1

1.商品規格變數定義

sum_assured = 10000
insurance_period = 1

2. 預定利率變數定義

assumed_Interest_rate = 0.02

3. 讀取生命表(請自行更新檔案路徑)

file_path = “D:/Actuarial Data/Mortality Rate/” # Please change the file path
file_name = “2021TSO.csv”
mortTable = pd.read_csv(file_path + file_name) # Mortality Rate Table

4. 設定被保險人資訊(同時也是死亡率之風險因子)


gender = 1 # 0 = male, 1 = female
insurance_age = 21

5. 篩選指定性別與年齡之死亡率

i = (mortTable[“Gender”] == gender) & 
(mortTable[“Age”] == insurance_age)
mort_rate = mortTable[i][“MortRate”].tolist()[0]

6. 輸入計算公式

survivals = 1
deaths = survivals * mort_rate
benefit_cost = sum_assured * deaths *
((1+assumed_Interest_rate)**(-1))
survivals = survivals - deaths

7. 印出結果如下

print(benefit_cost)benefit_cost = 1.833333333333333

因此,21 歲女性購買保額金額為 1 萬的一年期定期壽險(假設保單預定利率為 2%)的保險成本是 1.83 元,這也是保險公司會向保戶收取的躉繳純保費(Net Single Premium)。

定期壽險計算

在上一段程式碼,細心的你應該有發現到變數 insurance_period 並沒有用到計算裡,我們只要加一個 For 迴圈,就可以完成定期壽險保險成本之計算。

將保險期間改為 10 年的程式碼如下:

Insurance Benefit Cost Example 2

程式碼調整內容如下:

1. 保險期間改為 10 年

insurance_period = 10

2. 加入年度變數 Year,並用 For 迴圈完成計算

benefit_cost = 0
survivals = 1
for Year in range(insurance_period):
i = (mortTable["Gender"] == gender) &
(mortTable["Age"] == insurance_age + Year)
mort_rate = mortTable[i]["MortRate"].tolist()[0]
deaths = survivals * mort_rate
benefit_cost = benefit_cost + sum_assured * deaths *
((1 + assumed_Interest_rate)**(-(Year+1)))
survivals = survivals - deaths

3. 印出結果如下:

benefit_cost = 21.553084743518582

因此,21 歲女性購買保額金額為 1 萬的 10 年期定期壽險(假設保單預定利率為 2%)的保險成本是 21.55元。

現在我們已經完成了 Python 的第一個精算程式,在理解保險成本的計算過程後,下一篇就來計算要跟保戶收取的保費,也就是收入與支出的對價關係。

系列文章

  • Coming Soon……

參考資料

  • David C. M. Dickson, Howard R. Waters, & Mary Hardy (2013). Actuarial Mathematics for Life Contingent Risks.

歡迎「追蹤」、「拍手」,關注我們最新的消息 :)

【Contact Us】

--

--