lmi
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi] [PATCH 1/4] Add actuarial tables RELAX NG schema.


From: Vaclav Slavik
Subject: [lmi] [PATCH 1/4] Add actuarial tables RELAX NG schema.
Date: Thu, 17 May 2012 17:19:05 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:12.0) Gecko/20120428 Thunderbird/12.0.1

Hi,

this is the first in series of patches that add XML actuarial tables.

In this one RELAX NG scheme is added. The bulk of the patch is just
moving common type definitions from cell.rnc into a new file, types.rnc,
that is then included from both cell.rnc and the new actuarial_table.rnc
file.

Regards,
Vaclav

---
 actuarial_table.rnc |   95 ++++++++++++++
 cell.rnc            |  340 +----------------------------------------------
 types.rnc           |  365 +++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 461 insertions(+), 339 deletions(-)

diff --git a/actuarial_table.rnc b/actuarial_table.rnc
new file mode 100644
index 0000000..763e211
--- /dev/null
+++ b/actuarial_table.rnc
@@ -0,0 +1,95 @@
+# RELAX NG schema for '.table' files (class actuarial_table).
+#
+# Copyright (C) 2012 Gregory W. Chicares.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+#
+# http://savannah.nongnu.org/projects/lmi
+# email: <address@hidden>
+# snail: Chicares, 186 Belle Woods Drive, Glastonbury CT 06033, USA
+
+# $Id$
+
+start =
+    element table
+        {element description {text}?
+        ,(basic_table
+         |smoking_element
+         |gender_element
+         )
+        }
+
+smoking_element =
+    element smoking
+        {element item
+            {attribute for {smoking}
+            ,(basic_table|gender_element)
+            }+
+        }
+
+gender_element =
+    element gender
+        {element item
+            {attribute for {gender}
+            ,basic_table
+            }+
+        }
+
+basic_table =
+         aggregate_element
+        |duration_element
+        |select_element
+        |select_and_ultimate_element
+
+aggregate_element =
+    element aggregate {aggregate_content}
+
+aggregate_content =
+    element value
+        {attribute age {table_age_int}
+        ,proportion_double
+        }+
+
+duration_element =
+    element duration {duration_content}
+
+duration_content =
+    element value {proportion_double}+
+
+select_element =
+    element select
+        {attribute period  {xsd:positiveInteger}
+        ,element row
+            {attribute age {table_age_int}
+            ,element value
+                {proportion_double
+                }+
+            }+
+        }
+
+select_and_ultimate_element =
+    element select-and-ultimate
+        {select_element
+        ,element ultimate {aggregate_content}
+        }
+
+## Attained age.
+table_age_int      = xsd:nonNegativeInteger
+
+## Time interval in years.
+table_duration_int = xsd:nonNegativeInteger
+
+# Reuse types used for other file formats.
+
+include "types.rnc"
diff --git a/cell.rnc b/cell.rnc
index 09d1fb0..2227bf5 100644
--- a/cell.rnc
+++ b/cell.rnc
@@ -480,342 +480,4 @@ cell_element = element cell
      element ZipCode                          {text}
     }
 
-# It is infeasible to validate an input sequence with a regex.
-
-numeric_sequence = text
-payment_sequence = text
-mode_sequence    = text
-dbo_sequence     = text
-specamt_sequence = text
-
-# Numeric-range types.
-
-## Floating-point number greater than or equal to zero.
-nonnegative_double = xsd:double             {minInclusive = "0"                
               }
-
-## Floating-point number between zero and one, inclusive.
-proportion_double  = xsd:double             {minInclusive = "0"       
maxInclusive = "1"      }
-
-## Julian Day Number between 1752-09-14 and 9999-12-31, inclusive.
-calendar_date_int  = xsd:nonNegativeInteger {minInclusive = "2361222" 
maxInclusive = "5373484"}
-
-## Attained age: integer between zero and 99, inclusive.
-age_int            = xsd:nonNegativeInteger {                         
maxInclusive = "99"     }
-
-## Time interval in years: integer between zero and 100, inclusive.
-duration_int       = xsd:nonNegativeInteger {                         
maxInclusive = "100"    }
-
-## Time interval in months: integer between zero and eleven, inclusive.
-month_int          = xsd:nonNegativeInteger {                         
maxInclusive = "11"     }
-
-# Enumerations.
-
-## 'Yes' or 'No'. 'No' is listed first because it is usually the better 
default.
-yes_or_no =
-      "No"
-    | "Yes"
-
-## Gender. 'Unisex' is for contracts that don't distinguish rates by gender.
-gender =
-      "Female"
-    | "Male"
-    | "Unisex"
-
-## Smoking. 'Unismoke' is for contracts that don't distinguish rates
-## by smoking. Some contracts speak of tobacco use instead of smoking,
-## but none use both, so a single set of enumerators suffices.
-smoking =
-      "Smoker"
-    | "Nonsmoker"
-    | "Unismoke"
-
-## Underwriting class. Use "Rated" for contracts with table ratings.
-class =
-      "Preferred"
-    | "Standard"
-    | "Rated"
-    | "Ultra"
-
-## Death benefit option: 'A' = level; 'B' = increasing; 'ROP' = return of 
premium.
-dbopt =
-      "A"
-    | "B"
-    | "ROP"
-
-## Payment mode.
-mode =
-      "Annual"
-    | "Semiannual"
-    | "Quarterly"
-    | "Monthly"
-
-## Basis for expense and general-account rates.
-gen_basis =
-      "Current"
-    | "Guaranteed"
-    | "Midpoint"
-
-## Basis for separate-account rates.
-sep_basis =
-      "Hypothetical"
-    | "Zero"
-    | "Half of hypothetical"
-
-## Type of underwriting.
-uw_basis =
-      "Medical"
-    | "Paramedical"
-    | "Nonmedical"
-    | "Simplified issue"
-    | "Guaranteed issue"
-
-## Industry-standard table rating, or 'None'.
-table_rating =
-      "None"
-    | "A=+25%"
-    | "B=+50%"
-    | "C=+75%"
-    | "D=+100%"
-    | "E=+125%"
-    | "F=+150%"
-    | "H=+200%"
-    | "J=+250%"
-    | "L=+300%"
-    | "P=+400%"
-
-## Parameter to be solved for.
-solve_type =
-      "No solve"
-    | "Specified amount"
-    | "Employee premium"
-    | "Employer premium"
-    | "Loan"
-    | "Withdrawal"
-
-## Solve goal.
-solve_target =
-      "Endowment"
-    | "Target CSV"
-    | "CSV = tax basis"
-    | "Avoid MEC"
-
-## Optional strategy to determine payment as a function of specified amount.
-## 'PmtInputScalar' is obsolete.
-## 'PmtMEP' uses 7702A 7PP rate.
-## 'Table' uses an external table (e.g., New York Table D for group insurance).
-pmt_strategy =
-      "PmtInputScalar"
-    | "PmtMinimum"
-    | "PmtTarget"
-    | "PmtMEP"
-    | "PmtGLP"
-    | "PmtGSP"
-    | "PmtCorridor"
-    | "PmtTable"
-
-## Optional strategy to determine specified amount as a function of premium.
-## 'SAInputScalar' is obsolete.
-## 'SAMEP' uses 7702A 7PP rate.
-sa_strategy =
-      "SAInputScalar"
-    | "SAMaximum"
-    | "SATarget"
-    | "SAMEP"
-    | "SAGLP"
-    | "SAGSP"
-    | "SACorridor"
-    | "SASalary"
-
-## General-account rate: before or after spread.
-gen_acct_rate_type =
-      "Credited rate"
-    | "Earned rate"
-
-## Separate-account rate: before or after spread.
-sep_acct_rate_type =
-      "Net rate"
-    | "Gross rate"
-
-## Loan rate: fixed or variable.
-loan_rate_type =
-      "Fixed loan rate"
-    | "Variable loan rate"
-
-## Fund-allocation overrides, for payments that aren't peremptorily
-## allocated to the general account (e.g., employer payments on some
-## group UL contracts might always go into the general account).
-## Conceptually:
-## 'Average': use mean separate-account fee.
-## 'Override': use scalar input separate-account fee.
-## 'Choose': respect input fund allocations.
-## However, there's no GUI for fund allocation yet, so, for the nonce,
-## the meanings in practice are:
-## 'Average': allocate all payments to separate account.
-## 'Choose': allocate all payments to general account.
-## Reason: the GUI, once it exists, will by default allocate all
-## payments to the general account if no separate-account funds are
-## selected.
-fund_input_method =
-      "Average fund"
-    | "Override fund"
-    | "Choose funds"
-
-## Order in which different individuals in a census are processed.
-## By default, illustrations are created independently, in series:
-## one life at a time. Alternatively, all lives may be run together
-## in parallel, which requires more memory but permits them to affect
-## each other, as when individual charges depend on total case assets.
-run_order =
-      "Life by life"
-    | "Month by month"
-
-## Presumed moment of death, for partial mortality.
-survival_limit =
-      "No survival limit"
-    | "Survive to age limit"
-    | "Survive to duration limit"
-    | "Survive to life expectancy"
-
-## Order in which term and base are affected by changes in total
-## specified amount.
-term_adj_method =
-      "Adjust base first"
-    | "Adjust term first"
-    | "Adjust base and term proportionately"
-
-## USPS two-letter abbreviations for the fifty US states, plus
-##   'DC' (District of Columbia)
-##   'PR' (Puerto Rico)
-## and 'XX', a fictitious state used for non-US business.
-state =
-      "AL" | "AK" | "AZ" | "AR" | "CA" | "CO" | "CT" | "DE" | "DC" | "FL"
-    | "GA" | "HI" | "ID" | "IL" | "IN" | "IA" | "KS" | "KY" | "LA" | "ME"
-    | "MD" | "MA" | "MI" | "MN" | "MS" | "MO" | "MT" | "NE" | "NV" | "NH"
-    | "NJ" | "NM" | "NY" | "NC" | "ND" | "OH" | "OK" | "OR" | "PA" | "PR"
-    | "RI" | "SC" | "SD" | "TN" | "TX" | "UT" | "VT" | "VA" | "WA" | "WV"
-    | "WI" | "WY"
-    | "XX"
-
-## International standard country code [ISO 3166-1-Alpha-2 as of 2000-08-21].
-country =
-      "AD" | "AE" | "AF" | "AG" | "AI" | "AL" | "AM" | "AN" | "AO" | "AQ"
-    | "AR" | "AS" | "AT" | "AU" | "AW" | "AZ" | "BA" | "BB" | "BD" | "BE"
-    | "BF" | "BG" | "BH" | "BI" | "BJ" | "BM" | "BN" | "BO" | "BR" | "BS"
-    | "BT" | "BV" | "BW" | "BY" | "BZ" | "CA" | "CC" | "CD" | "CF" | "CG"
-    | "CH" | "CI" | "CK" | "CL" | "CM" | "CN" | "CO" | "CR" | "CU" | "CV"
-    | "CX" | "CY" | "CZ" | "DE" | "DJ" | "DK" | "DM" | "DO" | "DZ" | "EC"
-    | "EE" | "EG" | "EH" | "ER" | "ES" | "ET" | "FI" | "FJ" | "FK" | "FM"
-    | "FO" | "FR" | "GA" | "GB" | "GD" | "GE" | "GF" | "GH" | "GI" | "GL"
-    | "GM" | "GN" | "GP" | "GQ" | "GR" | "GS" | "GT" | "GU" | "GW" | "GY"
-    | "HK" | "HM" | "HN" | "HR" | "HT" | "HU" | "ID" | "IE" | "IL" | "IN"
-    | "IO" | "IQ" | "IR" | "IS" | "IT" | "JM" | "JO" | "JP" | "KE" | "KG"
-    | "KH" | "KI" | "KM" | "KN" | "KP" | "KR" | "KW" | "KY" | "KZ" | "LA"
-    | "LB" | "LC" | "LI" | "LK" | "LR" | "LS" | "LT" | "LU" | "LV" | "LY"
-    | "MA" | "MC" | "MD" | "MG" | "MH" | "MK" | "ML" | "MM" | "MN" | "MO"
-    | "MP" | "MQ" | "MR" | "MS" | "MT" | "MU" | "MV" | "MW" | "MX" | "MY"
-    | "MZ" | "NA" | "NC" | "NE" | "NF" | "NG" | "NI" | "NL" | "NO" | "NP"
-    | "NR" | "NU" | "NZ" | "OM" | "PA" | "PE" | "PF" | "PG" | "PH" | "PK"
-    | "PL" | "PM" | "PN" | "PR" | "PS" | "PT" | "PW" | "PY" | "QA" | "RE"
-    | "RO" | "RU" | "RW" | "SA" | "SB" | "SC" | "SD" | "SE" | "SG" | "SH"
-    | "SI" | "SJ" | "SK" | "SL" | "SM" | "SN" | "SO" | "SR" | "ST" | "SV"
-    | "SY" | "SZ" | "TC" | "TD" | "TF" | "TG" | "TH" | "TJ" | "TK" | "TM"
-    | "TN" | "TO" | "TP" | "TR" | "TT" | "TV" | "TW" | "TZ" | "UA" | "UG"
-    | "UM" | "US" | "UY" | "UZ" | "VA" | "VC" | "VE" | "VG" | "VI" | "VN"
-    | "VU" | "WF" | "WS" | "YE" | "YT" | "YU" | "ZA" | "ZM" | "ZW"
-
-## 7702 definitional test, if any.
-defn_life_ins =
-      "CVAT"
-    | "GPT"
-    | "Not 7702 compliant"
-
-## Special logic, if any, to avoid a MEC. Formerly, another choice
-## tried to avoid a MEC by increasing the specified amount, but that
-## proved unworkable (e.g., because of underwriting).
-mec_avoid_method =
-      "Allow MEC"
-    | "Reduce premium"
-
-## 7702A definition of material change. For the nonce, use
-## "Earlier of" with CVAT, and "adjustment event" with GPT.
-defn_material_change =
-      "Unnecessary premium"
-    | "Benefit increase"
-    | "Later of increase or unnecessary premium"
-    | "Earlier of increase or unnecessary premium"
-    | "GPT adjustment event"
-
-## Inclusive start of a half-open interval, used e.g. for input sequences.
-from_point =
-      "Issue"
-    | "Year"
-    | "Age"
-    | "Retirement"
-
-## Exclusive end of a half-open interval used e.g. for input sequences.
-to_point =
-      "Retirement"
-    | "Year"
-    | "Age"
-    | "Maturity"
-
-## Column on optional supplemental report.
-report_column =
-      "[none]"
-    | "AttainedAge"
-    | "PolicyYear"
-    | "InforceLives"
-    | "SpecAmt"
-    | "TermSpecAmt"
-    | "CorridorFactor"
-    | "AnnGAIntRate_Current"
-    | "AnnSAIntRate_Current"
-    | "Outlay"
-    | "EeGrossPmt"
-    | "ErGrossPmt"
-    | "NetWD"
-    | "NewCashLoan"
-    | "TotalLoanBalance_Current"
-    | "TotalLoanBalance_Guaranteed"
-    | "AcctVal_Current"
-    | "AcctVal_Guaranteed"
-    | "CSVNet_Current"
-    | "CSVNet_Guaranteed"
-    | "EOYDeathBft_Current"
-    | "EOYDeathBft_Guaranteed"
-    | "BaseDeathBft_Current"
-    | "BaseDeathBft_Guaranteed"
-    | "TermPurchased_Current"
-    | "TermPurchased_Guaranteed"
-    | "COICharge_Current"
-    | "COICharge_Guaranteed"
-    | "RiderCharges_Current"
-    | "IrrCsv_Current"
-    | "IrrCsv_Guaranteed"
-    | "IrrDb_Current"
-    | "IrrDb_Guaranteed"
-    | "ExperienceReserve_Current"
-    | "NetClaims_Current"
-    | "NetCOICharge_Current"
-    | "ProjectedCoiCharge_Current"
-    | "KFactor_Current"
-    | "GrossPmt"
-    | "LoanIntAccrued_Current"
-    | "NetDeathBenefit"
-    | "DeathProceedsPaid_Current"
-    | "ClaimsPaid_Current"
-    | "AVRelOnDeath_Current"
-    | "SpecAmtLoad_Current"
-    | "GrossIntCredited_Current"
-    | "NetIntCredited_Current"
-    | "SepAcctCharges_Current"
-    | "PolicyFee_Current"
-    | "AVGenAcct_CurrentZero"
-    | "AVGenAcct_GuaranteedZero"
-    | "AVSepAcct_CurrentZero"
-    | "AVSepAcct_GuaranteedZero"
-    | "AcctVal_CurrentZero"
-    | "AcctVal_GuaranteedZero"
-    | "CSVNet_CurrentZero"
-    | "CSVNet_GuaranteedZero"
-
+include "types.rnc"
diff --git a/types.rnc b/types.rnc
new file mode 100644
index 0000000..c2ef46d
--- /dev/null
+++ b/types.rnc
@@ -0,0 +1,365 @@
+# RELAX NG schema for custom types.
+#
+# Copyright (C) 2012 Gregory W. Chicares.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+#
+# http://savannah.nongnu.org/projects/lmi
+# email: <address@hidden>
+# snail: Chicares, 186 Belle Woods Drive, Glastonbury CT 06033, USA
+
+# $Id$
+
+# This schema is meant not for standalone use, but rather for
+# inclusion from other schemata.
+
+# It is infeasible to validate an input sequence with a regex.
+
+numeric_sequence = text
+payment_sequence = text
+mode_sequence    = text
+dbo_sequence     = text
+specamt_sequence = text
+
+# Numeric-range types.
+
+## Floating-point number greater than or equal to zero.
+nonnegative_double = xsd:double             {minInclusive = "0"                
               }
+
+## Floating-point number between zero and one, inclusive.
+proportion_double  = xsd:double             {minInclusive = "0"       
maxInclusive = "1"      }
+
+## Julian Day Number between 1752-09-14 and 9999-12-31, inclusive.
+calendar_date_int  = xsd:nonNegativeInteger {minInclusive = "2361222" 
maxInclusive = "5373484"}
+
+## Attained age: integer between zero and 99, inclusive.
+age_int            = xsd:nonNegativeInteger {                         
maxInclusive = "99"     }
+
+## Time interval in years: integer between zero and 100, inclusive.
+duration_int       = xsd:nonNegativeInteger {                         
maxInclusive = "100"    }
+
+## Time interval in months: integer between zero and eleven, inclusive.
+month_int          = xsd:nonNegativeInteger {                         
maxInclusive = "11"     }
+
+# Enumerations.
+
+## 'Yes' or 'No'. 'No' is listed first because it is usually the better 
default.
+yes_or_no =
+      "No"
+    | "Yes"
+
+## Gender. 'Unisex' is for contracts that don't distinguish rates by gender.
+gender =
+      "Female"
+    | "Male"
+    | "Unisex"
+
+## Smoking. 'Unismoke' is for contracts that don't distinguish rates
+## by smoking. Some contracts speak of tobacco use instead of smoking,
+## but none use both, so a single set of enumerators suffices.
+smoking =
+      "Smoker"
+    | "Nonsmoker"
+    | "Unismoke"
+
+## Underwriting class. Use "Rated" for contracts with table ratings.
+class =
+      "Preferred"
+    | "Standard"
+    | "Rated"
+    | "Ultra"
+
+## Death benefit option: 'A' = level; 'B' = increasing; 'ROP' = return of 
premium.
+dbopt =
+      "A"
+    | "B"
+    | "ROP"
+
+## Payment mode.
+mode =
+      "Annual"
+    | "Semiannual"
+    | "Quarterly"
+    | "Monthly"
+
+## Basis for expense and general-account rates.
+gen_basis =
+      "Current"
+    | "Guaranteed"
+    | "Midpoint"
+
+## Basis for separate-account rates.
+sep_basis =
+      "Hypothetical"
+    | "Zero"
+    | "Half of hypothetical"
+
+## Type of underwriting.
+uw_basis =
+      "Medical"
+    | "Paramedical"
+    | "Nonmedical"
+    | "Simplified issue"
+    | "Guaranteed issue"
+
+## Industry-standard table rating, or 'None'.
+table_rating =
+      "None"
+    | "A=+25%"
+    | "B=+50%"
+    | "C=+75%"
+    | "D=+100%"
+    | "E=+125%"
+    | "F=+150%"
+    | "H=+200%"
+    | "J=+250%"
+    | "L=+300%"
+    | "P=+400%"
+
+## Parameter to be solved for.
+solve_type =
+      "No solve"
+    | "Specified amount"
+    | "Employee premium"
+    | "Employer premium"
+    | "Loan"
+    | "Withdrawal"
+
+## Solve goal.
+solve_target =
+      "Endowment"
+    | "Target CSV"
+    | "CSV = tax basis"
+    | "Avoid MEC"
+
+## Optional strategy to determine payment as a function of specified amount.
+## 'PmtInputScalar' is obsolete.
+## 'PmtMEP' uses 7702A 7PP rate.
+## 'Table' uses an external table (e.g., New York Table D for group insurance).
+pmt_strategy =
+      "PmtInputScalar"
+    | "PmtMinimum"
+    | "PmtTarget"
+    | "PmtMEP"
+    | "PmtGLP"
+    | "PmtGSP"
+    | "PmtCorridor"
+    | "PmtTable"
+
+## Optional strategy to determine specified amount as a function of premium.
+## 'SAInputScalar' is obsolete.
+## 'SAMEP' uses 7702A 7PP rate.
+sa_strategy =
+      "SAInputScalar"
+    | "SAMaximum"
+    | "SATarget"
+    | "SAMEP"
+    | "SAGLP"
+    | "SAGSP"
+    | "SACorridor"
+    | "SASalary"
+
+## General-account rate: before or after spread.
+gen_acct_rate_type =
+      "Credited rate"
+    | "Earned rate"
+
+## Separate-account rate: before or after spread.
+sep_acct_rate_type =
+      "Net rate"
+    | "Gross rate"
+
+## Loan rate: fixed or variable.
+loan_rate_type =
+      "Fixed loan rate"
+    | "Variable loan rate"
+
+## Fund-allocation overrides, for payments that aren't peremptorily
+## allocated to the general account (e.g., employer payments on some
+## group UL contracts might always go into the general account).
+## Conceptually:
+## 'Average': use mean separate-account fee.
+## 'Override': use scalar input separate-account fee.
+## 'Choose': respect input fund allocations.
+## However, there's no GUI for fund allocation yet, so, for the nonce,
+## the meanings in practice are:
+## 'Average': allocate all payments to separate account.
+## 'Choose': allocate all payments to general account.
+## Reason: the GUI, once it exists, will by default allocate all
+## payments to the general account if no separate-account funds are
+## selected.
+fund_input_method =
+      "Average fund"
+    | "Override fund"
+    | "Choose funds"
+
+## Order in which different individuals in a census are processed.
+## By default, illustrations are created independently, in series:
+## one life at a time. Alternatively, all lives may be run together
+## in parallel, which requires more memory but permits them to affect
+## each other, as when individual charges depend on total case assets.
+run_order =
+      "Life by life"
+    | "Month by month"
+
+## Presumed moment of death, for partial mortality.
+survival_limit =
+      "No survival limit"
+    | "Survive to age limit"
+    | "Survive to duration limit"
+    | "Survive to life expectancy"
+
+## Order in which term and base are affected by changes in total
+## specified amount.
+term_adj_method =
+      "Adjust base first"
+    | "Adjust term first"
+    | "Adjust base and term proportionately"
+
+## USPS two-letter abbreviations for the fifty US states, plus
+##   'DC' (District of Columbia)
+##   'PR' (Puerto Rico)
+## and 'XX', a fictitious state used for non-US business.
+state =
+      "AL" | "AK" | "AZ" | "AR" | "CA" | "CO" | "CT" | "DE" | "DC" | "FL"
+    | "GA" | "HI" | "ID" | "IL" | "IN" | "IA" | "KS" | "KY" | "LA" | "ME"
+    | "MD" | "MA" | "MI" | "MN" | "MS" | "MO" | "MT" | "NE" | "NV" | "NH"
+    | "NJ" | "NM" | "NY" | "NC" | "ND" | "OH" | "OK" | "OR" | "PA" | "PR"
+    | "RI" | "SC" | "SD" | "TN" | "TX" | "UT" | "VT" | "VA" | "WA" | "WV"
+    | "WI" | "WY"
+    | "XX"
+
+## International standard country code [ISO 3166-1-Alpha-2 as of 2000-08-21].
+country =
+      "AD" | "AE" | "AF" | "AG" | "AI" | "AL" | "AM" | "AN" | "AO" | "AQ"
+    | "AR" | "AS" | "AT" | "AU" | "AW" | "AZ" | "BA" | "BB" | "BD" | "BE"
+    | "BF" | "BG" | "BH" | "BI" | "BJ" | "BM" | "BN" | "BO" | "BR" | "BS"
+    | "BT" | "BV" | "BW" | "BY" | "BZ" | "CA" | "CC" | "CD" | "CF" | "CG"
+    | "CH" | "CI" | "CK" | "CL" | "CM" | "CN" | "CO" | "CR" | "CU" | "CV"
+    | "CX" | "CY" | "CZ" | "DE" | "DJ" | "DK" | "DM" | "DO" | "DZ" | "EC"
+    | "EE" | "EG" | "EH" | "ER" | "ES" | "ET" | "FI" | "FJ" | "FK" | "FM"
+    | "FO" | "FR" | "GA" | "GB" | "GD" | "GE" | "GF" | "GH" | "GI" | "GL"
+    | "GM" | "GN" | "GP" | "GQ" | "GR" | "GS" | "GT" | "GU" | "GW" | "GY"
+    | "HK" | "HM" | "HN" | "HR" | "HT" | "HU" | "ID" | "IE" | "IL" | "IN"
+    | "IO" | "IQ" | "IR" | "IS" | "IT" | "JM" | "JO" | "JP" | "KE" | "KG"
+    | "KH" | "KI" | "KM" | "KN" | "KP" | "KR" | "KW" | "KY" | "KZ" | "LA"
+    | "LB" | "LC" | "LI" | "LK" | "LR" | "LS" | "LT" | "LU" | "LV" | "LY"
+    | "MA" | "MC" | "MD" | "MG" | "MH" | "MK" | "ML" | "MM" | "MN" | "MO"
+    | "MP" | "MQ" | "MR" | "MS" | "MT" | "MU" | "MV" | "MW" | "MX" | "MY"
+    | "MZ" | "NA" | "NC" | "NE" | "NF" | "NG" | "NI" | "NL" | "NO" | "NP"
+    | "NR" | "NU" | "NZ" | "OM" | "PA" | "PE" | "PF" | "PG" | "PH" | "PK"
+    | "PL" | "PM" | "PN" | "PR" | "PS" | "PT" | "PW" | "PY" | "QA" | "RE"
+    | "RO" | "RU" | "RW" | "SA" | "SB" | "SC" | "SD" | "SE" | "SG" | "SH"
+    | "SI" | "SJ" | "SK" | "SL" | "SM" | "SN" | "SO" | "SR" | "ST" | "SV"
+    | "SY" | "SZ" | "TC" | "TD" | "TF" | "TG" | "TH" | "TJ" | "TK" | "TM"
+    | "TN" | "TO" | "TP" | "TR" | "TT" | "TV" | "TW" | "TZ" | "UA" | "UG"
+    | "UM" | "US" | "UY" | "UZ" | "VA" | "VC" | "VE" | "VG" | "VI" | "VN"
+    | "VU" | "WF" | "WS" | "YE" | "YT" | "YU" | "ZA" | "ZM" | "ZW"
+
+## 7702 definitional test, if any.
+defn_life_ins =
+      "CVAT"
+    | "GPT"
+    | "Not 7702 compliant"
+
+## Special logic, if any, to avoid a MEC. Formerly, another choice
+## tried to avoid a MEC by increasing the specified amount, but that
+## proved unworkable (e.g., because of underwriting).
+mec_avoid_method =
+      "Allow MEC"
+    | "Reduce premium"
+
+## 7702A definition of material change. For the nonce, use
+## "Earlier of" with CVAT, and "adjustment event" with GPT.
+defn_material_change =
+      "Unnecessary premium"
+    | "Benefit increase"
+    | "Later of increase or unnecessary premium"
+    | "Earlier of increase or unnecessary premium"
+    | "GPT adjustment event"
+
+## Inclusive start of a half-open interval, used e.g. for input sequences.
+from_point =
+      "Issue"
+    | "Year"
+    | "Age"
+    | "Retirement"
+
+## Exclusive end of a half-open interval used e.g. for input sequences.
+to_point =
+      "Retirement"
+    | "Year"
+    | "Age"
+    | "Maturity"
+
+## Column on optional supplemental report.
+report_column =
+      "[none]"
+    | "AttainedAge"
+    | "PolicyYear"
+    | "InforceLives"
+    | "SpecAmt"
+    | "TermSpecAmt"
+    | "CorridorFactor"
+    | "AnnGAIntRate_Current"
+    | "AnnSAIntRate_Current"
+    | "Outlay"
+    | "EeGrossPmt"
+    | "ErGrossPmt"
+    | "NetWD"
+    | "NewCashLoan"
+    | "TotalLoanBalance_Current"
+    | "TotalLoanBalance_Guaranteed"
+    | "AcctVal_Current"
+    | "AcctVal_Guaranteed"
+    | "CSVNet_Current"
+    | "CSVNet_Guaranteed"
+    | "EOYDeathBft_Current"
+    | "EOYDeathBft_Guaranteed"
+    | "BaseDeathBft_Current"
+    | "BaseDeathBft_Guaranteed"
+    | "TermPurchased_Current"
+    | "TermPurchased_Guaranteed"
+    | "COICharge_Current"
+    | "COICharge_Guaranteed"
+    | "RiderCharges_Current"
+    | "IrrCsv_Current"
+    | "IrrCsv_Guaranteed"
+    | "IrrDb_Current"
+    | "IrrDb_Guaranteed"
+    | "ExperienceReserve_Current"
+    | "NetClaims_Current"
+    | "NetCOICharge_Current"
+    | "ProjectedCoiCharge_Current"
+    | "KFactor_Current"
+    | "GrossPmt"
+    | "LoanIntAccrued_Current"
+    | "NetDeathBenefit"
+    | "DeathProceedsPaid_Current"
+    | "ClaimsPaid_Current"
+    | "AVRelOnDeath_Current"
+    | "SpecAmtLoad_Current"
+    | "GrossIntCredited_Current"
+    | "NetIntCredited_Current"
+    | "SepAcctCharges_Current"
+    | "PolicyFee_Current"
+    | "AVGenAcct_CurrentZero"
+    | "AVGenAcct_GuaranteedZero"
+    | "AVSepAcct_CurrentZero"
+    | "AVSepAcct_GuaranteedZero"
+    | "AcctVal_CurrentZero"
+    | "AcctVal_GuaranteedZero"
+    | "CSVNet_CurrentZero"
+    | "CSVNet_GuaranteedZero"
+
-- 
1.7.10.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]