专栏名称: 浩哥说
程浩,迅雷联合创始人,曾就职于百度,在硅谷工作多年,毕业于杜克大学计算机系,现成立松禾远望风险投资。从成功创业者到投资人,程浩凭借15年互联网实操经验,与你一同分享关于创业的独到理念与思考。BP请投递至 [email protected]
51好读  ›  专栏  ›  浩哥说

传统保险与水滴互助保险对比的精算模型

浩哥说  · 公众号  · 科技自媒体  · 2016-11-08 00:00

正文

传统保险与水滴互助保险对比的精算模型如下:



public class YangGuang {

static double[] CL = new double[] { 0.000722, 0.000603, 0.000499, 0.000416, 0.000358, 0.000323, 0.000309, 0.000308,

0.000311, 0.000312, 0.000312, 0.000312, 0.000313, 0.00032, 0.000336, 0.000364, 0.000404, 0.000455, 0.000513,

0.000572, 0.000621, 0.000661, 0.000692, 0.000716, 0.000738, 0.000759, 0.000779, 0.000795, 0.000815,

0.000842, 0.000881, 0.000932, 0.000994, 0.001055, 0.001121, 0.001194, 0.001275, 0.001367, 0.001472,

0.001589, 0.001715, 0.001845, 0.001978, 0.002113, 0.002255, 0.002413, 0.002595, 0.002805, 0.003042,

0.003299, 0.00357, 0.003847, 0.004132, 0.004434, 0.004778, 0.005203, 0.005744, 0.006427, 0.00726, 0.008229,

0.009313, 0.01049, 0.011747, 0.013091, 0.014542, 0.016134, 0.017905, 0.019886, 0.022103, 0.024571, 0.027309,

0.03034, 0.033684, 0.037371, 0.04143, 0.045902, 0.050829, 0.056262, 0.062257, 0.068871, 0.076187, 0.084224,

0.093071, 0.1028, 0.113489, 0.125221, 0.13808, 0.152157, 0.167543, 0.184333, 0.202621, 0.2225, 0.244059,

0.267383, 0.292544, 0.319604, 0.348606, 0.379572, 0.412495, 0.447334, 0.48401, 0.522397, 0.562317, 0.603539,

0.64577, 1 };

static double[] CI = new double[] { 0.00035, 0.000312, 0.000276, 0.000244, 0.000229, 0.000223, 0.000217, 0.000213,

0.00021, 0.000209, 0.00021, 0.000212, 0.000217, 0.000224, 0.000232, 0.000244, 0.000257, 0.000274, 0.000293,

0.000315, 0.00034, 0.000368, 0.000399, 0.000434, 0.000472, 0.000514, 0.00056, 0.00061, 0.000663, 0.000721,

0.000783, 0.00085, 0.000924, 0.001007, 0.001104, 0.001218, 0.001351, 0.001508, 0.001691, 0.001905, 0.002151,

0.002434, 0.002757, 0.003123, 0.003535, 0.003997, 0.004512, 0.005084, 0.005715, 0.006406, 0.007155, 0.00796,

0.008818, 0.009726, 0.010681, 0.011682, 0.012725, 0.013809, 0.01493, 0.016086, 0.017274, 0.018492, 0.019737,

0.021006, 0.022298, 0.023845, 0.025712, 0.027942, 0.029876, 0.031957, 0.034692, 0.036997, 0.039483,

0.041442, 0.043501, 0.045666, 0.047943, 0.050338, 0.052172, 0.05409, 0.056377, 0.058783, 0.061314, 0.06346,

0.065722, 0.068104, 0.070612, 0.073252, 0.07603, 0.078952, 0.081576, 0.084315, 0.087175, 0.09016, 0.093276,

0.096528, 0.099922, 0.103466, 0.107164, 0.111026, 0.114981, 0.11914, 0.123482, 0.128017, 0.132753, 0.1377

};

static double[] KX = new double[] { 2.00, 8.47, 10.91, 11.94, 12.57,

13.10, 13.92, 14.97, 15.78, 16.73,

17.66, 18.53, 19.30, 19.92, 20.36,

20.58, 20.52, 20.15, 19.52, 18.75,

18.01, 17.53, 17.49, 17.98, 18.96,

20.26, 21.68, 23.04, 24.23, 25.25,

26.18, 27.15, 28.23, 29.48, 30.92,

32.52, 34.28, 36.18, 38.21, 40.31,

42.43, 44.49, 46.44, 48.23, 49.86,

51.36, 52.80, 54.23, 55.68, 57.15,

58.57, 59.91, 61.13, 62.23, 63.16,

63.90, 64.42, 64.71, 64.80, 64.73,

64.58, 64.39, 64.24, 64.13, 64.02,

63.84, 63.51, 63.02, 62.36, 61.55,

60.61, 59.56, 58.41, 57.17, 55.86,

54.47, 53.02, 51.54, 50.04, 48.57,

47.14, 45.78, 44.50, 43.32, 42.23,

41.21, 40.25, 39.31, 38.37, 37.40,

36.40, 35.37, 34.31, 33.26, 31.87,

30.19, 28.65, 27.25, 25.97, 24.81,

23.75, 22.80, 21.95, 21.20, 20.55, 13.77

};

static int type = 1;

static double GP = 0;

static double NB = 0;

static double NP = 0;

static double SA = 0;

static double vvv = 0.035;

static double vv = 1 / (1 + vvv);

public static double Qd(int x) {

return CL[x];

}

public static double QDD(int x) {

if( type == 0 ) {

if( x

return CI[x] * (0.0382 / 0.0783);

} else {

return CI[x] * 0.6;

}

} else if( type == 1 ) {

return CI[x];

} else {

return 0;

}

}

public static double DB(double gpx,  int t) {

return Math.min(NP, t+1) * gpx;

}

public static double v(double c) {

return Math.pow(vv, c);

}

public static double K(int x) {

return KX[x] / 100;

}

public static double p(int x,int t) {

if( t == 0 ) {

return 1;

}

double res =1 ;

for( int k = 0; k

double r = 1 - Qd(x+k) * (1-K(x+k)) - QDD(x+k);

res = res * r;

}

return res;

}

public static double P1(int gpx,int x) {

return 0.5 * QDD(x) * (DB(gpx, 0) * v(0.25) + SA * v(0.75) );

}

public static double P2(int x) {

double res = 0;

for( int t = 1; t

double now = SA * Math.min(3, t+1) * p(x,t) * QDD(x+t) * v(t+0.5);

res = res + now;

}

return res;

}

public static double P3(int gpx,int x) {

double res = 0;

for( int t = 0; t

double now =  DB(gpx, t) * p(x,t) * Qd(x+t) * (1-K(x+t)) * v(t+0.5);

res = res + now;

}

return res;

}

public static double P4(int x) {

double res = 0;

for( int t = 0; t

double now = p(x,t) * v(t);

res = res + now;

}

return res;

}

public static void main(String[] args) {

// 默认都是男性

int x = 30;   // 年龄

type = 0;     //0 代表A款,保恶性肿瘤

//1 代表B款,保包括恶性肿瘤在内,最常见的6种终疾

SA = 250000; // 保额

NP = 1; // 缴费年限,

NB = 70 - x; // 保障年限,保障到70岁,保障40年

vvv = 0.035; // 预定利率,这个值越高,保费越低

vv = 1 / (1 + vvv);

for( int gpx = 0; gpx

double r1 =  P1(gpx,x);

double r2 = P2(x);

double r3 = P3(gpx,x);

double r4 = P4(x);

double r = (r1+r2+r3)/r4;

if( Math.abs(r - gpx)  

System.out.println("第一年疾病的保障成本: " + r1);

System.out.println("第一年以后疾病的保障成本: " + r2);

System.out.println("身故保障成本: " + r3);

System.out.println("累计缴费年金因子: " + r4);

System.out.println("年缴保费: " + gpx);

break;

}

}

}

}

public class Shuidi {

static double[] CL = new double[] { 0.000722, 0.000603, 0.000499, 0.000416, 0.000358, 0.000323, 0.000309, 0.000308,

0.000311, 0.000312, 0.000312, 0.000312, 0.000313, 0.00032, 0.000336, 0.000364, 0.000404, 0.000455, 0.000513,

0.000572, 0.000621, 0.000661, 0.000692, 0.000716, 0.000738, 0.000759, 0.000779, 0.000795, 0.000815,

0.000842, 0.000881, 0.000932, 0.000994, 0.001055, 0.001121, 0.001194, 0.001275, 0.001367, 0.001472,

0.001589, 0.001715, 0.001845, 0.001978, 0.002113, 0.002255, 0.002413, 0.002595, 0.002805, 0.003042,

0.003299, 0.00357, 0.003847, 0.004132, 0.004434, 0.004778, 0.005203, 0.005744, 0.006427, 0.00726, 0.008229,

0.009313, 0.01049, 0.011747, 0.013091, 0.014542, 0.016134, 0.017905, 0.019886, 0.022103, 0.024571, 0.027309,

0.03034, 0.033684, 0.037371, 0.04143, 0.045902, 0.050829, 0.056262, 0.062257, 0.068871, 0.076187, 0.084224,

0.093071, 0.1028, 0.113489, 0.125221, 0.13808, 0.152157, 0.167543, 0.184333, 0.202621, 0.2225, 0.244059,

0.267383, 0.292544, 0.319604, 0.348606, 0.379572, 0.412495, 0.447334, 0.48401, 0.522397, 0.562317, 0.603539,

0.64577, 1 };

static double[] CI = new double[] { 0.00035, 0.000312, 0.000276, 0.000244, 0.000229, 0.000223, 0.000217, 0.000213,

0.00021, 0.000209, 0.00021, 0.000212, 0.000217, 0.000224, 0.000232, 0.000244, 0.000257, 0.000274, 0.000293,

0.000315, 0.00034, 0.000368, 0.000399, 0.000434, 0.000472, 0.000514, 0.00056, 0.00061, 0.000663, 0.000721,

0.000783, 0.00085, 0.000924, 0.001007, 0.001104, 0.001218, 0.001351, 0.001508, 0.001691, 0.001905, 0.002151,

0.002434, 0.002757, 0.003123, 0.003535, 0.003997, 0.004512, 0.005084, 0.005715, 0.006406, 0.007155, 0.00796,

0.008818, 0.009726, 0.010681, 0.011682, 0.012725, 0.013809, 0.01493, 0.016086, 0.017274, 0.018492, 0.019737,

0.021006, 0.022298, 0.023845, 0.025712, 0.027942, 0.029876, 0.031957, 0.034692, 0.036997, 0.039483,

0.041442, 0.043501, 0.045666, 0.047943, 0.050338, 0.052172, 0.05409, 0.056377, 0.058783, 0.061314, 0.06346,

0.065722, 0.068104, 0.070612, 0.073252, 0.07603, 0.078952, 0.081576, 0.084315, 0.087175, 0.09016, 0.093276,

0.096528, 0.099922, 0.103466, 0.107164, 0.111026, 0.114981, 0.11914, 0.123482, 0.128017, 0.132753, 0.1377

};

static double[] KX = new double[] { 2.00, 8.47, 10.91, 11.94, 12.57, 13.10, 13.92, 14.97, 15.78, 16.73, 17.66,

18.53, 19.30, 19.92, 20.36, 20.58, 20.52, 20.15, 19.52, 18.75, 18.01, 17.53, 17.49, 17.98, 18.96, 20.26,

21.68, 23.04, 24.23, 25.25, 26.18, 27.15, 28.23, 29.48, 30.92, 32.52, 34.28, 36.18, 38.21, 40.31, 42.43,

44.49, 46.44, 48.23, 49.86, 51.36, 52.80, 54.23, 55.68, 57.15, 58.57, 59.91, 61.13, 62.23, 63.16, 63.90,

64.42, 64.71, 64.80, 64.73, 64.58, 64.39, 64.24, 64.13, 64.02, 63.84, 63.51, 63.02, 62.36, 61.55, 60.61,

59.56, 58.41, 57.17, 55.86, 54.47, 53.02, 51.54, 50.04, 48.57, 47.14, 45.78, 44.50, 43.32, 42.23, 41.21,

40.25, 39.31, 38.37, 37.40, 36.40, 35.37, 34.31, 33.26, 31.87, 30.19, 28.65, 27.25, 25.97, 24.81, 23.75,

22.80, 21.95, 21.20, 20.55, 13.77 };

static double GP = 0;

static double NB = 0;

static double NP = 0;

static double vvv = 0;

static double vv = 0;

public static double Qd(int x) {

return CL[x];

}

public static double QDD(int x) {

if (x

return CI[x] * (0.0382 / 0.0783);

} else {

return CI[x] * 0.6;

}

}

public static double v(double c) {

return Math.pow(vv, c);

}

public static double K(int x) {

return KX[x] / 100;

}

public static double p(int x, int t) {

if (t == 0) {

return 1;

}

double res = 1;

for (int k = 0; k

double r = 1 - Qd(x + k) * (1 - K(x + k)) - QDD(x + k);

res = res * r;

}

return res;

}

public static double SA(int x) {

if (x

return 300000;

} else if (x

return 250000;

} else if (x

return 200000;

} else {

return 100000;

}

}

public static double P1(int x) {

return 0.5 * QDD(x) * SA(x) * v(0.75);

}

public static double P2(int x) {

double res = 0;

for (int t = 1; t

double now = SA(x + t) * p(x, t) * QDD(x + t) * v(t + 0.5);

res = res + now;

}

return res;

}

public static double P4(int x) {

double res = 0;

for (int t = 0; t

double now = p(x, t) * v(t);

res = res + now;

}

return res;

}

public static void main(String[] args) {

// 默认都是男性

int x = 18; // 年龄

for( x = 18; x

NP = 50 - x; // 缴费年限,保障到50岁,缴费32年

NB = 50 - x; // 保障年限,保障到50岁,保障32年

vvv = 0.0;   // 预定利率,这个值越高,保费越低

vv = 1 / (1 + vvv);

double r1 = P1(x);

double r2 = P2(x);

double r4 = P4(x);

double r = (r1 + r2) / r4;

System.out.println("年龄: " + x + "\t年缴保费: " + r);

}

}

}


欢迎大家验证!