<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1430495970670036050</id><updated>2026-05-26T11:50:16.388+08:00</updated><category term="Actuarial Modeling"/><category term="Prophet"/><category term="Actuarial Reporting"/><category term="Movement of Policy"/><category term="Health Insurance"/><category term="Actuarial Work"/><category term="Excel / Spreadsheet"/><category term="FoxPro"/><category term="Takaful"/><category term="General"/><category term="System"/><category term="Claim"/><category term="Learning &amp; Training"/><category term="Access"/><category term="Catastrophe"/><category term="Communication"/><category term="Documentation"/><category term="General Insurance"/><category term="Life Insurance"/><category term="Management"/><title type='text'>My Actuarial Working Life</title><subtitle type='html'>Sharing the knowledge &amp;amp; experience I gain from my work in Malaysian actuarial industry</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>57</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-210222733447446385</id><published>2026-05-25T13:50:53.281+08:00</published><updated>2026-05-25T13:51:59.675+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>Fit-for-All Prophet Model - Not a Good Idea</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZl2VidQaS1Wbv1QRAUR1PE62glt0oEbM97-kExKpYicNmYlG31zphC9Sn1kdtYFiut2w1QCRANwzeCuCdvunkWTM3-8VB0PyEfELssW9SBw876RkW00waFaMkeIJ8T3ba1B21yfHn4ake_jOH8QDOBiBG2e6DJzsOMtMfCqMBLQe9HWpTiss0JyWf2Xc/s1024/fit-for-all-prophet-not-good-idea-01.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;559&quot; data-original-width=&quot;1024&quot; height=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZl2VidQaS1Wbv1QRAUR1PE62glt0oEbM97-kExKpYicNmYlG31zphC9Sn1kdtYFiut2w1QCRANwzeCuCdvunkWTM3-8VB0PyEfELssW9SBw876RkW00waFaMkeIJ8T3ba1B21yfHn4ake_jOH8QDOBiBG2e6DJzsOMtMfCqMBLQe9HWpTiss0JyWf2Xc/w640-h350/fit-for-all-prophet-not-good-idea-01.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;After completing the debugging on Prophet model yesterday, I still think that building a #Prophet model that aims to fit-for-all (e.g., business units) is &lt;b&gt;NOT A GOOD IDEA&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Yesterday my team member, Cang Zheng, and I were assisting one of our Prophet users in debugging her reserve figure generated from their existing Prophet production model (which was developed earlier by other modelers). When we went through the Prophet model, although it was not modified from the standard Conventional library, we still found traces that it is modified from a library that aims to achieve fit-for-all purposes.&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;How did we find the traces? In fact, it is not something difficult - such Prophet library usually contains substantial redundancy, as well as longer route to trace the calculations - also many rules to control the calculations. In addition, the formatting used in coding is inconsistent, which is clearly not from a standard library.&lt;/p&gt;&lt;p&gt;Having a fit-for-all Prophet model is indeed ambitious, but in my view, it is less practical. As I also share with my team members, &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;FLEXIBILITY always come with COMPLEXITY&lt;/span&gt;&lt;/b&gt; - more flexibility, more complexity. When we want to build a fit-for-all Prophet model (i.e., FLEXIBLE for many business units), we can&#39;t avoid of making the Prophet model more COMPLEX. This also increases the hurdles in using the Prophet model - i.e., the users need to have more technical knowledge in understanding the Prophet model. But in reality, we definitely can&#39;t expect all actuarial valuation users to have good technical knowledge in Prophet.&lt;/p&gt;&lt;p&gt;It is IMPORTANT to note that the persons who going to USE Prophet models are valuation users, and NOT Prophet modelers.&lt;/p&gt;&lt;p&gt;That&#39;s the reason when we assist our clients in setting up Prophet models, we will usually first understand their level of Prophet knowledge.&lt;/p&gt;&lt;p&gt;(Source of Image: Gemini AI)&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/210222733447446385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2026/05/fit-for-all-prophet-not-good-idea.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/210222733447446385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/210222733447446385'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2026/05/fit-for-all-prophet-not-good-idea.html' title='Fit-for-All Prophet Model - Not a Good Idea'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZl2VidQaS1Wbv1QRAUR1PE62glt0oEbM97-kExKpYicNmYlG31zphC9Sn1kdtYFiut2w1QCRANwzeCuCdvunkWTM3-8VB0PyEfELssW9SBw876RkW00waFaMkeIJ8T3ba1B21yfHn4ake_jOH8QDOBiBG2e6DJzsOMtMfCqMBLQe9HWpTiss0JyWf2Xc/s72-w640-h350-c/fit-for-all-prophet-not-good-idea-01.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-7068437070653990034</id><published>2025-05-16T21:52:00.002+08:00</published><updated>2025-05-16T21:52:29.768+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>Prophet Modelling Technique (4): SPCODE</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6_1G758Qwqq5uitQJk1VHSt9DmyVo5tBC1FQakSBSc4tAqEXv4q7Bz_lng-LorSHaJPPBiECM2m_dQV9W9xnXe-_1m-zgmn61Zccgvb8PBCFeglcmyZS9GITK-AnuSYAU1FpvllexpGtRIclW5cjyEsn8ze7NlaEWLGTbu63kJgcauH_Jo6PwlhL3ouU/s1040/img_prophet_techq_04_spcode.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;693&quot; data-original-width=&quot;1040&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6_1G758Qwqq5uitQJk1VHSt9DmyVo5tBC1FQakSBSc4tAqEXv4q7Bz_lng-LorSHaJPPBiECM2m_dQV9W9xnXe-_1m-zgmn61Zccgvb8PBCFeglcmyZS9GITK-AnuSYAU1FpvllexpGtRIclW5cjyEsn8ze7NlaEWLGTbu63kJgcauH_Jo6PwlhL3ouU/w640-h426/img_prophet_techq_04_spcode.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;In several discussions with Prophet users, the topic of sub-product codes, commonly known as &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;SPCODE&lt;/span&gt;&lt;/b&gt;, often comes up. I thought it would be helpful to share some of my views on how SPCODE should be used—especially in terms of maintaining model flexibility and supporting various actuarial analyses.&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Understanding the Role of SPCODE&lt;/h2&gt;&lt;p&gt;When Prophet performs calculations, it can produce results either on a total basis—which is labeled as SPCODE = 0—or on a grouping basis, where model points are grouped by SPCODE. Grouping by SPCODE is by far the most common approach. There is another grouping method, such as grouping by maturity year, but that’s rarely used these days, particularly in jurisdictions where regulators don’t require results to be broken down that way. (You can also use &quot;Flexible Results&quot; functionality for result grouping, but it is subject to additional subscription fee)&lt;/p&gt;&lt;p&gt;Here’s a quick illustration of how SPCODE works in practice:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Suppose you have three SPCODEs in your model point file: 1, 11, and 21.&lt;/li&gt;&lt;li&gt;Each SPCODE contains 1,000 model points.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;When Prophet runs, it will generate four sets of results—one for each SPCODE, and one combined result where SPCODE = 0. For any variable defined as a cumulative variable, Prophet will automatically sum the values across all model points with the same SPCODE. So, when you extract results for SPCODE = 1, you’ll get the total results for those 1,000 model points.&lt;/p&gt;&lt;p&gt;Also, I summarize some SPCODE basics you should know:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;SPCODE is a mandatory field in all model point files and must be placed in the first column.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;You do not need to create a variable to read SPCODE—it is automatically read by Prophet.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Any positive integer up to 9999 can be used. For model point files used for in force run (i.e., not &lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-02-nb-processing.html&quot;&gt;new business processing&lt;/a&gt;),&amp;nbsp;the SPCODE less than or equal to the “Last Sub-product Code for Existing Business” specified in the Run Structure.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;My Recommendation on How to Use SPCODE&lt;/h2&gt;&lt;p&gt;In all Prophet models I’ve developed, I emphasize one principle to the users: &quot;SPCODE should be used purely as a grouping criterion, and NOT as a specific driver for reporting.&quot;&lt;/p&gt;&lt;p&gt;This is especially important when working with frameworks like IFRS17. I do not recommend using SPCODE to manage groupings such as ICG (Insurance Contract Groups). Once we assign calculation-based meanings to SPCODEs, we limit its flexibility and reduce our ability to use it for other important analysis.&lt;/p&gt;&lt;p&gt;Here’s why this matters:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Let’s say you later want to analyze profitability by distribution channel.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;If SPCODEs have already been hardcoded to represent something else, you lose the ability to use them to group policies by channel.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Similarly, if you need to run model testing and want to trace the impact of changes by assigning different SPCODEs to test groups, you’ll face unnecessary constraints.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Don’t Lose Flexibility&lt;/h2&gt;&lt;p&gt;It’s important to remember that our Prophet models aren’t built for just one purpose, such as IFRS17 valuation. These models support a range of actuarial analyses—from profitability studies and sensitivity tests to stress scenario reporting.&lt;/p&gt;&lt;p&gt;That’s why it’s essential to preserve the flexibility of SPCODE as a grouping mechanism—one that can be easily re-assigned based on the analysis you’re running, without being tied to a specific set of rules or business logic.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Related Posts:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-01-enum.html&quot;&gt;Prophet Modelling Technique (1): Enumerations&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-02-nb-processing.html&quot;&gt;Prophet Modelling Technique (2): New Business Processing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-03-calc-loop.html&quot;&gt;Prophet Modelling Technique (3): Calculation Looping&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Prophet Modelling Technique (4): SPCODE&lt;/li&gt;&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/7068437070653990034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-04-spcode.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/7068437070653990034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/7068437070653990034'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-04-spcode.html' title='Prophet Modelling Technique (4): SPCODE'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6_1G758Qwqq5uitQJk1VHSt9DmyVo5tBC1FQakSBSc4tAqEXv4q7Bz_lng-LorSHaJPPBiECM2m_dQV9W9xnXe-_1m-zgmn61Zccgvb8PBCFeglcmyZS9GITK-AnuSYAU1FpvllexpGtRIclW5cjyEsn8ze7NlaEWLGTbu63kJgcauH_Jo6PwlhL3ouU/s72-w640-h426-c/img_prophet_techq_04_spcode.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-6759942103108179394</id><published>2025-05-15T16:21:00.002+08:00</published><updated>2025-05-16T21:54:20.586+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>Prophet Modelling Technique (3): Calculation Looping</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_fPdsACy4YjH6wGOKXAn4gBxfhsudQipwZUCqGWhR6o2IcILEGKdBveCRHhvZeCs8IHkXpb6xm20GTTjuLeRD4T-d510xfU9SN77zATOallrfGs0C-Uwm26n4fNFGrV1eeN8A94pJasTmM1mQn2i3bhs4wD7n78ur_68c01ESAPuSu4M7T3pmr4F5mzM/s1040/img_prophet_techq_03_calc_loop.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;693&quot; data-original-width=&quot;1040&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_fPdsACy4YjH6wGOKXAn4gBxfhsudQipwZUCqGWhR6o2IcILEGKdBveCRHhvZeCs8IHkXpb6xm20GTTjuLeRD4T-d510xfU9SN77zATOallrfGs0C-Uwm26n4fNFGrV1eeN8A94pJasTmM1mQn2i3bhs4wD7n78ur_68c01ESAPuSu4M7T3pmr4F5mzM/w640-h426/img_prophet_techq_03_calc_loop.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;In my previous post about using &lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-01-enum.html&quot;&gt;enumerations&lt;/a&gt; in Prophet, I referenced &quot;calculation looping&quot; in one of the illustrations. That got me thinking—not all Prophet users may be familiar with this concept. After all, not every Prophet model uses the calculation looping technique.&lt;/p&gt;&lt;p&gt;Let’s take a closer look at what calculation looping is, how it works, and why it’s useful—especially when you&#39;re dealing with different sets of assumptions in a single run.&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;What Is “Looping” in Prophet?&lt;/h2&gt;&lt;p&gt;Broadly speaking, looping is one of several calculation techniques available in Prophet. Some of the most commonly used techniques include:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Calculation Looping&lt;/li&gt;&lt;li&gt;Rebasing&lt;/li&gt;&lt;li&gt;Dynamic Run&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Among these, calculation looping is generally the simplest form. In plain terms, if a model uses calculation looping, Prophet repeats its calculations multiple times within the same run.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Here&#39;s how it works:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;The number of loops is defined by the variable &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;NUM_CLCLOOPS&lt;/span&gt;&lt;/b&gt;. Prophet will repeat calculations that many times.&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;During each loop, the variable &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;CALC_LOOP&lt;/span&gt;&lt;/b&gt;&amp;nbsp;(i.e., the counter) automatically updates—starting from 1 and increasing with each iteration.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;If you want to preserve the result of a variable from a specific loop and avoid it being overwritten in the next loop, you can use the &lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;NO_CALC&lt;/b&gt;&lt;/span&gt; function.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Why Use Calculation Looping?&lt;/h2&gt;&lt;p&gt;The biggest advantage of calculation looping is that it allows you to reuse the same set of variables for different purposes—like applying different assumption sets—all within a single run.&lt;/p&gt;&lt;p&gt;Let’s say you’re calculating reserves using the Gross Premium Valuation (&quot;GPV&quot;) method. With calculation looping, you can reuse the same variables—for premiums, expenses, claims, surrenders, and so on—to calculate:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Best Estimate Reserves&lt;/li&gt;&lt;li&gt;Statutory Reserves&lt;/li&gt;&lt;li&gt;Capital Reserves for RBC&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;This means you don’t need to duplicate variables for each scenario, and you don’t have to convert everything into array variables just to handle different reserve bases.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Reducing Errors and File Size&lt;/h2&gt;&lt;p&gt;This approach also helps improve consistency. Under GPV, your valuation and projection scenarios should use the same variable logic. By running all scenarios in one place, you minimize the chance of discrepancies between them.&lt;/p&gt;&lt;p&gt;There’s a bonus, too: Prophet models that use calculation looping often produce smaller result files, because only the results from the last loop are stored—unless you specifically set up variables with CALC_LOOP and NO_CALC to retain intermediate results.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;A Tip for Prophet Users in Malaysia&lt;/h2&gt;&lt;p&gt;If you’re a Prophet user working with RBC2 requirements, calculation looping can be especially powerful. Instead of setting up multiple separate runs for each RBC2 stress scenario, you can perform them all in a single run, using different loops to handle the different stress cases.&lt;/p&gt;&lt;p&gt;And let’s be honest—there are a lot of runs to deal with under RBC2. So anything that helps streamline the process is worth considering.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Related Posts:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-01-enum.html&quot;&gt;Prophet Modelling Technique (1): Enumerations&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-02-nb-processing.html&quot;&gt;Prophet Modelling Technique (2): New Business Processing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Prophet Modelling Technique (3): Calculation Looping&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-04-spcode.html&quot;&gt;Prophet Modelling Technique (4): SPCODE&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/6759942103108179394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-03-calc-loop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/6759942103108179394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/6759942103108179394'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-03-calc-loop.html' title='Prophet Modelling Technique (3): Calculation Looping'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_fPdsACy4YjH6wGOKXAn4gBxfhsudQipwZUCqGWhR6o2IcILEGKdBveCRHhvZeCs8IHkXpb6xm20GTTjuLeRD4T-d510xfU9SN77zATOallrfGs0C-Uwm26n4fNFGrV1eeN8A94pJasTmM1mQn2i3bhs4wD7n78ur_68c01ESAPuSu4M7T3pmr4F5mzM/s72-w640-h426-c/img_prophet_techq_03_calc_loop.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-4609553047026298470</id><published>2025-05-09T21:57:00.003+08:00</published><updated>2025-06-02T21:00:30.188+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>Prophet Modelling Technique (2): New Business Processing</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4IQyZxZYlEccQ1lwRStwXgF504q8ja9oubhVX4xlBj9t1Vb20CFcslZwrjBK_A-WqoVJ5Q_tMzte3S1RpmXJNsnvXw2uJ5mkdBEH0PBa-IJWKzVJhFddg1eGCr3VYwR085SCIYEt1w7uzOxLnd6eYehFriDLk8M7ZsB4Ob1QhshLkvgY23P0gkM_KBkQ/s1040/img_prophet_techq_02_nb_process.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;693&quot; data-original-width=&quot;1040&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4IQyZxZYlEccQ1lwRStwXgF504q8ja9oubhVX4xlBj9t1Vb20CFcslZwrjBK_A-WqoVJ5Q_tMzte3S1RpmXJNsnvXw2uJ5mkdBEH0PBa-IJWKzVJhFddg1eGCr3VYwR085SCIYEt1w7uzOxLnd6eYehFriDLk8M7ZsB4Ob1QhshLkvgY23P0gkM_KBkQ/w640-h426/img_prophet_techq_02_nb_process.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;From my experience working with Prophet users (Valuation Team), most are quite familiar with running in-force projections, such as monthly valuation and embedded value calculations. However, when it comes to &lt;b&gt;new business (&quot;NB&quot;) processing&lt;/b&gt;, many users find themselves uncertain or confused on how it works. It’s not uncommon for me to receive questions like,&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&quot;Why can’t I just use the cross multiplication method?&quot;&lt;/li&gt;&lt;li&gt;&quot;Why does the project method take so much longer to run?&quot;&lt;/li&gt;&lt;/ul&gt;(Prefer video? View the&amp;nbsp;&lt;a href=&quot;https://youtu.be/qTxi8m9uRY4&quot; target=&quot;_blank&quot;&gt;video&lt;/a&gt;&amp;nbsp;for this post!)&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In this blog post, I’ll walk through how NB processing works in Prophet, highlight the differences between the two most common methods —&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;cross multiplication&lt;/span&gt; &lt;/b&gt;and &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;project method&lt;/span&gt;&amp;nbsp;&lt;/b&gt;— and explain why I often recommend the project method for Prophet users from family takaful operators.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;What is NB Processing?&lt;/h2&gt;&lt;p&gt;NB processing in Prophet is a technique used to project results for future sales, based on sales volume specified in the&amp;nbsp;Sales File. Prophet offers three methods for new business projection, but in practice,&amp;nbsp;cross multiplication&amp;nbsp;and&amp;nbsp;project method&amp;nbsp;are most commonly used.&lt;/p&gt;&lt;p&gt;To understand how these methods work, it’s important to first break down the two key components involved in NB projection, i.e. &lt;b&gt;NB profile&lt;/b&gt; and &lt;b&gt;Sales File&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;A. Overall Concept&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;NB Profile / NB Premium × Sales File = Projected Cash Flows&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In essence, Prophet projects new business cash flows by multiplying the NB profile with the monthly sales volumes from the Sales File. To be more specific, the &quot;NB Profile&quot; in the above formula refers to per dollar NB profile.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Let me use an illustration to better explain the above formula:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;From the NB profile, the expected premium incomes for policy month 1 and 2 are $100,000 and 95,000 respectively.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;The NB profile is generated using a model point file, with annualized premium $1,200,000. The annualized premium is captured under a mandatory variable &lt;b&gt;PREM_AMOUNT&lt;/b&gt;. We need to ensure this variable is spelled correctly, as it is Prophet a specified variable.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;If expected sales for Jan &#39;25 is $600,000, the expected premium income for Feb &#39;25 is 100,000 / 1,200,000&amp;nbsp;× 600,000 = $50,000.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Using similar approach, the expected premium income for Feb &#39;25 is $47,500.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmplaWYHMP5IeC3xj-uEGhiqay7QDxvl_B2ZX5WEnlIyAcgIM3DaFNZsGvEsPMXT5gtOjmteaf6gazwc4cMlju6o2_TDS9ZoGx4oSPEHs1ye5rMfy9VFXk6FNcf2NpnKSSEd4GZq185XCRuD04MfYdqIFuwFZvhVoA-lH7a6RA3QzV6XXmKopI1DrnspQ/s867/img_prophet_techq_02_nb_process_a.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;325&quot; data-original-width=&quot;867&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmplaWYHMP5IeC3xj-uEGhiqay7QDxvl_B2ZX5WEnlIyAcgIM3DaFNZsGvEsPMXT5gtOjmteaf6gazwc4cMlju6o2_TDS9ZoGx4oSPEHs1ye5rMfy9VFXk6FNcf2NpnKSSEd4GZq185XCRuD04MfYdqIFuwFZvhVoA-lH7a6RA3QzV6XXmKopI1DrnspQ/w400-h150/img_prophet_techq_02_nb_process_a.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Similarly, if expected sales for Feb &#39;25 is $900,000, the expected premium incomes for Feb &#39;25 (policy month 1) and Mar &#39;25 (policy month 2) are $75,000 and $71,250.&amp;nbsp;&lt;/p&gt;&lt;p&gt;To get the expected premium income for Feb &#39;25 on totality basis, we need to add up the results from both Jan &#39;25 block and Feb &#39;25 block of new business, i.e., 47,500 + 75,000 = $122,500.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;B. NB Profile&lt;/h3&gt;&lt;p&gt;The NB profile is generated from NB model points. Prophet distinguishes these model points by looking at the &lt;b&gt;SPCODE&lt;/b&gt;, where values exceeding the &quot;&lt;b&gt;Last Sub-product Code for Existing Business&lt;/b&gt;&quot; (as defined in the Structures) are treated as NB model points. In addition, it is important to ensure&amp;nbsp;&lt;b&gt;DUR_M&lt;/b&gt;&amp;nbsp;for NB model point is set to 0.&lt;/p&gt;&lt;p&gt;For example, if the &quot;Last Sub-product Code for Existing Business&quot; is set to 50, all model point files with SPCODE = 51, 52, ..., 9999 are treated as NB model points.&amp;nbsp;&lt;/p&gt;&lt;p&gt;You may have another question in mind: &quot;Will my results be better if I use more NB points in the calculations?&quot; In fact, NB model points represent the distribution of the target new business stated in the Sales File.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;The most common approach is to use the actual new business acquired by the company. This approach assumes the distribution is the same as the actual new business.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You can also construct the expected distribution using fewer model points.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;In simple words, 1 model point and 100,000 homogenous model points produce the same NB profile.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;C. Sales File&lt;/h3&gt;&lt;p&gt;The Sales File contains monthly sales volumes, organized by Prophet product and SPCODE. For example, if your new business model point file includes SPCODEs 51 and 52, then your sales file should contain columns labeled “PRODUCT#51” and “PRODUCT#52,” representing the expected monthly sales for each SPCODE.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Cross Multiplication vs. Project Method&lt;/h2&gt;&lt;p&gt;The key difference between the cross multiplication method and the project method lies in how the NB profile is produced and used over time.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;b&gt;Cross multiplication method&lt;/b&gt; - Prophet generates the NB profile once, based on a single starting date. This same NB profile is then multiplied by the sales volumes for each month in the projection period.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Project method&lt;/b&gt; - Prophet regenerates the NB profile for every single month. Each month’s projection begins with a new starting date, and a new NB profile is created to match that start date before being multiplied by that month’s sales volume.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In simple terms, you can think of the project method as a series of cross multiplications—each tied to a different starting month.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Why Does This Matter?&lt;/h3&gt;&lt;p&gt;You might wonder whether it’s really necessary to regenerate the NB profile each month. The answer depends on whether your model includes &lt;b&gt;calendar date-specific cash flows&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;If your projection assumptions are NOT dependent on the calendar—say, if policy events like benefits occur exactly one year from issue regardless of start month—then the cross multiplication method may be sufficient.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;However, in &lt;b&gt;Family Takaful&lt;/b&gt;, the timing of certain events—particularly profit and surplus sharing—is often tied to the financial year-end. For example, surplus distribution may be performed annually as of 31 December, regardless of when a policy was issued during the year. Unless this has been simplified to a monthly declaration (which is less common), the model needs to reflect this calendar-based timing accurately.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;If a user applies the cross multiplication method in this context, Prophet will apply the same NB profile to all sales months. As a result, every new business policy—regardless of its actual issue date—will appear to participate in surplus sharing on the same schedule. This leads to inaccurate results, where surplus sharing seems to happen monthly, simply because the NB profile does not reflect different policy start dates.&lt;/p&gt;&lt;p&gt;To model this behavior correctly, the project method should be used, as it regenerates the NB profile for each month’s batch of new business. This ensures that each policy reflects the correct projection period and aligns with the actual financial calendar.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;But What About Performance?&lt;/h3&gt;&lt;p&gt;It’s true that the project method is significantly SLOWER than the cross multiplication method. Because Prophet regenerates the NB profile for each month in the sales file, a 3-year projection (i.e., 36 monthly sales points) means Prophet must generate and project 36 separate sets of NB profiles.&lt;/p&gt;&lt;p&gt;As a rule of thumb, you can expect the project method to take roughly 36 times longer than the cross multiplication method for a 3-year horizon. Naturally, this extended run time becomes a key consideration for modelers.&lt;/p&gt;&lt;p&gt;To manage performance while maintaining accuracy, I recommend using &lt;b&gt;grouped model points&lt;/b&gt; when applying the project method. By grouping similar model points before generating the NB profile, you can significantly reduce the volume of data while still capturing the essential patterns of new business.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Wrap Up&lt;/h2&gt;&lt;p&gt;Choosing between the cross multiplication method and the project method isn’t just a matter of run time—it’s about choosing the right method to reflect your business reality.&lt;/p&gt;&lt;p&gt;For Family Takaful products, where profit and surplus sharing often follow a fixed calendar cycle, the project method is the more accurate approach. While it does come with a performance trade-off, this can be managed with proper grouping techniques.&lt;/p&gt;&lt;p&gt;Ultimately, using the right NB processing method ensures your projections are not only technically correct but also aligned with the true business mechanics of your products.&lt;/p&gt;&lt;div align=&quot;center&quot;&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/qTxi8m9uRY4?si=WA1Mz45oLTqpNrtN&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p&gt;&lt;b&gt;Related Posts:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-01-enum.html&quot;&gt;Prophet Modelling Technique (1): Enumerations&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Prophet Modelling Technique (2): New Business Processing&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-03-calc-loop.html&quot;&gt;Prophet Modelling Technique (3): Calculation Looping&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-04-spcode.html&quot;&gt;Prophet Modelling Technique (4): SPCODE&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/4609553047026298470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-02-nb-processing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/4609553047026298470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/4609553047026298470'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-02-nb-processing.html' title='Prophet Modelling Technique (2): New Business Processing'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4IQyZxZYlEccQ1lwRStwXgF504q8ja9oubhVX4xlBj9t1Vb20CFcslZwrjBK_A-WqoVJ5Q_tMzte3S1RpmXJNsnvXw2uJ5mkdBEH0PBa-IJWKzVJhFddg1eGCr3VYwR085SCIYEt1w7uzOxLnd6eYehFriDLk8M7ZsB4Ob1QhshLkvgY23P0gkM_KBkQ/s72-w640-h426-c/img_prophet_techq_02_nb_process.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-5947899924499663185</id><published>2025-05-05T12:15:00.007+08:00</published><updated>2026-05-21T21:51:40.907+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>Prophet Modelling Technique (1): Enumerations</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5BkABESED-oqhlpp5t3inIWollS4L49nNR9us5V8dET0g7-3PF7TB9lkviZqVQ2OyWK5ctHlcDehAU9LFicp11LBxI9ynw5d7D9tnp7l-Lqqusph27KzQLUSJqA3M66aQoJXk5CJnWZyMEGpLmGzmJjLRnj2kOTxqS827l881YrsJDxITfwEG6_FCFuU/s1040/img_prophet_techq_01_enum.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;693&quot; data-original-width=&quot;1040&quot; height=&quot;427&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5BkABESED-oqhlpp5t3inIWollS4L49nNR9us5V8dET0g7-3PF7TB9lkviZqVQ2OyWK5ctHlcDehAU9LFicp11LBxI9ynw5d7D9tnp7l-Lqqusph27KzQLUSJqA3M66aQoJXk5CJnWZyMEGpLmGzmJjLRnj2kOTxqS827l881YrsJDxITfwEG6_FCFuU/w640-h427/img_prophet_techq_01_enum.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;If you’ve upgraded your Prophet version to Release 2024 Q4, you might have noticed a new and helpful feature: you can now define a variable as an &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;enumeration&lt;/span&gt;&lt;/b&gt; type—in addition to the usual number and text types. (Prefer video? View the &lt;a href=&quot;https://youtu.be/UX40RpdlPCM&quot; target=&quot;_blank&quot;&gt;video&lt;/a&gt; for this post!)&lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you’re not familiar with enumerations, let me briefly explain. In simple terms, an enumeration works like a two-dimensional array. The first dimension is a sequence of integers starting from 0, and the second is the corresponding text value. You can easily move between the two within the same pairing—get the text from an integer, or the integer from a text value.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let’s say we set up an enumeration for IFRS17 discount rates and call it &lt;span style=&quot;font-family: courier;&quot;&gt;IFRS_DISC&lt;/span&gt;:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;The first pairing is 1 (integer) and “LIR” (text), for locked-in rates.&amp;nbsp;&lt;/li&gt;&lt;li&gt;The second pairing is 2 (integer) and “VIR” (text), for current rates.&amp;nbsp;&lt;/li&gt;&lt;li&gt;We can refer to them using object-like notation: &lt;span style=&quot;font-family: courier;&quot;&gt;IFRS_DISC.LIR&lt;/span&gt; and &lt;span style=&quot;font-family: courier;&quot;&gt;IFRS_DISC.VIR&lt;/span&gt;—similar to how it works in object-oriented programming (“OPP”) in VBA.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Prophet provides functions to handle these conversions. For example, you can use &lt;span style=&quot;font-family: courier;&quot;&gt;ENUM_TO_INT&lt;/span&gt; and &lt;span style=&quot;font-family: courier;&quot;&gt;ENUM_TO_TEXT&lt;/span&gt; to get 1 and &quot;LIR&quot; from &lt;span style=&quot;font-family: courier;&quot;&gt;IFRS_DISC.LIR&lt;/span&gt;. You can also convert an integer or a text value to an enumeration using &lt;span style=&quot;font-family: courier;&quot;&gt;INT_TO_ENUM&lt;/span&gt; and &lt;span style=&quot;font-family: courier;&quot;&gt;TEXT_TO_ENUM&lt;/span&gt;.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So when should we use enumerations in our Prophet coding?

In my view, enumerations make variable definitions much more readable. Instead of using raw values like 0, 1, or 2, you can make your conditions clearer. For example:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;b&gt;Without enumeration:&lt;/b&gt; &lt;span style=&quot;font-family: courier;&quot;&gt;IF CALC_LOOP = 1 THEN&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;With enumeration:&lt;/b&gt; &lt;span style=&quot;font-family: courier;&quot;&gt;IF CALC_LOOP = ENUM_TO_INT(DISC_TYP.LIR) THEN&lt;/span&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Using enumeration makes the logic more transparent—you don’t have to remember what the numbers stand for. Plus, since enumerations must be defined under Workspace Objects, it also helps reduce manual errors.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With enumeration now supported as a variable type, we can streamline our logic even further. Going back to the earlier example:&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;You could create a new variable that automatically converts &lt;span style=&quot;font-family: courier;&quot;&gt;CALC_LOOP&lt;/span&gt; into an enumeration, say &lt;span style=&quot;font-family: courier;&quot;&gt;CALC_DISC&lt;/span&gt;.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Then, your condition becomes as simple as: &lt;span style=&quot;font-family: courier;&quot;&gt;IF CALC_DISC = DISC_TYP.LIR THEN&lt;/span&gt;, with no need for conversion functions.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;There’s another useful application—enumeration variables can help with table suffixes that need to vary by &lt;span style=&quot;font-family: courier;&quot;&gt;t&lt;/span&gt; or &lt;span style=&quot;font-family: courier;&quot;&gt;CALC_LOOP&lt;/span&gt;. As many of you know, text variables in Prophet can&#39;t directly depend on &lt;span style=&quot;font-family: courier;&quot;&gt;t&lt;/span&gt; or &lt;span style=&quot;font-family: courier;&quot;&gt;CALC_LOOP&lt;/span&gt;. But with the new &lt;span style=&quot;font-family: courier;&quot;&gt;CALC_DISC&lt;/span&gt; variable, you can derive a suffix like this:
&lt;span style=&quot;font-family: courier;&quot;&gt;&quot;ifrs_disc_&quot; + ENUM_TO_TEXT(CALC_DISC) + &quot;_pc&quot;&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Wrap Up&amp;nbsp;&lt;/h4&gt;&lt;div&gt;The addition of enumeration as a variable type in Prophet is a small but meaningful improvement. The use of enumerations makes our code cleaner, easier to understand, and less prone to errors. If you haven’t used it yet, give it a try—you might find it a simple way to bring more structure and clarity into your Prophet coding.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/UX40RpdlPCM?si=kGE4DjQuBb1znK4i&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;b&gt;Related Posts:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Prophet Modelling Technique (1): Enumerations&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-02-nb-processing.html&quot;&gt;Prophet Modelling Technique (2): New Business Processing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-03-calc-loop.html&quot;&gt;Prophet Modelling Technique (3): Calculation Looping&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-04-spcode.html&quot;&gt;Prophet Modelling Technique (4): SPCODE&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/5947899924499663185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-01-enum.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/5947899924499663185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/5947899924499663185'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2025/05/prophet-techq-01-enum.html' title='Prophet Modelling Technique (1): Enumerations'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5BkABESED-oqhlpp5t3inIWollS4L49nNR9us5V8dET0g7-3PF7TB9lkviZqVQ2OyWK5ctHlcDehAU9LFicp11LBxI9ynw5d7D9tnp7l-Lqqusph27KzQLUSJqA3M66aQoJXk5CJnWZyMEGpLmGzmJjLRnj2kOTxqS827l881YrsJDxITfwEG6_FCFuU/s72-w640-h427-c/img_prophet_techq_01_enum.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-345658952993452268</id><published>2025-01-03T12:29:00.002+08:00</published><updated>2026-05-26T11:47:42.564+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Health Insurance"/><title type='text'>Rising Medical Insurance Premiums (4) – Additional Metrics in Claim Analysis</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisqXzVfwUUJSfsmnJlma-9iD_NkJDWB2tSEyfiJh6vkbUjnrYlxeLHm_eYUfazKYX7R-iXqwNqVJdK8xLEH0Ex3IQkwhd6ShFHFXkiKU3rDrgztuQvNv6785rmElUbmgJCtBvrUVPgcB2JkDUk_z_sRz3qzgjLil-IKtKK-Y5xFAf1es6ZxetDJNjoR5U/s1024/med-ins-prem-incr05.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1024&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisqXzVfwUUJSfsmnJlma-9iD_NkJDWB2tSEyfiJh6vkbUjnrYlxeLHm_eYUfazKYX7R-iXqwNqVJdK8xLEH0Ex3IQkwhd6ShFHFXkiKU3rDrgztuQvNv6785rmElUbmgJCtBvrUVPgcB2JkDUk_z_sRz3qzgjLil-IKtKK-Y5xFAf1es6ZxetDJNjoR5U/w640-h480/med-ins-prem-incr05.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;In one of the discussions with my team about medical insurance, I emphasized that &lt;b&gt;claim data is one of the most valuable assets&lt;/b&gt;&amp;nbsp;for insurance companies. Even if insurers engage third-party administrators (&quot;TPAs&quot;) to handle claim processing, it’s crucial for them to retain access to detailed claim data – and at a granular level.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Loss Ratio Alone Isn’t Enough&amp;nbsp;&lt;/h3&gt;&lt;p&gt;When it comes to claim analysis for medical insurance, many of us tend to focus solely on &lt;b&gt;loss ratio&lt;/b&gt;. While useful, loss ratio analysis primarily evaluates product profitability – offering a high-level view of whether a product is making or losing money. Of course, we can refine this by analyzing profitability across different plans or age groups.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;But here’s the catch – loss ratio alone isn’t enough for medical insurance products that reimburse hospitalization and surgical expenses. Why? Because loss ratio reflects the &lt;b&gt;end result&lt;/b&gt;. It doesn’t shed light on the underlying claim experience or the drivers behind those results.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;So, how should we approach claim analysis for medical insurance? I recommend incorporating at least four key metrics – and examining them across different dimensions (e.g., plans, age groups, gender):&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Loss ratio&lt;/li&gt;&lt;li&gt;Incidence rate&lt;/li&gt;&lt;li&gt;Average claim paid&lt;/li&gt;&lt;li&gt;Average length of stay (for hospitalization)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;If you studied actuarial science before, you might recall the formula for expected aggregate loss:&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;E(S) = E(N) × E(X)&lt;/p&gt;&lt;p&gt;In simple terms, the above formula explains the total claims depends on frequency of claims (how often claims occur) and the severity (how large each claim is).&amp;nbsp; Incidence rate and average claim paid correspond directly to these two components – frequency and severity.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Understanding the Drivers of Claims&amp;nbsp;&amp;nbsp;&lt;/h3&gt;&lt;p&gt;When aggregate claims rise – leading to an increased loss ratio (assuming premium rates remain unchanged) – analyzing these additional metrics helps identify the root cause. Is the rise driven by higher incidence rates, larger average claim amounts, or both?&lt;/p&gt;&lt;p&gt;By breaking down the drivers behind rising claims, we gain deeper insight into the underlying claim experience. And with that understanding, we can make more informed decisions – beyond simply reacting to loss ratios.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;As many of us know, increasing premiums alone won’t solve the problem.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Further reading:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2024/12/med-prem-incr01.html&quot;&gt;Rising Medical Insurance Premiums (1) – Is Emotion Clouding the Discussion?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2024/12/med-ins-prem-incr02.html&quot;&gt;Rising Medical Insurance Premiums (2) – Why Small Claims and Big Tails Matter?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2024/12/med-ins-prem-incr03.html&quot;&gt;Rising Medical Insurance Premiums (3) – Is Medical Inflation in General a Fair Benchmark?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Rising Medical Insurance Premiums (4) – Additional Metrics in Claim Analysis&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;b&gt;Note:&lt;/b&gt;&amp;nbsp;The image is generated using Grok AI.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/345658952993452268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2025/01/med-prem-incr02.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/345658952993452268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/345658952993452268'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2025/01/med-prem-incr02.html' title='Rising Medical Insurance Premiums (4) – Additional Metrics in Claim Analysis'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisqXzVfwUUJSfsmnJlma-9iD_NkJDWB2tSEyfiJh6vkbUjnrYlxeLHm_eYUfazKYX7R-iXqwNqVJdK8xLEH0Ex3IQkwhd6ShFHFXkiKU3rDrgztuQvNv6785rmElUbmgJCtBvrUVPgcB2JkDUk_z_sRz3qzgjLil-IKtKK-Y5xFAf1es6ZxetDJNjoR5U/s72-w640-h480-c/med-ins-prem-incr05.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-6018274846281866535</id><published>2024-12-30T18:07:00.003+08:00</published><updated>2026-05-26T11:50:16.388+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Health Insurance"/><title type='text'>Rising Medical Insurance Premiums (3) – Is Medical Inflation in General a Fair Benchmark?</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGem1FPP6Sw2Z1ULTtFeXjyXUnkZQMIYqrQpOkRuc8H4MydUkBrCAYse-mdYmcYvU8s3BryaP-4wmEP8xl91W6iIemUKSepjLIInr3rgndt3Q73oZczvyZ_YGxO44Wt8-uWwVfd-mA3-EVkmQsFLEg2gtINyx9qKv6Uw2hpbJJrZ5yv2AZgH3jgZcKoiU/s1024/med-ins-prem-incr04.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1024&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGem1FPP6Sw2Z1ULTtFeXjyXUnkZQMIYqrQpOkRuc8H4MydUkBrCAYse-mdYmcYvU8s3BryaP-4wmEP8xl91W6iIemUKSepjLIInr3rgndt3Q73oZczvyZ_YGxO44Wt8-uWwVfd-mA3-EVkmQsFLEg2gtINyx9qKv6Uw2hpbJJrZ5yv2AZgH3jgZcKoiU/w640-h480/med-ins-prem-incr04.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;In its recent &lt;a href=&quot;https://www.bnm.gov.my/-/mhit-pr&quot; target=&quot;_blank&quot;&gt;announcement on medical insurance&lt;/a&gt;, Bank Negara Malaysia highlighted Malaysia’s medical inflation rate of 15%, which surpasses the average across global and Asia Pacific region. However, when I consider the rate of increase in medical insurance premiums, I question whether this 15% figure is truly a suitable benchmark – are we really comparing apples to apples?&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Before diving into my thoughts on this, I believe it’s helpful to explain the concept of &quot;&lt;b&gt;insured lives&lt;/b&gt;&quot; experience.&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;If you work in life insurance or family takaful, you may be familiar with terms like &quot;M8388&quot; or &quot;M1115&quot;. These abbreviations represent mortality tables derived from claim experiences of insured lives in Malaysia’s life insurance industry. The numbers in these abbreviations aren’t secret codes – they simply refer to the years in which the mortality studies were conducted. For example, &quot;M8388&quot; reflects mortality experience observed between 1983 and 1988 (a 5-year period).&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Why Conduct Studies on Insured Lives?&amp;nbsp;&amp;nbsp;&lt;/h3&gt;&lt;p&gt;Why does the life insurance industry conduct these studies? Couldn’t we just rely on mortality data from the general population? The answer, by common sense and theory, is &quot;NO&quot;. Insured lives typically experience better mortality rates because life insurance companies conduct underwriting assessments before approving coverage. If someone applying for insurance has a poor medical history or engages in a high-risk occupation, their application may be declined.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;This makes sense, right? Now let’s circle back to medical insurance. Just like life insurance, underwriting assessments are conducted before someone is accepted for medical coverage. Logically, we might expect similar results – that insured individuals should experience lower healthcare costs.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;The Reality: A Mixed Answer&amp;nbsp;&lt;/h3&gt;&lt;p&gt;The answer to whether this applies to medical insurance is &quot;YES&quot;... and &quot;NO&quot;.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;While underwriting helps filter out applicants with pre-existing conditions or high-risk occupations, there’s an element unique to medical insurance that’s harder to control – &lt;b&gt;HUMAN&lt;/b&gt; behavior and decision-making.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;For products like term insurance, which covers death or total permanent disability (&quot;TPD&quot;), the insured events are generally random and independent. In most cases, people don’t actively seek to experience death or TPD to claim insurance.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;However, the opposite may apply to medical insurance. Individuals with coverage might incur higher medical costs simply because they are insured.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;The Insured Lives, Hospitals, and Insurers Dynamic&amp;nbsp;&amp;nbsp;&lt;/h3&gt;&lt;p&gt;There’s an imbalance between insured individuals, hospitals, and insurers. When insurers lack the authority to adequately control claimable costs, the following scenarios often occur:&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Unnecessary medical exams, treatments, or hospitalizations – sometimes driven by a desire to qualify for claims.&lt;/li&gt;&lt;li&gt;Dual pricing – different rates are applied to medical services covered by insurance versus those paid out-of-pocket.&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;These factors can drive medical insurance inflation at a higher rate than the medical inflation in general. Additionally, I wonder if the 15% medical inflation rate cited by Bank Negara includes areas like general practitioners (&quot;GP&quot;) and dental services – areas typically not covered by individual medical insurance policies.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I’m genuinely curious to learn more about how this 15% medical inflation rate was derived.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Further reading:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2024/12/med-prem-incr01.html&quot;&gt;Rising Medical Insurance Premiums (1) – Is Emotion Clouding the Discussion?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2024/12/med-ins-prem-incr02.html&quot;&gt;Rising Medical Insurance Premiums (2) – Why Small Claims and Big Tails Matter?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Rising Medical Insurance Premiums (3) – Is Medical Inflation in General a Fair Benchmark?&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/01/med-prem-incr02.html&quot;&gt;Rising Medical Insurance Premiums (4) – Additional Metrics in Claim Analysis&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;b&gt;Note:&lt;/b&gt;&amp;nbsp;The image is generated using Grok AI.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/6018274846281866535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2024/12/med-ins-prem-incr03.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/6018274846281866535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/6018274846281866535'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2024/12/med-ins-prem-incr03.html' title='Rising Medical Insurance Premiums (3) – Is Medical Inflation in General a Fair Benchmark?'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGem1FPP6Sw2Z1ULTtFeXjyXUnkZQMIYqrQpOkRuc8H4MydUkBrCAYse-mdYmcYvU8s3BryaP-4wmEP8xl91W6iIemUKSepjLIInr3rgndt3Q73oZczvyZ_YGxO44Wt8-uWwVfd-mA3-EVkmQsFLEg2gtINyx9qKv6Uw2hpbJJrZ5yv2AZgH3jgZcKoiU/s72-w640-h480-c/med-ins-prem-incr04.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-2841679701386155450</id><published>2024-12-26T23:00:00.004+08:00</published><updated>2026-05-26T11:50:04.312+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Health Insurance"/><title type='text'>Rising Medical Insurance Premiums (2) – Why Small Claims and Big Tails Matter?</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVDr0eMCh9CvhrHEbHQmEPpgvFFUqYnObf9Qew_W46T786nIVn_jXBEvwSvO2Aj9kB9yOBVyR2BIoRNXrwqPti2Dig7tGcc1U-v8ig-OeuZrcOH8Z9JD1eOUSB1KtDH6pRzL6rXlytWchPElfVBVME4G31tmTopQvNZZlZjuPPXF4XrDruGUq6dxgCTUY/s1024/med-ins-prem-incr02.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1024&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVDr0eMCh9CvhrHEbHQmEPpgvFFUqYnObf9Qew_W46T786nIVn_jXBEvwSvO2Aj9kB9yOBVyR2BIoRNXrwqPti2Dig7tGcc1U-v8ig-OeuZrcOH8Z9JD1eOUSB1KtDH6pRzL6rXlytWchPElfVBVME4G31tmTopQvNZZlZjuPPXF4XrDruGUq6dxgCTUY/w640-h480/med-ins-prem-incr02.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Bank Negara Malaysia has announced interim measures to address rising medical insurance premiums. While I can’t foresee how some of these measures will resolve the underlying issues, I am particularly curious to see how the Diagnosis Related Group (&quot;DRG&quot;) payment model might help tackle the root cause.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Reflecting on my experience with my first actuarial employer, I recall being responsible for preparing claim analyses for individual medical insurance. One of the more interesting aspects of this work was constructing claim distributions based on actual experience. While the results were typically presented in tables, I often created histograms to better illustrate the distribution – in my opinion, the visual representation provided deeper insights into the claim patterns.&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;A Right-Skewed Reality&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9iqKWLJk3lJj3R1kge3rf881k2-kUUtrPY4yGpUbAZ-y9WcPZJhZShkYmzopVWBmLSjtD4AesQyia4DiqaA7k1WpInK-EDeRnMg56hApW_0cpXwTMHdP2gwPC7y43NqErBhm6D9unnCwUngEan2KMysJkab2GUdxsWYUH_vK3Zl4J-ktCv8N0GaxYK40/s1653/med-ins-prem-incr03.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;992&quot; data-original-width=&quot;1653&quot; height=&quot;384&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9iqKWLJk3lJj3R1kge3rf881k2-kUUtrPY4yGpUbAZ-y9WcPZJhZShkYmzopVWBmLSjtD4AesQyia4DiqaA7k1WpInK-EDeRnMg56hApW_0cpXwTMHdP2gwPC7y43NqErBhm6D9unnCwUngEan2KMysJkab2GUdxsWYUH_vK3Zl4J-ktCv8N0GaxYK40/w640-h384/med-ins-prem-incr03.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;So, what did the histogram reveal?&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;It consistently showed a &lt;b&gt;right-skewed&lt;/b&gt; distribution. In simpler terms, &lt;b&gt;most claims were for relatively small amounts&lt;/b&gt;, often tied to minor ailments. Picture this – the bulk of claims fell into categories like “below 1,000” or “1,000 to 2,000.” (Of course, these thresholds have likely shifted over the past 20 years.)&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;At first glance, having lower average claims might seem like good news. But don’t celebrate too quickly. This pattern can sometimes indicate potential abuse of medical insurance – which is precisely why sufficiently high deductibles are essential. For instance, patients might opt for hospitalization solely to qualify for claims. When this type of abuse becomes prevalent (reflected in higher skewness), the cumulative claim amount that needs to be spread across all policyholders increases significantly.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;The Tail That Stings&amp;nbsp;&lt;/h3&gt;&lt;p&gt;Another challenge in medical insurance lies in the &quot;&lt;b&gt;TAIL&lt;/b&gt;&quot; of the claim distribution – those large, infrequent claims that can disrupt the entire portfolio. Unlike other insurance products, where catastrophic claims are rare (perhaps once or never in our entire career), large medical claims are far more common.&amp;nbsp;&lt;/p&gt;&lt;p&gt;I vividly remember encountering a claim that instantly maxed out the annual limit of the highest plan at the time. Back then, the limit stood at 80,000, but this particular claim exceeded 100,000.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Was it a one-off case? Unfortunately not. I encountered such claims more than once.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;In theory, annual limits should help control these tail-end risks. However, the current trend in Malaysia’s medical insurance market tells a different story. Today, annual limits of 1,000,000 are fairly standard – a direct result of market competition. While this high limit doesn’t affect most claims (since the average claim amount is far below 1,000,000), it significantly increases exposure to large claims.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Consider this example:&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;The average premium per policy is RM1,000.&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;A single large claim of RM500,000 could deplete premiums from 500 policyholders.&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;At this point, you might wonder – shouldn’t larger portfolios benefit from economies of scale?&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Logically, yes. But based on past observations, I’m not convinced this holds true for medical insurance. In fact, I found out that the number of policies in the portfolio grew, I noticed an odd trend – the loss ratio increased.&lt;/p&gt;&lt;p&gt;Strange, isn’t it? Unfortunately, I didn’t get the chance to fully investigate the root cause at the time.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Further reading:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2024/12/med-prem-incr01.html&quot;&gt;Rising Medical Insurance Premiums (1) – Is Emotion Clouding the Discussion?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Rising Medical Insurance Premiums (2) – Why Small Claims and Big Tails Matter?&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2024/12/med-ins-prem-incr03.html&quot;&gt;Rising Medical Insurance Premiums (3) – Is Medical Inflation in General a Fair Benchmark?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/01/med-prem-incr02.html&quot;&gt;Rising Medical Insurance Premiums (4) – Additional Metrics in Claim Analysis&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt;&amp;nbsp;The first image is generated using Grok AI.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/2841679701386155450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2024/12/med-ins-prem-incr02.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/2841679701386155450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/2841679701386155450'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2024/12/med-ins-prem-incr02.html' title='Rising Medical Insurance Premiums (2) – Why Small Claims and Big Tails Matter?'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVDr0eMCh9CvhrHEbHQmEPpgvFFUqYnObf9Qew_W46T786nIVn_jXBEvwSvO2Aj9kB9yOBVyR2BIoRNXrwqPti2Dig7tGcc1U-v8ig-OeuZrcOH8Z9JD1eOUSB1KtDH6pRzL6rXlytWchPElfVBVME4G31tmTopQvNZZlZjuPPXF4XrDruGUq6dxgCTUY/s72-w640-h480-c/med-ins-prem-incr02.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-5887181666296598990</id><published>2024-12-26T22:45:00.004+08:00</published><updated>2026-05-26T11:49:46.655+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Health Insurance"/><title type='text'>Rising Medical Insurance Premiums (1) – Is Emotion Clouding the Discussion?</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHqFm63O8Aj5hHAFoLgRF9nUGNsLL2xFWaYTgIgHZe1kG8eh4D6COCYIhwLappmtVR585hK_gC_wzjJozbtwNzhioIOEv9Oqm_m0WsfckZjjmSau7X9vuvXnU7pZ8PDOCvyLVCX7PIUuPmb7_pYZRFNw4rFqb9jeurQBMg91iIpV5C6LUTzGbRm8mmp1o/s1024/med-ins-prem-incr01.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1024&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHqFm63O8Aj5hHAFoLgRF9nUGNsLL2xFWaYTgIgHZe1kG8eh4D6COCYIhwLappmtVR585hK_gC_wzjJozbtwNzhioIOEv9Oqm_m0WsfckZjjmSau7X9vuvXnU7pZ8PDOCvyLVCX7PIUuPmb7_pYZRFNw4rFqb9jeurQBMg91iIpV5C6LUTzGbRm8mmp1o/w640-h480/med-ins-prem-incr01.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Medical insurance has become one of the hottest topics in Malaysia’s insurance and Takaful industry lately. Some members of parliament (MPs) have urged Bank Negara Malaysia to impose a cap on rising medical insurance premiums. In the process, certain MPs have portrayed insurance and Takaful companies as profit-driven entities operating at the expense of public interest – with social media posts framing the debate as a &quot;Rakyat Win.&quot;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I’d like to share a few general thoughts on this issue, steering away from technical details for now (perhaps I’ll dive into those another time). Here are a few perspectives we can take away from the recent developments:&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;1. Informed Decisions&lt;/h4&gt;&lt;p&gt;For those of us working in corporate environments, the term &quot;informed decisions&quot; is second nature. When making strategic decisions, we gather sufficient information to ensure we’re on solid ground. The same logic applies here – I wonder if the MPs involved consulted with insurance or actuarial associations to fully understand the situation? Decisions made without the full picture may lead to unintended consequences.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;2. Emotional Bias&lt;/h4&gt;&lt;p&gt;Bringing emotion into discussions introduces bias, which rarely leads to productive outcomes. When discussions shift into arguments driven by emotion, the goal becomes winning rather than seeking truth or solutions. Arguments centered around slogans like &quot;Rakyat Win&quot; can narrow the focus, making it difficult to explore alternative solutions that could benefit all parties involved.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;3. Blind Spots&amp;nbsp;&amp;nbsp;&lt;/h4&gt;&lt;p&gt;Some issues are inherently technical – and medical insurance is no exception. Unlike simpler products such as term or endowment life insurance, medical insurance involves complex arrangements requiring specialized knowledge. Without addressing the root causes of rising premiums, proposed solutions risk exacerbating the problem rather than solving it.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Frankly, I’m a little concerned about potential measures. If insurers or Takaful operators are eventually forced to withdraw from medical insurance portfolios due to unsustainable losses, the public may face fewer options. It’s basic business sense to withdraw unprofitable products – and it seems unreasonable to expect companies to continuously subsidize loss-making products with profits from other lines of business.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Further reading:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Rising Medical Insurance Premiums (1) – Is Emotion Clouding the Discussion?&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2024/12/med-ins-prem-incr02.html&quot;&gt;Rising Medical Insurance Premiums (2) – Why Small Claims and Big Tails Matter?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2024/12/med-ins-prem-incr03.html&quot;&gt;Rising Medical Insurance Premiums (3) – Is Medical Inflation in General a Fair Benchmark?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2025/01/med-prem-incr02.html&quot;&gt;Rising Medical Insurance Premiums (4) – Additional Metrics in Claim Analysis&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; The above image is generated using Grok AI.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/5887181666296598990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2024/12/med-prem-incr01.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/5887181666296598990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/5887181666296598990'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2024/12/med-prem-incr01.html' title='Rising Medical Insurance Premiums (1) – Is Emotion Clouding the Discussion?'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHqFm63O8Aj5hHAFoLgRF9nUGNsLL2xFWaYTgIgHZe1kG8eh4D6COCYIhwLappmtVR585hK_gC_wzjJozbtwNzhioIOEv9Oqm_m0WsfckZjjmSau7X9vuvXnU7pZ8PDOCvyLVCX7PIUuPmb7_pYZRFNw4rFqb9jeurQBMg91iIpV5C6LUTzGbRm8mmp1o/s72-w640-h480-c/med-ins-prem-incr01.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-6575063704654635865</id><published>2024-10-28T09:15:00.006+08:00</published><updated>2024-10-31T15:26:59.132+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>What  Makes a &quot;Good&quot; Prophet Model? (2) - Reduce Redundancy</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4wFVuFKdZk_fpfiloiqy_Y1gPl5-Mlbu69qEr_QXmjg_I4j-xw0yTbMg3-Gf4GtBek5-i2clY8d9ZgzKeLDWWyBPcE-cf7CeE8HwuAn5fkzZ0olJH_zjyS_nmK_4EVM1ui5PNRpIp3BhyphenhyphenZ36Swv3dUoDOFI9kfcynsT00f8-LtKAQl6vTscIS9srqdVE/s1024/img_good_prophet_02a.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;576&quot; data-original-width=&quot;1024&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4wFVuFKdZk_fpfiloiqy_Y1gPl5-Mlbu69qEr_QXmjg_I4j-xw0yTbMg3-Gf4GtBek5-i2clY8d9ZgzKeLDWWyBPcE-cf7CeE8HwuAn5fkzZ0olJH_zjyS_nmK_4EVM1ui5PNRpIp3BhyphenhyphenZ36Swv3dUoDOFI9kfcynsT00f8-LtKAQl6vTscIS9srqdVE/w640-h360/img_good_prophet_02a.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;In my &lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2024/10/Good-Prophet-01-Avoid-Black-Box.html&quot;&gt;last post&lt;/a&gt;, we discussed the importance of avoiding “black box” Prophet models—models so complex and opaque that users struggle to understand the underlying calculations and dependencies. Without clarity, these models can lead to errors, inefficiencies, and unwelcome surprises when something goes wrong.&lt;/p&gt;&lt;p&gt;Today, let’s shift our focus to another characteristic of a &quot;good&quot; Prophet model: &lt;b&gt;keeping redundancy low&lt;/b&gt;. Let&#39;s make the idea simple, redundancy in a Prophet model refers to variables in the model’s library that aren’t actually used in any products within the workspace. If a Prophet model has high redundancy, this means it has thousands of variables available but only a fraction actively contributing to the calculations.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;How to Measure Level of Redundancy?&lt;/h3&gt;&lt;p&gt;To measure redundancy, theoretically we can look at the &lt;b&gt;ratio of variables used by products to the total number of variables in the library&lt;/b&gt;. A lower percentage suggests higher redundancy. Fortunately, getting no. of variables used&amp;nbsp;&amp;nbsp;of variables used by products in the workspace isn’t just guesswork; we can use Prophet’s &lt;b&gt;diagnostic files&lt;/b&gt; to find the exact numbers. Of course, if we can consider indicators and variable definitions that aren’t used by any products, the metric can provide a fuller picture.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Although we can get the no. of variables used by all products from the diagnostic files, some variables may be set to zero or used as bypassing results from other variables, obscuring whether they’re truly in use. This makes it harder to understand the &quot;REAL&quot; level of redundancy in the Prophet model.&lt;/p&gt;&lt;p&gt;From my experience building Prophet models from scratch—particularly before the implementation of IFRS 17—most models needed only around 1,200 to 1,500 variables to cover the full range of ordinary and investment-linked products (same goes to family takaful products, which are more complex that conventional life insurance). This benchmark gives us a rough idea of how many variables are genuinely necessary, and it highlights just how much room for optimization there may be in models that exceed this range.&lt;/p&gt;&lt;p&gt;For example, I’ve seen many Prophet models with variable counts as high as 4,000 to 5,000 or more, but to keep things simple, let’s use a 4,500-variable model for illustration. If we find that only 1,500 of those variables are active in calculations, then just 33.33% are being used, while 66.67% of variables serve no functional purpose in the model. While this is an estimate, it shows how widespread redundancy can be in many models.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Does It Really Matters? Yes, It Does.&lt;/h3&gt;&lt;p&gt;At this point, you might be wondering, “What’s the problem with redundancy? I&#39;m not using those variables anyway.” A fair question! If it’s harmless, why should we care?&lt;/p&gt;&lt;p&gt;Unfortunately, redundancy &lt;b&gt;DOES&lt;/b&gt; bring issues to our Prophet models. Here’s something to consider: By referring to the above example, that means you’re only utilizing about 33% of what’s in the model. This raises a few important questions:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Do you understand what the other 3,000 variables are for?&lt;/li&gt;&lt;li&gt;If you make a modification to the library, how confident are you that it won’t impact any of those 3,000 unused variables?&lt;/li&gt;&lt;li&gt;Are you certain those 3,000 variables don’t have hidden dependencies on the 1,500 active ones?&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;One of the challenges with redundancy is that unused variables today won’t necessarily stay unused forever. When we set up a new product, we may need to include an indicator or a variable that hasn’t been used previously, pulling new variables and variable definitions into the active calculation mix. This often happens when a new product design calls for something unique or tailored that wasn’t part of our prior product setups.&lt;/p&gt;&lt;p&gt;Here’s where the real risk kicks in: those newly introduced variables might interact with existing ones that are already in use by other products. This can lead to unforeseen interactions or even conflicts in the calculations, especially if those pre-existing variables have underlying definitions that shift as new elements come into play.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This is why we can’t simply ignore variables that are currently inactive in our model. As our product lineup evolves, those seemingly dormant variables could enter the calculation stream.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Does Your Prophet Model Have Excessive Patching?&lt;/h3&gt;&lt;p&gt;For Prophet models with high level of redundancy, &lt;b&gt;excessive patching has become a common practice&lt;/b&gt;. This often leading to layers of replicated variable definitions and added indicators used solely to bypass existing settings. For example, an expression might end with an “&lt;b&gt;AND BYPASS_INDICATOR&lt;/b&gt;” to sidestep a variable definition rather than addressing the core setup. How about the existing variable definitions without the bypassing Indicators? Well, I think most Prophet modeler will tend to leave those variable definitions in the library - no choice, we DO NOT KNOW what will happen if we delete the existing variable definitions.&lt;/p&gt;&lt;p&gt;These temporary fixes may seem harmless, but they may create serious risks in the future. When Indicators that weren’t previously used suddenly come into play for a new product or new calculation requirements, they can trigger unexpected outcomes and calculation issues.&amp;nbsp;&lt;/p&gt;&lt;p&gt;When we use the bypassing Indicator in our Prophet models, we don&#39;t really solve the problems as a whole. We are only&amp;nbsp;&lt;b&gt;addressing only the symptoms of a problem&lt;/b&gt;, just like what is explained in a common Chinese idiom: &quot;treating a headache by curing the head, treating foot pain by curing the foot&quot;. When we incorporate such bypassing Indicator in the Prophet models, we are unable to add the Indictor into all required variables as there are too many variables to go through for a library with high level of redundancy.&lt;/p&gt;&lt;p&gt;To make mater worse, for Prophet models that cannot fully pass the technical validation using Prophet’s “Validate” function, it is hard to detect these issues in advance as patches may mask underlying errors that only surface later.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Conclusion&lt;/h3&gt;&lt;p&gt;Redundancy in Prophet models may seem benign at first glance, but as we&#39;ve explored, it brings risks and complexities that can hinder both model accuracy and maintainability. With too many unused variables, patching shortcuts, and bypass indicators, a model quickly becomes unwieldy and prone to errors—especially when new products enter the mix or new calculation requirements arise. By reducing redundancy, we’re not just keeping our Prophet models lean; we’re ensuring they remain effective, adaptable, and much easier to validate.&lt;/p&gt;&lt;p&gt;That&#39;s one of the reasons I recommend creating Prophet models from scratch, as well as avoiding centralization of Prophet models across different business units.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Related Posts:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2024/10/Good-Prophet-01-Avoid-Black-Box.html&quot;&gt;What Makes a “Good” Prophet Model? (1) - Avoid Black Box&lt;/a&gt;&lt;/li&gt;&lt;li&gt;What&amp;nbsp; Makes a &quot;Good&quot; Prophet Model? (2) - Reduce Redundancy&lt;/li&gt;&lt;/ol&gt;&lt;div align=&quot;center&quot;&gt;&lt;b&gt;Podcast Version:&lt;/b&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/k2Put_Meqi8?si=AvMBGH6CtLv-3sur&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/6575063704654635865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2024/10/Good-Prophet-02-Reduce-Redundancy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/6575063704654635865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/6575063704654635865'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2024/10/Good-Prophet-02-Reduce-Redundancy.html' title='What  Makes a &quot;Good&quot; Prophet Model? (2) - Reduce Redundancy'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4wFVuFKdZk_fpfiloiqy_Y1gPl5-Mlbu69qEr_QXmjg_I4j-xw0yTbMg3-Gf4GtBek5-i2clY8d9ZgzKeLDWWyBPcE-cf7CeE8HwuAn5fkzZ0olJH_zjyS_nmK_4EVM1ui5PNRpIp3BhyphenhyphenZ36Swv3dUoDOFI9kfcynsT00f8-LtKAQl6vTscIS9srqdVE/s72-w640-h360-c/img_good_prophet_02a.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-1075699043314690811</id><published>2024-10-19T14:05:00.004+08:00</published><updated>2024-10-28T09:18:48.672+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>What Makes a “Good” Prophet Model? (1) - Avoid Black Box</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijK3LQYpA3B3LsWr6DGQzC0aB4-jMIw_GPr9lwXOzN9K42yU4kwrC2LapfJCliXam5OUOZJ1USjDl-gSDDVkXCeNOhwE7LZeuO1gGgyuYXYlpFsBrVGuh2jmvkxFcyNOcYGZLsLluZv7A8VdUG85Jl6oPCt5iP34yQiPk91AbdLcRnr0-wB9O5MxCOTF4/s1080/img_prophet-01.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;617&quot; data-original-width=&quot;1080&quot; height=&quot;366&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijK3LQYpA3B3LsWr6DGQzC0aB4-jMIw_GPr9lwXOzN9K42yU4kwrC2LapfJCliXam5OUOZJ1USjDl-gSDDVkXCeNOhwE7LZeuO1gGgyuYXYlpFsBrVGuh2jmvkxFcyNOcYGZLsLluZv7A8VdUG85Jl6oPCt5iP34yQiPk91AbdLcRnr0-wB9O5MxCOTF4/w640-h366/img_prophet-01.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;If you&#39;re working in the valuation team of a life insurance company, chances are you&#39;ve spent a lot of time with Prophet. It’s that powerful tool we use for things like cash flow projections and calculating reserves. But here&#39;s the thing—how often do you really stop to think about whether the Prophet model you&#39;re using is a &lt;b&gt;&#39;GOOD&#39; Prophet model&lt;/b&gt;?&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;I&#39;ll be honest, in my first 10 years of working with Prophet, I was just like many of you—more of a &quot;user&quot; than a modeler. I’d input the data, run the numbers, and trust the results without really digging into the mechanics of how the model worked. Sound familiar?&lt;/p&gt;&lt;p&gt;At that time, the Prophet model I was using had thousands of variables—so many that it was impossible to study every single one in detail. Plus, there were tons of customized workarounds and coding tweaks added over time. And then it happened—I came face-to-face with the risk of using a &quot;black box&quot; model when I discovered a simple error buried within those thousands of variables.&amp;nbsp;&lt;/p&gt;&lt;p&gt;The issue? A simple division mistake: the denominator should have been the number of policies, but instead, it was set to 1. The result? A multi-million-dollar error that could have easily been avoided. That’s when I realized how crucial it is to really understand the models we rely on, and not just take them at face value.&lt;/p&gt;&lt;p&gt;In this first post of my &quot;What Made a &#39;Good&#39; Prophet Model?&quot; series, I’ll dive into how you can identify a BLACK BOX Prophet models, as well as the risks associated to such Prophet models.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Most Importantly, Avoid Black Box&lt;/h2&gt;&lt;p&gt;So, how can you tell if your Prophet model has turned into a black box? One way to find out is by asking yourself a couple of key questions:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Do you really &lt;b&gt;know&lt;/b&gt; how your Prophet model is set up?&lt;/li&gt;&lt;li&gt;Do you have any &lt;b&gt;documentation&lt;/b&gt; that explains how it’s designed?&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Setting up a Prophet model isn&#39;t just about plugging variables into the libraries. In actuarial models, variables are deeply interconnected. For instance, premium income depends on the number of in-force policies, which in turn depends on mortality rates. Mortality rates are influenced by attained age and gender, while attained age is based on entry age and policy duration. It’s like a chain reaction—everything is linked.&lt;/p&gt;&lt;p&gt;If you don’t understand the core modeling philosophy and infrastructure (I refer as the model &quot;backbone&quot;) behind your Prophet model, maintaining it effectively becomes almost impossible. Without this understanding, even small changes can become risky.&lt;/p&gt;&lt;p&gt;To make matters worse, if there’s no documentation laying out the design and philosophy behind the model, you’re left making &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;wild guesses&lt;/span&gt;&lt;/b&gt; whenever you need to modify something. It’s like crossing your fingers and hoping for the best. You make changes, and then... well, you pray that everything will work out fine. But that’s a dangerous game when millions of dollars are potentially at stake.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;So, What May Happen?&lt;/h2&gt;&lt;p&gt;When your Prophet model becomes a black box, it introduces several significant risks that can impact the accuracy, reliability, and maintainability of your actuarial work. Let’s break down some of the biggest risks:&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Risk 1: Difficulty Understanding How Calculations Are Made&lt;/h4&gt;&lt;p&gt;One of the most obvious risks is that you may not fully understand how your calculations are being done. When the model is too complex or poorly documented, it becomes almost challenging to follow the logic behind key outputs. This lack of transparency can leave you relying on results you don’t fully grasp, which is never a good position to be in.&lt;/p&gt;&lt;p&gt;In this situation, we must conduct more rigorous model testing to uncover issues that may be hidden in the dark, beyond our line of sight. We also need to ensure that the libraries we use can pass basic technical checks (the validation function) with 100% accuracy — I sometimes refer to this as ensuring that at the very least, the &quot;&lt;b&gt;grammar&lt;/b&gt;&quot; of all variables in the library is correct.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Risk 2: Hidden Errors Are Hard to Spot&lt;/h4&gt;&lt;p&gt;As I mentioned earlier in the introduction, I learned this risk the hard way. When models are too convoluted, even simple errors can go unnoticed. In my case, a basic division mistake resulted in a multi-million-dollar error, buried within thousands of variables. Identifying such mistakes is much harder when you don’t have a clear understanding of the model&#39;s structure.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Risk 3: Guesswork Leads to Unintentional Errors&lt;/h4&gt;&lt;p&gt;When we don’t have a solid understanding of how a Prophet model is set up, every change becomes a &lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;guessing game&lt;/b&gt;&lt;/span&gt;. You may need to make adjustments, but without clear documentation or insight into the model’s backbone, these changes can unintentionally create new errors. It’s a bit like tinkering with a car engine when you don’t fully understand how the parts fit together—things can go wrong fast.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Risk 4: Models Become More Complex and Eventually Unmanageable&lt;/h4&gt;&lt;p&gt;The more changes you make without understanding the model, the more complex it becomes. Especially when you’re forced to add a lot of workaround coding, the model can quickly spiral into something that’s beyond repair. I’ve seen this happen firsthand from my Prophet modelling projects —Prophet models that have become so tangled with customizations and tweaks that fixing or upgrading them was no longer feasible.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Risk 5: Unpredictable Model Behavior&lt;/h4&gt;&lt;p&gt;When a model becomes a black box, you lose the ability to predict how it will behave. In one of my Prophet training sessions, a participant asked me, “What will happen if I select Indicator XYZ for a product in my Prophet model?” I had to answer with no choice, “I was not the one who created the library, how am I able to know what will happens?” That’s a major red flag—if you don’t know what changes will do to your model, you’re working in dangerous territory.&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;It&#39;s Important to Understand Our Prophet Models&lt;/h2&gt;&lt;div&gt;A good Prophet model should never feel like a black box. As we&#39;ve explored, the risks of working with a model that you don’t fully understand are far too great. From hidden errors to unintentional mistakes, or even models becoming unmanageable over time, the lack of transparency can cause significant problems. That’s why it’s so important to understand the structure, design, and philosophy behind the models you rely on.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In my next post, I’ll be diving into another key aspect of a GOOD Prophet model—&lt;b&gt;redundancy&lt;/b&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Podcast Version:&lt;/b&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/_y3P31owl_Y?si=IYG6zaMHKyk6sUcd&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Related Posts:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;What Makes a “Good” Prophet Model? (1) - Avoid Black Box&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2024/10/Good-Prophet-02-Reduce-Redundancy.html&quot;&gt;What&amp;nbsp; Makes a &quot;Good&quot; Prophet Model? (2) - Reduce Redundancy&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/1075699043314690811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2024/10/Good-Prophet-01-Avoid-Black-Box.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/1075699043314690811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/1075699043314690811'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2024/10/Good-Prophet-01-Avoid-Black-Box.html' title='What Makes a “Good” Prophet Model? (1) - Avoid Black Box'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijK3LQYpA3B3LsWr6DGQzC0aB4-jMIw_GPr9lwXOzN9K42yU4kwrC2LapfJCliXam5OUOZJ1USjDl-gSDDVkXCeNOhwE7LZeuO1gGgyuYXYlpFsBrVGuh2jmvkxFcyNOcYGZLsLluZv7A8VdUG85Jl6oPCt5iP34yQiPk91AbdLcRnr0-wB9O5MxCOTF4/s72-w640-h366-c/img_prophet-01.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-9175226733946597082</id><published>2024-04-21T22:49:00.000+08:00</published><updated>2024-04-21T22:49:24.102+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Work"/><title type='text'>Get Inspiration for New Problems</title><content type='html'>&lt;p align=&quot;center&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/s7uf5lUeOdI?si=iHY1AA8OSX9X9JI7&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p&gt;In my last post and debut podcast, I talked about why strong foundations matter for coming up with smart, workable solutions in business. But, there&#39;s a twist when we hit a problem that&#39;s completely new to us: just having that solid base isn&#39;t always enough.&lt;/p&gt;&lt;p&gt;This brings me to a story I love to share with my team and my training participants, about how Henry Ford had a lightbulb moment that changed cars forever. Did you know he got the idea to build cars faster and cheaper by watching how meatpacking plants worked? They had this assembly line where everyone did one job, moving the product along quickly. Ford thought, &quot;Why not do this with cars?&quot; And just like that, in 1913, he changed the game by setting up an assembly line at his car plant in Michigan.&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Now, jumping from cars to my world of actuarial modeling in Prophet. Under the new demands and requirements like IFRS17 implementation, the old ways of doing things just weren&#39;t enough anymore. I needed models that could twist, turn, and adapt fast. Where did I look for inspiration? Believe it or not, WordPress, the website platform, especially the way it uses plug-ins to add new features easily.&lt;/p&gt;&lt;p&gt;Inspired by this system, I developed a similar mechanism for Prophet models. This innovation allows users to easily attach or detach selected riders to basic insurance plans through a table-driven approach, significantly increasing the models&#39; flexibility. This approach not only streamlined the modeling process but also introduced a level of customization and efficiency previously unattainable.&lt;/p&gt;&lt;p&gt;Both these stories, mine and Ford&#39;s, show that sometimes, the best way to tackle new challenges is to look outside your usual toolbox. You never know where the next great idea will come from, making work not just smarter but also a lot more fun.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/9175226733946597082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2024/04/inspiration-new-problems.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/9175226733946597082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/9175226733946597082'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2024/04/inspiration-new-problems.html' title='Get Inspiration for New Problems'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/s7uf5lUeOdI/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-1866242516920749591</id><published>2024-04-21T22:41:00.000+08:00</published><updated>2024-04-21T22:41:13.558+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Work"/><category scheme="http://www.blogger.com/atom/ns#" term="Learning &amp; Training"/><title type='text'>Theory &amp; Practical</title><content type='html'>&lt;p align=&quot;center&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/YUav9ZOYFT4?si=YoAbO1Y4VIVnM4Y0&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p&gt;After completing the actuarial modelling class on Tuesday, I had a short but fruitful conversation with my team member, Koh Ying, at the lift lobby. As this was a developer course, Koh Ying came over to support the training and provided guidance to the participants when they encountered challenges in the class exercise.&lt;/p&gt;&lt;p&gt;Well, the topic we discussed might seem a bit dry, but it is important to our work - yes, we discussed why we should learn the fundamentals/concepts, or which I usually call &quot;theory&quot;.&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;From our past experience, we came across many course participants with good skills, but... Well, poor fundamentals/concepts. Some of them may seem to know a lot, or do a lot of so-called advanced work, but when I threw out some simpler but new problems, they were stunned without having a good idea of how to resolve them. They built their skills and understanding on the &quot;surface&quot;.&lt;/p&gt;&lt;p&gt;I explained further to Koh Ying why we need to master the &quot;theory&quot; well. For most of our projects, we deal with NEW problems. We need to find out new ways to resolve the problems arising, by using our creativity. However, creativity will only make sense if it is built on the solid ground of fundamentals / concepts. This is how we ensure the solutions we develop are practical.&lt;/p&gt;&lt;p&gt;I hope this short conversation will let Koh Ying the importance of learning the fundamentals / concepts. Perhaps she is too young to understand this well (just the 1st year of her actuarial job!), I believe she definitely can comprehend why I emphasized on &quot;theory&quot;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/1866242516920749591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2024/04/theory-practical.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/1866242516920749591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/1866242516920749591'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2024/04/theory-practical.html' title='Theory &amp; Practical'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/YUav9ZOYFT4/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-3404569632749216233</id><published>2022-05-28T18:31:00.006+08:00</published><updated>2022-05-28T18:31:41.831+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>Some Thoughts on Prophet (Part 2)</title><content type='html'>&lt;p&gt;One of my favorite functionalities in Prophet is &quot;parameterized extended formula&quot;. Although this technical term sounds a bit complex, the concept is in fact pretty straight forward - we can just relate to something we learned in the secondary school, i.e. &quot;f(x)&quot; (functions).&lt;/p&gt;&lt;p&gt;How parameterized extended formulas work is similar to self-defined function in Excel VBA. Say we have a function with multiple elements, e.g. f(x, y, z). When we input x = 2, y = 3 and z = 4 to this function, we may get a value of 10 directly. The same function can be used for different combinations of x, y and z - i.e. we can REUSE the function and make our calculation models more efficient.&lt;/p&gt;&lt;p&gt;We can use parameterized extended formulas for various areas, such as converting annual decrement rates to monthly rates. Instead of replicating similar formulas for death, TPD and CI separately, we can create a parameterized extended formula that can be used for death, TPD and CI at the same time:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Create an extended formula that contain (say) 3 elements, say I call it as EXT_FORMULA.&lt;/li&gt;&lt;li&gt;Create different extended formula for death, TPD and CI. Just one line code, #EXT_FORMULA(x, y, z) (it&#39;s hash-E-X-T-underscore-F-O-R-M-U-L-A). Say the extended formula for death is DTH_INPUT.&lt;/li&gt;&lt;li&gt;To get the value from EXT_FORMULA, we need to specify the variable that carries values of elements, such as DTH_INPUT.QX (QX is a public variable under EXT_FORMULA).&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Another reason I love using parameterized extended formula is it allows multiple outputs from the same extended formulas. For example, in case we have two separate public variables for male and female, we can define two public variables within the same parameterized extended formula, i.e. we can directly get the values from the variable by specifying (say) DTH_INPUT.QX_M and DTH_INPUT.QX_F.&lt;/p&gt;&lt;p&gt;You can also have numeric and text public variables at the same time. Both numeric and text public variables may appear as array variables if needed.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Further reading:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Some Thoughts on Prophet (Part 2) (This post)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2022/05/prophet-thought-part01.html&quot;&gt;Some Thoughts on Prophet (Part 1)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/3404569632749216233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2022/05/prophet-thought-part02.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/3404569632749216233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/3404569632749216233'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2022/05/prophet-thought-part02.html' title='Some Thoughts on Prophet (Part 2)'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-3946297756096682952</id><published>2022-05-28T18:24:00.003+08:00</published><updated>2022-05-28T18:29:55.361+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>Some Thoughts on Prophet (Part 1)</title><content type='html'>&lt;div style=&quot;text-align: left;&quot;&gt;Sharing is always a good thing. By sharing the knowledge I have, apart from providing others some ideas on how to improve their daily work or resolve the problems they encounter, I can still benefit from the sharing. Through writing posts in LinkedIn, I strengthen my knowledge and concepts, as well as gaining some inputs and view from other connections in my network.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;For better records, I also put down my sharing under this blog, so that it is easier to be referred if needed.&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Thought (1): Debugger License - Get it if you have the budget&lt;/h3&gt;&lt;p&gt;If you have additional budgets on Prophet licensing, I would suggest to get the Debugger license (yes, it needs a separate licensing). When you encounter errors in your Prophet runs, AND Prophet cannot display its run log (i.e. errors in both doing runs and displaying run logs at the same time) , Debugger will save your life (otherwise it may very tough to find out what the issue is).&lt;/p&gt;&lt;p&gt;If I can suggest enhancements on Prophet, I think it will be great if we can allow t-dependent calculation for TEXT variable as well. At the moment, Prophet doesn&#39;t allow t-dependent text variables - which create some hassles especially when we want to change the text values for different calculation loopings (CALC_LOOP).&lt;/p&gt;&lt;p&gt;P/S: We can also use PRINT_TO_FILE to output variables that we want to check into run logs.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Thought (2): No t dependent for text value?&lt;/h3&gt;&lt;p&gt;To overcome this limitation, of course there is more than one way to handle it. For example, if the text value is a table name, we can vary the table names within READ_GENERIC_TABLE, under the numeric variable that we want to store the value read from the table.&lt;/p&gt;&lt;p&gt;Another approach I use quite a lot is using an extended formula to read the text value (it&#39;s OK to make the public variable within the extended formula to vary by calculation looping). Usually I will use ONE extended formula to read many text variables at the same time (so that can reduce no. of variables).&lt;/p&gt;&lt;p&gt;Of course, if you don&#39;t have debugger license, it is not easy to check text the value as it cannot be exported to normal text variable.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Further reading:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2022/05/prophet-thought-part02.html&quot;&gt;Some Thoughts on Prophet (Part 2)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Some Thoughts on Prophet (Part 1) (This post)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/3946297756096682952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2022/05/prophet-thought-part01.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/3946297756096682952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/3946297756096682952'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2022/05/prophet-thought-part01.html' title='Some Thoughts on Prophet (Part 1)'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-2808078732147414368</id><published>2020-12-18T12:15:00.001+08:00</published><updated>2020-12-18T12:15:44.035+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>How do You Setup Indicators in Your Prophet Model?</title><content type='html'>&lt;p&gt;In my previous post, I have discussed areas that you may consider in setting up &lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2020/12/know-more-about-input-variables.html&quot;&gt;input variables&lt;/a&gt;. Before I proceed my discussion on core variables, I would think that it is good for use to take a look on indicators - as indicators play an important role in setting core variables with various formulas (known as &quot;variable definitions&quot; in a Prophet model).&amp;nbsp;&lt;/p&gt;&lt;p&gt;The funny thing about indicators is: it DOES NOT carry any formulas that you need to use in calculating a variable! Basically, they are just some texts that you can combine using different logical operators (AND, OR, NOT), such as &quot;ORD_PAR AND SING_PREM&quot; for a single premium ordinary participating product.&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;How do Indicators Work?&lt;/h2&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsjYPOvRFW-WA9fwOkR6opsCIXrc_rXQje7Q2_1vORFP-BdA6m6J2pElTyA58dBjrwg1vr1j6oH3gCEmazVUQgaUr9r0V4QbpTDjZiOTwIzzVMPMm4lurXgpfWdawFu7zb1grWeY2DG0U/s650/Indicator_VarDef.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;450&quot; data-original-width=&quot;650&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsjYPOvRFW-WA9fwOkR6opsCIXrc_rXQje7Q2_1vORFP-BdA6m6J2pElTyA58dBjrwg1vr1j6oH3gCEmazVUQgaUr9r0V4QbpTDjZiOTwIzzVMPMm4lurXgpfWdawFu7zb1grWeY2DG0U/s16000/Indicator_VarDef.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;We can define multiple formulas, or variable definitions, for a variable. There are many ways we can setup a variable definition, which the common ones are:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Formula&lt;/li&gt;&lt;li&gt;Constant&lt;/li&gt;&lt;li&gt;Global&lt;/li&gt;&lt;li&gt;Parameter&lt;/li&gt;&lt;li&gt;Extended formula&lt;/li&gt;&lt;li&gt;t-dependent extended formula&lt;/li&gt;&lt;/ul&gt;Variable definitions setup in a variable are not necessary come from the same type, e.g. the most common mixture of variable definitions are formula and constant. Let&#39;s take fund management charge (&quot;FMC&quot;) variable as an example, which is applicable to investment-linked products.&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Say FMC variable is as a mandatory variable required for all products.&lt;/li&gt;&lt;li&gt;For an investment-linked product, we need to define formulas that calculates FMC from unit funds. Normally, the respective variable definition is setup as &lt;i&gt;Formula&lt;/i&gt;&amp;nbsp;type.&amp;nbsp;&lt;/li&gt;&lt;li&gt;For an ordinary participating product, we can right away set the variable to 0. In this case, we can use &lt;i&gt;Constant&lt;/i&gt;&amp;nbsp;type of variable definition.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In case the FMC variable is not a mandatory variable, we can totally exclude this variable from the ordinary participating product - FMC is not applicable to this product anyway. The question is: how do we setup the variable definitions, so that Prophet selects the correct action as per our condition?&lt;/p&gt;&lt;p&gt;Yes, that&#39;s right, by using a &lt;b&gt;combination of indicators&lt;/b&gt;, together with logical operators to define &lt;b&gt;indicator expression&lt;/b&gt;. To cater for the calculations required for the FMC variable, we shall have INVST_LINK (investment-linked) created in the library.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;For variable definition used by investment-linked products, we should insert &lt;b&gt;INVST_LINK&lt;/b&gt; in the indicator expression.&lt;/li&gt;&lt;li&gt;Although another product in our context is an ordinary participating product, FMC variable should be set to 0 for all non investment-linked products. Hence, we should insert &lt;b&gt;NOT INVST_LINK&lt;/b&gt; in the indicator expression.&lt;/li&gt;&lt;/ul&gt;If the FMC variable is not a mandatory variable, what are the indicators we should use? The answer is simple, we don&#39;t need to setup the second variable definition at all. If Prophet cannot find any variable that meet the indicators selected by a product, the variable will not be called in.&lt;p&gt;&lt;/p&gt;&lt;h2&gt;How do We Setup Indicators?&lt;/h2&gt;&lt;p&gt;Again, there is no single correct answer on how we should setup indicators. Based on my explanations above, we can easily see that indicators allow a variable to be defined in a different way. We should then drill down what make a variable having different variable definitions.&lt;/p&gt;&lt;p&gt;Some common types of indicators that you may consider setting up in your library are:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;General: Such as ALWAYS. Please remember that ALWAYS is a lone wolf - it doesn&#39;t make sense to use ALWAYS with other indicators.&lt;/li&gt;&lt;li&gt;Product type: Such as ordinary participating, ordinary non-participating, investment-linked.&lt;/li&gt;&lt;li&gt;Benefit type: Such as death benefit, TPD benefit and CI benefit.&lt;/li&gt;&lt;li&gt;Reserving method: Such as gross premium valuation method (&quot;GPV&quot;) method, sterling reserve method.&lt;/li&gt;&lt;/ul&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxgorr5WuTJ1PLAyBTnaZvfTHg8G26MDxU-BoVFT3XttcGYhWRpaS6fm1TmZT15qZrYppuZtvpDK6QncqV0yY2g3CRWckITPwhHMI5FlpYvPxa71aILl0jEuQKzFBNuCVcSv5VF8jnfDY/s552/Capture09.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;399&quot; data-original-width=&quot;552&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxgorr5WuTJ1PLAyBTnaZvfTHg8G26MDxU-BoVFT3XttcGYhWRpaS6fm1TmZT15qZrYppuZtvpDK6QncqV0yY2g3CRWckITPwhHMI5FlpYvPxa71aILl0jEuQKzFBNuCVcSv5VF8jnfDY/s16000/Capture09.PNG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&quot;Must not be selected if&quot; under &lt;i&gt;Selection Criteria&lt;/i&gt;&amp;nbsp;group&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div&gt;When we create a indicator, we have to consider the possible conflict that may arise from other indicators. For example, when we select INVST_LINK for a product, we should not select ORD_PAR (ordinary participating) for the same product - a product cannot be investment-linked and ordinary participating product at the same time! Hence, it is important to include adequate conditions for indicators, under &quot;Must not be selected if&quot; section. By using INVST_LINK as an example, we should insert &quot;ORD_PAR OR ORD_NONPAR&quot; in &quot;Must not be selected if&quot; section, under &lt;i&gt;Selection Criteria&lt;/i&gt;&amp;nbsp;group (assuming the company only has three product types).&amp;nbsp;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;By having this condition, when you select INVST_LINK, ORD_PAR and ORD_NONPAR will be automatically disabled. Hence, you will not have any chance to make a mistake in selecting 2 or more of these indicators.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/2808078732147414368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2020/12/setup-Prophet-indicator.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/2808078732147414368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/2808078732147414368'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2020/12/setup-Prophet-indicator.html' title='How do You Setup Indicators in Your Prophet Model?'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsjYPOvRFW-WA9fwOkR6opsCIXrc_rXQje7Q2_1vORFP-BdA6m6J2pElTyA58dBjrwg1vr1j6oH3gCEmazVUQgaUr9r0V4QbpTDjZiOTwIzzVMPMm4lurXgpfWdawFu7zb1grWeY2DG0U/s72-c/Indicator_VarDef.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-2707286351016878764</id><published>2020-12-08T20:54:00.000+08:00</published><updated>2020-12-08T20:54:46.162+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>Know More About Input Variables</title><content type='html'>&lt;p&gt;If you a Prophet user, you must have heard about &lt;b&gt;input variables&lt;/b&gt;&amp;nbsp;and &lt;b&gt;core variables&lt;/b&gt;. In simple words, input variables that you need to define individually when you setup a product (of course you can accept the default definitions), whereas core variables are those will be automatically called from libraries when you perform a run.&amp;nbsp;&lt;/p&gt;&lt;p&gt;However, do you ever think how we should assign a variable as input variable or core variable? What are the characteristics that make a variable to be better assigned as input variable?&lt;/p&gt;&lt;p&gt;There is no a single right or wrong answer for the above questions. In this article, I am going to share my views (actually the treatment I adopted in the Prophet models I developed before) on how you can handle input variables in the Prophet models.&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Input Variable Concept&lt;/h2&gt;&lt;p&gt;When I explain on the idea of input variables to my clients or team members, I usually regard input variables as &lt;u&gt;product-specific variables&lt;/u&gt;&lt;b&gt; &lt;/b&gt;for simplicity. In the context of my explanations, product-specific variables are those relating to the features of a product, namely premium and benefit (e.g. sum assured, surrender value and maturity benefit), which calculations for respective variables vary by products.&lt;/p&gt;&lt;p&gt;When you create a new variable in a Prophet library and you are unsure how to classify the variable, you can ask yourself the following questions:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;b&gt;Question 1: &lt;/b&gt;Is this variable related to product features?&lt;/li&gt;&lt;li&gt;&lt;b&gt;Question 2: &lt;/b&gt;Can another product under the same product classifications (e.g. participating, non-participating, universal life and investment-linked) use a different way in doing calculation specified by the variable?&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;If the answers for these two questions are &quot;YES&quot;, you may consider assign the variable as an input variable. Otherwise, you may ask yourself further additional questions below:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;b&gt;Question 3: &lt;/b&gt;Is the variable used to define specific variations in product related rates (e.g. commission rates and cost of insurance (&quot;COI&quot;) rates) or assumptions?&lt;/li&gt;&lt;/ul&gt;Another common use of input variables is to define variations in the product related rates or assumptions - especially when we want to handle rates or assumptions that are unique to a small specific group of products. For example, we may introduce COMM_GRP (&quot;commission group&quot;) variable with default value 0:&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Most product should use the default value of the input variable, as normally all policies under the same product should use the same commission rates.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;For specific products which pay different levels of commissions by distribution channel, you can use COMM_GRP to define different sets of commission rates under the same commission rule / flag.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Types of Input Variables&lt;/h2&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiwioKDxTBoHdZNm6QrUC8gRc4CBwXeu0LvJpkXF_TT5fHrRWnTJ_SmGljI-vmDrRONnS_feAmFY7bGkyHcu7p8p8yZ12LU52MA7k8oE9YuGCLZYi0dHeUZ8ZctF5wL3cnuK9eKmKTmTA/s718/prophet_core_input_var.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;335&quot; data-original-width=&quot;718&quot; height=&quot;187&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiwioKDxTBoHdZNm6QrUC8gRc4CBwXeu0LvJpkXF_TT5fHrRWnTJ_SmGljI-vmDrRONnS_feAmFY7bGkyHcu7p8p8yZ12LU52MA7k8oE9YuGCLZYi0dHeUZ8ZctF5wL3cnuK9eKmKTmTA/w400-h187/prophet_core_input_var.jpg&quot; title=&quot;Most of variables in a Prophet model are core variables. Primary input variables should be more than secondary input variables.&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Most of variables in a Prophet model are core variables. Primary input variables should be more than secondary input variables.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;Generally, there are two types of input variables that you can setup in Prophet, i.e. &lt;b&gt;primary &lt;/b&gt;input variables and &lt;b&gt;secondary&lt;/b&gt; input variables. What are the differences between these two types of input variables?&lt;/p&gt;&lt;p&gt;A secondary input variable has the following characteristics:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Do not have any indicator expression.&lt;/li&gt;&lt;li&gt;Cater for specific calculations that are only applicable to specific products.&lt;/li&gt;&lt;/ul&gt;Secondary input variables will only be &quot;called&quot; into a product when it is specified in the formula of another input variable. For example, we have one or two legacy products that use annual commutation functions in calculating surrender values. Instead of creating a specific indicator for the use of commutation functions, we can make the variables of annual commutation functions as secondary input variables - when you use the variables in a primary input variable, respective secondary variables will be included in the list of input variables after you save the primary input variable.&lt;p&gt;&lt;/p&gt;&lt;h2&gt;Conclusion&lt;/h2&gt;&lt;p&gt;For a Prophet model that is properly setup, we should not have too many input variables, say only 10 to 20 variables, to define in a Prophet product. If a Prophet workspace needs you to define more than 100 input variables whenever you create a new product, it is high time to overhaul this actuarial model.&lt;/p&gt;&lt;p&gt;Similar to &lt;a href=&quot;https://actuarialworkinglife.blogspot.com/2020/11/prophet-master-product.html&quot;&gt;master products&lt;/a&gt;, it is unnecessary to over emphasize on no. of input variables until causing maintenance issues.&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/2707286351016878764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2020/12/know-more-about-input-variables.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/2707286351016878764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/2707286351016878764'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2020/12/know-more-about-input-variables.html' title='Know More About Input Variables'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiwioKDxTBoHdZNm6QrUC8gRc4CBwXeu0LvJpkXF_TT5fHrRWnTJ_SmGljI-vmDrRONnS_feAmFY7bGkyHcu7p8p8yZ12LU52MA7k8oE9YuGCLZYi0dHeUZ8ZctF5wL3cnuK9eKmKTmTA/s72-w400-h187-c/prophet_core_input_var.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-6491738182630665667</id><published>2020-11-25T18:52:00.001+08:00</published><updated>2020-11-25T18:52:27.923+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>Master Products in Prophet Workspace - Many or Few?</title><content type='html'>&lt;p&gt;When I worked on Prophet projects that involved setting up Prophet model from scratch or streamlining existing Prophet models, one of the common requests I came across was relating to no. of master products. Many Prophet users have such a perception, i.e. the lesser no. of master products in a Prophet workspace, the &lt;b&gt;better&lt;/b&gt; it is.&lt;/p&gt;&lt;p&gt;Let&#39;s think about it, is this perception correct? When we are talking about of having a better Prophet model, what does the word &quot;better&quot; mean?&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Define a BETTER Prophet Model&lt;/h3&gt;&lt;p&gt;It is important for us to define what we expect from a &quot;better&quot; Prophet model, instead of focusing on the no. of master products in the model. Let me share some views if I am a Prophet user:&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;It is easier for me to setup a new product in my Prophet model. I don&#39;t want to define 50 - 100 input variables when I setup a new product, especially those input variables that I could not really understand what they are for.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;When I need to amend coding of an input variable or a core product in the library, the coding is not lengthy and it is easier for me to go through, especially in the diagram view.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;It is always a good thing if I can use a Same As product for my new product. But... I don&#39;t want to such convenience comes with updating 20 - 30 tables. I may need to study the coding again in order to update those tables.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;It goes back to the efforts required in the &lt;b&gt;model maintenance&lt;/b&gt;. One of the rules I have learnt from my actuarial models and solutions development projects, &lt;b&gt;flexibility always comes with complexity&lt;/b&gt; - i.e. when we want to introduce more flexibility in a model or solution, we need to always take note that we may be going to introduce more complexity at the same time. Furthermore, it will also invite a lot of redundancy if we want to have a generic model / solution.&lt;/p&gt;&lt;p&gt;Let me give some examples for better clarifications. Try to imagine if we need to setup only &lt;u&gt;ONE&lt;/u&gt; master product for all investment-linked products. To do so, we need to include all unit deducting riders with various product features in the master products, so that it be used for all investment-linked policies, either with and without riders.&lt;/p&gt;&lt;p&gt;If you are familiar with Prophet models, every rider needs to have a set of designated variables in defining the product features, including cost of insurance (&quot;COI&quot;), benefit amount, incidence rates, reinsurance premiums etc. - it may require a few hundreds of variables for (say) 5 riders. Yes, the master product is now flexible, but do you think it is a suitable master product for a &lt;u&gt;single premium investment-linked product that is without rider&lt;/u&gt; (which is mainly for investment purpose)?&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Maintenance in Master Products?&lt;/h3&gt;&lt;p&gt;I think it is clear enough that the above-mentioned master product is not suitable for single premium product without riders. A better approach that I would recommend is to create a separate master product for this single premium product - so that we can reduce redundancy in the product and shorten the run time.&lt;/p&gt;&lt;p&gt;Some users may object this idea: &quot;This will increase our maintenance work!&quot; Well, it may sound correct when you first hear such comment. However, the truth is most of the time the master products are not even opened by the users after they are setup and tested. In other words, most master products normally do not require maintenance after they are finalized and promoted to production.&lt;/p&gt;&lt;p&gt;In conclusion, we should not be over concerns on the no. of master products - instead, we should create a separate master product if there are significant different product features (I should discuss the concept of input variables in a separate post).&amp;nbsp;&lt;/p&gt;&lt;p&gt;If you have two master products which you have only minor differences in one or two input variables (such as different ways of calculating current sum assured), it is correct that you should have only one master product for these two variables.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/6491738182630665667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2020/11/prophet-master-product.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/6491738182630665667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/6491738182630665667'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2020/11/prophet-master-product.html' title='Master Products in Prophet Workspace - Many or Few?'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-3449943934391869676</id><published>2018-05-31T17:36:00.001+08:00</published><updated>2018-05-31T17:36:20.170+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Learning &amp; Training"/><title type='text'>Focus on Skills, and NOT Knowledge Itself</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU-Et_bM3LiAu48suGvyP7EQCR98tNl3tHLD7buZZLJ8LbEUPJrdjMAO7KB6Gxt_zEeC8jok-ntkqXE8KjjPexHDyMr0c9khNuEKn4aDmDul1pyVNZksZaMq5QTjROHdE-YLuHo0KAW1Q/s1600/focus-skills-not-knowledge03.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;415&quot; data-original-width=&quot;650&quot; height=&quot;255&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU-Et_bM3LiAu48suGvyP7EQCR98tNl3tHLD7buZZLJ8LbEUPJrdjMAO7KB6Gxt_zEeC8jok-ntkqXE8KjjPexHDyMr0c9khNuEKn4aDmDul1pyVNZksZaMq5QTjROHdE-YLuHo0KAW1Q/s400/focus-skills-not-knowledge03.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Among the materials &amp;amp; books related to learning effectiveness that I have studied recently, “&lt;i&gt;PEAK: How all of us can achieve extraordinary things&lt;/i&gt;” written by Anders Ericsson&amp;amp; Robert Pool (I read the Chinese translation, e-book format) is the one giving me the most inputs.
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
How does an EXPERT do?&lt;/h3&gt;
Instead of going to the deliberate practice straightaway, I decide to take another approach in carrying out this discussion, in the same manner as doing a business planning - let&#39;s start with the targets / goals we would like to achieve, work backward and find out what the best way to follow.&lt;br /&gt;
&lt;br /&gt;
Say I would like to excel in a particular subject, such as in mastering a programming language, so that I will be more competitive in the job market. Apart from attending programming classes without a clear target of how far I should go (although certification may be a good reference), perhaps it will be good for me to take a look on how an EXPERT should be. Ideally, an expert should be:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;1. Familiar with the programming languages (definitely!)&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;2. Able to analyze a problem and find out the root causes quickly&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;3. Able to design an effective solution to resolve the problem&lt;br /&gt;
&lt;br /&gt;
For (1), an expert programmer and an average programmer may know the same amount of commands &amp;amp; functions - what make an former as an EXPERT is how he can apply the programming languages in the problem solving - i.e. how he can analyze &amp;amp; understand the problem and design &amp;amp; implement an effective solutions by connecting the programming language he learned before.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
What makes an expert? It&#39;s MENTAL REPRESENTATION!&lt;/h3&gt;
The ability of connecting the skills to the problems, as defined by the authors, depends on how extensive relevant &quot;mental representations&quot; are built up in his mind (technically, in the long term memory). Well, this &quot;mental representations&quot; term may look too abstract to many of us. From I understand from book, let me explain this&amp;nbsp; concept in another context, which may be easier for you to relate to. Try to imagine the &quot;mental representations&quot; as a model / program (e.g. Prophet model) that you use to perform calculations (e.g. reserve calculations):&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;By using the model / program, you can easily feed in the input data and get the results you want after the calculations are complete. Without the model / program, you would need to carry out the calculations manually on the spreadsheets, which will take a lot of time (and prone to human errors!) .&lt;/li&gt;
&lt;li&gt;Obviously, using the model / program in calculations is a more effective solutions. Do you realize that when you run the model / program, you don&#39;t really need to figure out how the calculations are done?&lt;/li&gt;
&lt;li&gt;For manual calculations, you need to be conscious on how you need to construct the correct formulas in order to calculate required results correctly. Such manual work definitely consume more efforts and time (please also spare some time for detecting errors and corrections…).&lt;/li&gt;
&lt;/ol&gt;
Another example is calculating simple arithmetic, such as &quot;5 + 4&quot;, which we can instantly get &quot;9&quot; as the correct answer without counting manually. This is because we have already built a model / program in our mind so that we can perform such simple calculations instantly without needing to manually count one-by-one. Similarly, a chess master (the authors&#39; favorite example in the book) has built out many thousands of chess models in his mind so that he can easily retrieve the most relevant chess model in order to apply the correct strategy. The more mental presentations built up in our mind, the more efficient we can understand a particular problem and come out with the correct solutions - our brain will search for the correct model / program to be used, feed in necessary inputs for the problems and return the results we would like to have.&lt;br /&gt;
&lt;br /&gt;
Apart from being able to solve problems effectively, having large amount of mental representations equips us with the ability to self-learn for more in-depth areas, i.e. less dependent on guidance from teacher / coach.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
How to build mental representations EFFECTIVELY? It&#39;s the DELIBERATE PRACTICE!&lt;/h3&gt;
Here comes the most important question of this article: &quot;How do we build up mental representations EFFECTIVELY?&quot; When we learn a particular new skill, we are actually establishing mental representations in our mind. Does repeating a learning process help to build up more mental representations? The answer is YES and NO, depending on the learning process we carry out - the authors have pointed out that the &quot;10,000 hours of practice&quot; rule suggested by Malcolm Gladwell is actually incorrect, i.e. repeating the same practice for 10,000 hours will not help to make us an expert. More appropriately, the authors suggest us to adopt a more effective way of learning (which may not be necessary to take 10,000 hours), which is called &lt;b&gt;DELIBERATE PRACTICE&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Highlights of deliberate practice are:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Practice repeatedly, which is the key way to build up &amp;amp; strengthen mental representations. Repetition is a MUST - higher IQ may speed up learning for the beginning stage, but in order to an expert, repetition in practices is unavoidable.&lt;/li&gt;
&lt;li&gt;Practice with purposes, i.e. having clear objectives for the practices, such as aiming to tackle a particular weakness.&lt;/li&gt;
&lt;li&gt;Incorporate some challenges in the practices, which should be out of our comfort zone. The practices should not be too far from the comfort zone until it becomes too difficult to achieve. Learn to walk first before attempting to run.&lt;/li&gt;
&lt;/ol&gt;
Obtain guidance from teacher / coach, especially who can provide feedbacks promptly so that we know our weakness and how to overcome. Please note that a person with strong skills may not be a good teacher / coach.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk1W6KNXnObSWTKQg_-lXFrBLhUzWwcfemSET7nwMQH4EqFBMctE4noXtfjMfuLpPeqY89cMXnyc5adu9ykBwVar78H2q4t5Hf4844c2kaCvE5B2dU-_i2m85mpAFp4K3Ct2yRXVpY53k/s1600/peak_cov_English.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;697&quot; data-original-width=&quot;450&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk1W6KNXnObSWTKQg_-lXFrBLhUzWwcfemSET7nwMQH4EqFBMctE4noXtfjMfuLpPeqY89cMXnyc5adu9ykBwVar78H2q4t5Hf4844c2kaCvE5B2dU-_i2m85mpAFp4K3Ct2yRXVpY53k/s1600/peak_cov_English.jpg&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;ISBN: 9781473513143&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQJZDtRRJ7tfpLZRFSEJjCOcjOASabFALPfc3Xu3w5bZMSq9VitvwjJPbP7t6pqKefHqyXylb0JCjrcZugNwzqDK-ubz5kEKbAWA1xmNwTMTrnSLYUUU7c_IzoSqjHW1Q8ThyphenhyphenAKoTbHEA/s1600/peak_cov_Chinese.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;800&quot; data-original-width=&quot;450&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQJZDtRRJ7tfpLZRFSEJjCOcjOASabFALPfc3Xu3w5bZMSq9VitvwjJPbP7t6pqKefHqyXylb0JCjrcZugNwzqDK-ubz5kEKbAWA1xmNwTMTrnSLYUUU7c_IzoSqjHW1Q8ThyphenhyphenAKoTbHEA/s1600/peak_cov_Chinese.jpg&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;ISBN: 9787111551287&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;clear: both; text-align: left;&quot;&gt;
About the Book&lt;/h3&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;b&gt;Title:&lt;/b&gt; PEAK: How all of us can achieve extraordinary things&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;b&gt;Author:&lt;/b&gt; Anders Ericsson &amp;amp; Robert Pool&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;b&gt;ISBN:&lt;/b&gt; (English) 9781473513143 (Chinese) 9787111551287&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;b&gt;Publisher:&lt;/b&gt; (English) Vintage Publishing (Chinese) China Machine Press&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Cover Photo Credit:&lt;/b&gt;&amp;nbsp;Igor Ovsyannykov on &lt;a href=&quot;http://www.unsplash.com/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Unsplash&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/3449943934391869676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2018/05/focus-on-skills-and-not-knowledge-itself.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/3449943934391869676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/3449943934391869676'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2018/05/focus-on-skills-and-not-knowledge-itself.html' title='Focus on Skills, and NOT Knowledge Itself'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU-Et_bM3LiAu48suGvyP7EQCR98tNl3tHLD7buZZLJ8LbEUPJrdjMAO7KB6Gxt_zEeC8jok-ntkqXE8KjjPexHDyMr0c9khNuEKn4aDmDul1pyVNZksZaMq5QTjROHdE-YLuHo0KAW1Q/s72-c/focus-skills-not-knowledge03.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-474867049819181907</id><published>2016-01-09T13:59:00.002+08:00</published><updated>2016-01-09T13:59:44.101+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Claim"/><category scheme="http://www.blogger.com/atom/ns#" term="Life Insurance"/><category scheme="http://www.blogger.com/atom/ns#" term="System"/><category scheme="http://www.blogger.com/atom/ns#" term="Takaful"/><title type='text'>Waiver of Premium: How Do You Manage It?</title><content type='html'>When involving in system implementation (policy administration system) related work, I always encounter queries raised in administrating claim processes related to waiver of premium (&quot;WOP&quot;) benefit. When WOP feature is triggered by a covered event (either death, TPD or critical illness), the benefit will be paid over long period (which may stretch for many years). This makes a systematic WOP claim process more important so that the inflow and outgo related to WOP benefit can be managed properly.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;What is WOP benefit?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Briefly, when WOP feature is triggered by a covered event (either payor or insured), all future payments for premium after event date are &quot;waived&quot; - this doesn&#39;t mean the affected policy no longer receiving premiums. More accurately, although no payment is required for this policy, this policy still receives premiums - just the premiums come from different sources. This policy is expected to work as normal without any hiccup, for example, an investment-linked policy will continue to have allocated premiums to be invested in the unit funds as usual.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJHNEbfFy2rdAYuY9JQDUlTHFWflvFkcef6-VMnpHHFqVUbxtSqBwahXZKMx1WYOiQxFK7oQ4dkIW-4vXdIZMtc4jqQVGz2bETBgjSvIdsYHg8r3_hHTzO75qHdcSuge4qWkhn2SkbF00/s1600/WOPClaim01.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJHNEbfFy2rdAYuY9JQDUlTHFWflvFkcef6-VMnpHHFqVUbxtSqBwahXZKMx1WYOiQxFK7oQ4dkIW-4vXdIZMtc4jqQVGz2bETBgjSvIdsYHg8r3_hHTzO75qHdcSuge4qWkhn2SkbF00/s1600/WOPClaim01.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Yup, you have raised a very good question: &quot;What do &#39;different sources&#39; refer to?&quot; Basically, when the WOP feature is triggered, risk fund shall &quot;pay out&quot; WOP claim. Different from other types of claims, the claim is not directly paid to the beneficiary - instead, the claim amount shall be used to: (depending on the company&#39;s preferred practice)&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Method 1:&lt;/b&gt; Set aside as provision (no change in reserves calculation)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Method 2:&amp;nbsp;&lt;/b&gt;Support huge increase in reserves (i.e. during reserve calculations, no future premium is assumed for policies with waiver status. When a policy changes from &quot;normal paying&quot; to &quot;waiver&quot;, there is a huge increase in reserves due to zerorization of future premiums)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;Method 1(a): Set aside as provision (no discounting)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
There are variations for Method 1, i.e. &quot;no discounting&quot; &amp;amp; &quot;with discounting&quot; - method selection depends on product designs. Let&#39;s take a closer look on how the first one works using the following illustration:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif3Zov8fs3TihsMFXKlM4U8_NYRI-boLfLhbzQf3qVliEeBTc1pxwfm1MUiZtoZ35frpDwIEm2rhmveU6kTiZNSSCnJsPhPFvRSanBAlf9xwS7-AshhW_X5mpcu-gpZhS2jF09ibB4kcs/s1600/WOPClaim02.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif3Zov8fs3TihsMFXKlM4U8_NYRI-boLfLhbzQf3qVliEeBTc1pxwfm1MUiZtoZ35frpDwIEm2rhmveU6kTiZNSSCnJsPhPFvRSanBAlf9xwS7-AshhW_X5mpcu-gpZhS2jF09ibB4kcs/s1600/WOPClaim02.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Say a WOP rider (covers payor&#39;s death, TPD &amp;amp; critical illness) is attached to Policy A. It only covers for basic plan&#39;s premium, i.e. quarterly modal premium = 500. On a particular event date, let&#39;s say he policy still requires 22 quarterly premium payments after the event date.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;When WOP claim is approved, risk fund provides a claim provision amounted 11,000 (= 22 x 500) (e.g. provision for outstanding claims).&lt;/li&gt;
&lt;li&gt;When the quarterly premium is due, 500 is taken from the provision (as settled claim) and serves a premium payment.&lt;/li&gt;
&lt;li&gt;If Policy A is terminated before its maturity date (e.g. surrender), the provision that is not utilized is released back to risk fund.&lt;/li&gt;
&lt;/ul&gt;
It is possible that there are outstanding premium payments between last premium payment and event &amp;nbsp;date, however there is no specific way to handle such situation. The company may require customers to settle the outstanding premiums before approving WOP claims (however sometimes this option is not feasible, especially if the outstanding amount is large), utilize the accumulated cash values or portion of provisions to settle the outstanding claims (the customers need to continue to pay premiums when the provision is exhausted).&lt;br /&gt;
&lt;br /&gt;
In case some premium payments after the event date are already paid by the customer, an amount equal to total payments should be considered as &quot;excess&quot; that would need to be refunded to the customer.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;Method 1(b): Set aside as provision (with discounting)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Basically, both variations of Method 1 work in the same way, with a few exceptions. Under this variation, instead of providing full future premium amount, a discounted amount (i.e. a present value, calculated using a specific discount rate) is set up as claim provision.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The tricky part of using Method 1(b) is the claim provision needs to be adjusted from time to time to reflect investment element - by using the same discounting rate. This investment element may introduce additional risk to the company, i.e. the actual investment yield may be lower than the discount rate - as the provision needs to be adjusted at fixed rates (otherwise it will be insufficient), in the event of shortfall, it needs to be supported by other sources. Additional capital may be required for uncertainty in investment element.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;Method 2: Support huge increase in reserves&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Method 2 is similar to Method 1(b) - instead of setting up separate claim provision for waiver policies, all future premiums are zerorized when calculating actuarial reserves, which yields a huge increase in reserves. The company may want to quantify portion of increase in reserves attributable to zerorization of future premiums as WOP claim.&lt;br /&gt;
&lt;br /&gt;
When a premium is due, a portion of reserves will be released for premium payment:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;For a large portfolio, the release in reserves should be more than amount to be utilized as premium payments, due to prudent assumptions in reserve calculations.&lt;/li&gt;
&lt;li&gt;However, mismatch may occur for small portfolio, i.e. the release in reserve is insufficient to support premium payments (as variance is larger for small portfolio).&lt;/li&gt;
&lt;/ul&gt;
In practical, this method is more complex to implement, due to various &quot;imperfect&quot;condition. For example, the claim approval date is always later than the event date, which premiums due from event date to approval date should be immediately paid to the policy, instead of taken from release in reserves. To get a correct picture of claim, the company would need to include these immediate payment of WOP claim.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1m4Qd-gz7-Lqlq1cYTk66wJ6W6lbNVqUt6PUSLNl87uXj9vzp10DTCVoNMeL987Z_syAphB_2dqTRxmwCXkHlYzfVH1_auPMcFZO3sk00hj6hs3HuuGM-UWrOAsZgHXJ8h8WdLxq2QOY/s1600/WOPClaim03.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1m4Qd-gz7-Lqlq1cYTk66wJ6W6lbNVqUt6PUSLNl87uXj9vzp10DTCVoNMeL987Z_syAphB_2dqTRxmwCXkHlYzfVH1_auPMcFZO3sk00hj6hs3HuuGM-UWrOAsZgHXJ8h8WdLxq2QOY/s1600/WOPClaim03.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Furthermore, the company may require additional capitals due to larger reserves - Method 2 involves more uncertainty comparing to Method 1(b) because reserve calculation uses assumptions in decrements (e.g. death, TPD, critical illness &amp;amp; surrender).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;Last but Not Least: COI / tabarru&#39; for WOP Rider&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
I always face headache when working on WOP rider, as it involves very large tables - too large until it is impossible for me to examine the rates carefully. Large tables are acceptable for premium rates (as level premiums are charged for WOP rider), however it is unacceptable for COI (Cost of Insurance) for conventional investment-linked products or tabarru&#39; for family takaful products (both ordinary family with participant account &amp;amp; investment-linked). Why?&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-Nf7lngDO1ArMbgzcdudVyROsFywQIwH19snXwY0L4GqyGiVajBVARgbFLAlJzDLHbEZa6cxHJJt3hvMXzZ5p571R4uoHz4ZcRPeXnAw_FF15waYYzP9jY6HUZAsgtEoUNaWjE-Dii-c/s1600/WOPClaim04.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-Nf7lngDO1ArMbgzcdudVyROsFywQIwH19snXwY0L4GqyGiVajBVARgbFLAlJzDLHbEZa6cxHJJt3hvMXzZ5p571R4uoHz4ZcRPeXnAw_FF15waYYzP9jY6HUZAsgtEoUNaWjE-Dii-c/s1600/WOPClaim04.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
As discussed earlier, when a WOP claim is approved (under Method 1), a specific claim amount is paid out from risk fund. Consistently, the COI / tabarru&#39; should be calculated on the benefit amount expected to be paid out from risk fund upon claim.&lt;br /&gt;
&lt;br /&gt;
By using the example discussed earlier, the COI / tabarru&#39; should be calculated as:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Benefit amount: &amp;nbsp;500 x 22 = 11,000.00&lt;/li&gt;
&lt;li&gt;COI / tabarru&#39; rate (qx): 0.5 per 1,000 (varying by gender &amp;amp; attained age)&lt;/li&gt;
&lt;li&gt;Monthly COI / tabarru&#39; = 11,000 / 1,000 x 0.5 x 12 = 0.46&lt;/li&gt;
&lt;/ul&gt;
The COI / tabarru&#39; should have the same structure as other tables which are used to calculate COI / tabarru&#39; for death benefit - which normally varying by gender &amp;amp; attained age only. You can even use the same COI / tabarru&#39; tables as the basic plans.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/474867049819181907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2016/01/waiver-of-premium-how-do-you-manage-it.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/474867049819181907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/474867049819181907'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2016/01/waiver-of-premium-how-do-you-manage-it.html' title='Waiver of Premium: How Do You Manage It?'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJHNEbfFy2rdAYuY9JQDUlTHFWflvFkcef6-VMnpHHFqVUbxtSqBwahXZKMx1WYOiQxFK7oQ4dkIW-4vXdIZMtc4jqQVGz2bETBgjSvIdsYHg8r3_hHTzO75qHdcSuge4qWkhn2SkbF00/s72-c/WOPClaim01.jpg" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-7706052258886289322</id><published>2014-08-24T08:26:00.002+08:00</published><updated>2014-08-24T08:26:20.128+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Access"/><category scheme="http://www.blogger.com/atom/ns#" term="FoxPro"/><title type='text'>Replacement for VFP… Is Access a Good Choice for Actuarial?</title><content type='html'>I started looking for a replacement Visual FoxPro (&quot;VFP&quot;) since 2013, especially I noticed that Microsoft is going to cease its support on VFP 9.0 (released in 2004 and updated in 2007) after 13 January 2015. Although such technical support is not a concern to me (I never requested any support from Microsoft during my more than 10 years of experience using VFP for my actuarial work), I noticed that it would be more and more difficult for me to convince my clients (those who are not existing VFP users) to consider VFP in designing solutions for them.&lt;br /&gt;
&lt;br /&gt;
When I did my research on the website, I came across many names that I was totally not familiar… Is &quot;&lt;a href=&quot;http://msdn.microsoft.com/en-us/vstudio/lightswitch.aspx&quot; target=&quot;_blank&quot;&gt;Lightswitch&lt;/a&gt;&quot; mentioned in the official VFP website suitable? After studying its features, I concluded that it is perhaps a good application for an IT programmer, but it is too much for me in handling actuarial work. Basically, what I need in my work is to manipulate and analyze data, ideally using common programming languages like VBA and SQL. How about other applications like &lt;a href=&quot;http://www.lianja.com/&quot; target=&quot;_blank&quot;&gt;Lianja&lt;/a&gt; or &lt;a href=&quot;http://www.alaska-software.com/products/xpp/xpp.shtm&quot; target=&quot;_blank&quot;&gt;Xbase++&lt;/a&gt;? They are &quot;alien&quot; to many clients (and myself as well!) and I am totally unsure whether they are vendors in Malaysia supplying these applications - furthermore, most clients will not consider these applications that are difficult to be maintained by their own users (as the solutions I designed mainly use End User Computing applications) &amp;nbsp;or getting supports.&lt;br /&gt;
&lt;br /&gt;
Look like I don&#39;t have other choice except &lt;b&gt;MS Access&lt;/b&gt;. Cheap &amp;amp; easily available.&lt;br /&gt;
&lt;br /&gt;
Frankly speaking, initially I did not have a good perception on MS Access - I used to be a &quot;debugger&quot; for my team member, Mr. S, when I was the Valuation Manager in Company I. When Mr. S encountered errors in using his Access programs (developed by my genius ex-colleague Mr. F), he sometimes had no idea how to resolve those errors as Access did not give him enough &quot;clue&quot; on what was going on and what caused those errors. Differently, when we encountered an error in running VFP programs, VFP would indicate which line of SQL code causing that error and the error message did provide a good hint on how to resolve it. Recently I also found another actuary also has the same perception on Access.&lt;br /&gt;
&lt;br /&gt;
In my recent project with one of my clients, I ended up using Access to design my solutions. Well, I have no other choice because their IT Security officer rejected VFP due to their IT policy - it was not allowed to acquire VFP as Microsoft is going to cease their supports. Well, I had to cracked my head how to make my Access programs more user-friendly, as well as having a similar efficient design structure as the VFP programs (which I have spent many years to establish). After doing some researches and referring to the two Access thick reference books I got from Kinokuniya, I have decided to use only the followings to develop my Access programs:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Visual Basic Application (&quot;VBA&quot;)&lt;/li&gt;
&lt;li&gt;Forms&lt;/li&gt;
&lt;li&gt;Tables&lt;/li&gt;
&lt;/ol&gt;
It is a bit challenging writing VBA codes in Access, as it doesn&#39;t have a function to record &quot;macros&quot; as available in Excel - that means NO SHORTCUT, i.e. I have to enter ALL VBA codes by my own. Furthermore, the VBA language used in Access is not exactly the same as in Excel. Luckily, Access still allows me to write &amp;amp; execute SQL codes, in order to carry out processes like creating tables, selecting records, updating values, adding / removing columns, etc. After going through several times of &quot;enhancements&quot;, I have established an initial design structure for Access, as well as leveraging the visual features (i.e. forms) available in Access that I didn&#39;t use in VFP - as shown in the screen captures below (modified from one of my actual solution to a non-actuarial user, to remove company specific info).&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjifxA6iywAhkxxxJ83lCE1zLToZEFHqusuOLO5DPmmy_udZuNX4hdCwIbmA1SST3m6V9FcA2UUM2f95x7Wn2fLQTWC78ZTLDnYj8j-GPInonoXrg4Ofb7Z8bXpuXZPl29aDaIPXDKJ2Ws/s1600/SampleAccess01.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjifxA6iywAhkxxxJ83lCE1zLToZEFHqusuOLO5DPmmy_udZuNX4hdCwIbmA1SST3m6V9FcA2UUM2f95x7Wn2fLQTWC78ZTLDnYj8j-GPInonoXrg4Ofb7Z8bXpuXZPl29aDaIPXDKJ2Ws/s1600/SampleAccess01.jpg&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Users are required to key in username &amp;amp; password in order to use the functions setup in the Access program.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8o7r-2yrBwDaZ1ouXq7ysUrOwi9yLmgPA8JZdIT8K7xmoRv4t5UhM-1uJo7a60RSkwFldbSz_O0hdt14itJCseu4P6sKUTdZICAfl-cUdz1WSamhowjeL5ieSnm3_-OEWW8keuUrpABY/s1600/SampleAccess02.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8o7r-2yrBwDaZ1ouXq7ysUrOwi9yLmgPA8JZdIT8K7xmoRv4t5UhM-1uJo7a60RSkwFldbSz_O0hdt14itJCseu4P6sKUTdZICAfl-cUdz1WSamhowjeL5ieSnm3_-OEWW8keuUrpABY/s1600/SampleAccess02.jpg&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Users key in the run parameters (Start Date, End Date &amp;amp; Master Folder) and select required program procedures&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Now I&#39;m getting more and more comfortable with Access and I think Access is a good choice to replace VFP for actuarial work - as well as non-actuarial users. I shall share in more details in my subsequent articles.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/7706052258886289322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2014/08/replacement-for-vfp-is-access-good.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/7706052258886289322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/7706052258886289322'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2014/08/replacement-for-vfp-is-access-good.html' title='Replacement for VFP… Is Access a Good Choice for Actuarial?'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjifxA6iywAhkxxxJ83lCE1zLToZEFHqusuOLO5DPmmy_udZuNX4hdCwIbmA1SST3m6V9FcA2UUM2f95x7Wn2fLQTWC78ZTLDnYj8j-GPInonoXrg4Ofb7Z8bXpuXZPl29aDaIPXDKJ2Ws/s72-c/SampleAccess01.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-661324624908800059</id><published>2014-02-10T15:09:00.000+08:00</published><updated>2014-02-10T15:09:30.769+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="FoxPro"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>Other Ways to Prepare Prophet Model Point Files? Try FoxPro!</title><content type='html'>If you are a frequent Prophet user, you must be definitely familiar with &quot;Model Point Files&quot; (&quot;MPF&quot;), i.e. the policy data that you compile in a specific format that Prophet can recognize as inputs for Prophet runs. If my guess is right, most probably you use Data Conversion System (&quot;DCS&quot;) to convert the source data you download from your policy administration system (may be in various format, e.g. fixed ASCII / fixed width, comma delimited, tab delimited, etc.) into the required MPF, based on the definitions you specified in your DCS programs. In case your source data are divided into various files, you may need to carry out more steps to prepare MPF, for example:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Open different source files in Excel&lt;/li&gt;
&lt;li&gt;Combine required fields from different source files by using commands (such as) VLOOKUP, SUMIF &amp;amp; MATCH. You may have automated this process by using VBA.&lt;/li&gt;
&lt;li&gt;Convert the required files into text files&lt;/li&gt;
&lt;li&gt;Use DCS to convert those text files into MPF&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
However, as Excel is not an ideal data manipulation tool (Unfortunately MS Access doesn&#39;t seem to be a good choice too!), you may find out the run time becomes longer &amp;amp; longer once the policy data are getting bigger - furthermore you would need to pray hard that the Excel won&#39;t hangup!&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;Understand MPF Structure&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
If you open a MPF using Notepad, you can easily find out that a MPF consists of 3 parts, namely header, contents &amp;amp; footer - as shown in the following sample MPF below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3HYXKHrQ8a3LLV6p0jgK2FpxhE4g0FCv_Qesg462dz6DyO6iMe-1bDKFactPEtrN8paOW4O-fGg06PRBNo3lpF_heYtQsZkW7mfEMtJAuP7PMmp0lWEbSfI4-ld-3fjp6-WLePnIZRkk/s1600/ProphetMPF_Structure01.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3HYXKHrQ8a3LLV6p0jgK2FpxhE4g0FCv_Qesg462dz6DyO6iMe-1bDKFactPEtrN8paOW4O-fGg06PRBNo3lpF_heYtQsZkW7mfEMtJAuP7PMmp0lWEbSfI4-ld-3fjp6-WLePnIZRkk/s1600/ProphetMPF_Structure01.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Consist of &lt;b&gt;field names&lt;/b&gt; (variable names) and &lt;b&gt;policy data&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Delimited with &lt;b&gt;comma&lt;/b&gt; (&quot;,&quot;), similar to CSV format you are familiar with.&lt;/li&gt;
&lt;li&gt;1st field should always start with &quot;MPF identifier&quot; field, which the field name is defined as &quot;&lt;b&gt;!&lt;/b&gt;&quot; (or &quot;!1&quot; as shown in the above figure) and the values are defined as &quot;&lt;b&gt;*&lt;/b&gt;&quot;.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&quot;Contents&quot; is the most important part of your MPF, which consists of the policy data that you would like to input into Prophet run (the &quot;header&quot; is the MPF description and &quot;footer&quot; consists of some codes that only Prophet understand). In case you would like to use other tools to create MPF (such as Excel or FoxPro), basically you &lt;b&gt;only need to create the &quot;contents&quot; part&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;How to Create MPF Using FoxPro?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Before you start creating MPF using FoxPro, I would suggest you perform all necessary matching and consolidated all/most required policy data fields in ONE &lt;b&gt;master table&lt;/b&gt; (file format: DBF) - so that FoxPro only needs to refer to 1 table when generating MPF, as well as making your checking process easier when you need to find out how a particular value is produced.&lt;br /&gt;
&lt;br /&gt;
To better manage your FoxPro program, you may setup a separate PROCEDURE in the FoxPro program for generating MPF.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;STEP 1: &lt;/b&gt;&lt;u&gt;Generate MPF Using FoxPro&lt;/u&gt;&lt;br /&gt;
In the MPF generation procedure of your FoxPro program, I would suggest you split the procedure into 2 parts: (1) define values for all necessary variables first, and followed by (2) writing policy data.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Define values for Prophet variables that you need to include in MPF, especially those fields containing values deriving from multiple fields.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitjHd-eN1bnoL9nG-mRZtNhrF5IIVmABv720_vZWqy1Uq751A9lfOr8Fg2uughVlJYcs7kJnizSlaCbJlvHfAWVw3_17-Y5403HkImNvlOKU-MP0oZabhjNr4v4Re-4nhr7rhwpiYmmuc/s1600/MPF_FoxPro01.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitjHd-eN1bnoL9nG-mRZtNhrF5IIVmABv720_vZWqy1Uq751A9lfOr8Fg2uughVlJYcs7kJnizSlaCbJlvHfAWVw3_17-Y5403HkImNvlOKU-MP0oZabhjNr4v4Re-4nhr7rhwpiYmmuc/s1600/MPF_FoxPro01.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;By using &lt;b&gt;TEXTMERGE&lt;/b&gt; method, write the required field names to a text file. Please remember to include a comma (&quot;,&quot;) between 2 fields.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfWItX0WPBJPnECMAOyx_lNXDgsPFF_8rQOKmFOiWByUI8zZkK6VYhfUjm6xJtLs46Z4VyO4BnSMyC7iDGDS55NXwZwXa0vO1vUNflENz3aSHAQH4ou59JbI_jlbdkapGpT22_ZjumdB4/s1600/MPF_FoxPro02.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfWItX0WPBJPnECMAOyx_lNXDgsPFF_8rQOKmFOiWByUI8zZkK6VYhfUjm6xJtLs46Z4VyO4BnSMyC7iDGDS55NXwZwXa0vO1vUNflENz3aSHAQH4ou59JbI_jlbdkapGpT22_ZjumdB4/s1600/MPF_FoxPro02.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Similarly, write the values into the target text file using TEXTMERGE method. In case you would like to convert a numerical value to text value, please remember to set the length &amp;amp; no. of decimal places for the value and remove redundant spaces, such as &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ALLTRIM(STR(ANN_PREM,15,2)&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;)&lt;/span&gt;. You need to ensure the string length should cater for all numerical fields that require conversion - use ONE max length will do, otherwise you will be confused by having many different max length.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxZQ7dNfuL96EnW9j3nqfNy6_9gev-sOqzy8ixGpmAaU6ADsljyfZnsRvcgfbQM3KsSIUIrrW93XXOaPcRWHHo9OVvW9s_lQiBwJdXp71ry3ATL0NgSV53iD05vt9tN3-6Nn2YdBI13Xo/s1600/MPF_FoxPro03.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxZQ7dNfuL96EnW9j3nqfNy6_9gev-sOqzy8ixGpmAaU6ADsljyfZnsRvcgfbQM3KsSIUIrrW93XXOaPcRWHHo9OVvW9s_lQiBwJdXp71ry3ATL0NgSV53iD05vt9tN3-6Nn2YdBI13Xo/s1600/MPF_FoxPro03.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
If you open the file generated by Foxpro, it will look like the following screen capture - without header &amp;amp; footer:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK0QiTmHAQMgYnG4X04ANc7j7yOTKYKsfMgLHPn0SF42UvflFvKQmPTE_v7CvU-670E_iA3mcNfjKPwMf-Rbgafj8_g-NcGhJawkZrziRWMlUDJPH1VwGXqa7SXCwaCAVN1L0Rjp2wIDE/s1600/ProphetMPF_Structure04.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK0QiTmHAQMgYnG4X04ANc7j7yOTKYKsfMgLHPn0SF42UvflFvKQmPTE_v7CvU-670E_iA3mcNfjKPwMf-Rbgafj8_g-NcGhJawkZrziRWMlUDJPH1VwGXqa7SXCwaCAVN1L0Rjp2wIDE/s1600/ProphetMPF_Structure04.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;b&gt;STEP 2: &lt;/b&gt;&lt;u&gt;Open &amp;amp; Update MPF in Prophet&lt;/u&gt;&lt;br /&gt;
Open every MPF in Prophet - click &quot;Import&quot; button for &quot;Open&quot; dialog. If your MPF consists of any text fields (i.e. non-numeric except &quot;!&quot; field), you would need to select all records in a particular field and add &quot;Quote&quot; to the values (right-click, select &quot;&lt;b&gt;Quote&lt;/b&gt;&quot; in the menu). Otherwise, no modification is necessary unless you would like to include a description in the MPF (Correct, basically you only need to open &amp;amp; save the MPF if you do not have any text fields).&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0K9BMkmIVXL_hEjK7W21bZqyetq2SeRwjlaiAfGA-EOqEVKsLFgKDQSYyr14Ev_w4xuV80nohhRxNVdHzRZYslw4dLWjMON2SyEeVHVKkFQwMSguWAU7A28XJ1o066EP5I8h1yedCAQA/s1600/ProphetMPF_Structure03.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0K9BMkmIVXL_hEjK7W21bZqyetq2SeRwjlaiAfGA-EOqEVKsLFgKDQSYyr14Ev_w4xuV80nohhRxNVdHzRZYslw4dLWjMON2SyEeVHVKkFQwMSguWAU7A28XJ1o066EP5I8h1yedCAQA/s1600/ProphetMPF_Structure03.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;STEP 3: &lt;/b&gt;&lt;u&gt;Save MPF&lt;/u&gt;&lt;br /&gt;
Save MPF after you have made the necessary modifications in STEP 2. By saving the MPF, Prophet will automatically add the missing &quot;header&quot; &amp;amp; &quot;footer&quot; in the MPF and now the MPF are ready to be used for Prophet runs.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;A Reminder...&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
Apart from FoxPro, you may use Excel to prepare MPF for Prophet runs as well. However, please always note that the policy data should be sorted by SPCODE (Sub Product Code), in ascending order - otherwise, your Prophet run will fail. I would suggest you sort the policy data: (1) first by SPCODE in ascending order; (2) followed by policy number in ascending order.&lt;br /&gt;
&lt;br /&gt;
I would recommend that you always include policy number in your MPF and Individual model point result files (i.e. RPT files) - in case you require Prophet results by policy level in your analysis.</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/661324624908800059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2014/02/other-ways-to-prepare-prophet-model.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/661324624908800059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/661324624908800059'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2014/02/other-ways-to-prepare-prophet-model.html' title='Other Ways to Prepare Prophet Model Point Files? Try FoxPro!'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3HYXKHrQ8a3LLV6p0jgK2FpxhE4g0FCv_Qesg462dz6DyO6iMe-1bDKFactPEtrN8paOW4O-fGg06PRBNo3lpF_heYtQsZkW7mfEMtJAuP7PMmp0lWEbSfI4-ld-3fjp6-WLePnIZRkk/s72-c/ProphetMPF_Structure01.jpg" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-438414634418113551</id><published>2013-07-03T19:06:00.001+08:00</published><updated>2013-07-03T19:06:46.504+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Reporting"/><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Work"/><category scheme="http://www.blogger.com/atom/ns#" term="Excel / Spreadsheet"/><title type='text'>How Should I Do My UAT? (1): Program / Spreadsheet / Model</title><content type='html'>If you are working in the actuarial department of an insurance company, it may not be uncommon to you involving in various testing exercises, which are known as User Acceptance Testing (&quot;UAT&quot;) in general. Some of us may think that UAT is only applicable to the policy administration system implementation project (Oops... Do I remind on the non-stop follow-ups from your Project Manager?), but in fact UAT is also needed for the programs, spreadsheet templates or actuarial model we use to perform various actuarial studies - whether they are developed internally or by external consultant. It is particularly important for those tools which we are going to use to perform regular studies.&lt;br /&gt;
&lt;br /&gt;
In my view, there is no one right answer for the approach to be used in performing UAT on program / spreadsheet / model - most importantly, the approach that you adopt should allow the required testing to be carried out in a structured manner, and it should not create too much &quot;processes&quot; that doesn&#39;t help to improve quality of testing (e.g. filling in too many forms or having too many sign-offs). In case you are struggling in finding a suitable approach for your UAT exercises, perhaps the following proposed method can provide some ideas to you.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbvf3whmnnbEe2w6jQ1eW1chzqYcGE0pOoGs57TUsBjd89FoFRZlBTfjnDohcElizDrqn8QqlTHkOIna2B30W7RTDY13AiWTR0HK60_LfveaYFwuh9wqQmXh0I_YfhhsEnvuCSiZG_6YQ/s399/UATApproach_General.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbvf3whmnnbEe2w6jQ1eW1chzqYcGE0pOoGs57TUsBjd89FoFRZlBTfjnDohcElizDrqn8QqlTHkOIna2B30W7RTDY13AiWTR0HK60_LfveaYFwuh9wqQmXh0I_YfhhsEnvuCSiZG_6YQ/s1600/UATApproach_General.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;STEP 1: Prepare Test Script&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
To ensure your UAT to carried out in a systematic manner, the first thing you need to do is preparing a test script. A test script consists of (1) test scenario; (2) expected results; (3) actual results (which you will fill in after carrying the required testing). Below is a sample format of a test script for a FoxPro program:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbSozKLspFXm45B7tj06xDdqw2z7xFqrXBdXoZnVflFiq-PxFpgJT6fhnpxpXkf1ejLFOJ8jBm7v_JJf8fQEP58-ggPy1Jx-IS54fZna3p7ceFrMd7KYJSoteA-SZm6F9IVA8ZYIOVZcs/s500/UATApproach_TestScript.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbSozKLspFXm45B7tj06xDdqw2z7xFqrXBdXoZnVflFiq-PxFpgJT6fhnpxpXkf1ejLFOJ8jBm7v_JJf8fQEP58-ggPy1Jx-IS54fZna3p7ceFrMd7KYJSoteA-SZm6F9IVA8ZYIOVZcs/s1600/UATApproach_TestScript.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
A test script serves as a structured guide to the testers, so that they have a clear idea what areas to be tested and how they should carry out the required testing, in proper order. Without any test script, the testers will only test on what they manage to think of at they are doing the testing (it will be worse if they do the testing after office hour with tired minds), like a kid running helter skelter in the street. Apart from overlooking important areas to be tested, the errors / required modifications reported to the developer will not be in a proper order - which will increase time &amp;amp; efforts to modify the tested tools as well as redo the required testing.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;STEP 2: Prepare Test Data&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
Although it is good to use the actual policy data to perform UAT, sometimes the available data are unsuitable for testing, especially at the initial stage where you would like to detect any errors in formulas. Alternatively, you can use a simulated set of data with a specific pattern to do your testing, such as illustrated in the following diagram (a spreadsheet template for loss ratio study):&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLIa7L_ZOTVJ43xw9g82HrPlreaFAM_E6REl93bvMD_Nalz5TfkjEvy4idUHo-3hLyJP_edwpZnNG6fPzonD1M2xYqdUt6pa9WNBbAAaD4IP_HAeHdaX3je6EpbU5tT16u4wolbd7Apao/s533/UATApproach_TestData.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLIa7L_ZOTVJ43xw9g82HrPlreaFAM_E6REl93bvMD_Nalz5TfkjEvy4idUHo-3hLyJP_edwpZnNG6fPzonD1M2xYqdUt6pa9WNBbAAaD4IP_HAeHdaX3je6EpbU5tT16u4wolbd7Apao/s1600/UATApproach_TestData.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
As shown in the above diagram, you can easily detect the formula error for Plan D, which by right the claim incurred should be 1,300 and the calculated loss ratio should be 10.00%. If you use the actual data directly, you may not be able to detect such formula error and may lead to incorrect conclusion for Plan D.&lt;br /&gt;
&lt;br /&gt;
Of course, before you sign-off the program / spreadsheet / model, it is recommended to do at least one testing using actual data for reasonableness checking.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;STEP 3: Perform Testing&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Before you start doing testing, you may want to sort the test scenarios in an order that will allow you to carry out testing in a more efficient way. In case you find out some test scenarios left out when preparing the test scripts, you may add the test scenarios into your test script. Same for additional testing you carry out - especially the findings are meaningful.&lt;br /&gt;
&lt;br /&gt;
Similarly, in case you find out any test scenarios are no longer applicable, you may want to cancel the test scenarios. We should be flexible enough in handling various conditions arising during testing.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;STEP 4: Observe Outcomes&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
After completing each testing, you need to update the &quot;Actual Results&quot; column based on the outcomes you observe and decide the testing is &quot;passed&quot; or &quot;failed&quot;. If the UAT exercise is complex, you may consider using an &lt;b&gt;issue log&lt;/b&gt; in managing errors you report to the developer (IMPORTANT: Developer and Tester should &lt;b&gt;NOT&lt;/b&gt; be the same person) or modifications you request the developer to do.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;Some Remarks...&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
The above proposed approach is not new to actuarial people, since it uses the concept of &quot;actual vs. expected&quot; - which we are always doing in &quot;monitoring the results&quot; stage of the actuarial control cycle. However, in term of how comprehensive a test script should be, it is important to note that we should avoid having million dollar solutions to ten dollar problems - we cannot test everything or check everything, if it is a simple program, some simple testing will do (which justifies the time &amp;amp; effort spent).&lt;br /&gt;
&lt;br /&gt;
Also, we need to take note that a program / spreadsheet / model will not be perfect after doing ONE session of UAT. Please allow the tools to improve over time, but enhancements should not be done frequently (unless there are errors to be fixed) - otherwise, you will end up being busy all the time by doing testing.</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/438414634418113551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2013/07/how-should-i-do-my-uat-1-program.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/438414634418113551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/438414634418113551'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2013/07/how-should-i-do-my-uat-1-program.html' title='How Should I Do My UAT? (1): Program / Spreadsheet / Model'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbvf3whmnnbEe2w6jQ1eW1chzqYcGE0pOoGs57TUsBjd89FoFRZlBTfjnDohcElizDrqn8QqlTHkOIna2B30W7RTDY13AiWTR0HK60_LfveaYFwuh9wqQmXh0I_YfhhsEnvuCSiZG_6YQ/s72-c/UATApproach_General.jpg" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-2819738143907665819</id><published>2013-06-23T18:03:00.001+08:00</published><updated>2013-07-03T17:05:11.719+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>Multiple Prophet Workspaces? Combine into ONE!</title><content type='html'>&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;SCENARIO:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Mr. A, the head of valuation team of Company X, was struggling on how to manage his Prophet workspaces. Due to various constraints (time constraints, resource constraints, ...) in the past, his team ended up using multiple Prophet workspaces in performing valuation exercises - which incurred extra time &amp;amp; efforts in completing required studies. To make the matter worse, some workspaces were actually having the same products (well, the oldest workspace was used to calculate statutory reserves and the latest workspace was used to calculate IFRS reserves...) - his team needed to prepare different sets of model point files for these workspaces because the variables used to read model model point files having different names!&lt;br /&gt;
&lt;br /&gt;
The Chief Actuary was unhappy with this inefficiency in managing workspaces. He requested Mr. A to work out a way to consolidate the workspaces into one workspace, or at least lesser workspaces. The problem is, the Prophet Manager couldn&#39;t allocate much time for this unplanned exercise and he didn&#39;t have much time in performing UAT...&lt;br /&gt;
&lt;br /&gt;
(Note: Each workspace used only 1 library)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;MY PROPOSED SOLUTIONS&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
If we don&#39;t have time &amp;amp; resources in doing proper consolidation exercise on the multiple existing workspaces, perhaps the fastest way in consolidating multiple workspaces is to import libraries into a selected workspace:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Select a workspace as the base workspace&lt;/b&gt;. There is no fixed rule in selecting a base workspace - basically we can select the workspace having most products or most complicated. For example, if we have a workspace for individual products (&quot;Individual Workspace&quot;) and another one for group products (&quot;Group Workspace&quot;), we may want to make Individual Workspace as the base workspace as it is more complicated than the Group Workspace.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Import libraries into the base workspace.&lt;/b&gt;&amp;nbsp;A workspace can have more than 1 library, as long as the first character of the library name is different. To do so, we can select Tools &amp;gt; Import &amp;gt; Libraries. In case the existing library name in the source workspace is the same as the base workspace (e.g. &quot;Conventional&quot; or &quot;Unit Linked&quot;, we need to duplicate the library in the source workspace and rename into different name before we import the library into the base workspace.&lt;br /&gt;&lt;br /&gt;For the options to be selected in the &quot;Import of ???? Library&quot; dialog, I would suggest to retain all existing workspace level properties of the base workspace (hopefully we are using the same definitions for these properties in both workspaces...). It is OK to replace all existing definitions because the library you would like to import has different name.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcM9Lt3WCT5Kg5lDl-dyhDbHuvoGiPHuN1-3Alk3N32VyEMfdTRCDSTuuI9yBMzrePpZ6lYAH1P3skM7Bq_gRCYU5rn0xh81-hOvrqH3XsS-R8oyo1OHESuXJl926DK_0hwndFKAoWBfY/s1600/ConsolidateProphetWsp.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcM9Lt3WCT5Kg5lDl-dyhDbHuvoGiPHuN1-3Alk3N32VyEMfdTRCDSTuuI9yBMzrePpZ6lYAH1P3skM7Bq_gRCYU5rn0xh81-hOvrqH3XsS-R8oyo1OHESuXJl926DK_0hwndFKAoWBfY/s1600/ConsolidateProphetWsp.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Re-create products in the base workspace.&lt;/b&gt;&amp;nbsp;If the library name of the source workspace is originally different from the base workspace, we can import the products (Tools &amp;gt; Import &amp;gt; Products) from the source workspace. Otherwise, we need to re-create the products available in the source workspace - we should select the workspace having the least input variables as the base workspace! This is because we cannot duplicate a product for different library (even though both libraries are in the same workspace).&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Add fields in model point files.&lt;/b&gt; If the variables from different libraries that used to read the same values have different names, I would suggest to include additional fields in the source workspace&#39;s model point fields - i.e. there are 2 or more fields having the same values in the model point files. When Prophet performs calculations for a particular product, it will ignore those fields which the field names are unavailable in the library that the product belongs to. By including these additional fields, we no longer need to prepare multiple sets of model point files.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Of course, we still need to perform necessary checking on the run results before we finalize the workspace for production - we may need to do additional modifications especially if the source workspace uses different definitions for the workspace level properties.&lt;br /&gt;
&lt;br /&gt;
However, please note that the above proposal serves as short term solution only - we still need to do proper workspace consolidation in long run, otherwise it will require more efforts when we want to add new product into the workspace.</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/2819738143907665819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2013/06/multiple-prophet-workspaces-combine.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/2819738143907665819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/2819738143907665819'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2013/06/multiple-prophet-workspaces-combine.html' title='Multiple Prophet Workspaces? Combine into ONE!'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcM9Lt3WCT5Kg5lDl-dyhDbHuvoGiPHuN1-3Alk3N32VyEMfdTRCDSTuuI9yBMzrePpZ6lYAH1P3skM7Bq_gRCYU5rn0xh81-hOvrqH3XsS-R8oyo1OHESuXJl926DK_0hwndFKAoWBfY/s72-c/ConsolidateProphetWsp.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1430495970670036050.post-8356887431857722139</id><published>2013-01-21T15:17:00.001+08:00</published><updated>2013-01-21T15:17:25.805+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actuarial Modeling"/><category scheme="http://www.blogger.com/atom/ns#" term="Prophet"/><title type='text'>How Can We Manage Valuation Prophet Workspaces?</title><content type='html'>Finally it comes the time to prepare for actuarial valuation work for new financial year 2013. I think it is the correct time for me to share my proposal to one of my clients, Actuarial Department of &lt;i&gt;Company A&lt;/i&gt;, &amp;nbsp;in order to improve how they can manage their valuation Prophet workspaces.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;Existing Approach&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Apart from monthly valuation (i.e. computing statutory reserves), Company A performed various valuation exercises, such as market-consistent embedded value (&quot;MCEV&quot;), on regular basis. Currently, they use a centralized Prophet valuation workspaces for all sorts of valuation exercises, which designated run numbers are assigned to different types of exercises.&lt;br /&gt;
&lt;br /&gt;
In order to segregate runs for different valuation months, the Prophet workspace is duplicated every month (including the relevant tables) into a new folder. Of course, all workspaces are saved in a designated drive in the server.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9d8_gZUZVS1rIR7dgw8Dhyv23PD72w9bTboFWYivGiS1KcMMcIZzBWb1l3DMYpmNJJY_WiaL12touC-daXifP5IRGHRsHZAf4oK42X0EpycN8BusWGXhdsJ8AtxKaIbH4EVG2hNzUo9s/s1600/ManageValWsp01.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9d8_gZUZVS1rIR7dgw8Dhyv23PD72w9bTboFWYivGiS1KcMMcIZzBWb1l3DMYpmNJJY_WiaL12touC-daXifP5IRGHRsHZAf4oK42X0EpycN8BusWGXhdsJ8AtxKaIbH4EVG2hNzUo9s/s1600/ManageValWsp01.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Although there are some advantages using this approach, I do share with Company A its shortcomings:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Under utilization of run numbers&lt;/b&gt;&amp;nbsp;- Each Prophet workspace allows for up to 99 runs in a single workspace. By using this approach, many run numbers in a particular may not be utilized - in simple words, many run numbers are &quot;wasted&quot;. On the other hand, the December workspace (i.e. financial year end) may not have enough run numbers to cater for all sorts of analysis - especially those only done annually.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Housekeeping difficulties&lt;/b&gt; - No one likes to do housekeeping, but this is the task we need to do regularly (&quot;Yes we hate it but we have to do it...&quot;). Apart from increasing the housekeeping workloads (due to too many workspaces), it will also cause dispute on who should &quot;zip&quot; up the result files and backup accordingly - it is not efficient to have many teams doing housekeeping on a single workspace, and definitely it is not fair to appoint an UNFORTUNATE staff (normally junior staffs will be prospective &quot;candidates&quot;) to &quot;zip&quot; files &amp;amp; do backups.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Different needs in different valuation exercises&lt;/b&gt; - There are different requirements for different actuarial exercises. For example, for a annual budget workspace, we may need to create hypothetical products to project the new business for planned new products (which may require coding modifications in the library); however, for monthly valuation workspaces, it may be inappropriate to create such hypothetical products in the workspaces - especially if the required coding modifications impact reserves. Furthermore, monthly valuation workspaces may want to different &lt;b&gt;timing&lt;/b&gt;&amp;nbsp;of coding updates - the monthly valuation team may want to do several coding changes at once (say) quarterly, especially those have minor impacts to reserves (your appointed actuary may question you if you need to update your coding every month but minor impacts... Furthermore, you (as well as your boss) need to do testing-checking-review-documentation exercise every month until you don&#39;t have time to date your BF / GF...).&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;Proposed Approach&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Hence, in order to overcome the above-mentioned shortcomings, I have made the following proposal to my client. In my view, a Prophet workspace, which consists of actuarial models used to produce various calculations, should be properly controlled. Apart from differentiating developer / user access rights, by right &lt;b&gt;Prophet Manager should be the ONLY ONE to create a new PRODUCTION workspace&lt;/b&gt;, which the respective users should submit a request (ensure the process is simple - no multiple forms &amp;amp; sign-off, please) when a new workspace is needed.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH_I97Szin4tzhd4mT0geH67pV08ne3U9_SwhGjuwZBHHZe3TfPyCKn3hhZAufoUlUZRvFjJmckgHI0sKqbIEICOx1kLs-hwter9q5ZT5FIscDB1d1CEZMCb1QhT73mkPyghpp5lU_4aY/s1600/ManageValWsp02.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH_I97Szin4tzhd4mT0geH67pV08ne3U9_SwhGjuwZBHHZe3TfPyCKn3hhZAufoUlUZRvFjJmckgHI0sKqbIEICOx1kLs-hwter9q5ZT5FIscDB1d1CEZMCb1QhT73mkPyghpp5lU_4aY/s1600/ManageValWsp02.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
My proposal is:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Designated workspaces for each valuation team&lt;/b&gt; - Setup separate workspaces for different valuation team, or even by actuarial exercise if needed. For example, a particular valuation team responsible for both embedded value and budget exercises may want to have separate workspaces for each exercise (as the requirements are different).&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Continuous use of workspaces&lt;/b&gt; - Utilize as many run number as possible in a workspace, until a new workspace is created to replace the workspace. &lt;br /&gt;&lt;br /&gt;For example, we create a monthly valuation workspace and name it as &quot;p_mv13a&quot;. If there is no revision needed for Jan &#39;13-Jun &#39;13, we can continue to use p_mv13a to perform monthly valuation runs for Jan &#39;13-Jun &#39;13. In case a coding revision is needed during Jul &#39;13, we can create the revised workspace and name it as &quot;p_mv13b&quot;. Apart from managing less workspaces, I think you can easily see that your housekeeping work is lesser.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;When to create a new workspace?&lt;/b&gt; - In order to control number of production workspaces, I would suggest the following approach when we want to introduce a new product to a workspace:&lt;br /&gt;&lt;br /&gt;- If the new product doesn&#39;t involve any coding modifications in the library (i.e. only modify the definitions in input variables) and doesn&#39;t require change of structure in any table, I would think that it is OK to create the new product in the existing workspace - instead of creating a new workspace for this purpose - as this addition of new product doesn&#39;t affect existing products / run structure / run settings. Of course, we need to properly define the workspace version (such as updating the workspace version from 1.0 to 1.1).&lt;br /&gt;&lt;br /&gt;- If the new product created to replace an existing product (e.g. split an existing product into 2 products), I would think it is necessary to create a new workspace. The existing run structure / run setting containing the replaced product are no longer workable without modification.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Use run control form&lt;/b&gt; - Use a run control form to document the run activities, so that we have a proper reference in the future in case we need to use / check a specific run. Of course, such documentation is not a pleasant thing to do - since we already have run log for each run, the run control form should be simple and with SOFTCOPY (so that we can duplicate and existing run control form and update the form easily).&lt;br /&gt;&lt;br /&gt;The above-mentioned &quot;run activities&quot; include tables updated, product selected and error/warnings handling (especially those we have ignored).&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Try to make Prophet run error free&lt;/b&gt; - I would recommend that we should try to make a Prophet run error free - in case there is no longer any in force policy for an old product, please remove from the run structure. If we keep ignoring errors arising from Prophet run (which most of them are missing model point files), it would be possible that we will overlook the REAL run error - which we may only discover when we analyze results or NOT discover it at all! Furthermore, having many errors in a Prophet run will require additional efforts to check the run log.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Housekeeping &amp;amp; backup regularly, please&lt;/b&gt; - Although disk space is quite cheap nowadays, it is still a good practice to do housekeeping &amp;amp; backup regularly. If we &quot;zip&quot; up previous result files regularly, it will not only help to reduce the time required for backup - it also help us to ensure enough disk spaces for future Prophet runs (of course you don&#39;t want to find out that you have to &quot;zip&quot; files when you are running out of time...).&lt;br /&gt;&lt;br /&gt;If you store your workspaces and run results in a server, &lt;u&gt;please ensure that your IT colleagues do necessary backup regularly&lt;/u&gt;.&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://actuarialworkinglife.blogspot.com/feeds/8356887431857722139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://actuarialworkinglife.blogspot.com/2013/01/how-can-we-manage-valuation-prophet.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/8356887431857722139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1430495970670036050/posts/default/8356887431857722139'/><link rel='alternate' type='text/html' href='http://actuarialworkinglife.blogspot.com/2013/01/how-can-we-manage-valuation-prophet.html' title='How Can We Manage Valuation Prophet Workspaces?'/><author><name>Lim Chee Beng</name><uri>http://www.blogger.com/profile/12890245888997149865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBXhULxBHvTIGZXH8TStmcy9iI-jhgbL9ptmpxXsPoyYhXSkLi42VlNx1Ju8Hv-b8UXxtT3gHG_gAZzk_bAsoGr8CgPT66XksjOqdudPvV2fK0Pnt-rbA3EdLtB4zlA/s220/LimCheeBeng.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9d8_gZUZVS1rIR7dgw8Dhyv23PD72w9bTboFWYivGiS1KcMMcIZzBWb1l3DMYpmNJJY_WiaL12touC-daXifP5IRGHRsHZAf4oK42X0EpycN8BusWGXhdsJ8AtxKaIbH4EVG2hNzUo9s/s72-c/ManageValWsp01.jpg" height="72" width="72"/><thr:total>2</thr:total></entry></feed>