AISA Next reference extract =========================== Source document : InsPrem_PC.docx - "Premium P&C (V1.1)", the premium-calculation specification the Product Configurator is built against (title page dated 08.09.2026). Extracted : 08.09.2026, from word/document.xml - paragraphs and table cells in document order, heading levels kept as markdown hashes. Tables lose their column boundaries: a table reads as one cell per line, in row order. Images : 3 figures in the source are NOT in this extract; open the .docx for those. Why it is here : the wiki cites this document for the premium vocabulary (10 Architecture/20 Configuration/Premium Vocabulary.md). tmp/ is not tracked, so the citation needs a tracked artefact - this file is it. Status : a specification of how premium SHOULD work. It carries recorded defects and contradicts the live database in at least two places - see 90 Reference/ Schema Quirks.md section 8. Take the words from it; verify every column. ---------------------------------------------------------------------------------------------- Premium P&C (V1.1) September 8, 2026 September 8, 2026 9/8/26 Table of Content 1. Introduction4 2. Premium definitions4 3. Premium components5 3.1. Base premium5 3.2. Base premium example – Casco6 3.3. Loading and Discounts7 3.4. Discounts and loadings example Casco9 3.5. Taxes and fees10 3.6. Written premium after taxes and fees – example10 4. Calculation11 4.1. Premium factors11 4.2. Intermediate calculations11 4.3. Short rates11 4.3.1 Short Rate Table Method11 4.3.2 Short Rate Pro Rata Method11 4.4. Written-off premiums and refunds12 4.4.1 Written-off examples12 4.5. Renewal premium rules14 4.6. Seasonal premiums14 4.7. Policy payment plan calculations14 4.7.1 Payment plan for policy – first annex14 4.7.2 Payment plan for annex – premium increase15 4.7.3 Payment plan for annex – premium decrease17 4.7.4 Payment plan for annex – policy cancellation19 4.8. Rounding21 5. Calculation results21 5.1. Policy tables21 5.2. Mapping21 5.3. Pol_prem_rate21 5.3.1 Base premium21 5.3.2 Loadings, discounts, taxes and fees23 5.4. Pol_prem23 5.4.1 Pol_prem_rate update23 5.4.2 Pol_prem filling up24 6. Annex premiums - pol_prem data25 6.1. Inherited from previous annex25 6.1. New premium25 7. Policy payment plan28 7.1. generate records in POL_PPLAN – policy (first annex) SR_ANNEX_ID_PREV IS NULL29 7.2. generate records in POL_PPLAN – annexes - SR_ANNEX_ID_PREV IS NOT NULL32 8. Annex premium calculation35 8.1. New covers35 8.2. Discontinued covers35 8.3. Changed covers35 8.4. Write off and Annex premium36 9. Appendix A – Examples39 9.1. Bulstrad Rating – Casco (Bonus casco)39 9.1.1 Base Premium39 9.1.2 Loadings40 9.1.3 Discounts43 9.1.4 Limitations43 September 8, 2026 September 8, 2026 # Introduction Тhe document describes an algorithm for calculating a non-life insurance premium. The specifics of health and life insurance calculations are not described in this document. # Premium definitions Written premium - A written premium is the total amount customers are required to pay for insurance coverage on policies issued by a insurance company(IC) during a specific period of time. Net premiums written is the sum of premiums written by an insurance company over the course of a period, less premiums ceded to reinsurance companies, plus any reinsurance assumed. Written premiums can be measured as net, a figure that considers associated costs linked to a policy. Net premiums written represents how much of the premiums the company gets to keep for assuming risk. Gross written premium (GWP) - The net premium value of a policy differs from the policy’s gross premium value, which takes into account the expenses. Types of expenses that a company must take into account include commissions paid to agents, legal expenses associated with settlements, salaries, taxes, acquisition expenses, claim expenses and other general expenses. The amount that PAS algorithm calculates is GWP. Modal premium (installment) - The policy owner can choose the frequency of paying the premium. Generally, the choices are monthly, quarterly, semi-annually, or annually. Typically, the more frequently PH opt to pay, the greater the total amount will be that is due for the year. The modal premium is increased with so-called modal loading i.e. 12*monthly premium > annual premium. However this is not the usual case in non-life where often 12*monthly premium = annual premium, but the frequency is not limited to monthly, quarterly, semi-annually, or annually only. Policy payment plan - payment plan or installment plan defines the amount of the premium instalment and the date when the installment is due. Written off premium – premium that cannot be recognized as revenue because the policy is lapsed, or cancelled. (don't confuse it with Insurance write offs can happen because of a car crash - car write-off - mentioned in our Bot) Earned premium (EP) - earned premium refers to the premium for the portion of a policy that has expired. It is what the insured party has paid for a portion of time in which the insurance policy was in effect, but has since expired. Unearned Premium (UPR) - Unearned premium is the premium corresponding to the time period remaining on an insurance policy. UPR = GWP – EP; Refund - The most common type of premium refund occurs when the insurance is purchased for a specific time frame but the policyholder cancels it before that time period is up. If the insurance has gone unused, a refund is issued. Refunds are still possible if some money has been paid through the policy, but it is more difficult to acquire one. Monthly anniversary: Policy begin is 03-Jan then monthly anniversary is 03-feb, or-mar,etc. Anniversary: Policy begin is 03-Jan-2020 then policy anniversary is 03-Jan-2021, 03-Jan-2022, 03-Jan-2023, etc Payment anniversary: Policy begins is 03-Jan with quarterly payments then payment anniversary is 03-jan, 03-apr, o3-jul; 03-oct # Premium components ## Base premium The amount of premium for an insurance is impacted by several very different factors. Premium calculates for each cover separately, as the factors for the different covers are different. Some of the factors can be used for definition of the so-called base premium, while some are just considered as discounts or loadings on top of the base premium. For example, the premium for car insurance is impacted by: Driving record – The better the record is, the lower your premium. If PH had accidents or serious traffic violations, the premium is much bigger. PH pays more if he/she is a new driver without an insurance track record. How much the car is used – The more miles the PH drive, the more chance for accidents so PH pays more. Location– Due to different rates of vandalism, theft and accidents between big cities and small towns the rate can be very different for a different locations. Parking area: (on the street or in a secure garage). An anti-theft features can be considered for a discount. Driver age – In general, mature drivers have fewer accidents than less experienced drivers, particularly teenagers. Insurers generally charge more if teenagers or young people below age 25 drive your car. Gender – Statistically, women tend to get into fewer accidents, have fewer driver-under-the-influence accidents (DUIs) and—most importantly—have less serious accidents than men. So women often pay less for auto insurance. The car – The cost of the car is a major factor in the cost to insure it. Other variables include the likelihood of theft, the cost of repairs, its engine size and the overall safety record of the car. Different companies use different factors for one and the same coverage, and also one company may have one factor included in the base premium while another company may have the same factor defined as a discount. Consider the case when base premium includes: ‘How much the car is used’, ‘The car engine size’, The rate can be defined as: Percent Promille Lumpsum Per day (travel) Per-mile (car insurance) The premium rate (when it is percent/ promille) can be applied on: Insured value Object Market value Revenue from previous year (not applicable for personal insurance) Sum of some other covers premium (for life only) others ## Base premium example – Casco Annual Mileage Engine power (HP) Rate IV% Up to 10000 Up to 100 5.5 10000 - 20000 Up to 100 6 Above 20000 Up to 100 6.5 Up to 10000 101 - 200 5.7 10000 - 20000 101 - 200 6.2 Above 20000 101 - 200 6.7 Up to 10000 201 - 300 5.9 10000 - 20000 201 - 300 6.4 Above 20000 201 - 300 6.9 Up to 10000 Above 300 6.1 10000 - 20000 Above 300 6.5 Above 20000 Above 300 7.1 Car definition: The car is 2010 Hyundai Genesis – 306 HP Mileage is 20000 Therefore, the rate is 6.5 Car Market value is: 20,000 EUR and this will be the Insured Value Base Premium = IV * rate/100 = 20,000*6.5/100 = 1300 EUR ## Loading and Discounts The amounts of discounts / loadings are kept separately. The way of calculation and the order of calculation is defined for each product. Loadings can be: Percent of the base premium Promille of the part of IV which is above a certain amount (applicable for group life and health) A formula that defines an amount (life insurance) Lump sum Discounts for P&C are usually percent of the base premium. Discounts and loadings can be calculated automatically or can be given by the underwriter manually. Agents also can give some manual discounts – usually at the expense of the commission. Discounts can have limits like: Maximum discount value for a given discount Maximum total discount value for a cover Maximum total discount value for an object Maximum total discount value for the policy Typically, there are no limitations for loadings, but is better to have the possibility to restrict them too. The discounts that have to be processed differently and need to be marked as such kind of discounts are: No claim bonus (NCB) – there are 3 types NCB – applicable on renewal if PH has no claims in the preceding years – i.e. clean claim record NCB – that can be granted to a new a client, but the discount becomes payable on first claim NCB – the discount amount is refunded to the client at the end policy if no claims are registered during the policy period. Commercial discount – Given by underwriter or sales person for a non-risk reason – for example ‘Volume Discount’ given if the PH purchases more than one policy – let’s say Casco and property Discount at expense of the commission – there should be a check that this discount is not bigger than commission and this discount should not participate in restrictions for the total discount value Discounts and loadings can be defined at level on: Policy Insured object Cover There are two basic approaches for applying the discounts and loadings to the base premium: Multiple: Тhe discounts are multiplied If there are 2 discounts 10% and 5 % the calculation is: P = {BP-(BP x 0.1)}( 1 - 0.05) = (1 – 0.1) * (1 – 0.05) * BP Sum: the discounts are added up If there are 2 discounts 10% and 5 % the calculation is: P = BP-((BPx0.1) + (BPx0.05)) = (1 – 0.1 – 0.05) * BP The order of applying is important when especially when both types are combined. ## Discounts and loadings example Casco #### Driver age (DrAge) Age Loading Up to 25 20 26 -30 10 Above 30 0 #### Driving record (DrRec) Claims in prev. year Loading 3 25 2 15 1 5 0 0 #### Location – parking (LPr) Parking area Discount Secure garage 15 Home garage 10 On the street 0 #### Location - driving area (LDrA) Parking area Discount Village 15 Small town 10 City 0 #### Written premium after discounts and loadings Calculation parameters: Base premium: 1300 EUR Driver age: 29 – DrAge Loading = 30% (0.3) (calculation way multiply) Gale’s note: isn’t it 10% Driving record: 1 claim DrRec Loading = 5% (0.05) (calculation way multiply) Location parking – Home garage LPr discount = 10% (0.1) (calculation way sum) Location driving – Village LDrA discount = 10% (0.1) (calculation way multiply) Gale’s note: isn’t it 15% Variant (A) where the order of calculation is: DrRec, DrAge, LDrA, LPr Written premium = BP * (1+ DrRec) * (1+ DrAge) * (1 - LDrA) - (BP*LPr) Written premium = 1300 * 1.05 * 1.3 * 0.9 - (1300*0.1) = 1467 Georgi: It should be 1597.05? Variant (B) where the order of calculation is: LPr, DrRec, DrAge, LDrA, Written premium = BP * (1+ DrRec) * (1+ DrAge) * (1- LDrA) * (1- LPr) Written premium = 1300 *0.9* 1.05 * 1.3 * 0.9 = 1437 ## Taxes and fees The amounts of taxes and fees are kept separately. Some of them are not refundable, which is considered during calculation of premiums for annexes or policy cancellation. Some of them are payable with the first installment – i.e., cannot be paid on installments. Taxes and fees can be defined at level on: Policy Insured object Cover Premium fees and taxes can be many and varied. Only the more common ones are described here. A lump sum tax/fee at policy level Tax defined as percent on written premium ## Written premium after taxes and fees – example Written premium before taxes is 1437. In the example taxes are: 10 EUR stamp tax – nonrefundable – payable with the first instalment 20 EUR policy fee – refundable payable with the first installment 2% insurance premium tax where the tax base is the total policy premium – payable on instalments Final written premium is 1437*1.02 + 10 + 20 = 1495.74 # Calculation ## Premium factors The factors that affect the premium can be found in any table that is part of the policy definition. In addition, it may be necessary to calculate, for example, the number of claims paid in the previous year or to calculate the ratio between the premium paid and the claims paid. The factors cannot be defined in advance. Each company uses a different set of them to determine their premiums. This set can be changed frequently enough and at least once a year. ## Intermediate calculations There are premium calculations that are made in stages. Then an intermediate rounding is usually done. For such a cases, a specific program for the corresponding product is made. ## Short rates Short rates always reduce the amount of refund if policy is cancelled early and increase the premium for policies purchased for a period less than one year. ### Short Rate Table Method Short rates are defined for a periods less than one year for products that are purchased for a such a small periods – travel insurance, MTPL for regions where local MTPL is valid, etc. On example for such rates is: Period Premium 1 month 200 3 months 600 6 months 800 12 months 1200 If the customer has policy for one year and cancel it at the end of the third month, the refund will be 600 instead of 900 if the calculation is proportional. ### Short Rate Pro Rata Method Insurers may use a pro rata short rate by calculating the premium for part of a year and reducing any refund by a set proportion such as 10 percent. For example if the annual premium is 1200 and policy is cancelled in the middle, the refund will be 540 instead of 600. ## Written-off premiums and refunds Upon termination of the policy and / or coverage, the insurer may only retain the premium earned. The unearned premium is returned to the customer. The calculation of the premium earned may vary depending on the policy change. When the whole policy is cancelled the cases could be: Proportional monthly Proportional daily According to short rates When the calculation is because of a policy change the cases are: Proportional monthly Proportional daily ### Written-off examples The examples below explain the different calculation methods Policy data: From 01-01-2020 to 31-12-2020 Cancellation date: 01-06-2020 - i.e. the policy is in force for 5 months Annual premium: 1495.74 Where 10 EUR stamp tax – non refundable 20 EUR policy fee – refundable Payments are as follows: Due date Instalment Description 01-01-2020 396.45 paid 01-04-2020 366.43 paid 01-07-2020 366.43 not paid 01-10-2020 366.43 not paid Stamp tax should be excluded from calculation, because it is not refundable and paid with the first installment Two values should be calculated: Written-off premium – i.e. unearned premium, where base of calculation is: Annual premium – stamp tax: 1495.74 - 10 = 1485.74 Refund – i.e. unearned paid premium, where base of calculation is: Installment 1 + installment 2 – stamp tax – policy fee : 396.45 + 366.43 – 10 -11.70 = 732,88 policy fee (20) is calculated separately, because is fully paid. #### Proportional daily calculation Earned period is: 152 days (‘31-12-2020’+1 – ‘01-06-2020’) Cancellation date - policy begin Unearned period is: 214 days (‘31-12-2020’+1 – ‘01-06-2020’) Policy end date – cancellation date Policy duration: 366 days (‘31-12-2020’+1 – ‘01-01-2020’) Policy end date – policy begin Unearned paid period is: 30 days (’01-07-2020’+1 – ‘01-06-2020’) Next due date – cancellation date Paid period is: 182 days (’01-07-2020’+1 – ‘01-01-2020’) Next due date – begin date Write-off = 1485.74 * 214/366 = 868,7114 Refund without the policy fee = 732,88 *30/182 = 120.80 Refund for the policy fee = 20 * 214/366 = 11.70 Premium refund is: 132.50 #### Proportional monthly calculation Earned period is: 5 months - months between (Cancellation date, policy begin) Unearned period is: 7 month between (Policy end date, cancellation date) Policy duration is: 12 months between (Policy end date, policy begin) Unearned paid period is: 1 month between (Next due date, cancellation date) Paid period is: 6 months between (Next due date, begin date) Write-off = 1485.74 * 7/12 = 866,6817 Refund without policy fee = 732,88 *1/6 = 122.15 Refund policy fee = 20 * 7/12 = 11.66 Premium refund is: 133.81 #### Short rates Earned period is: 5 months - months between (Cancellation date, policy begin) Unearned period is: 7 months between (Policy end date, cancellation date) Policy duration is: 12 months between (Policy end date, policy begin) Unearned paid period is: 1 month between (Next due date, cancellation date) Paid period is: 6 months between (Next due date, begin date) Let’s say that according to the short rate the premium for 6 months 900. (150/month) Write-off = 1485.74 -900 = 585.74 Refund without policy fee = 0 Refund policy fee = 0 Premium refund is: 0 ## Renewal premium rules The IC might (and usually do annually) change the rates. Therefore, on renewal the base premium is usually bigger. Therefore, when renewed, the base premium is usually higher. In some countries, the renewal policy premium may not be higher by more than 10% (just an example) than the previous year's premium. In addition to a certain percentage, they can also define a cap - for example, not more than 300 Euros. However, this rule does not apply if the premium is increased because the risk has changed due to the customer's fault - for example, she has moved to a more risky neighborhood. Therefore, the algorithm for calculating the premium on renewal must first determine the reason for the increase, and if it is due only to the rates raised, only then to apply the restrictions. ## Seasonal premiums The approach is used for insured objects that have different risk in different seasons of the year. For example, boats, snowboards, leisure house, etc. Two approaches are used: the premium for the corresponding cover has different rates for different periods; the premium is flat, but the earned premium is not calculated proportionally. Both approaches affect the calculation of the written-off premium in the annexes. This approach is not used with Casco insurance. However in Casco insurance, there is another case (for example in Russia) that is similar to seasonal premium - a declaration for not using the car for a certain period. In this case, the collision coverage is not charged for this period. In both cases there are periods that have different premiums. Those periods are defined on object level and might affect premiums of all covers or some covers. For seasonal premiums the periods are predefined and can be loaded in policy automatically, while for the second case the periods are defined by policy holder. The data for such periods is defined in pol_object_values ## Policy payment plan calculations ### Payment plan for policy – first annex For quarterly payments and policy effective date on 01-JAN-2020 the policy payment plan is: Due date Instalment Description 01-01-2020 396.45 366.45 + 10+20 where 366.45= 1437*1.02/4 + rounding difference 01-04-2020 366.43 1437*1.02/4 01-07-2020 366.43 1437*1.02/4 01-10-2020 366.43 1437*1.02/4 ### Payment plan for annex – premium increase Consider the case: Policy premium (first annex) is 1250 where 50 is tax payable with the first instalment), payable on 4 installments; policy begin is 1-1-2020 Initial payment plan is: Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 01-07-2020 300 1 01-10-2020 300 1 #### Option a: annex begin 01-07-2020 premium increase is 600 Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 01-07-2020 300 1 01-07-2020 300 2 01-10-2020 300 1 01-10-2020 300 2 #### Option b: annex begin 01-06-2020 premium increase is 700 700/7 – 100 installment for one month Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 01-06-2020 100 2 01-07-2020 300 1 01-07-2020 300 2 01-10-2020 300 1 01-10-2020 300 2 #### Option c: annex begin 01-06-2020 premium increase is 200 200/7 – 28.6 installment for one month Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 01-06-2020 28.60 2 01-07-2020 300 1 01-07-2020 85.70 2 01-10-2020 300 1 01-10-2020 85.70 2 #### Option d: annex begin 01-06-2020 premium increase is 200 200/7 – 28.6 installment for one month Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 01-06-2020 28.60 2 01-07-2020 300 1 01-07-2020 85.70 2 01-10-2020 300 1 01-10-2020 85.70 2 #### Option f annex begin 15-06-2020 premium increase is 200 200/200 – 1 installment for a day 01-01-2021 – 15-06-2020 = 200 days Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 15-06-2020 15 2 (15 days in June) 01-07-2020 300 1 01-07-2020 92.5 2 (200-15)/2 01-10-2020 300 1 01-10-2020 92.5 2 ### Payment plan for annex – premium decrease Consider the case : Policy premium (first annex) is 1250 where 50 is tax payable with the first instalment) , payable on 4 installments; policy begin is 1-1-2020 Initial payment plan is: Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 01-07-2020 300 1 01-10-2020 300 1 #### Option a: annex begin 01-07-2020 premium decrease is 600 Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 01-07-2020 300 1 01-07-2020 -300 2 01-10-2020 300 1 01-10-2020 -300 2 #### Option b: annex begin 01-06-2020 premium decrease is 700 Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 01-06-2020 -100 2 refund 01-07-2020 300 1 01-07-2020 -300 2 01-10-2020 300 1 01-10-2020 -300 2 #### Option c: annex begin 01-06-2020 premium decrease is 200 Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 01-07-2020 300 1 01-07-2020 -100 2 01-10-2020 300 1 01-10-2020 -100 2 #### Option d: annex begin 01-06-2020 premium decrease is 200 Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 01-07-2020 300 1 01-07-2020 -100 2 01-10-2020 300 1 01-10-2020 -100 2 #### Option f annex begin 15-06-2020 premium decrease is 200 Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 01-07-2020 300 1 01-07-2020 -100 2 01-10-2020 300 1 01-10-2020 -100 2 ### Payment plan for annex – policy cancellation Consider the case : Policy premium (first annex) is 1250 where 50 is tax payable with the first instalment) , payable on 4 installments; policy begin is 1-1-2020 Initial payment plan is: Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 01-07-2020 300 1 01-10-2020 300 1 #### Option a) cancellation form effective date 01-01-2020 Due date Instalment annex 01-01-2020 350 1 01-01-2020 -300 2 01-04-2020 300 1 01-04-2020 -300 2 01-07-2020 300 1 01-07-2020 -300 2 01-10-2020 300 1 01-10-2020 -300 2 #### Option a) cancellation form 01-07-2020 Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 01-07-2020 300 1 01-07-2020 -300 2 01-10-2020 300 1 01-10-2020 -300 2 #### Option a) cancellation form 01-06-2020 Due date Instalment annex 01-01-2020 350 1 01-04-2020 300 1 01-07-2020 300 1 01-06-2020 -100 2 01-07-2020 -300 2 01-10-2020 300 1 01-10-2020 -300 2 ## Rounding All calculations can be without rounding and kept in the database without rounding (this is applicable for items that never appear on policy) . Rounding can be applied at the end of the calculation phase (base premium, loadings and discounts, taxes) where the difference due to rounding is added to one of the premium items (taxes and fees cannot be used for those differences). For policy payment plan the difference is applied on the first or on the last installment. # Calculation results ## Policy tables The tables to be filled in Pol_prem_rate – premium rating service Pol_prem – premium calculation service Pol_pplan – policy plan generation service ## Mapping ## Pol_prem_rate Policy currency is currency of the object insured value: Select prm_nvalue, currency From pol_object_values Where Prm_code=’IV’ and pol_object_id = <in_object_id> ### Base premium Base premium is always one record per cover and if the record is there due to previous calculations the service should either delete and create new or should update the record with PREM_TYPE=”BASEPREM’ Pol_prem_rate Comment fields coming from policy POL_PREM_RATE_ID PK – sequence POL_COVER_ID Pol_covers.pol_cover_id SR_POLICY_ID Pol_covers.pol_policy_id SR_ANNEX_ID Pol_covers.pol_annex_id VALID_FROM Pol_covers.begin_date VALID_TO Pol_covers.end_date CURRENCY_RATE Get rate to valid_from date To local currency CURRENCY Policy currency (*) If premium rate is defined as a lump sum, then the field is filled by rating service Default values for base premium SELECTED ‘Y’ CHANGEABLE ‘N’ PREM_TYPE ‘BASEPREM’ PREM_CODE ‘BP’ SEPARATE_ACCOUNT ‘N’ NCB ‘N’ FINST ‘N’ fields coming from rating RATE RATE_DIM AMNT CURRENCY Policy currency or rate currency It is the rate currency when the rate is defined as a lump sum ### Loadings, discounts, taxes and fees All loadings, discounts, taxes and fees are inserted into Pol_prem_rate by ‘Offering” service. Тhis service should set up premium corrections (PREM_TYPE <> ‘BASEPREM’ ) values Pol_prem_rate Comment fields to be updated RATE Rating service RATE_DIM Rating service AMNT Premium calculation service AMNT   = RATE_DIM when the rate is defined as a lump sum CURRENCY Policy currency or rate currency It is the rate currency when the rate is defined as a lump sum ## Pol_prem ### Pol_prem_rate update The premium calculation service practically generates records in to pol_prem according to pol_prem_rate data. Before that the service should calculate properly Pol_prem_rate.amnt field. This field contains the annual value for each premium fraction. Pol_prem_rate Comment fields to be updated AMNT Premium calculation service AMNT   = RATE_DIM when the rate is defined as a lump sum The base premium amount is usually calculated by rating service. The calculation here applies for loadings, discounts and taxes defined as percentage ### Pol_prem filling up Pol_prem Comment fields coming from policy POL_PREM_ID PK – sequence POL_COVER_ID Pol_covers.pol_cover_id SR_POLICY_ID Pol_covers.pol_policy_id SR_ANNEX_ID Pol_covers.pol_annex_id VALID_FROM Pol_covers.begin_date VALID_TO Pol_covers.end_date CURRENCY_RATE      (*) Get rate to valid_from date To local currency From pol_prem_rate PREM_TYPE Pol_prem_rate.prem_type PREM_CODE Pol_prem_rate.prem_code AMNT Pol_prem_rate.amnt Calculated according to cover period CURRENCY Pol_prem_rate.currency FINST ‘Pol_prem_rate.finst Constant values PPINCL ‘N’ The fields are updated by a batch, which transfers to core PAS/Accounting system. When creating new record, the value is ‘N’ ACCINCL ‘N’ # Annex premiums - pol_prem data ## Inherited from previous annex Before starting any change, the pol_prem table contains all records from previous annex. This is a result of service ‘Open Policy for change’ Case: policy ID = 55 with one object 2 covers (Cover A, Cover B) , begin_date = 01-01-2020, end 31-12-2020 previous annex ID = 1 begin_date = 01-01-2020, end 31-12-2020 Current annex ID = 2 begin_date = 01-07-2020, end 31-12-2020 Pol_Prem before ‘Open Policy for change’ SR_Policy_ID SR_ANNEX_ID Cover ID/Code Prem type Prem_code Amnt Valid From Valid to 55 1 5511/A BP BASEPREM 1200 01-01-2020 31-12-2020 55 1 5511/A LD POV_MILEAGE 120 01-01-2020 31-12-2020 55 1 5512/B BP BASEPREM 600 01-01-2020 31-12-2020 Policy premium = select sum(amnt) from Pol_Prem where sr_policy_id = 55 and sr_annex_id=1; Result is: 1920.00 ## New premium Pol_Prem AFTER ‘Open Policy for change’ SR_Policy_ID SR_ANNEX_ID Cover ID/Code Prem type Prem_code Amnt Valid From Valid to 55 2 5521/A BP BASEPREM 1200 01-01-2020 31-12-2020 55 2 5521/A LD POV_MILEAGE 120 01-01-2020 31-12-2020 55 2 5522/B BP BASEPREM 600 01-01-2020 31-12-2020 55 1 5511/A BP BASEPREM 1200 01-01-2020 31-12-2020 55 1 5511/A LD POV_MILEAGE 120 01-01-2020 31-12-2020 55 1 5512/B BP BASEPREM 600 01-01-2020 31-12-2020 Pol_Prem AFTER premium calculation – case cover B is discontinued – i.e. pure write off SR_Policy_ID SR_ANNEX_ID Cover ID/Code Prem type Prem_code Amnt Valid From Valid to 55 2 5521/A BP BASEPREM 1200 01-01-2020 31-12-2020 55 2 5521/A LD POV_MILEAGE 120 01-01-2020 31-12-2020 55 2 5522/B BP BASEPREM 600 01-01-2020 31-12-2020 55 2 5522/B BP BASEPREM -300 01-07-2020 31-12-2020 55 1 5511/A BP BASEPREM 1200 01-01-2020 31-12-2020 55 1 5511/A LD POV_MILEAGE 120 01-01-2020 31-12-2020 55 1 5512/B BP BASEPREM 600 01-01-2020 31-12-2020 Policy premium = select sum(amnt) from Pol_Prem where sr_policy_id = 55 and sr_annex_id=2; Result is: 1620.00 Annex 1 – Annex 2 = -300 Pol_Prem AFTER premium calculation – case policy cancellation – i.e. pure write off SR_Policy_ID SR_ANNEX_ID Cover ID/Code Prem type Prem_code Amnt Valid From Valid to 55 2 5521/A BP BASEPREM 1200 01-01-2020 31-12-2020 55 2 5521/A LD POV_MILEAGE 120 01-01-2020 31-12-2020 55 2 5522/B BP BASEPREM 600 01-01-2020 31-12-2020 55 2 5522/B BP BASEPREM -300 01-07-2020 31-12-2020 55 2 5521/A BP BASEPREM -600 01-07-2020 31-12-2020 55 2 5521/A LD POV_MILEAGE -60 01-07-2020 31-12-2020 55 1 5511/A BP BASEPREM 1200 01-01-2020 31-12-2020 55 1 5511/A LD POV_MILEAGE 120 01-01-2020 31-12-2020 55 1 5512/B BP BASEPREM 600 01-01-2020 31-12-2020 Policy premium = select sum(amnt) from Pol_Prem where sr_policy_id = 55 and sr_annex_id=2; Result is: 960 Annex 1 – Annex 2 = -960 Pol_Prem AFTER premium calculation – case cover C is added– i.e. pure premium increase SR_Policy_ID SR_ANNEX_ID Cover ID/Code Prem type Prem_code Amnt Valid From Valid to 55 2 5521/A BP BASEPREM 1200 01-01-2020 31-12-2020 55 2 5521/A LD POV_MILEAGE 120 01-01-2020 31-12-2020 55 2 5522/B BP BASEPREM 600 01-01-2020 31-12-2020 55 2 5523/C BP BASEPREM 500 01-07-2020 31-12-2020 55 1 5511/A BP BASEPREM 1200 01-01-2020 31-12-2020 55 1 5511/A LD POV_MILEAGE 120 01-01-2020 31-12-2020 55 1 5512/B BP BASEPREM 600 01-01-2020 31-12-2020 Policy premium = select sum(amnt) from Pol_Prem where sr_policy_id = 55 and sr_annex_id=2; Result is: 2420.00 Annex 1 – Annex 2 = 500 Pol_Prem AFTER premium calculation – case cover C is added and B is discontinued – mix – overall the premium is increase SR_Policy_ID SR_ANNEX_ID Cover ID/Code Prem type Prem_code Amnt Valid From Valid to 55 2 5521/A BP BASEPREM 1200 01-01-2020 31-12-2020 55 2 5521/A LD POV_MILEAGE 120 01-01-2020 31-12-2020 55 2 5522/B BP BASEPREM 600 01-01-2020 31-12-2020 55 2 5522/B BP BASEPREM -300 01-07-2020 31-12-2020 55 2 5523/C BP BASEPREM 500 01-07-2020 31-12-2020 55 1 5511/A BP BASEPREM 1200 01-01-2020 31-12-2020 55 1 5511/A LD POV_MILEAGE 120 01-01-2020 31-12-2020 55 1 5512/B BP BASEPREM 600 01-01-2020 31-12-2020 Policy premium = select sum(amnt) from Pol_Prem where sr_policy_id = 55 and sr_annex_id=2; Result is: 2120.00 Annex 1 – Annex 2 = 200 Pol_Prem AFTER premium calculation – case cover C is added and B is discontinued – mix – overall the premium is decrease SR_Policy_ID SR_ANNEX_ID Cover ID/Code Prem type Prem_code Amnt Valid From Valid to 55 2 5521/A BP BASEPREM 1200 01-01-2020 31-12-2020 55 2 5521/A LD POV_MILEAGE 120 01-01-2020 31-12-2020 55 2 5522/B BP BASEPREM 600 01-01-2020 31-12-2020 55 2 5522/B BP BASEPREM -300 01-07-2020 31-12-2020 55 2 5523/C BP BASEPREM 200 01-07-2020 31-12-2020 55 1 5511/A BP BASEPREM 1200 01-01-2020 31-12-2020 55 1 5511/A LD POV_MILEAGE 120 01-01-2020 31-12-2020 55 1 5512/B BP BASEPREM 600 01-01-2020 31-12-2020 Policy premium = select sum(amnt) from Pol_Prem where sr_policy_id = 55 and sr_annex_id=2; Result is: 1820.00 Annex 1 – Annex 2 = -100 After new premium calculation we can have 2 options: a) to make a premium for premium increase b) to make a premium plan for premium decrease # Policy payment plan The service works after the premium for the policy (annex) is calculated. There are two cases that need to be considered: a) payment plan for policy (in our case this is premium for the first annex) b) premium plan for each subsequent annex after the first one ## generate records in POL_PPLAN – policy (first annex) SR_ANNEX_ID_PREV IS NULL Input Parameters: SR_POLICY_ID SR_ANNEX_ID 1. Delete POL_PPLAN where sr_annex_id = <in_annex_id> and sr_policy_id = <in_policy_id> - to clean from previous calculation 2. Select sr_annex_id_prev, begin_date, end_date, p_frequency from pol_anexes where policy_id = <in_policy_id> and sr_annex_id = <in_annex_id> How to get all necessary variables by SR_POLICY_ID and SR_ANNEX_ID: In_First_Due_Date - In_Policy end date In_First_Install_AMNT In_AMNT In_CURRENCY In_Installments Flag – policy plan or annex plan – when sr_annex_id_prev is NULL - it is policy Select SELECT begin_date, -- = In_First_Due_Date end_date, -- = In_Policy end date sr_annex_id_prev, -- if is null this is the first annex – algorithm A p_frequency -- = In_Installments FROM pol_annexes Where sr_policy_id = SR_POLICY_ID And sr_annex_id = SR_ANNEX_ID Premium: Policy with one currency – select distinct currency =1 Or select sum(amnt), currency , group by currency = one retrieved record Policy with more than one currency : select distinct currency > 1 Or select sum(amnt), currency , group by currency – more than one retrieved record The policy has one currency Get amount and currency The policy has more than one currency The currency is local currency Get amount only In_AMNT Select sum (amnt), currency From pol_prem Where sr_policy_id = SR_POLICY_ID And sr_annex_id = SR_ANNEX_ID And NVL(finst,N) = N Group by currency Select sum (amnt*currency_rate) From pol_prem Where sr_policy_id = SR_POLICY_ID And sr_annex_id = SR_ANNEX_ID And NVL(finst,N) = N In_First_Install_AMNT Select sum (amnt), currency From pol_prem Where sr_policy_id = SR_POLICY_ID And sr_annex_id = SR_ANNEX_ID And NVL(finst,N) = Y Group by currency Select sum (amnt*currency_rate) From pol_prem Where sr_policy_id = SR_POLICY_ID And sr_annex_id = SR_ANNEX_ID And NVL(finst,N) = Y IF sr_annex_id_prev is not NULL THEN Get Local_prev_annex_amnt: Select sum (amnt), currency From pol_prem Where sr_policy_id = SR_POLICY_ID- And sr_annex_id = sr_annex_id_prev And NVL(finst,N) = N Group by currency Get Local_prev_annex_fInst_amnt: Select sum (amnt), currency From pol_prem Where sr_policy_id = SR_POLICY_ID And sr_annex_id = sr_annex_id_prev And NVL(finst,N) = Y Group by currency Else Local_prev_annex_amnt := 0; Local_prev_annex_fInst_amnt := 0; END IF; In_AMNT := In_AMNT - Local_prev_annex_amnt; In_First_Install_AMNT := In_First_Install_AMNT - Local_prev_annex_fInst_amnt; If < in_Installments = 1 Then Insert into pop_pplan: POL_PLAN_ID Sequence SR_POLICY_ID <In_policy_id> SR_ANNEX_ID <In_Annex_id> Amnt_type ‘DUE’ Due_date <In_due_date> amnt In_amnt+in_first_install Currency In_currency Else If it is policy plan (i.e. no records in Pol_pplan for this policy) sr_annex_id_prev IS NULL Then – algorithm (A) Else – algorithm (B) End if; End if; Algorithm (A for policy – i.e. first annex): duration = ROUND(months between (in_Policy end date , in_first_due_date),0) If duration <=1 Then Make one record same as when installments = 1 Else Installment duration = trunc (duration /in_ installments, 0) ;i.e if not an integer, remove the fraction Installment amount = round( in_amnt / in_installments,2); -- 2 should be a parameter depend on currency Difference = in_amnt - Installment amount * in_installments; First_instalment_amnt = Installment amount + Difference + in_First_Install_AMNT; Any_other_instalmnet = Installment amount; Plan_instalment_amnt = First_instalment_amnt; Plan_due_date = in_First_Due_Date For i = 1 (1) .. installments Loop Insert into pop_pplan: POL_PLAN_ID Sequence SR_POLICY_ID <In_policy_id> SR_ANNEX_ID <In_Annex_id> Amnt_type ‘DUE’ Due_date Plan_due_date amnt Plan_instalment_amnt Currency In_currency Plan_instalment_amnt = Any_other_instalmnet; Plan_due_date = add months (Plan_due_date , Installment duration); End loop; End if; End of algorithm (A): ## generate records in POL_PPLAN – annexes - SR_ANNEX_ID_PREV IS NOT NULL Algorithm (B for annexes ): 1. get next due date Next_due_date = select due_date from pol_plan where sr_policy_id = in_policy_id and due_date >= in_first_due_date and sr_annex_id = previous annex ID order by due_date If Next_due_date is null Then Make one installment with due date first_due_date POL_PLAN_ID Sequence SR_POLICY_ID <In_policy_id> SR_ANNEX_ID <In_Annex_id> Amnt_type ‘DUE’ Due_date <In_due_date> amnt In_amnt+in_first_install Currency In_currency Else --Local_fisrt_inatall = 0; If in_due_date < Next_due_date Then Days_upTo_NextDueDate = Next_due_date – in_due_date (i.e. annex begin date) Days_upTo_PolicyEnd = Policy_end_date - in_due_date; FirstAmntInstall =ROUND( <In_Amnt >* Days_upTo_NextDueDate/ Days_upTo_PolicyEnd,2); Make first install POL_PLAN_ID Sequence SR_POLICY_ID <In_policy_id> SR_ANNEX_ID <In_Annex_id> Amnt_type ‘DUE’ Due_date <In_due_date> amnt In_FirstAmntInstall + in_first_install Currency In_currency Local_fisrt_inatall = 0; Else FirstAmntInstall = 0; Local_fisrt_inatall = in_first_install; End if; RestAmnt = in_amnt – FirstAmntInstall; Number of installments = number of previous annex installments from in_due_date Num_instalmnets = select count(1) from pol_plan where sr_policy_id = in_policy_id and due_date >= in_first_due_date and sr_annex_id = previous annex ID; Installment amount = round( (RestAmnt) - / Num_instalmnets 2); -- 2 should be a parameter depend on currency Difference = RestAmnt - Installment amount * installments; First_instalment_amnt = RestAmnt + Difference + Local_fisrt_inatall ; Any_other_instalmnet = Installment amount; Loopinstalmnet = First_instalment_amnt; LOOP for all due dates Select due_date - from pol_plan where sr_policy_id = in_policy_id and due_date >= in_first_due_date and sr_annex_id = previous annex ID order by due_date desc; POL_PLAN_ID Sequence SR_POLICY_ID <In_policy_id> SR_ANNEX_ID <In_Annex_id> Amnt_type ‘DUE’ Due_date Selected due date amnt LoopINstalmnet Currency In_currency Loopinstalmnet = Any_other_instalmnet; END LOOP; End if; End of algorithm (B): # Annex premium calculation Input parameters: SR_POLICY_ID, SR_ANNEX_ID; Necessary variables: Annex begin (New_Begin_date) and previous annex ID (Prev_Annex_id) Select SELECT begin_date, -- = New_Begin_date sr_annex_id_prev, -- Prev_Annex_id FROM pol_annexes Where sr_policy_id = SR_POLICY_ID And sr_annex_id = SR_ANNEX_ID ## New covers New covers are: Select pol_cover_id from pol_covers Where sr_policy_id = SR_POLICY_ID And sr_annex_id = SR_ANNEX_ID And selected = ‘Y’ And prev_cover_id is null ## Discontinued covers Discontinued covers are: Select pol_cover_id from pol_covers Where sr_policy_id = SR_POLICY_ID And sr_annex_id = SR_ANNEX_ID And selected = ‘N’ And prev_cover_id is NOT null And selected of the previous cover is ‘Y’ ## Changed covers Select pol_cover_id from pol_covers Where sr_policy_id = SR_POLICY_ID And sr_annex_id = SR_ANNEX_ID And selected = ‘Y’ And prev_cover_id is NOT null And cover_substatus = ‘CHANGED’ (*) (*) update in pol_object_values should update all related covers and to Set cover_sub_status=’CHANGED’ Update in pol_cover_def, pol_cover_benefits, should update the cover – Set cover_sub_status=’CHANGED’ ## Write off and Annex premium Loop for all covers CASE (CoverType, new or discontinued or changed) WHEN New Cover : do the same as policy premium calculation where valid_from=pol_annex.begin_date; WHEN Discontinued: LOOP for all records in pol_prem for that cover except non refundable where pol_cover_id= main.loop.cover_id and nvl(refundable ,’Y’)=’N’ Add record in pol_prem – Table (A); END LOOP; WHEN CHANGED: /* actually it is ‘New Cover’+ ‘Discontinued but with non refundable too’*/ do the same as policy premium calculation where valid_from=pol_annex.begin_date LOOP for all records in pol_prem for that cover where pol_cover_id= main.loop.cover_id Add record in pol_prem – Table (A); End loop; END CASE; End loop; Table (A) Pol_prem_id Sequence Pol_cover_id Same cover ID Sr_policy_id Same policy ID Sr_annex_id Same annex ID Prem_type Same Prem Type Prem_code Same Prem Code amnt (-)Amnt *( Valid_to – annex begin date)/ (valid_to – valid_from)) If annex is on payment anniversary better to do monthly adjustment: (-)Amnt *(months_between( Valid_to, annex begin date)/ months_between (valid_to, valid_from)) Currency_rate Same currency rate Valid_from Annex begin date Valid_to Same end date Currency Same currency # List of plugins, where customization can be enabled Functionality Options Short rates calculation Proportional - Monthly rounding Proportional - Daily rounding Special short rate table Write-offs calculation Proportional - Monthly rounding Proportional - Daily rounding Special short rate table Rounding differences First install Last install How to apply discounts and loadings Sum, multiple, mix How to apply taxes Very specific especially in Lat Am Payment plan after an annex Too may options. We will have just one out of the box (described above) # Appendix A – Examples ## Bulstrad Rating – Casco (Bonus casco) ### Base Premium (agricultural and construction are not included) Car Type Car Age Seats Tonnage Rate % IV Car 0-3 0-16 6.42 Car Above 3 up to 5 0-16 7.59 Car Above 5 up to 7 0-16 8.54 Car Above 7 up to 10 0-16 9.64 Car Above 10 up to 13 0-16 11.76 Car Above 13 0-16 10.7 jeep 0-3 0-16 6.42 jeep Above 3 up to 5 0-16 7.59 jeep Above 5 up to 7 0-16 8.54 jeep Above 7 up to 10 0-16 9.64 jeep Above 10 up to 13 0-16 11.76 jeep Above 13 0-16 10.7 truck 0-3 0-3 up to 3.5 6.42 truck Above 3 up to 5 0-3 up to 3.5 7.59 truck Above 5 up to 7 0-3 up to 3.5 8.54 truck Above 7 up to 10 0-3 up to 3.5 9.64 truck Above 10 up to 13 0-3 up to 3.5 11.76 truck Above 13 0-3 up to 3.5 10.7 bus 0-3 Above 16 2.46 bus Above 3 up to 5 Above 16 2.77 bus Above 5 up to 7 Above 16 3.10 bus Above 7 up to 10 Above 16 3.43 bus Above 10 up to 13 Above 16 4.27 bus Above 13 Above 16 3.68 truck 0-3 Above 3.5 2.46 truck Above 3 up to 5 Above 3.5 2.77 truck Above 5 up to 7 Above 3.5 3.10 truck Above 7 up to 10 Above 3.5 3.43 truck Above 10 up to 13 Above 3.5 4.27 truck Above 13 Above 3.5 3.68 ### Loadings Driver are: Age Loading (%) 18-25 10 26-30 5 31-100 0 Claim history: Claim Number Claim Amount Loading (%) 2 Sum (paid Indemnity – subrogation) > IV 5 3-4 Sum (paid Indemnity – subrogation) > IV 35 5-6 Sum (paid Indemnity – subrogation) > IV 75 6-99 (above 6) Sum (paid Indemnity – subrogation) > IV 100 Car Usage: Usage Loading (%) Rent 50 Taxi reg C,CA,CB,PB,B (*) 100 Taxi all the rest registrations (*) 50 Training 40 Car brand: Brand Insured value Loading (%) BMW 0-20000 7.5 AUDI 0-20000 7.5 Volkswagen 0-200000 5 Car brand repair shop option: - 30% For car, jeep, truck up to 3.5t brand repair shop loading = Max (Base premium,450)*1.3 + MAX( (450 - Base premium),0); For trucks above 3.5 brand repair shop loading = Max (Base premium,500)*1.3 + MAX( (500 - Base premium),0); Road assistance option Car Type Car Age Seats Tonnage Loading in BGN Car 0-3 0-16 25 Car Above 3 up to 5 0-16 25 Car Above 5 up to 7 0-16 25 Car Above 7 up to 10 0-16 30 Car Above 10 up to 13 0-16 30 Car Above 13 0-16 36 jeep 0-3 0-16 25 jeep Above 3 up to 5 0-16 25 jeep Above 5 up to 7 0-16 25 jeep Above 7 up to 10 0-16 30 jeep Above 10 up to 13 0-16 30 jeep Above 13 0-16 36 truck 0-3 0-3 up to 3.5 25 truck Above 3 up to 5 0-3 up to 3.5 25 truck Above 5 up to 7 0-3 up to 3.5 25 truck Above 7 up to 10 0-3 up to 3.5 30 truck Above 10 up to 13 0-3 up to 3.5 30 truck Above 13 0-3 up to 3.5 36 bus The option is not offered bus bus bus bus bus truck truck truck truck truck truck Options for additional coverage: Option Loading strike and war 20 supersonic shock wave 10 competitions Manual loading ### Discounts Driver are: Age Discount (%) 40-50 5 51-100 10 Repair shop: Repair type Discount (%) Repair expenses in trusted shop 10 Indemnity based on evaluation 15 Other discounts Discount type Condition Discount (%) Claims prev year 0 10 Payment Frequency Annually 5 New business Not a renewal 5 Cross-selling (volume discount) Property, MTPL 5 No claim bonus (NCB) Manual – the client can select it 18% ### Limitations Minimum written premium – 240 BGN Maximum total discount – 20% - new business; 35% on renewal NCB can be combined with Payment Frequency and Cross-selling only. The other discounts are not applicable when NCB is selected by PH.