<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>Matt Terski's Blog</title>
    <link>http://www.terski.com/blog/</link>
    <description>Writing tomorrow's legacy applications today</description>
    <copyright>Matt Terski</copyright>
    <lastBuildDate>Tue, 20 Jul 2004 04:43:01 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.7.5016.0</generator>
    <managingEditor>blogg@terski.com</managingEditor>
    <webMaster>blogg@terski.com</webMaster>
    <item>
      <trackback:ping>http://www.terski.com/blog/Trackback,guid,f32cdeed-5394-491f-8749-e979451893db.aspx</trackback:ping>
      <pingback:server>http://www.terski.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.terski.com/blog/PermaLink,guid,f32cdeed-5394-491f-8749-e979451893db.aspx</pingback:target>
      <wfw:comment>http://www.terski.com/blog/CommentView,guid,f32cdeed-5394-491f-8749-e979451893db.aspx</wfw:comment>
      <wfw:commentRss>http://www.terski.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=f32cdeed-5394-491f-8749-e979451893db</wfw:commentRss>
      <slash:comments>0</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      In a previous post, I've explained that I have an interest in rating engines. In fact,
      I have more than an interest -- I have an opinion. And that opinion is: If you plan
      on writing code to calculate an insurance premium, it's often best to write a custom
      rating engine.
   </p>
        <p>
      But before I can expound on this, I need to describe what a rating engine is. I'll
      start by describing the problem that a rating engine is supposed to solve. Insurance
      companies - more specifically, the actuaries - capture a lot of knowledge that is
      used to calculate an insurance premium. That knowledge has a few annoying characteristics:
      It is complex, it is large, and it subject to periodic, if not frequent, change.
   </p>
        <p>
      You could just write source code to calculate an insurance premium based on that actuarial
      knowledge. But your code would have a few annoying characteristics: It would be complex,
      it would be large, and it would be subject to periodic, if not frequent, change. Or,
      if you were diligent enough to prevent the first two characteristics, your code would
      accrue another characteristic: It would be very costly.
   </p>
        <p>
      So a rating engine should incorporate all of that actuarial knowledge to calculate
      a premium, but be neither too large nor too complex. It should deal with change gracefully.
      But still, what exactly does a rating engine do? 
   </p>
        <p>
      A rating engine has one primary function and a few supporting functions. Expressed
      as a use case, the primary function is to <em>Calculate Premium</em> for a proposed
      set of coverages.
   </p>
        <p>
          <img height="186" src="/blog/content/binary/re-uc.GIF" width="485" border="0" />
        </p>
        <p>
      But in order to calculate that premium, the user (let's call them <em>Rate Consumers</em>)
      needs to know how to assemble a valid set of proposed coverages. Insurance companies
      have lots of dependencies and constraints that describe what coverages and options
      can go together. This aspect of insurance - product design - involves capturing the
      knowledge of the product designer. The engine needs to expose this knowledge to the
      Rate Consumer in some way. We'll call this use case <em>Get Coverage Catalog</em>.
   </p>
        <p>
      It only stands to reason that when a Rate Consumer asks for a premium, the engine
      should check whether the proposed coverages are valid according to the coverage catalog.
      This functionality is really part of the Calculate Premium use case, but to draw attention
      to it, we'll put it in its own use case, <em>Validate Proposed Coverage</em>.
   </p>
        <p>
      Finally, there needs to be some way to transform the knowledge that exists in the
      heads of the actuaries and product designers into a form the rating engine can use.
      The actor responsible for doing this is a Rate Administrator. We'll call this use
      case <em>Manage Coverage Catalog and Rates</em>.
   </p>
        <img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=f32cdeed-5394-491f-8749-e979451893db" />
      </body>
      <title>What is a Rating Engine?</title>
      <guid>http://www.terski.com/blog/PermaLink,guid,f32cdeed-5394-491f-8749-e979451893db.aspx</guid>
      <link>http://www.terski.com/blog/PermaLink,guid,f32cdeed-5394-491f-8749-e979451893db.aspx</link>
      <pubDate>Tue, 20 Jul 2004 04:43:01 GMT</pubDate>
      <description>&lt;p&gt;
   In a previous post, I've explained that I have an interest in rating engines. In fact,
   I have more than an interest -- I have an opinion. And that opinion is: If you plan
   on writing code to calculate an insurance premium, it's often best to write a custom
   rating engine.
&lt;/p&gt;
&lt;p&gt;
   But before I can expound on this, I need to describe what a rating engine is. I'll
   start by describing the problem that a rating engine is supposed to solve. Insurance
   companies - more specifically, the actuaries - capture a lot of knowledge that is
   used to calculate an insurance premium. That knowledge has a few annoying characteristics:
   It is complex, it is large, and it subject to periodic, if not frequent, change.
&lt;/p&gt;
&lt;p&gt;
   You could just write source code to calculate an insurance premium based on that actuarial
   knowledge. But your code would have a few annoying characteristics: It would be complex,
   it would be large, and it would be subject to periodic, if not frequent, change. Or,
   if you were diligent enough to prevent the first two characteristics, your code would
   accrue another characteristic: It would be very costly.
&lt;/p&gt;
&lt;p&gt;
   So a rating engine should incorporate all of that actuarial knowledge to calculate
   a premium, but be neither too large nor too complex. It should deal with change gracefully.
   But still, what exactly does a rating engine do? 
&lt;/p&gt;
&lt;p&gt;
   A rating engine has one primary function and a few supporting functions. Expressed
   as a use case, the primary function is to &lt;em&gt;Calculate Premium&lt;/em&gt; for a proposed
   set of coverages.
&lt;/p&gt;
&lt;p&gt;
   &lt;img height=186 src="/blog/content/binary/re-uc.GIF" width=485 border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   But in order to calculate that premium, the user (let's call them &lt;em&gt;Rate Consumers&lt;/em&gt;)
   needs to know how to assemble a valid set of proposed coverages. Insurance companies
   have lots of dependencies and constraints that describe what coverages and options
   can go together. This aspect of insurance - product design - involves capturing the
   knowledge of the product designer. The engine needs to expose this knowledge to the
   Rate Consumer in some way. We'll call this use case &lt;em&gt;Get Coverage Catalog&lt;/em&gt;.
&lt;/p&gt;
&lt;p&gt;
   It only stands to reason that when a Rate Consumer asks for a premium, the engine
   should check whether the proposed coverages are valid according to the coverage catalog.
   This functionality is really part of the Calculate Premium use case, but to draw attention
   to it, we'll put it in its own use case, &lt;em&gt;Validate Proposed Coverage&lt;/em&gt;.
&lt;/p&gt;
&lt;p&gt;
   Finally, there needs to be some way to transform the knowledge that exists in the
   heads of the actuaries and product designers into a form the rating engine can use.
   The actor responsible for doing this is a Rate Administrator. We'll call this use
   case &lt;em&gt;Manage Coverage Catalog and Rates&lt;/em&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=f32cdeed-5394-491f-8749-e979451893db"&gt;</description>
      <comments>http://www.terski.com/blog/CommentView,guid,f32cdeed-5394-491f-8749-e979451893db.aspx</comments>
      <category>Rating Engines</category>
    </item>
  </channel>
</rss>