Indexed universal life (IUL) illustrations have been a recurring source of regulatory friction since they emerged in the late 1990s. Carriers competing on illustrated policy values produced increasingly aggressive assumptions that did not reflect realistic long-run outcomes. The NAIC responded in 2015 with Actuarial Guideline 49 (AG 49), revised in 2020 (AG 49-A), and the result is a framework that constrains what carriers can illustrate. The framework has more teeth than most software acknowledges.
What AG 49-A actually constrains
AG 49 was originally aimed at the illustrated rate carriers could use for the indexed account. Carriers had been selecting illustration rates that reflected the upside of a cap-and-floor strategy without recognizing the reality that not every year's index return reaches the cap. AG 49 limited the illustrated rate to a benchmark indexed credited rate (BIA: Benchmark Index Account) computed by a specific methodology.
AG 49-A (2020) extended the constraint to the cap multiplier and persistency bonuses, which carriers had used to circumvent the original AG 49 cap. The current rule set:
| Element | AG 49-A constraint | |
|---|---|---|
| Maximum illustrated rate | Bounded by the BIA — a 25-year geometric mean of the underlying index with the contract's cap, floor, and participation rate applied | |
| Multipliers | Illustrated impact of multipliers must be self-funded by the policy charges that underlie them — no 'free' multiplier illustration | |
| Persistency bonuses | Same self-funding requirement — bonuses can only be illustrated to the extent they're funded by policy charges | |
| Loan rates | Illustrated loan arbitrage is constrained — the illustrated loan rate must be the contract's actual loan rate, not a marketing rate | |
| Indexed loan illustrated rate | Cannot exceed the BIA-bounded illustrated rate plus 50 bps for fixed-loan carriers |
The constraints are arithmetic but not trivial. A compliance engine has to compute the BIA from the contract's actual cap, floor, and participation rate, applied to a 25-year window of the underlying index's actual returns. This is more than a single field — it's a calculation requiring the index's 25-year history.
The BIA calculation
The benchmark indexed credited rate is the AG 49-A core. The procedure:
- Step 1Pull 25 years of underlying index historyS&P 500 (most common), Russell 1000, Nasdaq-100, or other contract-specified index. Use closing values at the contract's anniversary date.
- Step 2Compute the year-by-year credited ratePer year: indexed return = max(floor, min(cap, raw_return × participation_rate)). Apply contract terms exactly.
- Step 3Compute the geometric meanGM = (Π (1 + credited_rate_i))^(1/25) − 1. This is the BIA, which is the maximum illustrated rate the carrier can use.
- Step 4Apply additional constraintsMultipliers and bonuses must be net of their funding charges — show the gross multiplier impact and the gross funding cost.
- Step 5Validate against carrier's illustrated rateIf the illustration uses a higher rate than the BIA, the illustration is non-compliant. Engine has to flag.
The 25-year window updates each year — not every year's BIA is the same. Carriers refresh BIA calculations periodically; engines validating illustrations have to use the BIA effective at the illustration date.
What carrier data the engine needs
A compliance engine needs structured data from the carrier or from the illustration software vendor:
Per-illustration data the engine needs
- Underlying index identifier and historical values (25 years minimum)
- Contract cap, floor, participation rate — per indexed account in the contract
- Multipliers and persistency bonuses with their schedules and the corresponding funding charges
- Indexed loan availability, loan rate, and loan-balance treatment
- Policy charges (cost of insurance, M&E, riders, surrender charges)
- Insured age, gender, smoker status, rating — drives mortality charges
- Premium pattern (single, level, indexed, target, etc.)
- Death benefit option (level, increasing, return of premium)
Carriers vary in how much of this they expose to third parties. Some publish their illustration software's data files publicly; some require commercial licensing; some keep it proprietary. The engineering ramp-up for an engine that handles N carriers is roughly linear in N — there is no universal IUL data format.
The validation gates a compliant engine has to run
Beyond the BIA constraint, AG 49-A requires several explicit numeric and disclosure validations:
- Gate 1Illustrated rate ≤ BIAThe illustration's assumed annual indexed credited rate must not exceed the BIA. A carrier-supplied rate above BIA is non-compliant.
- Gate 2Self-funding of multipliersIf the illustration includes a multiplier (e.g., 110% of indexed return), the multiplier must be funded by an explicit policy charge. The illustrated benefit minus the illustrated charge must net to zero on average.
- Gate 3Self-funding of bonusesSame logic for persistency bonuses. Free bonuses (no corresponding charge) are not illustratable.
- Gate 4Loan arbitrage capIllustrated indexed loan rate cannot exceed BIA + 50 bps for fixed-loan carriers.
- Gate 5Disclosure languageRequired statements: that illustrated values are not guaranteed, that actual values may be lower, that the BIA is a benchmark not a forecast. Engine should validate disclosure presence.
- Gate 6Side-by-side guaranteed columnAG 49-A requires illustrations to show guaranteed values alongside non-guaranteed. Engine should validate the guaranteed column is present and accurate.
Each gate is a yes/no validation. An illustration that fails any of them is non-compliant. A compliance engine should produce a per-gate output with citation to the AG 49-A section that's violated.
What goes wrong in practice
Illustration validation tools across carriers and intermediaries show recurring issues:
Stale BIA. The engine uses a BIA computed at integration time and doesn't update as the 25-year window rolls forward. Multi-year-old BIAs are wrong by enough to flag legitimate illustrations as non-compliant or pass non-compliant ones as legitimate.
Wrong index history. The engine pulls the index from a generic data source rather than the specific index the contract references. Some carriers use proprietary indexes (volatility-controlled, momentum-based) whose history isn't on Bloomberg.
Multiplier modeling. The engine treats the multiplier as a static factor rather than as a multiplier funded by a charge. Self-funding validation requires modeling both sides; engines that show only the multiplier without the charge produce illustrations that look better than they are.
Missing carrier-specific overrides. Some carriers have AG 49-A-compliant variants of their products with explicit guaranteed-value floors. The engine has to know which variant is being illustrated and apply the right BIA rules.
What this means for synthetic test data
A synthetic dataset for IUL illustration testing has to include:
- 25 years of underlying index history (S&P 500, Russell 1000, others as needed)
- Contract specifications spanning the cap × floor × participation rate space
- Multiplier and bonus structures with corresponding charges
- Indexed loan availability and loan rate variations
- Insured profiles spanning age, gender, smoker, rating
- Both AG 49-A-compliant and non-compliant illustration examples (so the engine can be tested on both)
The non-compliant examples are important — they're how engineers know the engine catches violations. A test corpus of only-compliant illustrations doesn't exercise the violation-detection code path that's the actual job of the validation engine.
Key takeaways
- AG 49-A constrains illustrated rates, multipliers, bonuses, and loan arbitrage on IUL products. The constraints are arithmetic and engines have to compute them from carrier-specific contract terms.
- The BIA (benchmark indexed credited rate) is a 25-year geometric mean of the underlying index with the contract's cap, floor, and participation rate applied. It updates yearly as the window rolls.
- Multipliers and persistency bonuses must be self-funded by corresponding charges. 'Free' multipliers cannot be illustrated.
- Six explicit validation gates: illustrated rate vs BIA, multiplier self-funding, bonus self-funding, loan arbitrage cap, disclosure language, side-by-side guaranteed column.
- Carriers vary in how much illustration data they expose. Engines covering N carriers have N data integrations.
- Test data needs both compliant and non-compliant illustrations. Validation engines that have only seen compliant data don't exercise their violation-detection paths.