Modul1
unknown
vbscript
2 years ago
104 kB
9
Indexable
Sub Read_Data() file$ = Path_inf(test_NUM(0)) Erase NP, LL, GP_0, P6, H6, PA6, P16, P26, V6, VV, CV, SIA, SIB, Pay_AN, SIA_RC, SIA_PUA, SIA_RC_PUA, PU, RPU_CV, AXP6, AXP, Pay_HB, A_HB, Pay_Accident For MF = 1 To 2 If MF = 1 Then SEX$ = "M" Else SEX$ = "F" For NN = 1 To 20 If NN_inf(test_NUM(0), NN) <> 0 Then Open file$ + "\P-" + SEX$ & NN For Input As #1 Open file$ + "\V-" + SEX$ & NN For Input As #2 Open file$ + "\SIA-" + SEX$ & NN For Input As #3 Open file$ + "\PAY-" + SEX$ & NN For Input As #4 Open file$ + "\SIC-" + SEX$ & NN For Input As #5 Open file$ + "\U-" + SEX$ & NN For Input As #6 Open file$ + "\AXP-" + SEX$ & NN For Input As #7 On Error Resume Next If Index_HB_inf(test_NUM(0)) = "Y" Then Open file$ + "\HB-" + SEX$ & NN For Input As #8 If Index_HB_inf(test_NUM(0)) = "Y" Then Open file$ + "\VL-" + SEX$ & NN For Input As #9 If Index_HB_inf(test_NUM(0)) = "Y" Then Open file$ + "\AXPL-" + SEX$ & NN For Input As #10 Do Until EOF(1): Input #1, XX: Input #1, SP, LS, SG, NP(MF, NN, XX), LL(MF, NN, XX), GP_0(MF, NN, XX), h, Pa, P1, P2, SP6, P6(MF, NN, XX), H6(MF, NN, XX), PA6(MF, NN, XX), P16(MF, NN, XX), P26(MF, NN, XX), SPX, SP6X, V_DEF0: Loop Do Until EOF(2): Input #2, XX, t: Input #2, SV6, SV, V6(MF, NN, XX, t), VV(MF, NN, XX, t), CV(MF, NN, XX, t): Loop Do Until EOF(3): Input #3, XX, t: Input #3, SIA(MF, NN, XX, t), SIB(MF, NN, XX, t): Loop Do Until EOF(4): Input #4, XX, t: Input #4, Pay_AN(MF, NN, XX, t): Loop If Data_inf(test_NUM(0)) = 1 Then Do Until EOF(5): Input #5, XX, t: Input #5, SIA_RC(MF, NN, XX, t), SIB(MF, NN, XX, t): Loop ElseIf Data_inf(test_NUM(0)) = 2 Then Do Until EOF(5): Input #5, XX, t: Input #5, SIA_RC(MF, NN, XX, t), SIB(MF, NN, XX, t), SIA_RC_PUA(MF, NN, XX, t), SIA_PUA(MF, CC, AGE, t): Loop Else Do Until EOF(5): Input #5, XX, t: Input #5, SIA_RC(MF, NN, XX, t), SIA_RC_PUA(MF, NN, XX, t), SIA_PUA(MF, CC, AGE, t): Loop End If Do Until EOF(6): Input #6, XX, t: Input #6, PU(MF, NN, XX, t), RPU_CV(MF, NN, XX, t), ET_YEAR, ET_DAY, ET_AN: Loop Do Until EOF(7): Input #7, XX, t: Input #7, AXP6(MF, NN, XX, t), AXP(MF, NN, XX, t): Loop If Index_HB_inf(test_NUM(0)) = "Y" Then Do Until EOF(8): Input #8, XX, t: Input #8, Pay_HB(MF, NN, XX, t), A_HB(MF, NN, XX, t), Pay_Accident(MF, NN, XX, t): Loop: Close #8 If Index_HB_inf(test_NUM(0)) = "Y" Then Do Until EOF(9): Input #9, XX, t: Input #9, SVL6, SVL, VL6(MF, NN, XX, t), VL(MF, NN, XX, t): Loop: Close #9 If Index_HB_inf(test_NUM(0)) = "Y" Then Do Until EOF(10): Input #10, XX, t: Input #10, AXP6(MF, NN, XX, t), AXP(MF, NN, XX, t): Loop: Close #10 Close #1, #2, #3, #4, #5, #6, #7 End If Next NN Next MF End Sub Sub Assumption() test_type = Sheets("Setup").Cells(7, 3) Erase Px, Qs, Qx, Qw, Exp_Var, Exp_Fix, Exp_CSMVar, Exp_CSMFix, EXP_test_Var2, EXP_test_Var3, EXP_test_Fix1, EXP_test_Fix2, TPR MF = test_MF(0): CH = test_CH(0): AGE = test_Age(0): NN = test_NN(0): num = test_NUM(0) Px(0) = 1: Qs(1) = 1 WW = DUR_inf(num) - AGE For t = 1 To WW '死亡率 If Index_小額_inf(num) = "Y" And Sheets("Setup").Cells(7, 3) <> 2 And AGE + t <= 85 And t <= 20 Then Q1 = Sheets("Assumption").Cells(5, 5) * 1.1 Else Q1 = Sheets("Assumption").Cells(5, 5) End If Q3 = Sheets("Assumption").Cells(6, 5) If test_type = 3 Then Q2 = Range("Qx_Q2")(MF, min(t, 10)) Else Q2 = Range("Qx_Q2")(MF + 2, min(t, 10)) If Index_小額_inf(num) = "Y" And Sheets("Setup").Cells(7, 3) <> 2 And AGE + t > 85 Then Q2 = 1 If index_BEY(0) = 1 Then '損益兩平投報率無死亡 Qx(t) = 0 Else If Name_inf(num) = "中國人壽友保障終身壽險" Then Qx(t) = Range("TSO_友保障")(AGE + t, MF) * Q1 * Q2 * (1 - Q3) ^ t * (1 + Mortality_Sen(0)) Else Qx(t) = Range("TSO_2021")(AGE + t, MF) * Q1 * Q2 * (1 - Q3) ^ t * (1 + Mortality_Sen(0)) End If End If Px(t) = Px(t - 1) * (1 - Qx(t)) '脫退率 Select Case NN Case 1: cex = 1 Case 2, 3: cex = 5 Case 4: cex = 9 Case 5, 6: If CUR_inf(num) < 2 Then cex = 13 Else cex = 17 Case Else: cex = 21 End Select If Index_小額_inf(num) = "Y" Then cex = 21 '小額脫退採長年期 If test_type = 1 Or test_type = 4 Then cex = cex ElseIf test_type = 2 Then If PT2_inf(num) <> "還本型保險" Then cex = cex + 1 Else cex = cex + 2 Else cex = cex + 3 End If If t < WW Then Qw(t) = Range("Qw")(cex, min(t, 11)) Else Qw(t) = Range("Qw")(cex, 12) If t = Lapse_year_Sen(0) Then Qw(t) = Lapse_rate_Sen(0) Else If Lapse_rate_Sen(0) = 1 And Sheets("Total Lapse").Cells(4, 9) = "皆為零" Then Qw(t) = 0 Else Qw(t) = Qw(t) * (1 + Lapse_Sen(0)) End If End If If index_BEY(0) = 1 Then Qw(t) = 0 ' '費用 If test_type = 4 Then test_type2 = 1 Else test_type2 = test_type If CUR_inf(num) = 1 Then ex_rate = 1 Else ex_rate = Sheets("Assumption").Cells(69, 3) '匯率 exp_var1 = Sheets("Assumption").Cells(72 + Int(test_type2 / 3) * 2 + min(NN, 2), 3 + CH) '通路費用 If NN > 1 And CUR_inf(num) = 1 Then '收費成本 exp_var2 = Sheets("Assumption").Cells(82 + Int(test_type2 / 3) * 2, 3 + CH) Else If t <= NN Then exp_fix1 = Sheets("Assumption").Cells(81 + Int(test_type2 / 3) * 2, 4 + Int(CUR_inf(num) / 2) * 5) Else exp_fix1 = 0 End If If CH = 5 Then R_EC = Sheets("Assumption").Cells(114, 5) Else R_EC = 1 '經常性費用 If PT1_inf(num) = "傳統型" Then cex = 0 Else cex = 2 exp_var3 = Sheets("Assumption").Cells(88 + min(NN, 10) + Int(test_type2 / 3) * 10, 4 + min(t, 2) + cex) * R_EC exp_fix2 = Sheets("Assumption").Cells(108 + min(NN, 2) + Int(test_type2 / 3) * 2, 4 + min(t, 2) + cex) * R_EC Exp_Var(t) = (exp_var1 + exp_var2 + exp_var3) * (1 + Exp_Sen(0)) Exp_Fix(t) = (exp_fix1 + exp_fix2) / ex_rate * (1 + Exp_Sen(0)) If t = 1 Then exp_csmvar3 = Sheets("Assumption").Cells(88 + min(NN, 10) + Int(test_type2 / 3) * 10, 4 + min(t, 2) + cex) * R_EC exp_csmfix2 = Sheets("Assumption").Cells(108 + min(NN, 2) + Int(test_type2 / 3) * 2, 4 + min(t, 2) + cex) * R_E exp_RAvar3 = 0 exp_RAfix2 = 0 Else exp_csmvar3 = Sheets("Assumption").Cells(88 + min(NN, 10) + Int(test_type2 / 3) * 10, 4 + min(t, 2) + cex) * R_EC * 0.37 exp_csmfix2 = Sheets("Assumption").Cells(108 + min(NN, 2) + Int(test_type2 / 3) * 2, 4 + min(t, 2) + cex) * R_E * 0.37 exp_RAvar3 = Sheets("Assumption").Cells(88 + min(NN, 10) + Int(test_type2 / 3) * 10, 4 + min(t, 2) + cex) * R_EC * 0.37 exp_RAfix2 = Sheets("Assumption").Cells(108 + min(NN, 2) + Int(test_type2 / 3) * 2, 4 + min(t, 2) + cex) * R_E * 0.37 Exp_CSMVar(t) = (exp_var1 + exp_var2 * 0.37 + exp_csmvar3) * (1 + Exp_Sen(0)) Exp_CSMFix(t) = (exp_fix1 * 0.37 + exp_csmfix2) / ex_rate * (1 + Exp_Sen(0)) Exp_RAVar(t) = (exp_var1 * 0 + exp_var2 * 0.37 + exp_RAvar3) * (1 + Exp_Sen(0)) Exp_RAFix(t) = (exp_fix1 * 0.37 + exp_RAfix2) / ex_rate * (1 + Exp_Sen(0)) End If If Name_inf(num) = "中國人壽全民小額終身壽險" Or Name_inf(test_NUM(0)) = "中國人壽公教小額終身壽險" Then Exp_Var(t) = Exp_Var(t) * 0.7 Exp_Fix(t) = Exp_Fix(t) * 0.7 End If If t = 1 And Name_inf(num) = "中國人壽醫生守富美元利率變動型終身壽險-定期給付型" Then Exp_Var(t) = Exp_Var(t) + 0.07 'VIP成本 '費用適足性檢測 If NN > 1 And CUR_inf(num) = 1 Then exp_var2 = Sheets("Assumption").Cells(157, 4) If NN = 1 Or CUR_inf(num) <> 1 Then If t <= NN Then exp_fix1 = Sheets("Assumption").Cells(156, 3 + CUR_inf(num)) Else exp_fix1 = 0 End If exp_var3 = Sheets("Assumption").Cells(161 + min(NN, 10), 3 + min(t, 2) + cex) exp_fix2 = Sheets("Assumption").Cells(171 + min(NN, 2), 3 + min(t, 2) + cex) EXP_test_Var2(t) = (exp_var2) * (1 + Exp_Sen(0)) EXP_test_Var3(t) = (exp_var3) * (1 + Exp_Sen(0)) EXP_test_Fix1(t) = exp_fix1 / ex_rate * (1 + Exp_Sen(0)) EXP_test_Fix2(t) = exp_fix2 / ex_rate * (1 + Exp_Sen(0)) Next t For t = 1 To 110 '利率 If index_BEY(0) = 1 Then TPR(t) = BEY_Invest(0) Else If test_type = 4 Then TPR(t) = Range("TPR2")(Int(CUR_inf(num) / 2) + 1, min(t, 20)) + Interest_Sen(0) Else TPR(t) = Range("TPR")(Int(CUR_inf(num) / 2) + 1, min(t, 20)) + Interest_Sen(0) End If End If Next t End Sub Sub Commission() CH = test_CH(0): NN = test_NN(0): num = test_NUM(0) Erase COMM_rate, COMM_rate_exp1, COMM_rate_exp2, COMM_rate_exp3, COMM_rate_exp4, COMM_rate_exp5, COMM_rate_test, COMM_CSM For t = 1 To NN '佣金率 COMM1 = COMM1_inf(num, NN, CH, t) '獎%P、獎%C COMM2 = COMM2_inf(num, NN, CH, t) COMM3 = COMM3_inf(num, NN, CH, t) '續年度服務津貼、繼續率獎金 COMM4 = COMM4_inf(num, NN, CH, t) If Index_繼續率_inf(num, NN, CH) = "Y" Then Select Case NN Case 1 To 5: R = 0 Case 6 To 7: R = Sheets("Assumption").Cells(199, 4) Case 8 To 9: R = Sheets("Assumption").Cells(199, 5) Case 10 To 12: R = Sheets("Assumption").Cells(199, 6) Case 13 To 14: R = Sheets("Assumption").Cells(199, 7) Case 15 To 17: R = Sheets("Assumption").Cells(199, 8) Case 18 To 19: R = Sheets("Assumption").Cells(199, 9) Case 20: R = Sheets("Assumption").Cells(199, 10) End Select If t = 2 Then COMM5 = Sheets("Assumption").Cells(196, 5) * R ElseIf t = 3 Then COMM5 = Sheets("Assumption").Cells(196, 6) * R Else COMM5 = 0 End If End If '年終、營運 If t = 1 And NN >= 6 And Index_年終_inf(num, NN, CH) = "Y" Then COMM6 = Sheets("Assumption").Cells(204, 3) Else COMM6 = 0 If t = 1 And NN >= 6 And Index_營運_inf(num, NN, CH) = "Y" Then COMM7 = Sheets("Assumption").Cells(205, 3) Else COMM7 = 0 '勞保成本 COMM8 = Sheets("Assumption").Cells(210, 3 + min(t, 11)) 'OR Dim COMM_OR(120) 'If t = 1 Then COMM_OR(t) = 2.23 Else COMM_OR(t) = 1.24 If t = 1 Then COMM_OR(t) = 2.21 Else COMM_OR(t) = 1.16 '佣金(Profit Test) If CH = 1 Then COMM_rate(t) = COMM1 * COMM_OR(t) + COMM2 + COMM1 * (COMM3 + COMM8) ElseIf CH = 2 Then COMM_rate(t) = COMM1 * (1 + COMM3 + COMM6 + COMM7) + COMM2 + COMM4 + COMM5 Else COMM_rate(t) = COMM1 * (1 + COMM3) + COMM2 End If '佣金(費差) COMM_rate_exp1(t) = COMM1 COMM_rate_exp2(t) = COMM2 COMM_rate_exp3(t) = COMM3 * COMM1 If CH = 1 Then If t = 1 Then COMM_rate_exp4(t) = COMM1 * 1.02 Else COMM_rate_exp4(t) = COMM1 * 0.02 ElseIf CH = 2 Then COMM_rate_exp4(t) = COMM4 + COMM5 COMM_rate_exp5(t) = (COMM6 + COMM7) * COMM1 End If '佣金(CSM) If CH = 1 Then If t = 1 Then COMM_CSM(t) = COMM1 * COMM_OR(t) + COMM2 + COMM1 * (COMM3 + COMM8) Else COMM_CSM(t) = COMM1 * (COMM_OR(t) - 1) * 0.37 + COMM1 + COMM2 * 0.37 + COMM1 * (COMM3 + COMM8) * 0.37 ElseIf CH = 2 Then If t = 1 Then COMM_CSM(t) = COMM1 * (1 + COMM3 + COMM6 + COMM7) + COMM2 + COMM4 + COMM5 Else COMM_CSM(t) = COMM1 * (COMM3 + COMM6 + COMM7) * 0.37 + COMM1 + COMM2 * 0.37 + COMM4 * 0.37 + COMM5 * 0.37 Else If t = 1 Then COMM_CSM(t) = COMM1 * (1 + COMM3) + COMM2 Else COMM_CSM(t) = COMM1 * COMM3 * 0.37 + COMM1 + COMM2 * 0.37 End If '佣金(RA) If CH = 1 Then If t = 1 Then COMM_RA(t) = 0 Else COMM_RA(t) = COMM1 * (COMM_OR(t) - 1) * 0.37 + COMM1 + COMM2 * 0.37 + COMM1 * (COMM3 + COMM8) * 0.37 ElseIf CH = 2 Then If t = 1 Then COMM_RA(t) = 0 Else COMM_RA(t) = COMM1 * (COMM3 + COMM6 + COMM7) * 0.37 + COMM1 + COMM2 * 0.37 + COMM4 * 0.37 + COMM5 * 0.37 Else If t = 1 Then COMM_RA(t) = 0 Else COMM_RA(t) = COMM1 * COMM3 * 0.37 + COMM1 + COMM2 * 0.37 End If '佣金(Commission test) If CH = 1 Then COMM_rate_test(t) = COMM_rate(t) - COMM1 * COMM8 '無勞保成本 Else COMM_rate_test(t) = COMM_rate(t) End If Next t End Sub Sub CSM_Test_Total() Clear_CSM Clear_Cashflow_CSM Erase Out_table_CSM, AEFF, GE_table, Profit_RBC_table, disGE_CSM_table Calculate test_CSM(0) = 1 Dim MP As Range If Sheets("Setup").Range("X7") = "" Then Set MP = Sheets("Setup").Range("X6:AD6") Else Set MP = Sheets("Setup").Range("X6", Sheets("Setup").Range("AD6").End(xlDown)) Read_Inf For i = 1 To MP.Rows.Count If MP(i, 2).Interior.Color <> 14277081 Then test_NUM(0) = MP(i, 1): test_NN(0) = MP(i, 3): test_Age(0) = MP(i, 4) test_MF(0) = MP(i, 5): test_CH(0) = MP(i, 7): test_dis(0) = MP(i, 13) If CAL_inf(test_NUM(0)) = "保額" Then test_SA(0) = MP(i, 6) Else test_GP(0) = MP(i, 6) If test_NUM(0) <> MP(i - 1, 1) Then Read_Data Read_CSM CSM_Test If Sheets("Setup").Cells(8, 3) = 1 Then test_Weight(0) = 1 Else test_Weight(0) = MP(i, 8) * Sheets("Setup").Cells(9, 8) / GE(1) If Sheets("Setup").Cells(14, 8) = "Y" Then Cashflow_CSM If test_MF(0) = 1 Then MF = "M" Else MF = "F" Select Case test_CH(0) Case 1: CH = "AG": Case 2: CH = "BR": Case 3: CH = "BK": Case 4: CH = "FS": Case 5: CH = "EC" End Select If Sheets("Cashflow(CSM)").Cells(2, 5) = "" Or Sheets("Cashflow(CSM)").Cells(2, 5) = test_Age(0) Then Sheets("Cashflow(CSM)").Cells(2, 5) = test_Age(0) Else Sheets("Cashflow(CSM)").Cells(2, 5) = "Total" If Sheets("Cashflow(CSM)").Cells(2, 7) = "" Or Sheets("Cashflow(CSM)").Cells(2, 7) = test_NN(0) Then Sheets("Cashflow(CSM)").Cells(2, 7) = test_NN(0) Else Sheets("Cashflow(CSM)").Cells(2, 7) = "Total" If Sheets("Cashflow(CSM)").Cells(2, 11) = "" Or Sheets("Cashflow(CSM)").Cells(2, 11) = test_GP(0) * 10000 Then Sheets("Cashflow(CSM)").Cells(2, 11) = test_GP(0) * 10000 Else Sheets("Cashflow(CSM)").Cells(2, 11) = "Total" If Sheets("Cashflow(CSM)").Cells(2, 13) = "" Or Sheets("Cashflow(CSM)").Cells(2, 13) = MF Then Sheets("Cashflow(CSM)").Cells(2, 13) = MF Else Sheets("Cashflow(CSM)").Cells(2, 13) = "Total" If Sheets("Cashflow(CSM)").Cells(2, 15) = "" Or Sheets("Cashflow(CSM)").Cells(2, 15) = CH Then Sheets("Cashflow(CSM)").Cells(2, 15) = CH Else Sheets("Cashflow(CSM)").Cells(2, 15) = "Total" If Sheets("CSM").Cells(4, 3) = "" Or Sheets("CSM").Cells(4, 3) = test_NN(0) Then Sheets("CSM").Cells(4, 3) = test_NN(0) Else Sheets("CSM").Cells(4, 3) = "Total" End If WW = DUR_inf(test_NUM(0)) - test_Age(0) MP(i, 12) = -(BEL(0) + RA(0)) / disCF(GE(), WW, , DIS_CSM(), 1) End If Next i If Sheets("Setup").Cells(14, 8) = "Y" Then Summary_Total(0) = 1 Cashflow_CSM Summary_Total(0) = 0 Erase test_CSM End Sub Sub Read_Inf() Calculate '基本資料 Dim inf As Range If Sheets("data").Range("F7") = "" Then Set inf = Sheets("data").Range("F6:F6") Else Set inf = Sheets("data").Range("F6", Sheets("data").Range("F6").End(xlDown)) For i = 1 To inf.Rows.Count num = inf(i, 2) Name_inf(num) = inf(i, 3) DIR_inf(num) = inf(i, 4) CUR_inf(num) = inf(i, 5) PT1_inf(num) = inf(i, 6) PT2_inf(num) = inf(i, 7) DUR_inf(num) = inf(i, 8) Index_WP_inf(num) = inf(i, 9) Index_HB_inf(num) = inf(i, 10) Index_RGE_inf(num) = inf(i, 11) Index_小額_inf(num) = inf(i, 12) CAL_inf(num) = inf(i, 13) Path_inf(num) = inf(i, 14) Data_inf(num) = inf(i, 15) Data2_inf(num) = inf(i, 16) S2_max_inf(num) = inf(i, 17) S2_min_inf(num) = inf(i, 18) Dir_min_inf(num) = inf(i, 19) Rein_inf(num) = inf(i, 20) Retention_inf(num) = inf(i, 21) Rein_TSO(num) = inf(i, 22) Rein_rate(num, 1) = inf(i, 23) Rein_rate(num, 2) = inf(i, 24) Rein_rate(num, 3) = inf(i, 25) Rein_P(num) = inf(i, 119) '新增利潤率 Rein_E(num) = inf(i, 120) '新增費用率 Rein_B1(num) = inf(i, 121) '新增B1 Rein_B2(num) = inf(i, 122) '新增B2 Rein_B3(num) = inf(i, 123) '新增B3 Rein_B4(num) = inf(i, 124) '新增B4 Next i X1 = "AG": X2 = "AH" If Sheets("data").Range(X2 & 7) = "" Then Set inf = Sheets("data").Range(X1 & 6) Else Set inf = Sheets("data").Range(X1 & 6, Sheets("data").Range(X2 & 6).End(xlDown)) For i = 1 To inf.Rows.Count num = inf(i, 1) NN = inf(i, 3) NN_inf(num, NN) = inf(i, 4) dis_num1 = inf(i, 5) dis_num2_inf(num, NN, dis_num1) = inf(i, 6) AIR_inf(num, NN) = inf(i, 7) VI6_inf(num, NN) = 1 / (1 + inf(i, 8)) dis1_inf(num, NN, dis_num1) = inf(i, 9) dis_SA_inf(num, NN, dis_num1) = inf(i, 10) dis2_inf(num, NN, dis_num1) = inf(i, 11) Next i 'Commission X1 = "BB": X2 = "BC" If Sheets("data").Range(X2 & 7) = "" Then Set inf = Sheets("data").Range(X1 & 6) Else Set inf = Sheets("data").Range(X1 & 6, Sheets("data").Range(X2 & 6).End(xlDown)) For i = 1 To inf.Rows.Count num = inf(i, 1) CH = inf(i, 3) NN = inf(i, 4) Index_年終_inf(num, NN, CH) = inf(i, 5) Index_營運_inf(num, NN, CH) = inf(i, 6) Index_繼續率_inf(num, NN, CH) = inf(i, 7) For t = 1 To NN '佣金率 COMM1_inf(num, NN, CH, t) = inf(i, 7 + min(t, 11)) '續年度 COMM4_inf(num, NN, CH, t) = inf(i, 18 + min(t, 11)) '獎%P、獎%C If t = 1 Then COMM2_inf(num, NN, CH, t) = inf(i, 30) COMM3_inf(num, NN, CH, t) = inf(i, 33) ElseIf t <= 5 Then COMM2_inf(num, NN, CH, t) = inf(i, 31) COMM3_inf(num, NN, CH, t) = inf(i, 34) Else COMM2_inf(num, NN, CH, t) = inf(i, 32) COMM3_inf(num, NN, CH, t) = inf(i, 35) End If Next t Next i 'CVrate X1 = "CU": X2 = "CV" If Sheets("data").Range(X2 & 7) = "" Then Set inf = Sheets("data").Range(X1 & 6) Else Set inf = Sheets("data").Range(X1 & 6, Sheets("data").Range(X2 & 6).End(xlDown)) For i = 1 To inf.Rows.Count num = inf(i, 1) NN = inf(i, 3) For t = 1 To 120 CVrate_inf(num, NN, t) = inf(i, 3 + min(t, 20)) Rein_BM(num, t) = inf(i, 3 + min(t, 30)) Next t Next i End Sub Sub Read_CSM() 'Erase Dir_CSM, Dir_報部 'CSM 1000投報率、折現率 'Read_Inf CSM_month = Sheets("Setup").Cells(16, 4) Workbook1 = ThisWorkbook.Name If Sheets("Setup").Cells(17, 4) = "商發" Then file$ = "\\tpact01\Production2\PD\商發公用\1.傳統型商品科(暫存區)\Product\CSM_1000組情境\NEW\" Else file$ = "\\tpact01\Production2\PD\商發公用\1.傳統型商品科(暫存區)\Product\CSM_1000組情境\精算\" If Sheets("Setup").Cells(14, 4) = "HW" Then Workbook2 = "2.千組投報率及折現率_HW_" & CSM_month & "(值)" & ".xlsx" Workbooks.Open FileName:=file$ & CSM_month & "\2.千組投報率及折現率_HW_" & CSM_month & "(值)" & ".xlsx" Windows(Workbook2).Activate For Scenario = 1 To 1000 For t = 1 To 110 INV_1000(1, Scenario, t) = Sheets("投報率_台幣利變壽").Cells(1 + Scenario, 1 + t) '台幣 INV_1000(2, Scenario, t) = Sheets("投報率_美元利變壽").Cells(1 + Scenario, 1 + t) '美元 DIS_1000(1, Scenario, t) = Sheets("折現率_台幣利變壽").Cells(1 + Scenario, 1 + t) '台幣 DIS_1000(2, Scenario, t) = Sheets("折現率_美元利變壽").Cells(1 + Scenario, 1 + t) '美元 '********************************** 112.11.24調整宣告利率 ********************************** If t = 1 Then Dir(0) = DIR_inf(test_NUM(0)): Dir_CSM(Scenario, t) = Dir(0) Rein_W(CUR_inf(test_NUM(0)), Scenario, t) = Rein_B1(test_NUM(0)) * (INV_1000(CUR_inf(test_NUM(0)), Scenario, t) - INV_1000(CUR_inf(test_NUM(0)), Scenario, t - 1)) + Rein_B2(test_NUM(0)) * (Dir_CSM(Scenario, t) - Rein_BM(test_NUM(0), t)) Rein_ACC_W(CUR_inf(test_NUM(0)), Scenario, t) = Rein_ACC_W(CUR_inf(test_NUM(0)), Scenario, t - 1) + Rein_W(CUR_inf(test_NUM(0)), Scenario, t) Dir_CSM(Scenario, t + 1) = Application.max(0, INV_1000(CUR_inf(test_NUM(0)), Scenario, t) - Rein_P(test_NUM(0)) - Rein_E(test_NUM(0)) - Rein_W(CUR_inf(test_NUM(0)), Scenario, t)) '******************************************************************************************* ' A_INV(t) = A_INV(t) + INV_1000(CUR_inf(test_NUM(0)), Scenario, t) / ss ' A_DIS_CSM(t) = A_DIS_CSM(t) + DIS_1000(CUR_inf(test_NUM(0)), Scenario, t) / ss ' A_DIR(t) = A_DIR(t) + Dir_CSM(Scenario, t) / ss Next t Next Scenario ActiveWorkbook.Close (False) Windows(Workbook1).Activate End If Workbook2 = "1.無風險利率產出_" & CSM_month & "(值)" & ".xlsx" Workbooks.Open FileName:=file$ & CSM_month & "\1.無風險利率產出_" & CSM_month & "(值)" & ".xlsx" Windows(Workbook2).Activate For t = 1 To 110 DIS_CSM_CUR(1, t) = Sheets("各幣別無風險利率").Cells(4 + t, 3) '台幣 DIS_CSM_CUR(2, t) = Sheets("各幣別無風險利率").Cells(4 + t, 6) '美元 Next t ActiveWorkbook.Close (False) Windows(Workbook1).Activate End Sub Sub Profit_Test_Total() Erase NP_dis, GE_dis, VD_dis, Cost_dis, RBC_dis, Profit_dis, Profit_Tax_dis, Profit_RBC_dis, AProfit_RBC_dis, AProfit_Tax_dis, Dead_P_dis, INT_P_dis, EXP_P_dis, Lapse_P_dis, Other_P_RBC_dis Erase NP_NN, GE_NN, VD_NN, Cost_NN, RBC_NN, Profit_NN, Profit_Tax_NN, Profit_RBC_NN, AProfit_RBC_NN, AProfit_Tax_NN, Dead_P_NN, INT_P_NN, EXP_P_NN, Lapse_P_NN, Other_P_RBC_NN Erase NP_Total, GE_Total, VD_Total, Cost_Total, RBC_Total, Profit_Total, Profit_Tax_Total, Profit_RBC_Total, AProfit_RBC_Total, AProfit_Tax_Total, Dead_P_Total, INT_P_Total, EXP_P_Total, Lapse_P_Total, Other_P_RBC_Total Erase GE_競品, RBC_競品, Profit_Tax_競品 Erase Out_table Clear_Summary Clear_Cashflow Clear_費用適足性檢測 Sheets("Summary").Rows("4:1283").Hidden = True Sheets("Summary").Rows("1288:1372").Hidden = True Sheets("Summary").Rows("1378:1402").Hidden = True Sheets("Summary").Rows("1405:1679").Hidden = True Calculate Read_Inf If Sheets("Setup").Range("X7") = "" Then Set MP = Sheets("Setup").Range("X6:AD6") Else Set MP = Sheets("Setup").Range("X6", Sheets("Setup").Range("AD6").End(xlDown)) For i = 1 To MP.Rows.Count test_NUM(0) = MP(i, 1): test_NN(0) = MP(i, 3): test_Age(0) = MP(i, 4) test_MF(0) = MP(i, 5): test_CH(0) = MP(i, 7): test_dis(0) = MP(i, 13) If CAL_inf(test_NUM(0)) = "保額" Then test_SA(0) = MP(i, 6) Else test_GP(0) = MP(i, 6) If test_NUM(0) <> MP(i - 1, 1) Then Read_Data If MP(i, 2).Interior.Color <> 14277081 Then Profit_Test 費差 WW = DUR_inf(test_NUM(0)) - test_Age(0) MP(i, 9) = disCF(Profit_RBC(), WW, Range("RDR"), , 0) / GE(1) MP(i, 10) = disCF(Profit_RBC(), WW, , TPR(), 0) / disCF(GE(), WW, , TPR(), 1) MP(i, 11) = EXP_diff(0) / GE_EXP_Sum(0) If Sheets("Setup").Cells(6, 4) = "Key Age" And (Sheets("Setup").Cells(5, 8) = "Y" Or Sheets("Setup").Cells(6, 8) = "Y") Then If Sheets("Setup").Cells(7, 3) = 1 Then Sheets("Summary").Cells(1, 1) = Name_inf(test_NUM(0)) & " 利潤測試(情境測試假設)" ElseIf Sheets("Setup").Cells(7, 3) = 2 Then Sheets("Summary").Cells(1, 1) = Name_inf(test_NUM(0)) & " 利潤測試(標準假設)" ElseIf Sheets("Setup").Cells(7, 3) = 3 Then Sheets("Summary").Cells(1, 1) = Name_inf(test_NUM(0)) & " 利潤測試(最佳估計)" ElseIf Sheets("Setup").Cells(7, 3) = 4 Then Sheets("Summary").Cells(1, 1) = Name_inf(test_NUM(0)) & " 利潤測試(V1假設)" End If If Sheets("Setup").Cells(8, 3) = 1 Then test_Weight(0) = 1 Else test_Weight(0) = MP(i, 8) * Sheets("Setup").Cells(9, 8) / GE(1) If MP(i, 4) Mod 10 = 0 Then test_X(0) = MP(i, 4) / 10 + 1: Summary End If If i = 1 Or MP(i, 4) < MP(i - 1, 4) Then test_X(0) = 11: Summary End If If MP(i, 4) > MP(i + 1, 4) Then test_X(0) = 12: Summary End If If Sheets("Setup").Cells(6, 8) = "Y" Then Cashflow If test_MF(0) = 1 Then MF = "M" Else MF = "F" Select Case test_CH(0) Case 1: CH = "AG": Case 2: CH = "BR": Case 3: CH = "BK": Case 4: CH = "FS": Case 5: CH = "EC" End Select If Sheets("Cashflow").Cells(2, 3) = "" Or Sheets("Cashflow").Cells(2, 3) = AIR_inf(test_NUM(0), test_NN(0)) Then Sheets("Cashflow").Cells(2, 3) = AIR_inf(test_NUM(0), test_NN(0)) Else Sheets("Cashflow").Cells(2, 5) = "Total" If Sheets("Cashflow").Cells(2, 5) = "" Or Sheets("Cashflow").Cells(2, 5) = test_Age(0) Then Sheets("Cashflow").Cells(2, 5) = test_Age(0) Else Sheets("Cashflow").Cells(2, 5) = "Total" If Sheets("Cashflow").Cells(2, 7) = "" Or Sheets("Cashflow").Cells(2, 7) = test_NN(0) Then Sheets("Cashflow").Cells(2, 7) = test_NN(0) Else Sheets("Cashflow").Cells(2, 7) = "Total" If CAL_inf(test_NUM(0)) = "保額" Then Sheets("Cashflow").Cells(2, 10) = "保額=" If Sheets("Cashflow").Cells(2, 11) = "" Or Sheets("Cashflow").Cells(2, 11) = test_SA(0) * 10000 Then Sheets("Cashflow").Cells(2, 11) = test_SA(0) * 10000 Else Sheets("Cashflow").Cells(2, 11) = "Total" Else Sheets("Cashflow").Cells(2, 10) = "保費=" If Sheets("Cashflow").Cells(2, 11) = "" Or Sheets("Cashflow").Cells(2, 11) = test_GP(0) * 10000 Then Sheets("Cashflow").Cells(2, 11) = test_GP(0) * 10000 Else Sheets("Cashflow").Cells(2, 11) = "Total" End If If Sheets("Cashflow").Cells(2, 13) = "" Or Sheets("Cashflow").Cells(2, 13) = MF Then Sheets("Cashflow").Cells(2, 13) = MF Else Sheets("Cashflow").Cells(2, 13) = "Total" If Sheets("Cashflow").Cells(2, 15) = "" Or Sheets("Cashflow").Cells(2, 15) = CH Then Sheets("Cashflow").Cells(2, 15) = CH Else Sheets("Cashflow").Cells(2, 15) = "Total" If Sheets("費用適足性檢測").Cells(7, 2) = "" Or Sheets("費用適足性檢測").Cells(7, 2) = test_NN(0) Then Sheets("費用適足性檢測").Cells(7, 2) = test_NN(0) Else Sheets("費用適足性檢測").Cells(7, 2) = "Total" If Sheets("費用適足性檢測").Cells(7, 3) = "" Or Sheets("費用適足性檢測").Cells(7, 3) = CH Then Sheets("費用適足性檢測").Cells(7, 3) = CH Else Sheets("費用適足性檢測").Cells(7, 3) = "Total" If Sheets("Setup").Cells(7, 3) = 1 Then Sheets("Cashflow").Cells(1, 1) = Name_inf(test_NUM(0)) & " 利潤測試(情境測試假設)" ElseIf Sheets("Setup").Cells(7, 3) = 2 Then Sheets("Cashflow").Cells(1, 1) = Name_inf(test_NUM(0)) & " 利潤測試(標準假設)" ElseIf Sheets("Setup").Cells(7, 3) = 3 Then Sheets("Cashflow").Cells(1, 1) = Name_inf(test_NUM(0)) & " 利潤測試(最佳估計)" ElseIf Sheets("Setup").Cells(7, 3) = 4 Then Sheets("Cashflow").Cells(1, 1) = Name_inf(test_NUM(0)) & " 利潤測試(V1假設)" End If End If End If End If Next i If Sheets("Setup").Cells(5, 8) = "Y" Then Summary_Total(0) = 1 Summary Summary_Total(0) = 0 End If If Sheets("Setup").Cells(6, 8) = "Y" Then Summary_Total(0) = 1 Cashflow Summary_Total(0) = 0 End If End Sub Sub Profit_Test() Erase EFF, GP, Loading, GE, GE_0, COMM, COMM_1, COMM_2, EXP, CV_cost, P_DB, P_WP, P_HB, P_AD, P_SB, P_MB, APUA, V, d_V, V_DEF, VD, d_VD, Tax, Tax_1, RBC, d_RBC, Invest, Profit, Profit_Tax, AProfit_Tax, Profit_RBC, AProfit_RBC, Asset, In_SA, Net_CF, Cost, FYS, Dead_P, INT_P, EXP_P, Lapse_P, Other_P, Other_P_RBC, Out, BER_CSM, D, D_HW, MCD, MCD2, Dir Erase Retention, ReinGP_rate, ReinGP, ReinDead, ReinSA Application.ScreenUpdating = False Assumption Commission Calculate MF = test_MF(0): CH = test_CH(0): AGE = test_Age(0): NN = test_NN(0): num = test_NUM(0): dis_num1 = test_dis(0) AIR = AIR_inf(num, NN) VI = 1 / (1 + AIR) VI6 = VI6_inf(num, NN) WW = DUR_inf(num) - AGE EFF(0) = 1 If Data2_inf(num) = "Y" Then 取位 = 0 Else 取位 = 30 If Name_inf(num) = "中國人壽友保障終身壽險" Then TSO = "TSO_友保障" Else TSO = "TSO_2021" If CAL_inf(num) = "保額" Then SA = test_SA(0) Else SA = test_GP(0) / GP_0(MF, NN, AGE) * 10000 For t = 1 To WW GP(0) = Round(GP_0(MF, NN, AGE) * (1 - dis1_inf(num, NN, dis_num1) - dis2_inf(num, NN, dis_num1)), 取位) Loading(0) = 1 - NP(MF, NN, AGE) / GP(0) If t <= NN Then GE(t) = GP(0) * EFF(t - 1) * SA: GE_0(t) = GP_0(MF, NN, AGE) * EFF(t - 1) * SA Else GE(t) = 0 COMM(t) = GE(t) * COMM_rate(t) COMM_1(t) = GE(t) * COMM_rate_exp1(t) COMM_2(t) = COMM(t) - COMM_1(t) EXP(t) = Exp_Fix(t) * EFF(t - 1) + Exp_Var(t) * GE(t) '死亡給付 If t = WW Then P_DB(t) = EFF(t - 1) * Qx(t) * (SA + APUA(t)) * (max(Pay_AN(MF, NN, AGE, t), SIA(MF, NN, AGE, t) * 10000) - A_HB(MF, NN, AGE, t) * 10000 * (1 + Morbidity_Sen(0))) Else P_DB(t) = EFF(t - 1) * Qx(t) * (SA * SIA_RC(MF, NN, AGE, t) * 10000 + APUA(t) * SIA_RC_PUA(MF, NN, AGE, t) * 10000) End If If t <= NN And AGE + t > 16 Then P_DB(t) = P_DB(t) + EFF(t - 1) * Qx(t) * GP_0(MF, NN, AGE) * 0.5 * SA * RGE End If '豁免 If Index_WP_inf(num) = "Y" Then Pay_WP = 0 'Px0 = Px(t - 1) For k = t To NN - 1 Pay_WP = Pay_WP + Px(k) * VI ^ k Next k P_WP(t) = Pay_WP * Range("Q_26")(AGE + t, MF) * GE(t) End If '健康、傷害 P_HB(t) = EFF(t - 1) * SA * 1 * Pay_HB(MF, NN, AGE, t) * (1 + Morbidity_Sen(0)) P_AD(t) = EFF(t - 1) * (SA + APUA(t)) * 10000 * Pay_Accident(MF, NN, AGE, t) '解約 If Lapse_rate_Sen(0) = 1 And Sheets("Total Lapse").Cells(3, 9) = "次年度期初" Then CV(MF, NN, AGE, t) = Int(VV(MF, NN, AGE, t) * CVrate_inf(num, NN, t + 1) + 0.5) End If CV_cost(t) = EFF(t - 1) * (1 - Qx(t)) * Qw(t) * (SA * (CV(MF, NN, AGE, t) + Pay_AN(MF, NN, AGE, t) - A_HB(MF, NN, AGE, t) * 10000 * (1 + Morbidity_Sen(0))) + APUA(t) * (AXP(MF, NN, AGE, t) + Pay_AN(MF, NN, AGE, t))) '生存金 If t < WW Then P_SB(t) = EFF(t - 1) * (1 - Qx(t)) * (1 - Qw(t)) * (SA + APUA(t)) * (Pay_AN(MF, NN, AGE, t)) '滿期金 If t = WW Then P_MB(t) = EFF(t - 1) * (1 - Qx(t)) * (1 - Qw(t)) * (SA + APUA(t)) * (Pay_AN(MF, NN, AGE, t) - A_HB(MF, NN, AGE, t) * 10000 * (1 + Morbidity_Sen(0))) Else P_MB(t) = 0 End If '回饋金 If Index_HB_inf(test_NUM(0)) = "Y" Then VVV(MF, NN, AGE, t) = VL(MF, NN, AGE, t) Else VVV(MF, NN, AGE, t) = VV(MF, NN, AGE, t) '判斷PUA If PT1_inf(num) = "利變型" Then If Sheets("Setup").Cells(11, 4) = 1 Then If t < WW Then D(t) = EFF(t - 1) * (1 - Qx(t)) * SA * (VVV(MF, NN, AGE, t) + Pay_AN(MF, NN, AGE, t)) * max(Dir_CSM(Scenario, t) - AIR, 0) Else D(t) = EFF(t - 1) * (1 - Qx(t)) * SA * Pay_AN(MF, NN, AGE, t) * max(Dir_CSM(Scenario, t) - AIR, 0) If Sheets("Setup").Cells(14, 4) = "HW" And test_CSM(0) = 1 Then 'HW ' For Scenario = 1 To 1000 If t < WW Then D_HW(Scenario, t) = EFF(t - 1) * (1 - Qx(t)) * SA * (VVV(MF, NN, AGE, t) + Pay_AN(MF, NN, AGE, t)) * max(Dir_CSM(Scenario, t) - AIR, 0) Else D_HW(Scenario, t) = EFF(t - 1) * (1 - Qx(t)) * SA * Pay_AN(MF, NN, AGE, t) * max(Dir_CSM(Scenario, t) - AIR, 0) End If ' Next Scenario End If Else If Sheets("Setup").Cells(11, 4) = 0 Then If t < WW Then PUA = (SA * (VVV(MF, NN, AGE, t) + Pay_AN(MF, NN, AGE, t)) + APUA(t) * (AXP(MF, NN, AGE, t) + Pay_AN(MF, NN, AGE, t))) * max(Dir_CSM(Scenario, t) - AIR, 0) / AXP(MF, NN, AGE, t) APUA(t + 1) = APUA(t) + PUA Else D(t) = EFF(t - 1) * (1 - Qx(t)) * (SA + APUA(t)) * (Pay_AN(MF, NN, AGE, t)) * max(Dir(t) - AIR, 0) End If End If End If End If '*********** ' If Index_HB_inf(test_NUM(0)) = "Y" Then VVV(MF, NN, AGE, t) = VL(MF, NN, AGE, t) Else VVV(MF, NN, AGE, t) = VV(MF, NN, AGE, t) ' If PT1_inf(num) = "利變型" Then ' If t = 1 Or (Sheets("Setup").Cells(7, 4) = "1. 定價假設" And Sheets("Setup").Cells(7, 5) = "(拉平)") Or Sheets("Setup").Cells(7, 4) = "3. 最佳估計" Then ' Dir(0) = DIR_inf(num) ' Dir(t) = DIR_inf(num) ' Else ' MCD(t) = Range("bond")(CUR_inf(num), min(t, 20)) ' If CUR_inf(num) = 1 Then ratio1 = 0.65 Else ratio1 = 0.94 ' MCD2(t) = (TPR(t) - MCD(t) * (1 - ratio1)) / ratio1 ' If Interest_Sen(0) > 0 Then maxS2_1 = 0.005: maxS2_2 = 0 ' If Interest_Sen(0) < 0 Then maxS2_1 = 0: maxS2_2 = -0.0015 ' If Interest_Sen(0) = -0.005 Then maxS2_1 = -0.0015: maxS2_2 = 0 ' If Interest_Sen(0) = 0.005 Then maxS2_1 = 0.002: maxS2_2 = 0 ' S1 = MCD2(t) - MCD(t) ' If Sheets("Setup").Cells(7, 4) = "4. V1假設" Then S2 = min(max((TPR(t) - Dir(0)) * 0, 0.0165 + maxS2_2), 0.025 + maxS2_1) Else S2 = min(max(TPR(t) - Dir(0), S2_min_inf(num) + maxS2_2), S2_max_inf(num) + maxS2_1) '0.01 ' If Interest_Sen(0) < 0 Then minR = 0 Else: If Dir_min_inf(num) = "宣告利率" Then minR = Dir(0) Else minR = Dir_min_inf(num) ' Dir(t) = max(minR, min(MCD(t) + S1, TPR(t) - S2)) ' End If ' If PT1_inf(num) = "利變型" Then ' If Sheets("Setup").Cells(7, 4) <> "4. V1假設" Then ' If t < WW Then D(t) = EFF(t - 1) * (1 - Qx(t)) * SA * (VVV(MF, NN, AGE, t) + Pay_AN(MF, NN, AGE, t)) * max(Dir(t) - AIR, 0) Else D(t) = EFF(t - 1) * (1 - Qx(t)) * SA * Pay_AN(MF, NN, AGE, t) * max(Dir(t) - AIR, 0) ' If Sheets("Setup").Cells(14, 4) = "HW" And test_CSM(0) = 1 Then 'HW ' For Scenario = 1 To 1000 ' If t < WW Then ' D_HW(Scenario, t) = EFF(t - 1) * (1 - Qx(t)) * SA * (VVV(MF, NN, AGE, t) + Pay_AN(MF, NN, AGE, t)) * max(Dir_CSM(Scenario, t) - AIR, 0) ' Else ' D_HW(Scenario, t) = EFF(t - 1) * (1 - Qx(t)) * SA * Pay_AN(MF, NN, AGE, t) * max(Dir_CSM(Scenario, t) - AIR, 0) ' End If ' Next Scenario ' End If ' ElseIf Sheets("Setup").Cells(7, 4) = "4. V1假設" Then ' If t < WW Then ' PUA = (SA * (VVV(MF, NN, AGE, t) + Pay_AN(MF, NN, AGE, t)) + APUA(t) * (AXPL(MF, NN, AGE, t) + Pay_AN(MF, NN, AGE, t))) * max(Dir(t) - AIR, 0) / AXPL(MF, NN, AGE, t) ' APUA(t + 1) = APUA(t) + PUA ' Else ' D(t) = EFF(t - 1) * (1 - Qx(t)) * (SA + APUA(t)) * (Pay_AN(MF, NN, AGE, t)) * max(Dir(t) - AIR, 0) ' End If ' End If ' End If ' End If '再保 If Sheets("Setup").Cells(10, 4) = "Y" And test_CSM(0) <> 1 Then If Rein_inf(num) = 1 Then If t = 1 Then If CUR_inf(num) = 1 Then ex_rate = 1 Else ex_rate = Sheets("Assumption").Cells(69, 3) '匯率 Rein_Surplus_Ratio = max(SA * (SIB(MF, NN, AGE, t) * 10000 - V6(MF, NN, AGE, t) - Pay_AN(MF, NN, AGE, t) - Pay_AN(MF, NN, AGE, t)) - Retention_inf(num) * 10000 / ex_rate, 0) / (SA * (SIB(MF, NN, AGE, t) * 10000 - V6(MF, NN, AGE, t) - Pay_AN(MF, NN, AGE, t) - Pay_AN(MF, NN, AGE, t))) End If ReinSA(t) = max(SA * (SIB(MF, NN, AGE, t) * 10000 - V6(MF, NN, AGE, t) - Pay_AN(MF, NN, AGE, t) - Pay_AN(MF, NN, AGE, t)), 0) * Rein_Surplus_Ratio ElseIf Rein_inf(num) = 2 Then ReinSA(t) = max(SA * (SIB(MF, NN, AGE, t) * 10000 - V6(MF, NN, AGE, t) - Pay_AN(MF, NN, AGE, t) - Pay_AN(MF, NN, AGE, t)), 0) * (1 - Retention_inf(num)) End If ReinGP_rate(t) = Range("TSO_" & Rein_TSO(num))(AGE + t, MF) * Rein_rate(num, min(t, 3)) ReinGP(t) = EFF(t - 1) * ReinGP_rate(t) * ReinSA(t) ReinDead(t) = EFF(t - 1) * Qx(t) * ReinSA(t) End If '責任準備金 If t = WW Then V(t) = 0 Else V(t) = Round(EFF(t - 1) * (1 - Qx(t)) * (1 - Qw(t)) * (SA * V6(MF, NN, AGE, t) + APUA(t) * AXP(MF, NN, AGE, t)), 取位) End If d_V(t) = V(t) - V(t - 1) '保費不足準備金 If NN > 1 And t <= NN And P26(MF, NN, AGE) > GP(0) Then If P6(MF, NN, AGE) > H6(MF, NN, AGE) * PA6(MF, NN, AGE) Then '20修 Vdef_AN1 = 0 For k = 1 To min(NN, 20) - t tPx6 = 1 For KT = 1 To k - 1 tPx6 = tPx6 * (1 - Range(TSO)(AGE + t + KT, MF)) Next KT Vdef_AN1 = Vdef_AN1 + tPx6 * VI6 ^ (k - 1) Next k Vdef_AN2 = 0 'a6(x+t:n-20) For k = Application.max(t, 21) To NN tPx6 = 1 For KT = 1 To k - 1 tPx6 = tPx6 * (1 - Range(TSO)(AGE + t + KT, MF)) Next KT Vdef_AN2 = Vdef_AN2 + tPx6 * VI6 ^ (k - 1) Next k V_DEF(t) = (P26(MF, NN, AGE) - GP(0)) * Vdef_AN1 + (P6(MF, NN, AGE) - GP(0)) * Vdef_AN2 Else 'FPT制 Vdef_AN1 = 0 'a6(x+t:n-t) For k = 1 To NN - t tPx6 = 1 For KT = 1 To k - 1 tPx6 = tPx6 * (1 - Range(TSO)(AGE + t + KT, MF)) Next KT Vdef_AN1 = Vdef_AN1 + tPx6 * VI6 ^ (k - 1) Next k V_DEF(t) = (P26(MF, NN, AGE) - GP(0)) * Vdef_AN1 End If If t = 1 Then '第1年度初保費不足準備金(T=0) DEF0 = P16(MF, NN, AGE) - GP(0): If DEF0 < 0 Then DEF0 = 0 V_DEF(0) = V_DEF(t) * (1 - Range(TSO)(AGE + 1, MF)) * VI6 + DEF0 End If Else V_DEF(t) = 0 End If VD(0) = EFF(0) * SA * V_DEF(0) VD(t) = EFF(t - 1) * (1 - Qx(t)) * (1 - Qw(t)) * SA * V_DEF(t) If t = 1 Then d_VD(t) = VD(t) Else d_VD(t) = VD(t) - VD(t - 1) '稅 If GE(t) = 0 Then Tax1 = 0 Else Tax1 = (GE(t) - CV_cost(t) - P_SB(t) - P_MB(t) - d_V(t)) * Range("Tax")(1) Tax2 = GE(t) * Range("Tax")(3) Tax(t) = max(Tax1, 0) + Tax2 TaxCSM(t) = max(Tax1, 0) + Tax2 * 0.37 '投資收益 Invest(t) = (GE(t) + Asset(t - 1) - EXP(t) - COMM(t) - Tax(t) - RBC(t - 1) - ReinGP(t) - 0.5 * (P_DB(t) + P_WP(t) + P_HB(t) + P_AD(t) - ReinDead(t))) * TPR(t) '稅前利潤 Profit(t) _ = GE(t) + Invest(t) - EXP(t) - Tax(t) - COMM(t) _ - P_DB(t) - P_HB(t) - P_AD(t) - P_WP(t) - CV_cost(t) - P_SB(t) - P_MB(t) - D(t) _ - ReinGP(t) + ReinDead(t) - d_V(t) - d_VD(t) '稅後利潤 Profit_Tax(t) = Profit(t) * (1 - Range("Tax")(2)) AProfit_Tax(t) = AProfit_Tax(t - 1) * (1 + TPR(t)) + Profit_Tax(t) '有效保額 If t < WW Then In_SA(t) = EFF(t - 1) * (1 - Qx(t)) * (1 - Qw(t)) * (SA * SIB(MF, NN, AGE, t) * 10000 + APUA(t) * SIA_PUA(MF, NN, AGE, t) * 10000) Else In_SA(t) = 0 'RBC Dim C3(120) C1o = Range("RBC_C1")(CUR_inf(num) + 0, min(t, 11)) C1s = Range("RBC_C1")(CUR_inf(num) + 2, min(t, 11)) C1c = Range("RBC_C1")(CUR_inf(num) + 4, min(t, 11)) If PT2_inf(num) = "終身死亡險" Then C2 = Range("RBC_C2")(1) ElseIf PT2_inf(num) = "定期死亡險" Then C2 = Range("RBC_C2")(2) ElseIf PT2_inf(num) = "養老險" Then C2 = Range("RBC_C2")(3) ElseIf PT2_inf(num) = "還本型保險" Then C2 = Range("RBC_C2")(4) End If C4_P = Range("RBC_C4")(1) C4_V = Range("RBC_C4")(2) C1o = C1o * (V(t) + VD(t)) C1s = C1s * (V(t) + VD(t)) C1c = C1c * (V(t) + VD(t)) C2 = C2 * max(In_SA(t) - (V(t) + P_SB(t)), 0) C3(t) = ((SA * VV(MF, NN, AGE, t) + APUA(t) * AXP(MF, NN, AGE, t)) * EFF(t - 1) * (1 - Qx(t)) * (1 - Qw(t))) * max(max(Dir(t), AIR) - TPR(t), 0) + 0.5 * C3(t - 1) '計算RBC使用之保單價值準備金不含當年度生存金 C4 = C4_P * GE(t) + C4_V * (V(t) + VD(t)) RBC(t) = 2 * 0.5 * (C0 + C4 + ((C1o + C3(t)) ^ 2 + C1c ^ 2 + C1s ^ 2 + C2 ^ 2) ^ 0.5) d_RBC(t) = RBC(t) - RBC(t - 1) '所得稅 Tax_1(t) = (Profit(t) + RBC(t - 1) * TPR(t)) * Range("Tax")(2) '稅後利潤(股東紅利分配) Profit_RBC(t) = (Profit(t) + RBC(t - 1) * TPR(t)) * (1 - Range("Tax")(2)) - d_RBC(t) AProfit_RBC(t) = AProfit_RBC(t - 1) * (1 + TPR(t)) + Profit_RBC(t) '淨現金流 Net_CF(t) _ = GE(t) + Invest(t) - EXP(t) - Tax(t) - Tax_1(t) - COMM(t) _ - P_DB(t) - P_HB(t) - P_AD(t) - P_WP(t) - CV_cost(t) - P_SB(t) - P_MB(t) - D(t) - ReinGP(t) + ReinDead(t) _ - Profit_RBC(t) '期末資產 Asset(t) = Asset(t - 1) + Net_CF(t) + RBC(t - 1) * TPR(t) '第一年總成本、FYS(Monthly Report) If t = 1 Then Cost(1) = (EXP(1) + COMM(1) _ + P_DB(1) - ReinDead(t) + P_SB(1) + P_MB(1) + P_WP(1) + P_HB(1) + P_AD(1) + CV_cost(1) + D(1) _ + d_V(1) + d_VD(1) + Tax(1) + ReinGP(t)) FYS(1) = -(GE(1) - COMM(1) - EXP(1) - Tax(1) - SA * (V6(MF, NN, AGE, t) + V_DEF(t))) End If On Error Resume Next '死差益 Dead_P(t) = EFF(t - 1) * (P_DB(t) / (EFF(t - 1) * Qx(t)) - (SA * (V6(MF, NN, AGE, t - 1) + V6(MF, NN, AGE, t) + Pay_AN(MF, NN, AGE, t)) / 2 + APUA(t) * (AXP(MF, NN, AGE, t - 1) + AXP(MF, NN, AGE, t) + Pay_AN(MF, NN, AGE, t)) / 2)) * (Range(TSO)(AGE + t, MF) * 1.1 - Qx(t)) * (1 + TPR(t) / 2) * (1 - Range("Tax")(2)) '利差益 INT_P(t) = (GE(t) + Asset(t - 1)) * (TPR(t) - max(AIR, Dir(t))) * (1 - Range("Tax")(2)) '費差益 If t = 1 Then P6_EXP = P16(MF, NN, AGE) Else P6_EXP = P26(MF, NN, AGE) EXP_P(t) = (max(GE(t) - EFF(t - 1) * P6_EXP * SA, 0) - EXP(t) - COMM(t) - Tax(t)) * (1 - Range("Tax")(2)) '解約益 Lapse_P(t) = EFF(t - 1) * (1 - Qx(t)) * Qw(t) * SA * (V6(MF, NN, AGE, t) - CV(MF, NN, AGE, t)) * (1 - Range("Tax")(2)) '其他損益 Other_P(t) = Profit_Tax(t) - Dead_P(t) - INT_P(t) - EXP_P(t) - Lapse_P(t) Other_P_RBC(t) = Profit_RBC(t) - Dead_P(t) - INT_P(t) - EXP_P(t) - Lapse_P(t) EFF(t) = EFF(t - 1) * (1 - Qx(t)) * (1 - Qw(t)) Next t If Sheets("Setup").Cells(6, 8) = "Y" Then For t = 0 To WW Out(2, t) = EFF(t) Out(3, t) = GE(t) Out(4, t) = Invest(t) Out(5, t) = COMM(t) Out(6, t) = EXP(t) Out(7, t) = P_DB(t) Out(8, t) = CV_cost(t) Out(9, t) = P_SB(t) Out(10, t) = P_MB(t) Out(11, t) = Tax(t) Out(12, t) = d_V(t) Out(13, t) = d_VD(t) Out(14, t) = Profit(t) Out(15, t) = Tax_1(t) Out(16, t) = Profit_Tax(t) Out(17, t) = AProfit_Tax(t) Out(18, t) = d_RBC(t) Out(19, t) = Profit_RBC(t) Out(20, t) = AProfit_RBC(t) Out(21, t) = Net_CF(t) Out(22, t) = Asset(t) Out(23, t) = V(t) Out(24, t) = VD(t) Out(25, t) = RBC(t) Out(26, t) = D(t) Out(27, t) = P_WP(t) Out(28, t) = In_SA(t) Out(29, t) = P_AD(t) Out(30, t) = P_HB(t) Out(31, t) = ReinGP(t) Out(32, t) = ReinDead(t) Out(33, t) = TPR(t) Out(34, t) = Dir(t) Out(35, t) = Dead_P(t) Out(36, t) = INT_P(t) Out(37, t) = EXP_P(t) Out(38, t) = Lapse_P(t) Out(39, t) = Other_P_RBC(t) Next t End If End Sub Sub Summary() dis_num1 = test_dis(0) dis_num2 = dis_num2_inf(test_NUM(0), test_NN(0), test_dis(0)) If Summary_Total(0) <> 1 Then discount = dis1_inf(test_NUM(0), test_NN(0), test_dis(0)) + dis2_inf(test_NUM(0), test_NN(0), test_dis(0)) cex = (test_CH(0) - 1) * 256 + 5 + (dis_num2 - 1) * 16 Sheets("Summary").Cells(cex, 1) = test_NN(0) Sheets("Summary").Cells(cex, 5) = discount Sheets("Summary").Cells(cex, 6) = CAL_inf(test_NUM(0)) & "=" If CAL_inf(test_NUM(0)) = "保額" Then Sheets("Summary").Cells(cex, 7) = test_SA(0) Else Sheets("Summary").Cells(cex, 7) = test_GP(0) If Sheets("Summary").Rows(cex - 1 & ":" & cex + 2).Hidden = True Then Sheets("Summary").Rows(cex - 1 & ":" & cex + 2).Hidden = False cex = (test_CH(0) - 1) * 256 + 7 + (dis_num2 - 1) * 16 + test_X(0) CEY = (test_MF(0) - 1) * 17 WW = DUR_inf(test_NUM(0)) - test_Age(0) Sheets("summary").Cells(cex, 1) = test_Age(0) Sheets("summary").Cells(cex, 2 + CEY) = VD(0) / GE(1) '第一年初保費不足 Sheets("summary").Cells(cex, 3 + CEY) = Cost(1) / GE(1) '第一年總成本 Sheets("summary").Cells(cex, 4 + CEY) = RBC(1) / GE(1) '第一年風險資本 Sheets("summary").Cells(cex, 5 + CEY) = Loading(0) 'loading Sheets("summary").Cells(cex, 6 + CEY) = BEY(AProfit_RBC(), WW) 'BEY(after RBC) Sheets("summary").Cells(cex, 7 + CEY) = BEY(AProfit_Tax(), WW) 'BEY(after tax) Sheets("summary").Cells(cex, 8 + CEY) = IRR_value(Profit_RBC(), WW, 20) 'IRR(20年) Sheets("summary").Cells(cex, 9 + CEY) = -Profit(1) / GE(1) 'FY_Strain If Name_inf(test_NUM(0)) = "中國人壽多美鑫旺美元利率變動型終身壽險-定期給付型" Then Sheets("summary").Cells(cex, 9 + CEY) = Sheets("summary").Cells(cex, 9 + CEY) - 0.02 Sheets("summary").Cells(cex, 10 + CEY) = disCF(Profit_RBC(), WW, Range("RDR"), , 0) / GE(1) 'V0NB Sheets("summary").Cells(cex, 11 + CEY) = (disCF(Profit_RBC(), WW, Range("RDR"), , 0) * (1 + Range("RDR")) - Profit_RBC(1)) / GE(1) 'V1NB Sheets("summary").Cells(cex, 12 + CEY) = disCF(Dead_P(), WW, , TPR(), 0) / disCF(GE(), WW, , TPR(), 1) '死差益 Sheets("summary").Cells(cex, 13 + CEY) = disCF(INT_P(), WW, , TPR(), 0) / disCF(GE(), WW, , TPR(), 1) '利差益 Sheets("summary").Cells(cex, 14 + CEY) = disCF(EXP_P(), WW, , TPR(), 0) / disCF(GE(), WW, , TPR(), 1) '費差益 Sheets("summary").Cells(cex, 15 + CEY) = disCF(Lapse_P(), WW, , TPR(), 0) / disCF(GE(), WW, , TPR(), 1) '解約益 Sheets("summary").Cells(cex, 16 + CEY) = disCF(Other_P_RBC(), WW, , TPR(), 0) / disCF(GE(), WW, , TPR(), 1) '其他益 Sheets("summary").Cells(cex, 17 + CEY) = RORAC(Profit_Tax(), RBC(), WW, Range("RDR")) 'RORAC Sheets("summary").Cells(cex, 18 + CEY) = disCF(Profit_RBC(), WW, , TPR(), 0) / disCF(GE(), WW, , TPR(), 1) 'Profit Margin If Sheets("Summary").Rows(cex).Hidden = True Then Sheets("Summary").Rows(cex).Hidden = False '競品 If test_MF(0) = 1 Then MF = "M" Else MF = "F" If test_Age(0) & MF = Sheets("Summary").Cells(1404, 2) Then cex = 1406 + (NN_inf(test_NUM(0), test_NN(0)) - 1) * 10 + (test_CH(0) - 1) * 50 Sheets("Summary").Cells(cex, test_dis(0) + 1) = test_NN(0) Sheets("Summary").Cells(cex + 1, test_dis(0) + 1) = BEY(AProfit_Tax(), WW) Sheets("Summary").Cells(cex + 2, test_dis(0) + 1) = -Profit(1) / GE(1) If Name_inf(test_NUM(0)) = "中國人壽多美鑫旺美元利率變動型終身壽險-定期給付型" Then Sheets("Summary").Cells(cex + 2, test_dis(0) + 1) = Sheets("Summary").Cells(cex + 2, test_dis(0) + 1) - 0.02 Sheets("Summary").Cells(cex + 3, test_dis(0) + 1) = disCF(Profit_RBC(), WW, Range("RDR"), , 0) / GE(1) Sheets("Summary").Cells(cex + 4, test_dis(0) + 1) = (disCF(Profit_RBC(), WW, Range("RDR"), , 0) * (1 + Range("RDR")) - Profit_RBC(1)) / GE(1) Sheets("Summary").Cells(cex + 5, test_dis(0) + 1) = disCF(Profit_RBC(), WW, , TPR(), 0) / disCF(GE(), WW, , TPR(), 1) Sheets("Summary").Cells(cex + 6, test_dis(0) + 1) = EXP_diff(0) / GE_EXP_Sum(0) If Sheets("Summary").Rows(cex & ":" & cex + 9).Hidden = True Then Sheets("Summary").Rows(cex & ":" & cex + 9).Hidden = False If Sheets("Summary").Rows(1405 + (test_CH(0) - 1) * 50).Hidden = True Then Sheets("Summary").Rows(1405 + (test_CH(0) - 1) * 50).Hidden = False End If If test_X(0) <= 10 Or (test_X(0) > 10 And test_Age(0) Mod 10 <> 0) Then VD_dis(test_CH(0), dis_num2, 0) = VD_dis(test_CH(0), dis_num2, 0) + VD(0) * test_Weight(0): VD_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), 0) = VD_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), 0) + VD(0) * test_Weight(0): VD_Total(test_CH(0), 0) = VD_Total(test_CH(0), 0) + VD(0) * test_Weight(0): VD_Total(0, 0) = VD_Total(0, 0) + VD(0) * test_Weight(0) For t = 1 To WW Cost_dis(test_CH(0), dis_num2, t) = Cost_dis(test_CH(0), dis_num2, t) + Cost(t) * test_Weight(0): Cost_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = Cost_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + Cost(t) * test_Weight(0): Cost_Total(test_CH(0), t) = Cost_Total(test_CH(0), t) + Cost(t) * test_Weight(0): Cost_Total(0, t) = Cost_Total(0, t) + Cost(t) * test_Weight(0) RBC_dis(test_CH(0), dis_num2, t) = RBC_dis(test_CH(0), dis_num2, t) + RBC(t) * test_Weight(0): RBC_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = RBC_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + RBC(t) * test_Weight(0): RBC_Total(test_CH(0), t) = RBC_Total(test_CH(0), t) + RBC(t) * test_Weight(0): RBC_Total(0, t) = RBC_Total(0, t) + RBC(t) * test_Weight(0) NP_dis(test_CH(0), dis_num2, 0) = NP_dis(test_CH(0), dis_num2, 0) + GE(t) * (1 - Loading(0)) * test_Weight(0): NP_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), 0) = NP_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), 0) + GE(t) * (1 - Loading(0)) * test_Weight(0): NP_Total(test_CH(0), 0) = NP_Total(test_CH(0), 0) + GE(t) * (1 - Loading(0)) * test_Weight(0): NP_Total(0, 0) = NP_Total(0, 0) + GE(t) * (1 - Loading(0)) * test_Weight(0) GE_dis(test_CH(0), dis_num2, 0) = GE_dis(test_CH(0), dis_num2, 0) + GE(t) * test_Weight(0): GE_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), 0) = GE_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), 0) + GE(t) * test_Weight(0): GE_Total(test_CH(0), 0) = GE_Total(test_CH(0), 0) + GE(t) * test_Weight(0): GE_Total(0, 0) = GE_Total(0, 0) + GE(t) * test_Weight(0) GE_dis(test_CH(0), dis_num2, t) = GE_dis(test_CH(0), dis_num2, t) + GE(t) * test_Weight(0): GE_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = GE_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + GE(t) * test_Weight(0): GE_Total(test_CH(0), t) = GE_Total(test_CH(0), t) + GE(t) * test_Weight(0): GE_Total(0, t) = GE_Total(0, t) + GE(t) * test_Weight(0) Profit_dis(test_CH(0), dis_num2, t) = Profit_dis(test_CH(0), dis_num2, t) + Profit(t) * test_Weight(0): Profit_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = Profit_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + Profit(t) * test_Weight(0): Profit_Total(test_CH(0), t) = Profit_Total(test_CH(0), t) + Profit(t) * test_Weight(0): Profit_Total(0, t) = Profit_Total(0, t) + Profit(t) * test_Weight(0) Profit_Tax_dis(test_CH(0), dis_num2, t) = Profit_Tax_dis(test_CH(0), dis_num2, t) + Profit_Tax(t) * test_Weight(0): Profit_Tax_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = Profit_Tax_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + Profit_Tax(t) * test_Weight(0): Profit_Tax_Total(test_CH(0), t) = Profit_Tax_Total(test_CH(0), t) + Profit_Tax(t) * test_Weight(0): Profit_Tax_Total(0, t) = Profit_Tax_Total(0, t) + Profit_Tax(t) * test_Weight(0) Profit_RBC_dis(test_CH(0), dis_num2, t) = Profit_RBC_dis(test_CH(0), dis_num2, t) + Profit_RBC(t) * test_Weight(0): Profit_RBC_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = Profit_RBC_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + Profit_RBC(t) * test_Weight(0): Profit_RBC_Total(test_CH(0), t) = Profit_RBC_Total(test_CH(0), t) + Profit_RBC(t) * test_Weight(0): Profit_RBC_Total(0, t) = Profit_RBC_Total(0, t) + Profit_RBC(t) * test_Weight(0) AProfit_RBC_dis(test_CH(0), dis_num2, t) = AProfit_RBC_dis(test_CH(0), dis_num2, t) + AProfit_RBC(t) * test_Weight(0): AProfit_RBC_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = AProfit_RBC_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + AProfit_RBC(t) * test_Weight(0): AProfit_RBC_Total(test_CH(0), t) = AProfit_RBC_Total(test_CH(0), t) + AProfit_RBC(t) * test_Weight(0): AProfit_RBC_Total(0, t) = AProfit_RBC_Total(0, t) + AProfit_RBC(t) * test_Weight(0) AProfit_Tax_dis(test_CH(0), dis_num2, t) = AProfit_Tax_dis(test_CH(0), dis_num2, t) + AProfit_Tax(t) * test_Weight(0): AProfit_Tax_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = AProfit_Tax_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + AProfit_Tax(t) * test_Weight(0): AProfit_Tax_Total(test_CH(0), t) = AProfit_Tax_Total(test_CH(0), t) + AProfit_Tax(t) * test_Weight(0): AProfit_Tax_Total(0, t) = AProfit_Tax_Total(0, t) + AProfit_Tax(t) * test_Weight(0) Dead_P_dis(test_CH(0), dis_num2, t) = Dead_P_dis(test_CH(0), dis_num2, t) + Dead_P(t) * test_Weight(0): Dead_P_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = Dead_P_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + Dead_P(t) * test_Weight(0): Dead_P_Total(test_CH(0), t) = Dead_P_Total(test_CH(0), t) + Dead_P(t) * test_Weight(0): Dead_P_Total(0, t) = Dead_P_Total(0, t) + Dead_P(t) * test_Weight(0) INT_P_dis(test_CH(0), dis_num2, t) = INT_P_dis(test_CH(0), dis_num2, t) + INT_P(t) * test_Weight(0): INT_P_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = INT_P_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + INT_P(t) * test_Weight(0): INT_P_Total(test_CH(0), t) = INT_P_Total(test_CH(0), t) + INT_P(t) * test_Weight(0): INT_P_Total(0, t) = INT_P_Total(0, t) + INT_P(t) * test_Weight(0) EXP_P_dis(test_CH(0), dis_num2, t) = EXP_P_dis(test_CH(0), dis_num2, t) + EXP_P(t) * test_Weight(0): EXP_P_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = EXP_P_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + EXP_P(t) * test_Weight(0): EXP_P_Total(test_CH(0), t) = EXP_P_Total(test_CH(0), t) + EXP_P(t) * test_Weight(0): EXP_P_Total(0, t) = EXP_P_Total(0, t) + EXP_P(t) * test_Weight(0) Lapse_P_dis(test_CH(0), dis_num2, t) = Lapse_P_dis(test_CH(0), dis_num2, t) + Lapse_P(t) * test_Weight(0): Lapse_P_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = Lapse_P_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + Lapse_P(t) * test_Weight(0): Lapse_P_Total(test_CH(0), t) = Lapse_P_Total(test_CH(0), t) + Lapse_P(t) * test_Weight(0): Lapse_P_Total(0, t) = Lapse_P_Total(0, t) + Lapse_P(t) * test_Weight(0) Other_P_RBC_dis(test_CH(0), dis_num2, t) = Other_P_RBC_dis(test_CH(0), dis_num2, t) + Other_P_RBC(t) * test_Weight(0): Other_P_RBC_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = Other_P_RBC_NN(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + Other_P_RBC(t) * test_Weight(0): Other_P_RBC_Total(test_CH(0), t) = Other_P_RBC_Total(test_CH(0), t) + Other_P_RBC(t) * test_Weight(0): Other_P_RBC_Total(0, t) = Other_P_RBC_Total(0, t) + Other_P_RBC(t) * test_Weight(0) If test_MF(0) = 1 Then MF = "M" Else MF = "F" If test_Age(0) & MF = Sheets("Summary").Cells(1404, 2) Then GE_競品(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = GE_競品(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + GE(t) * test_Weight(0) RBC_競品(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = RBC_競品(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + RBC(t) * test_Weight(0) Profit_Tax_競品(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) = Profit_Tax_競品(test_CH(0), NN_inf(test_NUM(0), test_NN(0)), t) + Profit_Tax(t) * test_Weight(0) End If Next t End If End If WW = DUR_inf(test_NUM(0)) Select Case test_CH(0) Case 1: channel = "(AG)" Case 2: channel = "(BR)" Case 3: channel = "(BK)" Case 4: channel = "(FS)" Case 5: channel = "(EC)" End Select cex = 1287 + dis_num2 + 16 * (test_CH(0) - 1) Sheets("summary").Cells(cex, 1) = test_NN(0) & channel cex = 1377 + NN_inf(test_NUM(0), test_NN(0)) + 5 * (test_CH(0) - 1) Sheets("summary").Cells(cex, 1) = test_NN(0) & channel If Summary_Total(0) = 1 Then For CH = 1 To 5 For dis_num = 1 To 16 If GE_dis(CH, dis_num, 1) <> 0 Then cex = 1287 + dis_num + 16 * (CH - 1) Sheets("summary").Cells(cex, 2) = VD_dis(CH, dis_num, 0) / GE_dis(CH, dis_num, 1) '第一年初保費不足 Sheets("summary").Cells(cex, 3) = Cost_dis(CH, dis_num, 1) / GE_dis(CH, dis_num, 1) '第一年總成本 Sheets("summary").Cells(cex, 4) = RBC_dis(CH, dis_num, 1) / GE_dis(CH, dis_num, 1) '第一年風險資本 Sheets("summary").Cells(cex, 5) = 1 - NP_dis(CH, dis_num, 0) / GE_dis(CH, dis_num, 0) 'loading Sheets("summary").Cells(cex, 6) = BEY(AProfit_RBC_dis(), WW, CH, dis_num) 'BEY(after RBC) Sheets("summary").Cells(cex, 7) = BEY(AProfit_Tax_dis(), WW, CH, dis_num) 'BEY(after tax) Sheets("summary").Cells(cex, 8) = IRR_value(Profit_RBC_dis(), WW, 20, CH, dis_num) 'IRR(20年) Sheets("summary").Cells(cex, 9) = -Profit_dis(CH, dis_num, 1) / GE_dis(CH, dis_num, 1) 'FY_Strain If Name_inf(test_NUM(0)) = "中國人壽多美鑫旺美元利率變動型終身壽險-定期給付型" Then Sheets("summary").Cells(cex, 9) = Sheets("summary").Cells(cex, 9) - 0.02 Sheets("summary").Cells(cex, 10) = disCF(Profit_RBC_dis(), WW, Range("RDR"), , 0, , CH, dis_num) / GE_dis(CH, dis_num, 1) 'V0NB Sheets("summary").Cells(cex, 11) = (disCF(Profit_RBC_dis(), WW, Range("RDR"), , 0, , CH, dis_num) * (1 + Range("RDR")) - Profit_RBC_dis(CH, dis_num, 1)) / GE_dis(CH, dis_num, 1) 'V1NB Sheets("summary").Cells(cex, 12) = disCF(Dead_P_dis(), WW, , TPR(), 0, , CH, dis_num) / disCF(GE_dis(), WW, , TPR(), 1, , CH, dis_num) '死差益 Sheets("summary").Cells(cex, 13) = disCF(INT_P_dis(), WW, , TPR(), 0, , CH, dis_num) / disCF(GE_dis(), WW, , TPR(), 1, , CH, dis_num) '利差益 Sheets("summary").Cells(cex, 14) = disCF(EXP_P_dis(), WW, , TPR(), 0, , CH, dis_num) / disCF(GE_dis(), WW, , TPR(), 1, , CH, dis_num) '費差益 Sheets("summary").Cells(cex, 15) = disCF(Lapse_P_dis(), WW, , TPR(), 0, , CH, dis_num) / disCF(GE_dis(), WW, , TPR(), 1, , CH, dis_num) '解約益 Sheets("summary").Cells(cex, 16) = disCF(Other_P_RBC_dis(), WW, , TPR(), 0, , CH, dis_num) / disCF(GE_dis(), WW, , TPR(), 1, , CH, dis_num) '其他益 Sheets("summary").Cells(cex, 17) = RORAC(Profit_Tax_dis(), RBC_dis(), WW, Range("RDR"), CH, dis_num) 'RORAC Sheets("summary").Cells(cex, 18) = disCF(Profit_RBC_dis(), WW, , TPR(), 0, , CH, dis_num) / disCF(GE_dis(), WW, , TPR(), 1, , CH, dis_num) 'Profit Margin Sheets("summary").Rows(cex).Hidden = False End If Next dis_num For NN_num = 1 To 5 If GE_NN(CH, NN_num, 1) <> 0 Then cex = 1377 + NN_num + 5 * (CH - 1) Sheets("summary").Cells(cex, 2) = VD_NN(CH, NN_num, 0) / GE_NN(CH, NN_num, 1) '第一年初保費不足 Sheets("summary").Cells(cex, 3) = Cost_NN(CH, NN_num, 1) / GE_NN(CH, NN_num, 1) '第一年總成本 Sheets("summary").Cells(cex, 4) = RBC_NN(CH, NN_num, 1) / GE_NN(CH, NN_num, 1) '第一年風險資本 Sheets("summary").Cells(cex, 5) = 1 - NP_NN(CH, NN_num, 0) / GE_NN(CH, NN_num, 0) 'loading Sheets("summary").Cells(cex, 6) = BEY(AProfit_RBC_NN(), WW, CH, NN_num) 'BEY(after RBC) Sheets("summary").Cells(cex, 7) = BEY(AProfit_Tax_NN(), WW, CH, NN_num) 'BEY(after tax) Sheets("summary").Cells(cex, 8) = IRR_value(Profit_RBC_NN(), WW, 20, CH, NN_num) 'IRR(20年) Sheets("summary").Cells(cex, 9) = -Profit_NN(CH, NN_num, 1) / GE_NN(CH, NN_num, 1) 'FY_Strain If Name_inf(test_NUM(0)) = "中國人壽多美鑫旺美元利率變動型終身壽險-定期給付型" Then Sheets("summary").Cells(cex, 9) = Sheets("summary").Cells(cex, 9) - 0.02 Sheets("summary").Cells(cex, 10) = disCF(Profit_RBC_NN(), WW, Range("RDR"), , 0, , CH, NN_num) / GE_NN(CH, NN_num, 1) 'V0NB Sheets("summary").Cells(cex, 11) = (disCF(Profit_RBC_NN(), WW, Range("RDR"), , 0, , CH, NN_num) * (1 + Range("RDR")) - Profit_RBC_NN(CH, NN_num, 1)) / GE_NN(CH, NN_num, 1) 'V1NB Sheets("summary").Cells(cex, 12) = disCF(Dead_P_NN(), WW, , TPR(), 0, , CH, NN_num) / disCF(GE_NN(), WW, , TPR(), 1, , CH, NN_num) '死差益 Sheets("summary").Cells(cex, 13) = disCF(INT_P_NN(), WW, , TPR(), 0, , CH, NN_num) / disCF(GE_NN(), WW, , TPR(), 1, , CH, NN_num) '利差益 Sheets("summary").Cells(cex, 14) = disCF(EXP_P_NN(), WW, , TPR(), 0, , CH, NN_num) / disCF(GE_NN(), WW, , TPR(), 1, , CH, NN_num) '費差益 Sheets("summary").Cells(cex, 15) = disCF(Lapse_P_NN(), WW, , TPR(), 0, , CH, NN_num) / disCF(GE_NN(), WW, , TPR(), 1, , CH, NN_num) '解約益 Sheets("summary").Cells(cex, 16) = disCF(Other_P_RBC_NN(), WW, , TPR(), 0, , CH, NN_num) / disCF(GE_NN(), WW, , TPR(), 1, , CH, NN_num) '其他益 Sheets("summary").Cells(cex, 17) = RORAC(Profit_Tax_NN(), RBC_NN(), WW, Range("RDR"), CH, NN_num) 'RORAC Sheets("summary").Cells(cex, 18) = disCF(Profit_RBC_NN(), WW, , TPR(), 0, , CH, NN_num) / disCF(GE_NN(), WW, , TPR(), 1, , CH, NN_num) 'Profit Margin Sheets("summary").Rows(cex).Hidden = False If GE_競品(CH, NN_num, 1) <> 0 Then cex = 1406 + (NN_num - 1) * 10 + (CH - 1) * 50 Sheets("Summary").Cells(cex + 7, 2) = RORAC(Profit_Tax_競品(), RBC_競品(), WW, Range("RDR"), CH, NN_num) Sheets("Summary").Cells(cex + 8, 2) = RBC_競品(CH, NN_num, 1) / GE_競品(CH, NN_num, 1) End If End If Next NN_num If GE_Total(CH, 1) <> 0 Then cex = 1367 + CH Sheets("summary").Cells(cex, 2) = VD_Total(CH, 0) / GE_Total(CH, 1) '第一年初保費不足 Sheets("summary").Cells(cex, 3) = Cost_Total(CH, 1) / GE_Total(CH, 1) '第一年總成本 Sheets("summary").Cells(cex, 4) = RBC_Total(CH, 1) / GE_Total(CH, 1) '第一年風險資本 Sheets("summary").Cells(cex, 5) = 1 - NP_Total(CH, 0) / GE_Total(CH, 0) 'loading Sheets("summary").Cells(cex, 6) = BEY(AProfit_RBC_Total(), WW, CH) 'BEY(after RBC) Sheets("summary").Cells(cex, 7) = BEY(AProfit_Tax_Total(), WW, CH) 'BEY(after tax) Sheets("summary").Cells(cex, 8) = IRR_value(Profit_RBC_Total(), WW, 20, CH) 'IRR(20年) Sheets("summary").Cells(cex, 9) = -Profit_Total(CH, 1) / GE_Total(CH, 1) 'FY_Strain If Name_inf(test_NUM(0)) = "中國人壽多美鑫旺美元利率變動型終身壽險-定期給付型" Then Sheets("summary").Cells(cex, 9) = Sheets("summary").Cells(cex, 9) - 0.02 Sheets("summary").Cells(cex, 10) = disCF(Profit_RBC_Total(), WW, Range("RDR"), , 0, , CH) / GE_Total(CH, 1) 'V0NB Sheets("summary").Cells(cex, 11) = (disCF(Profit_RBC_Total(), WW, Range("RDR"), , 0, , CH) * (1 + Range("RDR")) - Profit_RBC_Total(CH, 1)) / GE_Total(CH, 1) 'V1NB Sheets("summary").Cells(cex, 12) = disCF(Dead_P_Total(), WW, , TPR(), 0, , CH) / disCF(GE_Total(), WW, , TPR(), 1, , CH) '死差益 Sheets("summary").Cells(cex, 13) = disCF(INT_P_Total(), WW, , TPR(), 0, , CH) / disCF(GE_Total(), WW, , TPR(), 1, , CH) '利差益 Sheets("summary").Cells(cex, 14) = disCF(EXP_P_Total(), WW, , TPR(), 0, , CH) / disCF(GE_Total(), WW, , TPR(), 1, , CH) '費差益 Sheets("summary").Cells(cex, 15) = disCF(Lapse_P_Total(), WW, , TPR(), 0, , CH) / disCF(GE_Total(), WW, , TPR(), 1, , CH) '解約益 Sheets("summary").Cells(cex, 16) = disCF(Other_P_RBC_Total(), WW, , TPR(), 0, , CH) / disCF(GE_Total(), WW, , TPR(), 1, , CH) '其他益 Sheets("summary").Cells(cex, 17) = RORAC(Profit_Tax_Total(), RBC_Total(), WW, Range("RDR"), CH) 'RORAC Sheets("summary").Cells(cex, 18) = disCF(Profit_RBC_Total(), WW, , TPR(), 0, , CH) / disCF(GE_Total(), WW, , TPR(), 1, , CH) 'Profit Margin Sheets("summary").Rows(cex).Hidden = False End If Next CH If GE_Total(0, 1) <> 0 Then cex = 1373 Sheets("summary").Cells(cex, 2) = VD_Total(0, 0) / GE_Total(0, 1) '第一年初保費不足 Sheets("summary").Cells(cex, 3) = Cost_Total(0, 1) / GE_Total(0, 1) '第一年總成本 Sheets("summary").Cells(cex, 4) = RBC_Total(0, 1) / GE_Total(0, 1) '第一年風險資本 Sheets("summary").Cells(cex, 5) = 1 - NP_Total(0, 0) / GE_Total(0, 0) 'loading Sheets("summary").Cells(cex, 6) = BEY(AProfit_RBC_Total(), WW, 0) 'BEY(after RBC) Sheets("summary").Cells(cex, 7) = BEY(AProfit_Tax_Total(), WW, 0) 'BEY(after tax) Sheets("summary").Cells(cex, 8) = IRR_value(Profit_RBC_Total(), WW, 20, 0) 'IRR(20年) Sheets("summary").Cells(cex, 9) = -Profit_Total(0, 1) / GE_Total(0, 1) 'FY_Strain If Name_inf(test_NUM(0)) = "中國人壽多美鑫旺美元利率變動型終身壽險-定期給付型" Then Sheets("summary").Cells(cex, 9) = Sheets("summary").Cells(cex, 9) - 0.02 Sheets("summary").Cells(cex, 10) = disCF(Profit_RBC_Total(), WW, Range("RDR"), , 0, , 0) / GE_Total(0, 1) 'V0NB Sheets("summary").Cells(cex, 11) = (disCF(Profit_RBC_Total(), WW, Range("RDR"), , 0, , 0) * (1 + Range("RDR")) - Profit_RBC_Total(0, 1)) / GE_Total(0, 1) 'V1NB Sheets("summary").Cells(cex, 12) = disCF(Dead_P_Total(), WW, , TPR(), 0, , 0) / disCF(GE_Total(), WW, , TPR(), 1, , 0) '死差益 Sheets("summary").Cells(cex, 13) = disCF(INT_P_Total(), WW, , TPR(), 0, , 0) / disCF(GE_Total(), WW, , TPR(), 1, , 0) '利差益 Sheets("summary").Cells(cex, 14) = disCF(EXP_P_Total(), WW, , TPR(), 0, , 0) / disCF(GE_Total(), WW, , TPR(), 1, , 0) '費差益 Sheets("summary").Cells(cex, 15) = disCF(Lapse_P_Total(), WW, , TPR(), 0, , 0) / disCF(GE_Total(), WW, , TPR(), 1, , 0) '解約益 Sheets("summary").Cells(cex, 16) = disCF(Other_P_RBC_Total(), WW, , TPR(), 0, , 0) / disCF(GE_Total(), WW, , TPR(), 1, , 0) '其他益 Sheets("summary").Cells(cex, 17) = RORAC(Profit_Tax_Total(), RBC_Total(), WW, Range("RDR"), 0) 'RORAC Sheets("summary").Cells(cex, 18) = disCF(Profit_RBC_Total(), WW, , TPR(), 0, , 0) / disCF(GE_Total(), WW, , TPR(), 1, , 0) 'Profit Margin End If End If End Sub Sub Cashflow() If Summary_Total(0) <> 1 Then WW = DUR_inf(test_NUM(0)) - test_Age(0) For t = 0 To WW For i = 2 To 39 Select Case i Case 33, 34 Out_table(i, t) = Out(i, t) Case Else Out_table(i, t) = Out_table(i, t) + Out(i, t) * test_Weight(0) End Select Next i For i = 42 To 56 Out_table(i, t) = Out_table(i, t) + Out(i, t) * test_Weight(0) Next i Next t Else WW = DUR_inf(test_NUM(0)) For t = 1 To WW If t = 1 Then Sheets("cashflow").Cells(6, 2) = Out_table(2, 0): Sheets("cashflow").Cells(6, 24) = Out_table(24, 0): Sheets("cashflow").Cells(2, 9) = Out_table(3, t) For i = 2 To 39 Sheets("cashflow").Cells(6 + t, i) = Out_table(i, t) Next i If t = 1 Then Sheets("費用適足性檢測").Cells(13, 2) = Out_table(42, 1) For i = 42 To 55 Sheets("費用適足性檢測").Cells(13 + t, i - 40) = Out_table(i, t) Next i total_gp0 = total_gp0 + Out_table(43, t) total_gp1 = total_gp1 + Out_table(44, t) total_comm1 = total_comm1 + Out_table(45, t): total_comm2 = total_comm2 + Out_table(46, t): total_comm3 = total_comm3 + Out_table(47, t): total_comm4 = total_comm4 + Out_table(48, t): total_comm5 = total_comm5 + Out_table(49, t) total_cost1 = total_cost1 + Out_table(50, t): total_cost2 = total_cost2 + Out_table(51, t): total_cost3 = total_cost3 + Out_table(52, t): total_cost4 = total_cost4 + Out_table(53, t) total_stab = total_stab + Out_table(54, t) total_oper = total_oper + Out_table(55, t) total_np = total_np + Out_table(56, t) On Error Resume Next Sheets("費用適足性檢測").Cells(13 + t, 16) = (Out_table(45, t) + Out_table(46, t) + Out_table(47, t) + Out_table(48, t) + Out_table(49, t)) / Out_table(43, t) Sheets("費用適足性檢測").Cells(13 + t, 17) = Out_table(50, t) / Out_table(43, t) Sheets("費用適足性檢測").Cells(13 + t, 18) = Out_table(51, t) / Out_table(43, t) Sheets("費用適足性檢測").Cells(13 + t, 19) = Out_table(52, t) / Out_table(43, t) Sheets("費用適足性檢測").Cells(13 + t, 20) = Out_table(53, t) / Out_table(43, t) Sheets("費用適足性檢測").Cells(13 + t, 21) = Out_table(54, t) / Out_table(43, t) Sheets("費用適足性檢測").Cells(13 + t, 22) = Out_table(55, t) / Out_table(43, t) Next t If CUR_inf(test_NUM(0)) = 2 Then Sheets("費用適足性檢測").Cells(7, 1) = Mid(Name_inf(test_NUM(0)), 5, Application.Find("美元", Name_inf(test_NUM(0))) - 5) Else If PT1_inf(test_NUM(0)) = "利變型" Then Sheets("費用適足性檢測").Cells(7, 1) = Mid(Name_inf(test_NUM(0)), 5, Application.Find("利率", Name_inf(test_NUM(0))) - 5) Else Sheets("費用適足性檢測").Cells(7, 1) = Mid(Name_inf(test_NUM(0)), 5, Application.Find("終身", Name_inf(test_NUM(0))) - 5) End If End If Sheets("費用適足性檢測").Cells(7, 5) = total_comm1 / total_gp1 Sheets("費用適足性檢測").Cells(7, 5) = total_comm1 / total_gp1 Sheets("費用適足性檢測").Cells(7, 6) = total_comm2 / total_gp1 Sheets("費用適足性檢測").Cells(7, 7) = total_comm3 / total_gp1 Sheets("費用適足性檢測").Cells(7, 8) = total_comm4 / total_gp1 Sheets("費用適足性檢測").Cells(7, 9) = total_comm5 / total_gp1 Sheets("費用適足性檢測").Cells(7, 10) = (total_comm1 + total_comm2 + total_comm3 + total_comm4 + total_comm5) / total_gp1 Sheets("費用適足性檢測").Cells(7, 11) = total_cost1 / total_gp1 Sheets("費用適足性檢測").Cells(7, 12) = total_cost2 / total_gp1 Sheets("費用適足性檢測").Cells(7, 13) = total_cost3 / total_gp1 Sheets("費用適足性檢測").Cells(7, 14) = total_cost4 / total_gp1 Sheets("費用適足性檢測").Cells(7, 15) = (total_cost1 + total_cost2 + total_cost3 + total_cost4) / total_gp1 Sheets("費用適足性檢測").Cells(7, 16) = total_stab / total_gp1 Sheets("費用適足性檢測").Cells(7, 17) = total_oper / total_gp1 Sheets("費用適足性檢測").Cells(7, 18) = total_np / total_gp1 - total_np / total_gp0 Sheets("費用適足性檢測").Cells(7, 19) = 1 - total_np / total_gp0 Sheets("費用適足性檢測").Cells(7, 20) = Sheets("費用適足性檢測").Cells(7, 19) - Sheets("費用適足性檢測").Cells(7, 10) - Sheets("費用適足性檢測").Cells(7, 15) - Sheets("費用適足性檢測").Cells(7, 16) - Sheets("費用適足性檢測").Cells(7, 17) - Sheets("費用適足性檢測").Cells(7, 18) Sheets("費用適足性檢測").Cells(7, 21) = (Sheets("費用適足性檢測").Cells(7, 10) + Sheets("費用適足性檢測").Cells(7, 15) + Sheets("費用適足性檢測").Cells(7, 16) + Sheets("費用適足性檢測").Cells(7, 17)) / (Sheets("費用適足性檢測").Cells(7, 19) - Sheets("費用適足性檢測").Cells(7, 18)) End If End Sub Public Sub CSM_Test() Erase GUR_B, EXP_ALL, G_NCF, D_CSM, dis_ADCF_scenario, dis_ADCF_CSM, BEL, dis_NADCF_CSM, RA, dis_G_NCF_CSM, A_INV, A_DIS_CSM, A_DIR, Out_A WW = DUR_inf(test_NUM(0)) - test_Age(0) Assumption Commission ' If Sheets("Setup").Cells(15, 8) = "Total" Then ' S_S = 1: S_E = 1000: ss = 1000 ' Else ' S_S = Sheets("Setup").Cells(15, 8): S_E = Sheets("Setup").Cells(15, 8): ss = 1 ' End If ' '' For t = 1 To WW '' '宣告利率 '' If PT1_inf(test_NUM(0)) = "利變型" Then '' If CUR_inf(test_NUM(0)) < 2 Then '' spread_L = 0.01 '' spread_U = 0.025 '' Else '' spread_L = 0.0125 '' spread_U = 0.025 '' End If '' '' For Scenario = S_S To S_E '' If t = 1 Then Dir(0) = DIR_inf(test_NUM(0)): Dir_CSM(Scenario, t) = Dir(0) '' Dir_CSM(Scenario, t + 1) = max(min(INV_1000(CUR_inf(test_NUM(0)), Scenario, t) - spread_L, Dir(0)), INV_1000(CUR_inf(test_NUM(0)), Scenario, t) - spread_U) '' A_INV(t) = A_INV(t) + INV_1000(CUR_inf(test_NUM(0)), Scenario, t) / ss '' A_DIS_CSM(t) = A_DIS_CSM(t) + DIS_1000(CUR_inf(test_NUM(0)), Scenario, t) / ss '' A_DIR(t) = A_DIR(t) + Dir_CSM(Scenario, t) / ss '' Next Scenario '' End If '' DIS_CSM(t) = DIS_CSM_CUR(CUR_inf(test_NUM(0)), t) '' Next t ' ' ''1121121 修改宣告利率公式 ' ' For t = 1 To WW ' '宣告利率 ' If PT1_inf(test_NUM(0)) = "利變型" Then ' ' For Scenario = S_S To S_E ' If t = 1 Then Dir(0) = DIR_inf(test_NUM(0)): Dir_CSM(Scenario, t) = Dir(0) ' Rein_W(CUR_inf(test_NUM(0)), Scenario, t) = Rein_B1(test_NUM(0)) * (INV_1000(CUR_inf(test_NUM(0)), Scenario, t) - INV_1000(CUR_inf(test_NUM(0)), Scenario, t - 1)) + Rein_B2(test_NUM(0)) * (Dir_CSM(Scenario, t) - Rein_BM(test_NUM(0), t)) ' Rein_ACC_W(CUR_inf(test_NUM(0)), Scenario, t) = Rein_ACC_W(CUR_inf(test_NUM(0)), Scenario, t - 1) + Rein_W(CUR_inf(test_NUM(0)), Scenario, t) ' Dir_CSM(Scenario, t + 1) = max(0, INV_1000(CUR_inf(test_NUM(0)), Scenario, t) - Rein_P(test_NUM(0)) - Rein_E(test_NUM(0)) - Rein_W(CUR_inf(test_NUM(0)), Scenario, t)) ' A_INV(t) = A_INV(t) + INV_1000(CUR_inf(test_NUM(0)), Scenario, t) / ss ' A_DIS_CSM(t) = A_DIS_CSM(t) + DIS_1000(CUR_inf(test_NUM(0)), Scenario, t) / ss ' A_DIR(t) = A_DIR(t) + Dir_CSM(Scenario, t) / ss ' ' Next Scenario ' End If ' DIS_CSM(t) = DIS_CSM_CUR(CUR_inf(test_NUM(0)), t) ' Next t '***************************************** 11/24 進度 ************************************* For Scenario = 1 To 1 Profit_Test For t = 1 To WW '保證給付、現金流 GUR_B(t) = P_DB(t) + CV_cost(t) + P_SB(t) + P_MB(t) + P_WP(t) + P_AD(t) + P_HB(t) 'COMM(T) = GE(T) * COMM_rate(T) 'COMM_1(T) = GE(T) * COMM_rate_exp1(T) 'COMM_2(T) = COMM(T) - COMM_1(T) ' EXP(T) = Exp_Fix(T) * EFF(T - 1) + Exp_Var(T) * GE(T) ' EXP_ALL(T) = COMM(T) + Tax(T) + EXP(T) * 0.52 ' G_NCF(T) = GUR_B(T) + EXP_ALL(T) COMM(t) = GE(t) * COMM_CSM(t) COMM_1(t) = GE(t) * COMM_rate_exp1(t) COMM_2(t) = COMM(t) - COMM_1(t) EXP(t) = Exp_CSMFix(t) * EFF(t - 1) + Exp_CSMVar(t) * GE(t) EXP_ALL(t) = COMM(t) + TaxCSM(t) + EXP(t) + 0.0004 * (P_DB(t) + P_WP(t) + P_AD(t) + P_HB(t)) G_NCF(t) = GUR_B(t) + EXP_ALL(t) G_RA(t) = GE(t) * COMM_RA(t) + Exp_RAFix(t) * EFF(t - 1) + Exp_RAVar(t) * GE(t) + 0.0004 * (P_DB(t) + P_WP(t) + P_AD(t) + P_HB(t)) '回饋金 ' For Scenario = S_S To S_E ' D_CSM(t) = D_CSM(t) + D_HW(Scenario, t) / ss ' Next Scenario Next t 'BEL For t = WW To 1 Step -1 ' For Scenario = S_S To S_E dis_ADCF_scenario(Scenario) = (dis_ADCF_scenario(Scenario) + D_HW(Scenario, t)) / (1 + DIS_1000(CUR_inf(test_NUM(0)), Scenario, t)) ' dis_ADCF_CSM(t - 1) = dis_ADCF_CSM(t - 1) + dis_ADCF_scenario(Scenario) / ss dis_ADCF_CSM(t - 1) = dis_ADCF_CSM(t - 1) + dis_ADCF_scenario(Scenario) ' Next Scenario dis_NADCF_CSM(t - 1) = disCF(G_NCF(), WW, , DIS_CSM(), 0, t) - disCF(GE(), WW, , DIS_CSM(), 1, t) dis_NADCF_RA(t - 1) = disCF(G_RA(), WW, , DIS_CSM(), 0, t) - disCF(GE(), WW, , DIS_CSM(), 1, t) BEL(t - 1) = dis_NADCF_CSM(t - 1) + dis_ADCF_CSM(t - 1) BEL_RA(t - 1) = dis_NADCF_RA(t - 1) + dis_ADCF_CSM(t - 1) Next t 'RA For t = 1 To WW RA(t - 1) = (disCF(G_NCF(), WW, , DIS_CSM(), 0, t) + dis_ADCF_CSM(t - 1)) * 0.0092 Next t If Sheets("Setup").Cells(14, 8) = "Y" Then For t = 0 To WW Out_A(2, t) = EFF(t) Out_A(3, t) = GE(t) Out_A(4, t) = GUR_B(t) Out_A(5, t) = EXP_ALL(t) Out_A(6, t) = G_NCF(t) Out_A(7, t) = D_CSM(t) Out_A(8, t) = dis_NADCF_CSM(t) Out_A(9, t) = dis_ADCF_CSM(t) Out_A(10, t) = BEL(t) Out_A(11, t) = RA(t) Out_A(20, t) = D_CSM(t) - D(t) Out_A(24, t) = A_INV(t) Out_A(25, t) = A_DIS_CSM(t) Out_A(26, t) = A_DIR(t) Out_A(27, t) = COMM(t) Out_A(28, t) = EXP(t) Out_A(29, t) = P_DB(t) Out_A(30, t) = CV_cost(t) Out_A(31, t) = P_SB(t) Out_A(32, t) = P_MB(t) Out_A(33, t) = P_WP(t) + P_AD(t) + P_HB(t) Out_A(34, t) = Tax(t) Out_A(35, t) = Invest(t) Out_A(36, t) = In_SA(t) Out_A(37, t) = Asset(t) Out_A(38, t) = d_V(t) Out_A(39, t) = D(t) Next t End If Next Scenario End Sub Sub Cashflow_CSM() Dim VI(120) Erase VI If Summary_Total(0) <> 1 Then WW = DUR_inf(test_NUM(0)) - test_Age(0) For t = 0 To WW For i = 2 To 39 Select Case i Case 24, 25, 26 Out_table_CSM(i, t) = Out_A(i, t) Case Else Out_table_CSM(i, t) = Out_table_CSM(i, t) + Out_A(i, t) * test_Weight(0) End Select Next i GE_table(t) = GE_table(t) + GE(t) * test_Weight(0) Profit_RBC_table(t) = Profit_RBC_table(t) + Profit_RBC(t) * test_Weight(0) Next t Else WW = DUR_inf(test_NUM(0)) '攤銷 Out_table_CSM(13, 0) = max(-(Out_table_CSM(10, 0) + Out_table_CSM(11, 0)), 0) For t = 1 To WW AEFF(WW + 1 - t) = AEFF(WW + 2 - t) + Out_table_CSM(2, WW + 1 - t) Next t VI(0) = 1 For t = 1 To WW If Sheets("Setup").Cells(17, 4) = "商發" Then VI(t) = 1 ElseIf Sheets("Setup").Cells(17, 4) = "精算" Then VI(t) = VI(t - 1) / (1 + DIS_CSM(t)) End If Next t For t = 1 To WW AEFF(WW + 1 - t) = AEFF(WW + 2 - t) + Out_table_CSM(2, WW + 1 - t) * VI(WW + 1 - t) Next t For t = 1 To WW If AEFF(t) <> 0 Then Out_table_CSM(15, t) = Out_table_CSM(13, t - 1) * (1 + DIS_CSM(t)) * Out_table_CSM(2, t) * VI(t) / AEFF(t) Out_table_CSM(13, t) = Out_table_CSM(13, t - 1) * (1 + DIS_CSM(t)) - Out_table_CSM(15, t) Out_table_CSM(14, t) = Out_table_CSM(13, t - 1) * DIS_CSM(t) Out_table_CSM(12, t) = Out_table_CSM(11, t - 1) - Out_table_CSM(11, t) Out_table_CSM(16, t) = (Out_table_CSM(10, t - 1) + Out_table_CSM(3, t)) * DIS_CSM(t) Out_table_CSM(17, t) = Out_table_CSM(8, t) - Out_table_CSM(8, t - 1) + Out_table_CSM(9, t) - Out_table_CSM(9, t - 1) + Out_table_CSM(4, t) + Out_table_CSM(5, t) + Out_table_CSM(7, t) - Out_table_CSM(3, t) - Out_table_CSM(16, t) Out_table_CSM(18, t) = Out_table_CSM(13, t - 1) * DIS_CSM(t) Out_table_CSM(19, t) = Out_table_CSM(16, t) + Out_table_CSM(17, t) + Out_table_CSM(18, t) Out_table_CSM(21, t) = Out_table_CSM(35, t) - Out_table_CSM(19, t) + Out_table_CSM(20, t) Out_table_CSM(22, t) = -Out_table_CSM(28, t) * (1 - 0.52) Out_table_CSM(23, t) = Out_table_CSM(12, t) + Out_table_CSM(15, t) + Out_table_CSM(21, t) + Out_table_CSM(22, t) Next t For t = 1 To WW Out_table_CSM(48, t) = Out_table_CSM(15, t) Out_table_CSM(49, t) = Out_table_CSM(12, t) If Out_table_CSM(36, t) <> 0 Then Out_table_CSM(50, t) = Out_table_CSM(29, t) * max(Out_table_CSM(36, t) - Out_table_CSM(37, t), 0) / Out_table_CSM(36, t) Out_table_CSM(51, t) = Out_table_CSM(27, t) + Out_table_CSM(28, t) * 0.52 + Out_table_CSM(34, t) - Out_table_CSM(27, t) * max(2 - t, 0) If AEFF(t) <> 0 Then If t = 1 Then IACF_COMM = Out_table_CSM(27, t) Else IACF_COMM = IACF_COMM - Out_table_CSM(52, t - 1) Out_table_CSM(52, t) = IACF_COMM * Out_table_CSM(2, t) * VI(t) / AEFF(t) End If Out_table_CSM(47, t) = Out_table_CSM(48, t) + Out_table_CSM(49, t) + Out_table_CSM(50, t) + Out_table_CSM(51, t) + Out_table_CSM(52, t) Out_table_CSM(54, t) = Out_table_CSM(50, t) + Out_table_CSM(51, t) + Out_table_CSM(52, t) Out_table_CSM(55, t) = 0 Out_table_CSM(56, t) = Out_table_CSM(50, t) Out_table_CSM(57, t) = Out_table_CSM(51, t) Out_table_CSM(58, t) = Out_table_CSM(52, t) Out_table_CSM(60, t) = Out_table_CSM(47, t) - Out_table_CSM(54, t) Out_table_CSM(62, t) = Out_table_CSM(35, t) Out_table_CSM(65, t) = Out_table_CSM(16, t) + Out_table_CSM(17, t) Out_table_CSM(66, t) = 0 Out_table_CSM(67, t) = Out_table_CSM(18, t) Out_table_CSM(68, t) = 0 Out_table_CSM(69, t) = -Out_table_CSM(20, t) Out_table_CSM(64, t) = Out_table_CSM(65, t) + Out_table_CSM(66, t) + Out_table_CSM(67, t) + Out_table_CSM(68, t) + Out_table_CSM(69, t) Out_table_CSM(70, t) = Out_table_CSM(62, t) - Out_table_CSM(64, t) Out_table_CSM(72, t) = -Out_table_CSM(22, t) Out_table_CSM(74, t) = Out_table_CSM(60, t) + Out_table_CSM(70, t) - Out_table_CSM(72, t) Out_table_CSM(77, t) = Out_table_CSM(3, t) + Out_table_CSM(35, t) Out_table_CSM(78, t) = Out_table_CSM(3, t) Out_table_CSM(79, t) = Out_table_CSM(35, t) Out_table_CSM(82, t) = Out_table_CSM(27, t) Out_table_CSM(83, t) = Out_table_CSM(28, t) + Out_table_CSM(34, t) Out_table_CSM(84, t) = Out_table_CSM(29, t) Out_table_CSM(85, t) = Out_table_CSM(30, t) Out_table_CSM(86, t) = Out_table_CSM(33, t) Out_table_CSM(87, t) = Out_table_CSM(31, t) + Out_table_CSM(32, t) Out_table_CSM(88, t) = Out_table_CSM(39, t) Out_table_CSM(89, t) = Out_table_CSM(38, t) Out_table_CSM(81, t) = Out_table_CSM(82, t) + Out_table_CSM(83, t) + Out_table_CSM(84, t) + Out_table_CSM(85, t) + Out_table_CSM(86, t) + Out_table_CSM(87, t) + Out_table_CSM(88, t) + Out_table_CSM(89, t) Out_table_CSM(91, t) = Out_table_CSM(77, t) - Out_table_CSM(81, t) Next t For t = 0 To WW If t = 1 Then Sheets("Cashflow(CSM)").Cells(2, 9) = Out_table_CSM(3, t) For i = 2 To 39 If t = 0 Then Select Case i Case 2, 8, 9, 10, 11, 13 Sheets("cashflow(CSM)").Cells(6 + t, i) = Out_table_CSM(i, t) End Select Else Sheets("cashflow(CSM)").Cells(6 + t, i) = Out_table_CSM(i, t) End If Next i Next t For t = 1 To WW For i = 7 To 51 Select Case i Case 13, 19, 21, 23, 31, 33, 35, 36, 40, 50 Case Else Sheets("CSM").Cells(i, 2 + t) = Out_table_CSM(i + 40, t) End Select Next i Next t If Sheets("Setup").Cells(7, 3) = 1 Then Sheets("CSM").Cells(1, 1) = Name_inf(test_NUM(0)) & " CSM測試(情境測試假設)" Sheets("Cashflow(CSM)").Cells(1, 1) = Name_inf(test_NUM(0)) & " CSM測試(情境測試假設)" ElseIf Sheets("Setup").Cells(7, 3) = 2 Then Sheets("CSM").Cells(1, 1) = Name_inf(test_NUM(0)) & " CSM測試(標準假設)" Sheets("Cashflow(CSM)").Cells(1, 1) = Name_inf(test_NUM(0)) & " CSM測試(標準假設)" ElseIf Sheets("Setup").Cells(7, 3) = 3 Then Sheets("CSM").Cells(1, 1) = Name_inf(test_NUM(0)) & " CSM測試(最佳估計)" Sheets("Cashflow(CSM)").Cells(1, 1) = Name_inf(test_NUM(0)) & " CSM測試(最佳估計)" Else Sheets("CSM").Cells(1, 1) = Name_inf(test_NUM(0)) & " CSM測試" Sheets("Cashflow(CSM)").Cells(1, 1) = Name_inf(test_NUM(0)) & " CSM測試" End If If CUR_inf(test_NUM(0)) = 1 Then Sheets("CSM").Cells(4, 1) = "台幣" Else Sheets("CSM").Cells(4, 1) = "美元" If PT1_inf(test_NUM(0)) = "利變型" Then Sheets("CSM").Cells(4, 1) = Sheets("CSM").Cells(4, 1) & "利變壽" Else Sheets("CSM").Cells(4, 1) = Sheets("CSM").Cells(4, 1) & "傳統" disGE_CSM_table(0) = disCF(GE_table(), WW, , DIS_CSM(), 1) If CUR_inf(test_NUM(0)) = 2 Then Sheets("CSM").Cells(4, 4) = Mid(Name_inf(test_NUM(0)), 5, Application.Find("美元", Name_inf(test_NUM(0))) - 5) Else If PT1_inf(test_NUM(0)) = "利變型" Then Sheets("CSM").Cells(4, 4) = Mid(Name_inf(test_NUM(0)), 5, Application.Find("利率", Name_inf(test_NUM(0))) - 5) Else Sheets("CSM").Cells(4, 4) = Mid(Name_inf(test_NUM(0)), 5, Application.Find("終身", Name_inf(test_NUM(0))) - 5) End If End If Sheets("CSM").Cells(4, 5) = (Out_table_CSM(8, 0) + disGE_CSM_table(0)) / disGE_CSM_table(0) Sheets("CSM").Cells(4, 6) = Out_table_CSM(9, 0) / disGE_CSM_table(0) Sheets("CSM").Cells(4, 7) = Out_table_CSM(11, 0) / disGE_CSM_table(0) Sheets("CSM").Cells(4, 8) = Out_table_CSM(13, 0) / disGE_CSM_table(0) Sheets("CSM").Cells(4, 9) = Out_table_CSM(13, 0) / GE_table(1) Sheets("CSM").Cells(4, 10) = disCF(Profit_RBC_table(), WW, Range("RDR"), , 0) / GE_table(1) Sheets("CSM").Cells(4, 11) = disCF(Profit_RBC_table(), WW, , TPR(), 0) / disCF(GE_table(), WW, , TPR(), 1) Sheets("CSM").Cells(74, 3) = Sheets("CSM").Cells(4, 3) Sheets("CSM").Cells(75, 3) = GE_table(1) Sheets("CSM").Cells(76, 3) = Out_table_CSM(8, 0) Sheets("CSM").Cells(77, 3) = Out_table_CSM(9, 0) Sheets("CSM").Cells(78, 3) = Out_table_CSM(11, 0) Sheets("CSM").Cells(79, 3) = Out_table_CSM(8, 0) + Out_table_CSM(9, 0) + Out_table_CSM(11, 0) Sheets("CSM").Cells(80, 3) = -(Out_table_CSM(8, 0) + Out_table_CSM(9, 0) + Out_table_CSM(11, 0)) Sheets("CSM").Cells(81, 3) = disGE_CSM_table(0) Sheets("CSM").Cells(82, 3) = -(Out_table_CSM(8, 0) + Out_table_CSM(9, 0) + Out_table_CSM(11, 0)) / disGE_CSM_table(0) For t = 1 To 20 If t <= 10 Then cex = 86: CEY = 2 Else cex = 92: CEY = -9 If t = 1 Then Sheets("CSM").Cells(cex, CEY) = Out_table_CSM(13, 0) / Out_table_CSM(3, 1) On Error Resume Next Sheets("CSM").Cells(cex, CEY + t) = Out_table_CSM(13, t) / Out_table_CSM(3, 1) Sheets("CSM").Cells(cex + 1, CEY + t) = Out_table_CSM(2, t) * VI(t) / AEFF(t) Sheets("CSM").Cells(cex + 2, CEY + t) = Out_table_CSM(15, t) / Out_table_CSM(3, 1) Next t End If End Sub Sub 費差() Erase GE0_EXP, GE_EXP, COMM_EXP1, COMM_EXP2, COMM_EXP3, COMM_EXP4, COMM_EXP5, COST_EXP1, COST_EXP2, COST_EXP3, COST_EXP4, Stab_EXP, Oper_EXP, GE_EXP_Sum, EXP_diff NN = test_NN(0) For t = 1 To NN GE0_EXP(t) = GE_0(1) GE_EXP(t) = GE(1) COMM_EXP1(t) = GE(1) * COMM_rate_exp1(t) COMM_EXP2(t) = GE(1) * COMM_rate_exp2(t) COMM_EXP3(t) = GE(1) * COMM_rate_exp3(t) COMM_EXP4(t) = GE(1) * COMM_rate_exp4(t) COMM_EXP5(t) = GE(1) * COMM_rate_exp5(t) COST_EXP1(t) = 0 COST_EXP2(t) = GE(1) * EXP_test_Var3(t) COST_EXP3(t) = EXP_test_Fix2(t) COST_EXP4(t) = GE(1) * EXP_test_Var2(t) + EXP_test_Fix1(t) Stab_EXP(t) = GE(1) * Range("Tax")(3) Oper_EXP(t) = GE(1) * 0.00007 GE_EXP_Sum(0) = GE_EXP_Sum(0) + GE_EXP(t) EXP_diff(0) = EXP_diff(0) + GE_EXP(t) * Loading(0) - COMM_EXP1(t) - COMM_EXP2(t) - COMM_EXP3(t) - COMM_EXP4(t) - COMM_EXP5(t) - COST_EXP1(t) - COST_EXP2(t) - COST_EXP3(t) - COST_EXP4(t) - Stab_EXP(t) - Oper_EXP(t) Next t If Sheets("Setup").Cells(6, 8) = "Y" Then For t = 1 To NN Out(42, t) = EFF(0) Out(43, t) = GE0_EXP(t) Out(44, t) = GE_EXP(t) Out(45, t) = COMM_EXP1(t) Out(46, t) = COMM_EXP2(t) Out(47, t) = COMM_EXP3(t) Out(48, t) = COMM_EXP4(t) Out(49, t) = COMM_EXP5(t) Out(50, t) = COST_EXP1(t) Out(51, t) = COST_EXP2(t) Out(52, t) = COST_EXP3(t) Out(53, t) = COST_EXP4(t) Out(54, t) = Stab_EXP(t) Out(55, t) = Oper_EXP(t) Out(56, t) = GE_EXP(t) * (1 - Loading(0)) Next t End If End Sub
Editor is loading...
Leave a Comment