Skip to content

Implement Oklahoma Unemployment Insurance (ref #8264)#8265

Draft
daphnehanse11 wants to merge 3 commits into
PolicyEngine:mainfrom
daphnehanse11:ok-ui
Draft

Implement Oklahoma Unemployment Insurance (ref #8264)#8265
daphnehanse11 wants to merge 3 commits into
PolicyEngine:mainfrom
daphnehanse11:ok-ui

Conversation

@daphnehanse11
Copy link
Copy Markdown
Collaborator

@daphnehanse11 daphnehanse11 commented May 12, 2026

Summary

Implements Oklahoma Unemployment Insurance (administered by the Oklahoma Employment Security Commission, OESC).

Closes #8264

Regulatory authority

Monetary eligibility (§2-207)

A claimant is monetarily eligible if EITHER:

  • Test A: base-period taxable wages >= $1,500 AND base-period total wages >= 1.5 × high quarter wages
  • Test B: base-period taxable wages > 0 AND base-period total wages >= the annual taxable wage base

Annual taxable wage base

Year Amount
2025 $28,200
2026 $25,000
(Pre-2025 default: $27,000)

Weekly benefit amount (§2-104)

  • WBA = floor(high quarter taxable wages / 23)
  • Clamped to [$16, max_amount]
  • Max amount (OESC Board determination):
    Year Max WBA
    2024 $519
    2025 $541
    2026 $649

Maximum benefit amount (§2-106, HB 1933)

  • MBA = WBA × max_weeks
  • max_weeks = 26 before 2023, 16 from 2023-01-01

Partial benefits (§2-105)

  • Weekly payable = max(0, WBA - max(0, weekly_earnings - $100))

Annual benefit

  • ok_ui = min(weekly_payable × weeks_unemployed, MBA)
  • Gated by ok_ui_monetarily_eligible and Oklahoma state code

Requirements coverage

REQ Description Param Variable Test
001 Base period - ok_ui_base_period_, ok_ui_high_quarter_ -
004 Test A eligibility/min_taxable_wages, min_total_wages_multiplier ok_ui_meets_high_quarter_test ok_ui_meets_high_quarter_test.yaml
005 Test B tax/payroll/unemployment/taxable_wage_base ok_ui_meets_alternate_wages_test ok_ui_meets_alternate_wages_test.yaml
006 A OR B - ok_ui_monetarily_eligible ok_ui_monetarily_eligible.yaml
011 WBA formula wba/divisor ok_ui_weekly_benefit_rate ok_ui_weekly_benefit_rate.yaml
012 WBA clamp wba/min_amount, wba/max_amount ok_ui_weekly_benefit_rate ok_ui_weekly_benefit_rate.yaml
015 MBA - ok_ui_maximum_benefit_amount ok_ui_maximum_benefit_amount.yaml
016 max_weeks mba/max_weeks ok_ui_maximum_benefit_amount ok_ui_maximum_benefit_amount.yaml
018 Partial partial/disregard ok_ui_weekly_payable ok_ui_weekly_payable.yaml
021 Annual - ok_ui ok_ui.yaml + integration.yaml
022 Eligibility gate - ok_ui (defined_for) ok_ui.yaml + edge_cases.yaml
013 Handbook example - - ok_ui_weekly_benefit_rate.yaml Case 1 ($14,000 → $519)

Not modeled

30 NOT-MODELED items, listed in the scope decision. The most notable:

  • Able/available/seeking-work tests (§2-202, §2-205.1)
  • One-week waiting period (§2-206)
  • Disqualifications (voluntary quit, misconduct, drug/alcohol, suitable-work refusal, labor disputes, pension offset, seasonal, back-pay)
  • §1-231 16→20→26 week claim-volume escalation (treated as fixed 16 weeks per issue OK unemployment insurance #8264)
  • Alternative/extended base periods (§1-202.1, §1-202.2)
  • Alien-status rules (§2-208)
  • Extended Benefits (§§2-701 et seq.)

Historical notes

  • Maximum duration was reduced from 26 to 16 weeks by HB 1933, effective 2023-01-01.
  • $1,500 minimum taxable wage threshold has been in statute since 1980.
  • $100 partial-benefit disregard has been in statute since 1994.
  • Maximum WBA is reset annually by the OESC Board (§2-104(B)).

Files added

policyengine_us/parameters/gov/states/ok/oesc/unemployment_insurance/
├── eligibility/
│   ├── min_taxable_wages.yaml
│   └── min_total_wages_multiplier.yaml
├── wba/
│   ├── divisor.yaml
│   ├── min_amount.yaml
│   └── max_amount.yaml
├── mba/
│   └── max_weeks.yaml
├── partial/
│   └── disregard.yaml
└── index.yaml

policyengine_us/variables/gov/states/ok/oesc/unemployment_insurance/
├── ok_ui.py
├── ok_ui_base_period_taxable_wages.py
├── ok_ui_base_period_total_wages.py
├── ok_ui_gross_weekly_earnings.py
├── ok_ui_high_quarter_taxable_wages.py
├── ok_ui_maximum_benefit_amount.py
├── ok_ui_meets_alternate_wages_test.py
├── ok_ui_meets_high_quarter_test.py
├── ok_ui_monetarily_eligible.py
├── ok_ui_weekly_benefit_rate.py
└── ok_ui_weekly_payable.py

policyengine_us/tests/policy/baseline/gov/states/ok/oesc/unemployment_insurance/
├── edge_cases.yaml
├── integration.yaml
├── ok_ui.yaml
├── ok_ui_maximum_benefit_amount.yaml
├── ok_ui_meets_alternate_wages_test.yaml
├── ok_ui_meets_high_quarter_test.yaml
├── ok_ui_monetarily_eligible.yaml
├── ok_ui_weekly_benefit_rate.yaml
└── ok_ui_weekly_payable.yaml

policyengine_us/parameters/gov/states/ok/tax/payroll/unemployment/
└── taxable_wage_base.yaml (extended with 2025/2026 values)

changelog.d/
└── ok-ui.added.md

daphnehanse11 and others added 2 commits May 12, 2026 09:30
Starting implementation of Oklahoma UI per issue PolicyEngine#8264.
Documentation and implementation will follow.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@codecov
Copy link
Copy Markdown

codecov Bot commented May 12, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (8cb60e7) to head (dbcb34b).
⚠️ Report is 8 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #8265   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            3        11    +8     
  Lines           63       140   +77     
=========================================
+ Hits            63       140   +77     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

- Replace broken 2025 OESC PDF URL with working OMES PDF + OESC homepage
- Fix section citation: §1-218 → §1-201(48) + §1-223 in taxable_wage_base
- Add subsection specificity: §2-207(A) → §2-207(A)(1)/(A)(2)
- Correct PDF page anchors: divisor/min_amount/max_amount #page=49→50;
  disregard #page=50→51
- Update stale $27,400 test comments to match actual $27,000 param
- Replace 0000-01-01 sentinel with 1980-07-01 in mba/max_weeks
- Add trailing comma to make single-element reference tuples valid

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OK unemployment insurance

1 participant