You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Income tax loss_relief deducts each trading loss twice, and again in every later year the input carries into #2087
It is deducted only from self-employment income (taxable_self_employment_income_deductions), and taxable_self_employment_income floors the result at zero.
Each loss is deducted twice. A year's loss is deducted in full in that year and again in the next, however much of it the first year used.
A one-off loss recurs in every later year.trading_loss is an input, and the engine carries an input into later years that are not set (auto_carry_over_input_variables in tax_benefit_system.py). Take a loss entered only for 2025. It is read as 2026's trading_loss, then 2027's, and so on, so loss_relief deducts it twice in each of those years. To avoid this, users have to enter zeros for the later years; Charge Class 4 NICs on Chapter 2 profits, after capital allowances, the trading allowance and Schedule 2 losses #1919 documents that on trading_loss.
The statutory limits are missing.
ITA 2007 s.64(2) deducts a loss in calculating net income, against general income. The deduction is for the loss-making year, the previous year, or both. The model's second deduction falls in the following year instead.
s.83(2) carries forward only "the part of the loss for which relief has not been given".
s.83(3) deducts it "only from profits of the trade". s.84 deducts it from the next year's trade profits, then each later year's, "until all the unrelieved loss is deducted".
The model neither tracks the part already used nor carries an excess beyond one year: whatever self-employment income does not absorb is lost.
Carry forward unrelieved losses against later trade profits (ss.83-84), reusing the Class 4 fold.
Decide how to model s.64 claims against general income: current year only, or with the previous-year option.
Property-test that total relief never exceeds the losses entered.
On impact: the #1919 PR body reports trading_loss totalling £0 in enhanced_frs_2024_25.h5@1.56.16. Check the current dataset before estimating anything.
Problem
loss_relief(policyengine_uk/variables/gov/hmrc/income_tax/reliefs/loss_relief.py) is:It is deducted only from self-employment income (
taxable_self_employment_income_deductions), andtaxable_self_employment_incomefloors the result at zero.trading_lossis an input, and the engine carries an input into later years that are not set (auto_carry_over_input_variablesintax_benefit_system.py). Take a loss entered only for 2025. It is read as 2026'strading_loss, then 2027's, and so on, soloss_reliefdeducts it twice in each of those years. To avoid this, users have to enter zeros for the later years; Charge Class 4 NICs on Chapter 2 profits, after capital allowances, the trading allowance and Schedule 2 losses #1919 documents that ontrading_loss.#1919 fixes this for Class 4 NICs only:
ni_class_4_trading_losscounts a loss only in the year it is entered for;ni_class_4_losses_brought_forwardcarries unrelieved losses forward year by year, with no ten-year spiral limit.SSCBA 1992 Sch. 2 para. 3(4) ties Class 4 loss relief to the income tax deduction, so once income tax is fixed the two should agree.
Fix
trading_lossonly in the years it is supplied for, using thesupplied_inputhelper from Charge Class 4 NICs on Chapter 2 profits, after capital allowances, the trading allowance and Schedule 2 losses #1919 (policyengine_uk/utils/supplied_inputs.py).On impact: the #1919 PR body reports
trading_losstotalling £0 inenhanced_frs_2024_25.h5@1.56.16. Check the current dataset before estimating anything.Follow-up from #1919.