diff --git a/raterspec.cls b/raterspec.cls index 94be281..6966c97 100644 --- a/raterspec.cls +++ b/raterspec.cls @@ -125,6 +125,10 @@ {} {} +\@raterspec@mkhook{premcalc}{premium calculations} + {} + {} + %% diff --git a/raterspec/parts.tex b/raterspec/parts.tex index 5a9c35c..33e8047 100644 --- a/raterspec/parts.tex +++ b/raterspec/parts.tex @@ -33,3 +33,6 @@ \pnumoff\part{Data Classification}\pnumon \input{raterspec/sec/dataclass} +\pnumoff\part{Premium Calculation}\pnumon + \input{raterspec/sec/premcalc} + diff --git a/raterspec/rates.sty b/raterspec/rates.sty index 1ed00ec..28a83d0 100644 --- a/raterspec/rates.sty +++ b/raterspec/rates.sty @@ -6,6 +6,12 @@ \ProcessOptions\relax +\def\var#1{{\tt#1}}% +\def\locvar#1{\var{#1}_\loc} +\def\tlookup#1#2{\ArgSty{#2 from} \tref{#1}}% +\def\tlookupf#1#2{\tlookup{#1}{#2} \ArgSty{or fail in error}}% + + \newenvironment{ratetable*}[5][]% {% \def\@@lotcaption{#1} diff --git a/raterspec/sec/premcalc.tex b/raterspec/sec/premcalc.tex new file mode 100644 index 0000000..631e48f --- /dev/null +++ b/raterspec/sec/premcalc.tex @@ -0,0 +1,16 @@ +% raterspec premium calculation +%% + +\label{s:premcalc} +\index{calculation|(} + +\chapter{Definitions} +\label{s:premcalc:dfns} +\input{raterspec/sec/premcalc/dfn} + + +%% user input +\premcalcout + +\index{calculation|)} + diff --git a/raterspec/sec/premcalc/dfn.tex b/raterspec/sec/premcalc/dfn.tex new file mode 100644 index 0000000..b8f0afd --- /dev/null +++ b/raterspec/sec/premcalc/dfn.tex @@ -0,0 +1,69 @@ +% Common definitions for premium calculation +\sectiondept{it} + +\sigauth{MTG} +A \dfn{premium calculation}---or simply \dfn{calculation}---is an algorithm that +\index{deterministic}deterministically operates on ^[input data] described in +\sref{indata} and yields a numeric \dfn{premium}. + +\sigauth{MTG} +\p{finalprem} +A \dfn{premium!final premium} is the ^[premium] that represents the total cost +to the insured and \shall be represented by a ^[floating-point] number rounded +to the nearest representable value of two decimal places, in which the whole +integer value \shall represent a dollar amount and the fractional value \shall +represent cents. There \shall be only one final premium.\footnote{Multiple +^[final premium]s may be obtained through multiple calls to the~^[rater].} + +\sigauth{MTG} +A calculation \dfn{calculation!consideration} is defined as the point when an +implementation determines if the calculation is applicable to the ^[input data]. + +\sigauth{MTG} +\p{calc-supp} +All defined rating calculations \shall be considered even if they exist outside +of any dependency tree that arrives at the ^[premium!final premium]. +Calculations that are not directly used to determine the ^[premium!final +premium] are termed \dfn{calculation!disjoint calculations}.\footnote{This +allows supplementary data to be calculated.} + +\sigauth{MTG} +\p{calcapplicable} A calculation \shall be +\index{calculation!consideration}considered to be applicable if its defined +^[classification] conditions are met. + +\sigauth{MTG} +An applicable calculation \shall undergo \dfn{calculation!evaluation}, yielding +a~premium that is the result of the application of the ^[input data] to its +definition. + +\sigauth{MTG} +A calculation that has been determined to be inapplicable \shallnot execute any +portion of its definition and \shall yield the scalar floating-point +value~$0.00$.\footnote{The definition \shallnot be executed because it cannot +reliably do so without the proper data (as determined by its required +classifications).} + +\sigauth{MTG} +A calculation \may treat the result of another calculation as ^[input data]. + +\sigauth{MTG} +A calculation \may treat the result of a~^[classification] (see +\sref{dataclass}) as ^[input data]. + +\sigauth{MTG} +Where it is required that a calculation be performed for each ^[location], the +implementation \shall make such a determination either by (a)~use of a +^[parameter] defined in \sref{locparam} that is always available or (b)~an +implementation-defined ^[parameter] that explicitly provides the location count. +For either case, an implementation \must fail in error if the location count +cannot be determined. + +\sigauth{MTG} +In the sections that follow, the following conventions \shall hold: (a)~Any +reference to a table value, unless otherwise stated, \shall be located by +matching the ^[parameter]s in the table column headers with the value of the +associated argument in any input data; (b)~any ^[parameter] containing the +term~``rate'' represents a~value obtained in an implementation-defined manner +and an implementation \must fail in error if such a value cannot be obtained as +mandated by the calculation definition.