Split charitable deduction AGI cap by organization type#7447
Open
MaxGhenis wants to merge 2 commits intoPolicyEngine:mainfrom
Open
Split charitable deduction AGI cap by organization type#7447MaxGhenis wants to merge 2 commits intoPolicyEngine:mainfrom
MaxGhenis wants to merge 2 commits intoPolicyEngine:mainfrom
Conversation
Implements 26 USC 170(b)(1)(A)-(B) distinction for non-cash charitable donations. Non-cash donations to 50-percent limit organizations (churches, hospitals, educational institutions, etc.) remain capped at 50% of AGI, while donations to other organizations (e.g., private foundations) are now correctly capped at 30% of AGI. Adds: - New input variable: charitable_non_cash_donations_to_non_50_percent_limit_orgs - New parameter: ceiling/non_cash_to_non_50_pct_org (30% cap) - Updated formula with separate caps per org type - 5 new test cases covering the split behavior Fixes PolicyEngine#6418 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #7447 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 2 2
Lines 25 40 +15
Branches 0 1 +1
=========================================
+ Hits 25 40 +15
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
- Rename charitable_non_cash_donations_to_non_50_percent_limit_orgs to charitable_non_cash_donations_non_50_pct_orgs (shorter name) - Add TODO comments documenting the full 4-category structure under 26 USC 170(b)(1): cash 60%/30%, non-cash 50%/30% (or 20% for capital gain property to non-50% orgs per 170(b)(1)(D)) - Add notes that current 50% cap models the basis-reduction election under 170(b)(1)(C)(iii), and 30% cap uses the general limit from 170(b)(1)(B) rather than the stricter 20% from 170(b)(1)(D) - Fix pre-existing incorrect test comments (non_cash ceiling is 0.5, not 0.3) - Update parameter YAML with dual references to (B) and (D) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
charitable_non_cash_donations_non_50_pct_orgs(defaults to 0 for backward compatibility)ceiling/non_cash_to_non_50_pct_org.yaml= 0.3 (30% AGI cap)charitable_deduction.pyto apply separate caps per org type, including proper interaction with OBBBA floor logic (2026+)Known simplifications (documented with TODOs)
26 USC 170(b)(1) defines 4 contribution categories with separate AGI caps:
ceiling.allThese simplifications are acceptable because:
Test plan
Closes #6418
Generated with Claude Code