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.
This article is the working note for engineering teams whose product validates, generates, or compares IUL illustrations. The AG 49-A constraints, the carrier-side data inputs, and the validation gates a compliant engine has to enforce.
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
We've audited illustration validation tools across several carriers and intermediaries. The 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.