{
  "tool_id": "art-253-run-illustration-selfsupport-test",
  "note": "NAIC Model 582 illustration self-support test. Vector 1: pass (positive AV at yr15 and yr20). Vector 2: fail (negative AV at yr15 and yr20). Both branches needed for life-illustration-self-support-test linear chain.",
  "vectors": [
    {
      "name": "illustration_passes_both_tests",
      "description": "UL policy with steadily growing account value. AV yr15=$1500, yr20=$2000, both positive. Self-support tests pass. No lapse rates supplied so lapse_support_flag=false. illustration_valid=true.",
      "policy_parameters": {
        "account_values": [
          100,
          200,
          300,
          400,
          500,
          600,
          700,
          800,
          900,
          1000,
          1100,
          1200,
          1300,
          1400,
          1500,
          1600,
          1700,
          1800,
          1900,
          2000
        ],
        "premium_payments": [
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120
        ],
        "cost_of_insurance": [
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50
        ],
        "expense_charges": [
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20
        ],
        "credited_interest": [
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45
        ],
        "face_amount": 100000
      },
      "output_payload": {
        "illustration_valid": true,
        "self_support_pass": true,
        "self_support_yr15_pass": true,
        "self_support_yr20_pass": true,
        "account_value_yr15": 1500,
        "account_value_yr20": 2000,
        "lapse_support_flag": false,
        "lapse_adjusted_av_yr20": 2000,
        "cumulative_net": 1900,
        "total_premiums": 2400,
        "total_coi": 1000,
        "total_expenses": 400,
        "total_interest": 900,
        "face_amount": 100000,
        "policy_years_provided": 20,
        "issues": [],
        "table_version": "NAIC-MODEL-582-ILLUSTRATION-TESTS-V1.0-2025",
        "table_source": "NAIC Model Regulation 582 §8C Self-Support Test; §8D Lapse-Support Test; ASOP 24 (2014); NAIC Life Insurance Illustrations Model Regulation (2001 revision)",
        "regulatory_basis": "NAIC Model Regulation 582 §8C (self-support test at year 15 and year 20) and §8D (lapse-support prohibition); ASOP 24 (Actuarial Standard of Practice for Illustrations). Applicable to life insurance illustration requirements in all US states adopting Model 582.",
        "pii_note": "ZERO PII: projected cash flows and policy mechanics only. No policyholder name, age, health classification, or personal data enters this kernel.",
        "not_legal_advice": "Not legal or actuarial advice. Final illustration certification requires review and sign-off by a qualified actuary per ASOP 24 and applicable state regulations."
      },
      "golden_hash": "d558fcb163d5fe810a7ee92755870f1c9d6cb73a56d1415edd645d70ac08b263"
    },
    {
      "name": "illustration_fails_selfsupport",
      "description": "Policy with deteriorating account value. AV peaks at year 5, declines to -500 at yr15 and -1000 at yr20. Both self-support tests fail. illustration_valid=false. Covers the test-fail path.",
      "policy_parameters": {
        "account_values": [
          100,
          200,
          300,
          400,
          500,
          400,
          300,
          200,
          100,
          0,
          -100,
          -200,
          -300,
          -400,
          -500,
          -600,
          -700,
          -800,
          -900,
          -1000
        ],
        "premium_payments": [
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120,
          120
        ],
        "cost_of_insurance": [
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50,
          50
        ],
        "expense_charges": [
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20,
          20
        ],
        "credited_interest": [
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45,
          45
        ],
        "face_amount": 100000
      },
      "output_payload": {
        "illustration_valid": false,
        "self_support_pass": false,
        "self_support_yr15_pass": false,
        "self_support_yr20_pass": false,
        "account_value_yr15": -500,
        "account_value_yr20": -1000,
        "lapse_support_flag": false,
        "lapse_adjusted_av_yr20": -1000,
        "cumulative_net": 1900,
        "total_premiums": 2400,
        "total_coi": 1000,
        "total_expenses": 400,
        "total_interest": 900,
        "face_amount": 100000,
        "policy_years_provided": 20,
        "issues": [
          "Year-15 self-support test FAIL: projected account value < 0 at year 15",
          "Year-20 self-support test FAIL: projected account value < 0 at year 20"
        ],
        "table_version": "NAIC-MODEL-582-ILLUSTRATION-TESTS-V1.0-2025",
        "table_source": "NAIC Model Regulation 582 §8C Self-Support Test; §8D Lapse-Support Test; ASOP 24 (2014); NAIC Life Insurance Illustrations Model Regulation (2001 revision)",
        "regulatory_basis": "NAIC Model Regulation 582 §8C (self-support test at year 15 and year 20) and §8D (lapse-support prohibition); ASOP 24 (Actuarial Standard of Practice for Illustrations). Applicable to life insurance illustration requirements in all US states adopting Model 582.",
        "pii_note": "ZERO PII: projected cash flows and policy mechanics only. No policyholder name, age, health classification, or personal data enters this kernel.",
        "not_legal_advice": "Not legal or actuarial advice. Final illustration certification requires review and sign-off by a qualified actuary per ASOP 24 and applicable state regulations."
      },
      "golden_hash": "66aaa963b33e10a13f064eca4f902ced32e54ec5f07175b4a6a74b567f52e42b"
    }
  ]
}
