Machine Reserving DIY - actuaries.com.my Reserving DIY.pdf · Machine Reserving DIY ASM 5th General...

Post on 27-Jun-2020

3 views 0 download

transcript

Machine Reserving DIY

ASM 5th General Insurance &

Takaful Actuarial Seminar

Teh Loo Hai

16 June 2015

Motivation

2 www.actuaries.com.my

Motivation

3 www.actuaries.com.my

Handwritten digit classification

[Courtesy of Yann LeCun] Standford Machine Learning – Andrew Ng

5 www.actuaries.com.my

Begin with the End in Mind

6 www.actuaries.com.my

DIY Tools

and Design

7 www.actuaries.com.my

Tools

• Programming Language

• Database

• User Interface

8 www.actuaries.com.my

Choice of Tools - Options

Programming Language

• VBA

• C++

• R

• Python

• Matlab / Octave

Database

• Microsoft Access

• MySQL

• Foxpro

User Interface

• csv

• Excel

• Word

• pdf

9 www.actuaries.com.my

Choice of Tools - Considerations

Programming language

• Modern

• Object Oriented

• Easy to learn

• Good support

• Cost

Database

• Scalability

• Corporate policy

• Cost

User Interface

• GUI

• Easy to use

• Seamless integration with other tools

10 www.actuaries.com.my

11 www.actuaries.com.my

Common Design

12 www.actuaries.com.my

Common Design

Design

• Good design

– Input

– Formulae

– Output

– Locked cells

– Colour coded

13 www.actuaries.com.my

Design

14 www.actuaries.com.my

Achieving

Our Goals

15 www.actuaries.com.my

Data Processing – Source Data

• Raw data from IT and Finance

– EP UPR (Forms G6-1, GT5)

– Movement (SMCD, GT6-3)

16 www.actuaries.com.my

Data Processing – Old Way

• Extract data

– Links in Excel

– Copy and paste

• Check data

17 www.actuaries.com.my

TAS Insurance Berhad Appendix C

IBNR Claims Reserves as of 31 December 2015 (Net of Reinsurance)

Line of Business: Fire

Cumulative Case Incurred Claims (RM)

Accident

Years 1 2 3 4 5 6 7 8 9 10

1999 215,866 871,110 928,106 930,550 934,611 934,813 934,858 935,186 935,186 935,186

2000 767,646 1,166,909 1,267,393 1,280,629 1,282,589 1,284,484 1,284,733 1,291,834 1,291,834 1,291,834

2001 782,381 1,607,080 1,632,763 1,657,273 1,666,970 1,678,659 1,678,978 1,679,351 1,679,551 1,688,814

2002 665,999 2,100,588 2,121,569 2,183,857 2,185,328 2,186,078 2,186,182 2,186,284 2,187,124 2,187,180

2003 1,022,481 2,111,509 2,199,423 2,201,940 2,202,435 2,203,168 2,203,467 2,203,484 2,203,486 2,203,698

2004 1,373,693 2,358,457 2,400,493 2,401,215 2,406,367 2,435,974 2,437,065 2,437,066 2,438,381 2,438,579

2005 1,225,050 2,120,952 2,139,366 2,140,661 2,139,161 2,139,263 2,139,265 2,145,751 2,145,876 2,145,876

2006 771,585 2,163,239 2,249,387 2,274,637 2,347,728 2,346,574 2,346,689 2,347,018 2,426,424 2,426,424

2007 1,220,201 2,176,725 2,259,247 2,272,395 2,276,744 2,286,908 2,288,388 2,295,798 2,301,598

2008 1,282,605 3,186,543 3,409,922 3,575,135 3,577,580 3,578,484 3,628,339 3,628,343

2009 1,712,756 3,367,208 3,411,042 3,466,220 3,554,236 3,564,663 3,574,632

2010 1,802,255 3,493,096 3,591,755 3,603,286 3,603,868 3,612,691

2011 2,098,531 3,523,062 3,687,143 3,692,780 3,695,161

2012 1,709,421 3,167,251 3,260,509 3,280,668

2013 1,760,948 3,249,338 3,414,481

2014 2,425,184 4,322,212

2015 2,258,609

Years of Development

Data Processing – Ideal Way

• Extract data

• Check data

18 www.actuaries.com.my

Data Processing – Under the Hood

• readin = pd.io.sql.frame_query(‘’.join(q), cnx)

• err1 = pd.concat([readin[readin.cuincur < 0],

[readin[readin.cupaid < 0])

• err1.pr2xl(sh)

• err2 = readin[readin.cuincur < readin.cupaid]

• err2.pr2xl(sh)

19 www.actuaries.com.my

IBNR – Old Way

20 www.actuaries.com.my

• Extend runoff

triangle

• Choose link ratios,

loss ratios

• Print

spreadsheets

• Repeat for

another class

IBNR – Ideal Way

21 www.actuaries.com.my

IBNR – Under the Hood

• movm = gipy.Movm.fromdb(cmpy.constr, …)

• movm = gipy.Movm.fromXl(xlfile, …)

• devfact = gipy.Devfact(movm, weighted=True, …)

• linkratios = gipy.Linkratios(method, movm, devfact, …)

• movm.proj(linkratios)

• movm.qtr2yr(inplace=True)

• movm.pr2xl(sh)

22 www.actuaries.com.my

Reporting – Old Way vs Ideal Way

Old Way

Summary spreadsheet

linking all results

Make sure links updated

correctly

23 www.actuaries.com.my

Ideal Way

Specify runtime

parameters

Nicely formatted tables as

output

Reporting – Under the Hood

• tbl[‘becl’] = db.retr_becl(cmpy.constr, …)

• tbl[‘pradpc’] = db.retr_pradpc(cmpy.constr, …)

• tbl[‘prad’] = tbl.becl * tbl.pradpc

• fprad_tot = max(sum(tbl.becl) * pradpc[‘Total’],

0.5 * sum(tbl.prad))

• tbl[‘fprad’] = tbl.prad * fprad_tot / sum(tbl.prad)

• tbl[‘cl’] = tbl.becl + tbl.fprad

24 www.actuaries.com.my

Are We There Yet?

25 www.actuaries.com.my

Way Forward – Scaling New Heights

• Depth

– Data frequency

– Individual data

• Width

– Budget

– Stress Test

– DST

– ITCL

26 www.actuaries.com.my

tehloohai@actuaries.com.my

27 www.actuaries.com.my