diff --git a/changelog.d/1095-uk-energy-price-basis.added.md b/changelog.d/1095-uk-energy-price-basis.added.md new file mode 100644 index 0000000000..02d9669c0e --- /dev/null +++ b/changelog.d/1095-uk-energy-price-basis.added.md @@ -0,0 +1 @@ +Every UK H5 that stores domestic energy spending now declares its price period in the root `energy_price_basis` attribute, `{"period_type": "calendar_year", "period_value": 2024}`: the calendar-2024 prices `lcfs_consumption` sets every household spend column at, which the stage-time gate `uk_stage_lcfs_consumption_basis` holds (microcosm#1113). From policyengine-uk 2.148.1 (PolicyEngine/policyengine-uk#2571) the engine projects declared electricity, gas and domestic energy spending by its consumer price index and keeps undeclared spending at its stored prices in every later year, so a later year costed on a Microcosm release no longer prices energy at 2024 prices (PolicyEngine/policyengine-uk#2526, its remaining item 2; microcosm#1095). On a file that declares it, each household's electricity, gas and domestic energy spending moves to a later year by the engine's energy price index from 1 January 2024, every household alike, where an undeclared file keeps its stored spending; releases built before this change stay undeclared. An engine-tier test loads a written file through `Microsimulation` and checks 2025 and 2026 against the index, and a copy without the declaration against the stored spending (Vahid's review of microcosm#1383, item 3). The calibration's 2025 measurement of the energy rows moves with it. diff --git a/changelog.d/1095-uk-held-rows-2026-11-26.changed.md b/changelog.d/1095-uk-held-rows-2026-11-26.changed.md new file mode 100644 index 0000000000..79cb335872 --- /dev/null +++ b/changelog.d/1095-uk-held-rows-2026-11-26.changed.md @@ -0,0 +1 @@ +The UK national rows held out until 2026-11-26 are settled (microcosm#1095, María's ruling of 2026-10-22). The zero-support floor (`uk/calibration_measure_exclusions.json`, schema 4) now holds its rows in scopes of one unit each, each with its own ceilings, because a share ceiling sums published values. A scope's unit is the one its targets' contract measurements give (a count's entity, or pounds), and the run refuses a scope labelled otherwise; the band-H scope counts households, the occupied dwellings its rows measure. A register at schema 3, the single-scope floor, is refused rather than read, so an old run directory's register no longer replays without its floor restated at schema 4. The scopes are the UC payment-distribution and benefit-cap amount bands, the HMRC SPI income-band counts, the HMRC SPI income-band amounts, and the band-H council-tax rows by English region. On #1333's policyengine-uk 2.145.0 spine every HMRC £1m-and-over cell and every band-H region cell has carriers. The three band-H region entries retire and the rows bind, with their figures withheld where fewer than ten source households carry them; Plan 5's liable stock, which the stage fits at design weights, binds too. The ten HMRC £1m-and-over cells were bound on a calibrate-only arm of that spine, which measured a distortion of their SPI-channel neighbours, so they stay held on that measurement under María's rule of 2026-10-21, re-signed to 2027-01-23. The OBR Universal Credit split at the welfare cap and the England postgraduate repayments leave the targets for `registry_parity.excluded`: the model marks no welfare-cap boundary, and the stage assigns no postgraduate plan. `obr.universal_credit` still binds the sum of the two cap cells. diff --git a/changelog.d/1095-uk-held-rows-arm2.changed.md b/changelog.d/1095-uk-held-rows-arm2.changed.md new file mode 100644 index 0000000000..44c5d9b080 --- /dev/null +++ b/changelog.d/1095-uk-held-rows-arm2.changed.md @@ -0,0 +1 @@ +Arm 2 of the next policyengine-uk bump, one spine and one calibration on policyengine-uk 2.151.0, re-measures the UK rows still held out of the objective (microcosm#1095). Four of the twelve UC payment-distribution bands, which microcosm#1344 now draws by award band, come within 10 percent unbound, so their entries retire and the rows bind; the other eight keep their renewals of 2026-10-23. The four Housing Benefit rows and DWP's JSA claimants stay outside the 25 percent bound at design weights and are renewed, signed on 2026-10-24 to 2027-01-24, pending the Housing Benefit and JSA PR (microcosm#867, microcosm#869). No reason gives a new model figure of a row that rests in part on the households of the SPI support channel (SN 9422). diff --git a/changelog.d/1095-uk-held-rows-renewed-arm1.changed.md b/changelog.d/1095-uk-held-rows-renewed-arm1.changed.md new file mode 100644 index 0000000000..c8e1297274 --- /dev/null +++ b/changelog.d/1095-uk-held-rows-renewed-arm1.changed.md @@ -0,0 +1 @@ +The UK rows still held out of the objective are renewed on a calibrate-only arm of #1333's policyengine-uk 2.145.0 spine (microcosm#1095), signed on 2026-10-23 to 2027-01-23: the twelve UC payment-distribution bands (all outside 10 percent unbound; they wait on the award-band take-up of microcosm#1344), the two Plan 2 borrower stocks (the coverage gap stands), Plan 5's repayments (too few source households carry them for any weights to reach SLC's figure; its figures are withheld) and the any-tenure UC housing-element count (at the other/unknown-tenure gap itself). No reason gives a new model figure: the rows rest in large part on the households of the SPI support channel (SN 9422), and Plan 5's repayments on fewer than ten source households. Each adjudication keeps its history. diff --git a/changelog.d/1095-uk-legacy-closure-owners.fixed.md b/changelog.d/1095-uk-legacy-closure-owners.fixed.md new file mode 100644 index 0000000000..f13ad977ca --- /dev/null +++ b/changelog.d/1095-uk-legacy-closure-owners.fixed.md @@ -0,0 +1 @@ +The Move to UC claim draw (`uc_legacy_closure_take_up`) now reads each benefit unit's legacy and Universal Credit reports from its claimant and partner only (`is_claimant_or_partner`; microcosm#1095). Since policyengine-uk 2.146.0 (pe-uk#2549) the engine closes a legacy award through its owners, so an award another member claims in their own right closes on its own. The draw counted every member's reports, so such an award could put the family in the draw, or keep it out as a Universal Credit unit. diff --git a/changelog.d/1095-uk-local-thin-rows-withheld.changed.md b/changelog.d/1095-uk-local-thin-rows-withheld.changed.md new file mode 100644 index 0000000000..ef724d1737 --- /dev/null +++ b/changelog.d/1095-uk-local-thin-rows-withheld.changed.md @@ -0,0 +1 @@ +Constituency and local-authority rows now follow the ten-household floor for their published figures (María's ruling of 2026-10-23 on the local line): a local row resting on fewer than ten source households keeps its place without its model figures, and a published local row that would give it back by difference is withheld beside it, as national, regional and BRMA rows are. The area-support rule still decides which local rows bind. `uk_withheld_row_sets` takes its span per block, since the local surface is too large for one dense span: the national, regional and BRMA rows together; each region's rows of every grain, so a region row less its published local cells, or a region's constituencies less its local authorities, is caught; and each local family with the higher-grain targets the cross-grain declarations or a nested measurement tie it to, so a national row less a family's published cells is caught too (Vahid's review of microcosm#1383, item 1). The blocks overlap, so a row one block withholds beside a thin one is protected in every other block that holds it, and the blocks run again until none withholds another row. Local rows need the frame's household region. The report guard matches a withheld local row by its own `family/area/metric` key, and a bare area code only for a withheld BRMA row (`uk_withheld_gate_areas`), so a published row of another family in the same area may still be named. BRMA rows publish from ten households under the national block's check, and beside Scotland's local rows in its region's block where a run carries them (María's rulings of 2026-10-17 and 2026-10-24). diff --git a/changelog.d/1095-uk-self-employment-receipts-default.added.md b/changelog.d/1095-uk-self-employment-receipts-default.added.md new file mode 100644 index 0000000000..98c2ab47ab --- /dev/null +++ b/changelog.d/1095-uk-self-employment-receipts-default.added.md @@ -0,0 +1 @@ +`UK_ENGINE_DEFAULT_INPUTS` (`microcosm.frame.adapters.policyengine_uk_concepts`) signs the engine inputs the UK build leaves at policyengine-uk's default as approximations, each with the error it can make (microcosm#1095). Its first entry is `self_employment_gross_receipts`: no source of the self-employed's turnover is read yet, so `trading_allowance_deduction` relieves a profit of £1,000 or less in full and gives a larger profit no allowance, which puts taxable profit at most £1,000 a person from where receipts would put it. Its second is `housing_benefit_residential_capital_exception` (policyengine-uk 2.148.4): the FRS samples private households and records no assessment of the residential accommodation or saved circumstances the exception covers, so it stays False, and Housing Benefit is understated only for a qualifying working-age resident, who takes tariff income on capital above £6,000 instead of £10,000 (Vahid's review of microcosm#1383, item 4). Tests check that each entry is an engine input the mapping never binds and that no spine column writes it. diff --git a/changelog.d/1095-uk-spi-public-use-tape-marker.added.md b/changelog.d/1095-uk-spi-public-use-tape-marker.added.md new file mode 100644 index 0000000000..e54e7b3b00 --- /dev/null +++ b/changelog.d/1095-uk-spi-public-use-tape-marker.added.md @@ -0,0 +1 @@ +UK builds mark the outputs that rest on the SPI 2022-23 Public Use Tape (SN 9422), whose Special Conditions add two obligations to the End User Licence: no attempt to attribute a record to a named individual, and analyses of the tape go to HMRC at least ten working days before they are distributed or published (microcosm#1095). `microcosm.build.uk_runtime.spi_dependency` reads which of a run's stages declare the tape among their artifacts. The spine's build record carries the marker (`spi_public_use_tape`), the spine provenance in the calibrated candidate and its signed diagnostics carry it on, and both release assemblers restate it in `release_manifest.json`: on the microdata's own artifact entry (`spi_public_use_tape_dependent`) and, with the conditions, under `licensed_data`. The assemblers rederive it from the stages the signed provenance names and refuse a recorded marker that disagrees. How SPI-dependent outputs are released stays María's ruling; the marker records the dependency only. diff --git a/changelog.d/1095-uk-uc-take-up-esa-kept.fixed.md b/changelog.d/1095-uk-uc-take-up-esa-kept.fixed.md new file mode 100644 index 0000000000..41dc912aa0 --- /dev/null +++ b/changelog.d/1095-uk-uc-take-up-esa-kept.fixed.md @@ -0,0 +1 @@ +The UC take-up redraw keeps a reported income-related ESA award off a Universal Credit claim. From policyengine-uk 2.149.0 a claim for Universal Credit ends a claimant's or partner's income-related ESA (pe-uk#2563), and the earlier single-rate draw sets many units that report the award, and no UC, to claim it, so the engine would end their ESA at the calibration year. A unit whose claimant or partner reports income-related ESA, and that neither reports Universal Credit nor is moved off its legacy benefits, now claims none, as a reported receipt is a fact; the closure draw reads the same flag, and the stage receipt bands the units it keeps off Universal Credit (microcosm#1095). Housing Benefit, which the engine also ends on a claim, keeps the stored flag pending the Housing Benefit and JSA PR (microcosm#867, microcosm#869). diff --git a/changelog.d/1095-uk-was-property-draw.added.md b/changelog.d/1095-uk-was-property-draw.added.md new file mode 100644 index 0000000000..007ade07af --- /dev/null +++ b/changelog.d/1095-uk-was-property-draw.added.md @@ -0,0 +1 @@ +The WAS wealth stage now draws the share split and the debt secured on other property, the inputs policyengine-uk reads inside `corporate_wealth` (pe-uk#1974) and in valuing Universal Credit property capital (UC Regs 2013 reg 49(1)(b)); microcosm#1095, María's ruling of 2026-10-23. Three draws are appended after consumer debt, each fitted on the donors and drawn for the recipients holding the column it rests on, so the first eight segments draw as before. The first is the directly held fraction of the share-like holdings outside ISAs: `directly_held_shares` (WAS UK shares plus employee shares and options) and `unit_and_investment_trusts` (WAS collective investments) are written on the final `corporate_wealth` less the stocks-and-shares ISA, so the three sum to `corporate_wealth` and the engine's `share_like_capital` does not move. The other two are `other_residential_property_secured_debt` (the debt on other houses and buy-to-let property) and `non_residential_property_secured_debt`: each is zero where its asset is zero, and the two are parts of the mortgages on other property, scaled down together where they would pass them; the donor cleaning refuses a donor whose debts pass its other mortgages, and the wealth coherence gate holds the split and the debts as identities. The recorded Universal Credit and Pension Credit capitals (`uc_capital_coherence`, and the reporter redraw's screen) now net each class's secured debt after the costs of sale and floor each class at zero, as the engine values UC property capital and as SPC Regs 2002 reg 19(b) values Pension Credit capital; owned land carries no debt, as the engine has no input for it (pe-uk#1969). The four columns are reviewed extras of the export surface. diff --git a/changelog.d/1222-uk-widowed-parents-allowance.changed.md b/changelog.d/1222-uk-widowed-parents-allowance.changed.md new file mode 100644 index 0000000000..46b3f18133 --- /dev/null +++ b/changelog.d/1222-uk-widowed-parents-allowance.changed.md @@ -0,0 +1 @@ +FRS benefit code 6, Bereavement Support Payment and its predecessors, now splits by rate (microcosm#1222, María's ruling of 2026-10-22). A weekly amount within 1% of a Bereavement Support Payment rate's weekly equivalent (GBP 350 or GBP 100 a month, frozen since April 2017, at 12/52 or at four weeks) stays `bsp_reported`; an amount at Widowed Parent's Allowance's 2024-25 rate of GBP 148.40 a week (within 1%), or below it as a reduced award, goes to `widowed_parents_allowance_reported`, the input policyengine-uk 2.149.0 adds (pe-uk#2572); any other amount, above the allowance's rate and at no rate (a lump sum, a part month or a misreport), stays `bsp_reported` (Vahid's review of microcosm#1383, item 12). Unlike Bereavement Support Payment, the allowance is taxable, Universal Credit unearned income, a welfare benefit for the benefit cap and an overlapping benefit for Carer's Allowance and Carer Support Payment, and Housing Benefit counts it less £15 a week. The column goes wherever War Widow's Pension goes: the SPI channel restores it from the FRS twin, and it joins the export allow-list, since the enhanced FRS keeps the whole code in `bsp_reported`. diff --git a/changelog.d/1278-uk-heating-fuels.added.md b/changelog.d/1278-uk-heating-fuels.added.md new file mode 100644 index 0000000000..4f7cd671ae --- /dev/null +++ b/changelog.d/1278-uk-heating-fuels.added.md @@ -0,0 +1 @@ +The LCFS stage now draws household spending on liquid fuels (central-heating oil, paraffin and bottled gas, COICOP 04.5.3) and solid fuels (coal, coke, wood and peat, 04.5.4) into `liquid_fuel_consumption` and `solid_fuel_consumption`, the inputs policyengine-uk 2.149.0 reads (pe-uk#2572; microcosm#1278; María's ruling of 2026-10-22: LPG with liquid, heat in the remainder). They are the last chain targets, so every earlier draw is unchanged; they are uprated to calendar-2024 prices as every diary spend column is; and the housing total nets their draws and adds them back, so it always holds them, while hot water, steam and ice stay in its remainder. The engine counts them inside housing, so `consumption` does not move. The recomposed-totals receipt's `uncarried` block becomes `published_fuels`: ONS 04.5.3 and 04.5.4 beside each fuel's donor total at diary prices and the frame's draw, which the stage-time gate recomputes from the vendored rows. COICOP puts liquefied hydrocarbons under 04.5.2 (gas), so ONS's 04.5.3 leaves out the bottled gas the liquid column holds, and the receipt gives the donor's liquid fuels without it too (Vahid's review of microcosm#1383, item 8). Neither column is levelled to ONS, unlike electricity and gas: the donor's diary totals are about twice ONS's, and the frame's draws reach neither those nor ONS's, so a costing on either needs levelling to ONS first; no engine formula reads them yet. `ons.household_energy_expenditure`, which the contract keeps for registry parity and the reference surface signs out as superseded by its fuel rows, is measured on electricity, gas, liquid and solid fuel spend, and its signed rationale no longer says the frame lacks the last two. The consumption drift block reports the two fuels where the frame carries them, and `uk_consumption_drift_flags` gives warn-only flags at #1278's R1 thresholds: a total moving more than 2 percent, or a share more than half a point, between the design and the final weights. The calibration diagnostics carry each flag as a warn-only `diagnostic_warnings` entry, naming the total or share and the threshold (Vahid's review of microcosm#1383, item 11). diff --git a/changelog.d/1278-uk-lcfs-division-excess.changed.md b/changelog.d/1278-uk-lcfs-division-excess.changed.md new file mode 100644 index 0000000000..ae18745f8c --- /dev/null +++ b/changelog.d/1278-uk-lcfs-division-excess.changed.md @@ -0,0 +1 @@ +The LCFS stage now levels the COICOP divisions' relative over-draw before it holds each recomposed total to the donor's maximum (microcosm#1278; María's rulings of 2026-10-23 and 2026-10-24). A division's ratio is the spend the chain drew for it per frame household over the donor's mean of the same spend per donor household: for housing and transport, the remainder against the donor's total less the same parts, since the levelled electricity, gas, heating fuels, road fuel and priced bus fares keep their published levels and are no over-draw (Vahid's review of microcosm#1383, item 9); for any other division, its whole draw. A division above the divisions' shared ratio, measured once before any levelling, comes down to it, and no other division moves: measured again after each cut, the shared ratio would fall until every division sat at the lowest one's, close to levelling to the donor totals (María's ruling of 2026-10-24). The recompose operation declares the rule as `level_division_excess`, the recomposed-totals receipt records each division's ratio and factor, the shared ratio and each total's `levelling_factor`, and the stage-time gate refuses a missing or undeclared levelling, a factor outside [0, 1], a division that moves though it is not above the shared ratio, and a total whose remainder moves by other than its division's factor. diff --git a/changelog.d/1278-uk-obr-vat-held.changed.md b/changelog.d/1278-uk-obr-vat-held.changed.md new file mode 100644 index 0000000000..ee7205290c --- /dev/null +++ b/changelog.d/1278-uk-obr-vat-held.changed.md @@ -0,0 +1 @@ +`obr.vat` stays held out of the objective, measured on every evaluation as a diagnostic (microcosm#1113, microcosm#1278). María's ruling D3 of 2026-10-08 held it out until a locked policyengine-uk replaced the constant survey-coverage factor in `vat`; policyengine-uk#2187, released in 2.135.7, does that, but the factor it uses was derived on a certified Microcosm UK release so that its VAT meets OBR's receipts, so binding the row would mostly pull the consumption weights back toward that release (Vahid's review of microcosm#1383, item 10; María's ruling of 2026-10-24). Its entry is re-signed to 2027-01-24, and the row rebinds when policyengine-uk re-derives the factor on a file that does not bind it. The notes declare the residual the row keeps: OBR's receipts include VAT on private school fees from 1 January 2025, which policyengine-uk's current-law `vat` leaves out until policyengine-uk#2319. diff --git a/changelog.d/1278-uk-orr-rail-held-arm2c.changed.md b/changelog.d/1278-uk-orr-rail-held-arm2c.changed.md new file mode 100644 index 0000000000..c4251ea6a9 --- /dev/null +++ b/changelog.d/1278-uk-orr-rail-held-arm2c.changed.md @@ -0,0 +1 @@ +The ORR rail-support row stays held out of the objective (microcosm#1278). Bound on ORR table 7271's net operational government support from all sources, the default the plan of 2026-10-22 set on the open 7270-versus-7271 ruling (microcosm#890 G), it reached its target on a calibrate-only arm of the next policyengine-uk bump, but the weights concentrated past the release bound (`uk_weight_ratio` failed) and the effective sample size fell by about a tenth. Its entry keeps table 7270's basis and its 2026-12-11 window, and its reason records the measurement. diff --git a/changelog.d/1308-uk-new-stage-health-gates.added.md b/changelog.d/1308-uk-new-stage-health-gates.added.md new file mode 100644 index 0000000000..f8b03405fa --- /dev/null +++ b/changelog.d/1308-uk-new-stage-health-gates.added.md @@ -0,0 +1 @@ +The three stages #1308 left ungated have stage-health gates (María's ruling of 2026-10-17, taken up with the next policyengine-uk bump), each release-blocking and blocking on an absent receipt. `uk_stage_property_purchases_fit` holds each purchase kind to HMRC's Stamp Tax transactions within 5% and to its value less a recorded shortfall of at most one fifth, the floor the stage itself refuses below. `uk_stage_regional_home_values_ranking` requires rows re-ranked in every English region and Wales on the 2024 knots, at the weighted midpoint within each FRS region, with no source at the value cap. `uk_stage_uc_legacy_closure_take_up_contract` checks what the Move to UC receipt prints, since it withholds what a thin combination realizes: the design-weight Great Britain basis, a probability and a declared source for every combination's rate, a printed support band, and a well-formed unreachable flag. The property purchases and regional home-values gates check the frame against published facts, so a synthetic smoke build records their failures without blocking on them (`population_fact_check`), as it does for the other fact gates; the legacy closure gate blocks every posture. The mirrored battery digests move. diff --git a/changelog.d/1319-uk-carers-allowance-scotland.changed.md b/changelog.d/1319-uk-carers-allowance-scotland.changed.md new file mode 100644 index 0000000000..79af83220f --- /dev/null +++ b/changelog.d/1319-uk-carers-allowance-scotland.changed.md @@ -0,0 +1 @@ +The Carer's Allowance take-up draw (`carers_allowance_take_up`) now draws Scotland too (María's ruling of 2026-10-23; microcosm#1319). In Scotland the claim flag is Carer Support Payment's, and since policyengine-uk 2.146.1 (PolicyEngine/policyengine-uk#2473) the engine pays it only under its own earnings limit. So a Scottish carer whom the 2024-25 limit kept from claiming is drawn at the newly entitled rate as elsewhere, and is paid only where Carer Support Payment's rules allow. The receipt reports Scotland apart (`scotland_eligible_support`, `scotland_eligible_weighted_persons`, `scotland_drawn_support`) in place of the closed-region check. diff --git a/changelog.d/1320-uk-spousal-maintenance.changed.md b/changelog.d/1320-uk-spousal-maintenance.changed.md new file mode 100644 index 0000000000..3f72d3cc03 --- /dev/null +++ b/changelog.d/1320-uk-spousal-maintenance.changed.md @@ -0,0 +1 @@ +Spousal maintenance now has its own column, `spousal_maintenance_income`, the input policyengine-uk 2.149.0 adds (pe-uk#2572; microcosm#1320, María's rulings of 2026-10-22 and 2026-10-23). It is ALIAMT, alimony or an allowance from a previous partner on the adult's own behalf (its usual amount ALUAMT where ALIUS says the last was not usual), plus APAMT, the allowances from a husband or wife who lives away, which the FRS asks only of married adults and which leave `private_transfer_income`. Universal Credit (UC Regulations 2013 reg. 66(1)(d)), Pension Credit and Housing Benefit count it, Housing Benefit less £15 a week where the family includes a child; the child maintenance in `maintenance_income` counts in none of them. APDAMT, the household bills such a partner pays directly to third parties, stays a private transfer. An adult tab without the three alimony columns refuses, and the column joins the export allow-list. ALIAMT is an approximation: the FRS asks for alimony or an allowance "from a previous partner", so it also holds payments from a former cohabitant, which policyengine-uk's `spousal_maintenance_income` leaves out and Universal Credit and Pension Credit do not count; the survey does not say whether the previous partner was a spouse or civil partner (Vahid's review of microcosm#1383, item 13). diff --git a/changelog.d/1340-uk-bonus-sacrifice.added.md b/changelog.d/1340-uk-bonus-sacrifice.added.md new file mode 100644 index 0000000000..7866462c44 --- /dev/null +++ b/changelog.d/1340-uk-bonus-sacrifice.added.md @@ -0,0 +1 @@ +Bonus-sacrificed pension contributions are now imputed (microcosm#1340; María's ruling of 2026-10-22, as a stage anchor). policyengine-uk 2.149.0 adds `pension_contributions_via_bonus_sacrifice`, which the £2,000 NICs exemption cap from April 2029 and the annual allowance tests read summed with salary sacrifice (pe-uk#2572 section 1). The FRS records no bonus sacrifice, so the `salary_sacrifice` stage imputes it: a new carrier, `frs_bonus_amount`, holds each adult's gross occasional bonuses over the last 12 months from the JOB tab, and the candidates are adults with a bonus whose pay reaches the upper earnings limit, the 2% NICs band the OBR costs bonus sacrifice at. A sacrificed bonus is never received, so the FRS records it in neither pay nor its bonus amounts: a candidate's received bonus marks a bonus-paying job and its size, and the sacrifice, the bonus up to half the pay, is added beside pay, which stays as it is (María's ruling of 2026-10-24 on Vahid's review of microcosm#1383). An SPI-channel adult's FRS bonus is its twin's, beside the tape's pay, so it draws a bonus share of pay from a base-FRS adult in its pay cell instead. Candidates are taken in the order of identity-keyed draws until the engine's projection of the sacrificed bonuses to 2027-28 is nearest the OBR's bonus-sacrifice base above the £2,000 threshold (£13.0bn; OBR supplementary forecast information, 5 February 2026, Table 1.1, vendored from the pinned feed as `obr_salary_sacrifice_costing_facts.json`). The base starts after the calibration year, so it anchors the stage instead of binding the calibration, and it is met at the stage's weights only. The anchor grows each amount with the OBR's average earnings and the weights with the ONS population to 2027-28, while the OBR grows its base with employment and earnings (Vahid's review of microcosm#1383, item 7). `uk/bonus_sacrifice_anchor.json` carries the OBR row, the locked engine's earnings and population growth to 2027-28 and the upper earnings limit; `tools/pin_uk_bonus_sacrifice_anchor.py` writes it, and an engine-tier test holds it to the installed engine. The HMRC salary-sacrifice rows, which ASHE builds, keep binding the salary route alone. The new column joins the export allow-list, and the carrier leaves at the release boundary. diff --git a/changelog.d/1349-uk-benefit-cap-uc-reduction.changed.md b/changelog.d/1349-uk-benefit-cap-uc-reduction.changed.md new file mode 100644 index 0000000000..a2a446bc9d --- /dev/null +++ b/changelog.d/1349-uk-benefit-cap-uc-reduction.changed.md @@ -0,0 +1 @@ +The fifteen DWP benefit-cap rows (`dwp.benefit_cap.capped_households` and its fourteen amount bands, Benefit cap tables to November 2025, Table 4) now bind `uc_benefit_cap_reduction_after_floor`, the reduction the Universal Credit award actually loses, at benefit-unit grain (microcosm#1349). They bound `benefit_cap_reduction`, which adds the Housing Benefit cap and keeps the gross regulation 81 amount, while DWP counts Universal Credit households by the amount the award loses. The total was a 0/1 household indicator, the incumbent's measure; it now counts the same benefit units as the bands, which partition it, and the build's complementary withholding (`uk_withheld_row_sets`) covers the closer difference. The measurement block names the Universal Credit reduction (`uk.benefits.universal_credit.benefit_cap_reduction`), and `tools/diagnose_uk_benefit_cap.py` reads the bound variable. The OBR Universal Credit rows split by cap status keep `benefit_cap_reduction`. In the target references only the total's entity moves, from household to benefit unit; no published value moves. diff --git a/changelog.d/531-uk-weekly-amounts-52-weeks.changed.md b/changelog.d/531-uk-weekly-amounts-52-weeks.changed.md new file mode 100644 index 0000000000..6977e5c30a --- /dev/null +++ b/changelog.d/531-uk-weekly-amounts-52-weeks.changed.md @@ -0,0 +1 @@ +Every weekly FRS amount now annualises at 52 weeks a year (María's ruling of 2026-10-23, uk-data#531, microcosm#1095): benefits, maintenance, earnings, hours, council tax and rents, in the spine (`frs_spine.WEEKS_IN_YEAR`), the HMRC replay leaves and the private-rent localisation. policyengine-uk reads an annual amount back to a weekly or monthly one at policyengine-core's 52 weeks before a weekly or monthly rule tests it, so at 365.25 / 7 every such amount read 0.34% high at Housing Benefit, Council Tax Reduction, Pension Credit, the non-dependant deductions and the hours tests. The State Pension, at 52 since María's ruling of 2026-10-20, is no longer an exception: the spec's `annualize_periodic_amounts` operation declares 52 for every amount, and `STATE_PENSION_WEEKS_IN_YEAR` leaves the spine. LCFS spending keeps 365.25 / 7 and NTS trips 52.14, since no weekly rule reads them back. A test holds every reader to the one constant. diff --git a/changelog.d/731-uk-hbai-fye2025-validation.added.md b/changelog.d/731-uk-hbai-fye2025-validation.added.md new file mode 100644 index 0000000000..7ce705ee6c --- /dev/null +++ b/changelog.d/731-uk-hbai-fye2025-validation.added.md @@ -0,0 +1 @@ +`microcosm.build.uk_runtime.hbai_validation` sets four statistics of a UK dataset beside DWP's Households Below Average Income estimates for FYE 2025 and their 95% confidence intervals, read from the pinned Chronicle feed with the release they came from: the median equivalised household income and the share of individuals in relative low income, each before and after housing costs (microcosm#731, uk-data#487). The dataset is measured at engine year 2024, which is FRS FY2024/25 and so HBAI FYE 2025; the scorecard (`docs/evidence/uk-poverty-968/scripts/scorecard_731.py`) compared that year with FYE 2024 before. Each statistic is reported inside or outside its interval; the validation never binds a row and never fails a build (María's rulings of 2026-10-16 and 2026-10-20). The scorecard's other HBAI-shaped rows stay as diagnostics without a reference. diff --git a/changelog.d/953-uk-single-adult-discount-row.added.md b/changelog.d/953-uk-single-adult-discount-row.added.md new file mode 100644 index 0000000000..242980dc50 --- /dev/null +++ b/changelog.d/953-uk-single-adult-discount-row.added.md @@ -0,0 +1 @@ +The UK national calibration binds a new England row, `mhclg.council_tax_stock.single_adult_discount`: the dwellings entitled to the single adult household 25% council tax discount, from MHCLG Council Taxbase line 8 (all bands, from the latest return not after the build base period: Council Taxbase 2025, as at September 2025, revised on 21 January 2026), against the England households whose `council_tax_discount_rate` is 0.25, the discount policyengine-uk applies from 2.148.0 (pe-uk#1864; microcosm#953). It binds at the national grain; the billing-authority cells of line 8 bind in the next dense build. No incumbent row has its definition. diff --git a/changelog.d/uk-policyengine-uk-2-151.changed.md b/changelog.d/uk-policyengine-uk-2-151.changed.md new file mode 100644 index 0000000000..3a1aa139b4 --- /dev/null +++ b/changelog.d/uk-policyengine-uk-2-151.changed.md @@ -0,0 +1 @@ +The UK lock moves from policyengine-uk 2.147.2 to 2.151.0, with policyengine-core still at 3.33.3. The releases between them carry the inputs and fixes the next bump reads: pe-uk#2573 (bonus sacrifice, spousal maintenance, Widowed Parent's Allowance, liquid and solid heating fuels, and the student loan plan projection), pe-uk#2580 (means-test income and student loan funding routes), pe-uk#2571 (energy inputs projected from their declared price year), pe-uk#1864 (the single adult council tax discount), pe-uk#2566 (council tax bills grown by receipts net of household weight growth), pe-uk#2563, pe-uk#2575 and the gambling duty inputs of pe-uk#2590, which the build leaves at their defaults (microcosm#1359). The uprating pins' stamp, the concept coverage (314 to 335 inputs), the coverage manifest, the H2 fixture, the cited versions and `APPROVED_UV_LOCK_SHA256` re-derive. diff --git a/docs/concept-coverage/policyengine-uk.md b/docs/concept-coverage/policyengine-uk.md index c1a830d2fb..9aa1caaa87 100644 --- a/docs/concept-coverage/policyengine-uk.md +++ b/docs/concept-coverage/policyengine-uk.md @@ -1,11 +1,11 @@ # Concept coverage: policyengine-uk -Engine version `2.147.2`; concept schema `5a55669d0447`. Generated by `tools/refresh_concept_coverage.py`; do not edit by hand. +Engine version `2.151.0`; concept schema `5a55669d0447`. Generated by `tools/refresh_concept_coverage.py`; do not edit by hand. -- Engine inputs: 314 +- Engine inputs: 335 - Fed by a concept: 42 - Structural: 11 -- Uncovered: 261 +- Uncovered: 282 - Mapped but missing from the engine: 0 ## Inputs each concept feeds @@ -44,20 +44,20 @@ Engine version `2.147.2`; concept schema `5a55669d0447`. Generated by `tools/ref | `fact:person.legal_marital_status` | policyengine-uk derives marital status from benefit-unit composition; marital_status and is_married are formula-owned. | | `fact:person.partner_person_id` | Partnerships reach policyengine-uk only through benefit-unit membership, a structure the bundle must already carry (the adapter builds no units); is_benunit_head and is_married are formula-owned. | | `fact:household.reference_person_id` | is_household_head is formula-owned (the oldest member). The UK build overrides it with the FRS household reference person (frs_spine.py), an override the loader accepts, but it is not an input, so the mapping does not target it. Every housing input is household-level, so nothing is allocated to the reference person. | -| `fact:person.liquid_financial_assets` | policyengine-uk holds financial wealth on the household: savings ('Household liquid savings'), corporate_wealth ('Wealth held in corporations directly or through investment funds'), gross_financial_wealth and net_financial_wealth are household inputs, and no transform puts a person amount on a household input. Its person-level GBP stock inputs are student_loan_balance, a debt; car_list_price, the price vehicle excise duty's expensive-car supplement tests; and lifetime_isa_balance ('Current value of the person's Lifetime ISAs, cash and stocks and shares together'), one savings wrapper, which the engine documents as already inside gross_financial_wealth and net_financial_wealth. Since policyengine-uk 2.130.0 three more describe a company the person owns, for Universal Credit's regulation 77 (owned_company_capital, owned_company_holding_value and owned_company_trade_assets); every one defaults to no such company, and the build sets none. savings and share_like_capital are two of Universal Credit's capital sources (gov.dwp.universal_credit.means_test.capital.sources); since policyengine-uk 2.147.0 share_like_capital is corporate_wealth unless its components, the household inputs directly_held_shares and unit_and_investment_trusts, add up to more, and the build sets neither. Universal Credit's one person-level source is lifetime_isa_countable_capital, the Lifetime ISA at its surrender value (capital.person_sources). uc_reported_capital (benefit unit, default -1) is Universal Credit capital; since policyengine-uk 2.136.1 a value of zero or more set directly is the unit's complete countable capital, in place of every source, property included. benunit_reported_capital, a benefit-unit input ('Savings and investments of the benefit unit's adults (the claimant and any partner) as recorded'), replaces the financial sources only: the household pool it otherwise sums from the household sources, net of what other benefit units report or override, and apportions by claimant and partner count, and the person-level sources of the unit's claimant and partner. Property is valued separately (uc_property_capital) and shared across every claimant and partner in the household. Feeding either would be a modelling choice for a UK build, not a mapping of this concept. | +| `fact:person.liquid_financial_assets` | policyengine-uk holds financial wealth on the household: savings ('Household liquid savings'), corporate_wealth ('Wealth held in corporations directly or through investment funds'), gross_financial_wealth and net_financial_wealth are household inputs, and no transform puts a person amount on a household input. Its person-level GBP stock inputs are student_loan_balance, a debt; car_list_price, the price vehicle excise duty's expensive-car supplement tests; and lifetime_isa_balance ('Current value of the person's Lifetime ISAs, cash and stocks and shares together'), one savings wrapper, which the engine documents as already inside gross_financial_wealth and net_financial_wealth. Since policyengine-uk 2.130.0 three more describe a company the person owns, for Universal Credit's regulation 77 (owned_company_capital, owned_company_holding_value and owned_company_trade_assets); every one defaults to no such company, and the build sets none. savings and share_like_capital are two of Universal Credit's capital sources (gov.dwp.universal_credit.means_test.capital.sources); since policyengine-uk 2.147.0 share_like_capital is corporate_wealth unless its components, the household inputs directly_held_shares and unit_and_investment_trusts, add up to more; the WAS stage writes both on its corporate_wealth less the stocks-and-shares ISA, so they and the ISA sum to it (microcosm#1095). Universal Credit's one person-level source is lifetime_isa_countable_capital, the Lifetime ISA at its surrender value (capital.person_sources). uc_reported_capital (benefit unit, default -1) is Universal Credit capital; since policyengine-uk 2.136.1 a value of zero or more set directly is the unit's complete countable capital, in place of every source, property included. benunit_reported_capital, a benefit-unit input ('Savings and investments of the benefit unit's adults (the claimant and any partner) as recorded'), replaces the financial sources only: the household pool it otherwise sums from the household sources, net of what other benefit units report or override, and apportions by claimant and partner count, and the person-level sources of the unit's claimant and partner. Property is valued separately (uc_property_capital) and shared across every claimant and partner in the household. Feeding either would be a modelling choice for a UK build, not a mapping of this concept. | | `fact:person.public_pension_income` | The State Pension is computed from state_pension_reported, which is formula-owned: the loader accepts it as an override, but it is not an input. | | `fact:household.source_household_id` | Original donor household lineage is build provenance and weight diagnostic support, not a policyengine-uk rules input. | ## Inputs no concept covers -### benunit (12) +### benunit (13) -`baseline_child_benefit_entitlement`, `baseline_income_support_entitlement`, `baseline_pension_credit_entitlement`, `benunit_reported_capital`, `housing_benefit_board_and_attendance_determination`, `in_specified_or_temporary_accommodation`, `liable_for_share_of_household_rent`, `maximum_extended_childcare_hours_usage`, `meals_included_in_rent`, `tax_free_childcare_meets_uk_connection`, `uc_receives_new_claimant_health_element`, `working_tax_credit_run_on` +`baseline_child_benefit_entitlement`, `baseline_income_support_entitlement`, `baseline_pension_credit_entitlement`, `benunit_reported_capital`, `housing_benefit_board_and_attendance_determination`, `housing_benefit_residential_capital_exception`, `in_specified_or_temporary_accommodation`, `liable_for_share_of_household_rent`, `maximum_extended_childcare_hours_usage`, `meals_included_in_rent`, `tax_free_childcare_meets_uk_connection`, `uc_receives_new_claimant_health_element`, `working_tax_credit_run_on` -### household (85) +### household (102) -`accommodation_type`, `additional_residential_property_purchased`, `alcohol_and_tobacco_consumption`, `beer_draught_share`, `beer_litres`, `bus_fare_spending_reported`, `bus_subsidy_spending`, `cash_isa`, `cider_draught_share`, `cider_litres`, `cigarettes_per_week`, `cigars_grams_per_week`, `clothing_and_footwear_consumption`, `communication_consumption`, `consumer_debt`, `corporate_wealth`, `council_tax_band`, `cumulative_non_residential_rent`, `cumulative_residential_rent`, `dfe_education_spending`, `diesel_spending`, `directly_held_shares`, `domestic_energy_consumption`, `domestic_rates`, `ebr_energy_bills_credit_eligible`, `education_consumption`, `electricity_consumption`, `external_child_payments`, `food_and_non_alcoholic_beverages_consumption`, `full_rate_vat_expenditure_rate`, `gas_consumption`, `gross_financial_wealth`, `hand_rolling_tobacco_grams_per_week`, `health_consumption`, `heated_tobacco_grams_per_week`, `household_furnishings_consumption`, `household_owns_tv`, `housing_service_charges`, `housing_water_and_electricity_consumption`, `in_original_frs`, `in_rural_fuel_duty_relief_area`, `is_shared_accommodation`, `local_authority`, `lpg_kg`, `main_residence_value`, `main_residential_property_purchased_is_first_home`, `miscellaneous_consumption`, `mortgage_debt`, `natural_gas_kg`, `net_financial_wealth`, `non_residential_property_purchased`, `non_residential_property_secured_debt`, `non_residential_property_value`, `non_residential_rent`, `num_bedrooms`, `num_vehicles`, `other_fermented_draught_share`, `other_fermented_litres`, `other_residential_property_secured_debt`, `other_residential_property_value`, `other_tobacco_grams_per_week`, `owned_land`, `petrol_spending`, `private_pension_wealth`, `property_purchased`, `rail_usage`, `recreation_consumption`, `region`, `restaurants_and_hotels_consumption`, `savings`, `sparkling_cider_draught_share`, `sparkling_cider_litres`, `spi_imputed`, `spirits_draught_share`, `spirits_litres`, `stocks_and_shares_isa`, `structural_insurance_payments`, `transport_consumption`, `uc_migrated`, `unit_and_investment_trusts`, `uses_energy_prepayment_meter`, `water_and_sewerage_charges`, `wine_draught_share`, `wine_litres`, `would_evade_tv_licence_fee` +`accommodation_type`, `additional_residential_property_purchased`, `alcohol_and_tobacco_consumption`, `beer_draught_share`, `beer_litres`, `betting_exchange_commission`, `bingo_net_receipts`, `bus_fare_spending_reported`, `bus_subsidy_spending`, `cash_isa`, `cider_draught_share`, `cider_litres`, `cigarettes_per_week`, `cigars_grams_per_week`, `clothing_and_footwear_consumption`, `communication_consumption`, `consumer_debt`, `corporate_wealth`, `council_tax_band`, `cumulative_non_residential_rent`, `cumulative_residential_rent`, `dfe_education_spending`, `diesel_spending`, `directly_held_shares`, `domestic_energy_consumption`, `domestic_rates`, `ebr_energy_bills_credit_eligible`, `education_consumption`, `electricity_consumption`, `external_child_payments`, `financial_spread_betting_net_losses`, `food_and_non_alcoholic_beverages_consumption`, `full_rate_vat_expenditure_rate`, `gas_consumption`, `gross_financial_wealth`, `hand_rolling_tobacco_grams_per_week`, `health_consumption`, `heated_tobacco_grams_per_week`, `horse_and_dog_pool_betting_net_losses`, `household_furnishings_consumption`, `household_owns_tv`, `housing_service_charges`, `housing_water_and_electricity_consumption`, `in_original_frs`, `in_rural_fuel_duty_relief_area`, `is_shared_accommodation`, `land_based_casino_net_losses`, `land_based_fixed_odds_betting_net_losses`, `liquid_fuel_consumption`, `local_authority`, `lpg_kg`, `machine_games_higher_rate_net_takings`, `machine_games_lower_rate_net_takings`, `machine_games_standard_rate_net_takings`, `main_residence_value`, `main_residential_property_purchased_is_first_home`, `miscellaneous_consumption`, `mortgage_debt`, `national_lottery_ticket_spending`, `natural_gas_kg`, `net_financial_wealth`, `non_residential_property_purchased`, `non_residential_property_secured_debt`, `non_residential_property_value`, `non_residential_rent`, `num_bedrooms`, `num_vehicles`, `other_fermented_draught_share`, `other_fermented_litres`, `other_residential_property_secured_debt`, `other_residential_property_value`, `other_spread_betting_net_losses`, `other_tobacco_grams_per_week`, `owned_land`, `petrol_spending`, `pool_betting_net_receipts`, `private_pension_wealth`, `property_purchased`, `rail_usage`, `recreation_consumption`, `region`, `remote_gaming_net_losses`, `remote_other_betting_net_losses`, `remote_uk_horseracing_betting_net_losses`, `restaurants_and_hotels_consumption`, `savings`, `solid_fuel_consumption`, `sparkling_cider_draught_share`, `sparkling_cider_litres`, `spi_imputed`, `spirits_draught_share`, `spirits_litres`, `stocks_and_shares_isa`, `structural_insurance_payments`, `transport_consumption`, `uc_migrated`, `unit_and_investment_trusts`, `uses_energy_prepayment_meter`, `water_and_sewerage_charges`, `wine_draught_share`, `wine_litres`, `would_evade_tv_licence_fee` -### person (164) +### person (167) -`a_and_e_visits`, `aa_category`, `access_fund`, `admitted_patient_visits`, `adult_dependants_grant_has_other_adult_dependant`, `adult_dependants_grant_other_adult_income`, `adult_dependants_grant_receives_postgraduate_loan`, `adult_ema`, `afcs_reported`, `age_started_or_accepted_current_education_or_training`, `armed_forces_independence_payment`, `attends_private_school_random_draw`, `base_net_income`, `blind_persons_allowance`, `bsp_reported`, `bursary_fund_16_to_19_in_care_or_care_leaver`, `bursary_fund_16_to_19_participation_costs`, `bursary_fund_16_to_19_self_supporting`, `bus_in_london_trips`, `bus_pass_eligible`, `capital_allowances`, `capital_gains_badr`, `capital_gains_carried_interest`, `capital_gains_residential_property`, `car_co2_emissions`, `car_engine_size`, `car_first_registration_date`, `car_fuel_type`, `car_is_ved_exempt`, `car_list_price`, `care_hours`, `carers_allowance_reported`, `charitable_investment_gifts`, `child_benefit_reported`, `child_ema`, `child_tax_credit_reported`, `childcare_expenses`, `childcare_grant_child_has_special_educational_needs`, `childcare_grant_provider_is_nanny`, `childcare_grant_receives_nhs_childcare_support`, `childcare_grant_receives_postgraduate_loan`, `council_tax_benefit_reported`, `covenanted_payments`, `deficiency_relief`, `defined_benefit_pension_share`, `disabled_students_allowance_eligible_expenses`, `disabled_students_allowance_receives_equivalent_support`, `dla_m_category`, `dla_sc_category`, `early_years_school_start_deferred`, `education_grants`, `employee_pension_contributions_reported`, `employer_pension_contributions`, `employment_expenses`, `employment_sector`, `employment_status`, `esa_contrib_reported`, `esa_income_reported`, `free_school_fruit_veg`, `free_school_meals`, `free_school_milk`, `gift_aid`, `healthy_start_vouchers`, `housing_benefit_reported`, `iidb_reported`, `in_FE`, `incapacity_benefit_reported`, `income_support_reported`, `is_about_to_start_paid_work`, `is_apprentice`, `is_before_universal_credit_qualifying_young_person_terminal_date`, `is_blind`, `is_engaged_in_owned_company_trade`, `is_full_year_category_a_director`, `is_in_approved_training`, `is_looked_after_by_local_authority`, `is_newly_self_employed`, `jsa_contrib_reported`, `jsa_income_reported`, `lifetime_isa_balance`, `local_bus_uncapped_single_fare`, `loss_relief`, `lump_sum_income`, `maintenance_expenses`, `maintenance_income`, `married_couples_allowance`, `maternity_allowance_reported`, `max_free_entitlement_hours_used`, `miscellaneous_income`, `nhs_a_and_e_spending`, `nhs_admitted_patient_spending`, `nhs_outpatient_spending`, `ni_class_3`, `other_deductions`, `other_investment_income`, `other_local_bus_trips`, `other_tax_credits`, `outpatient_visits`, `owned_company_capital`, `owned_company_carries_on_property_business`, `owned_company_carries_on_trade`, `owned_company_holding_value`, `owned_company_income_share`, `owned_company_intermediary_earnings_chapter`, `owned_company_intermediary_earnings_from_main_employment`, `owned_company_is_main_employment`, `owned_company_trade_assets`, `pension_annual_allowance_taxable_lump_sum_death_benefits`, `pension_contributions_via_salary_sacrifice`, `pension_contributions_via_salary_sacrifice_pre_2015`, `pension_credit_reported`, `pension_income`, `person_benunit_role`, `person_household_role`, `personal_pension_contributions`, `pip_dl_points`, `pip_m_points`, `private_transfer_income`, `property_finance_costs`, `property_finance_costs_brought_forward`, `property_rental_income`, `receives_benefits_in_own_right`, `receives_limited_capability_for_work_credits`, `rent_paid_as_boarder`, `rent_paid_as_lodger`, `role`, `salary_sacrifice_returned_to_income`, `scottish_funded_early_learning_childcare_start_date_reached`, `sda_reported`, `self_employment_gross_receipts`, `sic_industry_division`, `ssmg_reported`, `stands_as_sole_owner_or_partner_of_company`, `statutory_maternity_pay`, `statutory_paternity_pay`, `statutory_sick_pay`, `student_loan_balance`, `student_loan_plan`, `student_loans`, `sublet_income`, `tax_free_childcare_on_adoption_leave`, `tax_free_childcare_on_carers_leave`, `tax_free_childcare_on_qualifying_leave`, `tax_free_childcare_on_shared_parental_leave`, `tax_free_childcare_self_employment_start_up_period`, `tax_free_childcare_spend_routed_share`, `tax_free_childcare_uses_qualifying_provider`, `tax_reported`, `travel_grant_abroad_placement`, `travel_grant_clinical_placement`, `travel_grant_eligible_expenses`, `travel_grant_receives_means_tested_nhs_bursary`, `uc_has_offer_of_paid_work_starting_by_end_of_next_assessment_period`, `uc_is_adopter_in_first_year`, `uc_is_foster_parent_or_new_friend_or_family_carer`, `uc_is_in_pregnancy_or_post_confinement_period`, `uc_is_in_startup_period`, `uc_is_responsible_foster_parent_of_child_under_one`, `uc_is_student_with_no_work_related_requirements`, `uc_is_temporarily_absent_from_claimant_household`, `universal_credit_reported`, `war_widows_pension_reported`, `winter_fuel_allowance_reported`, `working_tax_credit_reported` +`a_and_e_visits`, `aa_category`, `access_fund`, `admitted_patient_visits`, `adult_dependants_grant_has_other_adult_dependant`, `adult_dependants_grant_other_adult_income`, `adult_dependants_grant_receives_postgraduate_loan`, `adult_ema`, `afcs_reported`, `age_started_or_accepted_current_education_or_training`, `armed_forces_independence_payment`, `attends_private_school_random_draw`, `base_net_income`, `blind_persons_allowance`, `bsp_reported`, `bursary_fund_16_to_19_in_care_or_care_leaver`, `bursary_fund_16_to_19_participation_costs`, `bursary_fund_16_to_19_self_supporting`, `bus_in_london_trips`, `bus_pass_eligible`, `capital_allowances`, `capital_gains_badr`, `capital_gains_carried_interest`, `capital_gains_residential_property`, `car_co2_emissions`, `car_engine_size`, `car_first_registration_date`, `car_fuel_type`, `car_is_ved_exempt`, `car_list_price`, `care_hours`, `carers_allowance_reported`, `charitable_investment_gifts`, `child_benefit_reported`, `child_ema`, `child_tax_credit_reported`, `childcare_expenses`, `childcare_grant_child_has_special_educational_needs`, `childcare_grant_provider_is_nanny`, `childcare_grant_receives_nhs_childcare_support`, `childcare_grant_receives_postgraduate_loan`, `council_tax_benefit_reported`, `covenanted_payments`, `deficiency_relief`, `defined_benefit_pension_share`, `disabled_students_allowance_eligible_expenses`, `disabled_students_allowance_receives_equivalent_support`, `dla_m_category`, `dla_sc_category`, `early_years_school_start_deferred`, `education_grants`, `employee_pension_contributions_reported`, `employer_pension_contributions`, `employment_expenses`, `employment_sector`, `employment_status`, `esa_contrib_reported`, `esa_income_reported`, `free_school_fruit_veg`, `free_school_meals`, `free_school_milk`, `gift_aid`, `healthy_start_vouchers`, `housing_benefit_reported`, `iidb_reported`, `in_FE`, `incapacity_benefit_reported`, `income_support_reported`, `is_about_to_start_paid_work`, `is_apprentice`, `is_before_universal_credit_qualifying_young_person_terminal_date`, `is_blind`, `is_engaged_in_owned_company_trade`, `is_full_year_category_a_director`, `is_in_approved_training`, `is_looked_after_by_local_authority`, `is_newly_self_employed`, `jsa_contrib_reported`, `jsa_income_reported`, `lifetime_isa_balance`, `local_bus_uncapped_single_fare`, `loss_relief`, `lump_sum_income`, `maintenance_expenses`, `maintenance_income`, `married_couples_allowance`, `maternity_allowance_reported`, `max_free_entitlement_hours_used`, `miscellaneous_income`, `nhs_a_and_e_spending`, `nhs_admitted_patient_spending`, `nhs_outpatient_spending`, `ni_class_3`, `other_deductions`, `other_investment_income`, `other_local_bus_trips`, `other_tax_credits`, `outpatient_visits`, `owned_company_capital`, `owned_company_carries_on_property_business`, `owned_company_carries_on_trade`, `owned_company_holding_value`, `owned_company_income_share`, `owned_company_intermediary_earnings_chapter`, `owned_company_intermediary_earnings_from_main_employment`, `owned_company_is_main_employment`, `owned_company_trade_assets`, `pension_annual_allowance_taxable_lump_sum_death_benefits`, `pension_contributions_via_bonus_sacrifice`, `pension_contributions_via_salary_sacrifice`, `pension_contributions_via_salary_sacrifice_pre_2015`, `pension_credit_reported`, `pension_income`, `person_benunit_role`, `person_household_role`, `personal_pension_contributions`, `pip_dl_points`, `pip_m_points`, `private_transfer_income`, `property_finance_costs`, `property_finance_costs_brought_forward`, `property_rental_income`, `receives_benefits_in_own_right`, `receives_limited_capability_for_work_credits`, `rent_paid_as_boarder`, `rent_paid_as_lodger`, `role`, `salary_sacrifice_returned_to_income`, `scottish_funded_early_learning_childcare_start_date_reached`, `sda_reported`, `self_employment_gross_receipts`, `sic_industry_division`, `spousal_maintenance_income`, `ssmg_reported`, `stands_as_sole_owner_or_partner_of_company`, `statutory_maternity_pay`, `statutory_paternity_pay`, `statutory_sick_pay`, `student_loan_balance`, `student_loan_plan`, `student_loans`, `sublet_income`, `tax_free_childcare_on_adoption_leave`, `tax_free_childcare_on_carers_leave`, `tax_free_childcare_on_qualifying_leave`, `tax_free_childcare_on_shared_parental_leave`, `tax_free_childcare_self_employment_start_up_period`, `tax_free_childcare_spend_routed_share`, `tax_free_childcare_uses_qualifying_provider`, `tax_reported`, `travel_grant_abroad_placement`, `travel_grant_clinical_placement`, `travel_grant_eligible_expenses`, `travel_grant_receives_means_tested_nhs_bursary`, `uc_has_offer_of_paid_work_starting_by_end_of_next_assessment_period`, `uc_is_adopter_in_first_year`, `uc_is_foster_parent_or_new_friend_or_family_carer`, `uc_is_in_pregnancy_or_post_confinement_period`, `uc_is_in_startup_period`, `uc_is_responsible_foster_parent_of_child_under_one`, `uc_is_student_with_no_work_related_requirements`, `uc_is_temporarily_absent_from_claimant_household`, `universal_credit_reported`, `war_widows_pension_reported`, `widowed_parents_allowance_reported`, `winter_fuel_allowance_reported`, `working_tax_credit_reported` diff --git a/docs/evidence/uk-poverty-968/scripts/scorecard_731.py b/docs/evidence/uk-poverty-968/scripts/scorecard_731.py index 942cdaa982..73edebf714 100644 --- a/docs/evidence/uk-poverty-968/scripts/scorecard_731.py +++ b/docs/evidence/uk-poverty-968/scripts/scorecard_731.py @@ -33,8 +33,19 @@ couple with no children (HBAI FYE 2024: £650). * ``child_poverty_bhc_relative_pct`` — children under 18 (HBAI FYE 2024: 23 %). -HBAI reference: DWP, Households Below Average Income FYE 2024, summary tables -1.2b and 1.3a–1.4a (March 2025). +HBAI validation (microcosm#731, uk-data#487; María's rulings of 2026-10-16 +and 2026-10-20). With ``--hbai-facts`` (Chronicle consumer facts, the pinned +feed or a cut of it holding the ``dwp.hbai_fye2025`` rows), the +``hbai_validation`` block measures the file at engine year 2024, which is FRS +FY2024/25 and HBAI FYE 2025, and sets four statistics beside DWP's estimate +and 95 percent interval (``microcosm.build.uk_runtime.hbai_validation``): the +person-weighted median equivalised income before and after housing costs, in +pounds a week, and the shares of individuals in relative low income before and +after housing costs. Report-only: a statistic outside its interval never binds +and never fails. The other HBAI-shaped rows (absolute and child poverty, the +decile ratios, the zero-income share) stay as diagnostics without a +reference; the FYE 2024 figures this script once compared them with were the +wrong year for period 2024. """ from __future__ import annotations @@ -45,6 +56,12 @@ import numpy as np +from microcosm.build.uk_runtime.hbai_validation import ( + UK_HBAI_VALIDATION_PERIOD, + classify_uk_hbai_statistics, + uk_hbai_validation_references, +) + def gini(values: np.ndarray, weights: np.ndarray) -> float: order = np.argsort(values) @@ -71,10 +88,11 @@ def main() -> int: parser.add_argument("--year", type=int, default=2026) parser.add_argument("--out", required=True, type=Path) parser.add_argument( - "--hbai-year", - type=int, - default=2024, - help="year at which the HBAI-basis block is measured (HBAI FYE 2024 = April 2023 to March 2024; 0 disables)", + "--hbai-facts", + type=Path, + help="Chronicle consumer facts (JSONL) holding the dwp.hbai_fye2025 rows; " + "measures the hbai_validation block at engine year " + f"{UK_HBAI_VALIDATION_PERIOD} (HBAI FYE 2025)", ) args = parser.parse_args() @@ -164,6 +182,7 @@ def quantile(values, weights, q): "poverty_ahc_absolute_pct": share(poverty_abs_ahc > 0), "poverty_ahc_relative_pct": share(rel_ahc), "median_equiv_bhc_income_week": median_bhc / 52.0, + "median_equiv_ahc_income_week": median_ahc / 52.0, "child_poverty_bhc_relative_pct": float( 100.0 * pw[is_child & rel_bhc].sum() / pw[is_child].sum() ), @@ -176,45 +195,37 @@ def quantile(values, weights, q): return rows rows = measure(year) - HBAI_KEYS = ( - "poverty_bhc_absolute_pct", - "poverty_bhc_relative_pct", - "poverty_ahc_absolute_pct", - "poverty_ahc_relative_pct", - "child_poverty_bhc_relative_pct", - "median_equiv_bhc_income_week", - "p10_over_median_bhc", - "p90_over_median_bhc", - "zero_income_share_pct", - ) - hbai_basis = None - if args.hbai_year: - # HBAI FYE 2024 is April 2023 to March 2024; the closest engine year is 2024. The - # files are measured at that year so the comparison does not conflate years - # (microcosm#968, review point 4). p10/p90 are ratios to the person-weighted - # median; zero_income_share is individuals under £10/week equivalised (HBAI's - # £0-10 band, 1.0 % of individuals in FYE 2024). - hb_rows = measure(args.hbai_year) if args.hbai_year != year else rows - hbai_basis = { - "year": args.hbai_year, - "rows": {k: hb_rows[k] for k in HBAI_KEYS}, - "hbai": { - "label": "HBAI FYE 2024 (April 2023 to March 2024), survey-reported incomes", - "poverty_bhc_absolute_pct": 15, - "poverty_bhc_relative_pct": 17, - "poverty_ahc_absolute_pct": 18, - "poverty_ahc_relative_pct": 21, - "child_poverty_bhc_relative_pct": 23, - "median_equiv_bhc_income_week": 650, - "p10_over_median_bhc": 0.48, - "p90_over_median_bhc": 1.955, - "zero_income_share_pct": 1.0, - "source": ( - "DWP HBAI FYE 2024 (March 2025): summary tables 1.2b (quintile medians: " - "bottom 312, top 1271 on a 650 median) and 1.3a-1.4a; chart 2.4 income " - "bands (0.66m individuals at 0-10 GBP/week)" - ), - }, + hbai_validation = None + if args.hbai_facts: + with args.hbai_facts.open(encoding="utf-8") as handle: + references = uk_hbai_validation_references( + json.loads(line) for line in handle if "dwp.hbai_fye2025" in line + ) + hbai_rows = ( + rows + if year == UK_HBAI_VALIDATION_PERIOD + else measure(UK_HBAI_VALIDATION_PERIOD) + ) + hbai_validation = { + "year": UK_HBAI_VALIDATION_PERIOD, + "hbai": "FYE 2025 (April 2024 to March 2025), DWP's estimate and 95% interval", + "statistics": classify_uk_hbai_statistics( + { + "median_equivalised_income_bhc_gbp_week": hbai_rows[ + "median_equiv_bhc_income_week" + ], + "median_equivalised_income_ahc_gbp_week": hbai_rows[ + "median_equiv_ahc_income_week" + ], + "relative_low_income_bhc_pct": hbai_rows[ + "poverty_bhc_relative_pct" + ], + "relative_low_income_ahc_pct": hbai_rows[ + "poverty_ahc_relative_pct" + ], + }, + references, + ), } payload = { @@ -232,18 +243,8 @@ def quantile(values, weights, q): "median_equiv_bhc_income_week: person-weighted, couple-no-children " "equivalent; gini/top-1%: household-weighted household_net_income" ), - "hbai_fye_2024_reference": { - "poverty_bhc_absolute_pct": 15, - "poverty_bhc_relative_pct": 17, - "poverty_ahc_absolute_pct": 18, - "poverty_ahc_relative_pct": 21, - "median_equiv_bhc_income_week": 650, - "child_poverty_bhc_relative_pct": 23, - "year": "FYE 2024 (April 2023 to March 2024); compare with the hbai_basis block, not with the 2026 rows", - "source": "DWP HBAI FYE 2024 summary tables 1.2b, 1.3a, 1.4a (March 2025)", - }, "rows": rows, - "hbai_basis": hbai_basis, + "hbai_validation": hbai_validation, } args.out.parent.mkdir(parents=True, exist_ok=True) args.out.write_text(json.dumps(payload, indent=2), encoding="utf-8") diff --git a/experiments/1095-uk-next-bump-phase-a-receipts.md b/experiments/1095-uk-next-bump-phase-a-receipts.md new file mode 100644 index 0000000000..eb3ca869b5 --- /dev/null +++ b/experiments/1095-uk-next-bump-phase-a-receipts.md @@ -0,0 +1,64 @@ +# microcosm#1095 and #1278: the next policyengine-uk bump, Phase A receipts + +This receipt gives no count of source households and no row's model figure that rests on fewer than ten of them. Nor does it give a model figure of a row of the SPI channel, or of a row that rests in large part on the SPI channel's households: those rest on the SPI Public Use Tape (SN 9422). Publisher figures appear as published. The fit and weight statistics are over the whole national surface, as in `experiments/1095-uk-thin-row-binding-receipts.md`. + +## The question + +Phase A of the plan for the next policyengine-uk bump changes no stage, so it is measured on #1333's policyengine-uk 2.145.0 spine without a new spine. It settles the national rows held out of the objective until 2026-11-26 and the entries that lapse soon after: + +- the zero-support floor's scope extends to the national families, in scopes of one unit each (María's ruling of 2026-10-22); +- the rows held for thin support bind where any household carries them, unless an arm measures a distortion (María's rule of 2026-10-21); +- the OBR split of Universal Credit at the welfare cap and the England postgraduate repayments leave the targets; +- `obr.vat` binds again, since policyengine-uk 2.135.7 replaced the engine factor it waited on; +- the fifteen DWP benefit-cap rows bind the UC reduction the award loses (#1349). + +## Method + +- **R0, the control:** #1333's 2.145.0 arm, reused, with no new run. +- **Arm 1:** a calibrate-only run on R0's spine at the Phase A head, review date 2026-10-23, with every candidate row bound. +- **Arm 1b:** the contingency run the plan allows when an arm fails a gate: arm 1's head with the HMRC £1m-and-over cells held again and the remaining entries renewed, at the same review date. It leaves out the three gates the plan adds for #1308's stages, which R0's spine never ran. +- Before arm 1, each held row was compiled on R0's spine through the build's own engine route and estimated at R0's design and final weights. The script reproduces R0's recorded estimates exactly. Its output stays with the licensed spine, outside the repository. +- `docs/evidence/uk-thin-rows-1095/scripts/ab_binding.py` compares each arm with R0 over the rows both bind. + +## Results + +**Before arm 1.** Every HMRC £1m-and-over cell and every band-H region cell has carriers on R0's spine, so none falls to the zero-support floor; their per-row reasons, which said the cells had none, were stale. The England postgraduate repayments row has no carrier: the stage assigns no postgraduate plan. Plan 5's liable stock fits at design weights and drifts only while it is held out. + +**Arm 1.** It binds 1,259 rows against R0's 1,244: the fifteen newly bound rows. The floor drops the same five rows as R0, none of them in the new scopes. Six of the seven terminal gates pass, and `uk_target_fit` fails on one HMRC £1m-and-over cell, which stays outside the 25 percent bound when bound. Over the 1,244 rows both runs bind: + +- within 10 percent of the target: 98.95 percent in R0, 98.63 percent in arm 1; +- mean absolute relative error: 0.57 percent, 0.64 percent; +- effective sample size: about 6,900, about 7,000; +- share of design weight stretched 9.5 times or more: 0.78 percent, 0.76 percent. + +Four shared rows leave the 10 percent band under the binding and none enters it. Three of them, rows of the SPI channel that had fitted closely, move with the HMRC £1m-and-over cells; this receipt does not name them. That is a measured distortion, so the ten HMRC cells are held again as a family, on that measurement (#1095). + +The band-H region rows, Plan 5's liable stock and `obr.vat` reach their targets, and binding them does not raise the share of their carriers' design weight stretched 9.5 times or more. The band-H region rows bind with their figures withheld where fewer than ten source households carry them. + +**Arm 1b.** With the ten HMRC £1m-and-over cells held again, all seven terminal gates pass. It binds 1,249 rows: R0's 1,244 and the five new ones. Over the 1,244 rows both runs bind: + +- within 10 percent of the target: 98.95 percent in R0, 98.79 percent in arm 1b; +- mean absolute relative error: 0.57 percent, 0.59 percent; +- effective sample size: about 6,900 in both; +- share of design weight stretched 9.5 times or more: 0.78 percent, 0.80 percent. + +Two shared rows cross the 10 percent line from inside it, and none crosses the other way: the UC households with the LCWRA element and SLC's Parents' Learning Allowance recipients. Neither is a row of the SPI channel. The band-H region rows, Plan 5's liable stock and `obr.vat` reach their targets, and their carriers' stretched share does not move. The benefit-cap rows whose figures are published reach their targets. + +More rows are withheld than on R0: 52 against 38. R0 ran before #1333 added the complementary withholding, which now also withholds a published row that would give a thin one back by difference, and the three band-H region rows bind with their figures withheld. + +No retired entry goes back, and the ten HMRC £1m-and-over cells stay held. + +## The held rows, renewed + +At arm 1's calibrated weights, measured unbound, the rows still held read as on R0's arm: + +- the twelve UC payment-distribution bands: every one stays outside 10 percent, eleven short and one over; +- Plan 2: both borrower stocks stay far short of SLC's AY2024/25 figures, 8.94M liable and 3.985M above the threshold; +- Plan 5's repayments: too few source households carry them for any weights to reach SLC's figure; +- the any-tenure UC housing-element count: short by the other or unknown tenure the model does not carry, the structural gap itself. + +These rows rest in large part on the households of the SPI support channel, or, for Plan 5's repayments, on fewer than ten source households, so this receipt gives no figure of them. Their entries are renewed on that measurement, signed on 2026-10-23 to 2027-01-23. + +## To repeat on a later spine + +Compile the held rows on the spine and read them at the run's weights, then calibrate once with the candidate rows bound and compare with the control over the rows both bind: the share within 10 percent, the mean error, the effective sample size and the stretched share, and which shared rows cross the 10 percent line. diff --git a/experiments/1095-uk-next-bump-phase-bc-receipts.md b/experiments/1095-uk-next-bump-phase-bc-receipts.md new file mode 100644 index 0000000000..86482d3b64 --- /dev/null +++ b/experiments/1095-uk-next-bump-phase-bc-receipts.md @@ -0,0 +1,111 @@ +# microcosm#1095 and #1278: the next policyengine-uk bump, Phases B and C receipts + +This receipt gives no count of source households and no row's model figure that rests on fewer than ten of them. Nor does it give a model figure of a row of the SPI channel, or of a row that rests in large part or in part on the SPI channel's households: those rest on the SPI Public Use Tape (SN 9422). Publisher figures appear as published. The fit and weight statistics are over the whole national surface, as in `experiments/1095-uk-next-bump-phase-a-receipts.md`. + +## The question + +Phase B locks policyengine-uk 2.151.0, the first release past pe-uk#2573 and pe-uk#2580. Phase C writes the inputs those releases read and the fixes they unlock: + +- the energy spending's price period, `energy_price_basis` (pe-uk#2571); +- the legacy closure draw reads the claimant's and partner's reports (pe-uk#2549); +- the UC take-up redraw keeps a reported income-related ESA award off a UC claim (pe-uk#2563); +- Scotland's carers enter the Carer's Allowance take-up (#1319); +- Widowed Parent's Allowance leaves FRS code 6 by rate (#1222); +- spousal maintenance gets its own column (#1320); +- bonus sacrifice is imputed to OBR's 2027-28 base through the engine (#1340); +- liquid and solid heating fuels are drawn (#1278); +- the LCFS divisions' excess over the total ratio is levelled (#1278); +- the WAS share split and the debt secured on other property (#1095); +- England's single adult council tax discount binds at the national grain (#953); +- an engine test pins the engine's 2025 relabel of student loan plans. + +Arm 2 then re-measures the rows still held, and the ORR rail-support row is bound on table 7271, the plan's default on the open 7270-versus-7271 ruling, unless an arm measures a distortion. + +## Method + +- **Control:** b2572-c0main, main at 6bdb8001c on policyengine-uk 2.147.2: one spine and one calibration, review date 2026-10-23. The PR's base, f9f28e4a0, adds #1347 to it, which changes only local-line declarations. +- **Arm 2:** one spine and one calibration at the bump head, review date 2026-10-23. The calibration first stopped because the new single adult discount row carried no uprating declaration; the hold that declares it changes no stage, so the spine stands. +- **Arm 2b:** a calibrate-only run on arm 2's spine with the four UC payment bands that arm 2 fits unbound now bound, review date 2026-10-24, the date the Housing Benefit and JSA entries are renewed. +- **Arm 2c:** a calibrate-only run on arm 2's spine with the ORR row bound on table 7271 beside the four bands, at the same review date. +- Arm 2 measures Phases A, B and C together against main. Arms 1 and 1b measured Phase A's bindings alone; the weekly annualisation (uk-data#531) changes the spine, so arm 2 is its first measurement. +- Each run's fit is recomputed from its own compiled matrix and final weights, so a row whose published figures are withheld is still measured. The script output stays with the licensed spines, outside the repository. + +## Results + +Both runs pass all seven terminal gates. Arm 2 binds 1,265 rows against the control's 1,259: the three band-H region rows, Plan 5's liable stock and `obr.vat` from Phase A, and the single adult discount row from C9. + +Over the 1,258 rows both runs bind that have a nonzero target: + +- within 10 percent of the target: 99.21 percent in the control, 99.05 percent in arm 2; +- mean absolute relative error: 0.56 percent, 0.55 percent; +- effective sample size: about 7,400, about 7,500; +- share of design weight stretched 9.5 times or more: 0.67 percent, 0.59 percent. + +Two shared rows move past the 10 percent line and none moves the other way. One is a row of the SPI channel, which this receipt does not name. The other is a UC payment-distribution band whose figures are withheld, so this receipt gives no figure of it. + +The new rows reach their targets: England's single adult discount row fits within 10 percent of MHCLG's 8,496,178 dwellings (Council Taxbase line 8, as at September 2025, in the revision of 21 January 2026), and `obr.vat` and Plan 5's liable stock fit more closely still. The band-H region rows bind with their figures withheld where fewer than ten source households carry them. + +## The held rows + +Measured unbound at arm 2's calibrated weights: + +- four of the twelve UC payment-distribution bands come within 10 percent, so they bind (arm 2b below); the other eight stay outside it, seven short and one over; +- the four Housing Benefit rows stay outside the 25 percent bound at design weights and short at the calibrated weights; +- DWP's JSA claimants: 73 percent short at design weights and 29 percent short at the calibrated weights; every claimant the row counts is in an FRS household. + +The UC bands rest in large part, and the Housing Benefit rows in part, on the SPI channel's households, so this receipt gives no figure of them. The Housing Benefit and JSA entries are renewed, signed on 2026-10-24 to 2027-01-24, pending the Housing Benefit and JSA PR (#867, #869). + +**Arm 2b.** With the four bands bound, all seven terminal gates pass and the run binds 1,269 rows. Over the 1,264 rows arm 2 and arm 2b both bind that have a nonzero target: + +- within 10 percent of the target: 99.05 percent in arm 2, 99.13 percent in arm 2b; +- mean absolute relative error: 0.56 percent, 0.57 percent; +- effective sample size: about 7,500, about 7,400; +- share of design weight stretched 9.5 times or more: 0.59 percent, 0.61 percent. + +No shared row leaves the 10 percent band, and one, a UC household count, enters it. The four bands reach their targets, and binding them lowers the share of their carriers' design weight stretched 9.5 times or more. Arm 2b's commit differs from the head's in reason text only, so arm 2b is the head's calibration. + +**Arm 2c, the ORR row on table 7271.** Bound on table 7271, the row reaches its target, but the weights concentrate past the release bound: `uk_weight_ratio` fails, so the run stops at the terminal gates. The effective sample size falls by about a tenth against arm 2b, and the UC household count that arm 2b brought inside 10 percent leaves it again. That is a measured distortion, so the row stays held out on table 7270's basis, its entry's reason records the measurement, and the basis ruling stays open. + +## Arm 3: the review's changes + +**Arm 3** is one spine at `b1b315ae0`, the head of the review's stage changes: bonus sacrifice beside pay with the SPI channel's drawn bonuses, the levelling on remainders, WPA's positive rate rule, and bottled gas reported apart. A calibrate-only run on it (arm 3c) has review date 2026-10-24. The later commits change no stage. + +All seven terminal gates pass, and the run binds 1,268 rows, which is arm 2b's rows less `obr.vat`, held again. Against arm 2b: + +- the share of rows within 10 percent of the target is 99.3 percent in arm 2b and 99.2 percent in arm 3; +- the effective sample size is about the same; +- no shared row moves by more than 5 points; +- one UC household count leaves the 10 percent band. + +The engine checks below ran on arm 3's calibrated file at 2025. Their figures rest in part on the SPI channel's households, so they are given as classes. + +- **The bonus anchor (item 7).** At the final weights, the bonus sacrifice base above £2,000 at 2027-28 falls short of OBR's line by more than a quarter, while the stage meets it at its own weights. The salary line comes out within 25 percent of OBR's. Calibration to the HMRC income-band rows lowers the weights of the highest earners, where the bonus sacrificers sit, and no row binds the base. By María's ruling of 2026-10-24, this PR records it, and #1390 re-picks the sacrificers at the final weights. +- **Consumption and VAT (item 9).** Against arm 2b, total consumption rises by under 3 percent and VAT by under 5 percent. Both changes mix the levelling on remainders, the bonus no longer taken out of pay, and `obr.vat` leaving the objective. +- **The secured debt (item 14).** Netting the debt secured on other property raises Universal Credit spend by under 0.1 percent and Pension Credit spend by under 1 percent. It takes many benefit units' assessed capital below £6,000 or £16,000, but few of those units are entitled either way. +- **The benefit cap (item 17).** The thin bands are withheld, and the band that no household carries leaves the solve under the zero-support floor. The complementary check finds no published combination that gives a thin band back, so it withholds no further row. + +## By item + +**The ESA rule.** DWP's income-related ESA claimant row fits within half a percent in both runs; no household of the SPI channel carries it. With the rule, the units that report income-related ESA keep it at the calibration year, so the engine's new closure on a UC claim (pe-uk#2563) does not take the award off them. Housing Benefit keeps the stored flag, pending the HB and JSA PR (#867, #869). + +**C13, the LCFS divisions.** On arm 2's spine, seven of the twelve COICOP divisions stood above the twelve's shared frame-over-donor ratio and came down to it: recreation, education, household furnishings, health, miscellaneous goods and services, transport (by its remainder alone) and communication. Since Vahid's review (item 9; María's ruling of 2026-10-24), a division's ratio is the spend the chain drew for it against the donor's same spend, so housing's and transport's levelled parts no longer count as over-draw, and the cut is made once. On arm 3's spine six divisions come down: recreation, education, household furnishings, health, miscellaneous goods and services and transport. Communication now sits below the shared ratio and keeps its draw, as do food, housing, alcohol and tobacco, clothing and restaurants and hotels. The ratios rest in part on the SPI channel's households and stay with the licensed data. + +**C7, the heating fuels.** ONS Consumer Trends puts household spending on liquid fuels (04.5.3) at £1.195bn and on solid fuels (04.5.4) at £0.352bn in 2024, as published. The LCFS donor records about 2.1 and 1.8 times those at diary prices, and the stage draws both fuels from the donor without levelling them; the receipt sets each beside ONS's figure, report-only, as #1278 ruled. The donor's liquid fuels hold bottled gas, which COICOP puts under 04.5.2 (gas) and ONS's 04.5.3 leaves out; without it they are about 1.8 times ONS's figure, so part of the gap is the concept and part the diary's capture (Vahid's review, item 8). The frame's draws reach neither the donor's totals nor ONS's; they rest in part on the SPI channel's households, so their figures stay with the licensed data. A costing on either column needs levelling to ONS first. Under calibration the solid fuels move by more than the 2 percent the consumption drift block flags; the flag is warn-only. Electricity and gas spend, and the gas-connected share, stay inside their flags. + +**The 52-week rule (uk-data#531).** Annualising every weekly FRS amount at 52 weeks lowers annual pay, self-employment income, the HMRC replay leaves and the reported benefits by 0.34 percent before calibration. The bound rows that absorb it are the HMRC SPI income-band counts and amounts, the OBR income tax and National Insurance receipts, and the OBR and DWP benefit spending and caseload rows (Vahid's review, item 15). Arm 2 measures it together with every other change. + +**The benefit cap (#1349).** The total counts the same benefit units as its fourteen amount bands, which partition it, so a band's figures could be given back by the total less the other bands; the complementary check withholds a second row wherever one band rests on fewer than ten source households. Housing Benefit-capped households have no row: DWP's Table 4 counts Universal Credit households, so the rows bind the UC reduction alone (item 17). + +**C10, the WAS property draw.** On every household, the directly held shares, the unit and investment trusts and the stocks-and-shares ISA sum to `corporate_wealth`, and every debt secured on other property sits on property of its class within the mortgages on other property. The wealth coherence gate holds both as identities. + +**C3, bonus sacrifice.** The conversion meets OBR's 2027-28 base of £13.0bn above the £2,000 threshold at the stage's weights. Since Vahid's review (items 5 and 6; María's rulings of 2026-10-24), the sacrifice is added beside pay, which stays as it is, and an SPI-channel adult draws its bonus share of pay from a base-FRS adult in its pay cell. The anchor grows the amounts with OBR average earnings and the weights with the ONS population, where the OBR grows its base with employment and earnings (item 7). The model's projected base, at the stage's and at the final weights, stays with the licensed data. + +**C6, student loans.** At 2025 the engine relabels every holder by a course started at 18, which moves a share of the stage's England Plan 2 borrowers to Plan 1. The engine test pins that behaviour; the fix belongs in policyengine-uk. The borrowers rest in large part on the SPI channel's households, so the share stays with the licensed data. + +**The HBAI scorecard (#731).** It ran on arm 2b's calibrated file, the head's calibration, at engine year 2024 against HBAI FYE 2025. Its four results rest in part on the SPI channel's households, so they stay with the licensed data. + +## Not in this PR + +- C8: main's #1338 already fits the childcare rates on DfE's January basis and binds the 9 to 11 month and age-1 registrations. +- C14: a diagnostic reference carries one fact, and the Welsh fare receipts row is a difference of two; it needs its own design. +- The regional tenure, rent and UC-by-children rows through the cross-grain bridge: no national contract row carries them yet; they wait on #1305 and the local surface. diff --git a/packages/microcosm-build/pyproject.toml b/packages/microcosm-build/pyproject.toml index 15f8da3681..fc914066dd 100644 --- a/packages/microcosm-build/pyproject.toml +++ b/packages/microcosm-build/pyproject.toml @@ -46,7 +46,7 @@ us = [ # The UK extra adds the rules engine for local metric generation from a # Microcosm UK H5. Target tables remain explicit inputs, and the base package # still does not import policyengine-uk at import time. -uk = ["policyengine-uk>=2.147.2", "microcosm-data>=0.1,<0.2", "h5py>=3", "tables>=3", "openpyxl>=3.1"] +uk = ["policyengine-uk>=2.151.0", "microcosm-data>=0.1,<0.2", "h5py>=3", "tables>=3", "openpyxl>=3.1"] [project.scripts] microcosm-build-uk = "microcosm.build.uk_runtime.full_build_cli:main" diff --git a/packages/microcosm-build/src/microcosm/build/frame_serializer_registry.py b/packages/microcosm-build/src/microcosm/build/frame_serializer_registry.py index d54a425bc8..f7ab63b747 100644 --- a/packages/microcosm-build/src/microcosm/build/frame_serializer_registry.py +++ b/packages/microcosm-build/src/microcosm/build/frame_serializer_registry.py @@ -219,6 +219,17 @@ class HdfWriteExclusion: ), reason="Adds weight-kind and mass-log root attributes only.", ), + HdfWriteExclusion( + exclusion_id="uk_energy_price_basis_root_attr", + writer=HdfWriteSite( + "packages/microcosm-build/src/microcosm/build/uk_runtime/national_frame.py", + "_write_energy_price_basis", + ), + reason=( + "Adds the energy spending's price-period root attribute only " + "(pe-uk#2571)." + ), + ), HdfWriteExclusion( exclusion_id="uk_smoke_non_release_root_attrs", writer=HdfWriteSite( diff --git a/packages/microcosm-build/src/microcosm/build/source_manifest.py b/packages/microcosm-build/src/microcosm/build/source_manifest.py index 8a5d1e1c8a..1eeaddd96e 100644 --- a/packages/microcosm-build/src/microcosm/build/source_manifest.py +++ b/packages/microcosm-build/src/microcosm/build/source_manifest.py @@ -76,6 +76,7 @@ "clone_records", "clean_nts_travel_tables", "clean_was_lisa_donor", + "convert_bonuses_to_bonus_sacrifice", "convert_donors_to_target_stock", "convert_interest_to_structural_mortgage_inputs", "compute_ratio", diff --git a/packages/microcosm-build/src/microcosm/build/spec_engine/schema/sources.schema.json b/packages/microcosm-build/src/microcosm/build/spec_engine/schema/sources.schema.json index 7751f4b780..0433154ff2 100644 --- a/packages/microcosm-build/src/microcosm/build/spec_engine/schema/sources.schema.json +++ b/packages/microcosm-build/src/microcosm/build/spec_engine/schema/sources.schema.json @@ -6592,6 +6592,7 @@ "minimum_pool_sources", "drawn_units", "undrawn_claims", + "kept_legacy_award", "weight_mapping", "residual_rate", "solve_scope", @@ -6641,6 +6642,9 @@ "undrawn_claims": { "type": "string" }, + "kept_legacy_award": { + "type": "string" + }, "weight_mapping": { "type": "string" }, @@ -8571,6 +8575,43 @@ "type": "string" } }, + "holder_strata": { + "type": "object", + "minProperties": 1, + "additionalProperties": { + "type": "string" + } + }, + "share_split": { + "type": "object", + "additionalProperties": false, + "required": [ + "fraction", + "outputs", + "undrawn_fraction" + ], + "properties": { + "fraction": { + "type": "string" + }, + "outputs": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "string" + } + }, + "undrawn_fraction": { + "type": "number", + "minimum": 0, + "maximum": 1 + } + } + }, + "secured_debt_within": { + "type": "string" + }, "derived_totals": { "type": "object", "minProperties": 1, @@ -9649,6 +9690,87 @@ } } }, + { + "type": "object", + "additionalProperties": false, + "required": [ + "kind", + "resource", + "facts", + "source", + "output", + "candidates", + "move", + "move_pay_share_cap", + "spi_bonus_draw", + "spi_cell_quantiles", + "spi_min_donor_sources", + "spi_salt", + "threshold", + "solve", + "seed", + "salt", + "receipt" + ], + "properties": { + "kind": { + "const": "convert_bonuses_to_bonus_sacrifice" + }, + "resource": { + "type": "string" + }, + "facts": { + "type": "string" + }, + "source": { + "type": "string" + }, + "output": { + "type": "string" + }, + "candidates": { + "type": "string" + }, + "move": { + "type": "string" + }, + "move_pay_share_cap": { + "type": "number" + }, + "spi_bonus_draw": { + "type": "string" + }, + "spi_cell_quantiles": { + "type": "array", + "items": { + "type": "number" + }, + "minItems": 1 + }, + "spi_min_donor_sources": { + "type": "integer", + "minimum": 1 + }, + "spi_salt": { + "type": "string" + }, + "threshold": { + "type": "number" + }, + "solve": { + "type": "string" + }, + "seed": { + "type": "integer" + }, + "salt": { + "type": "string" + }, + "receipt": { + "type": "string" + } + } + }, { "type": "object", "additionalProperties": false, @@ -10004,6 +10126,7 @@ "output", "port_of", "legacy_benefits", + "reporters", "true_without_draw", "rate", "probability", @@ -10026,6 +10149,9 @@ "type": "string" } }, + "reporters": { + "type": "string" + }, "true_without_draw": { "type": "string" }, @@ -12339,7 +12465,7 @@ "kind", "parents", "maximum_total", - "uncarried" + "published_fuels" ], "properties": { "kind": { @@ -12350,6 +12476,34 @@ "donor_support" ] }, + "level_division_excess": { + "type": "object", + "additionalProperties": false, + "required": [ + "rule", + "basis", + "divisions" + ], + "properties": { + "rule": { + "enum": [ + "excess_over_shared_ratio" + ] + }, + "basis": { + "enum": [ + "drawn_spend_over_donor_spend_per_household" + ] + }, + "divisions": { + "type": "array", + "minItems": 1, + "items": { + "type": "string" + } + } + } + }, "parents": { "type": "object", "minProperties": 1, @@ -12378,7 +12532,7 @@ } } }, - "uncarried": { + "published_fuels": { "type": "object", "additionalProperties": false, "required": [ @@ -12401,7 +12555,8 @@ "additionalProperties": false, "required": [ "coicop", - "concept" + "concept", + "column" ], "properties": { "coicop": { @@ -12409,6 +12564,9 @@ }, "concept": { "type": "string" + }, + "column": { + "type": "string" } } } diff --git a/packages/microcosm-build/src/microcosm/build/uk/bonus_sacrifice_anchor.json b/packages/microcosm-build/src/microcosm/build/uk/bonus_sacrifice_anchor.json new file mode 100644 index 0000000000..9426f86e71 --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/uk/bonus_sacrifice_anchor.json @@ -0,0 +1,51 @@ +{ + "schema_version": 1, + "engine": { + "package": "policyengine-uk", + "version": "2.151.0" + }, + "written_by": "tools/pin_uk_bonus_sacrifice_anchor.py", + "source": { + "resource": "obr_salary_sacrifice_costing_facts.json", + "record_set_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2027", + "groupby_value_id": "bonus_sacrifice__above_2000" + }, + "obr_base_above_threshold": 13000000000.0, + "threshold": 2000, + "data_year": 2024, + "base_year": 2027, + "earnings_growth": { + "parameter": "gov.economic_assumptions.yoy_growth.obr.average_earnings", + "years": [ + 2025, + 2026, + 2027 + ], + "rates": [ + 0.053, + 0.034, + 0.024 + ], + "factor": 1.114933248 + }, + "weight_growth": { + "parameter": "gov.economic_assumptions.yoy_growth.ons.population", + "years": [ + 2025, + 2026, + 2027 + ], + "rates": [ + 0.0072, + 0.0038, + 0.0037 + ], + "factor": 1.014768161232 + }, + "upper_earnings_limit": { + "parameter": "gov.hmrc.national_insurance.class_1.thresholds.upper_earnings_limit", + "instant": "2024-04-30", + "weekly": 966.73, + "annual": 50269.96 + } +} diff --git a/packages/microcosm-build/src/microcosm/build/uk/calibration_measure_exclusions.json b/packages/microcosm-build/src/microcosm/build/uk/calibration_measure_exclusions.json index eaa149a349..d06dc40647 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/calibration_measure_exclusions.json +++ b/packages/microcosm-build/src/microcosm/build/uk/calibration_measure_exclusions.json @@ -1,280 +1,253 @@ { - "schema_version": 3, + "schema_version": 4, "support_floor": { - "contract_target_ids": [ - "dwp.uc.payment_distribution_single", - "dwp.uc.payment_distribution_lone_parent", - "dwp.uc.payment_distribution_couple_no_children", - "dwp.uc.payment_distribution_couple_with_children", - "dwp.benefit_cap.capped_households_up_to_100", - "dwp.benefit_cap.capped_households_100_01_to_200", - "dwp.benefit_cap.capped_households_200_01_to_300", - "dwp.benefit_cap.capped_households_300_01_to_400", - "dwp.benefit_cap.capped_households_400_01_to_500", - "dwp.benefit_cap.capped_households_500_01_to_600", - "dwp.benefit_cap.capped_households_600_01_to_700", - "dwp.benefit_cap.capped_households_700_01_to_800", - "dwp.benefit_cap.capped_households_800_01_to_900", - "dwp.benefit_cap.capped_households_900_01_to_1000", - "dwp.benefit_cap.capped_households_1000_01_to_1100", - "dwp.benefit_cap.capped_households_1100_01_to_1200", - "dwp.benefit_cap.capped_households_1200_01_to_1300", - "dwp.benefit_cap.capped_households_1300_01_and_above" - ], "metric": "distinct_source_households_with_positive_prior_weight", "floor": 1, - "max_dropped_rows": 24, - "max_dropped_published_share": 0.05, - "reason": "Zero-support floor: a UC payment-distribution band or a benefit-cap amount band whose compiled matrix row reaches no source household (household_source_id) with a positive prior weight cannot be fitted by any weights (the solver's initialiser refuses a nonzero target with no support), so it is dropped from the solve, not pooled. A row that some households carry stays bound however few they are; when fewer than 10 distinct source households carry it, its model figures are withheld from every written surface (the UK Data Service working floor, CD171 section 5.2.1). The floor's receipt reports each target's dropped published total, and the run refuses when the drops pass either ceiling or when a per-row exclusion names a row the floor drops.", + "scopes": [ + { + "scope": "uc_payment_and_benefit_cap_bands", + "unit": "benefit_units", + "contract_target_ids": [ + "dwp.uc.payment_distribution_single", + "dwp.uc.payment_distribution_lone_parent", + "dwp.uc.payment_distribution_couple_no_children", + "dwp.uc.payment_distribution_couple_with_children", + "dwp.benefit_cap.capped_households_up_to_100", + "dwp.benefit_cap.capped_households_100_01_to_200", + "dwp.benefit_cap.capped_households_200_01_to_300", + "dwp.benefit_cap.capped_households_300_01_to_400", + "dwp.benefit_cap.capped_households_400_01_to_500", + "dwp.benefit_cap.capped_households_500_01_to_600", + "dwp.benefit_cap.capped_households_600_01_to_700", + "dwp.benefit_cap.capped_households_700_01_to_800", + "dwp.benefit_cap.capped_households_800_01_to_900", + "dwp.benefit_cap.capped_households_900_01_to_1000", + "dwp.benefit_cap.capped_households_1000_01_to_1100", + "dwp.benefit_cap.capped_households_1100_01_to_1200", + "dwp.benefit_cap.capped_households_1200_01_to_1300", + "dwp.benefit_cap.capped_households_1300_01_and_above" + ], + "max_dropped_rows": 24, + "max_dropped_published_share": 0.05 + }, + { + "scope": "hmrc_spi_income_band_counts", + "unit": "people", + "contract_target_ids": [ + "hmrc.spi.employment_income.count_by_total_income_band", + "hmrc.spi.self_employment_income.count_by_total_income_band", + "hmrc.spi.dividend_income.count_by_total_income_band", + "hmrc.spi.property_income.count_by_total_income_band", + "hmrc.spi.private_pension_income.count_by_total_income_band", + "hmrc.spi.state_pension.count_by_total_income_band", + "hmrc.spi.savings_interest_income.count_by_total_income_band" + ], + "max_dropped_rows": 2, + "max_dropped_published_share": 0.01 + }, + { + "scope": "hmrc_spi_income_band_amounts", + "unit": "GBP", + "contract_target_ids": [ + "hmrc.spi.employment_income.amount_by_total_income_band", + "hmrc.spi.self_employment_income.amount_by_total_income_band", + "hmrc.spi.dividend_income.amount_by_total_income_band", + "hmrc.spi.property_income.amount_by_total_income_band", + "hmrc.spi.private_pension_income.amount_by_total_income_band", + "hmrc.spi.state_pension.amount_by_total_income_band", + "hmrc.spi.savings_interest_income.amount_by_total_income_band" + ], + "max_dropped_rows": 2, + "max_dropped_published_share": 0.01 + }, + { + "scope": "council_tax_band_h_by_region", + "unit": "households", + "contract_target_ids": [ + "mhclg.council_tax_stock.band_h" + ], + "max_dropped_rows": 2, + "max_dropped_published_share": 0.1 + } + ], + "reason": "Zero-support floor: a row in one of the floor's scopes (the UC payment-distribution and benefit-cap amount bands, the HMRC SPI income bands by total income, and the band-H council-tax rows by English region) whose compiled matrix row reaches no source household (household_source_id) with a positive prior weight cannot be fitted by any weights (the solver's initialiser refuses a nonzero target with no support), so it is dropped from the solve, not pooled. A row that some households carry stays bound however few they are; when fewer than 10 distinct source households carry it, its model figures are withheld from every written surface (the UK Data Service working floor, CD171 section 5.2.1). Each scope holds one unit, because its share ceiling sums published values. The floor's receipt reports each target's dropped published total and each scope's dropped share, and the run refuses when a scope's drops pass either of its ceilings or when a per-row exclusion names a row the floor drops.", "tracking": "microcosm#1095", "approved_by": "juaristi22", - "adjudication": "microcosm#1095 U3, ruled 2026-10-16 with the fifth ports PR (floor 10) and revised 2026-10-21 with #1333: a cell that rests on fewer than 10 records is no reason to leave a row out, only a measured distortion of the calibration is. The floor drops only rows no household carries, the benefit-cap amount bands join its scope and their per-row entries retire, and the figures of rows under 10 source households are withheld, as the BRMA rows' are. The thirteen entries it retired (the eleven benefit-cap amount bands and the two HMRC £500k to £1m cells) and the A/B that retired them: experiments/1095-uk-thin-row-binding-receipts.md.", - "approved_on": "2026-10-21", + "adjudication": "microcosm#1095 U3, ruled 2026-10-16 with the fifth ports PR (floor 10) and revised 2026-10-21 with #1333: a cell that rests on fewer than 10 records is no reason to leave a row out, only a measured distortion of the calibration is. The floor drops only rows no household carries, the benefit-cap amount bands join its scope and their per-row entries retire, and the figures of rows under 10 source households are withheld, as the BRMA rows' are. The thirteen entries it retired (the eleven benefit-cap amount bands and the two HMRC £500k to £1m cells) and the A/B that retired them: experiments/1095-uk-thin-row-binding-receipts.md. Extended on 2026-10-22 (María's ruling on the next policyengine-uk bump) to the HMRC SPI income-band families and the band-H council-tax rows by region, in scopes of one unit each with their own ceilings. On #1333's policyengine-uk 2.145.0 spine every HMRC £1m-and-over cell and every band-H region cell has carriers. The three band-H region entries retire and their rows bind, with their figures withheld where fewer than 10 source households carry them; the ten HMRC £1m-and-over cells, bound on arm 1, distorted their neighbours and stay held on that measurement, so the HMRC scopes cover the bands below them.", + "approved_on": "2026-10-22", "expires_on": "2027-01-08" }, "exclusions": [ { "name": "hmrc/employment_income_income_band_1_000_000_to_inf", - "reason": "Zero-support channel on total income (ITA 2007 s.23, which excludes capital gains): zero in-band carrier records with total income above 1m, under both the SPI assessable-income concept and the component-sum proxy, measured identically on spine-i and spine-j (microcosm#807, receipts uk-candidate-eval out/excluded_cell_support_spine_{i,j}.json). The spine carries large capital gains and thousands of records above 1m wealth; the premise is total-income support, never a wealth or gains cap, and a zero-support cell cannot be reached by reweighting.", - "tracking": "microcosm#757", + "reason": "Measured distortion, not thin support (María's rule of 2026-10-21): every HMRC £1m-and-over cell has carriers on #1333's policyengine-uk 2.145.0 spine, so arm 1 of the next policyengine-uk bump bound all ten. Bound, they moved neighbouring rows of the SPI channel that had fitted closely out of the 10 percent band, and the arm's uk_target_fit gate failed. Held out of the objective as a family and measured on every evaluation. The rows rest on the SPI Public Use Tape, so their figures and their neighbours' stay out of this register.", + "tracking": "microcosm#1095", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); reason revised 2026-08-28 per microcosm#807 (the spine-i/j excluded-cell support re-measurement)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#1095, the next policyengine-uk bump: the ten entries of the 2026-08-26 tranche (microcosm#757) retired on the support measurement of 2026-10-23 and were bound on arm 1 (calibrate-only on #1333's 2.145.0 spine, review date 2026-10-23), which measured the distortion; held again on that arm's A/B against #1333's arm, pending a split of the family that binds the cells which do not distort.", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "hmrc/dividend_income_income_band_1_000_000_to_inf", - "reason": "Zero-support channel on total income (ITA 2007 s.23, which excludes capital gains): zero in-band carrier records with total income above 1m, under both the SPI assessable-income concept and the component-sum proxy, measured identically on spine-i and spine-j (microcosm#807, receipts uk-candidate-eval out/excluded_cell_support_spine_{i,j}.json). The spine carries large capital gains and thousands of records above 1m wealth; the premise is total-income support, never a wealth or gains cap, and a zero-support cell cannot be reached by reweighting.", - "tracking": "microcosm#757", + "reason": "Measured distortion, not thin support (María's rule of 2026-10-21): every HMRC £1m-and-over cell has carriers on #1333's policyengine-uk 2.145.0 spine, so arm 1 of the next policyengine-uk bump bound all ten. Bound, they moved neighbouring rows of the SPI channel that had fitted closely out of the 10 percent band, and the arm's uk_target_fit gate failed. Held out of the objective as a family and measured on every evaluation. The rows rest on the SPI Public Use Tape, so their figures and their neighbours' stay out of this register.", + "tracking": "microcosm#1095", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); reason revised 2026-08-28 per microcosm#807 (the spine-i/j excluded-cell support re-measurement)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#1095, the next policyengine-uk bump: the ten entries of the 2026-08-26 tranche (microcosm#757) retired on the support measurement of 2026-10-23 and were bound on arm 1 (calibrate-only on #1333's 2.145.0 spine, review date 2026-10-23), which measured the distortion; held again on that arm's A/B against #1333's arm, pending a split of the family that binds the cells which do not distort.", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "hmrc/dividend_income_count_income_band_1_000_000_to_inf", - "reason": "Zero-support channel on total income (ITA 2007 s.23, which excludes capital gains): zero in-band carrier records with total income above 1m, under both the SPI assessable-income concept and the component-sum proxy, measured identically on spine-i and spine-j (microcosm#807, receipts uk-candidate-eval out/excluded_cell_support_spine_{i,j}.json). The spine carries large capital gains and thousands of records above 1m wealth; the premise is total-income support, never a wealth or gains cap, and a zero-support cell cannot be reached by reweighting.", - "tracking": "microcosm#757", + "reason": "Measured distortion, not thin support (María's rule of 2026-10-21): every HMRC £1m-and-over cell has carriers on #1333's policyengine-uk 2.145.0 spine, so arm 1 of the next policyengine-uk bump bound all ten. Bound, they moved neighbouring rows of the SPI channel that had fitted closely out of the 10 percent band, and the arm's uk_target_fit gate failed. Held out of the objective as a family and measured on every evaluation. The rows rest on the SPI Public Use Tape, so their figures and their neighbours' stay out of this register.", + "tracking": "microcosm#1095", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); reason revised 2026-08-28 per microcosm#807 (the spine-i/j excluded-cell support re-measurement)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#1095, the next policyengine-uk bump: the ten entries of the 2026-08-26 tranche (microcosm#757) retired on the support measurement of 2026-10-23 and were bound on arm 1 (calibrate-only on #1333's 2.145.0 spine, review date 2026-10-23), which measured the distortion; held again on that arm's A/B against #1333's arm, pending a split of the family that binds the cells which do not distort.", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "hmrc/property_income_count_income_band_1_000_000_to_inf", - "reason": "Zero-support channel on total income (ITA 2007 s.23, which excludes capital gains): zero in-band carrier records with total income above 1m, under both the SPI assessable-income concept and the component-sum proxy, measured identically on spine-i and spine-j (microcosm#807, receipts uk-candidate-eval out/excluded_cell_support_spine_{i,j}.json). The spine carries large capital gains and thousands of records above 1m wealth; the premise is total-income support, never a wealth or gains cap, and a zero-support cell cannot be reached by reweighting.", - "tracking": "microcosm#757", + "reason": "Measured distortion, not thin support (María's rule of 2026-10-21): every HMRC £1m-and-over cell has carriers on #1333's policyengine-uk 2.145.0 spine, so arm 1 of the next policyengine-uk bump bound all ten. Bound, they moved neighbouring rows of the SPI channel that had fitted closely out of the 10 percent band, and the arm's uk_target_fit gate failed. Held out of the objective as a family and measured on every evaluation. The rows rest on the SPI Public Use Tape, so their figures and their neighbours' stay out of this register.", + "tracking": "microcosm#1095", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); reason revised 2026-08-28 per microcosm#807 (the spine-i/j excluded-cell support re-measurement)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#1095, the next policyengine-uk bump: the ten entries of the 2026-08-26 tranche (microcosm#757) retired on the support measurement of 2026-10-23 and were bound on arm 1 (calibrate-only on #1333's 2.145.0 spine, review date 2026-10-23), which measured the distortion; held again on that arm's A/B against #1333's arm, pending a split of the family that binds the cells which do not distort.", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "hmrc/private_pension_income_income_band_1_000_000_to_inf", - "reason": "Zero-support channel on total income (ITA 2007 s.23, which excludes capital gains): zero in-band carrier records with total income above 1m, under both the SPI assessable-income concept and the component-sum proxy, measured identically on spine-i and spine-j (microcosm#807, receipts uk-candidate-eval out/excluded_cell_support_spine_{i,j}.json). The spine carries large capital gains and thousands of records above 1m wealth; the premise is total-income support, never a wealth or gains cap, and a zero-support cell cannot be reached by reweighting.", - "tracking": "microcosm#757", + "reason": "Measured distortion, not thin support (María's rule of 2026-10-21): every HMRC £1m-and-over cell has carriers on #1333's policyengine-uk 2.145.0 spine, so arm 1 of the next policyengine-uk bump bound all ten. Bound, they moved neighbouring rows of the SPI channel that had fitted closely out of the 10 percent band, and the arm's uk_target_fit gate failed. Held out of the objective as a family and measured on every evaluation. The rows rest on the SPI Public Use Tape, so their figures and their neighbours' stay out of this register.", + "tracking": "microcosm#1095", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); reason revised 2026-08-28 per microcosm#807 (the spine-i/j excluded-cell support re-measurement)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#1095, the next policyengine-uk bump: the ten entries of the 2026-08-26 tranche (microcosm#757) retired on the support measurement of 2026-10-23 and were bound on arm 1 (calibrate-only on #1333's 2.145.0 spine, review date 2026-10-23), which measured the distortion; held again on that arm's A/B against #1333's arm, pending a split of the family that binds the cells which do not distort.", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "hmrc/private_pension_income_count_income_band_1_000_000_to_inf", - "reason": "Zero-support channel on total income (ITA 2007 s.23, which excludes capital gains): zero in-band carrier records with total income above 1m, under both the SPI assessable-income concept and the component-sum proxy, measured identically on spine-i and spine-j (microcosm#807, receipts uk-candidate-eval out/excluded_cell_support_spine_{i,j}.json). The spine carries large capital gains and thousands of records above 1m wealth; the premise is total-income support, never a wealth or gains cap, and a zero-support cell cannot be reached by reweighting.", - "tracking": "microcosm#757", + "reason": "Measured distortion, not thin support (María's rule of 2026-10-21): every HMRC £1m-and-over cell has carriers on #1333's policyengine-uk 2.145.0 spine, so arm 1 of the next policyengine-uk bump bound all ten. Bound, they moved neighbouring rows of the SPI channel that had fitted closely out of the 10 percent band, and the arm's uk_target_fit gate failed. Held out of the objective as a family and measured on every evaluation. The rows rest on the SPI Public Use Tape, so their figures and their neighbours' stay out of this register.", + "tracking": "microcosm#1095", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); reason revised 2026-08-28 per microcosm#807 (the spine-i/j excluded-cell support re-measurement)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#1095, the next policyengine-uk bump: the ten entries of the 2026-08-26 tranche (microcosm#757) retired on the support measurement of 2026-10-23 and were bound on arm 1 (calibrate-only on #1333's 2.145.0 spine, review date 2026-10-23), which measured the distortion; held again on that arm's A/B against #1333's arm, pending a split of the family that binds the cells which do not distort.", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "hmrc/state_pension_income_band_1_000_000_to_inf", - "reason": "Zero-support channel on total income (ITA 2007 s.23, which excludes capital gains): zero in-band carrier records with total income above 1m, under both the SPI assessable-income concept and the component-sum proxy, measured identically on spine-i and spine-j (microcosm#807, receipts uk-candidate-eval out/excluded_cell_support_spine_{i,j}.json). The spine carries large capital gains and thousands of records above 1m wealth; the premise is total-income support, never a wealth or gains cap, and a zero-support cell cannot be reached by reweighting.", - "tracking": "microcosm#757", + "reason": "Measured distortion, not thin support (María's rule of 2026-10-21): every HMRC £1m-and-over cell has carriers on #1333's policyengine-uk 2.145.0 spine, so arm 1 of the next policyengine-uk bump bound all ten. Bound, they moved neighbouring rows of the SPI channel that had fitted closely out of the 10 percent band, and the arm's uk_target_fit gate failed. Held out of the objective as a family and measured on every evaluation. The rows rest on the SPI Public Use Tape, so their figures and their neighbours' stay out of this register.", + "tracking": "microcosm#1095", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); reason revised 2026-08-28 per microcosm#807 (the spine-i/j excluded-cell support re-measurement)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#1095, the next policyengine-uk bump: the ten entries of the 2026-08-26 tranche (microcosm#757) retired on the support measurement of 2026-10-23 and were bound on arm 1 (calibrate-only on #1333's 2.145.0 spine, review date 2026-10-23), which measured the distortion; held again on that arm's A/B against #1333's arm, pending a split of the family that binds the cells which do not distort.", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "hmrc/state_pension_count_income_band_1_000_000_to_inf", - "reason": "Zero-support channel on total income (ITA 2007 s.23, which excludes capital gains): zero in-band carrier records with total income above 1m, under both the SPI assessable-income concept and the component-sum proxy, measured identically on spine-i and spine-j (microcosm#807, receipts uk-candidate-eval out/excluded_cell_support_spine_{i,j}.json). The spine carries large capital gains and thousands of records above 1m wealth; the premise is total-income support, never a wealth or gains cap, and a zero-support cell cannot be reached by reweighting.", - "tracking": "microcosm#757", + "reason": "Measured distortion, not thin support (María's rule of 2026-10-21): every HMRC £1m-and-over cell has carriers on #1333's policyengine-uk 2.145.0 spine, so arm 1 of the next policyengine-uk bump bound all ten. Bound, they moved neighbouring rows of the SPI channel that had fitted closely out of the 10 percent band, and the arm's uk_target_fit gate failed. Held out of the objective as a family and measured on every evaluation. The rows rest on the SPI Public Use Tape, so their figures and their neighbours' stay out of this register.", + "tracking": "microcosm#1095", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); reason revised 2026-08-28 per microcosm#807 (the spine-i/j excluded-cell support re-measurement)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#1095, the next policyengine-uk bump: the ten entries of the 2026-08-26 tranche (microcosm#757) retired on the support measurement of 2026-10-23 and were bound on arm 1 (calibrate-only on #1333's 2.145.0 spine, review date 2026-10-23), which measured the distortion; held again on that arm's A/B against #1333's arm, pending a split of the family that binds the cells which do not distort.", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "hmrc/self_employment_income_income_band_1_000_000_to_inf", - "reason": "Zero-support channel on total income (ITA 2007 s.23, which excludes capital gains): zero in-band carrier records with total income above 1m under the SPI assessable-income concept and fewer than ten under the component-sum proxy, measured identically on spine-i and spine-j (microcosm#807, receipts uk-candidate-eval out/excluded_cell_support_spine_{i,j}.json). The spine carries large capital gains and thousands of records above 1m wealth; the premise is total-income support, never a wealth or gains cap, and a zero-support cell cannot be reached by reweighting.", - "tracking": "microcosm#757", + "reason": "Measured distortion, not thin support (María's rule of 2026-10-21): every HMRC £1m-and-over cell has carriers on #1333's policyengine-uk 2.145.0 spine, so arm 1 of the next policyengine-uk bump bound all ten. Bound, they moved neighbouring rows of the SPI channel that had fitted closely out of the 10 percent band, and the arm's uk_target_fit gate failed. Held out of the objective as a family and measured on every evaluation. The rows rest on the SPI Public Use Tape, so their figures and their neighbours' stay out of this register.", + "tracking": "microcosm#1095", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); reason revised 2026-08-28 per microcosm#807 (the spine-i/j excluded-cell support re-measurement)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#1095, the next policyengine-uk bump: the ten entries of the 2026-08-26 tranche (microcosm#757) retired on the support measurement of 2026-10-23 and were bound on arm 1 (calibrate-only on #1333's 2.145.0 spine, review date 2026-10-23), which measured the distortion; held again on that arm's A/B against #1333's arm, pending a split of the family that binds the cells which do not distort.", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "hmrc/self_employment_income_count_income_band_1_000_000_to_inf", - "reason": "Zero-support channel on total income (ITA 2007 s.23, which excludes capital gains): zero in-band carrier records with total income above 1m under the SPI assessable-income concept and fewer than ten under the component-sum proxy, measured identically on spine-i and spine-j (microcosm#807, receipts uk-candidate-eval out/excluded_cell_support_spine_{i,j}.json). The spine carries large capital gains and thousands of records above 1m wealth; the premise is total-income support, never a wealth or gains cap, and a zero-support cell cannot be reached by reweighting.", - "tracking": "microcosm#757", - "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); reason revised 2026-08-28 per microcosm#807 (the spine-i/j excluded-cell support re-measurement)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" - }, - { - "name": "slc.repayments.england_postgraduate", - "reason": "Zero-support channel: no spine record carries postgraduate-plan repayments (-100%, final estimate 0.0 on the rebind packet); the student-loans stage assigns plans from the SLC liable-stocks resource and the postgraduate stock finds no eligible carriers at spine grain.", - "tracking": "microcosm#757", + "reason": "Measured distortion, not thin support (María's rule of 2026-10-21): every HMRC £1m-and-over cell has carriers on #1333's policyengine-uk 2.145.0 spine, so arm 1 of the next policyengine-uk bump bound all ten. Bound, they moved neighbouring rows of the SPI channel that had fitted closely out of the 10 percent band, and the arm's uk_target_fit gate failed. Held out of the objective as a family and measured on every evaluation. The rows rest on the SPI Public Use Tape, so their figures and their neighbours' stay out of this register.", + "tracking": "microcosm#1095", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#1095, the next policyengine-uk bump: the ten entries of the 2026-08-26 tranche (microcosm#757) retired on the support measurement of 2026-10-23 and were bound on arm 1 (calibrate-only on #1333's 2.145.0 spine, review date 2026-10-23), which measured the distortion; held again on that arm's A/B against #1333's arm, pending a split of the family that binds the cells which do not distort.", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "slc.repayments.england_plan_5", - "reason": "Structural under-support: the E8 PLAN_5 top-up saturates the eligible pool (rate 1.0), so the plan-5 repayment mass is bound by frame composition, not by weighting (-84.4% on the rebind packet).", + "reason": "Structural under-support: the student-loans stage tops Plan 5 up to SLC's liable stock, which binds, and fewer than ten source households carry Plan 5 repayments on #1333's 2.145.0 spine, so no weights reach SLC's repayment figure; the row's model figures are withheld.", "tracking": "microcosm#757", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" - }, - { - "name": "slc.borrowers.plan_5_liable", - "reason": "Structural under-support: the E8 PLAN_5 top-up saturates the eligible pool (rate 1.0, final England 43,055 vs 230,000 stock); the liable count is bound by frame composition, not by weighting (-81.3% on the rebind packet).", - "tracking": "microcosm#757", - "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" - }, - { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_13_200_to_14_400", - "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support (the #623-carried catalogue); every cell in this class undershoots on the rebind packet and two sit at -100% with final estimate 0.0. The payment distribution needs element/taper composition support beyond the would_claim_uc take-up lever.", - "tracking": "uk-data#452", - "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); renewed on 2026-10-23 to 2027-01-23 by juaristi22 on arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine), beside Plan 5's liable stock, which binds", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_15_600_to_16_800", - "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support (the #623-carried catalogue); every cell in this class undershoots on the rebind packet and two sit at -100% with final estimate 0.0. The payment distribution needs element/taper composition support beyond the would_claim_uc take-up lever.", - "tracking": "uk-data#452", - "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" - }, - { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_9_600_to_10_800", - "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support (the #623-carried catalogue); every cell in this class undershoots on the rebind packet and two sit at -100% with final estimate 0.0. The payment distribution needs element/taper composition support beyond the would_claim_uc take-up lever.", + "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support. Measured unbound at the calibrated weights of arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0, with the award-band take-up draw of microcosm#1344), four of the twelve bands in this class came within 10 percent and bind; the eight that stay here remain outside it, seven short and one over, as on arm 1 (calibrate-only on #1333's 2.145.0 spine). The bands rest in large part on households of the SPI support channel, so this register gives no figure of theirs (SN 9422). Not the would_claim_uc take-up lever or the weights.", "tracking": "uk-data#452", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); renewed on 2026-10-23 to 2027-01-23 by juaristi22 on arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine): the twelve stay on their own renewals until the award-band take-up binds them (María's ruling of 2026-10-21, microcosm#1344); re-measured on arm 2 of the next policyengine-uk bump on 2026-10-24: four of the twelve came within 10 percent and bind, and the eight that stay keep this renewal", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_18_000_to_19_200", - "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support (the #623-carried catalogue); every cell in this class undershoots on the rebind packet and two sit at -100% with final estimate 0.0. The payment distribution needs element/taper composition support beyond the would_claim_uc take-up lever.", + "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support. Measured unbound at the calibrated weights of arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0, with the award-band take-up draw of microcosm#1344), four of the twelve bands in this class came within 10 percent and bind; the eight that stay here remain outside it, seven short and one over, as on arm 1 (calibrate-only on #1333's 2.145.0 spine). The bands rest in large part on households of the SPI support channel, so this register gives no figure of theirs (SN 9422). Not the would_claim_uc take-up lever or the weights.", "tracking": "uk-data#452", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); renewed on 2026-10-23 to 2027-01-23 by juaristi22 on arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine): the twelve stay on their own renewals until the award-band take-up binds them (María's ruling of 2026-10-21, microcosm#1344); re-measured on arm 2 of the next policyengine-uk bump on 2026-10-24: four of the twelve came within 10 percent and bind, and the eight that stay keep this renewal", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_16_800_to_18_000", - "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support (the #623-carried catalogue); every cell in this class undershoots on the rebind packet and two sit at -100% with final estimate 0.0. The payment distribution needs element/taper composition support beyond the would_claim_uc take-up lever.", + "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support. Measured unbound at the calibrated weights of arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0, with the award-band take-up draw of microcosm#1344), four of the twelve bands in this class came within 10 percent and bind; the eight that stay here remain outside it, seven short and one over, as on arm 1 (calibrate-only on #1333's 2.145.0 spine). The bands rest in large part on households of the SPI support channel, so this register gives no figure of theirs (SN 9422). Not the would_claim_uc take-up lever or the weights.", "tracking": "uk-data#452", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); renewed on 2026-10-23 to 2027-01-23 by juaristi22 on arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine): the twelve stay on their own renewals until the award-band take-up binds them (María's ruling of 2026-10-21, microcosm#1344); re-measured on arm 2 of the next policyengine-uk bump on 2026-10-24: four of the twelve came within 10 percent and bind, and the eight that stay keep this renewal", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_19_200_to_20_400", - "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support (the #623-carried catalogue); every cell in this class undershoots on the rebind packet and two sit at -100% with final estimate 0.0. The payment distribution needs element/taper composition support beyond the would_claim_uc take-up lever.", + "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support. Measured unbound at the calibrated weights of arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0, with the award-band take-up draw of microcosm#1344), four of the twelve bands in this class came within 10 percent and bind; the eight that stay here remain outside it, seven short and one over, as on arm 1 (calibrate-only on #1333's 2.145.0 spine). The bands rest in large part on households of the SPI support channel, so this register gives no figure of theirs (SN 9422). Not the would_claim_uc take-up lever or the weights.", "tracking": "uk-data#452", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); renewed on 2026-10-23 to 2027-01-23 by juaristi22 on arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine): the twelve stay on their own renewals until the award-band take-up binds them (María's ruling of 2026-10-21, microcosm#1344); re-measured on arm 2 of the next policyengine-uk bump on 2026-10-24: four of the twelve came within 10 percent and bind, and the eight that stay keep this renewal", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_14_400_to_15_600", - "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support (the #623-carried catalogue); every cell in this class undershoots on the rebind packet and two sit at -100% with final estimate 0.0. The payment distribution needs element/taper composition support beyond the would_claim_uc take-up lever.", + "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support. Measured unbound at the calibrated weights of arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0, with the award-band take-up draw of microcosm#1344), four of the twelve bands in this class came within 10 percent and bind; the eight that stay here remain outside it, seven short and one over, as on arm 1 (calibrate-only on #1333's 2.145.0 spine). The bands rest in large part on households of the SPI support channel, so this register gives no figure of theirs (SN 9422). Not the would_claim_uc take-up lever or the weights.", "tracking": "uk-data#452", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); renewed on 2026-10-23 to 2027-01-23 by juaristi22 on arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine): the twelve stay on their own renewals until the award-band take-up binds them (María's ruling of 2026-10-21, microcosm#1344); re-measured on arm 2 of the next policyengine-uk bump on 2026-10-24: four of the twelve came within 10 percent and bind, and the eight that stay keep this renewal", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_12_000_to_13_200", - "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support (the #623-carried catalogue); every cell in this class undershoots on the rebind packet and two sit at -100% with final estimate 0.0. The payment distribution needs element/taper composition support beyond the would_claim_uc take-up lever.", + "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support. Measured unbound at the calibrated weights of arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0, with the award-band take-up draw of microcosm#1344), four of the twelve bands in this class came within 10 percent and bind; the eight that stay here remain outside it, seven short and one over, as on arm 1 (calibrate-only on #1333's 2.145.0 spine). The bands rest in large part on households of the SPI support channel, so this register gives no figure of theirs (SN 9422). Not the would_claim_uc take-up lever or the weights.", "tracking": "uk-data#452", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); renewed on 2026-10-23 to 2027-01-23 by juaristi22 on arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine): the twelve stay on their own renewals until the award-band take-up binds them (María's ruling of 2026-10-21, microcosm#1344); re-measured on arm 2 of the next policyengine-uk bump on 2026-10-24: four of the twelve came within 10 percent and bind, and the eight that stay keep this renewal", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "dwp/uc_payment_dist/SINGLE_annual_payment_14_400_to_15_600", - "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support (the #623-carried catalogue); every cell in this class undershoots on the rebind packet and two sit at -100% with final estimate 0.0. The payment distribution needs element/taper composition support beyond the would_claim_uc take-up lever.", - "tracking": "uk-data#452", - "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" - }, - { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_13_200_to_14_400", - "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support (the #623-carried catalogue); every cell in this class undershoots on the rebind packet and two sit at -100% with final estimate 0.0. The payment distribution needs element/taper composition support beyond the would_claim_uc take-up lever.", + "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support. Measured unbound at the calibrated weights of arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0, with the award-band take-up draw of microcosm#1344), four of the twelve bands in this class came within 10 percent and bind; the eight that stay here remain outside it, seven short and one over, as on arm 1 (calibrate-only on #1333's 2.145.0 spine). The bands rest in large part on households of the SPI support channel, so this register gives no figure of theirs (SN 9422). Not the would_claim_uc take-up lever or the weights.", "tracking": "uk-data#452", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" - }, - { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_8_400_to_9_600", - "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support (the #623-carried catalogue); every cell in this class undershoots on the rebind packet and two sit at -100% with final estimate 0.0. The payment distribution needs element/taper composition support beyond the would_claim_uc take-up lever.", - "tracking": "uk-data#452", - "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); renewed on 2026-10-23 to 2027-01-23 by juaristi22 on arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine): the twelve stay on their own renewals until the award-band take-up binds them (María's ruling of 2026-10-21, microcosm#1344); re-measured on arm 2 of the next policyengine-uk bump on 2026-10-24: four of the twelve came within 10 percent and bind, and the eight that stay keep this renewal", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_21_600_to_22_800", - "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support (the #623-carried catalogue); every cell in this class undershoots on the rebind packet and two sit at -100% with final estimate 0.0. The payment distribution needs element/taper composition support beyond the would_claim_uc take-up lever.", + "reason": "One-sided undershoot: the annual-payment band composition inside the UC caseload is unreachable under the spine's current UC support. Measured unbound at the calibrated weights of arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0, with the award-band take-up draw of microcosm#1344), four of the twelve bands in this class came within 10 percent and bind; the eight that stay here remain outside it, seven short and one over, as on arm 1 (calibrate-only on #1333's 2.145.0 spine). The bands rest in large part on households of the SPI support channel, so this register gives no figure of theirs (SN 9422). Not the would_claim_uc take-up lever or the weights.", "tracking": "uk-data#452", "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" - }, - { - "name": "obr.universal_credit_in_cap", - "reason": "The OBR welfare-cap boundary (UC in-cap vs outside-cap) is not measurable on the frame: the model cannot attribute UC spend to the cap concept, so the pair splits one well-measured total into two mis-attributed halves (-96.8% / +286.3% on the rebind packet while total UC spend is within band of the OBR anchor).", - "tracking": "microcosm#757", - "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" - }, - { - "name": "obr.universal_credit_outside_cap", - "reason": "The OBR welfare-cap boundary (UC in-cap vs outside-cap) is not measurable on the frame: the model cannot attribute UC spend to the cap concept, so the pair splits one well-measured total into two mis-attributed halves (-96.8% / +286.3% on the rebind packet while total UC spend is within band of the OBR anchor).", - "tracking": "microcosm#757", - "approved_by": "juaristi22", - "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411)", - "approved_on": "2026-08-26", - "expires_on": "2026-11-26" + "adjudication": "microcosm#757 (the uk_target_fit dispositions, issue comment 5427936411); renewed on 2026-10-23 to 2027-01-23 by juaristi22 on arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine): the twelve stay on their own renewals until the award-band take-up binds them (María's ruling of 2026-10-21, microcosm#1344); re-measured on arm 2 of the next policyengine-uk bump on 2026-10-24: four of the twelve came within 10 percent and bind, and the eight that stay keep this renewal", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "ons.savings_interest_income", @@ -287,115 +260,88 @@ }, { "name": "obr.housing_benefit", - "reason": "Frame-side gap, not a weight question, decomposed on 2026-09-16 (spine-q design weights unless stated). FRS 2024-25 reports 1.56m Housing Benefit benefit units, 99.9 percent renters, near the DWP GB caseload (1.94m in January 2025 falling to 1.46m by December); the spine carries 1.21m GB reporters (GBP 7.15bn reported) because the SPI support channel re-imputes benefit receipt onto its synthetic households without tenure coherence: 363k of its 449k reporting units sit in owner-occupied households and can never be paid. The engine then pays Housing Benefit only to reporting units with a rented tenure, not drawn into Universal Credit, under the capital limit and carrying the household's rent (rent is the household head's benefit unit's alone; claims_all_entitled_benefits collapses to a scalar, so there is no take-up lever): 407k all-pension-age reporting units were drawn into Universal Credit by the 55 percent take-up draw although they cannot claim it, and the working-age remainder is pared by the means test. On the Q50f candidate the engine pays 235k units and GBP 2.13bn against the OBR GBP 12.10bn (-82 percent); the U8 lever receipt already showed the same lever from the other side (0.85 take-up moved this row from -0.0 to -52.4 percent). This PR gates the draw to units with an adult under State Pension age; the SPI-channel tenure defect is a #840/#145 item; the OBR line also carries supported and temporary accommodation the frame has no concept for. Re-measured on every evaluation with the three Housing Benefit caseload rows; renew or retire on the next spine that carries the SPI repair.", + "reason": "Frame-side gap, not a weight question, decomposed on 2026-09-16 (spine-q design weights unless stated). FRS 2024-25 reports 1.56m Housing Benefit benefit units, 99.9 percent renters, near the DWP GB caseload (1.94m in January 2025 falling to 1.46m by December); the spine carries 1.21m GB reporters (GBP 7.15bn reported) because the SPI support channel re-imputes benefit receipt onto its synthetic households without tenure coherence: 363k of its 449k reporting units sit in owner-occupied households and can never be paid. The engine then pays Housing Benefit only to reporting units with a rented tenure, not drawn into Universal Credit, under the capital limit and carrying the household's rent (rent is the household head's benefit unit's alone; claims_all_entitled_benefits collapses to a scalar, so there is no take-up lever): 407k all-pension-age reporting units were drawn into Universal Credit by the 55 percent take-up draw although they cannot claim it, and the working-age remainder is pared by the means test. On the Q50f candidate the engine pays 235k units and GBP 2.13bn against the OBR GBP 12.10bn (-82 percent); the U8 lever receipt already showed the same lever from the other side (0.85 take-up moved this row from -0.0 to -52.4 percent). This PR gates the draw to units with an adult under State Pension age; the SPI-channel tenure defect is a #840/#145 item; the OBR line also carries supported and temporary accommodation the frame has no concept for. Re-measured on every evaluation with the three Housing Benefit caseload rows; renew or retire on the next spine that carries the SPI repair. Re-measured on arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0): still outside the 25 percent bound at design weights, and short at its calibrated weights, unbound. The row rests in part on households of the SPI support channel, so no new figure is given (SN 9422).", "tracking": "microcosm#867", "approved_by": "juaristi22", - "adjudication": "microcosm#882 (the 2026-09-16 status comment, issuecomment-5694598278, whose next-steps list this repair works, and the repairs plan María approved on 2026-09-16 with her population ruling on the U8 take-up entry; approver as author per the register convention). Expiry 2026-12-08 aligns the whole UC-repair tranche with the zero-band clock already on the register (microcosm#877), so the next spine re-adjudicates them together. Receipts: experiments/882-uc-repairs-receipts.md (R1 and R5, tools/diagnose_uk_legacy_benefits.py on spine-q, the Q50f candidate, FRS 2024-25 and the twins).", - "approved_on": "2026-09-16", - "expires_on": "2026-12-08" + "adjudication": "microcosm#882 (the 2026-09-16 status comment, issuecomment-5694598278, whose next-steps list this repair works, and the repairs plan María approved on 2026-09-16 with her population ruling on the U8 take-up entry; approver as author per the register convention). Expiry 2026-12-08 aligns the whole UC-repair tranche with the zero-band clock already on the register (microcosm#877), so the next spine re-adjudicates them together. Receipts: experiments/882-uc-repairs-receipts.md (R1 and R5, tools/diagnose_uk_legacy_benefits.py on spine-q, the Q50f candidate, FRS 2024-25 and the twins). Renewed on 2026-10-24 to 2027-01-24 by juaristi22 on arm 2 of the next policyengine-uk bump, pending the Housing Benefit and JSA PR (microcosm#867, microcosm#869).", + "approved_on": "2026-10-24", + "expires_on": "2027-01-24" }, { "name": "slc.borrowers.plan_2_liable", - "reason": "The row binds SLC's forecast stock of plan-2 borrowers in England liable to repay in academic year 2024/25 (AY2024/25; Student loan forecasts for England, Table 6a: 8.94M), the stock the student_loans stage tops up to (microcosm#868). The stage exhausts its top-up pool at 41 percent of that stock: the 18 October spine at d0f0fafec carries 3.70M at design weights (-59 percent), and the 19 October national file (810315ac2), with the row held out, 3.54M at calibrated weights (-60 percent). Unreachable by reweighting within the stretch bound: student-loan borrower coverage in the frame, a frame-side gap, not a weight question; while bound it pulls the joint solve toward weight concentration (housing benefit alone triples the max/median ratio under grain_equal). Window to the November PR's renewals: correct the spine or re-adjudicate.", + "reason": "The row binds SLC's forecast stock of plan-2 borrowers in England liable to repay in academic year 2024/25 (AY2024/25; Student loan forecasts for England, Table 6a: 8.94M), the stock the student_loans stage tops up to (microcosm#868). The stage exhausts its top-up pool at 41 percent of that stock: the 18 October spine at d0f0fafec carries 3.70M at design weights (-59 percent), and the 19 October national file (810315ac2), with the row held out, 3.54M at calibrated weights (-60 percent). Arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine) measured it again, held out, at its calibrated weights: the gap stands. Unreachable by reweighting within the stretch bound: student-loan borrower coverage in the frame, a frame-side gap, not a weight question; while bound it pulls the joint solve toward weight concentration (housing benefit alone triples the max/median ratio under grain_equal). Window to the next re-adjudication: correct the spine or re-adjudicate.", "tracking": "microcosm#1278", "approved_by": "juaristi22", - "adjudication": "microcosm#762 (A16, ruling 2026-09-03; receipts R8-R10 in experiments/762-uk-rowwise-candidate-receipts.md); renewed one month on 2026-10-02 by juaristi22 in session (microcosm#1063 stack): the plan-2 borrower coverage gap stays with microcosm#868 and is not corrected by the spine follow-ups; tracking moved to microcosm#1278 on 2026-10-17 by juaristi22 after microcosm#868 closed; renewed on 2026-10-20 to 2026-11-26 by juaristi22 (María's ruling of 2026-10-20 on the pre-Budget PR, microcosm#1278: renew rather than make the row a diagnostic, to the November PR's renewal date). The reason is restated on the AY2024/25 SLC figure the row has bound since microcosm#868 (it quoted AY2025/26), with the 18 October spine's student_loans stage receipt and the 19 October national file.", - "approved_on": "2026-10-20", - "expires_on": "2026-11-26" + "adjudication": "microcosm#762 (A16, ruling 2026-09-03; receipts R8-R10 in experiments/762-uk-rowwise-candidate-receipts.md); renewed one month on 2026-10-02 by juaristi22 in session (microcosm#1063 stack): the plan-2 borrower coverage gap stays with microcosm#868 and is not corrected by the spine follow-ups; tracking moved to microcosm#1278 on 2026-10-17 by juaristi22 after microcosm#868 closed; renewed on 2026-10-20 to 2026-11-26 by juaristi22 (María's ruling of 2026-10-20 on the pre-Budget PR, microcosm#1278: renew rather than make the row a diagnostic, to the November PR's renewal date). The reason is restated on the AY2024/25 SLC figure the row has bound since microcosm#868 (it quoted AY2025/26), with the 18 October spine's student_loans stage receipt and the 19 October national file; renewed on 2026-10-23 to 2027-01-23 by juaristi22 on arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine): the plan-2 coverage gap stands, measured again on that arm", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "slc.borrowers.plan_2_above_threshold", - "reason": "The row binds SLC's forecast of plan-2 borrowers in England earning above the repayment threshold in academic year 2024/25 (AY2024/25; Student loan forecasts for England, Table 6a: 3.985M), counted as England plan-2 borrowers with positive repayments. The 18 October spine at d0f0fafec carries 1.56M at design weights (-61 percent), and the 19 October national file (810315ac2), with the row held out, 1.51M at calibrated weights (-62 percent). Unreachable by reweighting within the stretch bound: student-loan borrower coverage in the frame, a frame-side gap, not a weight question; while bound it pulls the joint solve toward weight concentration (housing benefit alone triples the max/median ratio under grain_equal). Window to the November PR's renewals: correct the spine or re-adjudicate.", + "reason": "The row binds SLC's forecast of plan-2 borrowers in England earning above the repayment threshold in academic year 2024/25 (AY2024/25; Student loan forecasts for England, Table 6a: 3.985M), counted as England plan-2 borrowers with positive repayments. The 18 October spine at d0f0fafec carries 1.56M at design weights (-61 percent), and the 19 October national file (810315ac2), with the row held out, 1.51M at calibrated weights (-62 percent). Arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine) measured it again, held out, at its calibrated weights: the gap stands. Unreachable by reweighting within the stretch bound: student-loan borrower coverage in the frame, a frame-side gap, not a weight question; while bound it pulls the joint solve toward weight concentration (housing benefit alone triples the max/median ratio under grain_equal). Window to the next re-adjudication: correct the spine or re-adjudicate.", "tracking": "microcosm#1278", "approved_by": "juaristi22", - "adjudication": "microcosm#762 (A16, ruling 2026-09-03; receipts R8-R10 in experiments/762-uk-rowwise-candidate-receipts.md); renewed one month on 2026-10-02 by juaristi22 in session (microcosm#1063 stack): the plan-2 borrower coverage gap stays with microcosm#868 and is not corrected by the spine follow-ups; tracking moved to microcosm#1278 on 2026-10-17 by juaristi22 after microcosm#868 closed; renewed on 2026-10-20 to 2026-11-26 by juaristi22 (María's ruling of 2026-10-20 on the pre-Budget PR, microcosm#1278: renew rather than make the row a diagnostic, to the November PR's renewal date). The reason is restated on the AY2024/25 SLC figure the row has bound since microcosm#868 (it quoted AY2025/26), with the 18 October spine's student_loans stage receipt and the 19 October national file.", - "approved_on": "2026-10-20", - "expires_on": "2026-11-26" + "adjudication": "microcosm#762 (A16, ruling 2026-09-03; receipts R8-R10 in experiments/762-uk-rowwise-candidate-receipts.md); renewed one month on 2026-10-02 by juaristi22 in session (microcosm#1063 stack): the plan-2 borrower coverage gap stays with microcosm#868 and is not corrected by the spine follow-ups; tracking moved to microcosm#1278 on 2026-10-17 by juaristi22 after microcosm#868 closed; renewed on 2026-10-20 to 2026-11-26 by juaristi22 (María's ruling of 2026-10-20 on the pre-Budget PR, microcosm#1278: renew rather than make the row a diagnostic, to the November PR's renewal date). The reason is restated on the AY2024/25 SLC figure the row has bound since microcosm#868 (it quoted AY2025/26), with the 18 October spine's student_loans stage receipt and the 19 October national file; renewed on 2026-10-23 to 2027-01-23 by juaristi22 on arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine): the plan-2 coverage gap stands, measured again on that arm", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "dwp.jsa_claimants", - "reason": "Frame-side gap, not a weight question, decomposed on 2026-09-16. DWP's 71,000 claimants at August 2025 is New Style (contributory) JSA after the August 2025 methodology change that removed inactive claims. FRS 2024-25 reports 63k JSA benefit units at design weights (37k contributory, 23k income-based; 27 records), so the source reproduces the DWP count. The spine carries 178k contributory and 92k income-based reporters (GB, design weights) because the SPI support channel re-imputes benefit receipt onto its synthetic households: 161k of the 181k contributory reporters sit there. The stage-6 legacy_jobseeker_proxy (967k) is consumed by nothing. On the Q50f candidate the row measures 34k against 71,000 (-52 percent) after the solve pares the reporters to fit the OBR JSA spend line. The repair is the SPI channel's benefit-receipt fill (#840/#145), not a JSA rule; the income-based reporters are a legacy-scheme residual DWP no longer counts. Renew or retire on the next spine that carries the SPI repair.", + "reason": "Frame-side gap, not a weight question, decomposed on 2026-09-16. DWP's 71,000 claimants at August 2025 is New Style (contributory) JSA after the August 2025 methodology change that removed inactive claims. FRS 2024-25 reports 63k JSA benefit units at design weights (37k contributory, 23k income-based; 27 records), so the source reproduces the DWP count. The spine carries 178k contributory and 92k income-based reporters (GB, design weights) because the SPI support channel re-imputes benefit receipt onto its synthetic households: 161k of the 181k contributory reporters sit there. The stage-6 legacy_jobseeker_proxy (967k) is consumed by nothing. On the Q50f candidate the row measures 34k against 71,000 (-52 percent) after the solve pares the reporters to fit the OBR JSA spend line. The repair is the SPI channel's benefit-receipt fill (#840/#145), not a JSA rule; the income-based reporters are a legacy-scheme residual DWP no longer counts. Renew or retire on the next spine that carries the SPI repair. Re-measured on arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0): 73 percent short at design weights and 29 percent short at its calibrated weights, unbound; every claimant the row counts there is in an FRS household.", "tracking": "microcosm#869", "approved_by": "juaristi22", - "adjudication": "microcosm#882 (the 2026-09-16 status comment, issuecomment-5694598278, whose next-steps list this repair works, and the repairs plan María approved on 2026-09-16 with her population ruling on the U8 take-up entry; approver as author per the register convention). Expiry 2026-12-08 aligns the whole UC-repair tranche with the zero-band clock already on the register (microcosm#877), so the next spine re-adjudicates them together. Receipts: experiments/882-uc-repairs-receipts.md (R1 and R5, tools/diagnose_uk_legacy_benefits.py on spine-q, the Q50f candidate, FRS 2024-25 and the twins).", - "approved_on": "2026-09-16", - "expires_on": "2026-12-08" - }, - { - "name": "mhclg.council_tax_stock.band_h@E12000001", - "reason": "Spine support absent for band H in the North East region-tier cell: the spine carries no council-tax band-H household there (spine-m held 170 band-H households from 49 raw FRS households, none in the North East, North West or Yorkshire and the Humber; microcosm#762 A14), so the cell measures 0 against the MHCLG taxbase stock (-100% on the #905 spine-q comparison against the VOA row, docs/evidence/uk-region-tier-905/calibration-comparison.json; microcosm#929 re-based the family on the taxbase return and the cell still has no support) while the other 78 composed MHCLG region cells fit within 3.7% on the #929 measurement (experiments/929-council-tax-taxbase-receipts.md Part D). The same class is signed for the local band-H family under council_tax_band_h_spine_support_absent; the cell binds when a spine vintage carries broader band-H support.", - "tracking": "microcosm#796", - "approved_by": "juaristi22", - "adjudication": "microcosm#905 (region-tier activation; ruling by María 2026-09-14 on PR #906, the #762 A14 spine-support class)", - "approved_on": "2026-09-14", - "expires_on": "2026-11-26" - }, - { - "name": "mhclg.council_tax_stock.band_h@E12000002", - "reason": "Spine support absent for band H in the North West region-tier cell: the spine carries no council-tax band-H household there (spine-m held 170 band-H households from 49 raw FRS households, none in the North East, North West or Yorkshire and the Humber; microcosm#762 A14), so the cell measures 0 against the MHCLG taxbase stock (-100% on the #905 spine-q comparison against the VOA row, docs/evidence/uk-region-tier-905/calibration-comparison.json; microcosm#929 re-based the family on the taxbase return and the cell still has no support) while the other 78 composed MHCLG region cells fit within 3.7% on the #929 measurement (experiments/929-council-tax-taxbase-receipts.md Part D). The same class is signed for the local band-H family under council_tax_band_h_spine_support_absent; the cell binds when a spine vintage carries broader band-H support.", - "tracking": "microcosm#796", - "approved_by": "juaristi22", - "adjudication": "microcosm#905 (region-tier activation; ruling by María 2026-09-14 on PR #906, the #762 A14 spine-support class)", - "approved_on": "2026-09-14", - "expires_on": "2026-11-26" - }, - { - "name": "mhclg.council_tax_stock.band_h@E12000003", - "reason": "Spine support absent for band H in the Yorkshire and The Humber region-tier cell: the spine carries no council-tax band-H household there (spine-m held 170 band-H households from 49 raw FRS households, none in the North East, North West or Yorkshire and the Humber; microcosm#762 A14), so the cell measures 0 against the MHCLG taxbase stock (-100% on the #905 spine-q comparison against the VOA row, docs/evidence/uk-region-tier-905/calibration-comparison.json; microcosm#929 re-based the family on the taxbase return and the cell still has no support) while the other 78 composed MHCLG region cells fit within 3.7% on the #929 measurement (experiments/929-council-tax-taxbase-receipts.md Part D). The same class is signed for the local band-H family under council_tax_band_h_spine_support_absent; the cell binds when a spine vintage carries broader band-H support.", - "tracking": "microcosm#796", - "approved_by": "juaristi22", - "adjudication": "microcosm#905 (region-tier activation; ruling by María 2026-09-14 on PR #906, the #762 A14 spine-support class)", - "approved_on": "2026-09-14", - "expires_on": "2026-11-26" + "adjudication": "microcosm#882 (the 2026-09-16 status comment, issuecomment-5694598278, whose next-steps list this repair works, and the repairs plan María approved on 2026-09-16 with her population ruling on the U8 take-up entry; approver as author per the register convention). Expiry 2026-12-08 aligns the whole UC-repair tranche with the zero-band clock already on the register (microcosm#877), so the next spine re-adjudicates them together. Receipts: experiments/882-uc-repairs-receipts.md (R1 and R5, tools/diagnose_uk_legacy_benefits.py on spine-q, the Q50f candidate, FRS 2024-25 and the twins). Renewed on 2026-10-24 to 2027-01-24 by juaristi22 on arm 2 of the next policyengine-uk bump, pending the Housing Benefit and JSA PR (microcosm#867, microcosm#869).", + "approved_on": "2026-10-24", + "expires_on": "2027-01-24" }, { "name": "dwp.uc.households_housing_element", - "reason": "Structural bias, not a weight question: DWP's any-tenure housing-entitlement count is social plus private plus 'Other or unknown' tenure, and the model has no other/unknown tenure (uc_housing_costs_element pays only council, housing-association and private renters), so the model's any-tenure count is identically the social plus private rows, which are bound and fit; the row overstates the reachable total by the other/unknown cell, 112,518 of 4,037,650 in calendar 2025 (2.8 percent; the published any-tenure mean, which the three tenure cells reproduce to the unit). Fitting all three housing rows would ask the solver to over-fill the tenure rows by that amount. Measured on every evaluation as the housing-element caseload diagnostic (Q50f -0.8 percent, D2 +0.6 percent at the baseline; v20 -2.8 percent unbound, the structural gap itself, docs/evidence/uk-a16-v20/).", + "reason": "Structural bias, not a weight question: DWP's any-tenure housing-entitlement count is social plus private plus 'Other or unknown' tenure, and the model has no other/unknown tenure (uc_housing_costs_element pays only council, housing-association and private renters), so the model's any-tenure count is identically the social plus private rows, which are bound and fit; the row overstates the reachable total by the other/unknown cell, 112,518 of 4,037,650 in calendar 2025 (2.8 percent; the published any-tenure mean, which the three tenure cells reproduce to the unit). Fitting all three housing rows would ask the solver to over-fill the tenure rows by that amount. Measured on every evaluation as the housing-element caseload diagnostic (Q50f -0.8 percent, D2 +0.6 percent at the baseline; v20 -2.8 percent unbound, the structural gap itself, docs/evidence/uk-a16-v20/). Arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine) reads it, unbound at its calibrated weights, at the structural gap itself.", "tracking": "microcosm#882", "approved_by": "juaristi22", - "adjudication": "microcosm#882 (element sizing at the 10 September 2026 baseline, docs/uk-uc-baseline-2026-09-10.md; María's sign-off in review of microcosm#921 on 2026-09-15, setting the one-month window); renewed one month on 2026-10-14 by juaristi22 in session (microcosm#1124 local release): the model still has no other/unknown tenure, so the any-tenure count stays structurally above the bound tenure rows", - "approved_on": "2026-10-14", - "expires_on": "2026-11-14" + "adjudication": "microcosm#882 (element sizing at the 10 September 2026 baseline, docs/uk-uc-baseline-2026-09-10.md; María's sign-off in review of microcosm#921 on 2026-09-15, setting the one-month window); renewed one month on 2026-10-14 by juaristi22 in session (microcosm#1124 local release): the model still has no other/unknown tenure, so the any-tenure count stays structurally above the bound tenure rows; renewed on 2026-10-23 to 2027-01-23 by juaristi22 on arm 1 of the next policyengine-uk bump (calibrate-only on #1333's 2.145.0 spine): the model still has no other/unknown tenure", + "approved_on": "2026-10-23", + "expires_on": "2027-01-23" }, { "name": "dwp.hb.households", - "reason": "Housing Benefit caseload diagnostic (all client types and tenures, calendar-2025 mean of the Stat-Xplore Total items), measured on every evaluation but held out of the objective (#882, microcosm#867): the frame cannot reach the DWP caseload for the mechanisms signed on obr.housing_benefit (SPI-channel reporters in owner-occupied synthetic households, reporters drawn into Universal Credit, head-only rent, the means test). Q50f pays 235k GB units against a calendar-2025 published mean near 1.70m (-86 percent). Fitting it would move weight onto the few reporting units the engine pays. Retire when the row sits inside the 25 percent bound at the baseline.", + "reason": "Housing Benefit caseload diagnostic (all client types and tenures, calendar-2025 mean of the Stat-Xplore Total items), measured on every evaluation but held out of the objective (#882, microcosm#867): the frame cannot reach the DWP caseload for the mechanisms signed on obr.housing_benefit (SPI-channel reporters in owner-occupied synthetic households, reporters drawn into Universal Credit, head-only rent, the means test). Q50f pays 235k GB units against a calendar-2025 published mean near 1.70m (-86 percent). Fitting it would move weight onto the few reporting units the engine pays. Retire when the row sits inside the 25 percent bound at the baseline. Re-measured on arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0): still outside the 25 percent bound at design weights, and short at its calibrated weights, unbound. The row rests in part on households of the SPI support channel, so no new figure is given (SN 9422).", "tracking": "microcosm#867", "approved_by": "juaristi22", - "adjudication": "microcosm#882 (the 2026-09-16 status comment, issuecomment-5694598278, whose next-steps list this repair works, and the repairs plan María approved on 2026-09-16 with her population ruling on the U8 take-up entry; approver as author per the register convention). Expiry 2026-12-08 aligns the whole UC-repair tranche with the zero-band clock already on the register (microcosm#877), so the next spine re-adjudicates them together. Receipts: experiments/882-uc-repairs-receipts.md (R1 and R5, tools/diagnose_uk_legacy_benefits.py on spine-q, the Q50f candidate, FRS 2024-25 and the twins).", - "approved_on": "2026-09-16", - "expires_on": "2026-12-08" + "adjudication": "microcosm#882 (the 2026-09-16 status comment, issuecomment-5694598278, whose next-steps list this repair works, and the repairs plan María approved on 2026-09-16 with her population ruling on the U8 take-up entry; approver as author per the register convention). Expiry 2026-12-08 aligns the whole UC-repair tranche with the zero-band clock already on the register (microcosm#877), so the next spine re-adjudicates them together. Receipts: experiments/882-uc-repairs-receipts.md (R1 and R5, tools/diagnose_uk_legacy_benefits.py on spine-q, the Q50f candidate, FRS 2024-25 and the twins). Renewed on 2026-10-24 to 2027-01-24 by juaristi22 on arm 2 of the next policyengine-uk bump, pending the Housing Benefit and JSA PR (microcosm#867, microcosm#869).", + "approved_on": "2026-10-24", + "expires_on": "2027-01-24" }, { "name": "dwp.hb.households_social_rented", - "reason": "Housing Benefit caseload diagnostic (social rented sector), measured on every evaluation but held out of the objective (#882, microcosm#867): the frame cannot reach the DWP caseload for the mechanisms signed on obr.housing_benefit (SPI-channel reporters in owner-occupied synthetic households, reporters drawn into Universal Credit, head-only rent, the means test). Q50f pays 155k social-rented units against a calendar-2025 published mean near 1.39m. Fitting it would move weight onto the few reporting units the engine pays. Retire when the row sits inside the 25 percent bound at the baseline.", + "reason": "Housing Benefit caseload diagnostic (social rented sector), measured on every evaluation but held out of the objective (#882, microcosm#867): the frame cannot reach the DWP caseload for the mechanisms signed on obr.housing_benefit (SPI-channel reporters in owner-occupied synthetic households, reporters drawn into Universal Credit, head-only rent, the means test). Q50f pays 155k social-rented units against a calendar-2025 published mean near 1.39m. Fitting it would move weight onto the few reporting units the engine pays. Retire when the row sits inside the 25 percent bound at the baseline. Re-measured on arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0): still outside the 25 percent bound at design weights, and short at its calibrated weights, unbound. The row rests in part on households of the SPI support channel, so no new figure is given (SN 9422).", "tracking": "microcosm#867", "approved_by": "juaristi22", - "adjudication": "microcosm#882 (the 2026-09-16 status comment, issuecomment-5694598278, whose next-steps list this repair works, and the repairs plan María approved on 2026-09-16 with her population ruling on the U8 take-up entry; approver as author per the register convention). Expiry 2026-12-08 aligns the whole UC-repair tranche with the zero-band clock already on the register (microcosm#877), so the next spine re-adjudicates them together. Receipts: experiments/882-uc-repairs-receipts.md (R1 and R5, tools/diagnose_uk_legacy_benefits.py on spine-q, the Q50f candidate, FRS 2024-25 and the twins).", - "approved_on": "2026-09-16", - "expires_on": "2026-12-08" + "adjudication": "microcosm#882 (the 2026-09-16 status comment, issuecomment-5694598278, whose next-steps list this repair works, and the repairs plan María approved on 2026-09-16 with her population ruling on the U8 take-up entry; approver as author per the register convention). Expiry 2026-12-08 aligns the whole UC-repair tranche with the zero-band clock already on the register (microcosm#877), so the next spine re-adjudicates them together. Receipts: experiments/882-uc-repairs-receipts.md (R1 and R5, tools/diagnose_uk_legacy_benefits.py on spine-q, the Q50f candidate, FRS 2024-25 and the twins). Renewed on 2026-10-24 to 2027-01-24 by juaristi22 on arm 2 of the next policyengine-uk bump, pending the Housing Benefit and JSA PR (microcosm#867, microcosm#869).", + "approved_on": "2026-10-24", + "expires_on": "2027-01-24" }, { "name": "dwp.hb.households_private_rented", - "reason": "Housing Benefit caseload diagnostic (private rented sector), measured on every evaluation but held out of the objective (#882, microcosm#867): the frame cannot reach the DWP caseload for the mechanisms signed on obr.housing_benefit (SPI-channel reporters in owner-occupied synthetic households, reporters drawn into Universal Credit, head-only rent, the means test). Q50f pays 81k private-rented units against a calendar-2025 published mean near 0.31m. Fitting it would move weight onto the few reporting units the engine pays. Retire when the row sits inside the 25 percent bound at the baseline.", + "reason": "Housing Benefit caseload diagnostic (private rented sector), measured on every evaluation but held out of the objective (#882, microcosm#867): the frame cannot reach the DWP caseload for the mechanisms signed on obr.housing_benefit (SPI-channel reporters in owner-occupied synthetic households, reporters drawn into Universal Credit, head-only rent, the means test). Q50f pays 81k private-rented units against a calendar-2025 published mean near 0.31m. Fitting it would move weight onto the few reporting units the engine pays. Retire when the row sits inside the 25 percent bound at the baseline. Re-measured on arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0): still outside the 25 percent bound at design weights, and short at its calibrated weights, unbound. The row rests in part on households of the SPI support channel, so no new figure is given (SN 9422).", "tracking": "microcosm#867", "approved_by": "juaristi22", - "adjudication": "microcosm#882 (the 2026-09-16 status comment, issuecomment-5694598278, whose next-steps list this repair works, and the repairs plan María approved on 2026-09-16 with her population ruling on the U8 take-up entry; approver as author per the register convention). Expiry 2026-12-08 aligns the whole UC-repair tranche with the zero-band clock already on the register (microcosm#877), so the next spine re-adjudicates them together. Receipts: experiments/882-uc-repairs-receipts.md (R1 and R5, tools/diagnose_uk_legacy_benefits.py on spine-q, the Q50f candidate, FRS 2024-25 and the twins).", - "approved_on": "2026-09-16", - "expires_on": "2026-12-08" + "adjudication": "microcosm#882 (the 2026-09-16 status comment, issuecomment-5694598278, whose next-steps list this repair works, and the repairs plan María approved on 2026-09-16 with her population ruling on the U8 take-up entry; approver as author per the register convention). Expiry 2026-12-08 aligns the whole UC-repair tranche with the zero-band clock already on the register (microcosm#877), so the next spine re-adjudicates them together. Receipts: experiments/882-uc-repairs-receipts.md (R1 and R5, tools/diagnose_uk_legacy_benefits.py on spine-q, the Q50f candidate, FRS 2024-25 and the twins). Renewed on 2026-10-24 to 2027-01-24 by juaristi22 on arm 2 of the next policyengine-uk bump, pending the Housing Benefit and JSA PR (microcosm#867, microcosm#869).", + "approved_on": "2026-10-24", + "expires_on": "2027-01-24" }, { - "name": "obr.vat", - "reason": "Level set by an engine factor, not the weights: policyengine-uk's vat divides household VAT by gov.simulation.microdata_vat_coverage (0.38, a constant since January 2023 with no recorded derivation; policyengine-uk#1996), which folds the household share of VAT receipts (about 70 percent per OBR and the HMRC VAT gap estimates) together with the survey's capture of household spending. The frame's raw household VAT is about 46 percent of the OBR receipts, so the row reads +24.7 percent at design weights and +24.1 percent calibrated on microcosm#1121's head calibration (policyengine-uk 2.122.2), against the 25 percent bound. On the 2026-09-30 national problem (1,090 rows, before this stage set any level) the calibration with the four consumption-tax rows bound left total consumption GBP 55bn (5 percent) below a re-solve with the four consumption-tax rows masked together (GBP 982bn against GBP 1,037bn). In that re-solve the other 1,086 rows fitted no worse (98.5 against 98.4 percent within 10 percent, none past 25 percent against one). Measured on every evaluation with tools/diagnose_uk_consumption_taxes.py; rebind when a locked policyengine-uk splits the factor into the published household share and a declared survey capture and the row fits.", + "name": "ons.household_electricity_expenditure", + "reason": "Published-source residual, not a weight question: the lcfs_consumption stage sets electricity spend from the DESNZ Energy Trends domestic volume over the four quarters of calendar 2024 at QEP calendar-2024 average prices paid (the level the energy_rake gate checks), and ONS Consumer Trends 04.5.1 sits below it on every aligned basis. For calendar 2024 it is GBP 26.10bn against the stage's GBP 29.52bn on microcosm#1121's head spine (0.88). For calendar 2025 it is GBP 26.52bn against GBP 29.60bn for Energy Trends volume times QEP unit and fixed costs (0.90), and 1.11 times unit cost alone; meters against households explains about 2 percent. On the 2026-09-30 national problem the calibration took electricity from GBP 29.11bn at design weights to GBP 26.54bn (8.8 percent; 93.0 to 82.9 TWh, 10.9 percent). In a re-solve with the four consumption-tax rows masked together it stayed at GBP 28.70bn, and the other 1,086 rows fitted no worse. Measured on every evaluation with tools/diagnose_uk_consumption_taxes.py; retire if the reconciliation microcosm#1278 tracks finds a concept difference to bridge. On arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0, with the liquid and solid fuels drawn), held out, electricity spend stays within the consumption drift block's 2 percent flag of its design-weight level; the frame's energy totals rest in part on households of the SPI support channel, so no new figure is given (SN 9422).", "tracking": "microcosm#1278", "approved_by": "juaristi22", - "adjudication": "María's ruling of 2026-10-08 on the VAT, road fuel and domestic energy plan (microcosm#1113, microcosm#1123 item 3), decision D3: hold the row out until the engine factor is split. The reason's figures were restated on 2026-10-11 after her review of PolicyEngine/microcosm#1167, which found bases mixed. Receipts: experiments/1113-consumption-tax-levels-receipts.md (the masked re-solve of the 2026-09-30 problem and microcosm#1121's head calibration). Tracking moved from policyengine-uk#1996 to microcosm#1278 on 2026-10-20: policyengine-uk#2187, released in 2.135.7, closed #1996, and main locks 2.134.4, so the rebind waits on a lock bump past 2.135.7, after the Budget.", + "adjudication": "María's ruling of 2026-10-08 on the VAT, road fuel and domestic energy plan (microcosm#1113, microcosm#1123 item 3), decision D1: DESNZ volume at QEP prices stays the level and the ONS rows become diagnostics. The reason was restated on the calendar-2024 basis on 2026-10-10 with her approval, after her ruling of 2026-10-09 put every LCFS spend column at calendar-2024 prices. Its figures were restated on 2026-10-11 after her review of PolicyEngine/microcosm#1167, which found bases mixed. Receipts: experiments/1113-consumption-tax-levels-receipts.md.", "approved_on": "2026-10-08", "expires_on": "2027-01-08" }, { - "name": "ons.household_electricity_expenditure", - "reason": "Published-source residual, not a weight question: the lcfs_consumption stage sets electricity spend from the DESNZ Energy Trends domestic volume over the four quarters of calendar 2024 at QEP calendar-2024 average prices paid (the level the energy_rake gate checks), and ONS Consumer Trends 04.5.1 sits below it on every aligned basis. For calendar 2024 it is GBP 26.10bn against the stage's GBP 29.52bn on microcosm#1121's head spine (0.88). For calendar 2025 it is GBP 26.52bn against GBP 29.60bn for Energy Trends volume times QEP unit and fixed costs (0.90), and 1.11 times unit cost alone; meters against households explains about 2 percent. On the 2026-09-30 national problem the calibration took electricity from GBP 29.11bn at design weights to GBP 26.54bn (8.8 percent; 93.0 to 82.9 TWh, 10.9 percent). In a re-solve with the four consumption-tax rows masked together it stayed at GBP 28.70bn, and the other 1,086 rows fitted no worse. Measured on every evaluation with tools/diagnose_uk_consumption_taxes.py; retire if the reconciliation microcosm#1278 tracks finds a concept difference to bridge.", + "name": "ons.household_gas_expenditure", + "reason": "Published-source residual, not a weight question: the lcfs_consumption stage sets gas spend from the DESNZ Energy Trends domestic volume over the four quarters of calendar 2024 at QEP calendar-2024 average prices paid over the published gas-connected share, and ONS Consumer Trends 04.5.2 sits below it on every aligned basis. For calendar 2024 it is GBP 14.64bn against the stage's GBP 19.23bn on microcosm#1121's head spine (0.76). For calendar 2025 it is GBP 15.34bn against GBP 18.94bn for Energy Trends volume times QEP unit and fixed costs (0.81), and below unit cost alone (0.955). On the 2026-09-30 national problem the calibration took gas from GBP 18.97bn at design weights to GBP 15.35bn (19.1 percent; 260.1 to 205.2 TWh, 21.1 percent) and the gas-connected share from 84.5 to 78.9 percent, against the DESNZ meter share the stage imposes. In a re-solve with the four consumption-tax rows masked together gas stayed at GBP 18.97bn and the share at 84.6 percent, and the other 1,086 rows fitted no worse. Measured on every evaluation with tools/diagnose_uk_consumption_taxes.py; retire if the reconciliation microcosm#1278 tracks finds a concept difference to bridge. On arm 2 of the next policyengine-uk bump (policyengine-uk 2.151.0, with the liquid and solid fuels drawn), held out, gas spend and the gas-connected share stay within the consumption drift block's flags (2 percent for a total, half a point for a share) of their design-weight levels; the frame's energy totals rest in part on households of the SPI support channel, so no new figure is given (SN 9422).", "tracking": "microcosm#1278", "approved_by": "juaristi22", "adjudication": "María's ruling of 2026-10-08 on the VAT, road fuel and domestic energy plan (microcosm#1113, microcosm#1123 item 3), decision D1: DESNZ volume at QEP prices stays the level and the ONS rows become diagnostics. The reason was restated on the calendar-2024 basis on 2026-10-10 with her approval, after her ruling of 2026-10-09 put every LCFS spend column at calendar-2024 prices. Its figures were restated on 2026-10-11 after her review of PolicyEngine/microcosm#1167, which found bases mixed. Receipts: experiments/1113-consumption-tax-levels-receipts.md.", @@ -403,13 +349,13 @@ "expires_on": "2027-01-08" }, { - "name": "ons.household_gas_expenditure", - "reason": "Published-source residual, not a weight question: the lcfs_consumption stage sets gas spend from the DESNZ Energy Trends domestic volume over the four quarters of calendar 2024 at QEP calendar-2024 average prices paid over the published gas-connected share, and ONS Consumer Trends 04.5.2 sits below it on every aligned basis. For calendar 2024 it is GBP 14.64bn against the stage's GBP 19.23bn on microcosm#1121's head spine (0.76). For calendar 2025 it is GBP 15.34bn against GBP 18.94bn for Energy Trends volume times QEP unit and fixed costs (0.81), and below unit cost alone (0.955). On the 2026-09-30 national problem the calibration took gas from GBP 18.97bn at design weights to GBP 15.35bn (19.1 percent; 260.1 to 205.2 TWh, 21.1 percent) and the gas-connected share from 84.5 to 78.9 percent, against the DESNZ meter share the stage imposes. In a re-solve with the four consumption-tax rows masked together gas stayed at GBP 18.97bn and the share at 84.6 percent, and the other 1,086 rows fitted no worse. Measured on every evaluation with tools/diagnose_uk_consumption_taxes.py; retire if the reconciliation microcosm#1278 tracks finds a concept difference to bridge.", + "name": "obr.vat", + "reason": "Engine-factor circularity, not a weight question: policyengine-uk's gov.simulation.vat.survey_consumption_coverage (0.67 since policyengine-uk#2187, released in 2.135.7) was derived on the certified Microcosm UK 2024-25 national release (5c6b3f68) so that its VAT meets OBR's 2024-25 receipts, so binding obr.vat mostly pulls the consumption weights back toward that release, after the next policyengine-uk bump changes the consumption base (the heating fuels and the division levelling, microcosm#1278). OBR's receipts also include VAT on private school fees from 1 January 2025, which policyengine-uk's current-law vat leaves out until policyengine-uk#2319. Measured on every evaluation as a diagnostic, with tools/diagnose_uk_consumption_taxes.py; rebind when policyengine-uk re-derives the factor on a file that does not bind the row.", "tracking": "microcosm#1278", "approved_by": "juaristi22", - "adjudication": "María's ruling of 2026-10-08 on the VAT, road fuel and domestic energy plan (microcosm#1113, microcosm#1123 item 3), decision D1: DESNZ volume at QEP prices stays the level and the ONS rows become diagnostics. The reason was restated on the calendar-2024 basis on 2026-10-10 with her approval, after her ruling of 2026-10-09 put every LCFS spend column at calendar-2024 prices. Its figures were restated on 2026-10-11 after her review of PolicyEngine/microcosm#1167, which found bases mixed. Receipts: experiments/1113-consumption-tax-levels-receipts.md.", - "approved_on": "2026-10-08", - "expires_on": "2027-01-08" + "adjudication": "María's ruling of 2026-10-24 on Vahid's review of microcosm#1383 (item 10): hold the row as a diagnostic until policyengine-uk re-derives the coverage factor on a file that does not bind it. Her ruling D3 of 2026-10-08 had bound it once a locked policyengine-uk replaced the constant survey-coverage factor, which policyengine-uk#2187 did.", + "approved_on": "2026-10-24", + "expires_on": "2027-01-24" }, { "name": "obr.fuel_duties_cars", @@ -431,10 +377,10 @@ }, { "name": "orr.rail_government_support", - "reason": "Basis, not a weight question: the row binds ORR table 7270's broad total of government support to the Great Britain railway, and the frame's household rail subsidy (rail_subsidy_spending, the engine's rail_usage times gov.dft.rail.fare_index) sits far below it at design weights. Bound, the solve closes the gap by moving weight onto rail-using households, which also moves untargeted columns that correlate with rail use. Whether the household subsidy is measured against table 7270's broad total or table 7271's narrower by-source series is an open ruling (microcosm#890 G, microcosm#736). Held out of the objective as a measured diagnostic and never fitted; rebind on that ruling, against the narrower series in the feed or a column scaled as uk-data scales it.", + "reason": "Basis, not a weight question: the row binds ORR table 7270's broad total of government support to the Great Britain railway, and the frame's household rail subsidy (rail_subsidy_spending, the engine's rail_usage times gov.dft.rail.fare_index) sits far below it at design weights. Bound, the solve closes the gap by moving weight onto rail-using households, which also moves untargeted columns that correlate with rail use. Whether the household subsidy is measured against table 7270's broad total or table 7271's narrower by-source series is an open ruling (microcosm#890 G, microcosm#736). Held out of the objective as a measured diagnostic and never fitted; rebind on that ruling, against the narrower series in the feed or a column scaled as uk-data scales it. Arm 2c of the next policyengine-uk bump (calibrate-only on arm 2's policyengine-uk 2.151.0 spine) bound it on table 7271's net operational support from all sources, the default the plan of 2026-10-22 set: the row reached its target, but the weights concentrated past the release bound (uk_weight_ratio failed) and the effective sample size fell by about a tenth, so the row stays held out on either basis.", "tracking": "microcosm#1278", "approved_by": "juaristi22", - "adjudication": "María's ruling of 2026-10-20 on the pre-Budget PR (microcosm#1278): hold the row out only if a national arm with it held out, run beside the calibration-period fix's arm (microcosm#1324), passes the gates and keeps the share of rows within 10 percent; otherwise keep it bound and label the distributional tables. The 7270-versus-7271 basis ruling stays open (microcosm#890 G). The expiry, 2026-12-11, matches the uprating holds' renewal, after the Budget.", + "adjudication": "María's ruling of 2026-10-20 on the pre-Budget PR (microcosm#1278): hold the row out only if a national arm with it held out, run beside the calibration-period fix's arm (microcosm#1324), passes the gates and keeps the share of rows within 10 percent; otherwise keep it bound and label the distributional tables. The 7270-versus-7271 basis ruling stays open (microcosm#890 G). The expiry, 2026-12-11, matches the uprating holds' renewal, after the Budget. Re-measured on 2026-10-24 on arm 2c of the next policyengine-uk bump: bound on table 7271 the row fails the weight-ratio gate, so the hold stands on table 7270 to 2026-12-11 and the basis ruling stays open.", "approved_on": "2026-10-20", "expires_on": "2026-12-11" } diff --git a/packages/microcosm-build/src/microcosm/build/uk/country_package.json b/packages/microcosm-build/src/microcosm/build/uk/country_package.json index aa1120aabb..6b95f1e4f7 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/country_package.json +++ b/packages/microcosm-build/src/microcosm/build/uk/country_package.json @@ -137,6 +137,16 @@ "kind": "legacy_json", "schema_id": "legacy_json" }, + { + "path": "bonus_sacrifice_anchor.json", + "kind": "legacy_json", + "schema_id": "legacy_json" + }, + { + "path": "obr_salary_sacrifice_costing_facts.json", + "kind": "legacy_json", + "schema_id": "legacy_json" + }, { "path": "slc_liable_stocks.json", "kind": "legacy_json", diff --git a/packages/microcosm-build/src/microcosm/build/uk/cross_grain_declarations.json b/packages/microcosm-build/src/microcosm/build/uk/cross_grain_declarations.json index efc7af381c..d49a645936 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/cross_grain_declarations.json +++ b/packages/microcosm-build/src/microcosm/build/uk/cross_grain_declarations.json @@ -936,6 +936,16 @@ "part": "hmrc.itl.higher_rate_taxpayers", "whole": "hmrc.itl.taxpayers_by_total_income_band", "reason": "Higher rate taxpayers by region and nation (ITL Table 2.2) are part of all UK income tax payers, whose projected ITL Table 2.5 bands partition the UK total; parts <= whole (microcosm#1123)." + }, + { + "targets": [ + "mhclg.council_tax_stock.single_adult_discount", + "ons.households.english_regions" + ], + "relation": "subset", + "part": "mhclg.council_tax_stock.single_adult_discount", + "whole": "ons.households.english_regions", + "reason": "England's households with the single adult council tax discount (MHCLG Council Taxbase line 8, all bands) are part of England's households, which the nine English regions' rows cover; parts <= whole (microcosm#953)." } ], "signature_incomplete": [ diff --git a/packages/microcosm-build/src/microcosm/build/uk/gates.json b/packages/microcosm-build/src/microcosm/build/uk/gates.json index 07fada7bff..b32b926fe1 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/gates.json +++ b/packages/microcosm-build/src/microcosm/build/uk/gates.json @@ -143,7 +143,7 @@ "check": "wealth_coherence", "maximum_owner_share_without_main_residence_excess": 0.005 }, - "notes": "Stage-time coherence gate over the WAS wealth receipt (microcosm#1063). Zero rows may carry a main-residence mortgage off the mortgaged tenure or main_residence_value off an owner tenure: both columns are fitted and drawn inside their tenure stratum, so a non-zero count is a defect of the stage, not of a draw; mortgage_debt itself is the main-residence mortgage plus the mortgages on other property, held on any tenure. Every derived total must equal its components on every row (property_wealth, corporate_wealth, gross_financial_wealth, mortgage_debt, and net_financial_wealth as gross less consumer debt and the student loan balance); the stage derives them, so only a support clip of a total can open a gap, and the support gate allows none. The weighted share of owner households without a main-residence value may exceed the donor's own share by at most the reviewed excess (the donor's share is zero on the pinned round-8 tab, where every owner reports a value). The receipt's donor comparisons (positive shares by tenure, the mortgaged share owing more than the main-residence value, the mortgage mass held off the mortgaged tenure on each side) and the rows the donor-range cap adjusted are recorded in the details and carry no threshold." + "notes": "Stage-time coherence gate over the WAS wealth receipt (microcosm#1063). Zero rows may carry a main-residence mortgage off the mortgaged tenure or main_residence_value off an owner tenure: both columns are fitted and drawn inside their tenure stratum, so a non-zero count is a defect of the stage, not of a draw; mortgage_debt itself is the main-residence mortgage plus the mortgages on other property, held on any tenure. Every derived total must equal its components on every row (property_wealth, corporate_wealth, gross_financial_wealth, mortgage_debt, and net_financial_wealth as gross less consumer debt and the student loan balance); the stage derives them, so only a support clip of a total can open a gap, and the support gate allows none. The share split and the stocks-and-shares ISA must sum to corporate_wealth, and every debt secured on other property must sit on a held asset of its class, be non-negative, and with the other within the mortgages on other property (share_split_violation_rows, secured_debt_violation_rows; the WAS property draw of microcosm#1095), all written by the stage on the final totals. The weighted share of owner households without a main-residence value may exceed the donor's own share by at most the reviewed excess (the donor's share is zero on the pinned round-8 tab, where every owner reports a value). The receipt's donor comparisons (positive shares by tenure, the mortgaged share owing more than the main-residence value, the mortgage mass held off the mortgaged tenure on each side) and the rows the donor-range cap adjusted are recorded in the details and carry no threshold." }, { "id": "uk_stage_was_lisa_support", @@ -390,7 +390,7 @@ "check": "recomposed_totals", "maximum_relative_deviation": 1e-09 }, - "notes": "Stage-time check on the lcfs recomposed_totals receipt (microcosm#1113): housing_water_and_electricity_consumption and transport_consumption each keep their own chain draw less the chain's draws of the parts the stage re-levels (the drawn electricity and gas, or the drawn petrol, diesel and bus fares; floored at zero where the parts outgrow the total) and add the levelled parts back, so no household's total is below its electricity and gas, or its petrol, diesel and priced bus fares, and no remainder is negative. The declared parts must be the receipt's, the weighted remainder must equal the drawn total less the drawn parts plus the floored mass, and the weighted total the remainder plus the levelled parts, to the declared tolerance. The step floors the remainder and adds the parts, so on a receipt the declared step wrote these are identities: the check guards the declaration and the receipt, not the size of the totals. The committed support bounds do that, on the emitted frame, through the terminal uk_support gate. The ONS 04.5.3 and 04.5.4 liquid and solid fuel spend no frame column carries is recomputed from the vendored rows and must equal the receipt's; the housing remainder holds the diary's other fuels, which the stage's energy derivation leaves out of electricity and gas (microcosm#1164). A population fact check: the synthetic smoke records it without blocking." + "notes": "Stage-time check on the lcfs recomposed_totals receipt (microcosm#1113): housing_water_and_electricity_consumption and transport_consumption each keep their own chain draw less the chain's draws of the parts the stage re-levels (the drawn electricity and gas, or the drawn petrol, diesel and bus fares; floored at zero where the parts outgrow the total) and add the levelled parts back, so no household's total is below its electricity and gas, or its petrol, diesel and priced bus fares, and no remainder is negative. The declared parts must be the receipt's, the weighted remainder must equal the drawn total less the drawn parts plus the floored mass, and the weighted total the remainder plus the levelled parts, to the declared tolerance. The step floors the remainder and adds the parts, so on a receipt the declared step wrote these are identities: the check guards the declaration and the receipt, not the size of the totals. The committed support bounds do that, on the emitted frame, through the terminal uk_support gate. The ONS 04.5.3 and 04.5.4 liquid and solid fuel spend no frame column carries is recomputed from the vendored rows and must equal the receipt's; the housing remainder holds the diary's other fuels, which the stage's energy derivation leaves out of electricity and gas (microcosm#1164). A population fact check: the synthetic smoke records it without blocking. Since microcosm#1278 (María's ruling of 2026-10-23) the stage levels the divisions' relative over-draw before the hold, so a recomposed total's remainder is its draw less the drawn parts plus the floored mass, times its recorded levelling factor, which must lie in [0, 1]; the published heating-fuel spend (published_fuels, ONS 04.5.3 and 04.5.4) replaced the uncarried block when the stage began drawing those fuels." }, { "id": "uk_stage_lcfs_consumption_basis", @@ -564,7 +564,8 @@ "iidb_reported", "afcs_reported", "bsp_reported", - "war_widows_pension_reported" + "war_widows_pension_reported", + "widowed_parents_allowance_reported" ] }, "notes": "Stage-time structural gate over the SPI benefit coherence receipt (microcosm#1095, uk-data#514): no SPI-channel row keeps a zeroed legacy report, every restored report equals the FRS twin's, receives_benefits_in_own_right agrees with each person's own reports, FRS rows are unchanged, every SPI benefit unit with a Universal Credit reporter claims, and no SPI unit outside the Universal Credit age population claims without reporting." @@ -799,6 +800,70 @@ }, "notes": "Stage-time invariants over the #791 relationship receipt: exactly one HEAD per household agreeing with hrpid and hrpnum, contiguous person numbers, no person with two partners, no unmapped relhrp code, family index and enum domains consistent, and the ten-cell household-type partition covering every household exactly once. The grid reciprocity tolerance is the reviewed 2024-25 tape count; a re-issued tape with a different count refuses for review." }, + { + "id": "uk_stage_regional_home_values_ranking", + "gate": "stage_health", + "phase": "transferred", + "criticality": "release_blocking", + "evidence_absent_blocks": true, + "population_fact_check": true, + "parameters": { + "stage": "regional_home_values", + "check": "regional_home_values", + "regions": [ + "E12000001", + "E12000002", + "E12000003", + "E12000004", + "E12000005", + "E12000006", + "E12000007", + "E12000008", + "E12000009", + "W92000004" + ], + "maximum_sources_at_cap": 0, + "knots_basis_year": 2024, + "rank_basis": "weighted_midpoint_within_frs_region" + }, + "notes": "Stage-time gate over the regional home-values receipt (microcosm#1308, gated with the next policyengine-uk bump on María's ruling of 2026-10-17): every English region and Wales has rows re-ranked on the regional knots, no more rows are rewritten than the stage carries, no source sits at the value cap, the knots are the 2024 basis and the ranking is the weighted midpoint within each FRS region, and the weighted value stays positive before and after the stage. A synthetic smoke build records a failure without blocking on it (population_fact_check): the fixture holds a few regions, not the population the regional knots describe." + }, + { + "id": "uk_stage_property_purchases_fit", + "gate": "stage_health", + "phase": "transferred", + "criticality": "release_blocking", + "evidence_absent_blocks": true, + "population_fact_check": true, + "parameters": { + "stage": "property_purchases", + "check": "property_purchases", + "kinds": [ + "additional_residential", + "non_residential" + ], + "maximum_transactions_relative_deviation": 0.05, + "maximum_value_shortfall_share": 0.2 + }, + "notes": "Stage-time gate over the property purchases receipt (microcosm#1308, gated with the next policyengine-uk bump on María's ruling of 2026-10-17): the additional-dwelling and non-residential kinds are each drawn once; each draws HMRC's Stamp Tax transactions within 5 percent (the events are drawn, so the count is near, not exact); each fits HMRC's value less its recorded shortfall, which may not pass one fifth, the floor the stage itself refuses below; and the individuals' shares of HMRC's all-buyers totals are proper shares. A synthetic smoke build records a failure without blocking on it (population_fact_check): the fixture sizes its own targets to its few households and carries none of HMRC's published shares." + }, + { + "id": "uk_stage_uc_legacy_closure_take_up_contract", + "gate": "stage_health", + "phase": "transferred", + "criticality": "release_blocking", + "evidence_absent_blocks": true, + "parameters": { + "stage": "uc_legacy_closure_take_up", + "check": "legacy_closure_take_up", + "p_basis": "spine_design_weights_great_britain", + "rate_sources": [ + "combination", + "all_households" + ] + }, + "notes": "Stage-time gate over the Move to UC take-up receipt (microcosm#1308, gated with the next policyengine-uk bump on María's ruling of 2026-10-17). The receipt withholds what a thin combination realizes, so the gate holds the contract it can read: the share is measured at the spine's design weights over Great Britain, every combination's rate is a probability taken from its combination or from all households, its support is a printed band, its unreachable flag is a boolean, a withheld \"<10\" or absent, and the share claiming at closure is a share or withheld." + }, { "id": "uk_release_input_coverage", "gate": "release_input_coverage", @@ -907,6 +972,10 @@ ], "owners": "household_reference_person_unit", "valuation": 0.9, + "secured_debt": { + "other_residential_property_value": "other_residential_property_secured_debt", + "non_residential_property_value": "non_residential_property_secured_debt" + }, "units_reporting_universal_credit": "no_share" }, "pension_credit_reported_capital": { @@ -916,12 +985,16 @@ "non_residential_property_value" ], "owners": "household_reference_person_unit", - "valuation": 0.9 + "valuation": 0.9, + "secured_debt": { + "other_residential_property_value": "other_residential_property_secured_debt", + "non_residential_property_value": "non_residential_property_secured_debt" + } } }, "sum_tolerance": 0.01 }, - "notes": "Benunit-aggregated reported Universal Credit must imply would_claim_uc. Both recorded capitals, uc_reported_capital and pension_credit_reported_capital, are bounded below by the named -1 unavailable sentinel and may use it only where the FRS carrier frs_benunit_capital is unavailable. Otherwise each equals the carrier plus the household property the unit holds, re-derived here with the stage's own rule (microcosm#1095): the household reference person's benefit unit holds the household's property at 90% of its value, market value less 10% for the costs of sale, and no other unit holds any. UC counts other residential and non-residential property, and a unit that reports Universal Credit keeps its receipt and carries none; Pension Credit counts those and owned land. The sum may differ by GBP 0.01 plus one float32 step of the expected value, so a float32 round-trip of the export does not fail it. No unit may sit on the -1 sentinel beside a unit that records a property share for either scheme: since policyengine-uk 2.136.1 the sentinel unit would take its own share of property the recording unit already holds, so the engine would count it twice (Vahid's review of microcosm#1333)." + "notes": "Benunit-aggregated reported Universal Credit must imply would_claim_uc. Both recorded capitals, uc_reported_capital and pension_credit_reported_capital, are bounded below by the named -1 unavailable sentinel and may use it only where the FRS carrier frs_benunit_capital is unavailable. Otherwise each equals the carrier plus the household property the unit holds, re-derived here with the stage's own rule (microcosm#1095): the household reference person's benefit unit holds the household's property at 90% of its value, market value less 10% for the costs of sale, less the debt secured on it class by class and floored at zero per class (UC Regs 2013 reg 49(1)(b); SPC Regs 2002 reg 19(b); the WAS property draw of microcosm#1095, owned land carrying none), and no other unit holds any. UC counts other residential and non-residential property, and a unit that reports Universal Credit keeps its receipt and carries none; Pension Credit counts those and owned land. The sum may differ by GBP 0.01 plus one float32 step of the expected value, so a float32 round-trip of the export does not fail it. No unit may sit on the -1 sentinel beside a unit that records a property share for either scheme: since policyengine-uk 2.136.1 the sentinel unit would take its own share of property the recording unit already holds, so the engine would count it twice (Vahid's review of microcosm#1333)." }, { "id": "uk_support", @@ -1160,7 +1233,16 @@ "household.itl2_code", "household.itl3_code", "household.ward_code", - "person.war_widows_pension_reported" + "person.war_widows_pension_reported", + "person.widowed_parents_allowance_reported", + "person.spousal_maintenance_income", + "person.pension_contributions_via_bonus_sacrifice", + "household.liquid_fuel_consumption", + "household.solid_fuel_consumption", + "household.directly_held_shares", + "household.unit_and_investment_trusts", + "household.other_residential_property_secured_debt", + "household.non_residential_property_secured_debt" ], "reviewed_exclusions": { "person.incapacity_benefit_reported": "The enhanced FRS stores this legacy reported-benefit input as an all-zero layer; the candidate must drop dead zero layers.", diff --git a/packages/microcosm-build/src/microcosm/build/uk/hmrc_uprating_engine_pins.json b/packages/microcosm-build/src/microcosm/build/uk/hmrc_uprating_engine_pins.json index f3aad5d9e0..042b864fbb 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/hmrc_uprating_engine_pins.json +++ b/packages/microcosm-build/src/microcosm/build/uk/hmrc_uprating_engine_pins.json @@ -2,7 +2,7 @@ "schema_version": 1, "engine": { "package": "policyengine-uk", - "version": "2.147.2" + "version": "2.151.0" }, "basis": "policyengine-uk parameter ratio between 1 January of the fact's opening year and 1 January of the calibration year (the SPI donor rebasing convention)", "written_by": "tools/pin_uk_uprating_engine_values.py", diff --git a/packages/microcosm-build/src/microcosm/build/uk/ledger_compile_parity_incumbent_2025_signed_differences.json b/packages/microcosm-build/src/microcosm/build/uk/ledger_compile_parity_incumbent_2025_signed_differences.json index 7242857ec9..a8af72a67a 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/ledger_compile_parity_incumbent_2025_signed_differences.json +++ b/packages/microcosm-build/src/microcosm/build/uk/ledger_compile_parity_incumbent_2025_signed_differences.json @@ -1,11 +1,11 @@ { - "compiled_count": 1338, + "compiled_count": 1336, "counts_by_kind": { - "calibration_drift": 561, - "fixture_only": 46, - "ledger_only": 747 + "calibration_drift": 558, + "fixture_only": 49, + "ledger_only": 748 }, - "difference_count": 1354, + "difference_count": 1355, "differences": [ { "fixture_value": 1608000.0, @@ -175,6 +175,20 @@ "period": 2025, "reason": "microcosm#1069 (ruling R4) moves the OBR FY2025-26 State Pension forecast out of the fit: it counts Great Britain plus pensioners paid abroad and leaves out Northern Ireland, a different quantity from the resident level the DWP Stat-Xplore and DfC rows bind. The exact forecast is retained as diagnostic provenance on dwp.state_pension.amount, so the frozen fixture's fitted row is fixture-only on the current surface." }, + { + "fixture_value": 66410800011.47837, + "kind": "fixture_only", + "name": "obr.universal_credit_in_cap", + "period": 2025, + "reason": "microcosm#1095 (María's ruling of 2026-10-22) retires OBR's split of Universal Credit spending at the welfare cap from the targets: the welfare cap is a spending limit, no household-level concept in the model marks the boundary, and the benefit-cap status the incumbent maps the split to is another concept (microcosm#757). obr.universal_credit binds the sum of the two cells, so the frozen fixture's fitted row is fixture-only on the current surface." + }, + { + "fixture_value": 12875549128.065746, + "kind": "fixture_only", + "name": "obr.universal_credit_outside_cap", + "period": 2025, + "reason": "microcosm#1095 (María's ruling of 2026-10-22) retires OBR's split of Universal Credit spending at the welfare cap from the targets: the welfare cap is a spending limit, no household-level concept in the model marks the boundary, and the benefit-cap status the incumbent maps the split to is another concept (microcosm#757). obr.universal_credit binds the sum of the two cells, so the frozen fixture's fitted row is fixture-only on the current surface." + }, { "fixture_value": 2036402.0, "kind": "fixture_only", @@ -308,6 +322,13 @@ "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, + { + "fixture_value": 346409713.95, + "kind": "fixture_only", + "name": "slc.repayments.england_postgraduate", + "period": 2025, + "reason": "microcosm#1095 (María's ruling of 2026-10-22) retires SLC's England postgraduate repayments from the targets: the student-loans stage assigns no postgraduate plan and policyengine-uk holds one plan a person, so no record carries the repayments (microcosm#757). The frozen fixture's fitted row is fixture-only on the current surface." + }, { "fixture_value": 181700000.0, "kind": "fixture_only", @@ -5047,6 +5068,13 @@ "period": 2025, "reason": "Declared ledger-only observation: HMRC CGT statistics 2026 release, FY2024-25 individual rows by age band (Table 6), by country and region on the individuals basis via the Table 1 share (Table 5), and the size-of-gain bands the incumbent never carried (Table 2.1a), the residential property taxpayers and gains on the individuals basis via the Table 8b share (Table 8a), the Business Asset Disposal Relief and Investors' Relief claimants and qualifying gains by band of qualifying gain (Table 4.1), and the all-gains taxpayers and gains by band of the engine's CGT taxable income (Table 3). The frozen incumbent fixture has no equivalent row (microcosm#725, #467, #1014)." }, + { + "kind": "ledger_only", + "ledger_value": 8496178.0, + "name": "mhclg.council_tax_stock.single_adult_discount", + "period": 2025, + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + }, { "kind": "ledger_only", "ledger_value": 561.168, @@ -8686,22 +8714,6 @@ "period": 2025, "reason": "Period basis (PolicyEngine/chronicle#280 lane, María's rule of 2026-09-22 that fiscal-year facts take only the months to the end of the calibration calendar year): ours binds the OBR March 2026 line at the calendar-2025 window, three twelfths of FY2024-25 and nine twelfths of FY2025-26, on the same series; the frozen incumbent fixture holds the FY2025-26 value alone." }, - { - "fixture_value": 66410800011.47837, - "kind": "calibration_drift", - "ledger_value": 63016849758.31539, - "name": "obr.universal_credit_in_cap", - "period": 2025, - "reason": "Period basis (PolicyEngine/chronicle#280 lane, María's rule of 2026-09-22 that fiscal-year facts take only the months to the end of the calibration calendar year): ours binds the OBR March 2026 line at the calendar-2025 window, three twelfths of FY2024-25 and nine twelfths of FY2025-26, on the same series; the frozen incumbent fixture holds the FY2025-26 value alone." - }, - { - "fixture_value": 12875549128.065746, - "kind": "calibration_drift", - "ledger_value": 13037904629.457691, - "name": "obr.universal_credit_outside_cap", - "period": 2025, - "reason": "Period basis (PolicyEngine/chronicle#280 lane, María's rule of 2026-09-22 that fiscal-year facts take only the months to the end of the calibration calendar year): ours binds the OBR March 2026 line at the calendar-2025 window, three twelfths of FY2024-25 and nine twelfths of FY2025-26, on the same series; the frozen incumbent fixture holds the FY2025-26 value alone." - }, { "fixture_value": 180168938685.41794, "kind": "calibration_drift", @@ -9934,14 +9946,6 @@ "period": 2025, "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, - { - "fixture_value": 346409713.95, - "kind": "calibration_drift", - "ledger_value": 427019983.79, - "name": "slc.repayments.england_postgraduate", - "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." - }, { "fixture_value": 5018231834.95, "kind": "calibration_drift", diff --git a/packages/microcosm-build/src/microcosm/build/uk/ledger_fact_vendor_selections.json b/packages/microcosm-build/src/microcosm/build/uk/ledger_fact_vendor_selections.json index bf07ce462f..f9e8b57724 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/ledger_fact_vendor_selections.json +++ b/packages/microcosm-build/src/microcosm/build/uk/ledger_fact_vendor_selections.json @@ -1497,6 +1497,25 @@ "Contains public sector information licensed under the Open Government Licence v3.0 (Department for Energy Security and Net Zero, sub-national electricity and gas consumption statistics, Great Britain and Northern Ireland)." ] } + }, + { + "resource": "obr_salary_sacrifice_costing_facts.json", + "purpose": "OBR supplementary forecast information on salary sacrifice pension contributions (5 February 2026), Table 1.1: the tax base above the GBP 2,000 annual threshold by sacrifice route (salary and bonus) for 2027-28 to 2030-31. The bonus-sacrifice anchor reads 2027-28's bonus line, which the salary_sacrifice stage's bonus conversion meets through the engine's projection (microcosm#1340).", + "consumers": [ + "uk_runtime.salary_sacrifice" + ], + "planned_consumers": [], + "selections": [ + { + "label": "salary_sacrifice_costing_tax_base", + "selector": { + "source_name": "obr", + "source_concept": "obr.salary_sacrifice_costing.tax_base", + "period_type": "fiscal_year" + }, + "expected_row_count": 8 + } + ] } ] } diff --git a/packages/microcosm-build/src/microcosm/build/uk/obr_salary_sacrifice_costing_facts.json b/packages/microcosm-build/src/microcosm/build/uk/obr_salary_sacrifice_costing_facts.json new file mode 100644 index 0000000000..0c74d976c9 --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/uk/obr_salary_sacrifice_costing_facts.json @@ -0,0 +1,407 @@ +{ + "schema_version": 1, + "country": "uk", + "kind": "uk_vendored_ledger_facts", + "resource": "obr_salary_sacrifice_costing_facts.json", + "purpose": "OBR supplementary forecast information on salary sacrifice pension contributions (5 February 2026), Table 1.1: the tax base above the GBP 2,000 annual threshold by sacrifice route (salary and bonus) for 2027-28 to 2030-31. The bonus-sacrifice anchor reads 2027-28's bonus line, which the salary_sacrifice stage's bonus conversion meets through the engine's projection (microcosm#1340).", + "consumers": [ + "uk_runtime.salary_sacrifice" + ], + "planned_consumers": [], + "policy": "Rows are copied verbatim from the pinned Chronicle consumer feed named in source_fact_feed; every value is a publisher-stated fact. Consumers declare their own arithmetic on these rows and never edit this file by hand: regenerate it with tools/vendor_uk_ledger_facts.py.", + "generator": { + "tool": "tools/vendor_uk_ledger_facts.py", + "version": 1 + }, + "source_fact_feed": { + "source_repo": "PolicyEngine/chronicle", + "source_commit": "abf0921b896d29ee0745ed2aefde8d6337ed7164", + "build": "build-bundle --suite uk -> build-consumer-artifact", + "artifact_schema_version": "policyengine_ledger.consumer_artifact.v2", + "fact_row_count": 1499301, + "facts_sha256": "2b64fecfe746164203dac1726aae6ffdb3e5d8e478bd3d64d118ac76cb00780b", + "manifest_sha256": "b90fb1b8f1a910458fac41425360209d101796e6de0b134f952ad93323ca6e21" + }, + "selections": [ + { + "label": "salary_sacrifice_costing_tax_base", + "selector": { + "source_name": "obr", + "source_concept": "obr.salary_sacrifice_costing.tax_base", + "period_type": "fiscal_year" + }, + "row_count": 8 + } + ], + "row_count": 8, + "rows": [ + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_7b5a078f91a71ef0c9379bd8", + "semantic_fact_key": "ledger_semantic_fact_v2_b29ffc3f2626ce898fdfff85", + "source_record_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2027.bonus_sacrifice__above_2000.contributions", + "concept": "obr.salary_sacrifice_costing.tax_base", + "measure_id": "contributions", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "salary_sacrifice_pension_contributor" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "fiscal_year", + "value": 2027 + }, + "period_coverage": { + "start_date": "2027-04-01", + "end_date": "2028-03-31", + "basis": "fiscal" + }, + "layout": { + "record_set_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2027", + "groupby_dimension": "obr.salary_sacrifice_costing_line", + "groupby_value_id": "bonus_sacrifice__above_2000", + "table_record_kind": "detail" + }, + "dimensions": { + "contribution_portion": "above_2000_annual_threshold", + "sacrifice_route": "bonus_sacrifice" + }, + "source": { + "source_name": "obr", + "source_table": "Costing of charging NICs on salary-sacrificed pension contributions, Table 1.1: tax base and static costing", + "source_file": "Supplementary-forecast-information-salary-sacrifice-costing-1.pdf", + "source_sha256": "1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d", + "vintage": "supplementary_forecast_information_2026_02_05", + "raw_r2_key": "raw/uk/obr/obr-salary-sacrifice-costing-february-2026/2026/1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d/Supplementary-forecast-information-salary-sacrifice-costing-1.pdf" + }, + "value": 13000000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_11db03ebc2b7ad51bc4ace65", + "semantic_fact_key": "ledger_semantic_fact_v2_549251844db4406cac076741", + "source_record_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2027.salary_sacrifice__above_2000.contributions", + "concept": "obr.salary_sacrifice_costing.tax_base", + "measure_id": "contributions", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "salary_sacrifice_pension_contributor" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "fiscal_year", + "value": 2027 + }, + "period_coverage": { + "start_date": "2027-04-01", + "end_date": "2028-03-31", + "basis": "fiscal" + }, + "layout": { + "record_set_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2027", + "groupby_dimension": "obr.salary_sacrifice_costing_line", + "groupby_value_id": "salary_sacrifice__above_2000", + "table_record_kind": "detail" + }, + "dimensions": { + "contribution_portion": "above_2000_annual_threshold", + "sacrifice_route": "salary_sacrifice" + }, + "source": { + "source_name": "obr", + "source_table": "Costing of charging NICs on salary-sacrificed pension contributions, Table 1.1: tax base and static costing", + "source_file": "Supplementary-forecast-information-salary-sacrifice-costing-1.pdf", + "source_sha256": "1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d", + "vintage": "supplementary_forecast_information_2026_02_05", + "raw_r2_key": "raw/uk/obr/obr-salary-sacrifice-costing-february-2026/2026/1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d/Supplementary-forecast-information-salary-sacrifice-costing-1.pdf" + }, + "value": 12900000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_d5b8a7095559008af0c81a16", + "semantic_fact_key": "ledger_semantic_fact_v2_12686ddfb8cc670071823330", + "source_record_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2028.bonus_sacrifice__above_2000.contributions", + "concept": "obr.salary_sacrifice_costing.tax_base", + "measure_id": "contributions", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "salary_sacrifice_pension_contributor" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "fiscal_year", + "value": 2028 + }, + "period_coverage": { + "start_date": "2028-04-01", + "end_date": "2029-03-31", + "basis": "fiscal" + }, + "layout": { + "record_set_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2028", + "groupby_dimension": "obr.salary_sacrifice_costing_line", + "groupby_value_id": "bonus_sacrifice__above_2000", + "table_record_kind": "detail" + }, + "dimensions": { + "contribution_portion": "above_2000_annual_threshold", + "sacrifice_route": "bonus_sacrifice" + }, + "source": { + "source_name": "obr", + "source_table": "Costing of charging NICs on salary-sacrificed pension contributions, Table 1.1: tax base and static costing", + "source_file": "Supplementary-forecast-information-salary-sacrifice-costing-1.pdf", + "source_sha256": "1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d", + "vintage": "supplementary_forecast_information_2026_02_05", + "raw_r2_key": "raw/uk/obr/obr-salary-sacrifice-costing-february-2026/2026/1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d/Supplementary-forecast-information-salary-sacrifice-costing-1.pdf" + }, + "value": 13400000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_87b8086a9b4961c7f6221e93", + "semantic_fact_key": "ledger_semantic_fact_v2_7f5d063080944b213d0a27de", + "source_record_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2028.salary_sacrifice__above_2000.contributions", + "concept": "obr.salary_sacrifice_costing.tax_base", + "measure_id": "contributions", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "salary_sacrifice_pension_contributor" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "fiscal_year", + "value": 2028 + }, + "period_coverage": { + "start_date": "2028-04-01", + "end_date": "2029-03-31", + "basis": "fiscal" + }, + "layout": { + "record_set_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2028", + "groupby_dimension": "obr.salary_sacrifice_costing_line", + "groupby_value_id": "salary_sacrifice__above_2000", + "table_record_kind": "detail" + }, + "dimensions": { + "contribution_portion": "above_2000_annual_threshold", + "sacrifice_route": "salary_sacrifice" + }, + "source": { + "source_name": "obr", + "source_table": "Costing of charging NICs on salary-sacrificed pension contributions, Table 1.1: tax base and static costing", + "source_file": "Supplementary-forecast-information-salary-sacrifice-costing-1.pdf", + "source_sha256": "1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d", + "vintage": "supplementary_forecast_information_2026_02_05", + "raw_r2_key": "raw/uk/obr/obr-salary-sacrifice-costing-february-2026/2026/1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d/Supplementary-forecast-information-salary-sacrifice-costing-1.pdf" + }, + "value": 13600000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_493504f83e3527ae183835cf", + "semantic_fact_key": "ledger_semantic_fact_v2_20c8d86a74e2bac04812a06d", + "source_record_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2029.bonus_sacrifice__above_2000.contributions", + "concept": "obr.salary_sacrifice_costing.tax_base", + "measure_id": "contributions", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "salary_sacrifice_pension_contributor" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "fiscal_year", + "value": 2029 + }, + "period_coverage": { + "start_date": "2029-04-01", + "end_date": "2030-03-31", + "basis": "fiscal" + }, + "layout": { + "record_set_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2029", + "groupby_dimension": "obr.salary_sacrifice_costing_line", + "groupby_value_id": "bonus_sacrifice__above_2000", + "table_record_kind": "detail" + }, + "dimensions": { + "contribution_portion": "above_2000_annual_threshold", + "sacrifice_route": "bonus_sacrifice" + }, + "source": { + "source_name": "obr", + "source_table": "Costing of charging NICs on salary-sacrificed pension contributions, Table 1.1: tax base and static costing", + "source_file": "Supplementary-forecast-information-salary-sacrifice-costing-1.pdf", + "source_sha256": "1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d", + "vintage": "supplementary_forecast_information_2026_02_05", + "raw_r2_key": "raw/uk/obr/obr-salary-sacrifice-costing-february-2026/2026/1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d/Supplementary-forecast-information-salary-sacrifice-costing-1.pdf" + }, + "value": 13800000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_5e3baac559ecda332ba5bbd4", + "semantic_fact_key": "ledger_semantic_fact_v2_00f2d97a3a4b43dddf90090f", + "source_record_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2029.salary_sacrifice__above_2000.contributions", + "concept": "obr.salary_sacrifice_costing.tax_base", + "measure_id": "contributions", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "salary_sacrifice_pension_contributor" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "fiscal_year", + "value": 2029 + }, + "period_coverage": { + "start_date": "2029-04-01", + "end_date": "2030-03-31", + "basis": "fiscal" + }, + "layout": { + "record_set_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2029", + "groupby_dimension": "obr.salary_sacrifice_costing_line", + "groupby_value_id": "salary_sacrifice__above_2000", + "table_record_kind": "detail" + }, + "dimensions": { + "contribution_portion": "above_2000_annual_threshold", + "sacrifice_route": "salary_sacrifice" + }, + "source": { + "source_name": "obr", + "source_table": "Costing of charging NICs on salary-sacrificed pension contributions, Table 1.1: tax base and static costing", + "source_file": "Supplementary-forecast-information-salary-sacrifice-costing-1.pdf", + "source_sha256": "1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d", + "vintage": "supplementary_forecast_information_2026_02_05", + "raw_r2_key": "raw/uk/obr/obr-salary-sacrifice-costing-february-2026/2026/1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d/Supplementary-forecast-information-salary-sacrifice-costing-1.pdf" + }, + "value": 14300000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_77e4d212236f78dc8a305e75", + "semantic_fact_key": "ledger_semantic_fact_v2_ee589b2840eea8c68c41e8f2", + "source_record_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2030.bonus_sacrifice__above_2000.contributions", + "concept": "obr.salary_sacrifice_costing.tax_base", + "measure_id": "contributions", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "salary_sacrifice_pension_contributor" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "fiscal_year", + "value": 2030 + }, + "period_coverage": { + "start_date": "2030-04-01", + "end_date": "2031-03-31", + "basis": "fiscal" + }, + "layout": { + "record_set_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2030", + "groupby_dimension": "obr.salary_sacrifice_costing_line", + "groupby_value_id": "bonus_sacrifice__above_2000", + "table_record_kind": "detail" + }, + "dimensions": { + "contribution_portion": "above_2000_annual_threshold", + "sacrifice_route": "bonus_sacrifice" + }, + "source": { + "source_name": "obr", + "source_table": "Costing of charging NICs on salary-sacrificed pension contributions, Table 1.1: tax base and static costing", + "source_file": "Supplementary-forecast-information-salary-sacrifice-costing-1.pdf", + "source_sha256": "1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d", + "vintage": "supplementary_forecast_information_2026_02_05", + "raw_r2_key": "raw/uk/obr/obr-salary-sacrifice-costing-february-2026/2026/1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d/Supplementary-forecast-information-salary-sacrifice-costing-1.pdf" + }, + "value": 14200000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_27b398c7e84ce9bba9a8e1b0", + "semantic_fact_key": "ledger_semantic_fact_v2_eb9c100bff05f1e2ae8b813f", + "source_record_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2030.salary_sacrifice__above_2000.contributions", + "concept": "obr.salary_sacrifice_costing.tax_base", + "measure_id": "contributions", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "salary_sacrifice_pension_contributor" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "fiscal_year", + "value": 2030 + }, + "period_coverage": { + "start_date": "2030-04-01", + "end_date": "2031-03-31", + "basis": "fiscal" + }, + "layout": { + "record_set_id": "obr.salary_sacrifice_costing_2026_02.tax_base.fy2030", + "groupby_dimension": "obr.salary_sacrifice_costing_line", + "groupby_value_id": "salary_sacrifice__above_2000", + "table_record_kind": "detail" + }, + "dimensions": { + "contribution_portion": "above_2000_annual_threshold", + "sacrifice_route": "salary_sacrifice" + }, + "source": { + "source_name": "obr", + "source_table": "Costing of charging NICs on salary-sacrificed pension contributions, Table 1.1: tax base and static costing", + "source_file": "Supplementary-forecast-information-salary-sacrifice-costing-1.pdf", + "source_sha256": "1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d", + "vintage": "supplementary_forecast_information_2026_02_05", + "raw_r2_key": "raw/uk/obr/obr-salary-sacrifice-costing-february-2026/2026/1829b4150529da1a5dbbbe394724fa1a0c450d1c9f44f5917921e16c3a186b1d/Supplementary-forecast-information-salary-sacrifice-costing-1.pdf" + }, + "value": 15100000000 + } + ] +} diff --git a/packages/microcosm-build/src/microcosm/build/uk/release_input_coverage_manifest.json b/packages/microcosm-build/src/microcosm/build/uk/release_input_coverage_manifest.json index 27cd9de94f..2e5227c0c4 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/release_input_coverage_manifest.json +++ b/packages/microcosm-build/src/microcosm/build/uk/release_input_coverage_manifest.json @@ -470,7 +470,7 @@ "required_mass_change_reason": "Capital-gains incidence anchor moves the mass of non-liable clone households back to their paired originals until the sub-exempt and loss-making clone mass match the Advani-Summers reporter composition at the redrawn liable mass; every pair's mass and the total household mass are conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "Advani and Summers (2020), Capital Gains and UK Inequality, CAGE Working Paper 465", "survey": "Family Resources Survey 2024-25, SPI synthetic support, the HMRC Table 3 redrawn gains on the spine and Advani-Summers capital-gains incidence" @@ -493,7 +493,7 @@ "capital_gains" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "Advani and Summers (2020), Capital Gains and UK Inequality, CAGE Working Paper 465", "survey": "Family Resources Survey 2024-25, SPI synthetic support, and Advani-Summers capital-gains incidence" @@ -516,7 +516,7 @@ "required_mass_change_reason": "Capital-gains residential split divides every household carrying liable gainers into arms weighted by the solved residential probabilities, one arm per subset of residential gainers; every household's mass and the total household mass are conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "https://www.gov.uk/government/statistics/capital-gains-tax-statistics", "survey": "HMRC Capital Gains Tax statistics 2026 release, Table 8 (UK residential property disposals, 2024-25, administrative) on the amounts the Table 3 redraw placed" @@ -538,7 +538,7 @@ "required_mass_change_reason": "Capital-gains support split divides the wealthiest households of each HMRC Table 3 income band into light copies at equal weight; every household's mass and the total household mass are conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "HMRC Capital Gains Tax statistics, July 2026 release, Table 3 for 2024-25, via the vendored conditioning facts", "survey": "Family Resources Survey 2024-25, SPI synthetic support and HMRC Capital Gains Tax statistics Table 3 (2024-25 individuals by size of gain and taxable income)" @@ -567,7 +567,7 @@ "required_mass_change_reason": "ETB public-services imputation on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "UK Data Service SN 8856 Effects of Taxes and Benefits household tab, DfT rail fare index, and public NHS activity/cost table.", "survey": "Effects of Taxes and Benefits 1977-2024 and NHS age-gender public table" @@ -587,7 +587,7 @@ "required_mass_change_reason": "ETB VAT expenditure-rate imputation on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "UK Data Service SN 8856 Effects of Taxes and Benefits household tab and cited VAT anchor resource.", "survey": "Effects of Taxes and Benefits 1977-2024" @@ -609,7 +609,7 @@ "required_mass_change_reason": "High-value home support divides every owner household in the top value stratum of its region into light copies at equal weight; every household's mass and the total household mass are conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "Microcosm structural operator (microcosm#1240 fix 1); no publisher input", "survey": "Family Resources Survey 2024-25 and SPI synthetic support, after the WAS wealth draw and the regional property uprating" @@ -630,7 +630,7 @@ "required_mass_change_reason": "CGT asset-type assignment on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "https://www.gov.uk/government/statistics/capital-gains-tax-statistics", "survey": "HMRC Capital Gains Tax statistics 2026 release, Table 8 (UK residential property disposals, 2024-25, administrative), Table 4.1 (individuals claiming Business Asset Disposal Relief or Investors' Relief by band of qualifying gain, 2024-25, administrative) and Table 7 (disposals, proceeds and gains by asset type, 2023-24, sample-based), vendored from the pinned Chronicle feed" @@ -654,7 +654,7 @@ "capital_gains" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "conditioning_resource": "hmrc_cgt_conditioning_facts.json", "conditioning_resource_sha256": "054b1ee1a66cae6ed3793053eb0d3b9eea6b3f8976953479948ae11f7eedcd35", @@ -744,7 +744,7 @@ "full_frs_tei_band_unavailable" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "hmrc_surface": "2023-24", "mapped_build_period": "2024", @@ -780,13 +780,15 @@ "domestic_energy_consumption", "electricity_consumption", "gas_consumption", + "liquid_fuel_consumption", + "solid_fuel_consumption", "has_fuel_consumption", "uses_energy_prepayment_meter" ], "required_mass_change_reason": "LCFS consumption imputation on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "UK Data Service SN 9603 Living Costs and Food Survey 2024-25 (2nd edition) household/person tabs and the vendored Chronicle facts for NEED 2024 mean kWh, DESNZ Energy Trends and QEP average prices paid for calendar 2024, road-fuel outturn (DESNZ, HMRC, ONS Consumer Trends) and road fuel by vehicle type (DESNZ), ONS Consumer Trends household spending by COICOP division, the DfT VEH1103 licensed-car stock, NTS bus use, and the DfT and devolved bus finance tables and fares indices.", "survey": "Living Costs and Food Survey 2024-25" @@ -812,7 +814,7 @@ "required_mass_change_reason": "NTS bus-travel imputation on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "Department for Transport National Travel Survey, UK Data Service SN 5340 (End User Licence, 19th edition, November 2025), DOI 10.5255/UKDA-SN-5340-19; local licensed tab files (household, individual, trip); England residents only from 2013.", "survey": "National Travel Survey 2002-2024" @@ -832,7 +834,7 @@ "required_mass_change_reason": "Private-school attendance stored on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "policyengine-uk attends_private_school (the gov.simulation.private_school_vat attendance rates and factor), evaluated by the pinned engine", "survey": "policyengine-uk private-school attendance imputation, stored at the spine's weights" @@ -855,7 +857,7 @@ "property_finance_costs" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "https://www.gov.uk/government/statistics/property-rental-income-statistics", "survey": "Survey of Personal Incomes Public Use Tape 2022-23 and HMRC Property Rental Income Statistics 2026 (tax year 2024-25)" @@ -876,7 +878,7 @@ "required_mass_change_reason": "Annual property purchases imputed on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "https://www.gov.uk/government/statistics/uk-stamp-tax-statistics", "survey": "HMRC Annual Stamp Tax Statistics 2024 to 2025 (corrected 11 March 2026), Tables 6b, 8a and 8b" @@ -899,7 +901,7 @@ "property_wealth" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "uk/high_value_home_value_knots.json, built by tools/build_uk_high_value_home_stock.py from PolicyEngine/chronicle#343's registrations", "survey": "HM Land Registry Price Paid latest sales uprated with the UK House Price Index, owner-weighted by region (the dense value node's knots, region level)" @@ -923,7 +925,7 @@ "non_residential_property_value" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "MHCLG dwellings and the UK House Price Index regional average price averaged over the twelve months of calendar 2024 from the July 2026 full file, the frame's valuation basis, so the engine's annual uprating from 2024 projects the value once (microcosm#1240 fix 5).", "survey": "Public regional property reference" @@ -939,6 +941,7 @@ "output_weight_kind": "importance", "outputs": [ "pension_contributions_via_salary_sacrifice", + "pension_contributions_via_bonus_sacrifice", "employee_pension_contributions", "employment_income", "salary_sacrifice_pre_conversion_pay" @@ -950,7 +953,7 @@ "employment_income" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "HMRC, Salary sacrifice reform for pension contributions effective from 6 April 2029", "survey": "Family Resources Survey 2024-25 salary-sacrifice respondents and HMRC salary-sacrifice reform analysis" @@ -983,7 +986,7 @@ "household_source_id" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "Reserved SPI support households for the HMRC Table 2.5 total-income bands from GBP 200,000, stacked at the published band taxpayer count over the donors per band (PolicyEngine/chronicle#280 lane).", "survey": "Survey of Personal Incomes Public Use Tape 2022-23 and HMRC Income Tax liabilities statistics July 2026 Table 2.5" @@ -1005,7 +1008,7 @@ "student_loan_plan" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "Explore Education Statistics Table 6a, Higher education total", "survey": "Family Resources Survey 2024-25 and Student Loans Company borrower forecasts for England" @@ -1027,7 +1030,7 @@ "required_mass_change_reason": "WAS Lifetime ISA imputation on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "Office for National Statistics Wealth and Assets Survey, UK Data Service SN 7215, DOI 10.5255/UKDA-SN-7215-20; local licensed round-8 person and household tabs (interviews April 2020 to March 2022, Great Britain).", "survey": "Wealth and Assets Survey round 8" @@ -1057,12 +1060,16 @@ "stocks_and_shares_isa", "student_loan_balance", "mortgage_debt", - "consumer_debt" + "consumer_debt", + "directly_held_shares", + "unit_and_investment_trusts", + "other_residential_property_secured_debt", + "non_residential_property_secured_debt" ], "required_mass_change_reason": "WAS wealth imputation on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "88d7050e7db60faecb3d1318ed33f5b426f7e6fdd5e41da645612b17313f338b", + "source_manifest_sha256": "f11255478065c31272502c03fac111873db1c552c2318ce969b7660863e5fbf7", "source_vintages": { "source": "Office for National Statistics Wealth and Assets Survey, UK Data Service SN 7215, DOI 10.5255/UKDA-SN-7215-20; local licensed 2006-22 household tab.", "survey": "Wealth and Assets Survey round 8" diff --git a/packages/microcosm-build/src/microcosm/build/uk/source_stages.json b/packages/microcosm-build/src/microcosm/build/uk/source_stages.json index 2fb5e3d1a0..86c13856bf 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/source_stages.json +++ b/packages/microcosm-build/src/microcosm/build/uk/source_stages.json @@ -233,17 +233,11 @@ }, { "kind": "map_coded_amounts", - "scope": "region, tenure, accommodation, council tax band, benefit-code amount mappings (Scotland's Adult and Child Disability Payment codes 117/118 and 121/122 into the PIP and DLA columns they replace; benefit recovery codes 69 and 70 unmapped); adult HOURTOT care-hours band code to weekly care_hours at the band's lower edge (codes 5, 6, 7 and 10 reach the 35-hour Carer's Allowance line); would_claim_carers_allowance from positive reported Carer's Allowance, the anchor carers_allowance_take_up opens to carers over the earnings limit (microcosm#1319)" + "scope": "region, tenure, accommodation, council tax band, benefit-code amount mappings (Scotland's Adult and Child Disability Payment codes 117/118 and 121/122 into the PIP and DLA columns they replace; benefit recovery codes 69 and 70 unmapped; code 6 into bsp_reported where a weekly amount is within 1% of a Bereavement Support Payment rate's weekly equivalent, into widowed_parents_allowance_reported where it is at or below Widowed Parent's Allowance's 2024-25 rate of GBP 148.40 a week, and into bsp_reported otherwise); adult HOURTOT care-hours band code to weekly care_hours at the band's lower edge (codes 5, 6, 7 and 10 reach the 35-hour Carer's Allowance line); would_claim_carers_allowance from positive reported Carer's Allowance, the anchor carers_allowance_take_up opens to carers over the earnings limit (microcosm#1319)" }, { "kind": "annualize_periodic_amounts", - "weeks_in_year": 52.17857142857143, - "weeks_in_year_exceptions": { - "state_pension_reported": { - "weeks_in_year": 52, - "reason": "The State Pension is paid at weekly rates, and policyengine-uk reads state_pension_reported back to a weekly amount at 52 weeks a year before comparing it with the full rate, so at 365.25 / 7 a full-rate pensioner would read 0.34% above the full rate and the excess would become a protected payment. An exception for the State Pension alone to microcosm#1095's weekly amounts (María's ruling of 2026-10-20, microcosm#1278)." - } - } + "weeks_in_year": 52 }, { "kind": "assign_binary_from_rate", @@ -294,6 +288,7 @@ "property_income", "reports_rent_from_other_property", "maintenance_income", + "spousal_maintenance_income", "miscellaneous_income", "private_transfer_income", "lump_sum_income", @@ -316,6 +311,7 @@ "pension_contributions_via_salary_sacrifice", "salary_sacrifice_reported", "salary_sacrifice_asked", + "frs_bonus_amount", "child_benefit_reported", "income_support_reported", "housing_benefit_reported", @@ -344,6 +340,7 @@ "esa_includes_support_component", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", "benunit_id", "frs_benunit_capital", "is_married", @@ -385,6 +382,7 @@ "dividend_income", "owned_company_income_share", "maintenance_income", + "spousal_maintenance_income", "miscellaneous_income", "student_loan_repayments", "statutory_sick_pay", @@ -768,7 +766,7 @@ ], "donor_filter": "raw ctreb != 1 and ctannual > 0", "missing": "raw ctannual < 0 or NaN, or ctannual == 0 with ctpaid == 1 and ctreb != 1", - "value": "council tax before council tax reduction: CTANNUAL net of the Scottish water and sewerage charges ((CWATAMT1 + CSEWAMT1) x 365.25/7, at 0.65 where CTREB is 1; CWATAMTD where CWATAMT1 is not positive), plus CTREBAMT x 365.25/7 where CTREB is 1 and CTREBAMT > 0; a CTREB 1 household without a positive CTREBAMT takes the larger of its netted CTANNUAL and its cell mean" + "value": "council tax before council tax reduction: CTANNUAL net of the Scottish water and sewerage charges ((CWATAMT1 + CSEWAMT1) x 52, at 0.65 where CTREB is 1; CWATAMTD where CWATAMT1 is not positive), plus CTREBAMT x 52 where CTREB is 1 and CTREBAMT > 0; a CTREB 1 household without a positive CTREBAMT takes the larger of its netted CTANNUAL and its cell mean" } ], "outputs": [ @@ -864,7 +862,7 @@ ], "donor_filter": "participants with non-negative reported amounts", "missing": "participants with sentinel negative reported amounts", - "value": "donor-mean fill, floored at zero, annualized with 365.25 / 7" + "value": "donor-mean fill, floored at zero, annualized at 52 weeks" } ], "outputs": [ @@ -935,7 +933,7 @@ "esa_health_condition_proxy", "esa_support_group_proxy" ], - "notes": "The proxies are labels, not entitlement determinations. JSA hours compare against 16 * (365.25 / 7) on the E2 spine hours scale; state_pension_age is consumed but not persisted." + "notes": "The proxies are labels, not entitlement determinations. JSA hours compare against 16 * 52 on the E2 spine hours scale; state_pension_age is consumed but not persisted." }, { "stage": "frs_education_grant_split", @@ -1131,7 +1129,7 @@ "maximum_extended_childcare_hours_usage", "max_free_entitlement_hours_used" ], - "notes": "Identity-keyed seed 0 streams replace the incumbent sequential take-up seed 100; salts are output variable names. Reported positive receipt anchors are transient and consumed only. The Universal Credit draw's population is the benefit units with a UC claimant or partner (is_uc_claimant) aged 18 or over and under Pension Credit qualifying age (66 for everyone who can reach it in this release), the age and role conditions of policyengine-uk 2.147.2's is_uc_eligible; the engine lockstep test pins it and names the three engine cases not mirrored (16- and 17-year-old claimants under the UC Regs 2013 reg 8 exceptions, mixed-age couples on the Pension Credit route, and from 2.128.0 pension-age families moved onto Universal Credit when their legacy benefit closes, SI 2014/1230 reg 60A). So the contract rate is a share of those units, an anchor outside them stays true, and any other unit is never drawn; a unit with no claimant or partner of that age keeps its reported Housing Benefit, which a claim it cannot make no longer zeroes (#882, microcosm#867, microcosm#1095). The universal childcare flag is nested under the working-parent one. A unit that claims the extended hours claims the universal hours, and any other unit claims them at the contract's universal_childcare rate, the rate conditional on not claiming the extended hours; the extended draw is unchanged. childcare_copy_take_up later re-draws the childcare flags and hours of the support and CGT copies on their own benefit units. A child of DfE age 0 or 1 (its age on 31 December of the fit's model year, the age DfE counts by) in a unit that claims the working-parent hours uses them at its age's contract rate, extended_childcare_age_0_usage or extended_childcare_age_1_usage (DfE registers far fewer of the youngest eligible children than of those aged 2 to 4, and fewer at 9 to 11 months than at age 1); a child that does not gets max_free_entitlement_hours_used 0, so the engine funds it no hours, and every other person keeps the engine's default of 30." + "notes": "Identity-keyed seed 0 streams replace the incumbent sequential take-up seed 100; salts are output variable names. Reported positive receipt anchors are transient and consumed only. The Universal Credit draw's population is the benefit units with a UC claimant or partner (is_uc_claimant) aged 18 or over and under Pension Credit qualifying age (66 for everyone who can reach it in this release), the age and role conditions of policyengine-uk 2.151.0's is_uc_eligible; the engine lockstep test pins it and names the three engine cases not mirrored (16- and 17-year-old claimants under the UC Regs 2013 reg 8 exceptions, mixed-age couples on the Pension Credit route, and from 2.128.0 pension-age families moved onto Universal Credit when their legacy benefit closes, SI 2014/1230 reg 60A). So the contract rate is a share of those units, an anchor outside them stays true, and any other unit is never drawn; a unit with no claimant or partner of that age keeps its reported Housing Benefit, which a claim it cannot make no longer zeroes (#882, microcosm#867, microcosm#1095). The universal childcare flag is nested under the working-parent one. A unit that claims the extended hours claims the universal hours, and any other unit claims them at the contract's universal_childcare rate, the rate conditional on not claiming the extended hours; the extended draw is unchanged. childcare_copy_take_up later re-draws the childcare flags and hours of the support and CGT copies on their own benefit units. A child of DfE age 0 or 1 (its age on 31 December of the fit's model year, the age DfE counts by) in a unit that claims the working-parent hours uses them at its age's contract rate, extended_childcare_age_0_usage or extended_childcare_age_1_usage (DfE registers far fewer of the youngest eligible children than of those aged 2 to 4, and fewer at 9 to 11 months than at age 1); a child that does not gets max_free_entitlement_hours_used 0, so the engine funds it no hours, and every other person keeps the engine's default of 30." }, { "stage": "frs_person_draws", @@ -1355,7 +1353,7 @@ "population": "uk_frs_raw_spine", "source_vintage": "2024-25", "mapped_build_period": 2024, - "annualization": "weekly raw FRS amounts * (365.25 / 7)", + "annualization": "weekly raw FRS amounts * 52", "status": "adjudicated_partial_replay", "retained_full_constituents": { "hmrc_spi_pay": { @@ -1364,7 +1362,7 @@ "raw_sources": [ "ADULT.INEARNS" ], - "formula": "max(0, ADULT.INEARNS) * (365.25 / 7)" + "formula": "max(0, ADULT.INEARNS) * 52" }, "hmrc_spi_unemployment_benefit_income": { "spi_concept": "UBISJA", @@ -1373,7 +1371,7 @@ "BENEFITS.BENEFIT=14:BENAMT", "BENEFITS.BENEFIT=19:BENAMT" ], - "formula": "sum(BENAMT where BENEFIT in {14, 19}) * (365.25 / 7)" + "formula": "sum(BENAMT where BENEFIT in {14, 19}) * 52" }, "hmrc_spi_incapacity_benefit_income": { "spi_concept": "INCPBEN", @@ -1381,7 +1379,7 @@ "raw_sources": [ "BENEFITS.BENEFIT=17:BENAMT" ], - "formula": "sum(BENAMT where BENEFIT == 17) * (365.25 / 7)", + "formula": "sum(BENAMT where BENEFIT == 17) * 52", "observed_support": "structural zero in the audited 2023-24 FRS; retained so future vintages flow" } }, @@ -1392,7 +1390,7 @@ "BENEFITS.BENEFIT=13:BENAMT", "BENEFITS.BENEFIT=16,VAR2 in {1,3}:BENAMT" ], - "formula": "sum(BENAMT where BENEFIT == 13 or (BENEFIT == 16 and VAR2 in {1, 3})) * (365.25 / 7)", + "formula": "sum(BENAMT where BENEFIT == 13 or (BENEFIT == 16 and VAR2 in {1, 3})) * 52", "scope": "identifiable_subset" }, "srp_regular_code5": { @@ -1400,7 +1398,7 @@ "raw_sources": [ "BENEFITS.BENEFIT=5:BENAMT" ], - "formula": "sum(BENAMT where BENEFIT == 5) * (365.25 / 7)", + "formula": "sum(BENAMT where BENEFIT == 5) * 52", "scope": "regular_code5_subset" } }, @@ -2201,6 +2199,7 @@ "afcs_reported", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", "winter_fuel_allowance_reported", "council_tax_benefit_reported", "jsa_contrib_reported", @@ -2585,6 +2584,7 @@ "afcs_reported", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", "winter_fuel_allowance_reported", "council_tax_benefit_reported", "jsa_contrib_reported", @@ -2747,6 +2747,7 @@ "private_rent_code": "DVPriRntR8", "main_residence_value": "DVhvalueR8", "non_residential_property_value": "DVBlDValR8_sum", + "non_residential_property_secured_debt": "DVBldDebtR8_sum", "savings": "DVSaValR8_aggr", "num_vehicles": "vcarnr8", "weight": "R8xshhwgt", @@ -2764,6 +2765,10 @@ "consumer_debt": "max(HFINWR8_SUM - HFINWNTR8_exSLC_Sum, 0)", "tenure_category": "Ten1R8 1 owned_outright; 2 or 3 owned_with_mortgage; 4 or 5 private_rent when DVPriRntR8 == 1, otherwise social_rent; any other code private_rent, counted in the receipt", "other_residential_property_value": "DVHseValR8_sum + DVBltValR8_sum (houses other than the main residence plus buy-to-let property)", + "other_residential_property_secured_debt": "DVHseDebtR8_sum + DVBLtDebtR8_sum (the debt secured on the other houses and on buy-to-let property)", + "directly_held_shares": "DVFShUKVR8_aggr + DVFESHARESR8_aggr (UK shares plus employee shares and options)", + "unit_and_investment_trusts": "DVFCollVR8_aggr", + "directly_held_share_fraction": "directly_held_shares / corporate_wealth_excl_isa where corporate_wealth_excl_isa > 0, else 0", "other_property_value": "DVPropertyR8 - (DVhvalueR8 + DVHseValR8_sum + DVBltValR8_sum + DVBlDValR8_sum + DVLUKValR8_sum), refused when negative", "other_financial_assets": "HFINWR8_SUM - (DVSaValR8_aggr + DVCISAVR8_aggr + corporate_wealth), refused when negative", "is_renting": "DVPriRntR8 == 1", @@ -2877,8 +2882,25 @@ "other_mortgage", "mortgage_debt", "consumer_debt", - "net_financial_wealth" - ] + "net_financial_wealth", + "directly_held_share_fraction", + "other_residential_property_secured_debt", + "non_residential_property_secured_debt" + ], + "holder_strata": { + "directly_held_share_fraction": "corporate_wealth_excl_isa", + "other_residential_property_secured_debt": "other_residential_property_value", + "non_residential_property_secured_debt": "non_residential_property_value" + }, + "share_split": { + "fraction": "directly_held_share_fraction", + "outputs": [ + "directly_held_shares", + "unit_and_investment_trusts" + ], + "undrawn_fraction": 1.0 + }, + "secured_debt_within": "other_mortgage" }, { "kind": "fold_into", @@ -2933,7 +2955,11 @@ "stocks_and_shares_isa", "student_loan_balance", "mortgage_debt", - "consumer_debt" + "consumer_debt", + "directly_held_shares", + "unit_and_investment_trusts", + "other_residential_property_secured_debt", + "non_residential_property_secured_debt" ], "nonnegative_outputs": [ "owned_land", @@ -2950,9 +2976,13 @@ "stocks_and_shares_isa", "student_loan_balance", "mortgage_debt", - "consumer_debt" + "consumer_debt", + "directly_held_shares", + "unit_and_investment_trusts", + "other_residential_property_secured_debt", + "non_residential_property_secured_debt" ], - "notes": "Ports incumbent WAS round-8 wealth imputation with signed E5 differences: exact lower-case column matching replaces the fuzzy r/w fallback; cash ISA uses DVCISAVR8_aggr and stocks-and-shares ISA uses DVIISAVR8_aggr; private pension wealth (WAS total private pension wealth less the current defined-benefit component; DB-type components at the SCAPE rate, money-purchase components at reported fund values) is drawn as its own output private_pension_wealth and no longer folded into corporate_wealth, which keeps only the share-like holdings - pension rights are disregarded capital in every means test (UC Regs 2013 Sch 10 para 10 and the HB/JSA/ESA/IS/SPC parallels; uk-data#452) - and the downstream chain segment conditions on both components; each chain segment starts its own fit and draw RNG streams from a child seed derived deterministically from the declared seed (start_chain respawns from the model seed on every call, so one shared model coupled the k-th target of every segment); corporate_wealth folds stocks-and-shares ISA after drawing corporate_wealth_excl_isa; recipient Northern Ireland regions are mapped to Wales for prediction only; student_loan_balance is allocated by household id rather than the incumbent positional off-by-one. Tenure enters every chain segment as one four-way category built the same way on both sides (microcosm#1063): the donor's from Ten1R8 and DVPriRntR8 (owned outright; buying with a mortgage or part rent, part mortgage; rented or rent-free from a private landlord; rented from a council or housing association), the recipient's from the frame's tenure_type (council and housing association together), so the stage reads no engine tenure formula. Two columns are structural in tenure and are fitted and drawn inside their stratum only, zero by rule elsewhere: main_residence_value on the owner tenures (every WAS owner has a positive value and no renter has one) and main_residence_mortgage (TotMortR8) on the mortgaged tenure. mortgage_debt is HMortGR8, all of the household's mortgages, and is derived as the main-residence mortgage plus the mortgages on other property (other_mortgage, HMortGR8 less TotMortR8 on the donor: buy-to-let, second homes and the rest), which are held on every tenure and drawn without a stratum, so an outright owner's or a renter's buy-to-let keeps its mortgage beside the property it is secured on (OthMortR8_sum is read for the receipt only); the donor's conditioning copy carries the same rule, so consumer_debt is fitted on values recipients can hold. Totals are not drawn: property_wealth is the sum of land, the main residence, other houses, buildings and a drawn remainder (buy-to-let, overseas and other property), gross_financial_wealth is savings, the cash ISA, the share-like holdings and a drawn remainder, and net_financial_wealth is gross less consumer debt and the student loan balance - identities the pinned tab satisfies on every row and the cleaning step refuses a donor that breaks. A sum of donor-valued components that leaves the donor's range for the total gives up the excess from the remainder first, and the receipt counts the rows. Eight chain segments, each with its own child seed: land; the main residence; the other property components; pension and share-like wealth; the financial components, vehicles and the student loan balance; the main-residence mortgage; the other mortgages; consumer debt. HFINWNTR8_exSLC_Sum is net financial wealth excluding student loans, so gross less it is the non-student-loan financial liabilities; UKDS SN 7215 documentation is the codebook. Engine predictors materialize at their native entity and person/benunit values are summed to household, reproducing the incumbent map_to=household semantics; region is one-hot encoded jointly across donor and recipient (the incumbent's dummy encoding), with unmapped donor GOR codes becoming all-zero dummy rows. The WAS and FRS predictor definitions are not fully like-for-like and are ported as-is; raw WAS missing values are blanket-filled with zero; UKDS negative sentinel codes (-9/-8/-7/-6) are recoded to zero for the nonnegative-domain columns the licensed audit found carrying them (vcarnr8: 2 rows; HBedRmR8: 95.8 percent - the bedrooms question is effectively unasked in the WAS household file, predictor-quality revisit registered on microcosm#145) - a signed difference vs the incumbent, which trains on raw sentinels; DVPriRntR8's -9 is structural not-applicable so the private-renter reading is unchanged; genuinely negative domains are never recoded. The recipient council_tax predictor is the bill the household pays, council_tax less council_tax_rebate, the quantity the WAS donor records, since the spine's council_tax is the liability before council tax reduction (uk-data#496/#499, microcosm#1095). The donor council_tax is DVCTaxAmtAnnualR8, the annual amount paid (CTAmtR8 is one instalment), its children are NumChildR8 (NumCh18R8 overlaps NumAdultR8), and the recipient adults and children are the household's FRS claimants and partners and its other members (is_uc_claimant), which together make the household size on both sides; rental_income is the donor's net rent DVNetRentAmtAnnualR8_aggr against the household's property_income (uk-data#486/#495, microcosm#1095)." + "notes": "Ports incumbent WAS round-8 wealth imputation with signed E5 differences: exact lower-case column matching replaces the fuzzy r/w fallback; cash ISA uses DVCISAVR8_aggr and stocks-and-shares ISA uses DVIISAVR8_aggr; private pension wealth (WAS total private pension wealth less the current defined-benefit component; DB-type components at the SCAPE rate, money-purchase components at reported fund values) is drawn as its own output private_pension_wealth and no longer folded into corporate_wealth, which keeps only the share-like holdings - pension rights are disregarded capital in every means test (UC Regs 2013 Sch 10 para 10 and the HB/JSA/ESA/IS/SPC parallels; uk-data#452) - and the downstream chain segment conditions on both components; each chain segment starts its own fit and draw RNG streams from a child seed derived deterministically from the declared seed (start_chain respawns from the model seed on every call, so one shared model coupled the k-th target of every segment); corporate_wealth folds stocks-and-shares ISA after drawing corporate_wealth_excl_isa; recipient Northern Ireland regions are mapped to Wales for prediction only; student_loan_balance is allocated by household id rather than the incumbent positional off-by-one. Tenure enters every chain segment as one four-way category built the same way on both sides (microcosm#1063): the donor's from Ten1R8 and DVPriRntR8 (owned outright; buying with a mortgage or part rent, part mortgage; rented or rent-free from a private landlord; rented from a council or housing association), the recipient's from the frame's tenure_type (council and housing association together), so the stage reads no engine tenure formula. Two columns are structural in tenure and are fitted and drawn inside their stratum only, zero by rule elsewhere: main_residence_value on the owner tenures (every WAS owner has a positive value and no renter has one) and main_residence_mortgage (TotMortR8) on the mortgaged tenure. mortgage_debt is HMortGR8, all of the household's mortgages, and is derived as the main-residence mortgage plus the mortgages on other property (other_mortgage, HMortGR8 less TotMortR8 on the donor: buy-to-let, second homes and the rest), which are held on every tenure and drawn without a stratum, so an outright owner's or a renter's buy-to-let keeps its mortgage beside the property it is secured on (OthMortR8_sum is read for the receipt only); the donor's conditioning copy carries the same rule, so consumer_debt is fitted on values recipients can hold. Totals are not drawn: property_wealth is the sum of land, the main residence, other houses, buildings and a drawn remainder (buy-to-let, overseas and other property), gross_financial_wealth is savings, the cash ISA, the share-like holdings and a drawn remainder, and net_financial_wealth is gross less consumer debt and the student loan balance - identities the pinned tab satisfies on every row and the cleaning step refuses a donor that breaks. A sum of donor-valued components that leaves the donor's range for the total gives up the excess from the remainder first, and the receipt counts the rows. Eleven chain segments, each with its own child seed: land; the main residence; the other property components; pension and share-like wealth; the financial components, vehicles and the student loan balance; the main-residence mortgage; the other mortgages; consumer debt; then three appended after them, so the first eight draw as they did before them (microcosm#1095, the WAS property draw), each fitted on the donors and drawn for the recipients holding the column holder_strata names. The first is the directly held fraction of the share-like holdings outside ISAs, from which the stage writes directly_held_shares (WAS UK shares plus employee shares and options) and unit_and_investment_trusts (WAS collective investments, which the survey asks about in one question; uk-data#501), the inputs policyengine-uk reads inside corporate_wealth (pe-uk#1974): the split is written on the final corporate_wealth less the stocks-and-shares ISA, so the two and the ISA sum to corporate_wealth and the engine's share_like_capital stays corporate_wealth; a household with such holdings but no drawn fraction (a clip that lowered the ISA alone) holds them directly (undrawn_fraction), and the receipt counts it. The other two are the debt secured on other residential property (WAS DVHseDebtR8_sum + DVBLtDebtR8_sum) and on non-residential property (DVBldDebtR8_sum), which policyengine-uk deducts after the sale costs in valuing Universal Credit property capital (UC Regs 2013 reg 49(1)(b)): each is zero where the final value of its asset is zero, and the two are parts of the mortgages on other property, so where their sum passes other_mortgage both are scaled down to it (secured_debt_within); the receipt counts the rows each rule touched, and the wealth_coherence gate holds the split and the debts as identities. HFINWNTR8_exSLC_Sum is net financial wealth excluding student loans, so gross less it is the non-student-loan financial liabilities; UKDS SN 7215 documentation is the codebook. Engine predictors materialize at their native entity and person/benunit values are summed to household, reproducing the incumbent map_to=household semantics; region is one-hot encoded jointly across donor and recipient (the incumbent's dummy encoding), with unmapped donor GOR codes becoming all-zero dummy rows. The WAS and FRS predictor definitions are not fully like-for-like and are ported as-is; raw WAS missing values are blanket-filled with zero; UKDS negative sentinel codes (-9/-8/-7/-6) are recoded to zero for the nonnegative-domain columns the licensed audit found carrying them (vcarnr8: 2 rows; HBedRmR8: 95.8 percent - the bedrooms question is effectively unasked in the WAS household file, predictor-quality revisit registered on microcosm#145) - a signed difference vs the incumbent, which trains on raw sentinels; DVPriRntR8's -9 is structural not-applicable so the private-renter reading is unchanged; genuinely negative domains are never recoded. The recipient council_tax predictor is the bill the household pays, council_tax less council_tax_rebate, the quantity the WAS donor records, since the spine's council_tax is the liability before council tax reduction (uk-data#496/#499, microcosm#1095). The donor council_tax is DVCTaxAmtAnnualR8, the annual amount paid (CTAmtR8 is one instalment), its children are NumChildR8 (NumCh18R8 overlaps NumAdultR8), and the recipient adults and children are the household's FRS claimants and partners and its other members (is_uc_claimant), which together make the household size on both sides; rental_income is the donor's net rent DVNetRentAmtAnnualR8_aggr against the household's property_income (uk-data#486/#495, microcosm#1095)." }, { "stage": "was_lisa", @@ -4158,6 +4188,16 @@ "parameter_path": "gov.economic_assumptions.indices.obr.consumer_price_index", "from_window": "fiscal_year" }, + "liquid_fuel_consumption": { + "basis": "engine_parameter", + "parameter_path": "gov.economic_assumptions.indices.obr.consumer_price_index", + "from_window": "fiscal_year" + }, + "solid_fuel_consumption": { + "basis": "engine_parameter", + "parameter_path": "gov.economic_assumptions.indices.obr.consumer_price_index", + "from_window": "fiscal_year" + }, "employment_income": { "basis": "engine_parameter", "parameter_path": "gov.economic_assumptions.indices.obr.average_earnings" @@ -4279,7 +4319,9 @@ "bus_fare_spending", "domestic_energy_consumption", "electricity_consumption", - "gas_consumption" + "gas_consumption", + "liquid_fuel_consumption", + "solid_fuel_consumption" ], "categorical_predictors": [ "region", @@ -4618,11 +4660,15 @@ "parents": { "housing_water_and_electricity_consumption": { "drawn_subtracts": [ - "domestic_energy_consumption" + "domestic_energy_consumption", + "liquid_fuel_consumption", + "solid_fuel_consumption" ], "components": [ "electricity_consumption", - "gas_consumption" + "gas_consumption", + "liquid_fuel_consumption", + "solid_fuel_consumption" ] }, "transport_consumption": { @@ -4639,17 +4685,37 @@ } }, "maximum_total": "donor_support", - "uncarried": { + "level_division_excess": { + "rule": "excess_over_shared_ratio", + "basis": "drawn_spend_over_donor_spend_per_household", + "divisions": [ + "food_and_non_alcoholic_beverages_consumption", + "alcohol_and_tobacco_consumption", + "clothing_and_footwear_consumption", + "housing_water_and_electricity_consumption", + "household_furnishings_consumption", + "health_consumption", + "transport_consumption", + "communication_consumption", + "recreation_consumption", + "education_consumption", + "restaurants_and_hotels_consumption", + "miscellaneous_consumption" + ] + }, + "published_fuels": { "resource": "ons_household_expenditure_facts.json", "period_value": 2024, "classes": [ { "coicop": "04.5.3", - "concept": "ons.household_expenditure.liquid_fuels" + "concept": "ons.household_expenditure.liquid_fuels", + "column": "liquid_fuel_consumption" }, { "coicop": "04.5.4", - "concept": "ons.household_expenditure.solid_fuels" + "concept": "ons.household_expenditure.solid_fuels", + "column": "solid_fuel_consumption" } ] } @@ -4681,6 +4747,8 @@ "domestic_energy_consumption", "electricity_consumption", "gas_consumption", + "liquid_fuel_consumption", + "solid_fuel_consumption", "has_fuel_consumption", "uses_energy_prepayment_meter" ], @@ -4703,10 +4771,12 @@ "domestic_energy_consumption", "electricity_consumption", "gas_consumption", + "liquid_fuel_consumption", + "solid_fuel_consumption", "has_fuel_consumption", "uses_energy_prepayment_meter" ], - "notes": "Ports the incumbent LCFS consumption QRF, including NEED energy raking, with adjudicated weighted fits and an identity-keyed seed-0 fuel flag. The vehicle count is a numeric QRF predictor on both sides (LCFS a124 on the donor, the was_wealth draw of WAS vcarnr8 on the recipient, both clipped to 0-5), which retires the incumbent's WAS-to-LCFS has-fuel bridge (microcosm#890 A). The recipient fuel flag draws each of a household's vehicles as zero-emission at the battery-electric and fuel-cell share of the vendored DfT VEH1103 licensed-car stock (2024, Great Britain; plug-in hybrids count as fuel buyers), replacing the hand-copied NTS share (microcosm#890 E2): a household with vehicles buys fuel unless every one of them is zero-emission, so it is flagged at one minus that share raised to its vehicle count, and a one-vehicle household keeps the draw it had when the whole household was drawn at once (microcosm#1278; before, a household with several vehicles was all one or the other). The frame holds no fuel type, so the draw, keyed on the household identity, is what makes a vehicle-owning household a fuel buyer: it is random with respect to income and every other characteristic. With the redraw of microcosm#1113 every flagged household buys fuel, so this flag alone sets fuel incidence; who holds the zero-emission cars by income is a known residual. The household input uses_energy_prepayment_meter, which policyengine-uk reads for the July 2023 to March 2024 Energy Price Guarantee prepayment discount (PolicyEngine/policyengine-uk#2098, from 2.123.3), is drawn by the declared impute_prepayment_meter step (microcosm#1110): the donor prepays when it last put money on an electricity, gas or combined key or meter (b1751, b1701, b233, which the LCF asks only of prepayment-meter households) or its diary records a slot-meter payment (c45114, c45214), so electricity-only prepayment counts and a household with no meter payment, including one that did not answer, does not; a weighted regime-gated QRF on the chain's predictors fits that flag and each recipient draws it at uniforms keyed on its household id, which moves no other draw. The release exports it: policyengine-uk reads it from 2.123.3 and an older engine, Microcosm's locked one among them, ignores a column it does not know; the incumbent does not carry it until uk-data#539, so it is a reviewed extra column of the export surface. The frame flags about 3.0 million Great Britain households (10.5 %) at prior weights, against the around three million prepayment households the government counted when the discount began in July 2023 (a different reference period, households in both). Energy support clipping is exempt because NEED raking governs those columns. Bus fares are clipped to donor support before the pricing step (María's rulings 2026-09-15 and 2026-09-17), which bounds the region no area prices (Wales keeps the chain's raw draw) while the priced regions move beyond donor support afterwards; for that reason the column carries no committed support bound for the terminal gate. Domestic energy is raked in kWh to the NEED 2024 shape at the DESNZ level and priced at the average prices paid (microcosm#890 F, chronicle#270), where both NEED rakes take their mean-kWh margins from the vendored NEED 2024 tables (England and Wales by income band, tenure, property type and region; Scotland by income band, tenure and property type with the all-dwellings mean as its region margin; Northern Ireland untouched), the declared price_domestic_energy step converts spend to kWh and back at each household's QEP price region through the committed crosswalk using the calendar-2024 average variable unit cost and fixed cost across payment methods, standard metering, including VAT (Northern Ireland gas at the UK average because QEP publishes no Northern Ireland gas row), a gas fixed cost only for connected households, the gas connection imposed on the recipient frame at the published share of each region (DESNZ subnational gas meters over electricity meters, 2024) by disconnecting gas-positive households in an identity-keyed uniform order, skipping a household whose weight would overshoot the published share (Northern Ireland has no subnational row and keeps the positive-gas rule), and, where the draw leaves a region below its share, by the declared connect_rule (microcosm#1164): two weighted fits on the chain's predictors give each zero-gas household the probability that a donor like it pays for gas (a gradient-boosted classifier of the donor's gas payers) and the gas such a donor pays (a regime-gated QRF of the payers' gas spend, at quantiles keyed on the household id), and the region's zero-gas households are connected in an identity-keyed order drawn in proportion to that probability, by the same weight-fitting walk, until the share is met. The labelled energy split leaves about 80 % of donors paying for gas against the about 85 % of homes DESNZ counts gas meters for (the derivation it replaced gave gas to 98 %), so without the connect leg nine of the eleven Great Britain regions fell short of their share, and after the four-margin NEED rake one factor per fuel scales the kWh so the prior-weighted frame total equals the DESNZ Energy Trends domestic consumption at actual temperature summed over the four quarters of calendar 2024; NEED gas means are per gas-metered household, so the gas kWh margins are raked over connected households only while electricity is raked over every household, and the energy_rake gate recomputes every NEED mean, the DESNZ level and the connection shares from the vendored rows. After the level, no household is left above the domestic meter definitions behind the DESNZ total (NEED Annex B: gas meters under 73,200 kWh a year, electricity meters under 50,000 kWh on profile classes 1 and 2; María's ruling of 2026-10-12 on microcosm#1207's extreme energy values): the declared household_kwh_ceiling caps a household there, the households below it in the capped households' own NEED cells are re-raked to those cells' levelled means, and a proportional step restores the DESNZ total (microcosm#1164); the receipt counts the households capped and the share of the total they gave up, and the energy_rake gate checks both. Mobile homes have no NEED property-type row, so the rake takes them to the all-dwellings mean, the incumbent's translation; where every mobile home of a NEED geography draws a spend at or below the standing charge, that cell has no kWh for the rake to scale, and the declared zero_kwh_cells_at_need_mean starts it at its NEED mean before the first sweep (microcosm#1240). The receipt lists the cells it started, and the energy_rake gate fails on a started cell the stage does not declare and on any other cell with a zero mean. Both rakes band households on gross income, NEED's concept: the donor on LCFS p344p, cash income before tax, National Insurance, council tax and pension contributions, and the recipient on the same concept, its HBAI net income with the deductions policyengine-uk takes to reach it added back (council tax and domestic rates, income tax, National Insurance, student loan repayments, employee and personal pension contributions, maintenance and child payments, LVT), which the stage materializes for that band alone (microcosm#1164). Before it the recipient fell back to its HBAI net income, which put households in too low a band; the engine's household_gross_income would put them in too high a one, since it adds capital gains and the in-kind NHS, education and transport spending to cash income. The disconnection walk's seed-0 uniform order makes every group of households (dwelling type, income band, support channel) lose the same expected share of its drawn connected mass, so only the level of the drawn connection moves; the smallest-drawn-gas-first order it replaces piled the disconnections onto low-draw flats once the SPI support households drew gas from their own incomes, and NEED's Scottish property-type means then implied a level 2.6 % above the Scottish all-dwellings mean, a margin conflict the rake could not close. Bus fares are priced from journeys (microcosm#930), where the nts_bus_travel stage imputes each person's annual bus-in-London and other-local-bus trips and their concessionary eligibility, and the declared price_bus_journeys step sets bus_fare_spending as the sum over the household's non-eligible persons of trips times boardings per resident trip (the published BUS01 journeys over the published NTS0705a trips per resident times the ONS population) times the yield per fare-paying boarding (BUS05ai receipts over journeys less concessionary journeys), per area; bus-in-London trips take the London area's price for every resident, other-local-bus trips the price of the residence area (England outside London; Scotland and Northern Ireland from their own receipts and journeys with England's trip rate as the declared proxy); Wales is unpriced and keeps the raw draw. The chain still draws bus_fare_spending so later targets condition on the same raw draw; the emitted column is the priced value. The receipt records every factor, the frame-implied boardings beside the published ones and the frame's eligible trip share beside the publisher's concessionary boarding share, so the prior-weight fit of the bound receipts targets is read as a composition check, never a level the stage set; the #890 incidence draw and fare rake are retired. The 2024-25 diary (UKDS SN 9603, 2nd edition, whose household tab carries the annual weight as cal_weight_annual, the name weighta had; microcosm#1164) is moved to the base year by the declared uprate_donor_columns step (microcosm#890). Consumption columns and bus fares take the engine's CPI index from the April-to-March diary year, placed on the calendar-year index at three quarters of 2024 and one of 2025, back a quarter to calendar 2024 (microcosm#1113; the diary sits a quarter past it, so the factor is below one; the fare factor survives only where no fare cell levels the column, i.e. Wales). Income predictors take a factor of one: the diary year is the FRS 2024-25 year they are matched against. Petrol and diesel take the DESNZ pump-price times HMRC litres per head outturn from the vendored road_fuel_anchors.json, which sets only their donor distribution because the level step follows; the energy columns are exempt because the NEED 2024 shape at the DESNZ level and the QEP average prices paid set their level. The household adult and child counts (LCFS G018 and G019, the survey's age-18 split) predict on both sides; the recipient counts its members by age, not through the engine's is_adult and is_child flags, which policyengine-uk#1896 deprecates (uk-data#486, microcosm#1095). Road fuel incidence and level are set by two declared steps (microcosm#1113). The two-week diary leaves about a third of car-owning donors with no fuel purchase, which the chain reproduces among the households the fuel flag marks as fuel buyers, so the redraw_zero_road_fuel step redraws a flagged household that drew zero from the donor's distribution among households with positive road fuel, on the chain's predictors: a weighted regime-gated QRF draws the total, positive by construction, then the petrol share of it, at quantiles keyed on the household id; positive draws are kept. Then the level_road_fuel step, after the fuel flag has zeroed the households without a fuel car, scales petrol and diesel so their prior-weighted total equals ONS Consumer Trends household spending on COICOP 07.2.2 for calendar 2024 (the year of the DESNZ pump prices the donor uprating uses) less the donor's own other-fuels share of 07.2.2 (c72213), keeping the drawn mix. The diary's 07.2.2 has three lines (c72211 petrol, c72212 diesel and c72213, the other motor fuels and lubricants) and none for vehicle electricity. The LCFS diary records about a quarter less road fuel than ONS, and binding the OBR cars receipts had closed that gap by moving weight onto fuel-buying households; petrol and diesel therefore carry no committed support bound, like the other levelled columns. The totals that contain levelled columns are written back around them by the declared recompose_from_remainder step (microcosm#1113): each keeps its own chain draw less the chain's draws of the parts the stage re-levels, kept before any step touches them and floored at zero where the parts outgrow the total, and adds the levelled parts back, so housing_water_and_electricity_consumption is its draw less the drawn electricity and gas plus the levelled electricity and gas, and transport_consumption its draw less the drawn petrol, diesel and bus fares plus the levelled petrol and diesel and the priced bus fares. The chain draws each part after, and conditional on, its total, so the remainder is the chain's own split; a remainder drawn as a chain target of its own over-drew the vehicle-purchase tail of transport, 10 to 13 percent above the donor in-sample. The chain's domestic-energy target is the electricity and gas the stage derives from the diary's fuel, light and power (p537) by its labelled parts, from the LCF User Guide's derived-variable labels and P537 definition (microcosm#1164): each fuel's last account payment less its rebate (b489 electricity, b490 gas, read as the tab carries them; the stage refuses a donor where b489 equals b175 less b178, or b490 equals b170 less b173, to the penny for under 95 percent of that fuel's account payers, which pins the labels and the rebate's sign), its prepayment key or meter payment (b1751, b1701), its component of a combined utilities bill (b227 electricity, b226 gas) and of a combined key or meter payment (b2332, b2331), and the diary's second-dwelling account and slot-meter lines (c45112 and c45114, c45212 and c45214); what a combined payment leaves unsplit (the combined bill b231 less its rebate b174, and the combined key or meter payment b233, each less its parts) goes by the household's own electricity share where it pays for both fuels, and otherwise by the donor's mean share of the households that do, since a combined payment means the household pays for both; a donor with no such household fails. The diary's other fuels (central-heating oil b017 and c45312, bottled gas b018 and c45222, coal and coke c45411, wood and peat c45412, hot water, steam and ice c45511) are neither, so they stay in the housing remainder, and the donor_energy_split receipt records the split against p537: what reading refunds as zero adds, what the unclipped parts differ from p537 by, the weighted share of donors whose unclipped parts differ from their p537, and the account identity shares. The derivation it replaces read b226 as electricity by direct debit and b489 and b490 as prepayment payments, where the labels make them the gas component of a combined bill and the electricity and gas account payments less rebates. No column carries the other fuels; the receipt records their published ONS 04.5.3 and 04.5.4 spend. Each total is then held to the donor's realised maximum of that total (maximum_total: donor_support, the support every drawn column is clipped to; microcosm#1164), never below its parts, the excess coming out of its remainder: a remainder near the top of the diary's range plus levelled parts larger than the drawn ones would otherwise leave it. The two totals keep their committed support bounds, which the terminal support gate applies to the emitted frame; the recomposed_totals gate checks the declaration and the receipt, whose rows held at the maximum and weighted mass taken enter its identities. Every household spend column is at calendar-2024 prices as households paid them, the H5's year that policyengine-uk projects from and the calibration uprates to the calendar-2025 window (microcosm#1113): the diary columns by the CPI uprating to 2024, road fuel at ONS 07.2.2 for 2024, energy at DESNZ volume and QEP prices for 2024, and bus fares at each area's fiscal-year yield re-priced to 2024 by its fares index (the DfT local bus fares index by quarter for London and England outside London, Scotland's calendar-year index; Northern Ireland, which publishes no fares index, from its own yields of the two fiscal years 2024 overlaps, weighted three months and nine (microcosm#1207), in place of England's index, which carries the January 2025 rise in the English fare cap Northern Ireland did not have); the consumption_basis gate holds every level-setting step to that year. policyengine-uk applies the fiscal 2024-25 rules to model year 2024 (it samples each parameter at 30 April), so every levelled column sits about a quarter before the midpoint of the policy year it is taxed in; the calibration binds calendar-year facts as published and fiscal-year facts at the calendar window (María's rule of 2026-09-22). The stage receipt also reports, for each of the twelve COICOP divisions, the prior-weighted frame total against ONS Consumer Trends for the same calendar year less the classes a household diary does not record (02.3 narcotics, 04.2 owner-occupiers' imputed rent and 12.6.1 FISIM), on ONS's domestic concept, and the twelve together against the national concept as well; it is report-only (microcosm#1113). The report-only litres audit compares each fuel's frame litres with HMRC's clearances of that fuel scaled by the cars share of its road use, from the vendored DESNZ sub-national road transport fuel consumption by vehicle type and fuel (PolicyEngine/chronicle#322); the OBR cars share of fuel duty receipts, uniform across fuels, stays beside the total." + "notes": "Ports the incumbent LCFS consumption QRF, including NEED energy raking, with adjudicated weighted fits and an identity-keyed seed-0 fuel flag. The vehicle count is a numeric QRF predictor on both sides (LCFS a124 on the donor, the was_wealth draw of WAS vcarnr8 on the recipient, both clipped to 0-5), which retires the incumbent's WAS-to-LCFS has-fuel bridge (microcosm#890 A). The recipient fuel flag draws each of a household's vehicles as zero-emission at the battery-electric and fuel-cell share of the vendored DfT VEH1103 licensed-car stock (2024, Great Britain; plug-in hybrids count as fuel buyers), replacing the hand-copied NTS share (microcosm#890 E2): a household with vehicles buys fuel unless every one of them is zero-emission, so it is flagged at one minus that share raised to its vehicle count, and a one-vehicle household keeps the draw it had when the whole household was drawn at once (microcosm#1278; before, a household with several vehicles was all one or the other). The frame holds no fuel type, so the draw, keyed on the household identity, is what makes a vehicle-owning household a fuel buyer: it is random with respect to income and every other characteristic. With the redraw of microcosm#1113 every flagged household buys fuel, so this flag alone sets fuel incidence; who holds the zero-emission cars by income is a known residual. The household input uses_energy_prepayment_meter, which policyengine-uk reads for the July 2023 to March 2024 Energy Price Guarantee prepayment discount (PolicyEngine/policyengine-uk#2098, from 2.123.3), is drawn by the declared impute_prepayment_meter step (microcosm#1110): the donor prepays when it last put money on an electricity, gas or combined key or meter (b1751, b1701, b233, which the LCF asks only of prepayment-meter households) or its diary records a slot-meter payment (c45114, c45214), so electricity-only prepayment counts and a household with no meter payment, including one that did not answer, does not; a weighted regime-gated QRF on the chain's predictors fits that flag and each recipient draws it at uniforms keyed on its household id, which moves no other draw. The release exports it: policyengine-uk reads it from 2.123.3 and an older engine, Microcosm's locked one among them, ignores a column it does not know; the incumbent does not carry it until uk-data#539, so it is a reviewed extra column of the export surface. The frame flags about 3.0 million Great Britain households (10.5 %) at prior weights, against the around three million prepayment households the government counted when the discount began in July 2023 (a different reference period, households in both). Energy support clipping is exempt because NEED raking governs those columns. Bus fares are clipped to donor support before the pricing step (María's rulings 2026-09-15 and 2026-09-17), which bounds the region no area prices (Wales keeps the chain's raw draw) while the priced regions move beyond donor support afterwards; for that reason the column carries no committed support bound for the terminal gate. Domestic energy is raked in kWh to the NEED 2024 shape at the DESNZ level and priced at the average prices paid (microcosm#890 F, chronicle#270), where both NEED rakes take their mean-kWh margins from the vendored NEED 2024 tables (England and Wales by income band, tenure, property type and region; Scotland by income band, tenure and property type with the all-dwellings mean as its region margin; Northern Ireland untouched), the declared price_domestic_energy step converts spend to kWh and back at each household's QEP price region through the committed crosswalk using the calendar-2024 average variable unit cost and fixed cost across payment methods, standard metering, including VAT (Northern Ireland gas at the UK average because QEP publishes no Northern Ireland gas row), a gas fixed cost only for connected households, the gas connection imposed on the recipient frame at the published share of each region (DESNZ subnational gas meters over electricity meters, 2024) by disconnecting gas-positive households in an identity-keyed uniform order, skipping a household whose weight would overshoot the published share (Northern Ireland has no subnational row and keeps the positive-gas rule), and, where the draw leaves a region below its share, by the declared connect_rule (microcosm#1164): two weighted fits on the chain's predictors give each zero-gas household the probability that a donor like it pays for gas (a gradient-boosted classifier of the donor's gas payers) and the gas such a donor pays (a regime-gated QRF of the payers' gas spend, at quantiles keyed on the household id), and the region's zero-gas households are connected in an identity-keyed order drawn in proportion to that probability, by the same weight-fitting walk, until the share is met. The labelled energy split leaves about 80 % of donors paying for gas against the about 85 % of homes DESNZ counts gas meters for (the derivation it replaced gave gas to 98 %), so without the connect leg nine of the eleven Great Britain regions fell short of their share, and after the four-margin NEED rake one factor per fuel scales the kWh so the prior-weighted frame total equals the DESNZ Energy Trends domestic consumption at actual temperature summed over the four quarters of calendar 2024; NEED gas means are per gas-metered household, so the gas kWh margins are raked over connected households only while electricity is raked over every household, and the energy_rake gate recomputes every NEED mean, the DESNZ level and the connection shares from the vendored rows. After the level, no household is left above the domestic meter definitions behind the DESNZ total (NEED Annex B: gas meters under 73,200 kWh a year, electricity meters under 50,000 kWh on profile classes 1 and 2; María's ruling of 2026-10-12 on microcosm#1207's extreme energy values): the declared household_kwh_ceiling caps a household there, the households below it in the capped households' own NEED cells are re-raked to those cells' levelled means, and a proportional step restores the DESNZ total (microcosm#1164); the receipt counts the households capped and the share of the total they gave up, and the energy_rake gate checks both. Mobile homes have no NEED property-type row, so the rake takes them to the all-dwellings mean, the incumbent's translation; where every mobile home of a NEED geography draws a spend at or below the standing charge, that cell has no kWh for the rake to scale, and the declared zero_kwh_cells_at_need_mean starts it at its NEED mean before the first sweep (microcosm#1240). The receipt lists the cells it started, and the energy_rake gate fails on a started cell the stage does not declare and on any other cell with a zero mean. Both rakes band households on gross income, NEED's concept: the donor on LCFS p344p, cash income before tax, National Insurance, council tax and pension contributions, and the recipient on the same concept, its HBAI net income with the deductions policyengine-uk takes to reach it added back (council tax and domestic rates, income tax, National Insurance, student loan repayments, employee and personal pension contributions, maintenance and child payments, LVT), which the stage materializes for that band alone (microcosm#1164). Before it the recipient fell back to its HBAI net income, which put households in too low a band; the engine's household_gross_income would put them in too high a one, since it adds capital gains and the in-kind NHS, education and transport spending to cash income. The disconnection walk's seed-0 uniform order makes every group of households (dwelling type, income band, support channel) lose the same expected share of its drawn connected mass, so only the level of the drawn connection moves; the smallest-drawn-gas-first order it replaces piled the disconnections onto low-draw flats once the SPI support households drew gas from their own incomes, and NEED's Scottish property-type means then implied a level 2.6 % above the Scottish all-dwellings mean, a margin conflict the rake could not close. Bus fares are priced from journeys (microcosm#930), where the nts_bus_travel stage imputes each person's annual bus-in-London and other-local-bus trips and their concessionary eligibility, and the declared price_bus_journeys step sets bus_fare_spending as the sum over the household's non-eligible persons of trips times boardings per resident trip (the published BUS01 journeys over the published NTS0705a trips per resident times the ONS population) times the yield per fare-paying boarding (BUS05ai receipts over journeys less concessionary journeys), per area; bus-in-London trips take the London area's price for every resident, other-local-bus trips the price of the residence area (England outside London; Scotland and Northern Ireland from their own receipts and journeys with England's trip rate as the declared proxy); Wales is unpriced and keeps the raw draw. The chain still draws bus_fare_spending so later targets condition on the same raw draw; the emitted column is the priced value. The receipt records every factor, the frame-implied boardings beside the published ones and the frame's eligible trip share beside the publisher's concessionary boarding share, so the prior-weight fit of the bound receipts targets is read as a composition check, never a level the stage set; the #890 incidence draw and fare rake are retired. The 2024-25 diary (UKDS SN 9603, 2nd edition, whose household tab carries the annual weight as cal_weight_annual, the name weighta had; microcosm#1164) is moved to the base year by the declared uprate_donor_columns step (microcosm#890). Consumption columns and bus fares take the engine's CPI index from the April-to-March diary year, placed on the calendar-year index at three quarters of 2024 and one of 2025, back a quarter to calendar 2024 (microcosm#1113; the diary sits a quarter past it, so the factor is below one; the fare factor survives only where no fare cell levels the column, i.e. Wales). Income predictors take a factor of one: the diary year is the FRS 2024-25 year they are matched against. Petrol and diesel take the DESNZ pump-price times HMRC litres per head outturn from the vendored road_fuel_anchors.json, which sets only their donor distribution because the level step follows; the energy columns are exempt because the NEED 2024 shape at the DESNZ level and the QEP average prices paid set their level. The household adult and child counts (LCFS G018 and G019, the survey's age-18 split) predict on both sides; the recipient counts its members by age, not through the engine's is_adult and is_child flags, which policyengine-uk#1896 deprecates (uk-data#486, microcosm#1095). Road fuel incidence and level are set by two declared steps (microcosm#1113). The two-week diary leaves about a third of car-owning donors with no fuel purchase, which the chain reproduces among the households the fuel flag marks as fuel buyers, so the redraw_zero_road_fuel step redraws a flagged household that drew zero from the donor's distribution among households with positive road fuel, on the chain's predictors: a weighted regime-gated QRF draws the total, positive by construction, then the petrol share of it, at quantiles keyed on the household id; positive draws are kept. Then the level_road_fuel step, after the fuel flag has zeroed the households without a fuel car, scales petrol and diesel so their prior-weighted total equals ONS Consumer Trends household spending on COICOP 07.2.2 for calendar 2024 (the year of the DESNZ pump prices the donor uprating uses) less the donor's own other-fuels share of 07.2.2 (c72213), keeping the drawn mix. The diary's 07.2.2 has three lines (c72211 petrol, c72212 diesel and c72213, the other motor fuels and lubricants) and none for vehicle electricity. The LCFS diary records about a quarter less road fuel than ONS, and binding the OBR cars receipts had closed that gap by moving weight onto fuel-buying households; petrol and diesel therefore carry no committed support bound, like the other levelled columns. The totals that contain levelled columns are written back around them by the declared recompose_from_remainder step (microcosm#1113): each keeps its own chain draw less the chain's draws of the parts the stage re-levels, kept before any step touches them and floored at zero where the parts outgrow the total, and adds the levelled parts back, so housing_water_and_electricity_consumption is its draw less the drawn electricity and gas plus the levelled electricity and gas, and transport_consumption its draw less the drawn petrol, diesel and bus fares plus the levelled petrol and diesel and the priced bus fares. The chain draws each part after, and conditional on, its total, so the remainder is the chain's own split; a remainder drawn as a chain target of its own over-drew the vehicle-purchase tail of transport, 10 to 13 percent above the donor in-sample. The chain's domestic-energy target is the electricity and gas the stage derives from the diary's fuel, light and power (p537) by its labelled parts, from the LCF User Guide's derived-variable labels and P537 definition (microcosm#1164): each fuel's last account payment less its rebate (b489 electricity, b490 gas, read as the tab carries them; the stage refuses a donor where b489 equals b175 less b178, or b490 equals b170 less b173, to the penny for under 95 percent of that fuel's account payers, which pins the labels and the rebate's sign), its prepayment key or meter payment (b1751, b1701), its component of a combined utilities bill (b227 electricity, b226 gas) and of a combined key or meter payment (b2332, b2331), and the diary's second-dwelling account and slot-meter lines (c45112 and c45114, c45212 and c45214); what a combined payment leaves unsplit (the combined bill b231 less its rebate b174, and the combined key or meter payment b233, each less its parts) goes by the household's own electricity share where it pays for both fuels, and otherwise by the donor's mean share of the households that do, since a combined payment means the household pays for both; a donor with no such household fails. The diary's other fuels (central-heating oil b017 and c45312, bottled gas b018 and c45222, coal and coke c45411, wood and peat c45412, hot water, steam and ice c45511) are neither, and the donor_energy_split receipt records the split against p537: what reading refunds as zero adds, what the unclipped parts differ from p537 by, the weighted share of donors whose unclipped parts differ from their p537, and the account identity shares. The derivation it replaces read b226 as electricity by direct debit and b489 and b490 as prepayment payments, where the labels make them the gas component of a combined bill and the electricity and gas account payments less rebates. The liquid fuels (central-heating oil and paraffin with bottled gas, LPG with liquid) and the solid fuels (coal, coke, wood and peat) are drawn as liquid_fuel_consumption and solid_fuel_consumption, the inputs policyengine-uk 2.149.0 reads (pe-uk#2572; María's ruling of 2026-10-22), last in the chain so that every earlier draw is the chain's own, uprated to calendar-2024 prices as every diary spend column is; the housing total nets their draws and adds them back unchanged, so it always holds them, and hot water, steam and ice stays in its remainder. The receipt records the published ONS 04.5.3 and 04.5.4 spend beside each fuel's donor total at diary prices and the frame's draw (published_fuels). Before the hold, each COICOP division's drawn spend per household (a recomposed total's remainder, any other division's whole draw) is set against the donor's mean of the same spend (for housing and transport, the donor's total less the same parts, since the levelled parts keep their published levels and are no over-draw); a division above the divisions' shared ratio, measured once before any levelling, comes down to it (María's rulings of 2026-10-23 and 2026-10-24, microcosm#1278; Vahid's review of microcosm#1383, item 9); the receipt records each division's ratio and factor and the shared ratio (division_levelling) and each recomposed total's levelling_factor. Each total is then held to the donor's realised maximum of that total (maximum_total: donor_support, the support every drawn column is clipped to; microcosm#1164), never below its parts, the excess coming out of its remainder: a remainder near the top of the diary's range plus levelled parts larger than the drawn ones would otherwise leave it. The two totals keep their committed support bounds, which the terminal support gate applies to the emitted frame; the recomposed_totals gate checks the declaration and the receipt, whose rows held at the maximum and weighted mass taken enter its identities. Every household spend column is at calendar-2024 prices as households paid them, the H5's year that policyengine-uk projects from and the calibration uprates to the calendar-2025 window (microcosm#1113): the diary columns by the CPI uprating to 2024, road fuel at ONS 07.2.2 for 2024, energy at DESNZ volume and QEP prices for 2024, and bus fares at each area's fiscal-year yield re-priced to 2024 by its fares index (the DfT local bus fares index by quarter for London and England outside London, Scotland's calendar-year index; Northern Ireland, which publishes no fares index, from its own yields of the two fiscal years 2024 overlaps, weighted three months and nine (microcosm#1207), in place of England's index, which carries the January 2025 rise in the English fare cap Northern Ireland did not have); the consumption_basis gate holds every level-setting step to that year. policyengine-uk applies the fiscal 2024-25 rules to model year 2024 (it samples each parameter at 30 April), so every levelled column sits about a quarter before the midpoint of the policy year it is taxed in; the calibration binds calendar-year facts as published and fiscal-year facts at the calendar window (María's rule of 2026-09-22). The stage receipt also reports, for each of the twelve COICOP divisions, the prior-weighted frame total against ONS Consumer Trends for the same calendar year less the classes a household diary does not record (02.3 narcotics, 04.2 owner-occupiers' imputed rent and 12.6.1 FISIM), on ONS's domestic concept, and the twelve together against the national concept as well; it is report-only (microcosm#1113). The report-only litres audit compares each fuel's frame litres with HMRC's clearances of that fuel scaled by the cars share of its road use, from the vendored DESNZ sub-national road transport fuel consumption by vehicle type and fuel (PolicyEngine/chronicle#322); the OBR cars share of fuel duty receipts, uniform across fuels, stays beside the total. The liquid fuels hold bottled gas (b018, c45222), which COICOP puts under 04.5.2 (gas) and ONS's 04.5.3 leaves out, so the receipt also gives the donor's liquid fuels without it; neither heating-fuel column is levelled to ONS: the donor's diary totals are about twice ONS's, and the frame's draws reach neither those nor ONS's, so a costing on either needs levelling to ONS first (Vahid's review of microcosm#1383, item 8)." }, { "stage": "etb_vat", @@ -5255,7 +5325,7 @@ "kind": "derive", "derived": { "is_uc_couple": "count(is_benunit_head OR is_parent OR (dependent_children == 0)) over benefit-unit members == 2", - "uc_property_capital_share": "0.9 x (other_residential_property_value + non_residential_property_value) of the household where the unit holds the household reference person (is_household_head), else 0", + "uc_property_capital_share": "(max(0, 0.9 x other_residential_property_value - other_residential_property_secured_debt) + max(0, 0.9 x non_residential_property_value - non_residential_property_secured_debt)) of the household where the unit holds the household reference person (is_household_head), else 0", "uc_reported_capital": "frs_benunit_capital + uc_property_capital_share where frs_benunit_capital >= 0, else frs_benunit_capital; a base FRS-channel unit with universal_credit_reported_amount > 0 takes frs_benunit_capital alone", "positive_pre_takeup_uc_award": "max(0, uc_maximum_amount - uc_income_reduction) > 0", "has_non_child_member": "any(NOT is_child_or_qualifying_young_person_for_universal_credit) over benefit-unit members", @@ -5344,7 +5414,8 @@ "iidb_reported", "afcs_reported", "bsp_reported", - "war_widows_pension_reported" + "war_widows_pension_reported", + "widowed_parents_allowance_reported" ], "linkage": "person_source_id -> FRS-channel person_id", "reason": "follows an injury, service or a death, not income" @@ -5400,6 +5471,7 @@ "afcs_reported", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", "is_disabled_for_benefits", "is_enhanced_disabled_for_benefits", "is_severely_disabled_for_benefits", @@ -5460,8 +5532,8 @@ { "kind": "derive", "derived": { - "uc_property_capital_share": "0.9 x (other_residential_property_value + non_residential_property_value) of the household where the unit holds the household reference person (is_household_head), else 0", - "pension_credit_property_capital_share": "0.9 x (owned_land + other_residential_property_value + non_residential_property_value) of the household where the unit holds the household reference person (is_household_head), else 0", + "uc_property_capital_share": "(max(0, 0.9 x other_residential_property_value - other_residential_property_secured_debt) + max(0, 0.9 x non_residential_property_value - non_residential_property_secured_debt)) of the household where the unit holds the household reference person (is_household_head), else 0", + "pension_credit_property_capital_share": "(0.9 x owned_land + max(0, 0.9 x other_residential_property_value - other_residential_property_secured_debt) + max(0, 0.9 x non_residential_property_value - non_residential_property_secured_debt)) of the household where the unit holds the household reference person (is_household_head), else 0", "uc_reported_capital": "frs_benunit_capital + uc_property_capital_share where frs_benunit_capital >= 0 and NOT universal_credit_reported_anchor, else frs_benunit_capital", "pension_credit_reported_capital": "frs_benunit_capital + pension_credit_property_capital_share where frs_benunit_capital >= 0, else frs_benunit_capital", "would_claim_uc": "would_claim_uc OR universal_credit_reported_anchor" @@ -5476,7 +5548,7 @@ "frs_benunit_capital", "would_claim_uc" ], - "notes": "Runs after the last universal_credit_reported writer and before CGT cloning. Redraws every SPI benefit unit's capital, since the channel's incomes are SPI draws and the copied FRS answer no longer belongs to the unit (uk-data#495, microcosm#1095), from weighted base-FRS units with available capital in cells of UC reporter status by financial investment income band (interest, dividends and other investment income; property income is excluded because TOTCAPB4 counts accounts and assets) by is_uc_couple (two retained FRS claimant/partner roles, independently of legal is_married) by dependent-children band. A cell with fewer than 20 donors widens in the declared coarsening order, and reporter status is never coarsened. It then applies the monotone reported-UC OR refresh. The recorded capitals add property (uk-data#495, microcosm#1095), since policyengine-uk 2.147.2 replaces every capital source with a recorded figure of 0 or more and takes it as countable, and TOTCAPB4 has no property. WAS records the property for the household, and each means test counts the claimant's and partner's own capital (UC Regs 2013 reg 18; SPCA 2002 s.5). The household reference person's benefit unit therefore holds all of the household's property, and no other unit records any (María's ruling of 2026-10-12), since that person is the one in whose name the home is owned or rented, the best single reading of the owner. The engine shares household property over every claimant or partner instead, which puts a parent's property on an adult child's claim; a recorded figure consumes its own unit's share, so the engine's shares reach only a unit on the unavailable sentinel, and since policyengine-uk 2.136.1 such a unit takes its share whatever a recording unit beside it holds (the receipt counts any unit left there). The property counts at 90% of its value, market value less 10% for the costs of sale (UC Regs 2013 reg 49; SPC Regs 2002 reg 19); debt secured on it is not on the frame and is not netted (pe-uk#1969). Universal Credit counts other residential and non-residential property, and Pension Credit counts those and owned land. A unit that reports Universal Credit keeps its receipt and records the carrier alone for Universal Credit, since DWP assessed its capital to pay it and the property is imputed without that receipt. frs_benunit_capital stays the financial carrier, and its unavailable sentinel -1 passes through to both. Both recorded figures project to later years by GDP per head, as financial capital does, while policyengine-uk 2.139.1 projects other residential property by house prices, so the other residential property in a recorded figure grows faster than the engine's own projection of it; by the OBR indices the engine carries, it grows 1.5% faster by 2025 and 2.0% by 2026 from a 2024 base." + "notes": "Runs after the last universal_credit_reported writer and before CGT cloning. Redraws every SPI benefit unit's capital, since the channel's incomes are SPI draws and the copied FRS answer no longer belongs to the unit (uk-data#495, microcosm#1095), from weighted base-FRS units with available capital in cells of UC reporter status by financial investment income band (interest, dividends and other investment income; property income is excluded because TOTCAPB4 counts accounts and assets) by is_uc_couple (two retained FRS claimant/partner roles, independently of legal is_married) by dependent-children band. A cell with fewer than 20 donors widens in the declared coarsening order, and reporter status is never coarsened. It then applies the monotone reported-UC OR refresh. The recorded capitals add property (uk-data#495, microcosm#1095), since policyengine-uk 2.151.0 replaces every capital source with a recorded figure of 0 or more and takes it as countable, and TOTCAPB4 has no property. WAS records the property for the household, and each means test counts the claimant's and partner's own capital (UC Regs 2013 reg 18; SPCA 2002 s.5). The household reference person's benefit unit therefore holds all of the household's property, and no other unit records any (María's ruling of 2026-10-12), since that person is the one in whose name the home is owned or rented, the best single reading of the owner. The engine shares household property over every claimant or partner instead, which puts a parent's property on an adult child's claim; a recorded figure consumes its own unit's share, so the engine's shares reach only a unit on the unavailable sentinel, and since policyengine-uk 2.136.1 such a unit takes its share whatever a recording unit beside it holds (the receipt counts any unit left there). The property counts at 90% of its value, market value less 10% for the costs of sale, less the debt secured on it, class by class and floored at zero per class (UC Regs 2013 reg 49(1); SPC Regs 2002 reg 19), as policyengine-uk values Universal Credit property capital. The was_wealth stage draws the debt on other residential and on non-residential property (microcosm#1095), and owned land carries none, as the engine has no input for it (pe-uk#1969). Universal Credit counts other residential and non-residential property, and Pension Credit counts those and owned land. A unit that reports Universal Credit keeps its receipt and records the carrier alone for Universal Credit, since DWP assessed its capital to pay it and the property is imputed without that receipt. frs_benunit_capital stays the financial carrier, and its unavailable sentinel -1 passes through to both. Both recorded figures project to later years by GDP per head, as financial capital does, while policyengine-uk 2.139.1 projects other residential property by house prices, so the other residential property in a recorded figure grows faster than the engine's own projection of it; by the OBR indices the engine carries, it grows 1.5% faster by 2025 and 2.0% by 2026 from a 2024 base." }, { "stage": "uc_take_up", @@ -5558,18 +5630,19 @@ "pooling": "adjacent bands within a family type, lowest first, until the drawn units rest on minimum_pool_sources distinct household_source_id values; a short last pool joins the one before it", "minimum_pool_sources": 30, "drawn_units": "entitled, non-reporting units of the population that the engine does not move off their legacy benefits (legacy_benefits_closed) and that report none, since a legacy benefit the engine leaves in place ends once the unit claims UC", - "undrawn_claims": "a reporter at 1, a moved unit at the claim probability uc_legacy_closure_take_up's rule gives it (dwp_move_to_uc_facts.json), any other at its stored flag", + "undrawn_claims": "a reporter at 1, a moved unit at the claim probability uc_legacy_closure_take_up's rule gives it (dwp_move_to_uc_facts.json), a unit keeping income-related ESA at 0, any other at its stored flag", + "kept_legacy_award": "a unit whose claimant or partner reports income-related ESA (esa_income_reported), and that neither reports Universal Credit nor is moved off its legacy benefits, claims no Universal Credit, since policyengine-uk ends that award once the family claims it", "weight_mapping": "household_to_benunit", "residual_rate": "(T - F) / D, clipped to [0, 1]; T DWP's calendar-2025 mean count of the pool's bands, D the weight of the pool's drawn units and F the expected claims of its other entitled units, over Great Britain at the stage's household weights; realized by the drawn units claiming in the order of their uniform until their weight is nearest T - F, and applied at that uniform to Northern Ireland's drawn units too", "solve_scope": "great_britain", - "not_drawn": "keeps its stored flag" + "not_drawn": "keeps its stored flag, except a unit keeping income-related ESA, which claims none" } ], "outputs": [], "rewrites": [ "would_claim_uc" ], - "notes": "Runs after uc_capital_coherence, the last writer of universal_credit_reported and of the capital the engine assesses, and before uc_legacy_closure_take_up, which reads would_claim_uc. frs_take_up draws would_claim_uc early for FRS benefit units and spi_benefit_coherence redraws the SPI-channel units on the same rule: a reporter claims and the rest of the take-up contract's one rate times the age population is drawn uniformly over its non-reporting units, whatever their award. At the spine's design weights that put the caseload above DWP's for single people without children, couples and the smallest awards, and below it for lone parents, so the national solve met DWP's caseloads by reweighting low-income families. This stage redraws the flag for both channels. One temporary engine materialization, at the release's calibration year on the frame stamped with its survey year (as pension_credit_take_up reads Pension Credit), gives each benefit unit the award it would be paid if it claimed: universal_credit on a temporary copy where every unit claims and carries the deduction attributes uc_deduction_attributes will assign it (they read only the unit's identity and region), so after the benefit cap and deductions, the award the registry's dwp/uc_payment_dist rows band. It also gives whether the engine moves the unit off its legacy benefits that year (legacy_benefits_closed) and the UC child status the calibration's family type reads; all are consumed only. A unit with an award falls into a cell of DWP's family type by DWP's GBP 100 monthly award band, banded as the registry rows band an award, with one more band above GBP 2,500 a month. Within a family type, adjacent bands pool, lowest first, until the drawn units rest on at least 30 distinct source households. In each pool a reporter claims, and each drawn unit (entitled, non-reporting, in frs_take_up's age population and not moved off its legacy benefits) claims at r = (T - F) / D clipped to [0, 1]: T is DWP's count for the pool's bands, the mean of the April to December 2025 Stat-Xplore months (the facts the registry rows average, vendored as dwp_uc_award_band_facts.json), D the weight of the drawn units, and F the expected claims of the other entitled units: 1 for a reporter, the claim probability uc_legacy_closure_take_up's rule gives a moved unit (whose flag this stage leaves alone, so that probability does not move), and the stored flag for any other. T, F and D are Great Britain's at the stage's household weights, which DWP's counts cover. The drawn units claim in the order of their uniform until their weight is nearest T - F, so each pool realizes r to within one unit's weight rather than only in expectation, which a pool resting on a few dozen households can miss by several per cent, and Northern Ireland's drawn units claim below the same uniform. A pool whose other claims reach T, or whose T exceeds every entitled unit, cannot meet DWP's count; the receipt flags it. A unit with no award, or outside the age population, keeps its stored flag, the single-rate draw, which is how a unit claims once a reform or a later year entitles it. The uniform is the would_claim_uc identity stream frs_take_up and spi_benefit_coherence use. The receipt gives each pool's DWP count, its support in bands of distinct source households and its unreachable flag (only where ten or more sources carry the pool), and each family type's weighted caseload before and after; it gives no unit count except in bands and no rate. The uk_stage_uc_take_up gate reads it; the terminal take-up signal gate no longer measures would_claim_uc." + "notes": "Runs after uc_capital_coherence, the last writer of universal_credit_reported and of the capital the engine assesses, and before uc_legacy_closure_take_up, which reads would_claim_uc. frs_take_up draws would_claim_uc early for FRS benefit units and spi_benefit_coherence redraws the SPI-channel units on the same rule: a reporter claims and the rest of the take-up contract's one rate times the age population is drawn uniformly over its non-reporting units, whatever their award. At the spine's design weights that put the caseload above DWP's for single people without children, couples and the smallest awards, and below it for lone parents, so the national solve met DWP's caseloads by reweighting low-income families. This stage redraws the flag for both channels. One temporary engine materialization, at the release's calibration year on the frame stamped with its survey year (as pension_credit_take_up reads Pension Credit), gives each benefit unit the award it would be paid if it claimed: universal_credit on a temporary copy where every unit claims and carries the deduction attributes uc_deduction_attributes will assign it (they read only the unit's identity and region), so after the benefit cap and deductions, the award the registry's dwp/uc_payment_dist rows band. It also gives whether the engine moves the unit off its legacy benefits that year (legacy_benefits_closed) and the UC child status the calibration's family type reads; all are consumed only. A unit with an award falls into a cell of DWP's family type by DWP's GBP 100 monthly award band, banded as the registry rows band an award, with one more band above GBP 2,500 a month. Within a family type, adjacent bands pool, lowest first, until the drawn units rest on at least 30 distinct source households. In each pool a reporter claims, and each drawn unit (entitled, non-reporting, in frs_take_up's age population and not moved off its legacy benefits) claims at r = (T - F) / D clipped to [0, 1]: T is DWP's count for the pool's bands, the mean of the April to December 2025 Stat-Xplore months (the facts the registry rows average, vendored as dwp_uc_award_band_facts.json), D the weight of the drawn units, and F the expected claims of the other entitled units: 1 for a reporter, the claim probability uc_legacy_closure_take_up's rule gives a moved unit (whose flag this stage leaves alone, so that probability does not move), and the stored flag for any other. T, F and D are Great Britain's at the stage's household weights, which DWP's counts cover. The drawn units claim in the order of their uniform until their weight is nearest T - F, so each pool realizes r to within one unit's weight rather than only in expectation, which a pool resting on a few dozen households can miss by several per cent, and Northern Ireland's drawn units claim below the same uniform. A pool whose other claims reach T, or whose T exceeds every entitled unit, cannot meet DWP's count; the receipt flags it. A unit with no award, or outside the age population, keeps its stored flag, the single-rate draw, which is how a unit claims once a reform or a later year entitles it. The uniform is the would_claim_uc identity stream frs_take_up and spi_benefit_coherence use. The receipt gives each pool's DWP count, its support in bands of distinct source households and its unreachable flag (only where ten or more sources carry the pool), and each family type's weighted caseload before and after; it gives no unit count except in bands and no rate. The uk_stage_uc_take_up gate reads it; the terminal take-up signal gate no longer measures would_claim_uc. From policyengine-uk 2.149.0 a claim for Universal Credit ends a claimant's or partner's income-related ESA (pe-uk#2563), so a unit whose claimant or partner reports that award, and that neither reports Universal Credit nor is moved off its legacy benefits, claims none (kept_legacy_award): it was on the award at the interview, and a reported receipt is a fact (microcosm#1095). The closure draw downstream reads the flag this stage writes, so the closure probabilities the solve expects use it too, and the receipt bands the units it keeps off Universal Credit (income_related_esa_kept). Housing Benefit, which the engine also ends on a claim, keeps the stored flag here, pending the Housing Benefit and JSA PR (microcosm#867, microcosm#869)." }, { "stage": "uc_legacy_closure_take_up", @@ -5614,7 +5687,8 @@ "income_support", "jsa_income" ], - "true_without_draw": "a member reports universal_credit_reported, would_claim_uc is true, or no member reports a legacy benefit", + "reporters": "the claimant and partner (is_claimant_or_partner); an award another member claims in their own right closes on its own (policyengine-uk 2.146.0, pe-uk#2549)", + "true_without_draw": "the claimant or partner reports universal_credit_reported, would_claim_uc is true, or neither reports a legacy benefit", "rate": "claimed / (claimed + did not claim) for the combination, the all-households rate where DWP reports none", "probability": "clip((rate - p) / (1 - p), 0, 1)", "p": "the combination's weighted share of Great Britain's drawn units with would_claim_uc true, at the spine's design weights; the probability applies in Northern Ireland too", @@ -5627,7 +5701,7 @@ "outputs": [ "would_claim_uc_at_legacy_closure" ], - "notes": "Ports uk-data#534 (a draft, at c67077a66; uk-data#492) at the spine's design weights (microcosm#1095). policyengine-uk 2.128.0 (pe-uk#2119) moves a family off a legacy benefit DWP has closed (tax credits from 2025-26) and takes its other legacy awards away; the family then claims Universal Credit if would_claim_uc or would_claim_uc_at_legacy_closure is true, and the engine's default for the second, true, put every such family on Universal Credit. The stage runs after uc_take_up, the last writer of would_claim_uc (uc_capital_coherence is the last writer of universal_credit_reported), and before pension_credit_take_up and CGT cloning, so every SPI benefit unit draws on its own final receipts and every clone carries its source's draw. A benefit unit with a member reporting Universal Credit, a unit whose would_claim_uc is true, and a unit reporting none of the six legacy means-tested benefits (child_tax_credit, working_tax_credit, housing_benefit, esa_income, income_support and jsa_income, each read as a member's _reported above 0) is true, the engine's default. Every other unit is drawn at (r - p) / (1 - p), clipped to [0, 1], where r is DWP's claimed / (claimed + did not claim) for the unit's combination of legacy benefits (the all-households rate where DWP reports none; households still in progress are left out) and p is the combination's share of Great Britain's such units whose would_claim_uc is true, at the stage's household weights mapped to benefit units (uk-data#534's p is unweighted, as its draw precedes calibration; María's rulings of 2026-10-16 and 2026-10-17); the probability applies to the combination's units in Northern Ireland too, since DWP's rates cover Great Britain. So, in expectation, the weighted share of Great Britain's drawn units claiming at the closure in each combination is DWP's rate wherever p is at most r; where p exceeds it the probability is 0 and the receipt flags the combination (rate_unreachable), never p itself. Two limits carry over from uk-data#534. The drawn cohort includes units on the Pension Credit route, whose legacy benefits policyengine-uk does not close, and DWP's rates count every household sent a notice, entitled to Universal Credit or not. The uniform reads an identity-keyed stream on benunit_id." + "notes": "Ports uk-data#534 (a draft, at c67077a66; uk-data#492) at the spine's design weights (microcosm#1095). policyengine-uk 2.128.0 (pe-uk#2119) moves a family off a legacy benefit DWP has closed (tax credits from 2025-26) and takes its other legacy awards away; the family then claims Universal Credit if would_claim_uc or would_claim_uc_at_legacy_closure is true, and the engine's default for the second, true, put every such family on Universal Credit. The stage runs after uc_take_up, the last writer of would_claim_uc (uc_capital_coherence is the last writer of universal_credit_reported), and before pension_credit_take_up and CGT cloning, so every SPI benefit unit draws on its own final receipts and every clone carries its source's draw. A benefit unit whose claimant or partner reports Universal Credit, a unit whose would_claim_uc is true, and a unit whose claimant and partner report none of the six legacy means-tested benefits (child_tax_credit, working_tax_credit, housing_benefit, esa_income, income_support and jsa_income, each read as the claimant's or partner's _reported above 0, is_claimant_or_partner) is true, the engine's default. Only the claimant's and partner's reports count, since policyengine-uk 2.146.0 (pe-uk#2549) closes an award through its owners, so an award another member claims in their own right closes on its own and does not move the family. Every other unit is drawn at (r - p) / (1 - p), clipped to [0, 1], where r is DWP's claimed / (claimed + did not claim) for the unit's combination of legacy benefits (the all-households rate where DWP reports none; households still in progress are left out) and p is the combination's share of Great Britain's such units whose would_claim_uc is true, at the stage's household weights mapped to benefit units (uk-data#534's p is unweighted, as its draw precedes calibration; María's rulings of 2026-10-16 and 2026-10-17); the probability applies to the combination's units in Northern Ireland too, since DWP's rates cover Great Britain. So, in expectation, the weighted share of Great Britain's drawn units claiming at the closure in each combination is DWP's rate wherever p is at most r; where p exceeds it the probability is 0 and the receipt flags the combination (rate_unreachable), never p itself. Two limits carry over from uk-data#534. The drawn cohort includes units on the Pension Credit route, whose legacy benefits policyengine-uk does not close, and DWP's rates count every household sent a notice, entitled to Universal Credit or not. The uniform reads an identity-keyed stream on benunit_id." }, { "stage": "pension_credit_take_up", @@ -5788,7 +5862,7 @@ "output": "would_claim_carers_allowance", "draw": "would_claim_carers_allowance", "assignment_unit": "person", - "eligibility": "persons outside Scotland whose care_hours reach policyengine-uk's gov.dwp.carers_allowance.min_hours, who report no Carer's Allowance, and whom is_gainfully_employed_for_carers_allowance holds gainfully employed at the survey year: the carers the earnings limit alone keeps from the allowance. Scotland stays closed, since Carer Support Payment reads the same flag; policyengine-uk applies its earnings limit from 2.146.1, and opening Scotland is a follow-up (microcosm#1319)", + "eligibility": "persons whose care_hours reach policyengine-uk's gov.dwp.carers_allowance.min_hours, who report no Carer's Allowance, and whom is_gainfully_employed_for_carers_allowance holds gainfully employed at the survey year: the carers the earnings limit alone keeps from the allowance. In Scotland the flag is Carer Support Payment's, which policyengine-uk pays under its own earnings limit from 2.146.1", "reported_true_anchor": "carers_allowance_reported > 0", "rate_key": "carers_allowance_newly_entitled", "rate_derivation": "the take-up contract's carers_allowance_newly_entitled rate, drawn flat over the eligible persons; would_claim = reported OR (eligible AND u < rate), so a reporter stays true and every other person false", @@ -5799,7 +5873,7 @@ "rewrites": [ "would_claim_carers_allowance" ], - "notes": "Runs after the SPI income chain, UC capital coherence and the Pension Credit and Child Benefit redraws, before CGT cloning, so every clone carries its source's draw (microcosm#1319). frs_spine sets would_claim_carers_allowance from reported receipt and the SPI income chain re-derives it from the refilled receipt on the rows it redraws, so that care_hours qualifies a carer for the Universal Credit carer element without paying the allowance to every carer (#882). A carer above the earnings limit cannot report the allowance, so no reform that widens it reached a carer who would claim once entitled: the April 2025 rise of the limit from £151 to £196 a week brought an estimated 61,000 more people into eligibility (Independent Review of Carer's Allowance Overpayments, July 2025, chapter 7). One temporary engine materialization at the survey year, on the frame's own values, gives each person's is_gainfully_employed_for_carers_allowance (consumed only); the engine reads a year's parameters at 30 April, so the limit is 2024-25's £151. A person outside Scotland whose care_hours reach the engine's gov.dwp.carers_allowance.min_hours (35), who reports no allowance and whom that test holds gainfully employed claims at the take-up contract's carers_allowance_newly_entitled rate (0.6, María's ruling of 2026-10-20, sensitivity 0.45 to 0.75) on the person's identity-keyed uniform (seed 0, salt would_claim_carers_allowance): would_claim = reported OR (eligible AND u < rate). A reporter stays true; a carer under the limit who reports no allowance stays false, as the survey records them entitled and not claiming. Scotland stays closed, since Carer Support Payment reads the same flag; policyengine-uk applies its earnings limit from 2.146.1, and opening Scotland is a follow-up (microcosm#1319). The earnings test is read before salary_sacrifice moves some contributors' pension amounts out of their pay, so a drawn carer whom that conversion takes under the survey year's limit keeps the flag although the file then shows them entitled and not reporting. The stage rebuilds the flag from reported receipt and refuses a frame whose flag no longer follows it. Its receipt bands support on distinct source households (household_source_id), and gives a weighted total only where ten or more carry it and the realised share only where neither side rests on one to nine; the stage has no health gate." + "notes": "Runs after the SPI income chain, UC capital coherence and the Pension Credit and Child Benefit redraws, before CGT cloning, so every clone carries its source's draw (microcosm#1319). frs_spine sets would_claim_carers_allowance from reported receipt and the SPI income chain re-derives it from the refilled receipt on the rows it redraws, so that care_hours qualifies a carer for the Universal Credit carer element without paying the allowance to every carer (#882). A carer above the earnings limit cannot report the allowance, so no reform that widens it reached a carer who would claim once entitled: the April 2025 rise of the limit from £151 to £196 a week brought an estimated 61,000 more people into eligibility (Independent Review of Carer's Allowance Overpayments, July 2025, chapter 7). One temporary engine materialization at the survey year, on the frame's own values, gives each person's is_gainfully_employed_for_carers_allowance (consumed only); the engine reads a year's parameters at 30 April, so the limit is 2024-25's £151. A person whose care_hours reach the engine's gov.dwp.carers_allowance.min_hours (35), who reports no allowance and whom that test holds gainfully employed claims at the take-up contract's carers_allowance_newly_entitled rate (0.6, María's ruling of 2026-10-20, sensitivity 0.45 to 0.75) on the person's identity-keyed uniform (seed 0, salt would_claim_carers_allowance): would_claim = reported OR (eligible AND u < rate). A reporter stays true; a carer under the limit who reports no allowance stays false, as the survey records them entitled and not claiming. Scotland is drawn too (María's ruling of 2026-10-23): there the flag is Carer Support Payment's, which policyengine-uk pays only under its own earnings limit from 2.146.1 (PolicyEngine/policyengine-uk#2473), and the receipt reports Scotland apart. The earnings test is read before salary_sacrifice moves some contributors' pension amounts out of their pay, so a drawn carer whom that conversion takes under the survey year's limit keeps the flag although the file then shows them entitled and not reporting. The stage rebuilds the flag from reported receipt and refuses a frame whose flag no longer follows it. Its receipt bands support on distinct source households (household_source_id), and gives a weighted total only where ten or more carry it and the realised share only where neither side rests on one to nine; the stage has no health gate." }, { "stage": "uc_deduction_attributes", @@ -6324,7 +6398,7 @@ { "role": "policy_parameters", "kind": "versioned_parameter_tree", - "dependency": "policyengine-uk>=2.147.2 via microcosm-build[uk]", + "dependency": "policyengine-uk>=2.151.0 via microcosm-build[uk]", "parameters": [ "gov.hmrc.cgt.annual_exempt_amount" ], @@ -6405,7 +6479,7 @@ { "role": "policy_parameters", "kind": "versioned_parameter_tree", - "dependency": "policyengine-uk>=2.147.2 via microcosm-build[uk]", + "dependency": "policyengine-uk>=2.151.0 via microcosm-build[uk]", "parameters": [ "gov.hmrc.cgt.annual_exempt_amount", "gov.hmrc.cgt.badr.lifetime_limit", @@ -6556,9 +6630,41 @@ "resource": "salary_sacrifice_anchor.json", "format": "json", "runtime_sha256_required": true + }, + { + "role": "obr_salary_sacrifice_costing_facts", + "kind": "public_aggregate_reference", + "resource": "obr_salary_sacrifice_costing_facts.json", + "format": "json", + "runtime_sha256_required": true + }, + { + "role": "bonus_sacrifice_anchor", + "kind": "public_aggregate_reference", + "resource": "bonus_sacrifice_anchor.json", + "format": "json", + "runtime_sha256_required": true } ], "operations": [ + { + "kind": "verify_vendored_fact_resource", + "artifact_role": "obr_salary_sacrifice_costing_facts", + "resource": "obr_salary_sacrifice_costing_facts.json", + "feed_pin": "chronicle_feed.json", + "record_sets": [ + "obr.salary_sacrifice_costing_2026_02.tax_base.fy2027", + "obr.salary_sacrifice_costing_2026_02.tax_base.fy2028", + "obr.salary_sacrifice_costing_2026_02.tax_base.fy2029", + "obr.salary_sacrifice_costing_2026_02.tax_base.fy2030" + ], + "source_vintage": "OBR supplementary forecast information on salary sacrifice, 5 February 2026", + "mapped_build_period": 2024, + "period_mapping": "fiscal_year_2027_base_met_by_the_engine_projection", + "require_before_source_read": true, + "runtime_sha256_required": true, + "fail_on_mismatch": true + }, { "kind": "fit_weighted_qrf", "training_population": "support_channel == frs and not capital-gains clone and not CGT support copy and salary_sacrifice_asked == 1 and employment_income > 0", @@ -6591,16 +6697,49 @@ "salt": "salary_sacrifice_conversion", "receipt": "weighted_headcount", "reason": "Salary-sacrifice support stage rewrites pension columns and converted records' pay; household rows and typed household weights pass through and total household mass is conserved." + }, + { + "kind": "convert_bonuses_to_bonus_sacrifice", + "resource": "bonus_sacrifice_anchor.json", + "facts": "obr_salary_sacrifice_costing_facts.json", + "source": "frs_bonus_amount", + "output": "pension_contributions_via_bonus_sacrifice", + "candidates": "a bonus (frs_bonus_amount, or an SPI-channel adult's drawn bonus) > 0 and employment_income at least the anchor's annual upper earnings limit, after the salary conversion", + "move": "the bonus, at most move_pay_share_cap of employment_income, to pension_contributions_via_bonus_sacrifice; employment_income unchanged, since a sacrificed bonus is never received", + "move_pay_share_cap": 0.5, + "spi_bonus_draw": "an SPI-channel adult with pay draws the bonus share of pay (frs_bonus_amount over employment_income) of a base-FRS adult with pay in the same pay cell, by person weight, keyed on person_id; the cells are the base-FRS paid adults' weighted pay quantiles at spi_cell_quantiles, and a cell with fewer than spi_min_donor_sources donor source households joins the one below", + "spi_cell_quantiles": [ + 0.1, + 0.2, + 0.3, + 0.4, + 0.5, + 0.6, + 0.7, + 0.8, + 0.9, + 0.95, + 0.99 + ], + "spi_min_donor_sources": 20, + "spi_salt": "bonus_sacrifice_spi_bonus_share", + "threshold": 2000, + "solve": "the candidates in the order of their identity-keyed uniforms, taken while the projected base is nearer the anchor's OBR base: the anchor's weight growth times the sum of person weight times (max(0, g (S + B) - threshold) - max(0, g S - threshold)), with g the anchor's earnings growth, S the salary sacrifice and B the bonus sacrificed; every candidate where even all fall short", + "seed": 2024, + "salt": "bonus_sacrifice_conversion", + "receipt": "projected_base" } ], "outputs": [ "pension_contributions_via_salary_sacrifice", + "pension_contributions_via_bonus_sacrifice", "employee_pension_contributions", "employment_income", "salary_sacrifice_pre_conversion_pay" ], "nonnegative_outputs": [ "pension_contributions_via_salary_sacrifice", + "pension_contributions_via_bonus_sacrifice", "employee_pension_contributions", "employment_income", "salary_sacrifice_pre_conversion_pay" @@ -6610,7 +6749,7 @@ "employee_pension_contributions", "employment_income" ], - "notes": "The QRF trains only on the 2024-25 FRS asked subset with pay. Salary sacrifice is pay given up, so every amount, reported or predicted, is limited to the pay the person still receives, and a person without pay has none (uk-data#518, microcosm#1095); the limit bites above all on SPI-channel rows, which keep their FRS twin's answer beside pay redrawn from the SPI. The second arm creates support toward the reviewed 5.4m staging target by moving contributors' pension amounts, up to half their pay, into salary sacrifice and lowering their pay by the same amount, since the engine reads employment_income after sacrifice; what does not move stays an employee contribution, so the sacrifice never exceeds the pay that remains. Before microcosm#1069 c9 the pay stayed whole and the converted record lost its net-pay relief." + "notes": "The QRF trains only on the 2024-25 FRS asked subset with pay. Salary sacrifice is pay given up, so every amount, reported or predicted, is limited to the pay the person still receives, and a person without pay has none (uk-data#518, microcosm#1095); the limit bites above all on SPI-channel rows, which keep their FRS twin's answer beside pay redrawn from the SPI. The second arm creates support toward the reviewed 5.4m staging target by moving contributors' pension amounts, up to half their pay, into salary sacrifice and lowering their pay by the same amount, since the engine reads employment_income after sacrifice; what does not move stays an employee contribution, so the sacrifice never exceeds the pay that remains. Before microcosm#1069 c9 the pay stayed whole and the converted record lost its net-pay relief. The third arm adds bonus sacrifice beside pay toward the OBR's 2027-28 base above GBP 2,000 (microcosm#1340). A sacrificed bonus is never received, so the FRS records it in neither pay nor its bonus amounts, and pay stays as it is (María's ruling of 2026-10-24 on Vahid's review of microcosm#1383); a received FRS bonus marks a bonus-paying job and its size. An SPI-channel adult's FRS bonus is its twin's, beside the tape's pay, so it draws a bonus share of pay from a base-FRS adult in its pay cell instead." }, { "stage": "student_loans", @@ -6833,4 +6972,4 @@ "notes": "The last spine stage (uk-data#568, microcosm#1095). policyengine-uk imputes attends_private_school with a formula that ranks households by net income at their weights and compares a percentile rate, scaled to the national pupil count, with the stored attends_private_school_random_draw. Left to the formula, attendance is re-imputed in every simulation, so a reform to income tax, National Insurance or benefits switches pupils in or out, a population under one million people of weight imputes none (pe-uk#1905), and the calibration and the release read different flags once the weights change. This stage materializes the engine's attendance once, at the calibration year and the spine's design weights, and stores it, as the root stage stores months_since_last_birthday, so the solve and the release read the same flags; no stage after it copies or re-keys a person. Stored attendance no longer responds to income changes or to reforms of the attendance parameters, and a reform to the fee VAT does not move pupils either way in the pinned engine." } ] -} \ No newline at end of file +} diff --git a/packages/microcosm-build/src/microcosm/build/uk/spec/sources.yaml b/packages/microcosm-build/src/microcosm/build/uk/spec/sources.yaml index de937a0992..da690e1d0e 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/spec/sources.yaml +++ b/packages/microcosm-build/src/microcosm/build/uk/spec/sources.yaml @@ -370,13 +370,9 @@ stages: - kind: map_columns scope: 'raw-to-column E2 mappings and FRS claimant-role derivation (is_benunit_head OR is_parent OR no dependent children within the benefit unit) to is_uc_claimant; benunit.TOTCAPB4 -> frs_benunit_capital with blank, nonnumeric, or negative raw values -> named -1 unavailable sentinel (mapped-row count reported in stage evidence); Scottish water_and_sewerage_charges is the charge paid, (CWATAMT1 + CSEWAMT1) less the CTDISC/CT25D50D status discount, or where CTREB is 1 less the larger of that discount and the Water Charges Reduction Scheme''s 35% (the full-reduction case), and CWATAMTD where CWATAMT1 is not positive (uk-data#499, microcosm#1095); access_fund is ACCSSAMT annualised, except that a calendar-month award (ACCSSPD 5) that annualises to more than twice the largest annual-coded (ACCSSPD 52) award on the tab is read as the annual award, ACCSSAMT x 52/12 (microcosm#1095), and a tab with calendar-month awards but no annual-coded award refuses, since the threshold comes from that award; the stage evidence records the awards by period code, the threshold and the repaired count; is_blind is SPCREG1 = 1, registered blind or severely sight impaired with the local authority, read on the adult and child tabs alike, while partial-sight registration (SPCREG2) is not read (uk-data#523); esa_includes_support_component is false where a person''s ESA rows (BENEFIT 16) record VAR3 (ESAGROUP) 1 or 3, the work-related activity group or the assessment phase, and none records 2, the support group, and true everywhere else, policyengine-uk''s own default for an award of one''s own, and a benefits tab without VAR3 refuses (microcosm#1095); uc_is_in_startup_period holds for a self-employed person (EMPSTATI 3 or 4, a held self-employed JOB row with ETYPE 2-7 and no SEEND, or nonzero SEINCAM2) whose benefit unit''s UC claim (BENEFIT 95, UCSTART month/day/year) or whose first self-employed job (SEJBLONG, main job first) began less than 12 calendar months before INTDATE, except that a self-employed-job answer under a year from someone self-employed all year (SAMESIT 2 or every SDEMP month 3 or 4) who does not describe a business (JOBBUS 2) is a new engagement and does not date the trade (UC Regs 2013 reg 63, uk-data#527); is_claimant_or_partner is adult-table membership and is_hbai_dependent_child child-table membership (uk-data#524, uk-data#486), the claimant derivation already refusing a benefit unit without one or two adult records; CVPAY, the rent a boarder or lodger pays the householder, is not the payer''s property income but rent_paid_as_boarder where CONVBL is 1 and rent_paid_as_lodger otherwise, and liable_for_share_of_household_rent holds for a later benefit unit of a shared household (HHSTAT 2) with a rent share (SRENTAMT), Housing Benefit (HBOTHAMT) or a linked UC housing element (UCHOUSEL on BENEFIT 95) (pe-uk#2006, uk-data#512); uc_is_in_gainful_self_employment holds for a self-employed main job (EMPSTATI 3 or 4) whatever its profit, and for a side trade whose SEINCAM2 profit is above 0 and above INEARNS pay (UC Regs 2013 reg 64, ADM H4034, uk-data#525); reports_rent_from_other_property is an internal carrier, a positive ROYYR1 whether the letting made a profit or a loss (RENTPROF 2), which property_income counts as zero; the CGT stages read it as the landlord signal and the release drops it' - kind: map_coded_amounts - scope: region, tenure, accommodation, council tax band, benefit-code amount mappings (Scotland's Adult and Child Disability Payment codes 117/118 and 121/122 into the PIP and DLA columns they replace; benefit recovery codes 69 and 70 unmapped); adult HOURTOT care-hours band code to weekly care_hours at the band's lower edge (codes 5, 6, 7 and 10 reach the 35-hour Carer's Allowance line); would_claim_carers_allowance from positive reported Carer's Allowance, the anchor carers_allowance_take_up opens to carers over the earnings limit (microcosm#1319) + scope: region, tenure, accommodation, council tax band, benefit-code amount mappings (Scotland's Adult and Child Disability Payment codes 117/118 and 121/122 into the PIP and DLA columns they replace; benefit recovery codes 69 and 70 unmapped; code 6 into bsp_reported where a weekly amount is within 1% of a Bereavement Support Payment rate's weekly equivalent, into widowed_parents_allowance_reported where it is at or below Widowed Parent's Allowance's 2024-25 rate of GBP 148.40 a week, and into bsp_reported otherwise); adult HOURTOT care-hours band code to weekly care_hours at the band's lower edge (codes 5, 6, 7 and 10 reach the 35-hour Carer's Allowance line); would_claim_carers_allowance from positive reported Carer's Allowance, the anchor carers_allowance_take_up opens to carers over the earnings limit (microcosm#1319) - kind: annualize_periodic_amounts - weeks_in_year: 52.17857142857143 - weeks_in_year_exceptions: - state_pension_reported: - weeks_in_year: 52 - reason: 'The State Pension is paid at weekly rates, and policyengine-uk reads state_pension_reported back to a weekly amount at 52 weeks a year before comparing it with the full rate, so at 365.25 / 7 a full-rate pensioner would read 0.34% above the full rate and the excess would become a protected payment. An exception for the State Pension alone to microcosm#1095''s weekly amounts (María''s ruling of 2026-10-20, microcosm#1278).' + weeks_in_year: 52 - kind: assign_binary_from_rate output: uc_is_in_startup_period draw: uc_is_in_startup_period @@ -423,6 +419,7 @@ stages: - property_income - reports_rent_from_other_property - maintenance_income + - spousal_maintenance_income - miscellaneous_income - private_transfer_income - lump_sum_income @@ -445,6 +442,7 @@ stages: - pension_contributions_via_salary_sacrifice - salary_sacrifice_reported - salary_sacrifice_asked + - frs_bonus_amount - child_benefit_reported - income_support_reported - housing_benefit_reported @@ -473,6 +471,7 @@ stages: - esa_includes_support_component - bsp_reported - war_widows_pension_reported + - widowed_parents_allowance_reported - benunit_id - frs_benunit_capital - is_married @@ -513,6 +512,7 @@ stages: - dividend_income - owned_company_income_share - maintenance_income + - spousal_maintenance_income - miscellaneous_income - student_loan_repayments - statutory_sick_pay @@ -763,7 +763,7 @@ stages: - adulth == 1 donor_filter: raw ctreb != 1 and ctannual > 0 missing: raw ctannual < 0 or NaN, or ctannual == 0 with ctpaid == 1 and ctreb != 1 - value: 'council tax before council tax reduction: CTANNUAL net of the Scottish water and sewerage charges ((CWATAMT1 + CSEWAMT1) x 365.25/7, at 0.65 where CTREB is 1; CWATAMTD where CWATAMT1 is not positive), plus CTREBAMT x 365.25/7 where CTREB is 1 and CTREBAMT > 0; a CTREB 1 household without a positive CTREBAMT takes the larger of its netted CTANNUAL and its cell mean' + value: 'council tax before council tax reduction: CTANNUAL net of the Scottish water and sewerage charges ((CWATAMT1 + CSEWAMT1) x 52, at 0.65 where CTREB is 1; CWATAMTD where CWATAMT1 is not positive), plus CTREBAMT x 52 where CTREB is 1 and CTREBAMT > 0; a CTREB 1 household without a positive CTREBAMT takes the larger of its netted CTANNUAL and its cell mean' outputs: - council_tax nonnegative_outputs: @@ -834,7 +834,7 @@ stages: - 'single cell: EMA participants (code == 1; adema/ademaamt pair, eduma/edumaamt when adema is absent; chema/chemaamt for children)' donor_filter: participants with non-negative reported amounts missing: participants with sentinel negative reported amounts - value: donor-mean fill, floored at zero, annualized with 365.25 / 7 + value: donor-mean fill, floored at zero, annualized at 52 weeks outputs: - current_education - highest_education @@ -887,7 +887,7 @@ stages: - legacy_jobseeker_proxy - esa_health_condition_proxy - esa_support_group_proxy - notes: The proxies are labels, not entitlement determinations. JSA hours compare against 16 * (365.25 / 7) on the E2 spine hours scale; state_pension_age is consumed but not persisted. + notes: The proxies are labels, not entitlement determinations. JSA hours compare against 16 * 52 on the E2 spine hours scale; state_pension_age is consumed but not persisted. - stage: frs_education_grant_split survey: Family Resources Survey 2024-25 source: Department for Work and Pensions Family Resources Survey 2024-25, UK Data Service SN 9563, DOI 10.5255/UKDA-SN-9563-1; local licensed 2024_25 tabs. plus policyengine-uk DfE grant parameters. @@ -1029,7 +1029,7 @@ stages: nonnegative_outputs: - maximum_extended_childcare_hours_usage - max_free_entitlement_hours_used - notes: Identity-keyed seed 0 streams replace the incumbent sequential take-up seed 100; salts are output variable names. Reported positive receipt anchors are transient and consumed only. The Universal Credit draw's population is the benefit units with a UC claimant or partner (is_uc_claimant) aged 18 or over and under Pension Credit qualifying age (66 for everyone who can reach it in this release), the age and role conditions of policyengine-uk 2.147.2's is_uc_eligible; the engine lockstep test pins it and names the three engine cases not mirrored (16- and 17-year-old claimants under the UC Regs 2013 reg 8 exceptions, mixed-age couples on the Pension Credit route, and from 2.128.0 pension-age families moved onto Universal Credit when their legacy benefit closes, SI 2014/1230 reg 60A). So the contract rate is a share of those units, an anchor outside them stays true, and any other unit is never drawn; a unit with no claimant or partner of that age keeps its reported Housing Benefit, which a claim it cannot make no longer zeroes (#882, microcosm#867, microcosm#1095). The universal childcare flag is nested under the working-parent one. A unit that claims the extended hours claims the universal hours, and any other unit claims them at the contract's universal_childcare rate, the rate conditional on not claiming the extended hours; the extended draw is unchanged. childcare_copy_take_up later re-draws the childcare flags and hours of the support and CGT copies on their own benefit units. A child of DfE age 0 or 1 (its age on 31 December of the fit's model year, the age DfE counts by) in a unit that claims the working-parent hours uses them at its age's contract rate, extended_childcare_age_0_usage or extended_childcare_age_1_usage (DfE registers far fewer of the youngest eligible children than of those aged 2 to 4, and fewer at 9 to 11 months than at age 1); a child that does not gets max_free_entitlement_hours_used 0, so the engine funds it no hours, and every other person keeps the engine's default of 30. + notes: Identity-keyed seed 0 streams replace the incumbent sequential take-up seed 100; salts are output variable names. Reported positive receipt anchors are transient and consumed only. The Universal Credit draw's population is the benefit units with a UC claimant or partner (is_uc_claimant) aged 18 or over and under Pension Credit qualifying age (66 for everyone who can reach it in this release), the age and role conditions of policyengine-uk 2.151.0's is_uc_eligible; the engine lockstep test pins it and names the three engine cases not mirrored (16- and 17-year-old claimants under the UC Regs 2013 reg 8 exceptions, mixed-age couples on the Pension Credit route, and from 2.128.0 pension-age families moved onto Universal Credit when their legacy benefit closes, SI 2014/1230 reg 60A). So the contract rate is a share of those units, an anchor outside them stays true, and any other unit is never drawn; a unit with no claimant or partner of that age keeps its reported Housing Benefit, which a claim it cannot make no longer zeroes (#882, microcosm#867, microcosm#1095). The universal childcare flag is nested under the working-parent one. A unit that claims the extended hours claims the universal hours, and any other unit claims them at the contract's universal_childcare rate, the rate conditional on not claiming the extended hours; the extended draw is unchanged. childcare_copy_take_up later re-draws the childcare flags and hours of the support and CGT copies on their own benefit units. A child of DfE age 0 or 1 (its age on 31 December of the fit's model year, the age DfE counts by) in a unit that claims the working-parent hours uses them at its age's contract rate, extended_childcare_age_0_usage or extended_childcare_age_1_usage (DfE registers far fewer of the youngest eligible children than of those aged 2 to 4, and fewer at 9 to 11 months than at age 1); a child that does not gets max_free_entitlement_hours_used 0, so the engine funds it no hours, and every other person keeps the engine's default of 30. - stage: frs_person_draws survey: Family Resources Survey 2024-25 source: Sourced UK take-up contract rates and identity-keyed deterministic draws. @@ -1193,7 +1193,7 @@ stages: population: uk_frs_raw_spine source_vintage: 2024-25 mapped_build_period: 2024 - annualization: weekly raw FRS amounts * (365.25 / 7) + annualization: weekly raw FRS amounts * 52 status: adjudicated_partial_replay retained_full_constituents: hmrc_spi_pay: @@ -1201,20 +1201,20 @@ stages: scope: full raw_sources: - ADULT.INEARNS - formula: max(0, ADULT.INEARNS) * (365.25 / 7) + formula: max(0, ADULT.INEARNS) * 52 hmrc_spi_unemployment_benefit_income: spi_concept: UBISJA scope: full raw_sources: - BENEFITS.BENEFIT=14:BENAMT - BENEFITS.BENEFIT=19:BENAMT - formula: sum(BENAMT where BENEFIT in {14, 19}) * (365.25 / 7) + formula: sum(BENAMT where BENEFIT in {14, 19}) * 52 hmrc_spi_incapacity_benefit_income: spi_concept: INCPBEN scope: full raw_sources: - BENEFITS.BENEFIT=17:BENAMT - formula: sum(BENAMT where BENEFIT == 17) * (365.25 / 7) + formula: sum(BENAMT where BENEFIT == 17) * 52 observed_support: structural zero in the audited 2023-24 FRS; retained so future vintages flow retained_named_subsets: ossben_identifiable_subset: @@ -1222,13 +1222,13 @@ stages: raw_sources: - BENEFITS.BENEFIT=13:BENAMT - BENEFITS.BENEFIT=16,VAR2 in {1,3}:BENAMT - formula: sum(BENAMT where BENEFIT == 13 or (BENEFIT == 16 and VAR2 in {1, 3})) * (365.25 / 7) + formula: sum(BENAMT where BENEFIT == 13 or (BENEFIT == 16 and VAR2 in {1, 3})) * 52 scope: identifiable_subset srp_regular_code5: spi_concept: SRP raw_sources: - BENEFITS.BENEFIT=5:BENAMT - formula: sum(BENAMT where BENEFIT == 5) * (365.25 / 7) + formula: sum(BENAMT where BENEFIT == 5) * 52 scope: regular_code5_subset source_absent_full_constituents: - EPB @@ -1892,6 +1892,7 @@ stages: - afcs_reported - bsp_reported - war_widows_pension_reported + - widowed_parents_allowance_reported - winter_fuel_allowance_reported - council_tax_benefit_reported - jsa_contrib_reported @@ -2210,6 +2211,7 @@ stages: - afcs_reported - bsp_reported - war_widows_pension_reported + - widowed_parents_allowance_reported - winter_fuel_allowance_reported - council_tax_benefit_reported - jsa_contrib_reported @@ -2351,6 +2353,7 @@ stages: private_rent_code: DVPriRntR8 main_residence_value: DVhvalueR8 non_residential_property_value: DVBlDValR8_sum + non_residential_property_secured_debt: DVBldDebtR8_sum savings: DVSaValR8_aggr num_vehicles: vcarnr8 weight: R8xshhwgt @@ -2367,6 +2370,10 @@ stages: consumer_debt: max(HFINWR8_SUM - HFINWNTR8_exSLC_Sum, 0) tenure_category: 'Ten1R8 1 owned_outright; 2 or 3 owned_with_mortgage; 4 or 5 private_rent when DVPriRntR8 == 1, otherwise social_rent; any other code private_rent, counted in the receipt' other_residential_property_value: DVHseValR8_sum + DVBltValR8_sum (houses other than the main residence plus buy-to-let property) + other_residential_property_secured_debt: DVHseDebtR8_sum + DVBLtDebtR8_sum (the debt secured on the other houses and on buy-to-let property) + directly_held_shares: DVFShUKVR8_aggr + DVFESHARESR8_aggr (UK shares plus employee shares and options) + unit_and_investment_trusts: DVFCollVR8_aggr + directly_held_share_fraction: directly_held_shares / corporate_wealth_excl_isa where corporate_wealth_excl_isa > 0, else 0 other_property_value: DVPropertyR8 - (DVhvalueR8 + DVHseValR8_sum + DVBltValR8_sum + DVBlDValR8_sum + DVLUKValR8_sum), refused when negative other_financial_assets: HFINWR8_SUM - (DVSaValR8_aggr + DVCISAVR8_aggr + corporate_wealth), refused when negative is_renting: DVPriRntR8 == 1 @@ -2461,6 +2468,20 @@ stages: - mortgage_debt - consumer_debt - net_financial_wealth + - directly_held_share_fraction + - other_residential_property_secured_debt + - non_residential_property_secured_debt + holder_strata: + directly_held_share_fraction: corporate_wealth_excl_isa + other_residential_property_secured_debt: other_residential_property_value + non_residential_property_secured_debt: non_residential_property_value + share_split: + fraction: directly_held_share_fraction + outputs: + - directly_held_shares + - unit_and_investment_trusts + undrawn_fraction: 1.0 + secured_debt_within: other_mortgage - kind: fold_into output: corporate_wealth inputs: @@ -2503,6 +2524,10 @@ stages: - student_loan_balance - mortgage_debt - consumer_debt + - directly_held_shares + - unit_and_investment_trusts + - other_residential_property_secured_debt + - non_residential_property_secured_debt nonnegative_outputs: - owned_land - property_wealth @@ -2519,7 +2544,11 @@ stages: - student_loan_balance - mortgage_debt - consumer_debt - notes: 'Ports incumbent WAS round-8 wealth imputation with signed E5 differences: exact lower-case column matching replaces the fuzzy r/w fallback; cash ISA uses DVCISAVR8_aggr and stocks-and-shares ISA uses DVIISAVR8_aggr; private pension wealth (WAS total private pension wealth less the current defined-benefit component; DB-type components at the SCAPE rate, money-purchase components at reported fund values) is drawn as its own output private_pension_wealth and no longer folded into corporate_wealth, which keeps only the share-like holdings - pension rights are disregarded capital in every means test (UC Regs 2013 Sch 10 para 10 and the HB/JSA/ESA/IS/SPC parallels; uk-data#452) - and the downstream chain segment conditions on both components; each chain segment starts its own fit and draw RNG streams from a child seed derived deterministically from the declared seed (start_chain respawns from the model seed on every call, so one shared model coupled the k-th target of every segment); corporate_wealth folds stocks-and-shares ISA after drawing corporate_wealth_excl_isa; recipient Northern Ireland regions are mapped to Wales for prediction only; student_loan_balance is allocated by household id rather than the incumbent positional off-by-one. Tenure enters every chain segment as one four-way category built the same way on both sides (microcosm#1063): the donor''s from Ten1R8 and DVPriRntR8 (owned outright; buying with a mortgage or part rent, part mortgage; rented or rent-free from a private landlord; rented from a council or housing association), the recipient''s from the frame''s tenure_type (council and housing association together), so the stage reads no engine tenure formula. Two columns are structural in tenure and are fitted and drawn inside their stratum only, zero by rule elsewhere: main_residence_value on the owner tenures (every WAS owner has a positive value and no renter has one) and main_residence_mortgage (TotMortR8) on the mortgaged tenure. mortgage_debt is HMortGR8, all of the household''s mortgages, and is derived as the main-residence mortgage plus the mortgages on other property (other_mortgage, HMortGR8 less TotMortR8 on the donor: buy-to-let, second homes and the rest), which are held on every tenure and drawn without a stratum, so an outright owner''s or a renter''s buy-to-let keeps its mortgage beside the property it is secured on (OthMortR8_sum is read for the receipt only); the donor''s conditioning copy carries the same rule, so consumer_debt is fitted on values recipients can hold. Totals are not drawn: property_wealth is the sum of land, the main residence, other houses, buildings and a drawn remainder (buy-to-let, overseas and other property), gross_financial_wealth is savings, the cash ISA, the share-like holdings and a drawn remainder, and net_financial_wealth is gross less consumer debt and the student loan balance - identities the pinned tab satisfies on every row and the cleaning step refuses a donor that breaks. A sum of donor-valued components that leaves the donor''s range for the total gives up the excess from the remainder first, and the receipt counts the rows. Eight chain segments, each with its own child seed: land; the main residence; the other property components; pension and share-like wealth; the financial components, vehicles and the student loan balance; the main-residence mortgage; the other mortgages; consumer debt. HFINWNTR8_exSLC_Sum is net financial wealth excluding student loans, so gross less it is the non-student-loan financial liabilities; UKDS SN 7215 documentation is the codebook. Engine predictors materialize at their native entity and person/benunit values are summed to household, reproducing the incumbent map_to=household semantics; region is one-hot encoded jointly across donor and recipient (the incumbent''s dummy encoding), with unmapped donor GOR codes becoming all-zero dummy rows. The WAS and FRS predictor definitions are not fully like-for-like and are ported as-is; raw WAS missing values are blanket-filled with zero; UKDS negative sentinel codes (-9/-8/-7/-6) are recoded to zero + - directly_held_shares + - unit_and_investment_trusts + - other_residential_property_secured_debt + - non_residential_property_secured_debt + notes: 'Ports incumbent WAS round-8 wealth imputation with signed E5 differences: exact lower-case column matching replaces the fuzzy r/w fallback; cash ISA uses DVCISAVR8_aggr and stocks-and-shares ISA uses DVIISAVR8_aggr; private pension wealth (WAS total private pension wealth less the current defined-benefit component; DB-type components at the SCAPE rate, money-purchase components at reported fund values) is drawn as its own output private_pension_wealth and no longer folded into corporate_wealth, which keeps only the share-like holdings - pension rights are disregarded capital in every means test (UC Regs 2013 Sch 10 para 10 and the HB/JSA/ESA/IS/SPC parallels; uk-data#452) - and the downstream chain segment conditions on both components; each chain segment starts its own fit and draw RNG streams from a child seed derived deterministically from the declared seed (start_chain respawns from the model seed on every call, so one shared model coupled the k-th target of every segment); corporate_wealth folds stocks-and-shares ISA after drawing corporate_wealth_excl_isa; recipient Northern Ireland regions are mapped to Wales for prediction only; student_loan_balance is allocated by household id rather than the incumbent positional off-by-one. Tenure enters every chain segment as one four-way category built the same way on both sides (microcosm#1063): the donor''s from Ten1R8 and DVPriRntR8 (owned outright; buying with a mortgage or part rent, part mortgage; rented or rent-free from a private landlord; rented from a council or housing association), the recipient''s from the frame''s tenure_type (council and housing association together), so the stage reads no engine tenure formula. Two columns are structural in tenure and are fitted and drawn inside their stratum only, zero by rule elsewhere: main_residence_value on the owner tenures (every WAS owner has a positive value and no renter has one) and main_residence_mortgage (TotMortR8) on the mortgaged tenure. mortgage_debt is HMortGR8, all of the household''s mortgages, and is derived as the main-residence mortgage plus the mortgages on other property (other_mortgage, HMortGR8 less TotMortR8 on the donor: buy-to-let, second homes and the rest), which are held on every tenure and drawn without a stratum, so an outright owner''s or a renter''s buy-to-let keeps its mortgage beside the property it is secured on (OthMortR8_sum is read for the receipt only); the donor''s conditioning copy carries the same rule, so consumer_debt is fitted on values recipients can hold. Totals are not drawn: property_wealth is the sum of land, the main residence, other houses, buildings and a drawn remainder (buy-to-let, overseas and other property), gross_financial_wealth is savings, the cash ISA, the share-like holdings and a drawn remainder, and net_financial_wealth is gross less consumer debt and the student loan balance - identities the pinned tab satisfies on every row and the cleaning step refuses a donor that breaks. A sum of donor-valued components that leaves the donor''s range for the total gives up the excess from the remainder first, and the receipt counts the rows. Eleven chain segments, each with its own child seed: land; the main residence; the other property components; pension and share-like wealth; the financial components, vehicles and the student loan balance; the main-residence mortgage; the other mortgages; consumer debt; then three appended after them, so the first eight draw as they did before them (microcosm#1095, the WAS property draw), each fitted on the donors and drawn for the recipients holding the column holder_strata names. The first is the directly held fraction of the share-like holdings outside ISAs, from which the stage writes directly_held_shares (WAS UK shares plus employee shares and options) and unit_and_investment_trusts (WAS collective investments, which the survey asks about in one question; uk-data#501), the inputs policyengine-uk reads inside corporate_wealth (pe-uk#1974): the split is written on the final corporate_wealth less the stocks-and-shares ISA, so the two and the ISA sum to corporate_wealth and the engine''s share_like_capital stays corporate_wealth; a household with such holdings but no drawn fraction (a clip that lowered the ISA alone) holds them directly (undrawn_fraction), and the receipt counts it. The other two are the debt secured on other residential property (WAS DVHseDebtR8_sum + DVBLtDebtR8_sum) and on non-residential property (DVBldDebtR8_sum), which policyengine-uk deducts after the sale costs in valuing Universal Credit property capital (UC Regs 2013 reg 49(1)(b)): each is zero where the final value of its asset is zero, and the two are parts of the mortgages on other property, so where their sum passes other_mortgage both are scaled down to it (secured_debt_within); the receipt counts the rows each rule touched, and the wealth_coherence gate holds the split and the debts as identities. HFINWNTR8_exSLC_Sum is net financial wealth excluding student loans, so gross less it is the non-student-loan financial liabilities; UKDS SN 7215 documentation is the codebook. Engine predictors materialize at their native entity and person/benunit values are summed to household, reproducing the incumbent map_to=household semantics; region is one-hot encoded jointly across donor and recipient (the incumbent''s dummy encoding), with unmapped donor GOR codes becoming all-zero dummy rows. The WAS and FRS predictor definitions are not fully like-for-like and are ported as-is; raw WAS missing values are blanket-filled with zero; UKDS negative sentinel codes (-9/-8/-7/-6) are recoded to zero for the nonnegative-domain columns the licensed audit found carrying them (vcarnr8: 2 rows; HBedRmR8: 95.8 percent - the bedrooms question is effectively unasked in the WAS household file, predictor-quality revisit registered on microcosm#145) - a signed difference vs the incumbent, which trains on raw sentinels; DVPriRntR8''s -9 is structural not-applicable so the private-renter reading is unchanged; genuinely negative domains are never recoded. The recipient council_tax predictor is the bill the household pays, council_tax less council_tax_rebate, the quantity the WAS donor records, since the spine''s council_tax is the liability before council tax reduction (uk-data#496/#499, microcosm#1095). The donor council_tax is DVCTaxAmtAnnualR8, the annual amount paid (CTAmtR8 is one instalment), its children are NumChildR8 (NumCh18R8 overlaps NumAdultR8), and the recipient adults and children are the household''s FRS claimants and partners and its other members (is_uc_claimant), which together make the household size on both sides; rental_income is the donor''s net rent DVNetRentAmtAnnualR8_aggr against the household''s property_income (uk-data#486/#495, microcosm#1095).' - stage: was_lisa survey: Wealth and Assets Survey round 8 @@ -3430,6 +3459,14 @@ stages: basis: engine_parameter parameter_path: gov.economic_assumptions.indices.obr.consumer_price_index from_window: fiscal_year + liquid_fuel_consumption: + basis: engine_parameter + parameter_path: gov.economic_assumptions.indices.obr.consumer_price_index + from_window: fiscal_year + solid_fuel_consumption: + basis: engine_parameter + parameter_path: gov.economic_assumptions.indices.obr.consumer_price_index + from_window: fiscal_year employment_income: basis: engine_parameter parameter_path: gov.economic_assumptions.indices.obr.average_earnings @@ -3530,6 +3567,8 @@ stages: - domestic_energy_consumption - electricity_consumption - gas_consumption + - liquid_fuel_consumption + - solid_fuel_consumption categorical_predictors: - region - tenure_type @@ -3790,9 +3829,13 @@ stages: housing_water_and_electricity_consumption: drawn_subtracts: - domestic_energy_consumption + - liquid_fuel_consumption + - solid_fuel_consumption components: - electricity_consumption - gas_consumption + - liquid_fuel_consumption + - solid_fuel_consumption transport_consumption: drawn_subtracts: - petrol_spending @@ -3803,14 +3846,32 @@ stages: - diesel_spending - bus_fare_spending maximum_total: donor_support - uncarried: + level_division_excess: + rule: excess_over_shared_ratio + basis: drawn_spend_over_donor_spend_per_household + divisions: + - food_and_non_alcoholic_beverages_consumption + - alcohol_and_tobacco_consumption + - clothing_and_footwear_consumption + - housing_water_and_electricity_consumption + - household_furnishings_consumption + - health_consumption + - transport_consumption + - communication_consumption + - recreation_consumption + - education_consumption + - restaurants_and_hotels_consumption + - miscellaneous_consumption + published_fuels: resource: ons_household_expenditure_facts.json period_value: 2024 classes: - coicop: 04.5.3 concept: ons.household_expenditure.liquid_fuels + column: liquid_fuel_consumption - coicop: 04.5.4 concept: ons.household_expenditure.solid_fuels + column: solid_fuel_consumption - kind: record_mass_conservation_receipt entity: household reason: 'LCFS consumption imputation on the source spine: household weights pass through unchanged and total household mass is conserved.' @@ -3835,6 +3896,8 @@ stages: - domestic_energy_consumption - electricity_consumption - gas_consumption + - liquid_fuel_consumption + - solid_fuel_consumption - has_fuel_consumption - uses_energy_prepayment_meter nonnegative_outputs: @@ -3856,9 +3919,11 @@ stages: - domestic_energy_consumption - electricity_consumption - gas_consumption + - liquid_fuel_consumption + - solid_fuel_consumption - has_fuel_consumption - uses_energy_prepayment_meter - notes: 'Ports the incumbent LCFS consumption QRF, including NEED energy raking, with adjudicated weighted fits and an identity-keyed seed-0 fuel flag. The vehicle count is a numeric QRF predictor on both sides (LCFS a124 on the donor, the was_wealth draw of WAS vcarnr8 on the recipient, both clipped to 0-5), which retires the incumbent''s WAS-to-LCFS has-fuel bridge (microcosm#890 A). The recipient fuel flag draws each of a household''s vehicles as zero-emission at the battery-electric and fuel-cell share of the vendored DfT VEH1103 licensed-car stock (2024, Great Britain; plug-in hybrids count as fuel buyers), replacing the hand-copied NTS share (microcosm#890 E2): a household with vehicles buys fuel unless every one of them is zero-emission, so it is flagged at one minus that share raised to its vehicle count, and a one-vehicle household keeps the draw it had when the whole household was drawn at once (microcosm#1278; before, a household with several vehicles was all one or the other). The frame holds no fuel type, so the draw, keyed on the household identity, is what makes a vehicle-owning household a fuel buyer: it is random with respect to income and every other characteristic. With the redraw of microcosm#1113 every flagged household buys fuel, so this flag alone sets fuel incidence; who holds the zero-emission cars by income is a known residual. The household input uses_energy_prepayment_meter, which policyengine-uk reads for the July 2023 to March 2024 Energy Price Guarantee prepayment discount (PolicyEngine/policyengine-uk#2098, from 2.123.3), is drawn by the declared impute_prepayment_meter step (microcosm#1110): the donor prepays when it last put money on an electricity, gas or combined key or meter (b1751, b1701, b233, which the LCF asks only of prepayment-meter households) or its diary records a slot-meter payment (c45114, c45214), so electricity-only prepayment counts and a household with no meter payment, including one that did not answer, does not; a weighted regime-gated QRF on the chain''s predictors fits that flag and each recipient draws it at uniforms keyed on its household id, which moves no other draw. The release exports it: policyengine-uk reads it from 2.123.3 and an older engine, Microcosm''s locked one among them, ignores a column it does not know; the incumbent does not carry it until uk-data#539, so it is a reviewed extra column of the export surface. The frame flags about 3.0 million Great Britain households (10.5 %) at prior weights, against the around three million prepayment households the government counted when the discount began in July 2023 (a different reference period, households in both). Energy support clipping is exempt because NEED raking governs those columns. Bus fares are clipped to donor support before the pricing step (María''s rulings 2026-09-15 and 2026-09-17), which bounds the region no area prices (Wales keeps the chain''s raw draw) while the priced regions move beyond donor support afterwards; for that reason the column carries no committed support bound for the terminal gate. Domestic energy is raked in kWh to the NEED 2024 shape at the DESNZ level and priced at the average prices paid (microcosm#890 F, chronicle#270), where both NEED rakes take their mean-kWh margins from the vendored NEED 2024 tables (England and Wales by income band, tenure, property type and region; Scotland by income band, tenure and property type with the all-dwellings mean as its region margin; Northern Ireland untouched), the declared price_domestic_energy step converts spend to kWh and back at each household''s QEP price region through the committed crosswalk using the calendar-2024 average variable unit cost and fixed cost across payment methods, standard metering, including VAT (Northern Ireland gas at the UK average because QEP publishes no Northern Ireland gas row), a gas fixed cost only for connected households, the gas connection imposed on the recipient frame at the published share of each region (DESNZ subnational gas meters over electricity meters, 2024) by disconnecting gas-positive households in an identity-keyed uniform order, skipping a household whose weight would overshoot the published share (Northern Ireland has no subnational row and keeps the positive-gas rule), and, where the draw leaves a region below its share, by the declared connect_rule (microcosm#1164): two weighted fits on the chain''s predictors give each zero-gas household the probability that a donor like it pays for gas (a gradient-boosted classifier of the donor''s gas payers) and the gas such a donor pays (a regime-gated QRF of the payers'' gas spend, at quantiles keyed on the household id), and the region''s zero-gas households are connected in an identity-keyed order drawn in proportion to that probability, by the same weight-fitting walk, until the share is met. The labelled energy split leaves about 80 % of donors paying for gas against the about 85 % of homes DESNZ counts gas meters for (the derivation it replaced gave gas to 98 %), so without the connect leg nine of the eleven Great Britain regions fell short of their share, and after the four-margin NEED rake one factor per fuel scales the kWh so the prior-weighted frame total equals the DESNZ Energy Trends domestic consumption at actual temperature summed over the four quarters of calendar 2024; NEED gas means are per gas-metered household, so the gas kWh margins are raked over connected households only while electricity is raked over every household, and the energy_rake gate recomputes every NEED mean, the DESNZ level and the connection shares from the vendored rows. After the level, no household is left above the domestic meter definitions behind the DESNZ total (NEED Annex B: gas meters under 73,200 kWh a year, electricity meters under 50,000 kWh on profile classes 1 and 2; María''s ruling of 2026-10-12 on microcosm#1207''s extreme energy values): the declared household_kwh_ceiling caps a household there, the households below it in the capped households'' own NEED cells are re-raked to those cells'' levelled means, and a proportional step restores the DESNZ total (microcosm#1164); the receipt counts the households capped and the share of the total they gave up, and the energy_rake gate checks both. Mobile homes have no NEED property-type row, so the rake takes them to the all-dwellings mean, the incumbent''s translation; where every mobile home of a NEED geography draws a spend at or below the standing charge, that cell has no kWh for the rake to scale, and the declared zero_kwh_cells_at_need_mean starts it at its NEED mean before the first sweep (microcosm#1240). The receipt lists the cells it started, and the energy_rake gate fails on a started cell the stage does not declare and on any other cell with a zero mean. Both rakes band households on gross income, NEED''s concept: the donor on LCFS p344p, cash income before tax, National Insurance, council tax and pension contributions, and the recipient on the same concept, its HBAI net income with the deductions policyengine-uk takes to reach it added back (council tax and domestic rates, income tax, National Insurance, student loan repayments, employee and personal pension contributions, maintenance and child payments, LVT), which the stage materializes for that band alone (microcosm#1164). Before it the recipient fell back to its HBAI net income, which put households in too low a band; the engine''s household_gross_income would put them in too high a one, since it adds capital gains and the in-kind NHS, education and transport spending to cash income. The disconnection walk''s seed-0 uniform order makes every group of households (dwelling type, income band, support channel) lose the same expected share of its drawn connected mass, so only the level of the drawn connection moves; the smallest-drawn-gas-first order it replaces piled the disconnections onto low-draw flats once the SPI support households drew gas from their own incomes, and NEED''s Scottish property-type means then implied a level 2.6 % above the Scottish all-dwellings mean, a margin conflict the rake could not close. Bus fares are priced from journeys (microcosm#930), where the nts_bus_travel stage imputes each person''s annual bus-in-London and other-local-bus trips and their concessionary eligibility, and the declared price_bus_journeys step sets bus_fare_spending as the sum over the household''s non-eligible persons of trips times boardings per resident trip (the published BUS01 journeys over the published NTS0705a trips per resident times the ONS population) times the yield per fare-paying boarding (BUS05ai receipts over journeys less concessionary journeys), per area; bus-in-London trips take the London area''s price for every resident, other-local-bus trips the price of the residence area (England outside London; Scotland and Northern Ireland from their own receipts and journeys with England''s trip rate as the declared proxy); Wales is unpriced and keeps the raw draw. The chain still draws bus_fare_spending so later targets condition on the same raw draw; the emitted column is the priced value. The receipt records every factor, the frame-implied boardings beside the published ones and the frame''s eligible trip share beside the publisher''s concessionary boarding share, so the prior-weight fit of the bound receipts targets is read as a composition check, never a level the stage set; the #890 incidence draw and fare rake are retired. The 2024-25 diary (UKDS SN 9603, 2nd edition, whose household tab carries the annual weight as cal_weight_annual, the name weighta had; microcosm#1164) is moved to the base year by the declared uprate_donor_columns step (microcosm#890). Consumption columns and bus fares take the engine''s CPI index from the April-to-March diary year, placed on the calendar-year index at three quarters of 2024 and one of 2025, back a quarter to calendar 2024 (microcosm#1113; the diary sits a quarter past it, so the factor is below one; the fare factor survives only where no fare cell levels the column, i.e. Wales). Income predictors take a factor of one: the diary year is the FRS 2024-25 year they are matched against. Petrol and diesel take the DESNZ pump-price times HMRC litres per head outturn from the vendored road_fuel_anchors.json, which sets only their donor distribution because the level step follows; the energy columns are exempt because the NEED 2024 shape at the DESNZ level and the QEP average prices paid set their level. The household adult and child counts (LCFS G018 and G019, the survey''s age-18 split) predict on both sides; the recipient counts its members by age, not through the engine''s is_adult and is_child flags, which policyengine-uk#1896 deprecates (uk-data#486, microcosm#1095). Road fuel incidence and level are set by two declared steps (microcosm#1113). The two-week diary leaves about a third of car-owning donors with no fuel purchase, which the chain reproduces among the households the fuel flag marks as fuel buyers, so the redraw_zero_road_fuel step redraws a flagged household that drew zero from the donor''s distribution among households with positive road fuel, on the chain''s predictors: a weighted regime-gated QRF draws the total, positive by construction, then the petrol share of it, at quantiles keyed on the household id; positive draws are kept. Then the level_road_fuel step, after the fuel flag has zeroed the households without a fuel car, scales petrol and diesel so their prior-weighted total equals ONS Consumer Trends household spending on COICOP 07.2.2 for calendar 2024 (the year of the DESNZ pump prices the donor uprating uses) less the donor''s own other-fuels share of 07.2.2 (c72213), keeping the drawn mix. The diary''s 07.2.2 has three lines (c72211 petrol, c72212 diesel and c72213, the other motor fuels and lubricants) and none for vehicle electricity. The LCFS diary records about a quarter less road fuel than ONS, and binding the OBR cars receipts had closed that gap by moving weight onto fuel-buying households; petrol and diesel therefore carry no committed support bound, like the other levelled columns. The totals that contain levelled columns are written back around them by the declared recompose_from_remainder step (microcosm#1113): each keeps its own chain draw less the chain''s draws of the parts the stage re-levels, kept before any step touches them and floored at zero where the parts outgrow the total, and adds the levelled parts back, so housing_water_and_electricity_consumption is its draw less the drawn electricity and gas plus the levelled electricity and gas, and transport_consumption its draw less the drawn petrol, diesel and bus fares plus the levelled petrol and diesel and the priced bus fares. The chain draws each part after, and conditional on, its total, so the remainder is the chain''s own split; a remainder drawn as a chain target of its own over-drew the vehicle-purchase tail of transport, 10 to 13 percent above the donor in-sample. The chain''s domestic-energy target is the electricity and gas the stage derives from the diary''s fuel, light and power (p537) by its labelled parts, from the LCF User Guide''s derived-variable labels and P537 definition (microcosm#1164): each fuel''s last account payment less its rebate (b489 electricity, b490 gas, read as the tab carries them; the stage refuses a donor where b489 equals b175 less b178, or b490 equals b170 less b173, to the penny for under 95 percent of that fuel''s account payers, which pins the labels and the rebate''s sign), its prepayment key or meter payment (b1751, b1701), its component of a combined utilities bill (b227 electricity, b226 gas) and of a combined key or meter payment (b2332, b2331), and the diary''s second-dwelling account and slot-meter lines (c45112 and c45114, c45212 and c45214); what a combined payment leaves unsplit (the combined bill b231 less its rebate b174, and the combined key or meter payment b233, each less its parts) goes by the household''s own electricity share where it pays for both fuels, and otherwise by the donor''s mean share of the households that do, since a combined payment means the household pays for both; a donor with no such household fails. The diary''s other fuels (central-heating oil b017 and c45312, bottled gas b018 and c45222, coal and coke c45411, wood and peat c45412, hot water, steam and ice c45511) are neither, so they stay in the housing remainder, and the donor_energy_split receipt records the split against p537: what reading refunds as zero adds, what the unclipped parts differ from p537 by, the weighted share of donors whose unclipped parts differ from their p537, and the account identity shares. The derivation it replaces read b226 as electricity by direct debit and b489 and b490 as prepayment payments, where the labels make them the gas component of a combined bill and the electricity and gas account payments less rebates. No column carries the other fuels; the receipt records their published ONS 04.5.3 and 04.5.4 spend. Each total is then held to the donor''s realised maximum of that total (maximum_total: donor_support, the support every drawn column is clipped to; microcosm#1164), never below its parts, the excess coming out of its remainder: a remainder near the top of the diary''s range plus levelled parts larger than the drawn ones would otherwise leave it. The two totals keep their committed support bounds, which the terminal support gate applies to the emitted frame; the recomposed_totals gate checks the declaration and the receipt, whose rows held at the maximum and weighted mass taken enter its identities. Every household spend column is at calendar-2024 prices as households paid them, the H5''s year that policyengine-uk projects from and the calibration uprates to the calendar-2025 window (microcosm#1113): the diary columns by the CPI uprating to 2024, road fuel at ONS 07.2.2 for 2024, energy at DESNZ volume and QEP prices for 2024, and bus fares at each area''s fiscal-year yield re-priced to 2024 by its fares index (the DfT local bus fares index by quarter for London and England outside London, Scotland''s calendar-year index; Northern Ireland, which publishes no fares index, from its own yields of the two fiscal years 2024 overlaps, weighted three months and nine (microcosm#1207), in place of England''s index, which carries the January 2025 rise in the English fare cap Northern Ireland did not have); the consumption_basis gate holds every level-setting step to that year. policyengine-uk applies the fiscal 2024-25 rules to model year 2024 (it samples each parameter at 30 April), so every levelled column sits about a quarter before the midpoint of the policy year it is taxed in; the calibration binds calendar-year facts as published and fiscal-year facts at the calendar window (María''s rule of 2026-09-22). The stage receipt also reports, for each of the twelve COICOP divisions, the prior-weighted frame total against ONS Consumer Trends for the same calendar year less the classes a household diary does not record (02.3 narcotics, 04.2 owner-occupiers'' imputed rent and 12.6.1 FISIM), on ONS''s domestic concept, and the twelve together against the national concept as well; it is report-only (microcosm#1113). The report-only litres audit compares each fuel''s frame litres with HMRC''s clearances of that fuel scaled by the cars share of its road use, from the vendored DESNZ sub-national road transport fuel consumption by vehicle type and fuel (PolicyEngine/chronicle#322); the OBR cars share of fuel duty receipts, uniform across fuels, stays beside the total.' + notes: 'Ports the incumbent LCFS consumption QRF, including NEED energy raking, with adjudicated weighted fits and an identity-keyed seed-0 fuel flag. The vehicle count is a numeric QRF predictor on both sides (LCFS a124 on the donor, the was_wealth draw of WAS vcarnr8 on the recipient, both clipped to 0-5), which retires the incumbent''s WAS-to-LCFS has-fuel bridge (microcosm#890 A). The recipient fuel flag draws each of a household''s vehicles as zero-emission at the battery-electric and fuel-cell share of the vendored DfT VEH1103 licensed-car stock (2024, Great Britain; plug-in hybrids count as fuel buyers), replacing the hand-copied NTS share (microcosm#890 E2): a household with vehicles buys fuel unless every one of them is zero-emission, so it is flagged at one minus that share raised to its vehicle count, and a one-vehicle household keeps the draw it had when the whole household was drawn at once (microcosm#1278; before, a household with several vehicles was all one or the other). The frame holds no fuel type, so the draw, keyed on the household identity, is what makes a vehicle-owning household a fuel buyer: it is random with respect to income and every other characteristic. With the redraw of microcosm#1113 every flagged household buys fuel, so this flag alone sets fuel incidence; who holds the zero-emission cars by income is a known residual. The household input uses_energy_prepayment_meter, which policyengine-uk reads for the July 2023 to March 2024 Energy Price Guarantee prepayment discount (PolicyEngine/policyengine-uk#2098, from 2.123.3), is drawn by the declared impute_prepayment_meter step (microcosm#1110): the donor prepays when it last put money on an electricity, gas or combined key or meter (b1751, b1701, b233, which the LCF asks only of prepayment-meter households) or its diary records a slot-meter payment (c45114, c45214), so electricity-only prepayment counts and a household with no meter payment, including one that did not answer, does not; a weighted regime-gated QRF on the chain''s predictors fits that flag and each recipient draws it at uniforms keyed on its household id, which moves no other draw. The release exports it: policyengine-uk reads it from 2.123.3 and an older engine, Microcosm''s locked one among them, ignores a column it does not know; the incumbent does not carry it until uk-data#539, so it is a reviewed extra column of the export surface. The frame flags about 3.0 million Great Britain households (10.5 %) at prior weights, against the around three million prepayment households the government counted when the discount began in July 2023 (a different reference period, households in both). Energy support clipping is exempt because NEED raking governs those columns. Bus fares are clipped to donor support before the pricing step (María''s rulings 2026-09-15 and 2026-09-17), which bounds the region no area prices (Wales keeps the chain''s raw draw) while the priced regions move beyond donor support afterwards; for that reason the column carries no committed support bound for the terminal gate. Domestic energy is raked in kWh to the NEED 2024 shape at the DESNZ level and priced at the average prices paid (microcosm#890 F, chronicle#270), where both NEED rakes take their mean-kWh margins from the vendored NEED 2024 tables (England and Wales by income band, tenure, property type and region; Scotland by income band, tenure and property type with the all-dwellings mean as its region margin; Northern Ireland untouched), the declared price_domestic_energy step converts spend to kWh and back at each household''s QEP price region through the committed crosswalk using the calendar-2024 average variable unit cost and fixed cost across payment methods, standard metering, including VAT (Northern Ireland gas at the UK average because QEP publishes no Northern Ireland gas row), a gas fixed cost only for connected households, the gas connection imposed on the recipient frame at the published share of each region (DESNZ subnational gas meters over electricity meters, 2024) by disconnecting gas-positive households in an identity-keyed uniform order, skipping a household whose weight would overshoot the published share (Northern Ireland has no subnational row and keeps the positive-gas rule), and, where the draw leaves a region below its share, by the declared connect_rule (microcosm#1164): two weighted fits on the chain''s predictors give each zero-gas household the probability that a donor like it pays for gas (a gradient-boosted classifier of the donor''s gas payers) and the gas such a donor pays (a regime-gated QRF of the payers'' gas spend, at quantiles keyed on the household id), and the region''s zero-gas households are connected in an identity-keyed order drawn in proportion to that probability, by the same weight-fitting walk, until the share is met. The labelled energy split leaves about 80 % of donors paying for gas against the about 85 % of homes DESNZ counts gas meters for (the derivation it replaced gave gas to 98 %), so without the connect leg nine of the eleven Great Britain regions fell short of their share, and after the four-margin NEED rake one factor per fuel scales the kWh so the prior-weighted frame total equals the DESNZ Energy Trends domestic consumption at actual temperature summed over the four quarters of calendar 2024; NEED gas means are per gas-metered household, so the gas kWh margins are raked over connected households only while electricity is raked over every household, and the energy_rake gate recomputes every NEED mean, the DESNZ level and the connection shares from the vendored rows. After the level, no household is left above the domestic meter definitions behind the DESNZ total (NEED Annex B: gas meters under 73,200 kWh a year, electricity meters under 50,000 kWh on profile classes 1 and 2; María''s ruling of 2026-10-12 on microcosm#1207''s extreme energy values): the declared household_kwh_ceiling caps a household there, the households below it in the capped households'' own NEED cells are re-raked to those cells'' levelled means, and a proportional step restores the DESNZ total (microcosm#1164); the receipt counts the households capped and the share of the total they gave up, and the energy_rake gate checks both. Mobile homes have no NEED property-type row, so the rake takes them to the all-dwellings mean, the incumbent''s translation; where every mobile home of a NEED geography draws a spend at or below the standing charge, that cell has no kWh for the rake to scale, and the declared zero_kwh_cells_at_need_mean starts it at its NEED mean before the first sweep (microcosm#1240). The receipt lists the cells it started, and the energy_rake gate fails on a started cell the stage does not declare and on any other cell with a zero mean. Both rakes band households on gross income, NEED''s concept: the donor on LCFS p344p, cash income before tax, National Insurance, council tax and pension contributions, and the recipient on the same concept, its HBAI net income with the deductions policyengine-uk takes to reach it added back (council tax and domestic rates, income tax, National Insurance, student loan repayments, employee and personal pension contributions, maintenance and child payments, LVT), which the stage materializes for that band alone (microcosm#1164). Before it the recipient fell back to its HBAI net income, which put households in too low a band; the engine''s household_gross_income would put them in too high a one, since it adds capital gains and the in-kind NHS, education and transport spending to cash income. The disconnection walk''s seed-0 uniform order makes every group of households (dwelling type, income band, support channel) lose the same expected share of its drawn connected mass, so only the level of the drawn connection moves; the smallest-drawn-gas-first order it replaces piled the disconnections onto low-draw flats once the SPI support households drew gas from their own incomes, and NEED''s Scottish property-type means then implied a level 2.6 % above the Scottish all-dwellings mean, a margin conflict the rake could not close. Bus fares are priced from journeys (microcosm#930), where the nts_bus_travel stage imputes each person''s annual bus-in-London and other-local-bus trips and their concessionary eligibility, and the declared price_bus_journeys step sets bus_fare_spending as the sum over the household''s non-eligible persons of trips times boardings per resident trip (the published BUS01 journeys over the published NTS0705a trips per resident times the ONS population) times the yield per fare-paying boarding (BUS05ai receipts over journeys less concessionary journeys), per area; bus-in-London trips take the London area''s price for every resident, other-local-bus trips the price of the residence area (England outside London; Scotland and Northern Ireland from their own receipts and journeys with England''s trip rate as the declared proxy); Wales is unpriced and keeps the raw draw. The chain still draws bus_fare_spending so later targets condition on the same raw draw; the emitted column is the priced value. The receipt records every factor, the frame-implied boardings beside the published ones and the frame''s eligible trip share beside the publisher''s concessionary boarding share, so the prior-weight fit of the bound receipts targets is read as a composition check, never a level the stage set; the #890 incidence draw and fare rake are retired. The 2024-25 diary (UKDS SN 9603, 2nd edition, whose household tab carries the annual weight as cal_weight_annual, the name weighta had; microcosm#1164) is moved to the base year by the declared uprate_donor_columns step (microcosm#890). Consumption columns and bus fares take the engine''s CPI index from the April-to-March diary year, placed on the calendar-year index at three quarters of 2024 and one of 2025, back a quarter to calendar 2024 (microcosm#1113; the diary sits a quarter past it, so the factor is below one; the fare factor survives only where no fare cell levels the column, i.e. Wales). Income predictors take a factor of one: the diary year is the FRS 2024-25 year they are matched against. Petrol and diesel take the DESNZ pump-price times HMRC litres per head outturn from the vendored road_fuel_anchors.json, which sets only their donor distribution because the level step follows; the energy columns are exempt because the NEED 2024 shape at the DESNZ level and the QEP average prices paid set their level. The household adult and child counts (LCFS G018 and G019, the survey''s age-18 split) predict on both sides; the recipient counts its members by age, not through the engine''s is_adult and is_child flags, which policyengine-uk#1896 deprecates (uk-data#486, microcosm#1095). Road fuel incidence and level are set by two declared steps (microcosm#1113). The two-week diary leaves about a third of car-owning donors with no fuel purchase, which the chain reproduces among the households the fuel flag marks as fuel buyers, so the redraw_zero_road_fuel step redraws a flagged household that drew zero from the donor''s distribution among households with positive road fuel, on the chain''s predictors: a weighted regime-gated QRF draws the total, positive by construction, then the petrol share of it, at quantiles keyed on the household id; positive draws are kept. Then the level_road_fuel step, after the fuel flag has zeroed the households without a fuel car, scales petrol and diesel so their prior-weighted total equals ONS Consumer Trends household spending on COICOP 07.2.2 for calendar 2024 (the year of the DESNZ pump prices the donor uprating uses) less the donor''s own other-fuels share of 07.2.2 (c72213), keeping the drawn mix. The diary''s 07.2.2 has three lines (c72211 petrol, c72212 diesel and c72213, the other motor fuels and lubricants) and none for vehicle electricity. The LCFS diary records about a quarter less road fuel than ONS, and binding the OBR cars receipts had closed that gap by moving weight onto fuel-buying households; petrol and diesel therefore carry no committed support bound, like the other levelled columns. The totals that contain levelled columns are written back around them by the declared recompose_from_remainder step (microcosm#1113): each keeps its own chain draw less the chain''s draws of the parts the stage re-levels, kept before any step touches them and floored at zero where the parts outgrow the total, and adds the levelled parts back, so housing_water_and_electricity_consumption is its draw less the drawn electricity and gas plus the levelled electricity and gas, and transport_consumption its draw less the drawn petrol, diesel and bus fares plus the levelled petrol and diesel and the priced bus fares. The chain draws each part after, and conditional on, its total, so the remainder is the chain''s own split; a remainder drawn as a chain target of its own over-drew the vehicle-purchase tail of transport, 10 to 13 percent above the donor in-sample. The chain''s domestic-energy target is the electricity and gas the stage derives from the diary''s fuel, light and power (p537) by its labelled parts, from the LCF User Guide''s derived-variable labels and P537 definition (microcosm#1164): each fuel''s last account payment less its rebate (b489 electricity, b490 gas, read as the tab carries them; the stage refuses a donor where b489 equals b175 less b178, or b490 equals b170 less b173, to the penny for under 95 percent of that fuel''s account payers, which pins the labels and the rebate''s sign), its prepayment key or meter payment (b1751, b1701), its component of a combined utilities bill (b227 electricity, b226 gas) and of a combined key or meter payment (b2332, b2331), and the diary''s second-dwelling account and slot-meter lines (c45112 and c45114, c45212 and c45214); what a combined payment leaves unsplit (the combined bill b231 less its rebate b174, and the combined key or meter payment b233, each less its parts) goes by the household''s own electricity share where it pays for both fuels, and otherwise by the donor''s mean share of the households that do, since a combined payment means the household pays for both; a donor with no such household fails. The diary''s other fuels (central-heating oil b017 and c45312, bottled gas b018 and c45222, coal and coke c45411, wood and peat c45412, hot water, steam and ice c45511) are neither, and the donor_energy_split receipt records the split against p537: what reading refunds as zero adds, what the unclipped parts differ from p537 by, the weighted share of donors whose unclipped parts differ from their p537, and the account identity shares. The derivation it replaces read b226 as electricity by direct debit and b489 and b490 as prepayment payments, where the labels make them the gas component of a combined bill and the electricity and gas account payments less rebates. The liquid fuels (central-heating oil and paraffin with bottled gas, LPG with liquid) and the solid fuels (coal, coke, wood and peat) are drawn as liquid_fuel_consumption and solid_fuel_consumption, the inputs policyengine-uk 2.149.0 reads (pe-uk#2572; María''s ruling of 2026-10-22), last in the chain so that every earlier draw is the chain''s own, uprated to calendar-2024 prices as every diary spend column is; the housing total nets their draws and adds them back unchanged, so it always holds them, and hot water, steam and ice stays in its remainder. The receipt records the published ONS 04.5.3 and 04.5.4 spend beside each fuel''s donor total at diary prices and the frame''s draw (published_fuels). Before the hold, each COICOP division''s drawn spend per household (a recomposed total''s remainder, any other division''s whole draw) is set against the donor''s mean of the same spend (for housing and transport, the donor''s total less the same parts, since the levelled parts keep their published levels and are no over-draw); a division above the divisions'' shared ratio, measured once before any levelling, comes down to it (María''s rulings of 2026-10-23 and 2026-10-24, microcosm#1278; Vahid''s review of microcosm#1383, item 9); the receipt records each division''s ratio and factor and the shared ratio (division_levelling) and each recomposed total''s levelling_factor. Each total is then held to the donor''s realised maximum of that total (maximum_total: donor_support, the support every drawn column is clipped to; microcosm#1164), never below its parts, the excess coming out of its remainder: a remainder near the top of the diary''s range plus levelled parts larger than the drawn ones would otherwise leave it. The two totals keep their committed support bounds, which the terminal support gate applies to the emitted frame; the recomposed_totals gate checks the declaration and the receipt, whose rows held at the maximum and weighted mass taken enter its identities. Every household spend column is at calendar-2024 prices as households paid them, the H5''s year that policyengine-uk projects from and the calibration uprates to the calendar-2025 window (microcosm#1113): the diary columns by the CPI uprating to 2024, road fuel at ONS 07.2.2 for 2024, energy at DESNZ volume and QEP prices for 2024, and bus fares at each area''s fiscal-year yield re-priced to 2024 by its fares index (the DfT local bus fares index by quarter for London and England outside London, Scotland''s calendar-year index; Northern Ireland, which publishes no fares index, from its own yields of the two fiscal years 2024 overlaps, weighted three months and nine (microcosm#1207), in place of England''s index, which carries the January 2025 rise in the English fare cap Northern Ireland did not have); the consumption_basis gate holds every level-setting step to that year. policyengine-uk applies the fiscal 2024-25 rules to model year 2024 (it samples each parameter at 30 April), so every levelled column sits about a quarter before the midpoint of the policy year it is taxed in; the calibration binds calendar-year facts as published and fiscal-year facts at the calendar window (María''s rule of 2026-09-22). The stage receipt also reports, for each of the twelve COICOP divisions, the prior-weighted frame total against ONS Consumer Trends for the same calendar year less the classes a household diary does not record (02.3 narcotics, 04.2 owner-occupiers'' imputed rent and 12.6.1 FISIM), on ONS''s domestic concept, and the twelve together against the national concept as well; it is report-only (microcosm#1113). The report-only litres audit compares each fuel''s frame litres with HMRC''s clearances of that fuel scaled by the cars share of its road use, from the vendored DESNZ sub-national road transport fuel consumption by vehicle type and fuel (PolicyEngine/chronicle#322); the OBR cars share of fuel duty receipts, uniform across fuels, stays beside the total. The liquid fuels hold bottled gas (b018, c45222), which COICOP puts under 04.5.2 (gas) and ONS''s 04.5.3 leaves out, so the receipt also gives the donor''s liquid fuels without it; neither heating-fuel column is levelled to ONS: the donor''s diary totals are about twice ONS''s, and the frame''s draws reach neither those nor ONS''s, so a costing on either needs levelling to ONS first (Vahid''s review of microcosm#1383, item 8).' - stage: etb_vat survey: Effects of Taxes and Benefits 1977-2024 source: UK Data Service SN 8856 Effects of Taxes and Benefits household tab and cited VAT anchor resource. @@ -4271,7 +4336,7 @@ stages: - kind: derive derived: is_uc_couple: count(is_benunit_head OR is_parent OR (dependent_children == 0)) over benefit-unit members == 2 - uc_property_capital_share: 0.9 x (other_residential_property_value + non_residential_property_value) of the household where the unit holds the household reference person (is_household_head), else 0 + uc_property_capital_share: (max(0, 0.9 x other_residential_property_value - other_residential_property_secured_debt) + max(0, 0.9 x non_residential_property_value - non_residential_property_secured_debt)) of the household where the unit holds the household reference person (is_household_head), else 0 uc_reported_capital: frs_benunit_capital + uc_property_capital_share where frs_benunit_capital >= 0, else frs_benunit_capital; a base FRS-channel unit with universal_credit_reported_amount > 0 takes frs_benunit_capital alone positive_pre_takeup_uc_award: max(0, uc_maximum_amount - uc_income_reduction) > 0 has_non_child_member: any(NOT is_child_or_qualifying_young_person_for_universal_credit) over benefit-unit members @@ -4341,6 +4406,7 @@ stages: - afcs_reported - bsp_reported - war_widows_pension_reported + - widowed_parents_allowance_reported linkage: person_source_id -> FRS-channel person_id reason: follows an injury, service or a death, not income - kind: derive @@ -4381,6 +4447,7 @@ stages: - afcs_reported - bsp_reported - war_widows_pension_reported + - widowed_parents_allowance_reported - is_disabled_for_benefits - is_enhanced_disabled_for_benefits - is_severely_disabled_for_benefits @@ -4429,8 +4496,8 @@ stages: salt: frs_benunit_capital - kind: derive derived: - uc_property_capital_share: 0.9 x (other_residential_property_value + non_residential_property_value) of the household where the unit holds the household reference person (is_household_head), else 0 - pension_credit_property_capital_share: 0.9 x (owned_land + other_residential_property_value + non_residential_property_value) of the household where the unit holds the household reference person (is_household_head), else 0 + uc_property_capital_share: (max(0, 0.9 x other_residential_property_value - other_residential_property_secured_debt) + max(0, 0.9 x non_residential_property_value - non_residential_property_secured_debt)) of the household where the unit holds the household reference person (is_household_head), else 0 + pension_credit_property_capital_share: (0.9 x owned_land + max(0, 0.9 x other_residential_property_value - other_residential_property_secured_debt) + max(0, 0.9 x non_residential_property_value - non_residential_property_secured_debt)) of the household where the unit holds the household reference person (is_household_head), else 0 uc_reported_capital: frs_benunit_capital + uc_property_capital_share where frs_benunit_capital >= 0 and NOT universal_credit_reported_anchor, else frs_benunit_capital pension_credit_reported_capital: frs_benunit_capital + pension_credit_property_capital_share where frs_benunit_capital >= 0, else frs_benunit_capital would_claim_uc: would_claim_uc OR universal_credit_reported_anchor @@ -4440,7 +4507,7 @@ stages: rewrites: - frs_benunit_capital - would_claim_uc - notes: Runs after the last universal_credit_reported writer and before CGT cloning. Redraws every SPI benefit unit's capital, since the channel's incomes are SPI draws and the copied FRS answer no longer belongs to the unit (uk-data#495, microcosm#1095), from weighted base-FRS units with available capital in cells of UC reporter status by financial investment income band (interest, dividends and other investment income; property income is excluded because TOTCAPB4 counts accounts and assets) by is_uc_couple (two retained FRS claimant/partner roles, independently of legal is_married) by dependent-children band. A cell with fewer than 20 donors widens in the declared coarsening order, and reporter status is never coarsened. It then applies the monotone reported-UC OR refresh. The recorded capitals add property (uk-data#495, microcosm#1095), since policyengine-uk 2.147.2 replaces every capital source with a recorded figure of 0 or more and takes it as countable, and TOTCAPB4 has no property. WAS records the property for the household, and each means test counts the claimant's and partner's own capital (UC Regs 2013 reg 18; SPCA 2002 s.5). The household reference person's benefit unit therefore holds all of the household's property, and no other unit records any (María's ruling of 2026-10-12), since that person is the one in whose name the home is owned or rented, the best single reading of the owner. The engine shares household property over every claimant or partner instead, which puts a parent's property on an adult child's claim; a recorded figure consumes its own unit's share, so the engine's shares reach only a unit on the unavailable sentinel, and since policyengine-uk 2.136.1 such a unit takes its share whatever a recording unit beside it holds (the receipt counts any unit left there). The property counts at 90% of its value, market value less 10% for the costs of sale (UC Regs 2013 reg 49; SPC Regs 2002 reg 19); debt secured on it is not on the frame and is not netted (pe-uk#1969). Universal Credit counts other residential and non-residential property, and Pension Credit counts those and owned land. A unit that reports Universal Credit keeps its receipt and records the carrier alone for Universal Credit, since DWP assessed its capital to pay it and the property is imputed without that receipt. frs_benunit_capital stays the financial carrier, and its unavailable sentinel -1 passes through to both. Both recorded figures project to later years by GDP per head, as financial capital does, while policyengine-uk 2.139.1 projects other residential property by house prices, so the other residential property in a recorded figure grows faster than the engine's own projection of it; by the OBR indices the engine carries, it grows 1.5% faster by 2025 and 2.0% by 2026 from a 2024 base. + notes: Runs after the last universal_credit_reported writer and before CGT cloning. Redraws every SPI benefit unit's capital, since the channel's incomes are SPI draws and the copied FRS answer no longer belongs to the unit (uk-data#495, microcosm#1095), from weighted base-FRS units with available capital in cells of UC reporter status by financial investment income band (interest, dividends and other investment income; property income is excluded because TOTCAPB4 counts accounts and assets) by is_uc_couple (two retained FRS claimant/partner roles, independently of legal is_married) by dependent-children band. A cell with fewer than 20 donors widens in the declared coarsening order, and reporter status is never coarsened. It then applies the monotone reported-UC OR refresh. The recorded capitals add property (uk-data#495, microcosm#1095), since policyengine-uk 2.151.0 replaces every capital source with a recorded figure of 0 or more and takes it as countable, and TOTCAPB4 has no property. WAS records the property for the household, and each means test counts the claimant's and partner's own capital (UC Regs 2013 reg 18; SPCA 2002 s.5). The household reference person's benefit unit therefore holds all of the household's property, and no other unit records any (María's ruling of 2026-10-12), since that person is the one in whose name the home is owned or rented, the best single reading of the owner. The engine shares household property over every claimant or partner instead, which puts a parent's property on an adult child's claim; a recorded figure consumes its own unit's share, so the engine's shares reach only a unit on the unavailable sentinel, and since policyengine-uk 2.136.1 such a unit takes its share whatever a recording unit beside it holds (the receipt counts any unit left there). The property counts at 90% of its value, market value less 10% for the costs of sale, less the debt secured on it, class by class and floored at zero per class (UC Regs 2013 reg 49(1); SPC Regs 2002 reg 19), as policyengine-uk values Universal Credit property capital. The was_wealth stage draws the debt on other residential and on non-residential property (microcosm#1095), and owned land carries none, as the engine has no input for it (pe-uk#1969). Universal Credit counts other residential and non-residential property, and Pension Credit counts those and owned land. A unit that reports Universal Credit keeps its receipt and records the carrier alone for Universal Credit, since DWP assessed its capital to pay it and the property is imputed without that receipt. frs_benunit_capital stays the financial carrier, and its unavailable sentinel -1 passes through to both. Both recorded figures project to later years by GDP per head, as financial capital does, while policyengine-uk 2.139.1 projects other residential property by house prices, so the other residential property in a recorded figure grows faster than the engine's own projection of it; by the OBR indices the engine carries, it grows 1.5% faster by 2025 and 2.0% by 2026 from a 2024 base. - stage: uc_take_up survey: Family Resources Survey 2024-25 source: 'DWP Stat-Xplore, Households on Universal Credit by family type and monthly award amount band, April to December 2025, applied to PolicyEngine-UK pre-take-up Universal Credit awards after the SPI income chain and UC capital coherence.' @@ -4504,15 +4571,16 @@ stages: pooling: adjacent bands within a family type, lowest first, until the drawn units rest on minimum_pool_sources distinct household_source_id values; a short last pool joins the one before it minimum_pool_sources: 30 drawn_units: entitled, non-reporting units of the population that the engine does not move off their legacy benefits (legacy_benefits_closed) and that report none, since a legacy benefit the engine leaves in place ends once the unit claims UC - undrawn_claims: a reporter at 1, a moved unit at the claim probability uc_legacy_closure_take_up's rule gives it (dwp_move_to_uc_facts.json), any other at its stored flag + undrawn_claims: a reporter at 1, a moved unit at the claim probability uc_legacy_closure_take_up's rule gives it (dwp_move_to_uc_facts.json), a unit keeping income-related ESA at 0, any other at its stored flag + kept_legacy_award: a unit whose claimant or partner reports income-related ESA (esa_income_reported), and that neither reports Universal Credit nor is moved off its legacy benefits, claims no Universal Credit, since policyengine-uk ends that award once the family claims it weight_mapping: household_to_benunit residual_rate: (T - F) / D, clipped to [0, 1]; T DWP's calendar-2025 mean count of the pool's bands, D the weight of the pool's drawn units and F the expected claims of its other entitled units, over Great Britain at the stage's household weights; realized by the drawn units claiming in the order of their uniform until their weight is nearest T - F, and applied at that uniform to Northern Ireland's drawn units too solve_scope: great_britain - not_drawn: keeps its stored flag + not_drawn: keeps its stored flag, except a unit keeping income-related ESA, which claims none outputs: [] rewrites: - would_claim_uc - notes: 'Runs after uc_capital_coherence, the last writer of universal_credit_reported and of the capital the engine assesses, and before uc_legacy_closure_take_up, which reads would_claim_uc. frs_take_up draws would_claim_uc early for FRS benefit units and spi_benefit_coherence redraws the SPI-channel units on the same rule: a reporter claims and the rest of the take-up contract''s one rate times the age population is drawn uniformly over its non-reporting units, whatever their award. At the spine''s design weights that put the caseload above DWP''s for single people without children, couples and the smallest awards, and below it for lone parents, so the national solve met DWP''s caseloads by reweighting low-income families. This stage redraws the flag for both channels. One temporary engine materialization, at the release''s calibration year on the frame stamped with its survey year (as pension_credit_take_up reads Pension Credit), gives each benefit unit the award it would be paid if it claimed: universal_credit on a temporary copy where every unit claims and carries the deduction attributes uc_deduction_attributes will assign it (they read only the unit''s identity and region), so after the benefit cap and deductions, the award the registry''s dwp/uc_payment_dist rows band. It also gives whether the engine moves the unit off its legacy benefits that year (legacy_benefits_closed) and the UC child status the calibration''s family type reads; all are consumed only. A unit with an award falls into a cell of DWP''s family type by DWP''s GBP 100 monthly award band, banded as the registry rows band an award, with one more band above GBP 2,500 a month. Within a family type, adjacent bands pool, lowest first, until the drawn units rest on at least 30 distinct source households. In each pool a reporter claims, and each drawn unit (entitled, non-reporting, in frs_take_up''s age population and not moved off its legacy benefits) claims at r = (T - F) / D clipped to [0, 1]: T is DWP''s count for the pool''s bands, the mean of the April to December 2025 Stat-Xplore months (the facts the registry rows average, vendored as dwp_uc_award_band_facts.json), D the weight of the drawn units, and F the expected claims of the other entitled units: 1 for a reporter, the claim probability uc_legacy_closure_take_up''s rule gives a moved unit (whose flag this stage leaves alone, so that probability does not move), and the stored flag for any other. T, F and D are Great Britain''s at the stage''s household weights, which DWP''s counts cover. The drawn units claim in the order of their uniform until their weight is nearest T - F, so each pool realizes r to within one unit''s weight rather than only in expectation, which a pool resting on a few dozen households can miss by several per cent, and Northern Ireland''s drawn units claim below the same uniform. A pool whose other claims reach T, or whose T exceeds every entitled unit, cannot meet DWP''s count; the receipt flags it. A unit with no award, or outside the age population, keeps its stored flag, the single-rate draw, which is how a unit claims once a reform or a later year entitles it. The uniform is the would_claim_uc identity stream frs_take_up and spi_benefit_coherence use. The receipt gives each pool''s DWP count, its support in bands of distinct source households and its unreachable flag (only where ten or more sources carry the pool), and each family type''s weighted caseload before and after; it gives no unit count except in bands and no rate. The uk_stage_uc_take_up gate reads it; the terminal take-up signal gate no longer measures would_claim_uc.' + notes: 'Runs after uc_capital_coherence, the last writer of universal_credit_reported and of the capital the engine assesses, and before uc_legacy_closure_take_up, which reads would_claim_uc. frs_take_up draws would_claim_uc early for FRS benefit units and spi_benefit_coherence redraws the SPI-channel units on the same rule: a reporter claims and the rest of the take-up contract''s one rate times the age population is drawn uniformly over its non-reporting units, whatever their award. At the spine''s design weights that put the caseload above DWP''s for single people without children, couples and the smallest awards, and below it for lone parents, so the national solve met DWP''s caseloads by reweighting low-income families. This stage redraws the flag for both channels. One temporary engine materialization, at the release''s calibration year on the frame stamped with its survey year (as pension_credit_take_up reads Pension Credit), gives each benefit unit the award it would be paid if it claimed: universal_credit on a temporary copy where every unit claims and carries the deduction attributes uc_deduction_attributes will assign it (they read only the unit''s identity and region), so after the benefit cap and deductions, the award the registry''s dwp/uc_payment_dist rows band. It also gives whether the engine moves the unit off its legacy benefits that year (legacy_benefits_closed) and the UC child status the calibration''s family type reads; all are consumed only. A unit with an award falls into a cell of DWP''s family type by DWP''s GBP 100 monthly award band, banded as the registry rows band an award, with one more band above GBP 2,500 a month. Within a family type, adjacent bands pool, lowest first, until the drawn units rest on at least 30 distinct source households. In each pool a reporter claims, and each drawn unit (entitled, non-reporting, in frs_take_up''s age population and not moved off its legacy benefits) claims at r = (T - F) / D clipped to [0, 1]: T is DWP''s count for the pool''s bands, the mean of the April to December 2025 Stat-Xplore months (the facts the registry rows average, vendored as dwp_uc_award_band_facts.json), D the weight of the drawn units, and F the expected claims of the other entitled units: 1 for a reporter, the claim probability uc_legacy_closure_take_up''s rule gives a moved unit (whose flag this stage leaves alone, so that probability does not move), and the stored flag for any other. T, F and D are Great Britain''s at the stage''s household weights, which DWP''s counts cover. The drawn units claim in the order of their uniform until their weight is nearest T - F, so each pool realizes r to within one unit''s weight rather than only in expectation, which a pool resting on a few dozen households can miss by several per cent, and Northern Ireland''s drawn units claim below the same uniform. A pool whose other claims reach T, or whose T exceeds every entitled unit, cannot meet DWP''s count; the receipt flags it. A unit with no award, or outside the age population, keeps its stored flag, the single-rate draw, which is how a unit claims once a reform or a later year entitles it. The uniform is the would_claim_uc identity stream frs_take_up and spi_benefit_coherence use. The receipt gives each pool''s DWP count, its support in bands of distinct source households and its unreachable flag (only where ten or more sources carry the pool), and each family type''s weighted caseload before and after; it gives no unit count except in bands and no rate. The uk_stage_uc_take_up gate reads it; the terminal take-up signal gate no longer measures would_claim_uc. From policyengine-uk 2.149.0 a claim for Universal Credit ends a claimant''s or partner''s income-related ESA (pe-uk#2563), so a unit whose claimant or partner reports that award, and that neither reports Universal Credit nor is moved off its legacy benefits, claims none (kept_legacy_award): it was on the award at the interview, and a reported receipt is a fact (microcosm#1095). The closure draw downstream reads the flag this stage writes, so the closure probabilities the solve expects use it too, and the receipt bands the units it keeps off Universal Credit (income_related_esa_kept). Housing Benefit, which the engine also ends on a claim, keeps the stored flag here, pending the Housing Benefit and JSA PR (microcosm#867, microcosm#869).' - stage: uc_legacy_closure_take_up survey: DWP Stat-Xplore, Households invited to Move to Universal Credit by legacy benefit and move status, notices July 2022 to June 2026 source: https://stat-xplore.dwp.gov.uk @@ -4547,7 +4615,8 @@ stages: - esa_income - income_support - jsa_income - true_without_draw: a member reports universal_credit_reported, would_claim_uc is true, or no member reports a legacy benefit + reporters: the claimant and partner (is_claimant_or_partner); an award another member claims in their own right closes on its own (policyengine-uk 2.146.0, pe-uk#2549) + true_without_draw: the claimant or partner reports universal_credit_reported, would_claim_uc is true, or neither reports a legacy benefit rate: claimed / (claimed + did not claim) for the combination, the all-households rate where DWP reports none probability: clip((rate - p) / (1 - p), 0, 1) p: the combination's weighted share of Great Britain's drawn units with would_claim_uc true, at the spine's design weights; the probability applies in Northern Ireland too @@ -4556,7 +4625,7 @@ stages: seed: 0 outputs: - would_claim_uc_at_legacy_closure - notes: Ports uk-data#534 (a draft, at c67077a66; uk-data#492) at the spine's design weights (microcosm#1095). policyengine-uk 2.128.0 (pe-uk#2119) moves a family off a legacy benefit DWP has closed (tax credits from 2025-26) and takes its other legacy awards away; the family then claims Universal Credit if would_claim_uc or would_claim_uc_at_legacy_closure is true, and the engine's default for the second, true, put every such family on Universal Credit. The stage runs after uc_take_up, the last writer of would_claim_uc (uc_capital_coherence is the last writer of universal_credit_reported), and before pension_credit_take_up and CGT cloning, so every SPI benefit unit draws on its own final receipts and every clone carries its source's draw. A benefit unit with a member reporting Universal Credit, a unit whose would_claim_uc is true, and a unit reporting none of the six legacy means-tested benefits (child_tax_credit, working_tax_credit, housing_benefit, esa_income, income_support and jsa_income, each read as a member's _reported above 0) is true, the engine's default. Every other unit is drawn at (r - p) / (1 - p), clipped to [0, 1], where r is DWP's claimed / (claimed + did not claim) for the unit's combination of legacy benefits (the all-households rate where DWP reports none; households still in progress are left out) and p is the combination's share of Great Britain's such units whose would_claim_uc is true, at the stage's household weights mapped to benefit units (uk-data#534's p is unweighted, as its draw precedes calibration; María's rulings of 2026-10-16 and 2026-10-17); the probability applies to the combination's units in Northern Ireland too, since DWP's rates cover Great Britain. So, in expectation, the weighted share of Great Britain's drawn units claiming at the closure in each combination is DWP's rate wherever p is at most r; where p exceeds it the probability is 0 and the receipt flags the combination (rate_unreachable), never p itself. Two limits carry over from uk-data#534. The drawn cohort includes units on the Pension Credit route, whose legacy benefits policyengine-uk does not close, and DWP's rates count every household sent a notice, entitled to Universal Credit or not. The uniform reads an identity-keyed stream on benunit_id. + notes: Ports uk-data#534 (a draft, at c67077a66; uk-data#492) at the spine's design weights (microcosm#1095). policyengine-uk 2.128.0 (pe-uk#2119) moves a family off a legacy benefit DWP has closed (tax credits from 2025-26) and takes its other legacy awards away; the family then claims Universal Credit if would_claim_uc or would_claim_uc_at_legacy_closure is true, and the engine's default for the second, true, put every such family on Universal Credit. The stage runs after uc_take_up, the last writer of would_claim_uc (uc_capital_coherence is the last writer of universal_credit_reported), and before pension_credit_take_up and CGT cloning, so every SPI benefit unit draws on its own final receipts and every clone carries its source's draw. A benefit unit whose claimant or partner reports Universal Credit, a unit whose would_claim_uc is true, and a unit whose claimant and partner report none of the six legacy means-tested benefits (child_tax_credit, working_tax_credit, housing_benefit, esa_income, income_support and jsa_income, each read as the claimant's or partner's _reported above 0, is_claimant_or_partner) is true, the engine's default. Only the claimant's and partner's reports count, since policyengine-uk 2.146.0 (pe-uk#2549) closes an award through its owners, so an award another member claims in their own right closes on its own and does not move the family. Every other unit is drawn at (r - p) / (1 - p), clipped to [0, 1], where r is DWP's claimed / (claimed + did not claim) for the unit's combination of legacy benefits (the all-households rate where DWP reports none; households still in progress are left out) and p is the combination's share of Great Britain's such units whose would_claim_uc is true, at the stage's household weights mapped to benefit units (uk-data#534's p is unweighted, as its draw precedes calibration; María's rulings of 2026-10-16 and 2026-10-17); the probability applies to the combination's units in Northern Ireland too, since DWP's rates cover Great Britain. So, in expectation, the weighted share of Great Britain's drawn units claiming at the closure in each combination is DWP's rate wherever p is at most r; where p exceeds it the probability is 0 and the receipt flags the combination (rate_unreachable), never p itself. Two limits carry over from uk-data#534. The drawn cohort includes units on the Pension Credit route, whose legacy benefits policyengine-uk does not close, and DWP's rates count every household sent a notice, entitled to Universal Credit or not. The uniform reads an identity-keyed stream on benunit_id. - stage: pension_credit_take_up survey: Family Resources Survey 2024-25 source: 'DWP Income-related benefits: estimates of take-up, financial year ending 2024 (Pension Credit caseload take-up by component), applied to PolicyEngine-UK pre-take-up Pension Credit entitlement after the SPI income chain.' @@ -4672,7 +4741,7 @@ stages: output: would_claim_carers_allowance draw: would_claim_carers_allowance assignment_unit: person - eligibility: 'persons outside Scotland whose care_hours reach policyengine-uk''s gov.dwp.carers_allowance.min_hours, who report no Carer''s Allowance, and whom is_gainfully_employed_for_carers_allowance holds gainfully employed at the survey year: the carers the earnings limit alone keeps from the allowance. Scotland stays closed, since Carer Support Payment reads the same flag; policyengine-uk applies its earnings limit from 2.146.1, and opening Scotland is a follow-up (microcosm#1319)' + eligibility: 'persons whose care_hours reach policyengine-uk''s gov.dwp.carers_allowance.min_hours, who report no Carer''s Allowance, and whom is_gainfully_employed_for_carers_allowance holds gainfully employed at the survey year: the carers the earnings limit alone keeps from the allowance. In Scotland the flag is Carer Support Payment''s, which policyengine-uk pays under its own earnings limit from 2.146.1' reported_true_anchor: carers_allowance_reported > 0 rate_key: carers_allowance_newly_entitled rate_derivation: 'the take-up contract''s carers_allowance_newly_entitled rate, drawn flat over the eligible persons; would_claim = reported OR (eligible AND u < rate), so a reporter stays true and every other person false' @@ -4680,7 +4749,7 @@ stages: outputs: [] rewrites: - would_claim_carers_allowance - notes: 'Runs after the SPI income chain, UC capital coherence and the Pension Credit and Child Benefit redraws, before CGT cloning, so every clone carries its source''s draw (microcosm#1319). frs_spine sets would_claim_carers_allowance from reported receipt and the SPI income chain re-derives it from the refilled receipt on the rows it redraws, so that care_hours qualifies a carer for the Universal Credit carer element without paying the allowance to every carer (#882). A carer above the earnings limit cannot report the allowance, so no reform that widens it reached a carer who would claim once entitled: the April 2025 rise of the limit from £151 to £196 a week brought an estimated 61,000 more people into eligibility (Independent Review of Carer''s Allowance Overpayments, July 2025, chapter 7). One temporary engine materialization at the survey year, on the frame''s own values, gives each person''s is_gainfully_employed_for_carers_allowance (consumed only); the engine reads a year''s parameters at 30 April, so the limit is 2024-25''s £151. A person outside Scotland whose care_hours reach the engine''s gov.dwp.carers_allowance.min_hours (35), who reports no allowance and whom that test holds gainfully employed claims at the take-up contract''s carers_allowance_newly_entitled rate (0.6, María''s ruling of 2026-10-20, sensitivity 0.45 to 0.75) on the person''s identity-keyed uniform (seed 0, salt would_claim_carers_allowance): would_claim = reported OR (eligible AND u < rate). A reporter stays true; a carer under the limit who reports no allowance stays false, as the survey records them entitled and not claiming. Scotland stays closed, since Carer Support Payment reads the same flag; policyengine-uk applies its earnings limit from 2.146.1, and opening Scotland is a follow-up (microcosm#1319). The earnings test is read before salary_sacrifice moves some contributors'' pension amounts out of their pay, so a drawn carer whom that conversion takes under the survey year''s limit keeps the flag although the file then shows them entitled and not reporting. The stage rebuilds the flag from reported receipt and refuses a frame whose flag no longer follows it. Its receipt bands support on distinct source households (household_source_id), and gives a weighted total only where ten or more carry it and the realised share only where neither side rests on one to nine; the stage has no health gate.' + notes: 'Runs after the SPI income chain, UC capital coherence and the Pension Credit and Child Benefit redraws, before CGT cloning, so every clone carries its source''s draw (microcosm#1319). frs_spine sets would_claim_carers_allowance from reported receipt and the SPI income chain re-derives it from the refilled receipt on the rows it redraws, so that care_hours qualifies a carer for the Universal Credit carer element without paying the allowance to every carer (#882). A carer above the earnings limit cannot report the allowance, so no reform that widens it reached a carer who would claim once entitled: the April 2025 rise of the limit from £151 to £196 a week brought an estimated 61,000 more people into eligibility (Independent Review of Carer''s Allowance Overpayments, July 2025, chapter 7). One temporary engine materialization at the survey year, on the frame''s own values, gives each person''s is_gainfully_employed_for_carers_allowance (consumed only); the engine reads a year''s parameters at 30 April, so the limit is 2024-25''s £151. A person whose care_hours reach the engine''s gov.dwp.carers_allowance.min_hours (35), who reports no allowance and whom that test holds gainfully employed claims at the take-up contract''s carers_allowance_newly_entitled rate (0.6, María''s ruling of 2026-10-20, sensitivity 0.45 to 0.75) on the person''s identity-keyed uniform (seed 0, salt would_claim_carers_allowance): would_claim = reported OR (eligible AND u < rate). A reporter stays true; a carer under the limit who reports no allowance stays false, as the survey records them entitled and not claiming. Scotland is drawn too (María''s ruling of 2026-10-23): there the flag is Carer Support Payment''s, which policyengine-uk pays only under its own earnings limit from 2.146.1 (PolicyEngine/policyengine-uk#2473), and the receipt reports Scotland apart. The earnings test is read before salary_sacrifice moves some contributors'' pension amounts out of their pay, so a drawn carer whom that conversion takes under the survey year''s limit keeps the flag although the file then shows them entitled and not reporting. The stage rebuilds the flag from reported receipt and refuses a frame whose flag no longer follows it. Its receipt bands support on distinct source households (household_source_id), and gives a weighted total only where ten or more carry it and the realised share only where neither side rests on one to nine; the stage has no health gate.' - stage: uc_deduction_attributes survey: DWP Universal Credit deductions statistics, March 2025 to February 2026 source: Department for Work and Pensions supplementary Tables 2, 5 and 6, sha-pinned by Chronicle package dwp-uc-deductions-march-2025-february-2026. @@ -5102,7 +5171,7 @@ stages: artifacts: - role: policy_parameters kind: versioned_parameter_tree - dependency: policyengine-uk>=2.147.2 via microcosm-build[uk] + dependency: policyengine-uk>=2.151.0 via microcosm-build[uk] parameters: - gov.hmrc.cgt.annual_exempt_amount instant_rule: raw dated parameter files evaluated at 1 June of the build period's tax year @@ -5167,7 +5236,7 @@ stages: artifacts: - role: policy_parameters kind: versioned_parameter_tree - dependency: policyengine-uk>=2.147.2 via microcosm-build[uk] + dependency: policyengine-uk>=2.151.0 via microcosm-build[uk] parameters: - gov.hmrc.cgt.annual_exempt_amount - gov.hmrc.cgt.badr.lifetime_limit @@ -5291,7 +5360,32 @@ stages: resource: salary_sacrifice_anchor.json format: json runtime_sha256_required: true + - role: obr_salary_sacrifice_costing_facts + kind: public_aggregate_reference + resource: obr_salary_sacrifice_costing_facts.json + format: json + runtime_sha256_required: true + - role: bonus_sacrifice_anchor + kind: public_aggregate_reference + resource: bonus_sacrifice_anchor.json + format: json + runtime_sha256_required: true operations: + - kind: verify_vendored_fact_resource + artifact_role: obr_salary_sacrifice_costing_facts + resource: obr_salary_sacrifice_costing_facts.json + feed_pin: chronicle_feed.json + record_sets: + - obr.salary_sacrifice_costing_2026_02.tax_base.fy2027 + - obr.salary_sacrifice_costing_2026_02.tax_base.fy2028 + - obr.salary_sacrifice_costing_2026_02.tax_base.fy2029 + - obr.salary_sacrifice_costing_2026_02.tax_base.fy2030 + source_vintage: OBR supplementary forecast information on salary sacrifice, 5 February 2026 + mapped_build_period: 2024 + period_mapping: fiscal_year_2027_base_met_by_the_engine_projection + require_before_source_read: true + runtime_sha256_required: true + fail_on_mismatch: true - kind: fit_weighted_qrf training_population: support_channel == frs and not capital-gains clone and not CGT support copy and salary_sacrifice_asked == 1 and employment_income > 0 target_population: salary_sacrifice_asked != 1 and employment_income > 0, frame-wide; people not asked who have no employment income are set to zero @@ -5319,13 +5413,43 @@ stages: salt: salary_sacrifice_conversion receipt: weighted_headcount reason: Salary-sacrifice support stage rewrites pension columns and converted records' pay; household rows and typed household weights pass through and total household mass is conserved. + - kind: convert_bonuses_to_bonus_sacrifice + resource: bonus_sacrifice_anchor.json + facts: obr_salary_sacrifice_costing_facts.json + source: frs_bonus_amount + output: pension_contributions_via_bonus_sacrifice + candidates: a bonus (frs_bonus_amount, or an SPI-channel adult's drawn bonus) > 0 and employment_income at least the anchor's annual upper earnings limit, after the salary conversion + move: the bonus, at most move_pay_share_cap of employment_income, to pension_contributions_via_bonus_sacrifice; employment_income unchanged, since a sacrificed bonus is never received + move_pay_share_cap: 0.5 + spi_bonus_draw: an SPI-channel adult with pay draws the bonus share of pay (frs_bonus_amount over employment_income) of a base-FRS adult with pay in the same pay cell, by person weight, keyed on person_id; the cells are the base-FRS paid adults' weighted pay quantiles at spi_cell_quantiles, and a cell with fewer than spi_min_donor_sources donor source households joins the one below + spi_cell_quantiles: + - 0.1 + - 0.2 + - 0.3 + - 0.4 + - 0.5 + - 0.6 + - 0.7 + - 0.8 + - 0.9 + - 0.95 + - 0.99 + spi_min_donor_sources: 20 + spi_salt: bonus_sacrifice_spi_bonus_share + threshold: 2000 + solve: 'the candidates in the order of their identity-keyed uniforms, taken while the projected base is nearer the anchor''s OBR base: the anchor''s weight growth times the sum of person weight times (max(0, g (S + B) - threshold) - max(0, g S - threshold)), with g the anchor''s earnings growth, S the salary sacrifice and B the bonus sacrificed; every candidate where even all fall short' + seed: 2024 + salt: bonus_sacrifice_conversion + receipt: projected_base outputs: - pension_contributions_via_salary_sacrifice + - pension_contributions_via_bonus_sacrifice - employee_pension_contributions - employment_income - salary_sacrifice_pre_conversion_pay nonnegative_outputs: - pension_contributions_via_salary_sacrifice + - pension_contributions_via_bonus_sacrifice - employee_pension_contributions - employment_income - salary_sacrifice_pre_conversion_pay @@ -5333,7 +5457,7 @@ stages: - pension_contributions_via_salary_sacrifice - employee_pension_contributions - employment_income - notes: The QRF trains only on the 2024-25 FRS asked subset with pay. Salary sacrifice is pay given up, so every amount, reported or predicted, is limited to the pay the person still receives, and a person without pay has none (uk-data#518, microcosm#1095); the limit bites above all on SPI-channel rows, which keep their FRS twin's answer beside pay redrawn from the SPI. The second arm creates support toward the reviewed 5.4m staging target by moving contributors' pension amounts, up to half their pay, into salary sacrifice and lowering their pay by the same amount, since the engine reads employment_income after sacrifice; what does not move stays an employee contribution, so the sacrifice never exceeds the pay that remains. Before microcosm#1069 c9 the pay stayed whole and the converted record lost its net-pay relief. + notes: The QRF trains only on the 2024-25 FRS asked subset with pay. Salary sacrifice is pay given up, so every amount, reported or predicted, is limited to the pay the person still receives, and a person without pay has none (uk-data#518, microcosm#1095); the limit bites above all on SPI-channel rows, which keep their FRS twin's answer beside pay redrawn from the SPI. The second arm creates support toward the reviewed 5.4m staging target by moving contributors' pension amounts, up to half their pay, into salary sacrifice and lowering their pay by the same amount, since the engine reads employment_income after sacrifice; what does not move stays an employee contribution, so the sacrifice never exceeds the pay that remains. Before microcosm#1069 c9 the pay stayed whole and the converted record lost its net-pay relief. The third arm adds bonus sacrifice beside pay toward the OBR's 2027-28 base above GBP 2,000 (microcosm#1340). A sacrificed bonus is never received, so the FRS records it in neither pay nor its bonus amounts, and pay stays as it is (María's ruling of 2026-10-24 on Vahid's review of microcosm#1383); a received FRS bonus marks a bonus-paying job and its size. An SPI-channel adult's FRS bonus is its twin's, beside the tape's pay, so it draws a bonus share of pay from a base-FRS adult in its pay cell instead. - stage: student_loans survey: Family Resources Survey 2024-25 and Student Loans Company borrower forecasts for England source: Explore Education Statistics Table 6a, Higher education total diff --git a/packages/microcosm-build/src/microcosm/build/uk/take_up_contract.json b/packages/microcosm-build/src/microcosm/build/uk/take_up_contract.json index 0bb240842a..45c85c89c4 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/take_up_contract.json +++ b/packages/microcosm-build/src/microcosm/build/uk/take_up_contract.json @@ -114,7 +114,7 @@ "source": { "source": "Independent Review of Carer's Allowance Overpayments (July 2025), chapter 7, and DWP benefit statistics", "agency": "DWP", - "citation": "The share of the carers a reform or a later year newly entitles to Carer's Allowance who claim it. No published rate exists for them: the Independent Review estimates that the April 2025 rise of the earnings limit from 151 to 196 pounds a week brought about 61,000 more people into eligibility, and gives no estimate of how many claim. 0.6 is the central rate of María's ruling of 2026-10-20 (sensitivity 0.45 to 0.75), to be checked against the 61,000 and against DWP's Carer's Allowance caseload by the earnings-limit back-test on the national file (microcosm#1319). Applied by carers_allowance_take_up to a person outside Scotland whose care hours meet the hours condition, who reports no Carer's Allowance and whom the earnings limit holds gainfully employed at the survey year, the year it is keyed at.", + "citation": "The share of the carers a reform or a later year newly entitles to Carer's Allowance who claim it. No published rate exists for them: the Independent Review estimates that the April 2025 rise of the earnings limit from 151 to 196 pounds a week brought about 61,000 more people into eligibility, and gives no estimate of how many claim. 0.6 is the central rate of María's ruling of 2026-10-20 (sensitivity 0.45 to 0.75), to be checked against the 61,000 and against DWP's Carer's Allowance caseload by the earnings-limit back-test on the national file (microcosm#1319). Applied by carers_allowance_take_up to a person whose care hours meet the hours condition, who reports no Carer's Allowance and whom the earnings limit holds gainfully employed at the survey year, the year it is keyed at. Scotland's carers take this same rate (María's ruling of 2026-10-23): Carer Support Payment reads the same claim flag, and the contract holds no rate of its own for it.", "url": "https://www.gov.uk/government/publications/review-of-carers-allowance-overpayments/independent-review-of-carers-allowance-overpayments", "caseload_url": "https://www.gov.uk/government/statistics/dwp-benefit-statistics-february-2026/dwp-benefit-statistics-february-2026", "status": "frozen_by_adjudication", @@ -123,7 +123,7 @@ "followup": "microcosm#1319" } }, - "population": "persons outside Scotland with care hours at the Carer's Allowance hours condition, no reported Carer's Allowance, and earnings above the limit at the survey year" + "population": "persons with care hours at the Carer's Allowance hours condition, no reported Carer's Allowance, and earnings above the limit at the survey year, in Scotland too, where Carer Support Payment reads the same flag" }, { "key": "universal_credit", diff --git a/packages/microcosm-build/src/microcosm/build/uk/target_reference_membership.json b/packages/microcosm-build/src/microcosm/build/uk/target_reference_membership.json index ccd6bf322e..2b18a26d1d 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/target_reference_membership.json +++ b/packages/microcosm-build/src/microcosm/build/uk/target_reference_membership.json @@ -1,11 +1,11 @@ { "source_fact_feed": "chronicle-uk-abf0921-consumer-facts", "target_period": 2025, - "candidate_count": 1360, - "contract_target_count": 378, - "active_reference_count": 1338, + "candidate_count": 1358, + "contract_target_count": 376, + "active_reference_count": 1336, "status_counts": { - "active": 1338, + "active": 1336, "no_fact_at_or_before_period": 5, "signed_excluded": 17 }, @@ -102,14 +102,6 @@ "geography_level": "country", "geography_id": "K02000001" }, - "obr.universal_credit_in_cap": { - "geography_level": "country", - "geography_id": "K03000001" - }, - "obr.universal_credit_outside_cap": { - "geography_level": "country", - "geography_id": "K03000001" - }, "obr.winter_fuel_allowance": { "geography_level": "country", "geography_id": "K04000001" @@ -1952,10 +1944,6 @@ "geography_level": "country", "geography_id": "E92000001" }, - "slc.repayments.england_postgraduate": { - "geography_level": "country", - "geography_id": "E92000001" - }, "slc.repayments.england_plan_5": { "geography_level": "country", "geography_id": "E92000001" @@ -4479,6 +4467,10 @@ "geography_id": "W92000004" } ] + }, + "mhclg.council_tax_stock.single_adult_discount": { + "geography_level": "country", + "geography_id": "E92000001" } }, "genuine_sum_residue": [ @@ -4657,7 +4649,6 @@ "slc.repayments.england_plan_1", "slc.repayments.england_plan_2", "slc.repayments.england_plan_5", - "slc.repayments.england_postgraduate", "slc.repayments.england_total_higher_education", "welshgov.bus.public_support" ], @@ -10898,6 +10889,11 @@ "index": "hmrc.itl_2026.total_tax_growth_by_total_income_band", "factor": "1.21312442637997", "value_before_uprating": "522000000.0" + }, + { + "name": "mhclg.council_tax_stock.single_adult_discount", + "from": "2025-10", + "to": "2025" } ], "targets": { @@ -11231,36 +11227,6 @@ } ] }, - "obr.universal_credit_in_cap": { - "status": "active", - "candidates": [ - { - "name": "obr.universal_credit_in_cap", - "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, - "resolved_period": 2025, - "resolved_value": 63016849758.31539, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_0e10f670e44a5d30d75c358f" - } - ] - }, - "obr.universal_credit_outside_cap": { - "status": "active", - "candidates": [ - { - "name": "obr.universal_credit_outside_cap", - "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, - "resolved_period": 2025, - "resolved_value": 13037904629.457691, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_d7377a28ca45388650d961e0" - } - ] - }, "obr.winter_fuel_allowance": { "status": "active", "candidates": [ @@ -19295,21 +19261,6 @@ } ] }, - "slc.repayments.england_postgraduate": { - "status": "active", - "candidates": [ - { - "name": "slc.repayments.england_postgraduate", - "status": "active", - "matched_fact_count_overall": 4, - "matched_fact_count_at_or_before_period": 4, - "resolved_period": 2025, - "resolved_value": 427019983.79, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_d1ed6adea71769e10e3c3f36" - } - ] - }, "slc.repayments.england_plan_5": { "status": "active", "candidates": [ @@ -19977,7 +19928,7 @@ "status": "signed_excluded", "matched_fact_count_overall": 6, "matched_fact_count_at_or_before_period": 6, - "signed_rationale": "ONS Consumer Trends COICOP 04.5 (electricity, gas and other fuels) carries liquid and solid fuels the frame does not model; chronicle #271 (chronicle#270) published the 04.5.1 electricity and 04.5.2 gas sub-classes, which ons.household_electricity_expenditure and ons.household_gas_expenditure carry per fuel on the frame's own columns. Both were bound until microcosm#1113 made them measured diagnostics (Mar\u00eda's ruling of 2026-10-08, D1), so no ONS energy row is fitted. The total row is retained in the contract for registry parity and signed out here (microcosm#890 F1)." + "signed_rationale": "ONS Consumer Trends COICOP 04.5 (electricity, gas and other fuels): chronicle #271 (chronicle#270) published the 04.5.1 electricity and 04.5.2 gas sub-classes, which ons.household_electricity_expenditure and ons.household_gas_expenditure carry per fuel on the frame's own columns. Since microcosm#1278 the frame also carries the 04.5.3 liquid and 04.5.4 solid fuels (liquid_fuel_consumption, solid_fuel_consumption), which the lcfs_consumption receipt sets beside ONS's own two rows; heat energy (04.5.5) stays in the housing remainder. The electricity and gas rows were bound until microcosm#1113 made them measured diagnostics (Mar\u00eda's ruling of 2026-10-08, D1), so no ONS energy row is fitted. The total row is retained in the contract for registry parity, measured on the four fuels (Mar\u00eda's ruling of 2026-10-22), and signed out here (microcosm#890 F1)." } ] }, @@ -30551,6 +30502,21 @@ "signed_rationale": "Wales's derived stock of owner-occupied homes over \u00a32m is below the 400-home floor of the local small-cell rule (hvcts_la_household_floor in local_small_cell_rule.json), which already defers every \u00a32m local-authority cell there. That is about one household weight at the ruled 150,000 households, so the row's fit would be noise, and a gate-only sign-off, which is public, would narrow an estimate expected to rest on fewer than 10 records. Signed out of the region fan-out; the same area's \u00a31m and \u00a31.5m rows, which count these homes, stay bound, as do the other regions' \u00a32m rows." } ] + }, + "mhclg.council_tax_stock.single_adult_discount": { + "status": "active", + "candidates": [ + { + "name": "mhclg.council_tax_stock.single_adult_discount", + "status": "active", + "matched_fact_count_overall": 3, + "matched_fact_count_at_or_before_period": 3, + "resolved_period": 2025, + "resolved_value": 8496178.0, + "resolved_fact_period": "2025-10", + "resolved_fact_key": "ledger_aggregate_fact_v2_8cb05d2d0434301a7e422afe" + } + ] } }, "fanout_family_outcomes": [ @@ -30588,8 +30554,8 @@ { "family": "council_tax_stock", "status": "active_declared_rows", - "active_reference_count": 100, - "signed_rationale": "MHCLG council taxbase (England), Welsh Government CT1 (Wales) and Scottish Government CTAXBASE (Scotland) council-tax stock bands are declared as explicit target rows per band plus total (England and Scotland A-H, Wales A-I). The Welsh and Scottish rows resolve with their country-level geography and band pin; the English rows fan out over the nine English regions of the region tier (microcosm#905), each cell composed as the linear combination of the billing-authority facts the crosswalk places in that region (microcosm#929)." + "active_reference_count": 101, + "signed_rationale": "MHCLG council taxbase (England), Welsh Government CT1 (Wales) and Scottish Government CTAXBASE (Scotland) council-tax stock bands are declared as explicit target rows per band plus total (England and Scotland A-H, Wales A-I). The Welsh and Scottish rows resolve with their country-level geography and band pin; the English rows fan out over the nine English regions of the region tier (microcosm#905), each cell composed as the linear combination of the billing-authority facts the crosswalk places in that region (microcosm#929). England's single adult discount is one national row, MHCLG Council Taxbase line 8 for all bands (microcosm#953)." }, { "family": "hmrc_cgt", diff --git a/packages/microcosm-build/src/microcosm/build/uk/target_reference_signed_exclusions.json b/packages/microcosm-build/src/microcosm/build/uk/target_reference_signed_exclusions.json index b8be602ac3..9fc3d0154f 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/target_reference_signed_exclusions.json +++ b/packages/microcosm-build/src/microcosm/build/uk/target_reference_signed_exclusions.json @@ -52,10 +52,10 @@ { "target_id": "ons.household_energy_expenditure", "reason_id": "superseded_by_component_targets", - "rationale": "ONS Consumer Trends COICOP 04.5 (electricity, gas and other fuels) carries liquid and solid fuels the frame does not model; chronicle #271 (chronicle#270) published the 04.5.1 electricity and 04.5.2 gas sub-classes, which ons.household_electricity_expenditure and ons.household_gas_expenditure carry per fuel on the frame's own columns. Both were bound until microcosm#1113 made them measured diagnostics (María's ruling of 2026-10-08, D1), so no ONS energy row is fitted. The total row is retained in the contract for registry parity and signed out here (microcosm#890 F1).", + "rationale": "ONS Consumer Trends COICOP 04.5 (electricity, gas and other fuels): chronicle #271 (chronicle#270) published the 04.5.1 electricity and 04.5.2 gas sub-classes, which ons.household_electricity_expenditure and ons.household_gas_expenditure carry per fuel on the frame's own columns. Since microcosm#1278 the frame also carries the 04.5.3 liquid and 04.5.4 solid fuels (liquid_fuel_consumption, solid_fuel_consumption), which the lcfs_consumption receipt sets beside ONS's own two rows; heat energy (04.5.5) stays in the housing remainder. The electricity and gas rows were bound until microcosm#1113 made them measured diagnostics (María's ruling of 2026-10-08, D1), so no ONS energy row is fitted. The total row is retained in the contract for registry parity, measured on the four fuels (María's ruling of 2026-10-22), and signed out here (microcosm#890 F1).", "tracking": "microcosm#890", "approved_by": "juaristi22", - "approved_on": "2026-09-16" + "approved_on": "2026-10-24" }, { "target_id": "hmrc.cgt.taxpayers_by_age_band", diff --git a/packages/microcosm-build/src/microcosm/build/uk/target_references.json b/packages/microcosm-build/src/microcosm/build/uk/target_references.json index 12920c5df5..2eee451261 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/target_references.json +++ b/packages/microcosm-build/src/microcosm/build/uk/target_references.json @@ -464,6 +464,7 @@ "mhclg.council_tax_stock.band_f": "mhclg.council_tax_stock", "mhclg.council_tax_stock.band_g": "mhclg.council_tax_stock", "mhclg.council_tax_stock.band_h": "mhclg.council_tax_stock", + "mhclg.council_tax_stock.single_adult_discount": "mhclg.council_tax_stock", "mhclg.council_tax_stock.total": "mhclg.council_tax_stock", "microcosm.high_value_homes.over_1_5m_by_region": "microcosm.high_value_homes", "microcosm.high_value_homes.over_1m_by_region": "microcosm.high_value_homes", @@ -489,8 +490,6 @@ "obr.statutory_maternity_pay": "obr.efo_expenditure", "obr.tv_licence_fee": "obr.efo_expenditure", "obr.universal_credit": "obr.efo_expenditure", - "obr.universal_credit_in_cap": "obr.efo_expenditure", - "obr.universal_credit_outside_cap": "obr.efo_expenditure", "obr.vat": "obr.efo_receipts", "obr.winter_fuel_allowance": "obr.efo_expenditure", "ons.household_composition.couple_3_plus_children_households": "ons.household_composition", @@ -600,7 +599,6 @@ "slc.repayments.england_plan_1": "slc.repayments", "slc.repayments.england_plan_2": "slc.repayments", "slc.repayments.england_plan_5": "slc.repayments", - "slc.repayments.england_postgraduate": "slc.repayments", "slc.repayments.england_total_higher_education": "slc.repayments", "slc.support.adult_dependants_grant_recipients": "slc.student_support", "slc.support.adult_dependants_grant_spend": "slc.student_support", @@ -832,6 +830,7 @@ "mhclg.council_tax_stock.band_f": "Band f", "mhclg.council_tax_stock.band_g": "Band g", "mhclg.council_tax_stock.band_h": "Band h", + "mhclg.council_tax_stock.single_adult_discount": "Single adult discount", "mhclg.council_tax_stock.total": "Total", "microcosm.high_value_homes.over_1_5m_by_region": "Owner-occupied homes valued over \u00a31.5 million by region", "microcosm.high_value_homes.over_1m_by_region": "Owner-occupied homes valued over \u00a31 million by region", @@ -857,8 +856,6 @@ "obr.statutory_maternity_pay": "Statutory maternity pay", "obr.tv_licence_fee": "TV licence fee", "obr.universal_credit": "Universal Credit expenditure", - "obr.universal_credit_in_cap": "Universal Credit inside the benefit cap", - "obr.universal_credit_outside_cap": "Universal Credit outside the benefit cap", "obr.vat": "VAT", "obr.winter_fuel_allowance": "Winter fuel allowance", "ons.household_composition.couple_3_plus_children_households": "Couple 3 plus children households", @@ -968,7 +965,6 @@ "slc.repayments.england_plan_1": "England plan 1", "slc.repayments.england_plan_2": "England plan 2", "slc.repayments.england_plan_5": "England plan 5", - "slc.repayments.england_postgraduate": "England postgraduate", "slc.repayments.england_total_higher_education": "England total higher education", "slc.support.adult_dependants_grant_recipients": "Adult dependants grant recipients", "slc.support.adult_dependants_grant_spend": "Adult dependants grant spend", @@ -1402,46 +1398,6 @@ "assertion_policy": "allow_source_projection", "value_operation": "calendar_year_window" }, - { - "name": "obr.universal_credit_in_cap", - "ledger_selector": { - "source_name": "obr", - "source_concept": "obr.universal_credit_in_cap", - "entity_name": "person", - "geography_level": "country", - "geography_id": "K03000001" - }, - "entity": "benunit", - "measure": "obr/universal_credit_in_cap", - "family": "obr", - "period": 2025, - "metadata": { - "contract_target_id": "obr.universal_credit_in_cap", - "measure_kind": "prepared_column" - }, - "assertion_policy": "allow_source_projection", - "value_operation": "calendar_year_window" - }, - { - "name": "obr.universal_credit_outside_cap", - "ledger_selector": { - "source_name": "obr", - "source_concept": "obr.universal_credit_outside_cap", - "entity_name": "person", - "geography_level": "country", - "geography_id": "K03000001" - }, - "entity": "benunit", - "measure": "obr/universal_credit_outside_cap", - "family": "obr", - "period": 2025, - "metadata": { - "contract_target_id": "obr.universal_credit_outside_cap", - "measure_kind": "prepared_column" - }, - "assertion_policy": "allow_source_projection", - "value_operation": "calendar_year_window" - }, { "name": "obr.winter_fuel_allowance", "ledger_selector": { @@ -5501,7 +5457,7 @@ "geography_level": "country", "geography_id": "K03000001" }, - "entity": "household", + "entity": "benunit", "measure": "dwp/benefit_capped_households", "family": "dwp_benefit_cap", "period": 2025, @@ -23710,29 +23666,6 @@ }, "value_operation": "sum" }, - { - "name": "slc.repayments.england_postgraduate", - "ledger_selector": { - "source_name": "slc", - "groupby_dimension": "slc.repayment_plan", - "source_measure_id": [ - "plan_3_postgraduate_masters", - "plan_3_postgraduate_doctoral" - ], - "entity_name": "person", - "geography_level": "country", - "geography_id": "E92000001" - }, - "entity": "person", - "measure": "slc/student_loan_repayment/england/postgraduate", - "family": "slc_repayments", - "period": 2025, - "metadata": { - "contract_target_id": "slc.repayments.england_postgraduate", - "measure_kind": "prepared_column" - }, - "value_operation": "sum" - }, { "name": "slc.repayments.england_plan_5", "ledger_selector": { @@ -47602,6 +47535,27 @@ "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", "cross_grain_grain": "region" } + }, + { + "name": "mhclg.council_tax_stock.single_adult_discount", + "ledger_selector": { + "source_name": "mhclg", + "source_concept": "mhclg.council_taxbase.single_adult_discount_dwellings", + "source_measure_id": "total", + "layout_groupby_value_id": "e92000001", + "geography_level": "country", + "geography_id": "E92000001" + }, + "entity": "household", + "measure": "mhclg/council_tax/single_adult_discount", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "mhclg.council_tax_stock.single_adult_discount", + "measure_kind": "prepared_column" + }, + "uprating_from_period": "2025-10", + "uprating_to_period": 2025 } ] } diff --git a/packages/microcosm-build/src/microcosm/build/uk/uk_population_targets.json b/packages/microcosm-build/src/microcosm/build/uk/uk_population_targets.json index 41cdabc8fa..c4771002da 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/uk_population_targets.json +++ b/packages/microcosm-build/src/microcosm/build/uk/uk_population_targets.json @@ -26,8 +26,8 @@ "pinned_ref": "12a1e028afeef08d8b2d74ee03fd9de3a78b2dd3", "pinned_version": "1.56.16", "registry_rows": 652, - "mapped_rows": 619, - "excluded_rows": 33, + "mapped_rows": 616, + "excluded_rows": 36, "mapped": { "dwp/benefit_capped_households": "dwp.benefit_cap.capped_households", "dwp/esa_claimants": "dwp.esa_claimants", @@ -365,8 +365,6 @@ "obr/sdlt": "obr.sdlt", "obr/statutory_maternity_pay": "obr.statutory_maternity_pay", "obr/tv_licence_fee": "obr.tv_licence_fee", - "obr/universal_credit_in_cap": "obr.universal_credit_in_cap", - "obr/universal_credit_outside_cap": "obr.universal_credit_outside_cap", "obr/vat": "obr.vat", "obr/winter_fuel_allowance": "obr.winter_fuel_allowance", "ons/corporate_land_value": "ons.land.corporate_land_value", @@ -544,7 +542,6 @@ "slc/student_loan_repayment/england/plan_1": "slc.repayments.england_plan_1", "slc/student_loan_repayment/england/plan_2": "slc.repayments.england_plan_2", "slc/student_loan_repayment/england/plan_5": "slc.repayments.england_plan_5", - "slc/student_loan_repayment/england/postgraduate": "slc.repayments.england_postgraduate", "slc/student_loan_repayment/northern_ireland": "slc.repayments.devolved_total", "slc/student_loan_repayment/scotland": "slc.repayments.devolved_total", "slc/student_loan_repayment/wales": "slc.repayments.devolved_total", @@ -682,7 +679,10 @@ "dwp/pip_dl_enhanced_claimants": "Diagnostic only (María's ruling of 2026-10-10, microcosm#1095): DWP's England-and-Wales PIP daily living caseload (FOI2025/24990, end of January 2025) resolves at K04000001 and fits within 0.1%, but fitting the two rows takes the calibration over the uk_weight_ratio fence. The exact figure is retained only as diagnostic provenance on obr.pip; no source value is adjusted.", "ons/female_15_19": "Split, not dropped (María's ruling of 2026-10-13 (microcosm#1095, uk-data#563)): a fit to the five-year band leaves the ages inside it free to drift, so the contract binds ages 15, 16-17 and 18-19 instead (ons.population.female_15, female_16_17 and female_18_19). The three rows partition this row's population and read the same ONS mid-year estimate by single year of age, so they sum to it. No single contract row has this row's definition.", "ons/male_15_19": "Split, not dropped (María's ruling of 2026-10-13 (microcosm#1095, uk-data#563)): a fit to the five-year band leaves the ages inside it free to drift, so the contract binds ages 15, 16-17 and 18-19 instead (ons.population.male_15, male_16_17 and male_18_19). The three rows partition this row's population and read the same ONS mid-year estimate by single year of age, so they sum to it. No single contract row has this row's definition.", - "dwp/uc/claimants_with_5+_children": "Diagnostic only (María's ruling of 2026-10-16, microcosm#1095): DWP's count of Universal Credit households with five or more children includes families outside the two-child limit, whose third and later children were all born before 6 April 2017 or who meet an exception, and the bound two-child-limit rows leave them out. Fewer than 10 FRS source households carry that difference, so the row cannot be fitted beside the limit rows. The April 2025 figure is retained only as diagnostic provenance on dwp.uc.two_child_limit.households_5_children; no source value is adjusted." + "dwp/uc/claimants_with_5+_children": "Diagnostic only (María's ruling of 2026-10-16, microcosm#1095): DWP's count of Universal Credit households with five or more children includes families outside the two-child limit, whose third and later children were all born before 6 April 2017 or who meet an exception, and the bound two-child-limit rows leave them out. Fewer than 10 FRS source households carry that difference, so the row cannot be fitted beside the limit rows. The April 2025 figure is retained only as diagnostic provenance on dwp.uc.two_child_limit.households_5_children; no source value is adjusted.", + "obr/universal_credit_in_cap": "Retired (microcosm#1095, the next policyengine-uk bump): OBR splits Universal Credit spending at the welfare cap, a spending limit, and no household-level concept in the model marks that boundary; the benefit-cap status the incumbent maps the split to is another concept, and on every measured spine the pair sat far outside its bound while their sum fits (microcosm#757). obr.universal_credit binds the sum of the two cells.", + "obr/universal_credit_outside_cap": "Retired (microcosm#1095, the next policyengine-uk bump): OBR splits Universal Credit spending at the welfare cap, a spending limit, and no household-level concept in the model marks that boundary; the benefit-cap status the incumbent maps the split to is another concept, and on every measured spine the pair sat far outside its bound while their sum fits (microcosm#757). obr.universal_credit binds the sum of the two cells.", + "slc/student_loan_repayment/england/postgraduate": "Retired (microcosm#1095, the next policyengine-uk bump): the student-loans stage assigns no postgraduate plan (its domain is NONE, PLAN_1, PLAN_2 and PLAN_5) and policyengine-uk holds one plan a person, while a postgraduate loan is repaid beside the undergraduate plan most of its borrowers hold, so no record carries postgraduate repayments and no weights can reach SLC's figure (microcosm#757)." }, "unmapped_declarations": { "hmrc.salary_sacrifice.it_relief_basic_rate": "New declaration backed by chronicle#139 salary-sacrifice facts; the incumbent source CSV is still 410-Gone at 12a1e028 and its rows are silently suppressed by the bare-except drop in build_loss_matrix.py:376-394.", @@ -876,7 +876,8 @@ "dfe.funded_childcare.working_parent_children_age_1": "Requested by María on 2026-10-21 for the £100k childcare costing fixes (microcosm#1278, #1095): bind every DfE funded-childcare count the model can carry, even on few records, and sign out only those with a real reason. The working parent registrations at 9 to 11 months and by single year of age (1, 2 and 3) and the universal registrations in nursery at age 3, from the DfE January census, England, measured at the spring term (María's ruling of 2026-10-22); the age-4 cells are signed out, as the bound rows fix them (accounting note dfe_funded_childcare_single_ages). No incumbent row has this row's definition.", "dfe.funded_childcare.working_parent_children_age_2": "Requested by María on 2026-10-21 for the £100k childcare costing fixes (microcosm#1278, #1095): bind every DfE funded-childcare count the model can carry, even on few records, and sign out only those with a real reason. The working parent registrations at 9 to 11 months and by single year of age (1, 2 and 3) and the universal registrations in nursery at age 3, from the DfE January census, England, measured at the spring term (María's ruling of 2026-10-22); the age-4 cells are signed out, as the bound rows fix them (accounting note dfe_funded_childcare_single_ages). No incumbent row has this row's definition.", "dfe.funded_childcare.working_parent_children_age_3": "Requested by María on 2026-10-21 for the £100k childcare costing fixes (microcosm#1278, #1095): bind every DfE funded-childcare count the model can carry, even on few records, and sign out only those with a real reason. The working parent registrations at 9 to 11 months and by single year of age (1, 2 and 3) and the universal registrations in nursery at age 3, from the DfE January census, England, measured at the spring term (María's ruling of 2026-10-22); the age-4 cells are signed out, as the bound rows fix them (accounting note dfe_funded_childcare_single_ages). No incumbent row has this row's definition.", - "dfe.funded_childcare.universal_nursery_children_age_3": "Requested by María on 2026-10-21 for the £100k childcare costing fixes (microcosm#1278, #1095): bind every DfE funded-childcare count the model can carry, even on few records, and sign out only those with a real reason. The working parent registrations at 9 to 11 months and by single year of age (1, 2 and 3) and the universal registrations in nursery at age 3, from the DfE January census, England, measured at the spring term (María's ruling of 2026-10-22); the age-4 cells are signed out, as the bound rows fix them (accounting note dfe_funded_childcare_single_ages). No incumbent row has this row's definition." + "dfe.funded_childcare.universal_nursery_children_age_3": "Requested by María on 2026-10-21 for the £100k childcare costing fixes (microcosm#1278, #1095): bind every DfE funded-childcare count the model can carry, even on few records, and sign out only those with a real reason. The working parent registrations at 9 to 11 months and by single year of age (1, 2 and 3) and the universal registrations in nursery at age 3, from the DfE January census, England, measured at the spring term (María's ruling of 2026-10-22); the age-4 cells are signed out, as the bound rows fix them (accounting note dfe_funded_childcare_single_ages). No incumbent row has this row's definition.", + "mhclg.council_tax_stock.single_adult_discount": "No incumbent target: uk-data binds no council-tax discount; microcosm#953 binds MHCLG Council Taxbase line 8 now that policyengine-uk applies the single adult discount (pe-uk#1864)." }, "suppressed_ancestors": { "hmrc/salary_sacrifice_it_relief_basic_rate": { @@ -937,8 +938,6 @@ "obr.pip", "obr.statutory_maternity_pay", "obr.tv_licence_fee", - "obr.universal_credit_in_cap", - "obr.universal_credit_outside_cap", "obr.winter_fuel_allowance", "isc.private_school_students", "hmrc.salary_sacrifice.it_relief_basic_rate", @@ -1116,7 +1115,6 @@ "slc.repayments.england_total_higher_education", "slc.repayments.england_plan_1", "slc.repayments.england_plan_2", - "slc.repayments.england_postgraduate", "slc.repayments.england_plan_5", "slc.borrowers.plan_2_above_threshold", "slc.borrowers.plan_2_liable", @@ -1291,7 +1289,8 @@ "dwp.hb.amount_pension_age", "microcosm.high_value_homes.over_1m_by_region", "microcosm.high_value_homes.over_1_5m_by_region", - "microcosm.high_value_homes.over_2m_by_region" + "microcosm.high_value_homes.over_2m_by_region", + "mhclg.council_tax_stock.single_adult_discount" ] }, "profile_parity": { @@ -2120,7 +2119,7 @@ "policyengine": { "metric_name": "obr/vat", "value_variable": "vat", - "notes": "Bound at the calendar-2025 window of the OBR fiscal years (three twelfths of FY2024-25, nine twelfths of FY2025-26; calendar_year_window), María's rule of 2026-09-22 that fiscal-year facts take only the months to the end of the calibration calendar year (PolicyEngine/chronicle#280 lane)." + "notes": "Bound at the calendar-2025 window of the OBR fiscal years (three twelfths of FY2024-25, nine twelfths of FY2025-26; calendar_year_window), María's rule of 2026-09-22 that fiscal-year facts take only the months to the end of the calibration calendar year (PolicyEngine/chronicle#280 lane). Bound again with the next policyengine-uk bump (María's ruling D3 of 2026-10-08, microcosm#1113 and #1278): policyengine-uk#2187, released in 2.135.7, replaced the constant survey-coverage factor, and on #1333's policyengine-uk 2.145.0 arm the row reads about 6 percent above OBR at design weights and about 11 percent above at the calibrated weights while held out. OBR's receipts include VAT on private school fees, charged from 1 January 2025, which policyengine-uk's current-law vat leaves out (private_school_vat is a reform variable until policyengine-uk#2319); the row binds vat alone, so that residual stays in its error." }, "axiom": { "metric_name": "obr/vat", @@ -3075,166 +3074,6 @@ "label": "TV licence fee", "value_operation": "calendar_year_window" }, - { - "target_id": "obr.universal_credit_in_cap", - "family": "obr", - "geography_levels": [ - "country" - ], - "measurement": { - "entity": "benunit", - "concept": "uk.benefits.universal_credit.amount", - "map_to": "household", - "filters": [ - { - "concept": "uk.benefits.benefit_cap.reduction", - "operator": ">", - "value": 0 - }, - { - "concept": "uk.geography.country", - "operator": "in", - "value": [ - "england", - "scotland", - "wales" - ] - } - ] - }, - "bindings": { - "policyengine": { - "metric_name": "obr/universal_credit_in_cap", - "value_variable": "universal_credit", - "from_entity": "benunit", - "map_to": "household", - "filters": [ - { - "variable": "benefit_cap_reduction", - "operator": ">", - "value": 0 - } - ], - "household_conditions": [ - { - "variable": "region", - "entity": "household", - "reduce": "any", - "operator": "in", - "value": [ - "NORTH_EAST", - "NORTH_WEST", - "YORKSHIRE", - "EAST_MIDLANDS", - "WEST_MIDLANDS", - "EAST_OF_ENGLAND", - "LONDON", - "SOUTH_EAST", - "SOUTH_WEST", - "WALES", - "SCOTLAND" - ], - "map_to": "benunit" - } - ], - "notes": "Split of UC spend by benefit-cap status (compute/benefits.py:119-127). Bound at the calendar-2025 window of the OBR fiscal years (three twelfths of FY2024-25, nine twelfths of FY2025-26; calendar_year_window), María's rule of 2026-09-22 that fiscal-year facts take only the months to the end of the calibration calendar year (PolicyEngine/chronicle#280 lane). Scoped to Great Britain (microcosm#1095, uk-data#490): OBR table 4.9 reports this line inside 'DWP social security', whose figures cover Great Britain and residents overseas (DWP benefit expenditure and caseload tables, Spring 2026, Notes 3), and lists Northern Ireland social security on rows of its own, so the model column sums Great Britain households only. Since the abf0921 re-pin the Chronicle fact carries the Great Britain code K03000001 (microcosm#1300)." - }, - "axiom": { - "metric_name": "obr/universal_credit_in_cap", - "status": "pending", - "value_rule": "uk.benefits.universal_credit.amount" - } - }, - "assertion_policy": "allow_source_projection", - "ledger_selector": { - "source_name": "obr", - "source_concept": "obr.universal_credit_in_cap", - "entity_name": "person" - }, - "category_id": "obr.efo_expenditure", - "label": "Universal Credit inside the benefit cap", - "value_operation": "calendar_year_window" - }, - { - "target_id": "obr.universal_credit_outside_cap", - "family": "obr", - "geography_levels": [ - "country" - ], - "measurement": { - "entity": "benunit", - "concept": "uk.benefits.universal_credit.amount", - "map_to": "household", - "filters": [ - { - "concept": "uk.benefits.benefit_cap.reduction", - "operator": "==", - "value": 0 - }, - { - "concept": "uk.geography.country", - "operator": "in", - "value": [ - "england", - "scotland", - "wales" - ] - } - ] - }, - "bindings": { - "policyengine": { - "metric_name": "obr/universal_credit_outside_cap", - "value_variable": "universal_credit", - "from_entity": "benunit", - "map_to": "household", - "filters": [ - { - "variable": "benefit_cap_reduction", - "operator": "==", - "value": 0 - } - ], - "household_conditions": [ - { - "variable": "region", - "entity": "household", - "reduce": "any", - "operator": "in", - "value": [ - "NORTH_EAST", - "NORTH_WEST", - "YORKSHIRE", - "EAST_MIDLANDS", - "WEST_MIDLANDS", - "EAST_OF_ENGLAND", - "LONDON", - "SOUTH_EAST", - "SOUTH_WEST", - "WALES", - "SCOTLAND" - ], - "map_to": "benunit" - } - ], - "notes": "Split of UC spend by benefit-cap status (compute/benefits.py:119-127). Bound at the calendar-2025 window of the OBR fiscal years (three twelfths of FY2024-25, nine twelfths of FY2025-26; calendar_year_window), María's rule of 2026-09-22 that fiscal-year facts take only the months to the end of the calibration calendar year (PolicyEngine/chronicle#280 lane). Scoped to Great Britain (microcosm#1095, uk-data#490): OBR table 4.9 reports this line inside 'DWP social security', whose figures cover Great Britain and residents overseas (DWP benefit expenditure and caseload tables, Spring 2026, Notes 3), and lists Northern Ireland social security on rows of its own, so the model column sums Great Britain households only. Since the abf0921 re-pin the Chronicle fact carries the Great Britain code K03000001 (microcosm#1300)." - }, - "axiom": { - "metric_name": "obr/universal_credit_outside_cap", - "status": "pending", - "value_rule": "uk.benefits.universal_credit.amount" - } - }, - "assertion_policy": "allow_source_projection", - "ledger_selector": { - "source_name": "obr", - "source_concept": "obr.universal_credit_outside_cap", - "entity_name": "person" - }, - "category_id": "obr.efo_expenditure", - "label": "Universal Credit outside the benefit cap", - "value_operation": "calendar_year_window" - }, { "target_id": "obr.winter_fuel_allowance", "family": "obr", @@ -4438,11 +4277,11 @@ "country" ], "measurement": { - "entity": "household", - "concept": "uk.household.count", + "entity": "benunit", + "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 0 }, @@ -4460,15 +4299,17 @@ "bindings": { "policyengine": { "metric_name": "dwp/benefit_capped_households", - "reduce": "any", - "household_conditions": [ + "value_variable": "benunit_count", + "from_entity": "benunit", + "filters": [ { - "variable": "benefit_cap_reduction", - "entity": "benunit", - "reduce": "any", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 0 - }, + } + ], + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap (uc_benefit_cap_reduction_after_floor above zero), against Benefit cap tables to November 2025, Table 4, GB total row (point-in-time UC households capped at November 2025). DWP's 'UC household' is the unit of assessment, so the total binds at benefit-unit grain on the same reduction as the amount bands, which partition it (microcosm#1349); it was a 0/1 household indicator on benefit_cap_reduction, the incumbent's measure (compute/benefits.py:14-21), which also counts the Housing Benefit cap. The publisher's GBP 320.9m total-reduction companion is a computed annualization - excluded per the facts-only ADR. Scoped to Great Britain (microcosm#1095, uk-data#490): the DWP benefit cap statistics cover Great Britain (K03000001), so the model counts Great Britain benefit units only.", + "household_conditions": [ { "variable": "region", "entity": "household", @@ -4487,16 +4328,14 @@ "WALES", "SCOTLAND" ], - "map_to": "household" + "map_to": "benunit" } - ], - "value_variable": "household_count", - "notes": "0/1 household indicator, not a benunit headcount (compute/benefits.py:14-21). The publisher's GBP 320.9m total-reduction companion is a computed annualization - excluded per the facts-only ADR. Scoped to Great Britain (microcosm#1095, uk-data#490): the DWP benefit cap statistics cover Great Britain (K03000001), so the model counts Great Britain households only." + ] }, "axiom": { "metric_name": "dwp/benefit_capped_households", "status": "pending", - "value_rule": "uk.household.count" + "value_rule": "uk.benefit_unit.count" } }, "ledger_selector": { @@ -15218,67 +15057,6 @@ "category_id": "slc.repayments", "label": "England plan 2" }, - { - "target_id": "slc.repayments.england_postgraduate", - "family": "slc_repayments", - "geography_levels": [ - "country" - ], - "measurement": { - "entity": "person", - "map_to": "household", - "concept": "uk.finance.student_loan_repayments.amount", - "filters": [ - { - "concept": "uk.geography.country", - "equals": "england" - }, - { - "concept": "uk.finance.student_loan_plan", - "equals": "postgraduate" - } - ] - }, - "bindings": { - "policyengine": { - "metric_name": "slc/student_loan_repayment/england/postgraduate", - "value_variable": "student_loan_repayment", - "from_entity": "person", - "map_to": "household", - "filters": [ - { - "variable": "country", - "equals": "ENGLAND" - }, - { - "variable": "student_loan_plan", - "equals": "POSTGRADUATE" - } - ], - "source_lines": [ - "plan_3_postgraduate_masters", - "plan_3_postgraduate_doctoral" - ], - "notes": "Publisher splits full-time/part-time (and masters/doctoral) products the model does not distinguish; the listed source lines sum to this target (compute/other.py:116-137)." - }, - "axiom": { - "metric_name": "slc/student_loan_repayment/england/postgraduate", - "status": "pending", - "value_rule": "uk.finance.student_loan_repayments.amount" - } - }, - "ledger_selector": { - "source_name": "slc", - "groupby_dimension": "slc.repayment_plan", - "source_measure_id": [ - "plan_3_postgraduate_masters", - "plan_3_postgraduate_doctoral" - ], - "entity_name": "person" - }, - "category_id": "slc.repayments", - "label": "England postgraduate" - }, { "target_id": "slc.repayments.england_plan_5", "family": "slc_repayments", @@ -17534,18 +17312,18 @@ ], "measurement": { "entity": "household", - "concept": "uk.consumption.domestic_energy.amount" + "concept": "uk.consumption.fuel_light_and_power.amount" }, "bindings": { "policyengine": { "metric_name": "ons/household_energy_expenditure", - "value_variable": "domestic_energy_consumption", - "notes": "ONS Consumer Trends COICOP 04.5 electricity, gas and other fuels, current prices, calendar year; the publisher class includes other fuels (heating oil, solid fuel), which the frame's electricity plus gas column does not carry, so the bound total is a few percent wide of the modelled scope (#890 F1). Signed out of calibration once the 04.5.1 electricity and 04.5.2 gas sub-classes were published and bound per fuel (chronicle #271); since microcosm#1113 those per-fuel rows are reviewed measure exclusions, measured on every evaluation and held out of the objective; retained for registry parity." + "value_expression": "electricity_consumption + gas_consumption + liquid_fuel_consumption + solid_fuel_consumption", + "notes": "ONS Consumer Trends COICOP 04.5 electricity, gas and other fuels, current prices, calendar year, measured on the frame's electricity, gas, liquid fuel and solid fuel spend (María's ruling of 2026-10-22: LPG with liquid, heat in the remainder; the heating fuels are policyengine-uk 2.149.0's inputs, pe-uk#2572). The publisher class also holds 04.5.5 heat energy, which no column carries. Signed out of calibration once the 04.5.1 electricity and 04.5.2 gas sub-classes were published and bound per fuel (chronicle #271); since microcosm#1113 those per-fuel rows are reviewed measure exclusions, measured on every evaluation and held out of the objective; retained for registry parity." }, "axiom": { "metric_name": "ons/household_energy_expenditure", "status": "pending", - "value_rule": "uk.consumption.domestic_energy.amount" + "value_rule": "uk.consumption.fuel_light_and_power.amount" } }, "ledger_selector": { @@ -18814,7 +18592,7 @@ "map_to": "benunit" } ], - "notes": "Total UC expenditure: the sum of the OBR EFO welfare-cap cells (universal_credit_in_cap + universal_credit_outside_cap), bound at the calendar-2025 window of the two cells' fiscal years (three twelfths of FY2024-25, nine twelfths of FY2025-26; calendar_year_window over the two-concept selector, one series per concept) so the total and its two components share one basis (Vahid's review of microcosm#1006, item 3) against the model's annual award after the benefit cap and deductions at policy year 2025, UK incl. Northern Ireland. The split rows stay excluded: the model cannot attribute spend to the welfare-cap concept (microcosm#757). Cash advances and third-party payments are not modelled (#882). Scoped to Great Britain (microcosm#1095, uk-data#490): OBR table 4.9 reports this line inside 'DWP social security', whose figures cover Great Britain and residents overseas (DWP benefit expenditure and caseload tables, Spring 2026, Notes 3), and lists Northern Ireland social security on rows of its own, so the model column sums Great Britain households only. Since the abf0921 re-pin the Chronicle fact carries the Great Britain code K03000001 (microcosm#1300)." + "notes": "Total UC expenditure: the sum of the OBR EFO welfare-cap cells (universal_credit_in_cap + universal_credit_outside_cap), bound at the calendar-2025 window of the two cells' fiscal years (three twelfths of FY2024-25, nine twelfths of FY2025-26; calendar_year_window over the two-concept selector, one series per concept) so the total and its two components share one basis (Vahid's review of microcosm#1006, item 3) against the model's annual award after the benefit cap and deductions at policy year 2025, UK incl. Northern Ireland. The split rows are retired (registry_parity.excluded): the model cannot attribute spend to the welfare-cap concept (microcosm#757, #1095). Cash advances and third-party payments are not modelled (#882). Scoped to Great Britain (microcosm#1095, uk-data#490): OBR table 4.9 reports this line inside 'DWP social security', whose figures cover Great Britain and residents overseas (DWP benefit expenditure and caseload tables, Spring 2026, Notes 3), and lists Northern Ireland social security on rows of its own, so the model column sums Great Britain households only. Since the abf0921 re-pin the Chronicle fact carries the Great Britain code K03000001 (microcosm#1300)." }, "axiom": { "metric_name": "obr/universal_credit", @@ -19198,12 +18976,12 @@ "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 0 }, { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": "<=", "value": 1200 }, @@ -19225,17 +19003,17 @@ "from_entity": "benunit", "filters": [ { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 0 }, { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": "<=", "value": 1200 } ], - "notes": "GB benefit units whose benefit-cap reduction falls in the DWP amount band Up to £100 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The publisher band is a monthly amount; the engine's benefit_cap_reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows bind at benefit-unit grain while the bound total keeps the incumbent's household indicator (a household with two capped units counts once there). Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap in the DWP amount band Up to £100 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The rows read uc_benefit_cap_reduction_after_floor, the regulation 81 reduction bounded by the award, because DWP counts Universal Credit households by the amount the award loses; benefit_cap_reduction also counts the Housing Benefit cap and the gross regulation 81 amount (microcosm#1349). The publisher band is a monthly amount; the engine's reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows and the total bind at benefit-unit grain. Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", "household_conditions": [ { "variable": "region", @@ -19283,12 +19061,12 @@ "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 1200 }, { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": "<=", "value": 2400 }, @@ -19310,17 +19088,17 @@ "from_entity": "benunit", "filters": [ { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 1200 }, { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": "<=", "value": 2400 } ], - "notes": "GB benefit units whose benefit-cap reduction falls in the DWP amount band £100.01 to £200 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The publisher band is a monthly amount; the engine's benefit_cap_reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows bind at benefit-unit grain while the bound total keeps the incumbent's household indicator (a household with two capped units counts once there). Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap in the DWP amount band £100.01 to £200 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The rows read uc_benefit_cap_reduction_after_floor, the regulation 81 reduction bounded by the award, because DWP counts Universal Credit households by the amount the award loses; benefit_cap_reduction also counts the Housing Benefit cap and the gross regulation 81 amount (microcosm#1349). The publisher band is a monthly amount; the engine's reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows and the total bind at benefit-unit grain. Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", "household_conditions": [ { "variable": "region", @@ -19368,12 +19146,12 @@ "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 2400 }, { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": "<=", "value": 3600 }, @@ -19395,17 +19173,17 @@ "from_entity": "benunit", "filters": [ { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 2400 }, { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": "<=", "value": 3600 } ], - "notes": "GB benefit units whose benefit-cap reduction falls in the DWP amount band £200.01 to £300 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The publisher band is a monthly amount; the engine's benefit_cap_reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows bind at benefit-unit grain while the bound total keeps the incumbent's household indicator (a household with two capped units counts once there). Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap in the DWP amount band £200.01 to £300 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The rows read uc_benefit_cap_reduction_after_floor, the regulation 81 reduction bounded by the award, because DWP counts Universal Credit households by the amount the award loses; benefit_cap_reduction also counts the Housing Benefit cap and the gross regulation 81 amount (microcosm#1349). The publisher band is a monthly amount; the engine's reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows and the total bind at benefit-unit grain. Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", "household_conditions": [ { "variable": "region", @@ -19453,12 +19231,12 @@ "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 3600 }, { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": "<=", "value": 4800 }, @@ -19480,17 +19258,17 @@ "from_entity": "benunit", "filters": [ { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 3600 }, { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": "<=", "value": 4800 } ], - "notes": "GB benefit units whose benefit-cap reduction falls in the DWP amount band £300.01 to £400 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The publisher band is a monthly amount; the engine's benefit_cap_reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows bind at benefit-unit grain while the bound total keeps the incumbent's household indicator (a household with two capped units counts once there). Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap in the DWP amount band £300.01 to £400 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The rows read uc_benefit_cap_reduction_after_floor, the regulation 81 reduction bounded by the award, because DWP counts Universal Credit households by the amount the award loses; benefit_cap_reduction also counts the Housing Benefit cap and the gross regulation 81 amount (microcosm#1349). The publisher band is a monthly amount; the engine's reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows and the total bind at benefit-unit grain. Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", "household_conditions": [ { "variable": "region", @@ -19538,12 +19316,12 @@ "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 4800 }, { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": "<=", "value": 6000 }, @@ -19565,17 +19343,17 @@ "from_entity": "benunit", "filters": [ { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 4800 }, { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": "<=", "value": 6000 } ], - "notes": "GB benefit units whose benefit-cap reduction falls in the DWP amount band £400.01 to £500 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The publisher band is a monthly amount; the engine's benefit_cap_reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows bind at benefit-unit grain while the bound total keeps the incumbent's household indicator (a household with two capped units counts once there). Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap in the DWP amount band £400.01 to £500 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The rows read uc_benefit_cap_reduction_after_floor, the regulation 81 reduction bounded by the award, because DWP counts Universal Credit households by the amount the award loses; benefit_cap_reduction also counts the Housing Benefit cap and the gross regulation 81 amount (microcosm#1349). The publisher band is a monthly amount; the engine's reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows and the total bind at benefit-unit grain. Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", "household_conditions": [ { "variable": "region", @@ -19623,12 +19401,12 @@ "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 6000 }, { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": "<=", "value": 7200 }, @@ -19650,17 +19428,17 @@ "from_entity": "benunit", "filters": [ { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 6000 }, { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": "<=", "value": 7200 } ], - "notes": "GB benefit units whose benefit-cap reduction falls in the DWP amount band £500.01 to £600 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The publisher band is a monthly amount; the engine's benefit_cap_reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows bind at benefit-unit grain while the bound total keeps the incumbent's household indicator (a household with two capped units counts once there). Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap in the DWP amount band £500.01 to £600 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The rows read uc_benefit_cap_reduction_after_floor, the regulation 81 reduction bounded by the award, because DWP counts Universal Credit households by the amount the award loses; benefit_cap_reduction also counts the Housing Benefit cap and the gross regulation 81 amount (microcosm#1349). The publisher band is a monthly amount; the engine's reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows and the total bind at benefit-unit grain. Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", "household_conditions": [ { "variable": "region", @@ -19708,12 +19486,12 @@ "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 7200 }, { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": "<=", "value": 8400 }, @@ -19735,17 +19513,17 @@ "from_entity": "benunit", "filters": [ { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 7200 }, { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": "<=", "value": 8400 } ], - "notes": "GB benefit units whose benefit-cap reduction falls in the DWP amount band £600.01 to £700 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The publisher band is a monthly amount; the engine's benefit_cap_reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows bind at benefit-unit grain while the bound total keeps the incumbent's household indicator (a household with two capped units counts once there). Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap in the DWP amount band £600.01 to £700 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The rows read uc_benefit_cap_reduction_after_floor, the regulation 81 reduction bounded by the award, because DWP counts Universal Credit households by the amount the award loses; benefit_cap_reduction also counts the Housing Benefit cap and the gross regulation 81 amount (microcosm#1349). The publisher band is a monthly amount; the engine's reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows and the total bind at benefit-unit grain. Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", "household_conditions": [ { "variable": "region", @@ -19793,12 +19571,12 @@ "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 8400 }, { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": "<=", "value": 9600 }, @@ -19820,17 +19598,17 @@ "from_entity": "benunit", "filters": [ { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 8400 }, { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": "<=", "value": 9600 } ], - "notes": "GB benefit units whose benefit-cap reduction falls in the DWP amount band £700.01 to £800 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The publisher band is a monthly amount; the engine's benefit_cap_reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows bind at benefit-unit grain while the bound total keeps the incumbent's household indicator (a household with two capped units counts once there). Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap in the DWP amount band £700.01 to £800 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The rows read uc_benefit_cap_reduction_after_floor, the regulation 81 reduction bounded by the award, because DWP counts Universal Credit households by the amount the award loses; benefit_cap_reduction also counts the Housing Benefit cap and the gross regulation 81 amount (microcosm#1349). The publisher band is a monthly amount; the engine's reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows and the total bind at benefit-unit grain. Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", "household_conditions": [ { "variable": "region", @@ -19878,12 +19656,12 @@ "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 9600 }, { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": "<=", "value": 10800 }, @@ -19905,17 +19683,17 @@ "from_entity": "benunit", "filters": [ { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 9600 }, { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": "<=", "value": 10800 } ], - "notes": "GB benefit units whose benefit-cap reduction falls in the DWP amount band £800.01 to £900 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The publisher band is a monthly amount; the engine's benefit_cap_reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows bind at benefit-unit grain while the bound total keeps the incumbent's household indicator (a household with two capped units counts once there). Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap in the DWP amount band £800.01 to £900 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The rows read uc_benefit_cap_reduction_after_floor, the regulation 81 reduction bounded by the award, because DWP counts Universal Credit households by the amount the award loses; benefit_cap_reduction also counts the Housing Benefit cap and the gross regulation 81 amount (microcosm#1349). The publisher band is a monthly amount; the engine's reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows and the total bind at benefit-unit grain. Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", "household_conditions": [ { "variable": "region", @@ -19963,12 +19741,12 @@ "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 10800 }, { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": "<=", "value": 12000 }, @@ -19990,17 +19768,17 @@ "from_entity": "benunit", "filters": [ { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 10800 }, { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": "<=", "value": 12000 } ], - "notes": "GB benefit units whose benefit-cap reduction falls in the DWP amount band £900.01 to £1,000 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The publisher band is a monthly amount; the engine's benefit_cap_reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows bind at benefit-unit grain while the bound total keeps the incumbent's household indicator (a household with two capped units counts once there). Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap in the DWP amount band £900.01 to £1,000 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The rows read uc_benefit_cap_reduction_after_floor, the regulation 81 reduction bounded by the award, because DWP counts Universal Credit households by the amount the award loses; benefit_cap_reduction also counts the Housing Benefit cap and the gross regulation 81 amount (microcosm#1349). The publisher band is a monthly amount; the engine's reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows and the total bind at benefit-unit grain. Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", "household_conditions": [ { "variable": "region", @@ -20048,12 +19826,12 @@ "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 12000 }, { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": "<=", "value": 13200 }, @@ -20075,17 +19853,17 @@ "from_entity": "benunit", "filters": [ { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 12000 }, { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": "<=", "value": 13200 } ], - "notes": "GB benefit units whose benefit-cap reduction falls in the DWP amount band £1,000.01 to £1,100 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The publisher band is a monthly amount; the engine's benefit_cap_reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows bind at benefit-unit grain while the bound total keeps the incumbent's household indicator (a household with two capped units counts once there). Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap in the DWP amount band £1,000.01 to £1,100 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The rows read uc_benefit_cap_reduction_after_floor, the regulation 81 reduction bounded by the award, because DWP counts Universal Credit households by the amount the award loses; benefit_cap_reduction also counts the Housing Benefit cap and the gross regulation 81 amount (microcosm#1349). The publisher band is a monthly amount; the engine's reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows and the total bind at benefit-unit grain. Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", "household_conditions": [ { "variable": "region", @@ -20133,12 +19911,12 @@ "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 13200 }, { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": "<=", "value": 14400 }, @@ -20160,17 +19938,17 @@ "from_entity": "benunit", "filters": [ { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 13200 }, { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": "<=", "value": 14400 } ], - "notes": "GB benefit units whose benefit-cap reduction falls in the DWP amount band £1,100.01 to £1,200 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The publisher band is a monthly amount; the engine's benefit_cap_reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows bind at benefit-unit grain while the bound total keeps the incumbent's household indicator (a household with two capped units counts once there). Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap in the DWP amount band £1,100.01 to £1,200 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The rows read uc_benefit_cap_reduction_after_floor, the regulation 81 reduction bounded by the award, because DWP counts Universal Credit households by the amount the award loses; benefit_cap_reduction also counts the Housing Benefit cap and the gross regulation 81 amount (microcosm#1349). The publisher band is a monthly amount; the engine's reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows and the total bind at benefit-unit grain. Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", "household_conditions": [ { "variable": "region", @@ -20218,12 +19996,12 @@ "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 14400 }, { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": "<=", "value": 15600 }, @@ -20245,17 +20023,17 @@ "from_entity": "benunit", "filters": [ { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 14400 }, { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": "<=", "value": 15600 } ], - "notes": "GB benefit units whose benefit-cap reduction falls in the DWP amount band £1,200.01 to £1,300 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The publisher band is a monthly amount; the engine's benefit_cap_reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows bind at benefit-unit grain while the bound total keeps the incumbent's household indicator (a household with two capped units counts once there). Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap in the DWP amount band £1,200.01 to £1,300 per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The rows read uc_benefit_cap_reduction_after_floor, the regulation 81 reduction bounded by the award, because DWP counts Universal Credit households by the amount the award loses; benefit_cap_reduction also counts the Housing Benefit cap and the gross regulation 81 amount (microcosm#1349). The publisher band is a monthly amount; the engine's reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows and the total bind at benefit-unit grain. Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", "household_conditions": [ { "variable": "region", @@ -20303,7 +20081,7 @@ "concept": "uk.benefit_unit.count", "filters": [ { - "concept": "uk.benefits.benefit_cap.reduction", + "concept": "uk.benefits.universal_credit.benefit_cap_reduction", "operator": ">", "value": 15600 }, @@ -20325,12 +20103,12 @@ "from_entity": "benunit", "filters": [ { - "variable": "benefit_cap_reduction", + "variable": "uc_benefit_cap_reduction_after_floor", "operator": ">", "value": 15600 } ], - "notes": "GB benefit units whose benefit-cap reduction falls in the DWP amount band £1,300.01 and above per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The publisher band is a monthly amount; the engine's benefit_cap_reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows bind at benefit-unit grain while the bound total keeps the incumbent's household indicator (a household with two capped units counts once there). Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", + "notes": "GB benefit units whose Universal Credit award loses an amount to the benefit cap in the DWP amount band £1,300.01 and above per monthly assessment period, against Benefit cap tables to November 2025, Table 4 (point-in-time UC households capped at November 2025 by amount capped; one concept per band, no band dimension). The rows read uc_benefit_cap_reduction_after_floor, the regulation 81 reduction bounded by the award, because DWP counts Universal Credit households by the amount the award loses; benefit_cap_reduction also counts the Housing Benefit cap and the gross regulation 81 amount (microcosm#1349). The publisher band is a monthly amount; the engine's reduction is annual, so the edges are the monthly edges times 12, half-open on the lower edge and closed on the upper (the last band open). DWP's 'UC household' is the unit of assessment, so the band rows and the total bind at benefit-unit grain. Count only the Great Britain regions, matching K03000001. Source: https://www.gov.uk/government/collections/benefit-cap-statistics", "household_conditions": [ { "variable": "region", @@ -29931,6 +29709,61 @@ "label": "Owner-occupied homes valued over £2 million by region", "selector_note": "The English region and Wales rows of the Microcosm-derived stock the constituency and local-authority cells bind (microcosm#1240, fix 2; uk/high_value_home_stock_facts.json), selected by the same record set and measured identically, so each row is the cross-grain control for its area cells and carries the stock of any cell a signed small-cell rule defers. Local line only (microcosm#1301): the national line and the release-cut certifier drop these rows right after the compile, before reconciliation and the measure exclusions, so the national registry is unchanged. Scotland and Northern Ireland have no Price Paid coverage." }, + { + "target_id": "mhclg.council_tax_stock.single_adult_discount", + "family": "council_tax_stock", + "geography_levels": [ + "country" + ], + "measurement": { + "entity": "household", + "concept": "uk.household.count", + "filters": [ + { + "concept": "uk.geography.country", + "equals": "ENGLAND" + }, + { + "concept": "uk.housing.council_tax_discount_rate", + "equals": 0.25 + } + ] + }, + "bindings": { + "policyengine": { + "metric_name": "mhclg/council_tax/single_adult_discount", + "reduce": "any", + "household_conditions": [ + { + "variable": "country", + "operator": "==", + "value": "ENGLAND" + }, + { + "variable": "council_tax_discount_rate", + "operator": "==", + "value": 0.25 + } + ], + "value_variable": "household_count", + "notes": "England dwellings entitled to the single adult household 25% discount from the MHCLG Council Taxbase return, line 8 all bands (microcosm#953): the dwellings in line 7 with one resident adult who is not disregarded, which a household file carries as occupied households. policyengine-uk applies the discount from 2.148.0 (pe-uk#1864, council_tax_discount_rate, 0.25 for one adult not disregarded; the no-resident branch is unreachable on survey data), so the row counts England households at that rate. It binds at the national grain; the billing-authority cells of line 8 bind in the next dense build." + }, + "axiom": { + "metric_name": "mhclg/council_tax/single_adult_discount", + "status": "pending", + "value_rule": "uk.household.count" + } + }, + "ledger_selector": { + "source_name": "mhclg", + "source_concept": "mhclg.council_taxbase.single_adult_discount_dwellings", + "source_measure_id": "total", + "layout_groupby_value_id": "e92000001" + }, + "selector_note": "MHCLG Council Taxbase line 8, all bands, England row, from the latest return not after the build base period, as the band rows take line 7: Council Taxbase 2025, as at September 2025, in its revision of 21 January 2026 (the feed labels the count 2025-10); the household proxy is the band rows' (voa_dwellings_vs_household_frame).", + "category_id": "mhclg.council_tax_stock", + "label": "Single adult discount" + }, { "target_id": "hmrc.self_employment_income.amount", "family": "hmrc", diff --git a/packages/microcosm-build/src/microcosm/build/uk/uprating_holds.json b/packages/microcosm-build/src/microcosm/build/uk/uprating_holds.json index 3594e45782..4a385e2e02 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/uprating_holds.json +++ b/packages/microcosm-build/src/microcosm/build/uk/uprating_holds.json @@ -415,6 +415,19 @@ "approved_on": "2026-10-16", "status": "approved", "expires_on": "2026-12-11" + }, + { + "scope": "national", + "kind": "in_year_snapshot", + "target_ids": [ + "mhclg.council_tax_stock.single_adult_discount" + ], + "reason": "England's dwellings entitled to the single adult household 25% discount at the taxbase date (MHCLG Council Taxbase line 8, October 2025): a stock counted inside the calibration year, as the band rows' are (microcosm#953).", + "tracking": "microcosm#953", + "approved_by": "juaristi22", + "approved_on": "2026-10-23", + "status": "approved", + "expires_on": "2026-12-11" } ] } diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/battery_bindings.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/battery_bindings.py index 273a601425..2e91e21ab9 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/battery_bindings.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/battery_bindings.py @@ -633,16 +633,25 @@ def _declared_property_shares( from microcosm.build.uk_runtime.uc_capital_coherence import ( PENSION_CREDIT_PROPERTY_CAPITAL_SOURCES, PROPERTY_CAPITAL_OWNERS, + PROPERTY_CAPITAL_SECURED_DEBT, PROPERTY_CAPITAL_VALUATION, UC_PROPERTY_CAPITAL_REPORTER_RULE, UC_PROPERTY_CAPITAL_SOURCES, ) + def secured_debt(sources: tuple[str, ...]) -> dict[str, str]: + return { + source: PROPERTY_CAPITAL_SECURED_DEBT[source] + for source in sources + if source in PROPERTY_CAPITAL_SECURED_DEBT + } + rules = { "uc_reported_capital": { "sources": list(UC_PROPERTY_CAPITAL_SOURCES), "owners": PROPERTY_CAPITAL_OWNERS, "valuation": PROPERTY_CAPITAL_VALUATION, + "secured_debt": secured_debt(UC_PROPERTY_CAPITAL_SOURCES), # A unit that reports Universal Credit keeps its receipt. "units_reporting_universal_credit": UC_PROPERTY_CAPITAL_REPORTER_RULE, }, @@ -650,6 +659,7 @@ def _declared_property_shares( "sources": list(PENSION_CREDIT_PROPERTY_CAPITAL_SOURCES), "owners": PROPERTY_CAPITAL_OWNERS, "valuation": PROPERTY_CAPITAL_VALUATION, + "secured_debt": secured_debt(PENSION_CREDIT_PROPERTY_CAPITAL_SOURCES), }, } declared = { @@ -2234,6 +2244,18 @@ def _ledger_compile_parity_required_artifacts( "maximum_rows_receipts_below_profit", "maximum_rows_with_profit_above_band", "maximum_band_error_in_boundary_weights", + # #1308's three stages, gated with the next policyengine-uk + # bump (María's ruling of 2026-10-17): the purchase kinds and + # their fit, the home-value ranking, the Move to UC draw. + "kinds", + "maximum_transactions_relative_deviation", + "maximum_value_shortfall_share", + "regions", + "maximum_sources_at_cap", + "knots_basis_year", + "rank_basis", + "p_basis", + "rate_sources", } ), artifact_keys=frozenset({"stage_evidence"}), diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/calibration_run.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/calibration_run.py index 302544fc4d..2a67f83cea 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/calibration_run.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/calibration_run.py @@ -133,6 +133,9 @@ "uk_stage_student_loans_realization", "uk_stage_age_tail_targets", "uk_stage_frs_relationships_composition", + "uk_stage_regional_home_values_ranking", + "uk_stage_property_purchases_fit", + "uk_stage_uc_legacy_closure_take_up_contract", # Weight-independent like the BRMA enum below, and its column exists from # frs_relationships onward (#791). "uk_ons_household_type_enum_domain", @@ -613,6 +616,9 @@ def spine_provenance_from_sidecar( "rules_engine": dict(sidecar.get("rules_engine", {})), "source_vintages": dict(sidecar.get("source_vintages", {})), "stochastic_contract_sha256": sidecar.get("stochastic_contract_sha256"), + # Empty for a spine built before the marker; the release assemblers + # rederive it from the stages either way (microcosm#1095). + "spi_public_use_tape": dict(sidecar.get("spi_public_use_tape") or {}), } diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/carers_allowance_take_up.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/carers_allowance_take_up.py index 78546b053d..a570d27161 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/carers_allowance_take_up.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/carers_allowance_take_up.py @@ -11,8 +11,7 @@ This stage runs after the SPI income chain and the other take-up redraws. It opens the flag to the carers the earnings limit alone keeps from the -allowance at the survey year: a person outside Scotland whose ``care_hours`` -reach the engine's ``gov.dwp.carers_allowance.min_hours``, who reports no +allowance at the survey year: a person whose ``care_hours`` reach the engine's ``gov.dwp.carers_allowance.min_hours``, who reports no Carer's Allowance, and whom ``is_gainfully_employed_for_carers_allowance`` holds gainfully employed at the survey year (the 2024-25 limit of £151 a week; the engine reads a year's parameters at 30 April). Such a person claims @@ -23,13 +22,13 @@ A reporter stays true. A carer under the limit who reports no allowance stays false, as the survey records them entitled and not claiming. Scotland -is left closed: Carer Support Payment reads the same flag, and until -policyengine-uk 2.146.1 the engine did not apply its earnings limit, so a draw -there would have paid it to carers over the limit. The engine applies the limit -now (PolicyEngine/policyengine-uk#2473); opening Scotland is a follow-up -(microcosm#1319). The incoming flag -must still follow reported receipt, since the stage rebuilds it from that -anchor. +is drawn too, at the same rate (María's ruling of 2026-10-23): Carer Support +Payment replaces the allowance there and reads the same flag, and the take-up +contract holds no rate of its own for it. Since policyengine-uk 2.146.1 +(PolicyEngine/policyengine-uk#2473) the engine pays it only under its own +earnings limit, so a drawn Scottish carer is paid only where its rules allow. +The receipt reports Scotland apart. The incoming flag must still follow +reported receipt, since the stage rebuilds it from that anchor. The earnings test is read where the stage runs, before ``salary_sacrifice`` moves some contributors' pension amounts out of their pay, which lowers the @@ -101,20 +100,19 @@ #: limit the survey's carers were held to; the stage refuses any other period. CARERS_ALLOWANCE_YEAR_RULE = "survey_year" CARERS_ALLOWANCE_NEWLY_ENTITLED_RATE_KEY = "carers_allowance_newly_entitled" -#: Carer Support Payment replaces the allowance in Scotland and reads the same -#: flag; policyengine-uk applies its earnings limit from 2.146.1, and until a -#: follow-up opens it (microcosm#1319) Scotland is never drawn. -CARERS_ALLOWANCE_CLOSED_REGION = "SCOTLAND" +#: Where Carer Support Payment replaces the allowance and reads the same flag: +#: drawn as everywhere else, under the engine's own earnings limit from +#: policyengine-uk 2.146.1, and reported apart in the receipt. +CARER_SUPPORT_PAYMENT_REGION = "SCOTLAND" CARERS_ALLOWANCE_PARAMETERS = "gov.dwp.carers_allowance" CARERS_ALLOWANCE_REPORTED_ANCHOR = "carers_allowance_reported > 0" CARERS_ALLOWANCE_ELIGIBILITY = ( - "persons outside Scotland whose care_hours reach policyengine-uk's " + "persons whose care_hours reach policyengine-uk's " "gov.dwp.carers_allowance.min_hours, who report no Carer's Allowance, and " "whom is_gainfully_employed_for_carers_allowance holds gainfully employed at " "the survey year: the carers the earnings limit alone keeps from the " - "allowance. Scotland stays closed, since Carer Support Payment reads the same " - "flag; policyengine-uk applies its earnings limit from 2.146.1, and opening " - "Scotland is a follow-up (microcosm#1319)" + "allowance. In Scotland the flag is Carer Support Payment's, which " + "policyengine-uk pays under its own earnings limit from 2.146.1" ) CARERS_ALLOWANCE_RATE_DERIVATION = ( "the take-up contract's carers_allowance_newly_entitled rate, drawn flat over " @@ -176,14 +174,12 @@ def carers_allowance_eligible( care_hours: np.ndarray, reported: np.ndarray, gainfully_employed: np.ndarray, - scotland: np.ndarray, min_hours: float, ) -> np.ndarray: """The carers the earnings limit alone keeps from the allowance.""" return ( - ~np.asarray(scotland, dtype=bool) - & (np.asarray(care_hours, dtype=np.float64) >= float(min_hours)) + (np.asarray(care_hours, dtype=np.float64) >= float(min_hours)) & ~np.asarray(reported, dtype=bool) & np.asarray(gainfully_employed, dtype=bool) ) @@ -314,7 +310,7 @@ def redraw_carers_allowance_take_up( ) if regions.isna().any(): raise ValueError("Every person's household must carry a region.") - scotland = regions.eq(CARERS_ALLOWANCE_CLOSED_REGION).to_numpy(dtype=bool) + scotland = regions.eq(CARER_SUPPORT_PAYMENT_REGION).to_numpy(dtype=bool) care_hours = ( pd.to_numeric(person[CARERS_ALLOWANCE_CARE_HOURS], errors="coerce") .fillna(0.0) @@ -324,7 +320,6 @@ def redraw_carers_allowance_take_up( care_hours=care_hours, reported=reported, gainfully_employed=gainfully_employed, - scotland=scotland, min_hours=resolved.min_hours, ) draws = stable_identity_uniforms( @@ -385,17 +380,14 @@ def sources(mask: np.ndarray) -> int: ), "drawn_support": support_band(sources(drawn)), "realized_share": share, - # Over-limit carers in Scotland stay closed: no Scottish person who - # reports no allowance carries the flag. - "scotland_left_closed_support": support_band( - sources( - scotland - & (care_hours >= resolved.min_hours) - & ~reported - & gainfully_employed - ) + # Scotland apart: there the flag is Carer Support Payment's (María's + # ruling of 2026-10-23). + "scotland_eligible_support": support_band(sources(eligible & scotland)), + "scotland_eligible_weighted_persons": small_cell_share( + float(weights[eligible & scotland].sum()), + sources(eligible & scotland), ), - "scotland_closed": not bool((scotland & ~reported & would_claim).any()), + "scotland_drawn_support": support_band(sources(drawn & scotland)), } return UKCarersAllowanceTakeUpResult(frame=result, receipt=receipt) diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/diagnostics.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/diagnostics.py index 896c53ed80..3b18b2d11d 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/diagnostics.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/diagnostics.py @@ -14,11 +14,13 @@ from __future__ import annotations +import functools import json import math import sys import warnings from collections.abc import Collection, Mapping, Sequence +from dataclasses import dataclass from importlib import resources as importlib_resources from pathlib import Path from types import SimpleNamespace @@ -57,6 +59,8 @@ "UK_TARGET_GEOGRAPHY_LEVELS", "uk_calibration_diagnostics_payload", "uk_consumption_drift", + "uk_consumption_drift_flags", + "uk_consumption_drift_warnings", "uk_fit_by_family", "uk_support_limited_misses", "uk_target_geography_levels", @@ -665,6 +669,18 @@ def _stratum_columns(columns: Sequence[str]) -> tuple[str, ...]: "petrol_spending", "diesel_spending", ) +#: The heating fuels the stage draws without levelling (pe-uk#2572), read +#: where the frame carries them: a spine built before them has a drift block +#: without them. +_UK_DRIFT_OPTIONAL_TOTAL_COLUMNS: tuple[str, ...] = ( + "liquid_fuel_consumption", + "solid_fuel_consumption", +) +#: Warn-only drift flags (microcosm#1278, R1): a total moving more than 2 +#: percent between the design and the final weights, or a share more than half +#: a percentage point. Nothing is gated on them. +UK_DRIFT_TOTAL_FLAG = 0.02 +UK_DRIFT_SHARE_FLAG = 0.005 def _drift_value(design: float, final: float) -> dict[str, float | None]: @@ -720,7 +736,14 @@ def column(name: str) -> np.ndarray: totals = { name: _drift_value(design @ column(name), final @ column(name)) - for name in _UK_DRIFT_TOTAL_COLUMNS + for name in ( + *_UK_DRIFT_TOTAL_COLUMNS, + *( + name + for name in _UK_DRIFT_OPTIONAL_TOTAL_COLUMNS + if name in household.columns + ), + ) } consumption = sum(column(name) for name in UK_LCFS_COICOP_DIVISION_COLUMNS) totals["consumption"] = _drift_value(design @ consumption, final @ consumption) @@ -756,6 +779,78 @@ def share(mask: np.ndarray, base: np.ndarray, weights: np.ndarray) -> float: return {"report_only": True, "totals": totals, "shares": shares} +def uk_consumption_drift_flags(drift: Mapping[str, object]) -> dict[str, object]: + """The warn-only flags over a consumption drift block (microcosm#1278, R1). + + A total that moves more than ``UK_DRIFT_TOTAL_FLAG`` of its design value, + or a share that moves more than ``UK_DRIFT_SHARE_FLAG``, between the design + and the final weights. Report only: the calibration diagnostics carry them + as warnings (:func:`uk_consumption_drift_warnings`), nothing is gated on + them, and the diagnostics payload's schema stays as it is. + """ + + totals = drift.get("totals") or {} + shares = drift.get("shares") or {} + return { + "total_relative_change_above": UK_DRIFT_TOTAL_FLAG, + "share_change_above": UK_DRIFT_SHARE_FLAG, + "totals": sorted( + name + for name, value in totals.items() + if value.get("relative_change") is not None + and abs(float(value["relative_change"])) > UK_DRIFT_TOTAL_FLAG + ), + "shares": sorted( + name + for name, value in shares.items() + if abs(float(value["change"])) > UK_DRIFT_SHARE_FLAG + ), + } + + +#: The ``diagnostic_warnings`` code of a consumption drift flag. +UK_CONSUMPTION_DRIFT_WARNING_CODE = "uk_consumption_drift" + + +def uk_consumption_drift_warnings(drift: Mapping[str, object]) -> list[dict[str, str]]: + """The drift flags as the payload's warn-only ``diagnostic_warnings``. + + One warning per flagged total or share (:func:`uk_consumption_drift_flags`), + naming it and the threshold it passed, never its figures (Vahid's review + of #1383, item 11). Nothing is gated on them. + """ + + flags = uk_consumption_drift_flags(drift) + total = float(flags["total_relative_change_above"]) + share = float(flags["share_change_above"]) + return [ + *( + { + "code": UK_CONSUMPTION_DRIFT_WARNING_CODE, + "severity": "warning", + "message": ( + f"Consumption drift (warn-only, microcosm#1278 R1): the total " + f"{name} moves by more than {total:.0%} of its design value " + "between the design and the final weights." + ), + } + for name in flags["totals"] + ), + *( + { + "code": UK_CONSUMPTION_DRIFT_WARNING_CODE, + "severity": "warning", + "message": ( + f"Consumption drift (warn-only, microcosm#1278 R1): the share " + f"{name} moves by more than {share * 100:g} points between " + "the design and the final weights." + ), + } + for name in flags["shares"] + ), + ] + + def uk_zero_weight_strata( household: pd.DataFrame, weights: Sequence[float] | np.ndarray, @@ -971,11 +1066,14 @@ def _declared_target_partition( return declared, compiled, skipped_names -#: The local area levels whose rows the area-support rule governs -#: (``uk_local_area_support``) rather than the per-row floor below: María's -#: rule of 2026-10-21 has not been applied to the local line, and the report -#: guard matches a withheld local row by its bare area code, which suits a -#: BRMA's one family but not an area that binds many. +#: The local area levels whose rows the area-support rule binds +#: (``uk_local_area_support``). Their figures follow the per-row floor below +#: like every other row's (María's ruling of 2026-10-23 on the local line): +#: the support rule still decides which local rows bind, the floor which +#: published figures are withheld. A local surface binds many families in +#: each area, so its rows are checked by region and by family +#: (:func:`_row_blocks`), and the report guard matches a withheld local row by +#: its own key, never by its bare area code as it does a BRMA's one family. UK_AREA_SUPPORT_LEVELS = frozenset({"constituency", "local_authority"}) @@ -1009,64 +1107,328 @@ def level(name: str) -> str: return level -def _scoped_rows( - problem: Any, - weights: Sequence[float] | np.ndarray, - frame: Frame, +def _row_area(row: Mapping[str, object]) -> str: + """A local row's area code: its own field, its metadata's, or its name's.""" + + area = str(row.get("area_code") or "").strip() + if not area: + metadata = row.get("metadata") + if isinstance(metadata, Mapping): + area = str(metadata.get("geography_id") or "").strip() + if not area: + # Local row names are ``target_id@area_code@period``. + parts = str(row["name"]).split("@") + area = parts[-2] if len(parts) >= 3 else "" + if not area: + raise ValueError(f"UK local row {row['name']!r} names no area.") + return area + + +def _row_blocks( target_rows: Sequence[Mapping[str, object]], geography_levels: Mapping[str, object] | None, -) -> tuple[list[str], sparse.csr_matrix, np.ndarray, np.ndarray, np.ndarray]: - """The rows the per-row floor governs, sorted, over the positive-weight households. - - Returns their names, their problem rows (stored zeros dropped: a household - with a zero entry does not carry the row), those households' source ids, - each row's distinct source households and each row's floor. + span: _CarrierSpan | None = None, +) -> list[list[str]]: + """The rows each withholding check spans, each block sorted. + + The national, regional and BRMA rows form one block, as one span holds + them. A local surface is too large for one dense span, so its rows are + checked in blocks that may overlap (María's ruling of 2026-10-23 on the + local line; Vahid's review of #1383, item 1): + + - one per region, holding every row whose carriers all live in it: the + local rows of both grains and the region's own rows, so a region row + less its published local rows, or a region's constituencies less its + local authorities, is caught (:func:`_region_blocks`); + - one per local family and its higher-grain parents, the targets the + cross-grain declarations or a nested measurement tie it to, so a + national or Great Britain row less a family's published cells is caught + too (:func:`_family_blocks`). + + A local row whose carriers span regions, or that has none, is checked in + its own grain and area. Local rows need the frame's household region, so + a frame without one refuses. :func:`uk_withheld_row_sets` runs the blocks + until none withholds a row another needs. """ level = _row_level(geography_levels) - names = sorted( - { - str(row["name"]) - for row in target_rows - if level(str(row["name"])) not in UK_AREA_SUPPORT_LEVELS - } - ) - if not names: - empty = np.zeros(0) - return [], sparse.csr_matrix((0, 0)), empty, empty, empty - household = frame.table("household") - if "source_household_id" not in household.columns: + national: set[str] = set() + local: dict[tuple[str, str], set[str]] = {} + for row in target_rows: + name = str(row["name"]) + grain = level(name) + if grain in UK_AREA_SUPPORT_LEVELS: + local.setdefault((grain, _row_area(row)), set()).add(name) + else: + national.add(name) + blocks = [sorted(national)] if national else [] + if not local: + return blocks + if span is None or span.regions is None: raise ValueError( - "UK diagnostics need household source_household_id to count each " - "row's carriers." - ) - sources = household["source_household_id"].to_numpy() - positive = np.asarray(weights, dtype=float) > 0 - if positive.shape != sources.shape: - raise ValueError("UK row carriers need one weight per household.") - index = {str(name): position for position, name in enumerate(problem.names)} - for name in names: - if name not in index: - raise ValueError(f"UK target diagnostic {name!r} has no problem row.") - matrix = sparse.csr_matrix(problem.matrix)[[index[name] for name in names]] - matrix = sparse.csr_matrix(matrix[:, np.flatnonzero(positive)]) - matrix.eliminate_zeros() - sources = sources[positive] - carriers = np.array( - [ - len(pd.unique(sources[matrix.indices[start:stop]])) - for start, stop in zip(matrix.indptr[:-1], matrix.indptr[1:], strict=True) - ] + "UK local rows are checked against their regions' rows, so the " + "frame's household table needs a region column." + ) + placed: set[str] = set() + for block in _region_blocks(target_rows, level, span): + blocks.append(block) + placed.update(block) + for _, names in sorted(local.items()): + unplaced = names - placed + if unplaced: + blocks.append(sorted(unplaced)) + blocks.extend(_family_blocks(target_rows, level)) + return blocks + + +def _region_blocks( + target_rows: Sequence[Mapping[str, object]], + level: Any, + span: _CarrierSpan, +) -> list[list[str]]: + """Per region, every row whose positive-weight carriers all live in it. + + Local authorities and constituencies nest in regions, so a region's + block holds both local grains beside its own rows. A row whose carriers + span regions, or that has none, is in no region block. Only regions with + a local row form a block. + """ + + by_region: dict[str, set[str]] = {} + local_regions: set[str] = set() + names = [str(row["name"]) for row in target_rows] + for name, regions in zip(names, span.row_regions(names), strict=True): + if len(regions) != 1: + continue + (region,) = regions + by_region.setdefault(region, set()).add(name) + if level(name) in UK_AREA_SUPPORT_LEVELS: + local_regions.add(region) + return [sorted(by_region[region]) for region in sorted(local_regions)] + + +def _family_blocks( + target_rows: Sequence[Mapping[str, object]], + level: Any, +) -> list[list[str]]: + """Per local family with higher-grain parents, its rows and theirs. + + A family is the local targets the cross-grain declarations' partitions + or a nested measurement tie together (:func:`uk_local_family_parents`); + its parents are the higher-grain targets tied to it. A row is matched to + its target by ``metadata.contract_target_id``. + """ + + by_target: dict[str, set[str]] = {} + for row in target_rows: + metadata = row.get("metadata") + if not isinstance(metadata, Mapping): + continue + target_id = metadata.get("contract_target_id") + if target_id: + by_target.setdefault(str(target_id), set()).add(str(row["name"])) + if not by_target: + return [] + blocks: list[list[str]] = [] + for members, parents in uk_local_family_parents(): + local = set().union(*(by_target.get(target, set()) for target in members)) + higher = set().union(*(by_target.get(target, set()) for target in parents)) + if not local or not higher: + continue + if not any(level(name) in UK_AREA_SUPPORT_LEVELS for name in local): + continue + blocks.append(sorted(local | higher)) + return blocks + + +@functools.cache +def uk_local_family_parents() -> tuple[tuple[frozenset[str], frozenset[str]], ...]: + """The local contract families and the higher-grain targets each is tied to. + + Two targets are tied when a cross-grain declaration joins them (a bridge, + a fan-out or sum bridge, a band bridge or a partition), or when they share + a concept, entity and mapping and one's filters hold the other's: then one + measures a population inside the other's, as the cross-grain coverage + check reads the contract (microcosm#802, #1123). Local targets tied to + each other form one family (the census households and their tenure + shares; the UC households and their children's bands); a family's + parents are the targets outside the local grains tied to any of them. + """ + + from microcosm.build.uk_runtime.cross_grain_declarations import ( + UK_LOCAL_GEOGRAPHY_LEVELS, + load_uk_cross_grain_declarations, + uk_cross_grain_bridges, + uk_cross_grain_partitions, + uk_fanout_sum_bridges, ) - floors = np.array( - [ - UK_BRMA_DIAGNOSTIC_MIN_SOURCE_HOUSEHOLDS - if level(name) == "brma" - else UK_DIAGNOSTIC_MIN_SOURCE_HOUSEHOLDS - for name in names - ] + from microcosm.build.uk_runtime.ledger_targets import ( + uk_cross_grain_contract_signatures, ) - return names, matrix, sources, carriers, floors + + contract = uk_cross_grain_contract_signatures() + declarations = load_uk_cross_grain_declarations() + local = { + target_id + for target_id, target in contract.items() + if set(target.get("geography_levels") or ()) & UK_LOCAL_GEOGRAPHY_LEVELS + } + ties: dict[str, set[str]] = {} + + def tie(left: str, right: str) -> None: + if left != right: + ties.setdefault(left, set()).add(right) + ties.setdefault(right, set()).add(left) + + for bridge in uk_cross_grain_bridges(declarations): + for higher in bridge.higher_target_ids: + tie(higher, bridge.lower_side.removeprefix("contract:")) + for fanout in uk_fanout_sum_bridges(declarations): + tie(fanout.higher_target_id, fanout.lower_target_id) + for partition in uk_cross_grain_partitions(declarations): + for member in partition.member_target_ids: + tie(partition.parent_target_id, member) + for entry in declarations.get("band_bridges", ()): + for lower in entry["lower_target_ids"]: + tie(str(entry["higher_target_id"]), str(lower)) + for entry in declarations.get("sum_bridges", ()): + for higher in entry["higher_target_ids"]: + for lower in entry["lower_target_ids"]: + tie(str(higher), str(lower)) + by_measure: dict[tuple[object, ...], list[str]] = {} + for target_id, target in contract.items(): + measurement = target.get("measurement") or {} + key = ( + measurement.get("concept"), + measurement.get("entity"), + measurement.get("map_to"), + ) + by_measure.setdefault(key, []).append(target_id) + + def filters(target_id: str) -> frozenset[str]: + measurement = contract[target_id].get("measurement") or {} + return frozenset( + json.dumps(predicate, sort_keys=True) + for predicate in measurement.get("filters") or () + ) + + for target_ids in by_measure.values(): + for left in target_ids: + if left not in local: + continue + for right in target_ids: + if filters(left) <= filters(right) or filters(right) <= filters(left): + tie(left, right) + families: list[tuple[frozenset[str], frozenset[str]]] = [] + seen: set[str] = set() + for start in sorted(local): + if start in seen: + continue + family = {start} + frontier = [start] + while frontier: + for other in ties.get(frontier.pop(), ()): + if other in local and other not in family: + family.add(other) + frontier.append(other) + seen |= family + parents = set().union(*(ties.get(target, set()) for target in family)) - local + families.append((frozenset(family), frozenset(parents))) + return tuple(families) + + +@dataclass(frozen=True) +class _CarrierSpan: + """The problem's rows over its positive-weight households, sliced once.""" + + matrix: sparse.csr_matrix + sources: np.ndarray + index: Mapping[str, int] + level: Any + #: The positive-weight households' regions, where the frame carries them. + regions: np.ndarray | None = None + + @classmethod + def build( + cls, + problem: Any, + weights: Sequence[float] | np.ndarray, + frame: Frame, + geography_levels: Mapping[str, object] | None, + ) -> _CarrierSpan: + household = frame.table("household") + if "source_household_id" not in household.columns: + raise ValueError( + "UK diagnostics need household source_household_id to count each " + "row's carriers." + ) + sources = household["source_household_id"].to_numpy() + positive = np.asarray(weights, dtype=float) > 0 + if positive.shape != sources.shape: + raise ValueError("UK row carriers need one weight per household.") + matrix = sparse.csr_matrix( + sparse.csr_matrix(problem.matrix)[:, np.flatnonzero(positive)] + ) + matrix.eliminate_zeros() + regions = ( + household["region"].astype(str).to_numpy()[positive] + if "region" in household.columns + else None + ) + return cls( + matrix=matrix, + sources=sources[positive], + index={str(name): position for position, name in enumerate(problem.names)}, + level=_row_level(geography_levels), + regions=regions, + ) + + def row_regions(self, names: Sequence[str]) -> list[frozenset[str]]: + """The regions of each row's carriers (none for a row nobody carries).""" + + if self.regions is None: + raise ValueError("UK row regions need the frame's household region.") + found: list[frozenset[str]] = [] + for name in names: + if name not in self.index: + raise ValueError(f"UK target diagnostic {name!r} has no problem row.") + row = self.index[name] + start, stop = self.matrix.indptr[row], self.matrix.indptr[row + 1] + found.append(frozenset(self.regions[self.matrix.indices[start:stop]])) + return found + + def rows( + self, names: Sequence[str] + ) -> tuple[list[str], sparse.csr_matrix, np.ndarray, np.ndarray, np.ndarray]: + """One block's rows (stored zeros dropped: a household with a zero entry + does not carry the row), the households' source ids, each row's + distinct source households and each row's floor.""" + + names = list(names) + if not names: + empty = np.zeros(0) + return [], sparse.csr_matrix((0, 0)), empty, empty, empty + for name in names: + if name not in self.index: + raise ValueError(f"UK target diagnostic {name!r} has no problem row.") + matrix = sparse.csr_matrix(self.matrix[[self.index[name] for name in names]]) + carriers = np.array( + [ + len(pd.unique(self.sources[matrix.indices[start:stop]])) + for start, stop in zip( + matrix.indptr[:-1], matrix.indptr[1:], strict=True + ) + ] + ) + floors = np.array( + [ + UK_BRMA_DIAGNOSTIC_MIN_SOURCE_HOUSEHOLDS + if self.level(name) == "brma" + else UK_DIAGNOSTIC_MIN_SOURCE_HOUSEHOLDS + for name in names + ] + ) + return names, matrix, self.sources, carriers, floors def uk_thin_rows( @@ -1078,11 +1440,11 @@ def uk_thin_rows( ) -> set[str]: """The rows whose model figures rest on fewer than ten source households. - National, regional and BRMA rows: María's rule of 2026-10-21 binds a row - however few households carry it, and keeps its figures in the build, as - BRMA rows' have been kept since her ruling of 2026-10-17. A row whose - level in ``geography_levels`` is a constituency or a local authority is - left to the area-support rule (``UK_AREA_SUPPORT_LEVELS``). ``problem`` is + Every row: María's rule of 2026-10-21 binds a row however few households + carry it, and keeps its figures in the build, as BRMA rows' have been + kept since her ruling of 2026-10-17; her ruling of 2026-10-23 extends the + withholding to constituency and local-authority rows, whose binding the + area-support rule still decides (``UK_AREA_SUPPORT_LEVELS``). ``problem`` is the numerical problem the rows were scored on (its ``matrix`` and ``names``) and ``weights`` the weights they were scored at. A row's carriers are the distinct ``source_household_id`` values of the @@ -1090,9 +1452,10 @@ def uk_thin_rows( area support counts them. """ - names, _, _, carriers, floors = _scoped_rows( - problem, weights, frame, target_rows, geography_levels - ) + if not target_rows: + return set() + span = _CarrierSpan.build(problem, weights, frame, geography_levels) + names, _, _, carriers, floors = span.rows([str(row["name"]) for row in target_rows]) return { name for name, count, floor in zip(names, carriers, floors, strict=True) @@ -1127,20 +1490,91 @@ def uk_withheld_row_sets( the UC family total less its bound bands gives back the unbound band above GBP 2,500 a month, which is no row and may rest on a handful of households. What neither check sees is set out in :class:`_ResidualCheck`. - Constituency and authority rows stay outside, as they stay outside the - per-row floor: whether a local row can give back a national one is part - of the local-line ruling still owed. + Both checks run per block (:func:`_row_blocks`; María's ruling of + 2026-10-23): the national, regional and BRMA rows together; on a local + surface, each region's rows of every grain, and each local family with + its higher-grain parents (Vahid's review of #1383, item 1), so a local + family total less its published local bands is caught, and so are a + region or national row less its published local cells and a region's + constituencies less its local authorities. The blocks overlap, so a row + one block withholds beside a thin one is protected in every other block + that holds it: there, any combination that holds it counts as too small + to give back. Blocks run again until none withholds another row, which + ends, since a row once withheld stays withheld. + """ + + if not target_rows: + return set(), set() + span = _CarrierSpan.build(problem, weights, frame, geography_levels) + blocks = _row_blocks(target_rows, geography_levels, span) + block_rows = [span.rows(block) for block in blocks] + membership: dict[str, list[int]] = {} + for position, block in enumerate(blocks): + for name in block: + membership.setdefault(name, []).append(position) + thin: set[str] = set() + for names, _, _, carriers, floors in block_rows: + thin.update( + name + for name, count, floor in zip(names, carriers, floors, strict=True) + if count < floor + ) + # A thin row is thin in every block that holds it; a row withheld beside + # one belongs to the block that withheld it. + owners = {name: set(membership[name]) for name in thin} + withheld = set(thin) + checked: dict[int, frozenset[str]] = {} + pending = list(range(len(blocks))) + while pending: + position = pending.pop(0) + names = block_rows[position][0] + held = frozenset(name for name in names if name in withheld) + if checked.get(position) == held: + continue + protected = frozenset(name for name in held if position not in owners[name]) + added = _withheld_in_block( + *block_rows[position], held=held, protected=protected + ) + checked[position] = held | added + for name in added: + owners.setdefault(name, set()).add(position) + withheld.add(name) + for other in membership[name]: + if other != position and other not in pending: + pending.append(other) + return thin, withheld - thin + + +def _withheld_in_block( + names: list[str], + matrix: sparse.csr_matrix, + sources: np.ndarray, + carriers: np.ndarray, + floors: np.ndarray, + *, + held: Collection[str] = frozenset(), + protected: Collection[str] = frozenset(), +) -> set[str]: + """The published rows one block withholds beside the rows already withheld. + + ``held`` rows are withheld already: the block's thin rows and the rows + other blocks withheld. A ``protected`` row is one another block withheld + beside a thin row of its own, so any combination that holds it counts as + resting on too few households: no published row of this block may give + it back, even within a sum this block would let stand. """ - names, matrix, sources, carriers, floors = _scoped_rows( - problem, weights, frame, target_rows, geography_levels - ) thin = { name for name, count, floor in zip(names, carriers, floors, strict=True) if count < floor } - withheld = set(thin) + already = thin | set(held) + withheld = set(already) + recovery_floors = np.asarray(floors, dtype=np.int64).copy() + for position, name in enumerate(names): + if name in protected: + recovery_floors[position] = np.iinfo(np.int64).max residuals = _ResidualCheck(matrix, sources, carriers, floors, names) norms = np.sqrt(np.asarray(matrix.multiply(matrix).sum(axis=1)).ravel()) unit = matrix @@ -1152,17 +1586,19 @@ def uk_withheld_row_sets( # greedy groups of a total too large to search exactly, so the # residuals are measured again on each pass. residuals.withhold(withheld) - held = [i for i, name in enumerate(names) if name in withheld and norms[i]] + hidden = [i for i, name in enumerate(names) if name in withheld and norms[i]] published = [ i for i, name in enumerate(names) if name not in withheld and norms[i] ] - if not held or not published: + if not hidden or not published: break if gram is None: scale = np.divide(1.0, norms, out=np.zeros_like(norms), where=norms > 0) unit = sparse.csr_matrix(sparse.diags(scale) @ matrix) gram = (unit @ unit.T).toarray() - recovery = _small_recovery(unit, gram, sources, held, published, floors) + recovery = _small_recovery( + unit, gram, sources, hidden, published, recovery_floors + ) if recovery is None: break coefficients, leverage = recovery @@ -1184,7 +1620,7 @@ def uk_withheld_row_sets( key=lambda i: (carriers[i], names[i]), ) withheld.add(names[pick]) - return thin, withheld - thin + return withheld - already class _ResidualCheck: @@ -1929,6 +2365,30 @@ def uk_withheld_gate_keys(rows: object) -> frozenset[str]: ) +def uk_withheld_gate_areas(rows: object) -> frozenset[str]: + """The bare area codes of withheld BRMA rows, for the report guard. + + One family binds per BRMA, so a BRMA's area code names its row. A + constituency or local authority binds many families, so its code names + published rows too, and its withheld rows are matched by their keys alone + (María's ruling of 2026-10-23 on the local line). + """ + + records = rows.to_dict(orient="records") if hasattr(rows, "to_dict") else rows + return frozenset( + str(row.get("area_code", "")).strip() + for row in records or () + if isinstance(row, Mapping) + and uk_withheld_flag(row.get("model_figures_withheld")) + and _GEOGRAPHY_LEVEL_ALIASES.get( + str(row.get("geography_level", "")).strip().lower(), + str(row.get("geography_level", "")).strip().lower(), + ) + == "brma" + and str(row.get("area_code", "")).strip() + ) + + def uk_withhold_brma_figures( rows: Sequence[Mapping[str, object]], withheld: frozenset[str], @@ -1975,7 +2435,11 @@ def __init__(self) -> None: def uk_refuse_named_withheld_rows( - payload: object, *, names: frozenset[str], keys: frozenset[str] + payload: object, + *, + names: frozenset[str], + keys: frozenset[str], + areas: frozenset[str] = frozenset(), ) -> None: """Fail closed if a written gate report names a withheld row at all. @@ -1987,12 +2451,14 @@ def uk_refuse_named_withheld_rows( leaves it. The error's message is constant; the place goes to this machine's stderr only. - It matches literal text, and a bare area code: one family is bound per - BRMA today, and a second would stop the build on its published rows - until the guard matched each withheld row's own keys instead. + It matches literal text: each withheld row's name and gate key, and the + bare area codes in ``areas``, which are those of withheld BRMA rows only + (:func:`uk_withheld_gate_areas`). One family is bound per BRMA, so its + code names its row; a constituency or local authority binds many, so a + withheld local row is matched by its key and a published row of the same + area may be named (María's ruling of 2026-10-23 on the local line). """ - areas = {key.split("/")[1] for key in keys if key.count("/") >= 2} labels = {label.casefold() for label in (*names, *keys, *areas) if label} if not labels: return @@ -2322,6 +2788,10 @@ def uk_calibration_diagnostics_payload( drift = uk_consumption_drift(household, result.initial_weights, result_weights) if drift is not None: uk_diagnostics["consumption_drift"] = drift + payload["diagnostic_warnings"] = [ + *(payload.get("diagnostic_warnings") or []), + *uk_consumption_drift_warnings(drift), + ] if withheld_block is not None: uk_diagnostics["model_figures_withheld"] = withheld_block payload["uk_diagnostics"] = uk_diagnostics diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_annual_income.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_annual_income.py index d2bf9d01b6..36ac2202bf 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_annual_income.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_annual_income.py @@ -6,10 +6,10 @@ income tax, so a person who left a job counts only where the year's income makes them liable. The spine's income columns are current, annualised incomes, the concept HBAI and policyengine-uk use: the usual weekly pay of -the job held at interview times 365.25 / 7. A person who started a job during -the year, left one, changed jobs or had a gap sits in another HMRC band than -their current pay puts them in, or in none, and a recent leaver who paid tax -in the year is no taxpayer at all. +the job held at interview times 52 (``frs_spine.WEEKS_IN_YEAR``, uk-data#531). +A person who started a job during the year, left one, changed jobs or had a +gap sits in another HMRC band than their current pay puts them in, or in +none, and a recent leaver who paid tax in the year is no taxpayer at all. This stage writes what the FRS records about the 12 months before the interview, for every adult, as descriptors beside the current columns, which diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_council_tax.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_council_tax.py index 358e9783d8..a95bed7031 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_council_tax.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_council_tax.py @@ -68,8 +68,8 @@ def frs_council_tax_operation_parameters() -> dict[str, Any]: "value": ( "council tax before council tax reduction: CTANNUAL net of the " "Scottish water and sewerage charges ((CWATAMT1 + CSEWAMT1) x " - "365.25/7, at 0.65 where CTREB is 1; CWATAMTD where CWATAMT1 is not " - "positive), plus CTREBAMT x 365.25/7 where CTREB is 1 and CTREBAMT " + "52, at 0.65 where CTREB is 1; CWATAMTD where CWATAMT1 is not " + "positive), plus CTREBAMT x 52 where CTREB is 1 and CTREBAMT " "> 0; a CTREB 1 household without a positive CTREBAMT takes the " "larger of its netted CTANNUAL and its cell mean" ), diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_disability.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_disability.py index 028414b2b5..917648f778 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_disability.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_disability.py @@ -117,8 +117,9 @@ def uk_dwp_disability_category_rates( The parameter instant is the fiscal-year label instant: policyengine-uk writes the April rates over the whole labelled year. This corrects the - tree mismatch identified by uk-data#475 and uses the shared 365.25/7 week - conversion identified by uk-data#476. + tree mismatch identified by uk-data#475 and uses the spine's shared week + conversion identified by uk-data#476, 52 weeks since María's ruling of + 2026-10-23 (uk-data#531). """ dwp = _uk_dwp_tree(year) @@ -148,8 +149,9 @@ def uk_dwp_disability_flag_rates(year: int) -> UKDWPDisabilityFlagRates: The parameter instant is the fiscal-year label instant: policyengine-uk writes the April rates over the whole labelled year. This keeps the tree - correction from uk-data#475 and the shared 365.25/7 week conversion from - uk-data#476 aligned with the category derivation. + correction from uk-data#475 and the spine's shared week conversion from + uk-data#476 (52 weeks since 2026-10-23) aligned with the category + derivation. """ dwp = _uk_dwp_tree(year) diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_education.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_education.py index 26baba1530..85c21f97a6 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_education.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_education.py @@ -336,8 +336,8 @@ def _ema(raw: pd.DataFrame, *, code_column: str, amount_column: str) -> np.ndarr Participants (code == 1) reporting a sentinel negative amount receive the mean of participants' non-negative reported amounts; everyone else keeps their reported amount. Floored at zero and annualized at - WEEKS_IN_YEAR (the signed multiplier difference vs the incumbent's - bare 52). A vintage with participants but no valid donor amount fills + WEEKS_IN_YEAR, 52 weeks like the incumbent's since María's ruling of + 2026-10-23. A vintage with participants but no valid donor amount fills with zero — frames refuse NaN, where the incumbent would propagate it. """ diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_hmrc_source.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_hmrc_source.py index d0dd4c5f99..fa7eaaca39 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_hmrc_source.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_hmrc_source.py @@ -13,13 +13,15 @@ import numpy as np import pandas as pd +from microcosm.build.uk_runtime.frs_spine import WEEKS_IN_YEAR from microcosm.build.uk_runtime.spi_support import ( SPI_HMRC_INCAPACITY_BENEFIT_INCOME_COLUMN, SPI_HMRC_PAY_COLUMN, SPI_HMRC_UNEMPLOYMENT_BENEFIT_INCOME_COLUMN, ) -FRS_WEEKS_IN_YEAR = 365.25 / 7 +#: The spine's annualisation of weekly amounts, which the replay leaves mirror. +FRS_WEEKS_IN_YEAR = WEEKS_IN_YEAR FRS_HMRC_PAY_COLUMN = SPI_HMRC_PAY_COLUMN @@ -51,7 +53,7 @@ "spi_concept": "PAY", "scope": "full", "raw_sources": ["ADULT.INEARNS"], - "formula": "max(0, ADULT.INEARNS) * (365.25 / 7)", + "formula": "max(0, ADULT.INEARNS) * 52", }, FRS_HMRC_UBISJA_COLUMN: { "spi_concept": "UBISJA", @@ -60,13 +62,13 @@ "BENEFITS.BENEFIT=14:BENAMT", "BENEFITS.BENEFIT=19:BENAMT", ], - "formula": "sum(BENAMT where BENEFIT in {14, 19}) * (365.25 / 7)", + "formula": "sum(BENAMT where BENEFIT in {14, 19}) * 52", }, FRS_HMRC_INCPBEN_COLUMN: { "spi_concept": "INCPBEN", "scope": "full", "raw_sources": ["BENEFITS.BENEFIT=17:BENAMT"], - "formula": "sum(BENAMT where BENEFIT == 17) * (365.25 / 7)", + "formula": "sum(BENAMT where BENEFIT == 17) * 52", }, FRS_HMRC_OSSBEN_IDENTIFIABLE_SUBSET_COLUMN: { "spi_concept": "OSSBEN", @@ -76,15 +78,14 @@ "BENEFITS.BENEFIT=16,VAR2 in {1,3}:BENAMT", ], "formula": ( - "sum(BENAMT where BENEFIT == 13 or " - "(BENEFIT == 16 and VAR2 in {1, 3})) * (365.25 / 7)" + "sum(BENAMT where BENEFIT == 13 or (BENEFIT == 16 and VAR2 in {1, 3})) * 52" ), }, FRS_HMRC_SRP_REGULAR_CODE5_COLUMN: { "spi_concept": "SRP", "scope": "regular_code5_subset", "raw_sources": ["BENEFITS.BENEFIT=5:BENAMT"], - "formula": "sum(BENAMT where BENEFIT == 5) * (365.25 / 7)", + "formula": "sum(BENAMT where BENEFIT == 5) * 52", }, } diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_spine.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_spine.py index 75332118b5..9f9c4375e2 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_spine.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_spine.py @@ -35,7 +35,6 @@ "FRS_SPINE_TABLES", "OUTPUT_COLUMNS", "REGION_MAP", - "STATE_PENSION_WEEKS_IN_YEAR", "TIME_PERIOD", "UC_CAPITAL_UNAVAILABLE", "WEEKS_IN_YEAR", @@ -70,14 +69,17 @@ "pension", ) -WEEKS_IN_YEAR = 365.25 / 7 -#: The State Pension alone annualises at 52 weeks (María's ruling of 2026-10-20, -#: an exception to microcosm#1095's weekly amounts). It is paid at weekly rates, -#: and policyengine-uk reads ``state_pension_reported`` back to a weekly amount -#: at 52 weeks a year before comparing it with the full rate, so at 365.25 / 7 a -#: full-rate pensioner would read 0.34% above the full rate and the excess -#: would become a protected payment. -STATE_PENSION_WEEKS_IN_YEAR = 52 +#: Weekly FRS amounts annualise at 52 weeks a year (María's ruling of +#: 2026-10-23, uk-data#531). policyengine-uk reads an annual amount back to a +#: weekly or monthly one at policyengine-core's 52 weeks before a weekly or +#: monthly rule tests it (Housing Benefit, Council Tax Reduction, Pension +#: Credit, the non-dependant deductions, the hours tests), so at 365.25 / 7 a +#: weekly amount would read 0.34% above itself there, as a full-rate State +#: Pension read above the full rate before María's ruling of 2026-10-20 made it +#: the first amount at 52. LCFS spending keeps 365.25 / 7 +#: (``lcfs_consumption``) and NTS trips 52.14 (``nts_bus_travel``): no weekly +#: rule reads them back. +WEEKS_IN_YEAR = 52 TIME_PERIOD = "2024" # Raw TOTCAPB4 blanks, nonnumeric values, and negative codes mean that the @@ -240,6 +242,7 @@ "property_income", "reports_rent_from_other_property", "maintenance_income", + "spousal_maintenance_income", "miscellaneous_income", "private_transfer_income", "lump_sum_income", @@ -262,6 +265,7 @@ "pension_contributions_via_salary_sacrifice", "salary_sacrifice_reported", "salary_sacrifice_asked", + "frs_bonus_amount", "child_benefit_reported", "income_support_reported", "housing_benefit_reported", @@ -290,6 +294,7 @@ "esa_includes_support_component", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", "benunit_id", "frs_benunit_capital", "is_married", @@ -597,6 +602,7 @@ def _assemble_frame( owner_managers = frs_owner_manager_inputs(person, frs["job"]) for column in OWNER_MANAGER_COLUMNS: pe_person[column] = owner_managers[column].to_numpy() + pe_person[FRS_BONUS_CARRIER_COLUMN] = frs_annual_bonuses(person, frs["job"]) _add_person_income(pe_person, person, household, frs["oddjob"], evidence=evidence) _add_benefits(pe_person, person, frs["benefits"]) # The engine pays Carer's Allowance on hours or receipt; a dataset keeps it @@ -738,6 +744,50 @@ def _add_accounts( #: on this release, which leaves the engine's company-owner rules off for it. PROPERTY_BUSINESS_SIC_DIVISION = 68 OWNER_MANAGER_JOB_COLUMNS = ("director", "nature", "dirperc", "jobtype", "dividend") +#: The JOB tab's bonus fields (FRS 2024-25): the amount of each of up to six +#: occasional bonuses received in the last 12 months (BONAMT1-6, the sum +#: received, not weekly), whether it was given before or after tax (BONTAX1-6: +#: 1 before, 2 after) and the weekly tax the FRS imputes on a bonus given +#: after tax (BONTXAM1-6, a weekly variable). +FRS_BONUS_JOB_COLUMNS = tuple( + f"{stem}{index}" + for index in range(1, 7) + for stem in ("bonamt", "bontax", "bontxam") +) +#: Each adult's gross occasional bonuses over the last 12 months, the carrier +#: salary_sacrifice's bonus conversion reads (microcosm#1340). It is no engine +#: input and leaves at the release boundary. The FRS's earnings hold the +#: bonuses a respondent received (the FRS 2024-25 derived-variable notes, SN +#: 9563: UGRSPAY's final adjustments add them), but a sacrificed bonus is never +#: received, so it is in neither; the conversion reads a received bonus as a +#: sign of a bonus-paying job and its size, and adds the sacrifice beside pay +#: (María's ruling of 2026-10-24). +FRS_BONUS_CARRIER_COLUMN = "frs_bonus_amount" +FRS_BONUS_AFTER_TAX = 2 + + +def frs_annual_bonuses(person: pd.DataFrame, job: pd.DataFrame) -> np.ndarray: + """Each adult's gross bonuses over the last 12 months, over all their jobs. + + A bonus given after tax adds back the tax the FRS imputes on it, a weekly + amount, over the year. A tab without the bonus fields refuses, rather + than set nobody's. + """ + + missing = [column for column in FRS_BONUS_JOB_COLUMNS if column not in job] + if missing: + raise KeyError( + f"The FRS job tab has no {missing} column(s), so bonuses cannot be set." + ) + gross = pd.Series(0.0, index=job.index) + for index in range(1, 7): + amount = np.maximum(_number(job, f"bonamt{index}"), 0) + after_tax = _number(job, f"bontax{index}") == FRS_BONUS_AFTER_TAX + tax = np.maximum(_number(job, f"bontxam{index}"), 0) * WEEKS_IN_YEAR + gross = gross + amount + tax.where(after_tax, 0.0) + return np.asarray( + _sum_to_entity(gross, job["person_id"], person["person_id"]), dtype=float + ) def frs_owner_manager_inputs(person: pd.DataFrame, job: pd.DataFrame) -> pd.DataFrame: @@ -812,6 +862,40 @@ def _add_person_income( pe_person["maintenance_income"] = ( maintenance_to_self + _positive(person, "mntamt2").to_numpy() ) * WEEKS_IN_YEAR + # Maintenance a spouse or civil partner, present or former, pays for the + # adult's own keep, which Universal Credit (UC Regulations 2013 reg. + # 66(1)(d)), Pension Credit and Housing Benefit count, unlike the child + # maintenance above (pe-uk#2572; microcosm#1320, María's rulings of + # 2026-10-22 and 2026-10-23). ALIAMT is alimony or an allowance from a + # previous partner on the adult's own behalf, at its usual amount ALUAMT + # where ALIUS says the last was not usual; APAMT is the allowances from a + # husband or wife who lives away, which the FRS asks only of married + # adults. A tab without the three refuses, rather than set nobody's. + # ALIAMT is an approximation (Vahid's review of #1383, item 13): the FRS + # 2024-25 asks for payments "from a previous partner" (AliMny), so it also + # holds a former cohabitant's, which pe-uk's spousal_maintenance_income + # leaves out and Universal Credit and Pension Credit do not count. The + # survey does not say whether the previous partner was a spouse or civil + # partner, so those payments count as unearned income here. + missing_alimony = sorted( + column for column in ("aliamt", "aluamt", "alius") if column not in person + ) + if missing_alimony: + raise KeyError( + f"The FRS adult tab has no {', '.join(missing_alimony).upper()} " + "column, so spousal maintenance cannot be set." + ) + alimony = np.maximum( + np.where( + _number(person, "alius") == 2, + _number(person, "aluamt"), + _number(person, "aliamt"), + ), + 0, + ) + pe_person["spousal_maintenance_income"] = ( + alimony + _positive(person, "apamt").to_numpy() + ) * WEEKS_IN_YEAR # ALLPAY2, "Amount of allowance: organisation", is one amount, so it is # miscellaneous income alone and not also a private transfer # (microcosm#1320, uk-data#627; María's ruling of 2026-10-20). @@ -821,10 +905,12 @@ def _add_person_income( person, ("allpay2", "royyr2", "royyr3", "royyr4", "chamtern", "chamttst") ) ) * WEEKS_IN_YEAR + # APAMT is spousal maintenance (above). APDAMT, the household bills a + # husband or wife who lives away pays directly, goes to third parties, not + # to the adult, so it stays a private transfer (María's ruling of + # 2026-10-23). pe_person["private_transfer_income"] = ( - _sum_positive_fields( - person, ("apamt", "apdamt", "pareamt", "allpay3", "allpay4") - ) + _sum_positive_fields(person, ("apdamt", "pareamt", "allpay3", "allpay4")) * WEEKS_IN_YEAR ) pe_person["lump_sum_income"] = _number(person, "redamt") @@ -958,6 +1044,41 @@ def _odd_job_income(person: pd.DataFrame, oddjob: pd.DataFrame) -> np.ndarray: ) +#: Bereavement Support Payment's monthly rates, frozen since the payment began +#: on 6 April 2017: the higher rate, with a child, and the standard rate (The +#: Bereavement Support Payment Regulations 2017, SI 2017/410, reg. 3). +BSP_MONTHLY_RATES = (350.0, 100.0) +#: The share of a rate's weekly equivalent within which an FRS code-6 weekly +#: amount is that rate. The equivalents are the monthly rate at 12/52, as a +#: month, quarter or year converts, and at 1/4, as four weeks converts. +BSP_RATE_MATCH_TOLERANCE = 0.01 + + +#: Widowed Parent's Allowance's weekly rate in 2024-25, the FRS 2024-25 year +#: (DWP, Benefit and pension rates 2024 to 2025: GBP 148.40, from GBP 139.10 +#: in 2023-24). An award below it is a reduced one (Vahid's review of #1383, +#: item 12). +WPA_WEEKLY_RATE = 148.40 + + +def wpa_rate_match(weekly: pd.Series) -> pd.Series: + """Whether each weekly amount is Widowed Parent's Allowance's rate or below it.""" + + return weekly <= WPA_WEEKLY_RATE * (1.0 + BSP_RATE_MATCH_TOLERANCE) + + +def bsp_rate_match(weekly: pd.Series) -> pd.Series: + """Whether each weekly amount is one of Bereavement Support Payment's rates.""" + + equivalents = [ + rate * factor for rate in BSP_MONTHLY_RATES for factor in (12 / 52, 1 / 4) + ] + match = pd.Series(False, index=weekly.index) + for equivalent in equivalents: + match |= (weekly - equivalent).abs() <= BSP_RATE_MATCH_TOLERANCE * equivalent + return match + + def _add_benefits( pe_person: pd.DataFrame, person: pd.DataFrame, benefits: pd.DataFrame ) -> None: @@ -1005,9 +1126,23 @@ def _add_benefits( pe_person["esa_includes_support_component"] = _esa_includes_support_component( benefits, person_id, person["person_id"] ) + # FRS code 6 is Bereavement Support Payment with its predecessors. A weekly + # amount at one of the payment's frozen rates is the payment; one at Widowed + # Parent's Allowance's 2024-25 rate, or below it as a reduced award, is the + # allowance, the predecessor still in payment, which policyengine-uk 2.149.0 + # gives its own input (pe-uk#2572; #1222, María's ruling of 2026-10-22). + # Any other amount, above the allowance's rate and at no rate (a lump sum, + # a part month or a misreport), stays the payment, which is neither taxed + # nor means-tested (Vahid's review of #1383, item 12); an allowance with an + # inherited additional pension above its rate reads as the payment too. + code_6 = benefit == 6 + wpa = code_6 & ~bsp_rate_match(amount) & wpa_rate_match(amount) + bsp = code_6 & ~wpa pe_person["bsp_reported"] = ( - _sum_to_entity(amount * (benefit == 6), person_id, person["person_id"]) - * WEEKS_IN_YEAR + _sum_to_entity(amount * bsp, person_id, person["person_id"]) * WEEKS_IN_YEAR + ) + pe_person["widowed_parents_allowance_reported"] = ( + _sum_to_entity(amount * wpa, person_id, person["person_id"]) * WEEKS_IN_YEAR ) # FRS code 9 is War Widow's or Widower's Pension, which rises with CPI while # Bereavement Support Payment's rates are frozen. policyengine-uk 2.135.7 @@ -1019,14 +1154,14 @@ def _add_benefits( pe_person["winter_fuel_allowance_reported"] = ( pe_person["winter_fuel_allowance_reported"] / WEEKS_IN_YEAR ) - # The State Pension's weekly amounts, re-summed at its own 52 weeks. + # The State Pension's weekly amounts, re-summed on their own. pe_person["state_pension_reported"] = ( _sum_to_entity( amount * benefit.isin(BENEFIT_CODES["state_pension"]), person_id, person["person_id"], ) - * STATE_PENSION_WEEKS_IN_YEAR + * WEEKS_IN_YEAR ) diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_take_up.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_take_up.py index 63491a3836..203934094c 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_take_up.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_take_up.py @@ -80,7 +80,7 @@ for output in (*FRS_TAKE_UP_OUTPUT_COLUMNS, *FRS_TAKE_UP_PERSON_OUTPUT_COLUMNS) } # Universal Credit is claimable only by a benefit unit whose claimant or -# partner meets its age conditions: policyengine-uk 2.147.2's ``is_uc_eligible`` +# partner meets its age conditions: policyengine-uk 2.151.0's ``is_uc_eligible`` # (capital aside) needs a single or joint claimant, taken from # ``is_uc_claimant``, who meets UC's minimum age and has not reached Pension # Credit qualifying age. The draw's population is therefore the units with a diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/full_gates.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/full_gates.py index a1ae4eebbf..09e69253bc 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/full_gates.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/full_gates.py @@ -243,11 +243,21 @@ def build_full_gate_context( # keep the area-support rule). The fit gates decide on the published rows # and count the withheld ones (her ruling of 2026-10-19); the flag tells # the bindings and the writers which rows those are. + # The withholding ties a local family to its parents by contract target + # (Vahid's review of #1383, item 1). withheld = uk_withheld_rows( problem, solution.weights, frame, - diagnostics, + [ + { + **row, + "metadata": {"contract_target_id": metadata.get("contract_target_id")}, + } + for row, metadata in zip( + diagnostics, ordered_problem.target_metadata, strict=True + ) + ], {str(row["name"]): str(row["geography_level"]) for row in diagnostics}, ) for row in diagnostics: diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/full_targets.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/full_targets.py index 51e8f8f21b..bfb6a15380 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/full_targets.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/full_targets.py @@ -27,6 +27,7 @@ load_uk_high_value_home_stock_facts, ) from microcosm.build.uk_runtime.ledger_targets import ( + _uk_contract_targets, assert_uk_local_deferrals_in_force, compile_uk_local_target_registry, compile_uk_target_registry, @@ -45,6 +46,7 @@ reconcile_uk_national_registry, ) from microcosm.build.uk_runtime.support_floor import ( + assert_uk_support_floor_units, load_uk_support_floor_declaration, uk_support_floor_from_payload, ) @@ -108,7 +110,8 @@ def _support_floor_input( """The register's signed support floor and the date it is evaluated on. The problem nodes apply it to the compiled matrix (microcosm#1095 U3); a - floor outside its window refuses here, before any engine runs. + floor outside its window, or with a scope labelled in a unit its targets + are not counted in, refuses here, before any engine runs. """ declaration = load_uk_support_floor_declaration( @@ -116,7 +119,9 @@ def _support_floor_input( ) if declaration is None: return None - uk_support_floor_from_payload(declaration).assert_in_force(evaluated_on) + floor = uk_support_floor_from_payload(declaration) + floor.assert_in_force(evaluated_on) + assert_uk_support_floor_units(floor, _uk_contract_targets(national_only=False)) return {"declaration": declaration, "evaluated_on": evaluated_on.isoformat()} diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/graph.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/graph.py index ac3791a674..0cb9404f3f 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/graph.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/graph.py @@ -395,6 +395,7 @@ "afcs_reported", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", "universal_credit_reported", "esa_contrib_reported", "esa_income_reported", @@ -437,6 +438,9 @@ ("household", "owned_land"), ("household", "other_residential_property_value"), ("household", "non_residential_property_value"), + # Netted off the property each is secured on (microcosm#1095). + ("household", "other_residential_property_secured_debt"), + ("household", "non_residential_property_secured_debt"), ("benunit", "benunit_support_channel"), ("benunit", "dependent_children"), ("benunit", "frs_benunit_capital"), @@ -445,11 +449,12 @@ } ), # The Move to UC claim draw reads each unit's legacy and Universal Credit - # receipts and its would_claim_uc, after their last writers, and the source - # household its receipt counts distinct support by (uk-data#534, - # microcosm#1095). + # receipts and its would_claim_uc, after their last writers, the claimant + # and partner whose reports count (pe-uk#2549), and the source household + # its receipt counts distinct support by (uk-data#534, microcosm#1095). "uc_legacy_closure_take_up": frozenset( { + ("person", "is_claimant_or_partner"), ("person", "child_tax_credit_reported"), ("person", "working_tax_credit_reported"), ("person", "housing_benefit_reported"), @@ -833,6 +838,16 @@ def _cells( *_cells("household", ("cash_isa", "stocks_and_shares_isa")), *_cells("household", ("mortgage_debt", "consumer_debt")), _Cell("person", "student_loan_balance", "float64"), + # The share split and the secured debts (microcosm#1095). + *_cells( + "household", + ( + "directly_held_shares", + "unit_and_investment_trusts", + "other_residential_property_secured_debt", + "non_residential_property_secured_debt", + ), + ), ), "was_lisa": ( _Cell("person", "has_lifetime_isa", "bool"), @@ -905,6 +920,9 @@ def _cells( "domestic_energy_consumption", "electricity_consumption", "gas_consumption", + # The heating fuels policyengine-uk 2.149.0 reads (pe-uk#2572). + "liquid_fuel_consumption", + "solid_fuel_consumption", ), ), _Cell("household", "has_fuel_consumption", "bool"), @@ -1030,6 +1048,7 @@ def _cells( "afcs_reported", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", ), ), *_cells( @@ -1106,6 +1125,8 @@ def _cells( "person", ( "pension_contributions_via_salary_sacrifice", + # Bonuses converted to bonus sacrifice (microcosm#1340). + "pension_contributions_via_bonus_sacrifice", "employee_pension_contributions", # Converted records' pay drops by the sacrificed amount (microcosm#1069). "employment_income", @@ -1180,6 +1201,7 @@ def _cells( "afcs_reported", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", "winter_fuel_allowance_reported", "council_tax_benefit_reported", "jsa_contrib_reported", @@ -1707,7 +1729,7 @@ def uk_spine_operation_inventory( "artifact_outputs": [output.name for output in node.artifact_outputs], "randomness": "Existing literal/child seeds and draw order are preserved inside the registered transform.", "coupling": ( - "Donor and recipient region and tenure encoding, seven segmented fit/draw chains with their child seeds, the tenure strata and the totals derived from drawn components remain coupled." + "Donor and recipient region and tenure encoding, eleven segmented fit/draw chains with their child seeds, the tenure and holder strata and the totals derived from drawn components remain coupled." if stage.stage == "was_wealth" else "Source assembly, declared household sample selection and same-kind mass normalization execute once in CREATE." if stage.stage == "frs_spine" diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/graph_terminal.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/graph_terminal.py index 735733f80c..fe6afb008b 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/graph_terminal.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/graph_terminal.py @@ -1018,6 +1018,7 @@ def run(self, context: KernelContext) -> KernelResult: ) from .diagnostics import ( uk_refuse_named_withheld_rows, + uk_withheld_gate_areas, uk_withheld_gate_keys, uk_withhold_brma_figures, ) @@ -1027,7 +1028,10 @@ def run(self, context: KernelContext) -> KernelResult: # (María's ruling of 2026-10-19); a report that names one fails the # build rather than leaving it. uk_refuse_named_withheld_rows( - report_payload, names=withheld, keys=uk_withheld_gate_keys(diagnostics) + report_payload, + names=withheld, + keys=uk_withheld_gate_keys(diagnostics), + areas=uk_withheld_gate_areas(diagnostics), ) payload = { "schema_version": 1, diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/hbai_validation.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/hbai_validation.py new file mode 100644 index 0000000000..af528f34de --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/hbai_validation.py @@ -0,0 +1,158 @@ +"""HBAI validation of a UK dataset against DWP's 95% intervals (microcosm#731, uk-data#487). + +Report-only (María's rulings of 2026-10-16 and 2026-10-20): four statistics, +the median equivalised household income and the share of individuals in +relative low income (below 60 percent of the contemporary median), each before +and after housing costs, are measured on a dataset and set beside DWP's +Households Below Average Income estimate for FYE 2025 and the 95 percent +confidence interval DWP publishes for it. A statistic outside its interval is +reported; it never binds and never fails a build. + +Microcosm's period 2024 is FRS FY2024/25, which HBAI calls FYE 2025 +(``docs/uk-uc-paid-target-contract.md``), so the dataset is measured at engine +year 2024. The estimates and intervals are read from the pinned Chronicle feed +(PolicyEngine/chronicle#359) with the release each was read from: DWP revises +FYE 2022 to FYE 2025 in March 2027, so a report names its vintage. +""" + +from __future__ import annotations + +import math +from collections.abc import Iterable, Mapping +from typing import Any + +#: Engine year of the comparison: FRS FY2024/25, HBAI FYE 2025. +UK_HBAI_VALIDATION_PERIOD = 2024 +_RECORD_SET_PREFIX = "dwp.hbai_fye2025" +_RECORD_SET_YEAR = "fy2024" +#: Each statistic: the record-set kind, the housing-cost basis and the measure. +UK_HBAI_VALIDATION_STATISTICS: Mapping[str, tuple[str, str, str]] = { + "median_equivalised_income_bhc_gbp_week": ( + "median_income", + "before_housing_costs", + "median_equivalised_household_income", + ), + "median_equivalised_income_ahc_gbp_week": ( + "median_income", + "after_housing_costs", + "median_equivalised_household_income", + ), + "relative_low_income_bhc_pct": ( + "relative_low_income", + "before_housing_costs", + "relative_low_income_share", + ), + "relative_low_income_ahc_pct": ( + "relative_low_income", + "after_housing_costs", + "relative_low_income_share", + ), +} +_BOUNDS = ("ci_95_lower_bound", "ci_95_upper_bound") + + +def _record_set(kind: str, housing: str) -> str: + return f"{_RECORD_SET_PREFIX}.{kind}.{housing}.{_RECORD_SET_YEAR}" + + +def _one( + facts: Mapping[tuple[str, str], list[Mapping[str, Any]]], + record_set: str, + measure: str, +) -> Mapping[str, Any]: + rows = facts.get((record_set, measure), []) + if len(rows) != 1: + raise ValueError( + f"HBAI validation needs one fact for {record_set} {measure}, the feed " + f"carries {len(rows)}." + ) + return rows[0] + + +def uk_hbai_validation_references( + facts: Iterable[Mapping[str, Any]], +) -> dict[str, dict[str, Any]]: + """The four statistics' FYE 2025 estimates and 95% intervals from feed facts. + + Refuses a statistic whose estimate or either bound is missing or repeated, + and an interval that does not hold its estimate. + """ + + wanted = { + _record_set(kind, housing) + for kind, housing, _ in UK_HBAI_VALIDATION_STATISTICS.values() + } | { + _record_set(f"{kind}_ci95", housing) + for kind, housing, _ in UK_HBAI_VALIDATION_STATISTICS.values() + } + selected: dict[tuple[str, str], list[Mapping[str, Any]]] = {} + for fact in facts: + layout = fact.get("layout") or {} + record_set = layout.get("record_set_id") + if record_set in wanted: + key = (str(record_set), str(layout.get("measure_id"))) + selected.setdefault(key, []).append(fact) + references: dict[str, dict[str, Any]] = {} + for statistic, (kind, housing, measure) in UK_HBAI_VALIDATION_STATISTICS.items(): + estimate = _one(selected, _record_set(kind, housing), measure) + lower, upper = ( + _one(selected, _record_set(f"{kind}_ci95", housing), f"{measure}_{bound}") + for bound in _BOUNDS + ) + value, low, high = (float(fact["value"]) for fact in (estimate, lower, upper)) + if not (math.isfinite(low) and math.isfinite(high) and low <= value <= high): + raise ValueError( + f"HBAI validation: the interval for {statistic} does not hold its " + "estimate." + ) + references[statistic] = { + "estimate": value, + "ci_95_lower": low, + "ci_95_upper": high, + "unit": str((estimate.get("observed_measure") or {}).get("unit", "")), + "period": dict(estimate.get("period") or {}), + "record_set_id": _record_set(kind, housing), + "source_release_key": str(estimate.get("source_release_key", "")), + "fact_keys": [ + str(fact.get("aggregate_fact_key", "")) + for fact in (estimate, lower, upper) + ], + } + return references + + +def classify_uk_hbai_statistics( + model: Mapping[str, float], + references: Mapping[str, Mapping[str, Any]], +) -> dict[str, dict[str, Any]]: + """Each measured statistic beside its HBAI estimate, inside its interval or not. + + ``model`` carries the four statistics in the references' units (pounds a + week for the medians, percent of individuals for the shares). The interval + is closed: a statistic on a bound is inside. Nothing here binds or fails; + a missing or non-finite statistic is refused, since a scorecard that drops + a row reads as one that passed it. + """ + + missing = sorted(set(UK_HBAI_VALIDATION_STATISTICS) - set(model)) + if missing: + raise ValueError(f"HBAI validation needs every statistic; missing {missing}.") + report: dict[str, dict[str, Any]] = {} + for statistic in UK_HBAI_VALIDATION_STATISTICS: + value = float(model[statistic]) + if not math.isfinite(value): + raise ValueError(f"HBAI validation: {statistic} is not finite.") + reference = references[statistic] + low, high = float(reference["ci_95_lower"]), float(reference["ci_95_upper"]) + estimate = float(reference["estimate"]) + report[statistic] = { + "model": value, + "hbai": estimate, + "ci_95": [low, high], + "inside_ci_95": low <= value <= high, + "difference": value - estimate, + "relative_difference": value / estimate - 1.0 if estimate else None, + "unit": reference["unit"], + "source_release_key": reference["source_release_key"], + } + return report diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/hmrc_uprating.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/hmrc_uprating.py index cd15d0d5b2..b73b550d16 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/hmrc_uprating.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/hmrc_uprating.py @@ -437,8 +437,8 @@ def assert_installed_engine_is_pinned() -> str: jobs and the H2 parity run them on the lock. Three things must hold. The distribution's version is the pinned one, - exactly, so a post-release or a local build of it (``2.147.2.post1``, - ``2.147.2+local``) is refused. ``policyengine_uk`` imports from that + exactly, so a post-release or a local build of it (``2.151.0.post1``, + ``2.151.0+local``) is refused. ``policyengine_uk`` imports from that distribution's own files, so a copy earlier on ``sys.path`` or an editable install is refused. And its ``__init__.py`` matches the distribution's RECORD, so a stale record beside other files is refused where the files diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/lcfs_consumption.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/lcfs_consumption.py index c46484068d..999937f4b1 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/lcfs_consumption.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/lcfs_consumption.py @@ -6,6 +6,7 @@ from collections.abc import Mapping, Sequence from dataclasses import dataclass, field from pathlib import Path +from types import MappingProxyType from typing import Any import numpy as np @@ -201,11 +202,12 @@ #: sign have moved, and the stage refuses the donor. On the 2024-25 tab the #: identity holds for about 98 % of each fuel's account payers. UK_LCFS_ACCOUNT_IDENTITY_MINIMUM = 0.95 -#: The rest of p537, which no output column carries and the housing total -#: keeps: central-heating oil (b017, Part 2 row 211; diary c45312, with -#: paraffin, row 1066), bottled gas (b018, row 212; diary c45222, row 1063), -#: coal and coke (c45411, row 1069), wood and peat (c45412, row 1072), and hot -#: water, steam and ice (c45511, row 1075). +#: The rest of p537 beside electricity and gas: central-heating oil (b017, +#: Part 2 row 211; diary c45312, with paraffin, row 1066), bottled gas (b018, +#: row 212; diary c45222, row 1063), coal and coke (c45411, row 1069), wood and +#: peat (c45412, row 1072), and hot water, steam and ice (c45511, row 1075). +#: The liquid and solid fuels have columns of their own (below); hot water, +#: steam and ice has no engine input and stays in the housing remainder. UK_LCFS_OTHER_FUEL_PARTS = ( "b017", "b018", @@ -234,6 +236,28 @@ ) #: The donor scratch column for the other fuels, read by the split receipt. UK_LCFS_OTHER_FUELS_COLUMN = "lcfs_other_fuels" +#: The two heating fuels policyengine-uk 2.149.0 reads (pe-uk#2572), parts of +#: housing_water_and_electricity_consumption that add nothing to consumption: +#: liquid fuels (COICOP 04.5.3), central-heating oil and paraffin with bottled +#: gas, LPG with liquid (María's ruling of 2026-10-22); and solid fuels +#: (COICOP 04.5.4), coal, coke, wood and peat. COICOP puts liquefied +#: hydrocarbons under 04.5.2 (gas), and c45222 is a 04.5.2 code, so ONS's 04.5.3 +#: leaves out the bottled gas the liquid column holds; the receipt reports it +#: apart (Vahid's review of #1383, item 8). Neither column is levelled to ONS, +#: unlike electricity and gas: the donor's diary totals are about twice ONS's, +#: and the frame's draws reach neither those nor ONS's. No engine formula reads +#: them yet; a costing on either needs levelling to ONS first. +UK_LCFS_FUEL_PARTS: Mapping[str, tuple[str, ...]] = MappingProxyType( + { + "liquid_fuel_consumption": ("b017", "c45312", "b018", "c45222"), + "solid_fuel_consumption": ("c45411", "c45412"), + } +) +#: The bottled gas inside the liquid fuels (b018 and its diary line c45222), and +#: the donor scratch column the split receipt reads it from. +UK_LCFS_BOTTLED_GAS_PARTS = ("b018", "c45222") +UK_LCFS_BOTTLED_GAS_COLUMN = "lcfs_bottled_gas" +UK_LCFS_FUEL_COLUMNS = tuple(UK_LCFS_FUEL_PARTS) #: ``donor.attrs`` key of the donor energy-split receipt. UK_LCFS_ENERGY_SPLIT_RECEIPT = "donor_energy_split" #: ``attrs`` key under which the split records the account identity shares. @@ -248,7 +272,11 @@ #: The spend columns a price index carries from the April-to-March diary to #: the calendar base year (microcosm#1113). Energy and road fuel are not here: #: later steps set their levels for that year. -UK_LCFS_DIARY_PRICE_COLUMNS = (*UK_LCFS_COICOP_DIVISION_COLUMNS, "bus_fare_spending") +UK_LCFS_DIARY_PRICE_COLUMNS = ( + *UK_LCFS_COICOP_DIVISION_COLUMNS, + "bus_fare_spending", + *UK_LCFS_FUEL_COLUMNS, +) #: Cars and vans available to the household: LCFS ``a124`` on the donor, the #: was_wealth QRF draw of WAS ``vcarnr8`` on the recipient (the FRS carries no #: vehicle variable). Both sides are rounded and clipped to this closed range so @@ -395,6 +423,10 @@ "domestic_energy_consumption", "electricity_consumption", "gas_consumption", + # Drawn last, after the totals and the levelled parts they condition on, + # so every earlier draw is the chain's own (pe-uk#2572). + "liquid_fuel_consumption", + "solid_fuel_consumption", ) RECOMPOSE_FROM_REMAINDER_KIND = "recompose_from_remainder" #: The COICOP totals that contain columns the stage levels (microcosm#1113): @@ -404,13 +436,15 @@ #: chain's domestic-energy draw, which is the electricity and gas #: ``derive_energy_from_lcfs`` makes of the diary's fuel, light and power #: (``p537``) by its labelled parts, so the diary's oil, bottled gas, solid -#: fuels and heat stay in the housing remainder (microcosm#1164). Transport (p607) nets the drawn petrol and +#: fuels and heat stay in the housing remainder (microcosm#1164); the liquid and +#: solid fuels' own draws are netted and added back unchanged, so the total +#: always holds them (pe-uk#2572). Transport (p607) nets the drawn petrol and #: diesel (c72211, c72212) and the drawn bus fares (which the pricing step #: replaces with journeys times yield), and keeps other motor fuels. UK_LCFS_RECOMPOSED_PARENTS: Mapping[str, tuple[tuple[str, ...], tuple[str, ...]]] = { "housing_water_and_electricity_consumption": ( - ("domestic_energy_consumption",), - ("electricity_consumption", "gas_consumption"), + ("domestic_energy_consumption", *UK_LCFS_FUEL_COLUMNS), + ("electricity_consumption", "gas_consumption", *UK_LCFS_FUEL_COLUMNS), ), "transport_consumption": ( ("petrol_spending", "diesel_spending", "bus_fare_spending"), @@ -423,6 +457,20 @@ #: range plus levelled parts larger than the drawn ones cannot leave the range #: the terminal support gate holds the emitted totals to. UK_LCFS_RECOMPOSED_MAXIMUM_TOTAL = "donor_support" +#: The declared levelling of the divisions' relative over-draw (María's rulings +#: of 2026-10-23 and 2026-10-24, microcosm#1278; Vahid's review of #1383, item +#: 9). A division's ratio is the spend the chain drew for it per frame +#: household over the donor's mean of the same spend per donor household: a +#: recomposed total's remainder against the donor's total less the same parts, +#: since its levelled energy, road fuel and priced fares keep their published +#: levels and are no over-draw, and any other division's whole draw. A +#: division above the divisions' shared ratio, measured once before any +#: levelling, comes down to it; no other moves. Measured again after each +#: cut, the shared ratio would fall until every division sat at the lowest +#: one's, close to levelling to the donor totals (María's ruling of +#: 2026-10-24). Only the chain's own draws move. +UK_LCFS_LEVEL_DIVISION_EXCESS = "excess_over_shared_ratio" +UK_LCFS_LEVEL_DIVISION_BASIS = "drawn_spend_over_donor_spend_per_household" #: The chain draws a recomposition subtracts, kept before any step re-levels them. UK_LCFS_RECOMPOSED_DRAWN_COLUMNS = tuple( dict.fromkeys( @@ -646,11 +694,17 @@ def __call__(self, frame: Frame) -> Frame: weights=weights, donor_support=donor_realized_ranges(donor), uprating_factors=uprating_factors, + donor_division_means=lcfs_donor_drawn_means(donor), ) energy_split = donor.attrs.get(UK_LCFS_ENERGY_SPLIT_RECEIPT) if recomposed_totals_receipt is not None and isinstance(energy_split, Mapping): - recomposed_totals_receipt["uncarried"] = uncarried_beside_donor( - recomposed_totals_receipt["uncarried"], energy_split + recomposed_totals_receipt["published_fuels"] = published_fuels_beside_draws( + recomposed_totals_receipt["published_fuels"], + energy_split, + { + column: float(np.dot(weights, household_draws[column].to_numpy())) + for column in UK_LCFS_FUEL_COLUMNS + }, ) uprating = uprating_operation(self.stage) capture = ( @@ -1814,21 +1868,33 @@ def check_recomposed_parents(parameters: Mapping[str, Any]) -> None: f"{RECOMPOSE_FROM_REMAINDER_KIND} must declare maximum_total: " f"{UK_LCFS_RECOMPOSED_MAXIMUM_TOTAL}." ) + levelling = parameters.get("level_division_excess") + if levelling is not None and dict(levelling) != { + "rule": UK_LCFS_LEVEL_DIVISION_EXCESS, + "basis": UK_LCFS_LEVEL_DIVISION_BASIS, + "divisions": list(UK_LCFS_COICOP_DIVISION_COLUMNS), + }: + raise ValueError( + f"{RECOMPOSE_FROM_REMAINDER_KIND} declares level_division_excess " + f"{levelling!r}, not the rule the stage applies." + ) -def uncarried_spend(parameters: Mapping[str, Any]) -> dict[str, Any]: - """The published spend inside a recomposed total that no column carries. +def published_fuel_spend(parameters: Mapping[str, Any]) -> dict[str, Any]: + """The published spend on the heating fuels the stage draws. ONS Consumer Trends classes read from the vendored rows the declaration - names: the liquid and solid fuels of COICOP 04.5, which have no column of - their own and stay inside the housing remainder (the chain's draw less the - diary's electricity and gas; microcosm#1164), and the receipt records their - published spend. + names: the liquid and solid fuels of COICOP 04.5, each beside the column + that carries it (``UK_LCFS_FUEL_PARTS``). Report-only: the stage draws the + two from the donor without levelling them, and the receipt records how + much of the published spend the donor and the frame reach. """ - spec = parameters.get("uncarried") + spec = parameters.get("published_fuels") if not isinstance(spec, Mapping): - raise ValueError(f"{RECOMPOSE_FROM_REMAINDER_KIND} must declare uncarried.") + raise ValueError( + f"{RECOMPOSE_FROM_REMAINDER_KIND} must declare published_fuels." + ) resource = str(spec.get("resource") or "") if resource not in UK_LCFS_VENDORED_RESOURCES: raise ValueError(f"{resource!r} is not a vendored lcfs_consumption resource.") @@ -1836,6 +1902,11 @@ def uncarried_spend(parameters: Mapping[str, Any]) -> dict[str, Any]: classes = [] for entry in spec.get("classes", ()): coicop, concept = str(entry["coicop"]), str(entry["concept"]) + column = str(entry["column"]) + if column not in UK_LCFS_FUEL_COLUMNS: + raise ValueError( + f"{column!r} is not a heating-fuel column the stage draws." + ) rows = vendored_rows( resource, concept=concept, @@ -1853,12 +1924,16 @@ def uncarried_spend(parameters: Mapping[str, Any]) -> dict[str, Any]: { "coicop": coicop, "concept": concept, + "column": column, "source_record_id": str(rows[0].get("source_record_id", "")), "value": float(rows[0]["value"]), } ) - if not classes: - raise ValueError(f"{RECOMPOSE_FROM_REMAINDER_KIND} declares no classes.") + if sorted(entry["column"] for entry in classes) != sorted(UK_LCFS_FUEL_COLUMNS): + raise ValueError( + f"{RECOMPOSE_FROM_REMAINDER_KIND} published_fuels must name " + f"{sorted(UK_LCFS_FUEL_COLUMNS)} once each." + ) return { "resource": resource, "period_value": period_value, @@ -1867,26 +1942,48 @@ def uncarried_spend(parameters: Mapping[str, Any]) -> dict[str, Any]: } -def uncarried_beside_donor( - uncarried: Mapping[str, Any], energy_split: Mapping[str, Any] +def published_fuels_beside_draws( + published: Mapping[str, Any], + energy_split: Mapping[str, Any], + frame_totals: Mapping[str, float], ) -> dict[str, Any]: - """The published liquid and solid fuels beside the donor's own other fuels. - - Report-only (microcosm#1207's liquid and solid fuels item): the donor's - other fuels, the diary codes the energy split leaves in the housing total - (``UK_LCFS_OTHER_FUEL_PARTS``), are its weighted annual diary total at - diary prices, before the donor is carried to the base year, so the ratio - reads how much of ONS 04.5.3 and 04.5.4 the survey captures, not a level - the stage sets. + """The published heating fuels beside the donor's and the frame's. + + Report-only: the donor's figure is its weighted annual diary total at + diary prices, before the donor is carried to the base year, so it reads + how much of ONS 04.5.3 and 04.5.4 the survey captures; the frame's is the + stage's draws at the stage's weights, at calendar-2024 prices. ONS's + 04.5.3 leaves out the bottled gas the liquid column holds, so the liquid + fuels' donor figure is also given without it (``UK_LCFS_FUEL_PARTS``). """ - donor_other = float(energy_split["other_fuels"]) - published = float(uncarried["total"]) - return { - **uncarried, - "donor_other_fuels_at_diary_prices": donor_other, - "donor_over_published": donor_other / published if published > 0 else None, - } + classes = [] + for entry in published["classes"]: + value = float(entry["value"]) + donor = float(energy_split[entry["column"]]) + frame = float(frame_totals[entry["column"]]) + row = { + **entry, + "donor_at_diary_prices": donor, + "donor_over_published": donor / value if value > 0 else None, + "frame": frame, + "frame_over_published": frame / value if value > 0 else None, + } + if entry["column"] == "liquid_fuel_consumption" and "bottled_gas" in ( + energy_split + ): + bottled = float(energy_split["bottled_gas"]) + row["donor_bottled_gas_at_diary_prices"] = bottled + row["donor_without_bottled_gas_over_published"] = ( + (donor - bottled) / value if value > 0 else None + ) + row["concept_note"] = ( + "COICOP puts liquefied hydrocarbons under 04.5.2 (gas), so ONS's " + "04.5.3 leaves out the bottled gas this column holds (María's " + "ruling of 2026-10-22)." + ) + classes.append(row) + return {**published, "classes": classes} def recompose_parent_totals( @@ -1897,6 +1994,7 @@ def recompose_parent_totals( weights: Sequence[float], donor_support: Mapping[str, tuple[float, float]], uprating_factors: Mapping[str, float] | None = None, + donor_division_means: Mapping[str, float] | None = None, ) -> tuple[pd.DataFrame, dict[str, Any]]: """Write each recomposed total around the levelled parts the stage set. @@ -1913,6 +2011,13 @@ def recompose_parent_totals( (``donor_support``, the declared ``maximum_total``; microcosm#1164), never below its parts: what it gives up comes out of the remainder, and the receipt counts the rows held and the weighted mass taken. + + Where the declaration levels the divisions' relative over-draw + (``level_division_excess``), each division above the shared ratio of the + spend the chain drew is brought down to it before the hold + (:func:`division_excess_factors`; ``donor_division_means`` is then the + donor's drawn spend, :func:`lcfs_donor_drawn_means`): a recomposed total + by its remainder alone, any other division by its draw. """ check_recomposed_parents(parameters) @@ -1920,14 +2025,50 @@ def recompose_parent_totals( factors = dict(uprating_factors or {}) result = household_draws.copy() parents: dict[str, Any] = {} + split: dict[str, tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]] = {} for parent, (subtracted, components) in UK_LCFS_RECOMPOSED_PARENTS.items(): - if parent not in donor_support: - raise ValueError(f"{parent}: no donor support to hold the total to.") - maximum = float(donor_support[parent][1]) drawn_total = result[parent].to_numpy(dtype=float) drawn_parts = sum(drawn[column].to_numpy(dtype=float) for column in subtracted) rest = np.maximum(drawn_total - drawn_parts, 0.0) parts = sum(result[column].to_numpy(dtype=float) for column in components) + split[parent] = (drawn_total, drawn_parts, rest, parts) + levelling = None + level_factors: dict[str, float] = {} + if parameters.get("level_division_excess") is not None: + if donor_division_means is None: + raise ValueError( + "Levelling the divisions' excess needs the donor's division means." + ) + # The spend the chain drew: a recomposed total's remainder, any other + # division's whole draw. + frame_drawn = { + division: float( + np.dot( + weight, + split[division][2] + if division in split + else result[division].to_numpy(dtype=float), + ) + ) + for division in UK_LCFS_COICOP_DIVISION_COLUMNS + } + levelling = division_excess_factors( + frame_drawn, donor_division_means, households=float(weight.sum()) + ) + level_factors = { + division: entry["factor"] + for division, entry in levelling["divisions"].items() + } + for division, factor in level_factors.items(): + if division not in split and factor != 1.0: + result[division] = result[division].to_numpy(dtype=float) * factor + for parent, (subtracted, components) in UK_LCFS_RECOMPOSED_PARENTS.items(): + if parent not in donor_support: + raise ValueError(f"{parent}: no donor support to hold the total to.") + maximum = float(donor_support[parent][1]) + drawn_total, drawn_parts, rest, parts = split[parent] + level_factor = float(level_factors.get(parent, 1.0)) + rest = rest * level_factor unheld = rest + parts total = np.maximum(np.minimum(unheld, maximum), parts) result[parent] = total @@ -1952,6 +2093,7 @@ def recompose_parent_totals( }, "drawn_subtracts": list(subtracted), "components": list(components), + "levelling_factor": level_factor, "weighted_drawn_total": float(np.dot(weight, drawn_total)), "weighted_drawn_subtracts": float(np.dot(weight, drawn_parts)), "rows_floored": int((drawn_parts > drawn_total).sum()), @@ -1970,11 +2112,71 @@ def recompose_parent_totals( receipt = { "operation": RECOMPOSE_FROM_REMAINDER_KIND, "parents": parents, - "uncarried": uncarried_spend(parameters), + "published_fuels": published_fuel_spend(parameters), + **({} if levelling is None else {"division_levelling": levelling}), } return result, receipt +def division_excess_factors( + frame_drawn: Mapping[str, float], + donor_drawn_means: Mapping[str, float], + *, + households: float, +) -> dict[str, Any]: + """Each division's factor bringing its relative over-draw to the shared ratio. + + ``frame_drawn`` is each division's weighted frame spend the chain drew (a + recomposed total's remainder, any other division's whole draw), and + ``donor_drawn_means`` the donor's mean of the same per household + (:func:`lcfs_donor_drawn_means`). A division's ratio is the one over the + other; the shared ratio is the divisions' together, measured once. A + division above it comes down to it, and every other keeps its draw + (``UK_LCFS_LEVEL_DIVISION_EXCESS``). + """ + + expected = { + division: households * float(donor_drawn_means[division]) + for division in UK_LCFS_COICOP_DIVISION_COLUMNS + } + ratios = { + division: ( + float(frame_drawn[division]) / expected[division] + if expected[division] > 0 + else None + ) + for division in UK_LCFS_COICOP_DIVISION_COLUMNS + } + total_expected = sum(expected.values()) + if not total_expected > 0: + raise ValueError("The donor's divisions hold no spend to level against.") + shared = sum(float(frame_drawn[division]) for division in expected) / ( + total_expected + ) + above = { + division + for division, ratio in ratios.items() + if ratio is not None and ratio > shared + } + divisions = { + division: { + "ratio": ratios[division], + "factor": ( + shared * expected[division] / float(frame_drawn[division]) + if division in above + else 1.0 + ), + } + for division in UK_LCFS_COICOP_DIVISION_COLUMNS + } + return { + "rule": UK_LCFS_LEVEL_DIVISION_EXCESS, + "basis": UK_LCFS_LEVEL_DIVISION_BASIS, + "shared_ratio": shared, + "divisions": divisions, + } + + def lcfs_recompose_from_remainder( stage: SourceStageSpec, household_draws: pd.DataFrame, @@ -1983,6 +2185,7 @@ def lcfs_recompose_from_remainder( weights: Sequence[float], donor_support: Mapping[str, tuple[float, float]], uprating_factors: Mapping[str, float] | None = None, + donor_division_means: Mapping[str, float] | None = None, ) -> tuple[pd.DataFrame, dict[str, Any] | None]: """Apply the declared ``recompose_from_remainder`` step (none if undeclared).""" @@ -1996,9 +2199,35 @@ def lcfs_recompose_from_remainder( weights=weights, donor_support=donor_support, uprating_factors=uprating_factors, + donor_division_means=donor_division_means, ) +def lcfs_donor_drawn_means(donor: pd.DataFrame) -> dict[str, float]: + """Each division's drawn spend per donor household, at the donor's weights. + + A recomposed total's is the division less the parts the stage levels, + floored at zero per household as the frame's remainder is; any other + division's is the division. The donor is the one the chain drew from. + """ + + weight = _numeric(donor["household_weight"]).to_numpy(dtype=float) + mass = float(weight.sum()) + if not mass > 0: + raise ValueError("The LCFS donor carries no weight.") + means: dict[str, float] = {} + for division in UK_LCFS_COICOP_DIVISION_COLUMNS: + spend = _numeric(donor[division]).to_numpy(dtype=float) + if division in UK_LCFS_RECOMPOSED_PARENTS: + subtracted, _ = UK_LCFS_RECOMPOSED_PARENTS[division] + parts = sum( + _numeric(donor[column]).to_numpy(dtype=float) for column in subtracted + ) + spend = np.maximum(spend - parts, 0.0) + means[division] = float(np.dot(weight, spend)) / mass + return means + + @dataclass(frozen=True) class LCFSEnergyPricing: """The declared prices, NEED margins, gas connection and level, with receipts.""" @@ -2702,6 +2931,7 @@ def clean_lcfs_consumption_table( "household_gross_income", "electricity_consumption", "gas_consumption", + *UK_LCFS_FUEL_COLUMNS, ] for column in annualize: household[column] = _numeric(household[column]) * WEEKS_IN_YEAR @@ -2809,6 +3039,15 @@ def over(value: float) -> float | None: "electricity": electricity, "gas": gas, "other_fuels": other, + **{ + column: total(_numeric(household[column])) + for column in UK_LCFS_FUEL_COLUMNS + }, + **( + {"bottled_gas": total(_numeric(household[UK_LCFS_BOTTLED_GAS_COLUMN]))} + if UK_LCFS_BOTTLED_GAS_COLUMN in household + else {} + ), "fuel_light_and_power": fuel_light_power, "parts_over_fuel_light_and_power": over(electricity + gas + other), "clipping_over_fuel_light_and_power": over(total(parts - unclipped)), @@ -3020,6 +3259,11 @@ def fuel(account: tuple[str, str, str], parts: tuple[str, ...]) -> pd.Series: result[UK_LCFS_OTHER_FUELS_COLUMN] = sum( part(code) for code in UK_LCFS_OTHER_FUEL_PARTS ) + for column, codes in UK_LCFS_FUEL_PARTS.items(): + result[column] = sum(part(code) for code in codes) + result[UK_LCFS_BOTTLED_GAS_COLUMN] = sum( + part(code) for code in UK_LCFS_BOTTLED_GAS_PARTS + ) result.attrs[UK_LCFS_ACCOUNT_IDENTITY_RECEIPT] = { fuel_name: None if share_holding is None else floored_share(share_holding) for fuel_name, share_holding in shares.items() diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/legacy_closure_take_up.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/legacy_closure_take_up.py index 6d004458ea..499448bebb 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/legacy_closure_take_up.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/legacy_closure_take_up.py @@ -10,9 +10,13 @@ This stage draws the flag at DWP's Move to Universal Credit claim rates, as uk-data#534 does (a draft, at ``c67077a66``): -* a benefit unit with a member reporting Universal Credit, a unit already - drawn to claim it, and a unit reporting none of the six legacy benefits are - true, the engine's default; +* a benefit unit whose claimant or partner reports Universal Credit, a unit + already drawn to claim it, and a unit whose claimant and partner report + none of the six legacy benefits are true, the engine's default. Only the + claimant's and partner's reports count: since policyengine-uk 2.146.0 + (pe-uk#2549) the closure reaches an award through its owners, so an award + another member claims in their own right closes on its own and does not + move the family; * each other unit is drawn at ``(r - p) / (1 - p)``, clipped to [0, 1]. ``r`` is DWP's claimed / (claimed + did not claim) for the unit's combination of legacy benefits, or the all-households rate where DWP reports none; ``p`` is @@ -172,13 +176,22 @@ def load_move_to_uc_claim_rates() -> dict[str, float]: return move_to_uc_claim_rates_from_rows(vendored_rows(LEGACY_CLOSURE_RESOURCE)) +#: Whose reports place a benefit unit in the draw: its claimant and partner, +#: the members whose awards the engine's closure reaches (pe-uk#2549). +LEGACY_CLOSURE_REPORTERS = "is_claimant_or_partner" + + def _reported_by_benunit( person: pd.DataFrame, benunit: pd.DataFrame, column: str ) -> np.ndarray: - if column not in person.columns: - raise ValueError(f"The legacy closure draw needs person {column!r}.") + """Whether each unit's claimant or partner reports ``column`` above 0.""" + + for needed in (column, LEGACY_CLOSURE_REPORTERS): + if needed not in person.columns: + raise ValueError(f"The legacy closure draw needs person {needed!r}.") values = pd.to_numeric(person[column], errors="raise").to_numpy(dtype=float) - reporters = person.loc[values > 0, "person_benunit_id"].unique() + owners = person[LEGACY_CLOSURE_REPORTERS].astype(bool).to_numpy() + reporters = person.loc[(values > 0) & owners, "person_benunit_id"].unique() return benunit["benunit_id"].isin(reporters).to_numpy() @@ -405,9 +418,14 @@ def legacy_closure_operation_parameters() -> tuple[tuple[str, dict[str, object]] "output": LEGACY_CLOSURE_OUTPUT, "port_of": "uk-data#534 at c67077a66", "legacy_benefits": [name for name, _ in LEGACY_BENEFITS], + "reporters": ( + "the claimant and partner (is_claimant_or_partner); an award " + "another member claims in their own right closes on its own " + "(policyengine-uk 2.146.0, pe-uk#2549)" + ), "true_without_draw": ( - "a member reports universal_credit_reported, would_claim_uc is " - "true, or no member reports a legacy benefit" + "the claimant or partner reports universal_credit_reported, " + "would_claim_uc is true, or neither reports a legacy benefit" ), "rate": ( "claimed / (claimed + did not claim) for the combination, the " diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/measure_simulation.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/measure_simulation.py index 11f01315ff..5858a4cc90 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/measure_simulation.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/measure_simulation.py @@ -1701,18 +1701,20 @@ def load_uk_calibration_measure_exclusions( else: text = Path(path).read_text(encoding="utf-8") payload = json.loads(text) - # Schema 3 adds the signed sparse-band support floor (microcosm#1095 U3), - # which ``support_floor.load_uk_support_floor_declaration`` reads. + # Schema 4 carries the signed zero-support floor (microcosm#1095 U3) in + # scopes of one unit each, which + # ``support_floor.load_uk_support_floor_declaration`` reads; schema 3's + # single-scope floor is retired with it. schema_version = payload.get("schema_version") allowed_top = {"schema_version", "exclusions"} - if schema_version == 3: + if schema_version == 4: allowed_top.add("support_floor") unknown = sorted(set(payload) - allowed_top) if unknown: raise ValueError(f"unknown top-level exclusion key(s): {unknown}") - if schema_version not in (2, 3): + if schema_version not in (2, 4): raise ValueError( - "UK calibration measure exclusions schema_version must be 2 or 3." + "UK calibration measure exclusions schema_version must be 2 or 4." ) exclusions = payload.get("exclusions") if not isinstance(exclusions, list): diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/national_frame.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/national_frame.py index 7e2d34a1f4..6a47e90315 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/national_frame.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/national_frame.py @@ -29,6 +29,7 @@ from collections.abc import Callable, Mapping, Sequence from dataclasses import dataclass from pathlib import Path +from types import MappingProxyType from typing import Any import numpy as np @@ -48,6 +49,9 @@ __all__ = [ "UK_BUILD_IDENTIFIER_COLUMNS", "UK_ENGINE_IDENTIFIER_MAX", + "UK_ENERGY_PRICE_BASIS", + "UK_ENERGY_PRICE_BASIS_ATTR", + "UK_ENERGY_PRICE_BASIS_COLUMNS", "UK_EXPORTED_WEIGHT_COLUMNS", "UK_HOUSEHOLD_WEIGHT_KIND_ATTR", "UK_MASS_LOG_ATTR", @@ -78,6 +82,27 @@ UK_NATIONAL_H5_TABLES = ("person", "benunit", "household", "time_period") UK_HOUSEHOLD_WEIGHT_KIND_ATTR = "populace_household_weight_kind" UK_MASS_LOG_ATTR = "populace_mass_log_json" +#: The root attribute in which policyengine-uk reads the price period of a +#: dataset's stored energy spending (policyengine-uk 2.148.1, +#: PolicyEngine/policyengine-uk#2571): a JSON object of ``period_type`` and +#: ``period_value``. The engine projects declared energy spending from that +#: period by its consumer price index; spending without a declaration stays +#: at its stored prices in every later year (PolicyEngine/policyengine-uk#2526). +UK_ENERGY_PRICE_BASIS_ATTR = "energy_price_basis" +#: The household spending the declaration describes: the three columns +#: policyengine-uk projects only from a declared period. +UK_ENERGY_PRICE_BASIS_COLUMNS = ( + "domestic_energy_consumption", + "electricity_consumption", + "gas_consumption", +) +#: Their price period. ``lcfs_consumption``, the one stage that writes them, +#: sets every household spend column at calendar-2024 prices, and the +#: stage-time gate ``uk_stage_lcfs_consumption_basis`` holds each step that +#: sets a level to that year (microcosm#1113). +UK_ENERGY_PRICE_BASIS: Mapping[str, object] = MappingProxyType( + {"period_type": "calendar_year", "period_value": 2024} +) # The persisted weight columns of the materialized export contract above: # real columns on the tables, but plumbing rather than input mass. Consumers @@ -181,6 +206,25 @@ def _write_weight_metadata( ) +def _write_energy_price_basis(path: Path, household: pd.DataFrame) -> None: + """Declare the energy spending's price period in an H5 that stores it. + + The JSON is written as policyengine-uk writes its own declaration, keys + sorted, so the engine reads the basis the build priced the columns at. + """ + + if not any(column in household.columns for column in UK_ENERGY_PRICE_BASIS_COLUMNS): + return + try: + import h5py + except ImportError as exc: # pragma: no cover - UK H5 runtime dependency + raise RuntimeError("h5py is required to write UK national metadata.") from exc + with h5py.File(path, mode="r+") as file: + file.attrs[UK_ENERGY_PRICE_BASIS_ATTR] = json.dumps( + dict(UK_ENERGY_PRICE_BASIS), sort_keys=True + ) + + def _mass_log_from_stored(value: object) -> tuple[MassChangeRecord, ...]: if isinstance(value, bytes): value = value.decode("utf-8") @@ -455,6 +499,7 @@ def _write_uk_single_year_tables( _write_weight_metadata( temporary_path, weight_kind=weight_kind, mass_log=mass_log ) + _write_energy_price_basis(temporary_path, household) temporary_path.replace(path) finally: temporary_path.unlink(missing_ok=True) @@ -499,6 +544,9 @@ def _write_uk_single_year_tables( # that keeps loss-making landlords in the CGT residential signal; it is # no engine input. "reports_rent_from_other_property", + # The FRS bonus carrier (frs_spine.FRS_BONUS_CARRIER_COLUMN) the bonus + # sacrifice conversion reads (microcosm#1340); it is no engine input. + "frs_bonus_amount", ), # The value the spine's regional home values replaced (microcosm#1112): # the dense node ranks on it, and it is no engine input. diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/orrery_contract.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/orrery_contract.py index 62f0895e84..9c0283a54c 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/orrery_contract.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/orrery_contract.py @@ -55,16 +55,31 @@ def _withhold_summary_rows(data: dict, result, ordered) -> None: from .diagnostics import _restate_totals_over_published_rows, uk_withheld_rows rows = data["tables"]["targets"] + metadata_by_row = { + target.row_name: metadata + for target, metadata in zip( + ordered.problem.targets, ordered.target_metadata, strict=True + ) + } + # The withholding ties a local family to its parents by contract target + # (Vahid's review of #1383, item 1). withheld = uk_withheld_rows( ordered.problem, result.weights, result.frame, - rows, + [ + { + **row, + "metadata": { + key: metadata_by_row.get(row["name"], {}).get(key) + for key in ("contract_target_id", "geography_id") + }, + } + for row in rows + ], { - target.row_name: metadata.get("geography_level", "") - for target, metadata in zip( - ordered.problem.targets, ordered.target_metadata, strict=True - ) + name: metadata.get("geography_level", "") + for name, metadata in metadata_by_row.items() }, ) if not withheld: diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/private_rent_localisation.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/private_rent_localisation.py index 59bb02015c..c6f19722db 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/private_rent_localisation.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/private_rent_localisation.py @@ -62,8 +62,11 @@ #: private-rented households by region, BRMA and bedrooms (microcosm#1087). QUANTILES_SOURCE = "uk_brma_rent_quantiles" COUNTS_SOURCE = "uk_brma_private_renters" -#: The spine's annualisation of weekly amounts (``frs_spine.WEEKS_IN_YEAR``). -WEEKS_IN_YEAR = 365.25 / 7 +#: The spine's annualisation of weekly amounts (``frs_spine.WEEKS_IN_YEAR``), +#: 52 weeks since María's ruling of 2026-10-23: the engine reads a rent back to +#: a weekly one at 52. Kept here so the module imports nothing of the build; +#: a test holds the two equal. +WEEKS_IN_YEAR = 52 #: A region's scale outside this band means a resource or the frame is wrong. SCALE_BAND = (0.25, 4.0) #: Below full scale, a region whose sample holds fewer FRS renters than this diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/receipt_counts.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/receipt_counts.py index a1ce124560..a868c5f7e8 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/receipt_counts.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/receipt_counts.py @@ -16,7 +16,9 @@ (checked 2026-10-14). The SPI 2022-23 Public Use Tape (SN 9422, checked 2026-10-16) adds two: no attempt may be made to attribute a record to a named individual, and material that includes analyses of the tape goes to HMRC at -least ten working days before it is distributed or published. +least ten working days before it is distributed or published. The build +marks the outputs that rest on the tape +(:mod:`microcosm.build.uk_runtime.spi_dependency`). """ from __future__ import annotations diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/salary_sacrifice.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/salary_sacrifice.py index 93dfb7a49a..b6e843d8c5 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/salary_sacrifice.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/salary_sacrifice.py @@ -36,6 +36,12 @@ uk_time_period, validate_uk_national_frame, ) +from microcosm.build.uk_runtime.receipt_counts import ( + distinct_count, + small_cell_share, + source_household_ids, + support_band, +) from microcosm.build.uk_runtime.spi_support import support_channel_column from microcosm.frame import Frame, MassChangeRecord @@ -95,6 +101,95 @@ "records' pay; household rows and typed household weights pass through and " "total household mass is conserved." ) +#: policyengine-uk 2.149.0's input for employer pension contributions made in +#: place of a bonus (pe-uk#2572 section 1). The GBP 2,000 NICs cap from April +#: 2029 and the annual allowance tests read it summed with salary sacrifice, so +#: the HMRC salary-sacrifice rows, which ASHE builds and which cover no bonus +#: sacrifice, keep binding the salary route alone (microcosm#1340). +BONUS_SACRIFICE_OUTPUT = "pension_contributions_via_bonus_sacrifice" +#: Each adult's gross FRS bonuses over the last 12 months +#: (frs_spine.FRS_BONUS_CARRIER_COLUMN). +BONUS_SACRIFICE_SOURCE = "frs_bonus_amount" +BONUS_SACRIFICE_ANCHOR_RESOURCE = "bonus_sacrifice_anchor.json" +BONUS_SACRIFICE_FACTS_RESOURCE = "obr_salary_sacrifice_costing_facts.json" +#: The OBR costing's tax-base record sets the vendored resource holds; the +#: anchor reads 2027-28's bonus-sacrifice line, the base's first year. +BONUS_SACRIFICE_RECORD_SETS = tuple( + f"obr.salary_sacrifice_costing_2026_02.tax_base.fy{year}" + for year in (2027, 2028, 2029, 2030) +) +BONUS_SACRIFICE_CONVERSION_SALT = "bonus_sacrifice_conversion" +#: The spine's year, and the OBR base's first year (2027-28), which the +#: engine's projection of the converted bonuses must meet: the feed's OBR rows +#: start there, after the calibration year, so the stage anchors on them. +BONUS_SACRIFICE_DATA_YEAR = 2024 +BONUS_SACRIFICE_BASE_YEAR = 2027 +#: The weekly upper earnings limit for Class 1 employee NICs, read where the +#: engine reads a year's parameters (30 April) in the data year. +BONUS_SACRIFICE_UEL_PARAMETER = ( + "gov.hmrc.national_insurance.class_1.thresholds.upper_earnings_limit" +) +BONUS_SACRIFICE_UEL_INSTANT = f"{BONUS_SACRIFICE_DATA_YEAR}-04-30" +#: The annual threshold the OBR's bonus-sacrifice base lies above (OBR, +#: supplementary forecast information on salary sacrifice, 5 February 2026, +#: Table 1.1). +BONUS_SACRIFICE_THRESHOLD = 2_000.0 +#: Whom the conversion may convert. The OBR's costing applies employee NICs of +#: 2% to bonus sacrifice, the rate above the upper earnings limit, so a +#: candidate's pay reaches that limit and the sacrificed bonus sits above it. +#: The FRS records no bonus sacrifice (HMRC builds the base from scheme +#: returns), so a candidate is an adult with a bonus: an FRS adult's own, or +#: the share of pay an SPI-channel adult draws (``BONUS_SACRIFICE_SPI_DRAW``). +BONUS_SACRIFICE_CANDIDATES = ( + "a bonus (frs_bonus_amount, or an SPI-channel adult's drawn bonus) > 0 and " + "employment_income at least the anchor's annual upper earnings limit, after " + "the salary conversion" +) +#: A bonus sacrificed is never received, so the FRS records it in neither pay +#: nor its bonus amounts, and the stage adds it beside pay (María's ruling of +#: 2026-10-24 on Vahid's review of #1383, item 5). A received bonus marks a +#: bonus-paying job and its size; the salary route differs, since the FRS's +#: gross pay holds the contribution it converts. +BONUS_SACRIFICE_MOVE = ( + "the bonus, at most move_pay_share_cap of employment_income, to " + "pension_contributions_via_bonus_sacrifice; employment_income unchanged, " + "since a sacrificed bonus is never received" +) +#: An SPI-channel adult's pay is the tape's, and the FRS bonus it carries is +#: its twin's, so the two do not belong together (Vahid's review of #1383, +#: item 6). It draws a bonus share of pay from a base-FRS adult paid alike +#: instead (María's ruling of 2026-10-24); FRS rows keep their own bonus. +BONUS_SACRIFICE_SPI_DRAW = ( + "an SPI-channel adult with pay draws the bonus share of pay " + "(frs_bonus_amount over employment_income) of a base-FRS adult with pay in " + "the same pay cell, by person weight, keyed on person_id; the cells are the " + "base-FRS paid adults' weighted pay quantiles at spi_cell_quantiles, and a " + "cell with fewer than spi_min_donor_sources donor source households joins " + "the one below" +) +BONUS_SACRIFICE_SPI_CELL_QUANTILES = ( + 0.1, + 0.2, + 0.3, + 0.4, + 0.5, + 0.6, + 0.7, + 0.8, + 0.9, + 0.95, + 0.99, +) +BONUS_SACRIFICE_SPI_MIN_DONOR_SOURCES = 20 +BONUS_SACRIFICE_SPI_DRAW_SALT = "bonus_sacrifice_spi_bonus_share" +BONUS_SACRIFICE_SOLVE = ( + "the candidates in the order of their identity-keyed uniforms, taken while " + "the projected base is nearer the anchor's OBR base: the anchor's weight " + "growth times the sum of person weight times " + "(max(0, g (S + B) - threshold) - max(0, g S - threshold)), with g the " + "anchor's earnings growth, S the salary sacrifice and B the bonus " + "sacrificed; every candidate where even all fall short" +) def load_salary_sacrifice_anchor() -> Mapping[str, Any]: @@ -107,6 +202,213 @@ def load_salary_sacrifice_anchor() -> Mapping[str, Any]: ) +def load_bonus_sacrifice_anchor() -> Mapping[str, Any]: + """Load the committed bonus-sacrifice anchor (microcosm#1340). + + ``tools/pin_uk_bonus_sacrifice_anchor.py`` writes it from the OBR row the + build vendors and the locked policyengine-uk's own projection factors. + """ + + return json.loads( + files("microcosm.build.uk") + .joinpath(BONUS_SACRIFICE_ANCHOR_RESOURCE) + .read_text(encoding="utf-8") + ) + + +@dataclass(frozen=True) +class UKBonusSacrificeConversion: + """Who sacrifices a bonus, how much, and the base it projects to.""" + + sacrificed: np.ndarray + candidates: np.ndarray + participants: np.ndarray + pay_share_capped: np.ndarray + projected_base: float + target_base: float + all_candidates_fall_short: bool + + +def bonus_sacrifice_excess( + salary_sacrifice: np.ndarray, + bonus_sacrificed: np.ndarray, + *, + earnings_growth: float, + threshold: float = BONUS_SACRIFICE_THRESHOLD, +) -> np.ndarray: + """Each person's bonus sacrifice above the threshold in the anchor's year. + + The threshold applies to the two routes summed, as policyengine-uk reads + them, so the bonus route's part is the excess of the sum over the excess + of the salary sacrifice alone. + """ + + salary = np.asarray(salary_sacrifice, dtype=float) * earnings_growth + bonus = np.asarray(bonus_sacrificed, dtype=float) * earnings_growth + return np.maximum(0.0, salary + bonus - threshold) - np.maximum( + 0.0, salary - threshold + ) + + +def convert_bonuses_to_bonus_sacrifice( + *, + bonus: np.ndarray, + employment_income: np.ndarray, + salary_sacrifice: np.ndarray, + weights: np.ndarray, + uniforms: np.ndarray, + anchor: Mapping[str, Any], +) -> UKBonusSacrificeConversion: + """Add the bonus sacrifice the OBR's base needs beside pay. + + A candidate sacrifices its bonus, at most half its pay, and its pay stays + as it is (``BONUS_SACRIFICE_MOVE``). Candidates are taken in the order of + their identity-keyed uniforms while the projected base comes nearer the + anchor's (``BONUS_SACRIFICE_SOLVE``): a person's place in the order is + their own, but where it stops depends on everyone's contributions. + """ + + bonus = np.maximum(np.asarray(bonus, dtype=float), 0.0) + pay = np.asarray(employment_income, dtype=float) + salary = np.asarray(salary_sacrifice, dtype=float) + weights = np.asarray(weights, dtype=float) + uniforms = np.asarray(uniforms, dtype=float) + limit = float(anchor["upper_earnings_limit"]["annual"]) + # Amounts grow with OBR average earnings and weights with ONS population + # to 2027-28, while the OBR grows its base with employment and earnings, + # and employment need not grow as the population does (Vahid's review of + # #1383, item 7). The base is met at stage weights; calibration does not + # bind it. + earnings_growth = float(anchor["earnings_growth"]["factor"]) + weight_growth = float(anchor["weight_growth"]["factor"]) + target = float(anchor["obr_base_above_threshold"]) + threshold = float(anchor["threshold"]) + candidates = (bonus > 0.0) & (pay >= limit) & (weights > 0.0) + amount = np.minimum(bonus, SALSAC_MOVE_PAY_SHARE_CAP * np.maximum(pay, 0.0)) + amount = np.where(candidates, np.maximum(amount, 0.0), 0.0) + pay_share_capped = candidates & (amount < bonus) + contribution = ( + weight_growth + * weights + * bonus_sacrifice_excess( + salary, amount, earnings_growth=earnings_growth, threshold=threshold + ) + ) + order = np.flatnonzero(candidates) + order = order[np.lexsort((order, uniforms[order]))] + cumulative = np.cumsum(contribution[order]) + # Take the prefix whose projected base is nearest the target: none, or the + # first k candidates in uniform order. + totals = np.concatenate(([0.0], cumulative)) + taken = int(np.argmin(np.abs(totals - target))) + participants = np.zeros(len(bonus), dtype=bool) + participants[order[:taken]] = True + sacrificed = np.where(participants, amount, 0.0) + return UKBonusSacrificeConversion( + sacrificed=sacrificed, + candidates=candidates, + participants=participants, + pay_share_capped=pay_share_capped & participants, + projected_base=float(totals[taken]), + target_base=target, + all_candidates_fall_short=bool(totals[-1] < target), + ) + + +@dataclass(frozen=True) +class UKSpiBonusDraw: + """The bonuses the conversion reads: FRS rows' own, SPI rows' drawn.""" + + bonus: np.ndarray + recipients: np.ndarray + cells: int + + +def draw_spi_bonuses( + *, + bonus: np.ndarray, + employment_income: np.ndarray, + weights: np.ndarray, + person_ids: np.ndarray, + source_ids: np.ndarray, + donors: np.ndarray, + spi: np.ndarray, +) -> UKSpiBonusDraw: + """Each SPI-channel adult's bonus, as a share of pay drawn from FRS adults. + + ``donors`` marks the base-FRS adults (no clone, no support copy) and + ``spi`` the SPI-channel adults. Each SPI adult with pay takes the bonus + share of pay of one donor with pay in its pay cell, drawn by person weight + on a uniform keyed on its own ``person_id`` (``BONUS_SACRIFICE_SPI_DRAW``); + an SPI adult without pay has no bonus. Every other row keeps its own. + """ + + bonus = np.maximum(np.asarray(bonus, dtype=float), 0.0) + pay = np.asarray(employment_income, dtype=float) + weights = np.asarray(weights, dtype=float) + spi = np.asarray(spi, dtype=bool) + paid_donors = np.asarray(donors, dtype=bool) & (pay > 0.0) & (weights > 0.0) + recipients = spi & (pay > 0.0) + drawn = np.where(spi, 0.0, bonus) + if not recipients.any(): + return UKSpiBonusDraw(bonus=drawn, recipients=recipients, cells=0) + if not paid_donors.any(): + raise ValueError("SPI-channel bonuses need base-FRS adults with pay to draw.") + donor_rows = np.flatnonzero(paid_donors) + order = donor_rows[np.argsort(pay[donor_rows], kind="stable")] + cumulative = np.cumsum(weights[order]) / weights[order].sum() + edges = np.unique( + [ + pay[order[min(np.searchsorted(cumulative, q), len(order) - 1)]] + for q in BONUS_SACRIFICE_SPI_CELL_QUANTILES + ] + ) + raw_cells = np.searchsorted(edges, pay, side="right") + # A cell with too few donor source households joins the one below, and the + # lowest joins the one above, so every cell draws from at least the floor. + sources = np.asarray(source_ids) + groups = [[cell] for cell in range(len(edges) + 1)] + + def donor_sources(group: list[int]) -> int: + return len(pd.unique(sources[paid_donors & np.isin(raw_cells, group)])) + + position = len(groups) - 1 + while len(groups) > 1 and position >= 0: + if donor_sources(groups[position]) >= BONUS_SACRIFICE_SPI_MIN_DONOR_SOURCES: + position -= 1 + elif position > 0: + groups[position - 1] += groups.pop(position) + position -= 1 + else: + lowest = groups.pop(0) + groups[0] = lowest + groups[0] + lookup = np.empty(len(edges) + 1, dtype=int) + for index, group in enumerate(groups): + lookup[group] = index + cells = lookup[raw_cells] + share = np.zeros(len(pay)) + share[paid_donors] = np.minimum(bonus[paid_donors] / pay[paid_donors], 1.0) + uniforms = stable_identity_uniforms( + np.asarray(person_ids), + seed=SALSAC_CONVERSION_SEED, + salt=BONUS_SACRIFICE_SPI_DRAW_SALT, + ) + ids = np.asarray(person_ids) + for cell in np.unique(cells[recipients]): + pool = np.flatnonzero(paid_donors & (cells == cell)) + if not len(pool): + raise ValueError("An SPI-channel bonus pay cell has no donor to draw.") + pool = pool[np.argsort(ids[pool], kind="stable")] + pool_cumulative = np.cumsum(weights[pool]) / weights[pool].sum() + takers = np.flatnonzero(recipients & (cells == cell)) + picks = np.minimum( + np.searchsorted(pool_cumulative, uniforms[takers], side="right"), + len(pool) - 1, + ) + drawn[takers] = share[pool[picks]] * pay[takers] + return UKSpiBonusDraw(bonus=drawn, recipients=recipients, cells=len(groups)) + + @dataclass(frozen=True) class UKSalarySacrificeResult: """Transformed frame and the full headcount executed-effect receipt.""" @@ -132,6 +434,8 @@ class UKSalarySacrificeResult: retained_employee_amount: float expected_converted_mass: float realization_deviation: float + #: The bonus conversion's receipt (microcosm#1340). + bonus_receipt: Mapping[str, object] | None = None def evidence(self) -> dict[str, object]: return { @@ -175,6 +479,11 @@ def evidence(self) -> dict[str, object]: "realization_deviation": self.realization_deviation, "pre_conversion_pay_column": SALSAC_PRE_CONVERSION_PAY_COLUMN, }, + **( + {} + if self.bonus_receipt is None + else {"bonus_sacrifice_receipt": dict(self.bonus_receipt)} + ), } @@ -184,12 +493,16 @@ class UKSalarySacrificeStageTransform: stage: SourceStageSpec anchor: Mapping[str, Any] | None = None + bonus_anchor: Mapping[str, Any] | None = None last_result: UKSalarySacrificeResult | None = field(default=None, init=False) def __call__(self, frame: Frame) -> Frame: resource = self.anchor or load_salary_sacrifice_anchor() - _assert_salary_sacrifice_stage_parameters(self.stage, anchor=resource) - result = impute_salary_sacrifice(frame) + bonus = self.bonus_anchor or load_bonus_sacrifice_anchor() + _assert_salary_sacrifice_stage_parameters( + self.stage, anchor=resource, bonus_anchor=bonus + ) + result = impute_salary_sacrifice(frame, bonus_anchor=bonus) object.__setattr__(self, "last_result", result) return result.frame @@ -197,6 +510,7 @@ def __call__(self, frame: Frame) -> Frame: def output_columns() -> tuple[str, ...]: return ( SALSAC_OUTPUT, + BONUS_SACRIFICE_OUTPUT, "employee_pension_contributions", "employment_income", SALSAC_PRE_CONVERSION_PAY_COLUMN, @@ -208,9 +522,12 @@ def checkpoint_metadata(self) -> dict[str, object]: return {"evidence": self.last_result.evidence()} -def impute_salary_sacrifice(frame: Frame) -> UKSalarySacrificeResult: - """Fit on the asked, paid base-FRS subset, limit every amount to pay, then - create additional SS support.""" +def impute_salary_sacrifice( + frame: Frame, *, bonus_anchor: Mapping[str, Any] | None = None +) -> UKSalarySacrificeResult: + """Fit on the asked, paid base-FRS subset, limit every amount to pay, + create additional SS support, then convert the bonuses the OBR's + bonus-sacrifice base needs (the packaged anchor unless one is given).""" validate_uk_national_frame(frame) person = frame.table("person").copy() @@ -372,6 +689,56 @@ def impute_salary_sacrifice(frame: Frame) -> UKSalarySacrificeResult: employment_income = employment_income.copy() employment_income[converted] = employment_income[converted] - moved[converted] employee[converted] = employee[converted] - moved[converted] + # Bonus sacrifice (microcosm#1340): the bonus sacrifice that OBR's 2027-28 + # base above the threshold needs, added beside pay, since a sacrificed + # bonus is never received (María's ruling of 2026-10-24). + if BONUS_SACRIFICE_SOURCE not in person.columns: + raise ValueError( + f"Salary-sacrifice person column missing: {BONUS_SACRIFICE_SOURCE!r}." + ) + bonus_source = pd.to_numeric( + person[BONUS_SACRIFICE_SOURCE], errors="coerce" + ).to_numpy(dtype=float) + if not np.isfinite(bonus_source).all() or (bonus_source < 0.0).any(): + raise ValueError("FRS bonus amounts must be finite and non-negative.") + bonus_resource = ( + load_bonus_sacrifice_anchor() if bonus_anchor is None else bonus_anchor + ) + if uk_time_period(frame) != str(bonus_resource["data_year"]): + raise ValueError( + "The bonus-sacrifice anchor projects from " + f"{bonus_resource['data_year']}, but the frame's period is " + f"{uk_time_period(frame)!r}." + ) + source_ids = person_households.map( + pd.Series( + source_household_ids(household, stage="The salary-sacrifice stage"), + index=household["household_id"].to_numpy(), + ) + ).to_numpy() + spi_draw = draw_spi_bonuses( + bonus=bonus_source, + employment_income=employment_income, + weights=person_weights, + person_ids=person["person_id"].to_numpy(), + source_ids=source_ids, + donors=( + channels.eq("frs") & ~clones.astype(bool) & ~support_copies.astype(bool) + ).to_numpy(), + spi=channels.ne("frs").to_numpy(), + ) + bonus = convert_bonuses_to_bonus_sacrifice( + bonus=spi_draw.bonus, + employment_income=employment_income, + salary_sacrifice=final_ss, + weights=person_weights, + uniforms=stable_identity_uniforms( + person["person_id"].to_numpy(), + seed=SALSAC_CONVERSION_SEED, + salt=BONUS_SACRIFICE_CONVERSION_SALT, + ), + anchor=bonus_resource, + ) if (final_ss > np.maximum(employment_income, 0.0)).any(): raise ValueError( "Salary-sacrifice amounts must not exceed the pay that remains." @@ -386,10 +753,45 @@ def impute_salary_sacrifice(frame: Frame) -> UKSalarySacrificeResult: raise ValueError( "Employee pension contributions must not exceed the pay that remains." ) + if ( + bonus.sacrificed + > SALSAC_MOVE_PAY_SHARE_CAP * np.maximum(employment_income, 0.0) + 1e-6 + ).any(): + raise ValueError("Bonus-sacrifice amounts must not exceed half the pay.") person[SALSAC_OUTPUT] = final_ss + person[BONUS_SACRIFICE_OUTPUT] = bonus.sacrificed person["employee_pension_contributions"] = employee person["employment_income"] = employment_income person[SALSAC_PRE_CONVERSION_PAY_COLUMN] = pre_conversion_pay + # Weighted aggregates only, banded on distinct source households; a figure + # one to nine of them carry is "<10" (UKDS disclosure control). + + def bonus_sources(mask: np.ndarray) -> int: + return distinct_count(source_ids, mask, person_weights) + + bonus_receipt = { + "anchor": BONUS_SACRIFICE_ANCHOR_RESOURCE, + "engine": dict(bonus_resource["engine"]), + "base_year": bonus_resource["base_year"], + "threshold": bonus_resource["threshold"], + "target_base": bonus.target_base, + "earnings_growth": float(bonus_resource["earnings_growth"]["factor"]), + "weight_growth": float(bonus_resource["weight_growth"]["factor"]), + "candidate_support": support_band(bonus_sources(bonus.candidates)), + "participant_support": support_band(bonus_sources(bonus.participants)), + "projected_base": small_cell_share( + bonus.projected_base, bonus_sources(bonus.participants) + ), + "all_candidates_fall_short": bonus.all_candidates_fall_short, + "pay_share_capped_support": support_band(bonus_sources(bonus.pay_share_capped)), + "pay": "unchanged: a sacrificed bonus is never received", + "spi_drawn_support": support_band(bonus_sources(spi_draw.recipients)), + "spi_drawn_participant_support": support_band( + bonus_sources(spi_draw.recipients & bonus.participants) + ), + "spi_cells": spi_draw.cells, + "weights": "household weights at the stage, before calibration, per person", + } post_headcount = float(person_weights[final_ss > 0.0].sum()) converted_mass = float(person_weights[converted].sum()) total = frame.weights_for("household").total @@ -436,6 +838,7 @@ def impute_salary_sacrifice(frame: Frame) -> UKSalarySacrificeResult: if rate * donor_pool_mass > 0.0 else 0.0 ), + bonus_receipt=bonus_receipt, ) @@ -445,61 +848,109 @@ def _qrf_class(): return import_module("microcosm.fit").QRF +def salary_sacrifice_operation_parameters() -> tuple[ + tuple[str, dict[str, object]], ... +]: + """The reviewed operations the manifest must carry verbatim.""" + + return ( + ( + "verify_vendored_fact_resource", + { + "artifact_role": "obr_salary_sacrifice_costing_facts", + "resource": BONUS_SACRIFICE_FACTS_RESOURCE, + "feed_pin": "chronicle_feed.json", + "record_sets": list(BONUS_SACRIFICE_RECORD_SETS), + "source_vintage": ( + "OBR supplementary forecast information on salary sacrifice, " + "5 February 2026" + ), + "mapped_build_period": 2024, + "period_mapping": "fiscal_year_2027_base_met_by_the_engine_projection", + "require_before_source_read": True, + "runtime_sha256_required": True, + "fail_on_mismatch": True, + }, + ), + ( + "fit_weighted_qrf", + { + "training_population": SALSAC_TRAINING_POPULATION, + "target_population": SALSAC_TARGET_POPULATION, + "predictors": list(SALSAC_PREDICTORS), + "targets": [SALSAC_OUTPUT], + "weights": "household_weight", + "weight_mapping": "household_to_person", + "seed": SALSAC_QRF_SEED, + "n_estimators": SALSAC_QRF_ESTIMATORS, + "clamp_minimum": 0, + "clamp_maximum": SALSAC_AMOUNT_LIMIT, + "preserve_asked_rows": True, + "cache": False, + }, + ), + ( + "convert_donors_to_target_stock", + { + "resource": "salary_sacrifice_anchor.json", + "target": int(SALSAC_STAGE_TARGET), + "donor_pool": ( + "employee_pension_contributions > 0 and " + "pension_contributions_via_salary_sacrifice == 0 and " + "employment_income > 0" + ), + "rate_cap": SALSAC_RATE_CAP, + "move_pay_share_cap": SALSAC_MOVE_PAY_SHARE_CAP, + "move": ( + "employee_pension_contributions, up to move_pay_share_cap " + "of employment_income, to " + "pension_contributions_via_salary_sacrifice; the rest " + "stays in the source; employment_income lowered by the " + "amount sacrificed; the converted record's pay before the " + "conversion kept on salary_sacrifice_pre_conversion_pay " + "(zero elsewhere)" + ), + "seed": SALSAC_CONVERSION_SEED, + "salt": SALSAC_CONVERSION_SALT, + "receipt": "weighted_headcount", + "reason": SALSAC_MASS_CHANGE_REASON, + }, + ), + ( + "convert_bonuses_to_bonus_sacrifice", + { + "resource": BONUS_SACRIFICE_ANCHOR_RESOURCE, + "facts": BONUS_SACRIFICE_FACTS_RESOURCE, + "source": BONUS_SACRIFICE_SOURCE, + "output": BONUS_SACRIFICE_OUTPUT, + "candidates": BONUS_SACRIFICE_CANDIDATES, + "move": BONUS_SACRIFICE_MOVE, + "move_pay_share_cap": SALSAC_MOVE_PAY_SHARE_CAP, + "spi_bonus_draw": BONUS_SACRIFICE_SPI_DRAW, + "spi_cell_quantiles": list(BONUS_SACRIFICE_SPI_CELL_QUANTILES), + "spi_min_donor_sources": BONUS_SACRIFICE_SPI_MIN_DONOR_SOURCES, + "spi_salt": BONUS_SACRIFICE_SPI_DRAW_SALT, + "threshold": int(BONUS_SACRIFICE_THRESHOLD), + "solve": BONUS_SACRIFICE_SOLVE, + "seed": SALSAC_CONVERSION_SEED, + "salt": BONUS_SACRIFICE_CONVERSION_SALT, + "receipt": "projected_base", + }, + ), + ) + + def _assert_salary_sacrifice_stage_parameters( stage: SourceStageSpec, *, anchor: Mapping[str, Any], + bonus_anchor: Mapping[str, Any] | None = None, ) -> None: """Bind all stage parameters closed-world; result evidence supplies arm 2.""" - _assert_closed_world_operations( - stage, - ( - ( - "fit_weighted_qrf", - { - "training_population": SALSAC_TRAINING_POPULATION, - "target_population": SALSAC_TARGET_POPULATION, - "predictors": list(SALSAC_PREDICTORS), - "targets": [SALSAC_OUTPUT], - "weights": "household_weight", - "weight_mapping": "household_to_person", - "seed": SALSAC_QRF_SEED, - "n_estimators": SALSAC_QRF_ESTIMATORS, - "clamp_minimum": 0, - "clamp_maximum": SALSAC_AMOUNT_LIMIT, - "preserve_asked_rows": True, - "cache": False, - }, - ), - ( - "convert_donors_to_target_stock", - { - "resource": "salary_sacrifice_anchor.json", - "target": int(SALSAC_STAGE_TARGET), - "donor_pool": ( - "employee_pension_contributions > 0 and " - "pension_contributions_via_salary_sacrifice == 0 and " - "employment_income > 0" - ), - "rate_cap": SALSAC_RATE_CAP, - "move_pay_share_cap": SALSAC_MOVE_PAY_SHARE_CAP, - "move": ( - "employee_pension_contributions, up to move_pay_share_cap " - "of employment_income, to " - "pension_contributions_via_salary_sacrifice; the rest " - "stays in the source; employment_income lowered by the " - "amount sacrificed; the converted record's pay before the " - "conversion kept on salary_sacrifice_pre_conversion_pay " - "(zero elsewhere)" - ), - "seed": SALSAC_CONVERSION_SEED, - "salt": SALSAC_CONVERSION_SALT, - "receipt": "weighted_headcount", - "reason": SALSAC_MASS_CHANGE_REASON, - }, - ), - ), + _assert_closed_world_operations(stage, salary_sacrifice_operation_parameters()) + _assert_bonus_sacrifice_anchor( + load_bonus_sacrifice_anchor() if bonus_anchor is None else bonus_anchor ) hmrc = anchor.get("hmrc_anchor", {}) derived = anchor.get("derived", {}) @@ -524,3 +975,32 @@ def _assert_salary_sacrifice_stage_parameters( ratio = float(derived.get("staging_ratio", np.nan)) if not np.isclose(ratio, SALSAC_STAGING_RATIO, rtol=0.0, atol=1e-12): raise ValueError("Salary-sacrifice resource staging ratio drifted.") + + +def _assert_bonus_sacrifice_anchor(anchor: Mapping[str, Any]) -> None: + """The anchor's OBR base is the vendored row's, at the declared threshold. + + The engine factors follow the lock; an engine-tier test holds them to the + installed policyengine-uk (``tools/pin_uk_bonus_sacrifice_anchor.py``). + """ + + from microcosm.build.uk_runtime.ledger_fact_vendoring import vendored_rows + + source = anchor.get("source", {}) + rows = [ + row + for row in vendored_rows(BONUS_SACRIFICE_FACTS_RESOURCE) + if (row.get("layout") or {}).get("record_set_id") == source.get("record_set_id") + and (row.get("layout") or {}).get("groupby_value_id") + == source.get("groupby_value_id") + ] + if len(rows) != 1: + raise ValueError( + f"The bonus-sacrifice anchor names no single vendored OBR row: {source!r}." + ) + if float(rows[0]["value"]) != float(anchor.get("obr_base_above_threshold", -1)): + raise ValueError( + "The bonus-sacrifice anchor's OBR base differs from the vendored row." + ) + if float(anchor.get("threshold", -1)) != BONUS_SACRIFICE_THRESHOLD: + raise ValueError("The bonus-sacrifice anchor's threshold drifted.") diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_benefit_coherence.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_benefit_coherence.py index 80cdf624ec..f9f22b7dc2 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_benefit_coherence.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_benefit_coherence.py @@ -129,6 +129,7 @@ "afcs_reported", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", ) SPI_RESTORED_REPORT_REASON = "follows an injury, service or a death, not income" SPI_TWIN_LINKAGE = "person_source_id -> FRS-channel person_id" diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_dependency.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_dependency.py new file mode 100644 index 0000000000..11be91bb9f --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_dependency.py @@ -0,0 +1,107 @@ +"""Mark the UK outputs that rest on the SPI Public Use Tape (SN 9422; microcosm#1095). + +The tape's Special Conditions add two obligations to the End User Licence +(see :mod:`microcosm.build.uk_runtime.receipt_counts`): no attempt may be made +to attribute a record to a named individual, and material that includes +analyses of the tape goes to HMRC at least ten working days before it is +distributed or published. So a build records whether any stage it ran read the +tape, and which ones did. The spine's build record carries the marker; the +calibrated candidate inherits it with the spine's provenance, which the signed +diagnostics hold; and the release manifest restates it, on the microdata's own +entry and with the conditions, rederived from the stages the provenance names. +How SPI-dependent outputs are released is María's ruling: the marker records +the dependency and decides nothing. +""" + +from __future__ import annotations + +from collections.abc import Iterable, Mapping +from typing import Any + +from microcosm.build.uk_runtime.spi_income import SPI_DONOR_UKDS_STUDY + +#: The key the spine's build record and the spine provenance carry it under. +UK_SPI_PUBLIC_USE_TAPE_KEY = "spi_public_use_tape" +#: The tape's Special Conditions beyond the End User Licence (checked +#: 2026-10-16, microcosm#1278). +UK_SPI_PUBLIC_USE_TAPE_CONDITIONS = ( + "No attempt may be made to attribute a record to a named individual.", + "Material that includes analyses of the tape goes to HMRC at least ten " + "working days before it is distributed or published.", +) + + +def uk_ukds_study_number(value: object) -> str: + """A declared UK Data Service study number as ``SN ``. + + The spec writes most numbers bare (9563) and the tape's as ``SN 9422``. + """ + + text = str(value).strip() + number = text.removeprefix("SN").strip() + if not number.isdigit(): + raise ValueError(f"Not a UK Data Service study number: {value!r}.") + return f"SN {int(number)}" + + +def uk_spi_public_use_tape_marker(stages: Iterable[Any]) -> dict[str, object]: + """Whether the given spec stages read the tape, and which of them do. + + ``stages`` are the stages the run selected (a run may select a subset), + each with the ``stage`` name and the ``artifacts`` the spec declares. + """ + + reading = sorted( + { + str(stage.stage) + for stage in stages + for artifact in stage.artifacts + if artifact.get("ukds_study_number") is not None + and uk_ukds_study_number(artifact["ukds_study_number"]) + == SPI_DONOR_UKDS_STUDY + } + ) + return { + "study": SPI_DONOR_UKDS_STUDY, + "dependent": bool(reading), + "stages": reading, + "conditions": list(UK_SPI_PUBLIC_USE_TAPE_CONDITIONS) if reading else [], + } + + +def uk_spi_public_use_tape_marker_for_stage_names( + names: Iterable[str], +) -> dict[str, object]: + """The marker for the named stages of the packaged UK spec. + + For readers that hold a run's stage names but not its spec objects (the + release assemblers, reading the signed spine provenance). A name the + packaged spec does not declare is refused: the marker would not know what + that stage read. + """ + + from microcosm.build.country_spec import load_country_spec + + declared = {stage.stage: stage for stage in load_country_spec("uk").sources.stages} + wanted = list(names) + unknown = sorted(set(wanted) - set(declared)) + if unknown: + raise ValueError(f"The packaged UK spec declares no stage {unknown}.") + return uk_spi_public_use_tape_marker(declared[name] for name in wanted) + + +def uk_check_spi_public_use_tape_marker( + recorded: Mapping[str, object] | None, + derived: Mapping[str, object], +) -> None: + """Refuse a recorded marker that disagrees with the one the stages give. + + A provenance from a spine built before the marker records none; that is + allowed, and the derived marker stands. + """ + + if recorded and dict(recorded) != dict(derived): + raise ValueError( + "The spine's SPI Public Use Tape marker disagrees with the stages it " + f"names: recorded {dict(recorded)!r}, derived {dict(derived)!r}." + ) diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_spine.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_spine.py index ff115781b4..17a8568ac8 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_spine.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_spine.py @@ -242,6 +242,7 @@ "afcs_reported", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", "winter_fuel_allowance_reported", "council_tax_benefit_reported", "jsa_contrib_reported", diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_support.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_support.py index c973dca096..0e184d3a79 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_support.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_support.py @@ -183,6 +183,7 @@ "afcs_reported", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", "incapacity_benefit_reported", "maternity_allowance_reported", "winter_fuel_allowance_reported", diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/spine_build.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/spine_build.py index bcc5d2bd81..29b5919775 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/spine_build.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/spine_build.py @@ -185,6 +185,10 @@ from microcosm.build.uk_runtime.spi_benefit_coherence import ( UKSPIBenefitCoherenceStageTransform, ) +from microcosm.build.uk_runtime.spi_dependency import ( + UK_SPI_PUBLIC_USE_TAPE_KEY, + uk_spi_public_use_tape_marker, +) from microcosm.build.uk_runtime.spi_housing_shell import ( UKSPIHousingShellStageTransform, ) @@ -778,7 +782,10 @@ def _declared_seeds(stages) -> dict[str, dict[str, int]]: stage_seeds["within_band_draws"] = seed elif operation.kind == "assign_badr_qualifying_gains": stage_seeds[operation.kind] = seed - elif operation.kind == "convert_donors_to_target_stock": + elif operation.kind in ( + "convert_donors_to_target_stock", + "convert_bonuses_to_bonus_sacrifice", + ): stage_seeds[str(operation.parameters["salt"])] = seed elif operation.kind == "top_up_to_stock": stage_seeds[str(operation.parameters["salt"])] = seed @@ -847,6 +854,9 @@ def _build_sidecar( "spine_gate_report": spine_gate_report, "stochastic_contract_sha256": stochastic_contract_sha256, "rules_engine": _rules_engine_provenance(), + # Which stages read the SPI Public Use Tape, whose Special Conditions + # reach every output built on them (microcosm#1095). + UK_SPI_PUBLIC_USE_TAPE_KEY: uk_spi_public_use_tape_marker(stages), } diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/stage_health.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/stage_health.py index 00c63599c7..eebffa03ed 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/stage_health.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/stage_health.py @@ -95,6 +95,12 @@ def uk_stage_health_gate( return _bus_support_pricing_gate(stage, evidence, parameters) if check == "property_components": return _property_components_gate(stage, evidence, parameters) + if check == "property_purchases": + return _property_purchases_gate(stage, evidence, parameters) + if check == "regional_home_values": + return _regional_home_values_gate(stage, evidence, parameters) + if check == "legacy_closure_take_up": + return _legacy_closure_take_up_gate(stage, evidence, parameters) return GateResult( name="stage_health", passed=False, @@ -2495,6 +2501,9 @@ def _binomial_tolerance(*, target: float, rows: int) -> float: "gross_financial_wealth_violation_rows", "net_financial_wealth_violation_rows", "mortgage_debt_violation_rows", + # The share split and the secured debts (microcosm#1095). + "share_split_violation_rows", + "secured_debt_violation_rows", ) @@ -2512,8 +2521,10 @@ def _wealth_coherence_gate( re-reads the receipt so the battery, not only the transform, holds that no household off a mortgaged tenure carries a main-residence mortgage, none off an owner tenure carries a main-residence value, every total - equals its components, and owners without a main-residence value are no - more common than on the donor beyond the reviewed excess. + equals its components, the share split and the ISA sum to corporate + wealth, every secured debt sits on a held asset within the mortgages on + other property, and owners without a main-residence value are no more + common than on the donor beyond the reviewed excess. """ check = "wealth_coherence" @@ -3053,6 +3064,82 @@ def period_of(block: Mapping[str, object]) -> tuple[object, object]: ) +def _division_levelling_factors( + stage: str, + levelling: object, + declared: Mapping[str, object], + failures: list[str], +) -> dict[str, float]: + """Check the receipt's division levelling against the declaration. + + Returns each division's factor (none where the stage declares no + levelling), appending a failure for a missing or undeclared levelling, a + rule or division list other than the declared one, a factor outside + [0, 1], or a division that moves though it is not above the shared ratio. + """ + + expected = declared.get("level_division_excess") + if expected is None: + if levelling is not None: + failures.append( + f"{stage}: records a division levelling the stage does not declare." + ) + return {} + if not isinstance(levelling, Mapping): + failures.append( + f"{stage}: records no division levelling; the stage declares " + f"{expected['rule']!r}." + ) + return {} + if (levelling.get("rule"), levelling.get("basis")) != ( + expected["rule"], + expected["basis"], + ): + failures.append( + f"{stage}: levels the divisions by {levelling.get('rule')!r} on " + f"{levelling.get('basis')!r}, not the declared levelling." + ) + shared = _finite_number( + levelling.get("shared_ratio"), label=f"{stage}.division_levelling.shared_ratio" + ) + if not shared > 0: + failures.append( + f"{stage}: the divisions' shared ratio {shared} is not positive." + ) + divisions = _mapping( + levelling.get("divisions"), label=f"{stage}.division_levelling.divisions" + ) + if sorted(divisions) != sorted(expected["divisions"]): + failures.append( + f"{stage}: levels {sorted(divisions)}, not the declared " + f"{sorted(expected['divisions'])}." + ) + factors: dict[str, float] = {} + for division, entry in divisions.items(): + entry = _mapping(entry, label=f"{stage}.division_levelling.{division}") + factor = _finite_number( + entry.get("factor"), label=f"{stage}.division_levelling.{division}.factor" + ) + ratio = entry.get("ratio") + if not 0.0 <= factor <= 1.0: + failures.append( + f"{stage}: {division} levelling factor {factor} is not in [0, 1]." + ) + if factor != 1.0 and ( + ratio is None + or _finite_number( + ratio, label=f"{stage}.division_levelling.{division}.ratio" + ) + <= shared + ): + failures.append( + f"{stage}: {division} moves by {factor} though its ratio {ratio!r} " + f"is not above the shared {shared}." + ) + factors[str(division)] = factor + return factors + + def _recomposed_totals_gate( stage: str, evidence: Mapping[str, object], @@ -3068,14 +3155,18 @@ def _recomposed_totals_gate( ``maximum_relative_deviation``, the weighted remainder equals the drawn total less the drawn parts plus the floored mass, and the weighted total the remainder plus the components less the mass held at the maximum; and - the uncarried ONS spend is recomputed from the vendored rows through the - stage's own declaration. + the published ONS heating-fuel spend is recomputed from the vendored rows + through the stage's own declaration. Where the stage declares + ``level_division_excess`` (microcosm#1278), the receipt carries the + declared rule over the declared divisions, every factor is in [0, 1], no + division at or below the shared ratio moves, and each recomposed total's + remainder moves by its division's factor. """ from microcosm.build.country_spec import load_country_spec from microcosm.build.uk_runtime.lcfs_consumption import ( + published_fuel_spend, recompose_from_remainder_operation, - uncarried_spend, ) check = "recomposed_totals" @@ -3096,6 +3187,9 @@ def _recomposed_totals_gate( ) declared_parents = declared["parents"] failures: list[str] = [] + division_factors = _division_levelling_factors( + stage, receipt.get("division_levelling"), declared, failures + ) if set(parents) != set(declared_parents): failures.append( f"{stage}: recomposed {sorted(parents)}, not the declared " @@ -3138,8 +3232,22 @@ def _recomposed_totals_gate( def number(key: str, parent: str = parent, entry=entry) -> float: return _finite_number(entry.get(key), label=f"{stage}.{parent}.{key}") + # The declared levelling of the divisions' excess (microcosm#1278) + # scales a recomposed total's remainder by a factor in [0, 1]. + factor = ( + 1.0 if entry.get("levelling_factor") is None else number("levelling_factor") + ) + if not 0.0 <= factor <= 1.0: + failures.append( + f"{stage}: {parent} levelling factor {factor} is not in [0, 1]." + ) + if factor != division_factors.get(parent, 1.0): + failures.append( + f"{stage}: {parent} levelling factor {factor} is not its " + f"division's {division_factors.get(parent, 1.0)}." + ) remainder = number("weighted_remainder") - split = ( + split = factor * ( number("weighted_drawn_total") - number("weighted_drawn_subtracts") + number("weighted_floored_mass") @@ -3147,7 +3255,7 @@ def number(key: str, parent: str = parent, entry=entry) -> float: if abs(remainder - split) > tolerance * max(1.0, abs(remainder)): failures.append( f"{stage}: {parent} remainder {remainder} is not its draw less the " - f"drawn parts plus the floored mass ({split})." + f"drawn parts plus the floored mass, at its levelling factor ({split})." ) total = number("weighted_total") held_mass = number("weighted_held_mass") @@ -3161,20 +3269,30 @@ def number(key: str, parent: str = parent, entry=entry) -> float: f"{stage}: {parent} weighted total {total} is not its remainder plus " f"components less the mass held at the maximum ({parts})." ) - uncarried = uncarried_spend(declared) - observed = _mapping(receipt.get("uncarried"), label=f"{stage}.uncarried") + published = published_fuel_spend(declared) + observed = _mapping( + receipt.get("published_fuels"), label=f"{stage}.published_fuels" + ) + observed_classes = observed.get("classes") + published_keys = ("coicop", "concept", "column", "source_record_id", "value") if ( - observed.get("classes") != uncarried["classes"] - or observed.get("total") != uncarried["total"] + not isinstance(observed_classes, list) + or [ + {key: entry.get(key) for key in published_keys} + for entry in observed_classes + if isinstance(entry, Mapping) + ] + != published["classes"] + or observed.get("total") != published["total"] ): failures.append( - f"{stage}: the uncarried spend {observed.get('total')!r} is not the vendored " - f"{uncarried['total']}." + f"{stage}: the published fuel spend {observed.get('total')!r} is not the " + f"vendored {published['total']}." ) details = { "maximum_relative_deviation": tolerance, "parents": sorted(parents), - "uncarried_total": uncarried["total"], + "published_fuels_total": published["total"], } return ( _fail(stage, check, failures, details) @@ -3674,3 +3792,211 @@ def _high_value_home_support_gate( if failures: return _fail(stage, check, failures, details) return _pass(stage, check, details) + + +def _property_purchases_gate( + stage: str, + evidence: Mapping[str, object], + parameters: Mapping[str, object], +) -> GateResult: + """Each purchase kind meets HMRC's Stamp Tax totals as the stage contracts (#1308). + + Every declared kind is drawn once. Its transactions meet HMRC's count + within the declared deviation (the events are drawn, so the count is near, + not exact); its value is HMRC's less the recorded shortfall, which the + stage refuses past one fifth, so the gate refuses past the declared share; + and the individuals' shares that carry the all-buyers totals onto + households are proper shares. + """ + + check = "property_purchases" + expected = sorted(str(kind) for kind in parameters["kinds"]) + deviation = _finite_number( + parameters["maximum_transactions_relative_deviation"], + label=f"{stage}.maximum_transactions_relative_deviation", + ) + maximum_shortfall = _finite_number( + parameters["maximum_value_shortfall_share"], + label=f"{stage}.maximum_value_shortfall_share", + ) + failures: list[str] = [] + details: dict[str, object] = {} + kinds = evidence.get("kinds") + if not isinstance(kinds, list): + kinds = [] + drawn = sorted( + str(_mapping(kind, label=f"{stage}.kinds[]").get("property_type")) + for kind in kinds + ) + if drawn != expected: + failures.append(f"{stage}: the receipt draws kinds {drawn}, not {expected}.") + for kind in kinds: + name = str(kind.get("property_type")) + target = _finite_number( + kind.get("target_transactions"), label=f"{stage}.{name}.target_transactions" + ) + fitted = _finite_number( + kind.get("fitted_transactions"), label=f"{stage}.{name}.fitted_transactions" + ) + shortfall = _finite_number( + kind.get("value_shortfall_share"), + label=f"{stage}.{name}.value_shortfall_share", + ) + target_value = _finite_number( + kind.get("target_value"), label=f"{stage}.{name}.target_value" + ) + fitted_value = _finite_number( + kind.get("fitted_value"), label=f"{stage}.{name}.fitted_value" + ) + relative = fitted / target - 1.0 if target > 0 else math.inf + details[name] = { + "transactions_relative_deviation": relative, + "value_shortfall_share": shortfall, + } + if abs(relative) > deviation: + failures.append( + f"{stage}: {name} draws {relative:+.4f} of HMRC's transactions " + f"(limit {deviation})." + ) + if not 0.0 <= shortfall <= maximum_shortfall: + failures.append( + f"{stage}: {name} falls {shortfall:.4f} short of HMRC's value " + f"(limit {maximum_shortfall})." + ) + expected_value = target_value * (1.0 - shortfall) + if not math.isclose(fitted_value, expected_value, rel_tol=1e-9, abs_tol=1e-6): + failures.append( + f"{stage}: {name} fits value {fitted_value:.6g}, not HMRC's less " + f"the recorded shortfall ({expected_value:.6g})." + ) + derivation = evidence.get("derivation") + shares = {} + if isinstance(derivation, Mapping): + shares = { + key: value for key, value in derivation.items() if key.endswith("_share") + } + if not shares: + failures.append(f"{stage}: the receipt carries no individuals' shares.") + for key, value in shares.items(): + share = _finite_number(value, label=f"{stage}.derivation.{key}") + if not 0.0 < share <= 1.0: + failures.append(f"{stage}: derivation {key} is {share}, not a share.") + if failures: + return _fail(stage, check, failures, details) + return _pass(stage, check, details) + + +def _regional_home_values_gate( + stage: str, + evidence: Mapping[str, object], + parameters: Mapping[str, object], +) -> GateResult: + """Home values are re-ranked in every region on the declared knots (#1308). + + Every declared region has rewritten rows and no more than the stage's + rows; no source sits at the value cap beyond the declared count; the knots + are the declared basis year and the ranking the declared basis; and the + weighted value stays positive on both sides of the stage. + """ + + check = "regional_home_values" + regions = sorted(str(region) for region in parameters["regions"]) + failures: list[str] = [] + rewritten = evidence.get("rows_rewritten_by_region") + if not isinstance(rewritten, Mapping): + rewritten = {} + if sorted(rewritten) != regions: + failures.append( + f"{stage}: the receipt rewrites regions {sorted(rewritten)}, not {regions}." + ) + counts = {str(region): int(count) for region, count in rewritten.items()} + empty = sorted(region for region, count in counts.items() if count <= 0) + if empty: + failures.append(f"{stage}: no row is rewritten in {empty}.") + rows = int(evidence.get("rows", 0)) + if sum(counts.values()) > rows: + failures.append(f"{stage}: more rows are rewritten than the stage carries.") + at_cap = int(evidence.get("sources_at_cap", -1)) + maximum_at_cap = int(parameters["maximum_sources_at_cap"]) + if not 0 <= at_cap <= maximum_at_cap: + failures.append( + f"{stage}: {at_cap} sources sit at the value cap (limit {maximum_at_cap})." + ) + if evidence.get("knots_basis_year") != parameters["knots_basis_year"]: + failures.append( + f"{stage}: the knots' basis year is {evidence.get('knots_basis_year')!r}, " + f"not {parameters['knots_basis_year']!r}." + ) + ranking = evidence.get("ranking") + basis = ranking.get("rank_basis") if isinstance(ranking, Mapping) else None + if basis != parameters["rank_basis"]: + failures.append( + f"{stage}: the ranking basis is {basis!r}, not {parameters['rank_basis']!r}." + ) + for side in ("weighted_value_before", "weighted_value_after"): + value = _finite_number(evidence.get(side), label=f"{stage}.{side}") + if value <= 0.0: + failures.append(f"{stage}: {side} is not positive.") + details = {"regions": regions, "sources_at_cap": at_cap} + if failures: + return _fail(stage, check, failures, details) + return _pass(stage, check, details) + + +#: The support bands the take-up receipts print (receipt_counts). +_SUPPORT_BANDS = frozenset({"<10", "10-29", "30+"}) + + +def _legacy_closure_take_up_gate( + stage: str, + evidence: Mapping[str, object], + parameters: Mapping[str, object], +) -> GateResult: + """The Move to UC draw records a rate and its basis for every combination (#1308). + + The receipt withholds what a thin combination realizes, so the gate holds + the contract it can read: the share is measured on the declared basis, + every combination's rate is a probability from a declared source, its + support is a printed band, and its unreachable flag is a boolean, a + withheld "<10" or absent; the share claiming at closure is a share. + """ + + check = "legacy_closure_take_up" + sources = {str(source) for source in parameters["rate_sources"]} + failures: list[str] = [] + if evidence.get("p_basis") != parameters["p_basis"]: + failures.append( + f"{stage}: the share is measured on {evidence.get('p_basis')!r}, not " + f"{parameters['p_basis']!r}." + ) + combinations = evidence.get("combinations") + if not isinstance(combinations, Mapping) or not combinations: + failures.append(f"{stage}: the receipt carries no combinations.") + combinations = {} + for name, combination in combinations.items(): + combination = _mapping(combination, label=f"{stage}.combinations.{name}") + rate = _finite_number(combination.get("rate"), label=f"{stage}.{name}.rate") + if not 0.0 <= rate <= 1.0: + failures.append(f"{stage}: {name} draws at rate {rate}.") + if combination.get("rate_source") not in sources: + failures.append( + f"{stage}: {name} takes its rate from " + f"{combination.get('rate_source')!r}." + ) + if combination.get("support") not in _SUPPORT_BANDS: + failures.append(f"{stage}: {name} prints no support band.") + flag = combination.get("rate_unreachable") + if not (flag is None or isinstance(flag, bool) or flag == "<10"): + failures.append(f"{stage}: {name} flags {flag!r} as unreachable.") + # A drawn cohort on fewer than ten sources prints the share withheld. + printed = evidence.get("great_britain_weighted_share_claiming_at_closure") + if printed != "<10": + share = _finite_number( + printed, label=f"{stage}.great_britain_weighted_share_claiming_at_closure" + ) + if not 0.0 <= share <= 1.0: + failures.append(f"{stage}: the share claiming at closure is {share}.") + details = {"combinations": len(combinations)} + if failures: + return _fail(stage, check, failures, details) + return _pass(stage, check, details) diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/support_floor.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/support_floor.py index bcd76673d8..c4b802a781 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/support_floor.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/support_floor.py @@ -12,13 +12,19 @@ (:func:`microcosm.build.uk_runtime.diagnostics.uk_withheld_rows`). The floor is declared once, in the ``support_floor`` block of -``uk/calibration_measure_exclusions.json`` (schema 3), and signed there; its -``floor`` is 1, the only value it may take. On a built frame, a row in its -scope whose matrix row reaches no source household (``household_source_id``) -with a positive prior weight is dropped, not pooled; each target's dropped -published total is reported. The run refuses outside the block's approval window, when the -dropped rows pass either declared ceiling, and when a per-row exclusion names -a row the floor would drop (the floor covers it, so the entry must retire). +``uk/calibration_measure_exclusions.json`` (schema 4), and signed there; its +``floor`` is 1, the only value it may take. Its scope is a list of scopes, one +per unit (benefit units, people, households, pounds), each with its own +ceilings: a ceiling on the dropped share sums published values, so a scope +never mixes units. A scope's ``unit`` is the one its targets' contract +measurements give (:func:`uk_support_floor_target_unit`). On a built frame, a +row in a scope whose matrix row reaches no source household +(``household_source_id``) with a positive prior weight is dropped, not pooled; +each target's dropped published total is reported. The run refuses outside the +block's approval window, when a scope's ``unit`` is not its targets' unit +(:func:`assert_uk_support_floor_units`), when a scope's dropped rows pass +either of its ceilings, and when a per-row exclusion names a row the floor +would drop (the floor covers it, so the entry must retire). The dropped set joins the calibration's measure exclusions as ``kind: support_floor``, so the gates, the written register and the certifier read it back rather than recompute support, which they cannot. @@ -50,11 +56,9 @@ #: The spine household each row was built from; every clone shares it. UK_SUPPORT_LINEAGE_COLUMN = "household_source_id" _FIELDS = ( - "contract_target_ids", "metric", "floor", - "max_dropped_rows", - "max_dropped_published_share", + "scopes", "reason", "tracking", "approved_by", @@ -63,6 +67,21 @@ "expires_on", ) _TEXT_FIELDS = ("reason", "tracking", "approved_by", "adjudication") +_SCOPE_FIELDS = ( + "scope", + "unit", + "contract_target_ids", + "max_dropped_rows", + "max_dropped_published_share", +) +#: The unit of a count, by the entity its contract measurement counts. +UK_SUPPORT_FLOOR_COUNT_UNITS = { + "benunit": "benefit_units", + "person": "people", + "household": "households", +} +#: The unit of an amount, whatever entity carries it. +UK_SUPPORT_FLOOR_AMOUNT_UNIT = "GBP" #: The record fields a dropped row carries, as a per-row exclusion carries its #: own (``measure_simulation._UK_MEASURE_EXCLUSION_FIELDS`` less the name). _RECORD_FIELDS = ( @@ -76,13 +95,22 @@ @dataclass(frozen=True) -class UKSupportFloor: - """The signed floor: its scope, threshold, ceilings and approval window.""" +class UKSupportFloorScope: + """The targets of one unit, with the ceilings their drops may not pass.""" + scope: str + unit: str contract_target_ids: frozenset[str] - floor: int max_dropped_rows: int max_dropped_published_share: float + + +@dataclass(frozen=True) +class UKSupportFloor: + """The signed floor: its scopes, threshold and approval window.""" + + scopes: tuple[UKSupportFloorScope, ...] + floor: int reason: str tracking: str approved_by: str @@ -90,8 +118,19 @@ class UKSupportFloor: approved_on: date expires_on: date + @property + def contract_target_ids(self) -> frozenset[str]: + return frozenset().union(*(scope.contract_target_ids for scope in self.scopes)) + + def scope_of(self, spec: Any) -> UKSupportFloorScope | None: + target = spec.metadata.get("contract_target_id") + for scope in self.scopes: + if target in scope.contract_target_ids: + return scope + return None + def in_scope(self, spec: Any) -> bool: - return spec.metadata.get("contract_target_id") in self.contract_target_ids + return self.scope_of(spec) is not None def record(self, evaluated_on: date) -> dict[str, str]: """The measure-exclusion record a dropped row carries.""" @@ -134,17 +173,7 @@ def uk_support_floor_from_payload(block: Mapping[str, Any]) -> UKSupportFloor: f"UK support floor metric must be {UK_SUPPORT_FLOOR_METRIC!r}, got " f"{block['metric']!r}." ) - targets = block["contract_target_ids"] - if ( - not isinstance(targets, list) - or not targets - or len(set(targets)) != len(targets) - or not all(isinstance(target, str) and target for target in targets) - ): - raise ValueError("UK support floor scope must list distinct target ids.") floor = block["floor"] - rows = block["max_dropped_rows"] - share = block["max_dropped_published_share"] if ( not isinstance(floor, int) or isinstance(floor, bool) @@ -155,16 +184,7 @@ def uk_support_floor_from_payload(block: Mapping[str, Any]) -> UKSupportFloor: "household carries stays bound however few they are (María's rule of " "2026-10-21), and the figures of a thin row are withheld, not the row." ) - if not isinstance(rows, int) or isinstance(rows, bool) or rows < 0: - raise ValueError("UK support floor max_dropped_rows must be a count.") - if ( - not isinstance(share, (int, float)) - or isinstance(share, bool) - or not 0.0 <= float(share) < 1.0 - ): - raise ValueError( - "UK support floor max_dropped_published_share must be in [0, 1)." - ) + scopes = _scopes_from_payload(block["scopes"]) for field in _TEXT_FIELDS: if not isinstance(block[field], str) or not block[field].strip(): raise ValueError(f"UK support floor {field} is empty.") @@ -183,10 +203,8 @@ def uk_support_floor_from_payload(block: Mapping[str, Any]) -> UKSupportFloor: if dates["expires_on"] <= dates["approved_on"]: raise ValueError("UK support floor expires_on must be after approved_on.") return UKSupportFloor( - contract_target_ids=frozenset(targets), + scopes=scopes, floor=floor, - max_dropped_rows=rows, - max_dropped_published_share=float(share), reason=block["reason"], tracking=block["tracking"], approved_by=block["approved_by"], @@ -196,6 +214,114 @@ def uk_support_floor_from_payload(block: Mapping[str, Any]) -> UKSupportFloor: ) +def _scopes_from_payload(payload: Any) -> tuple[UKSupportFloorScope, ...]: + """Validate the scopes closed-world: named once, one unit each, disjoint.""" + + if not isinstance(payload, list) or not payload: + raise ValueError("UK support floor scopes must be a non-empty list.") + scopes: list[UKSupportFloorScope] = [] + seen_targets: set[str] = set() + for entry in payload: + if not isinstance(entry, Mapping): + raise ValueError("UK support floor scope must be an object.") + unknown = sorted(set(entry) - set(_SCOPE_FIELDS)) + missing = sorted(set(_SCOPE_FIELDS) - set(entry)) + if unknown or missing: + raise ValueError( + f"UK support floor scope fields are closed-world: unknown " + f"{unknown}, missing {missing}." + ) + for field in ("scope", "unit"): + if not isinstance(entry[field], str) or not entry[field].strip(): + raise ValueError(f"UK support floor scope {field} is empty.") + targets = entry["contract_target_ids"] + if ( + not isinstance(targets, list) + or not targets + or len(set(targets)) != len(targets) + or not all(isinstance(target, str) and target for target in targets) + ): + raise ValueError( + f"UK support floor scope {entry['scope']!r} must list distinct " + "target ids." + ) + shared = sorted(seen_targets.intersection(targets)) + if shared: + raise ValueError( + f"UK support floor scopes must be disjoint; {shared} sit in more " + "than one." + ) + seen_targets.update(targets) + rows = entry["max_dropped_rows"] + share = entry["max_dropped_published_share"] + if not isinstance(rows, int) or isinstance(rows, bool) or rows < 0: + raise ValueError("UK support floor max_dropped_rows must be a count.") + if ( + not isinstance(share, (int, float)) + or isinstance(share, bool) + or not 0.0 <= float(share) < 1.0 + ): + raise ValueError( + "UK support floor max_dropped_published_share must be in [0, 1)." + ) + scopes.append( + UKSupportFloorScope( + scope=entry["scope"], + unit=entry["unit"], + contract_target_ids=frozenset(targets), + max_dropped_rows=rows, + max_dropped_published_share=float(share), + ) + ) + names = [scope.scope for scope in scopes] + if len(set(names)) != len(names): + raise ValueError("UK support floor scope names must be distinct.") + return tuple(scopes) + + +def uk_support_floor_target_unit(measurement: Mapping[str, Any]) -> str: + """The unit a contract target's published values are counted in. + + A count (``uk..count``) is in its entity; an amount is in pounds. + Any other concept is no unit the floor's share ceilings can sum. + """ + + kind = str(measurement.get("concept", "")).rsplit(".", 1)[-1] + entity = measurement.get("entity") + if kind == "amount": + return UK_SUPPORT_FLOOR_AMOUNT_UNIT + if kind == "count" and entity in UK_SUPPORT_FLOOR_COUNT_UNITS: + return UK_SUPPORT_FLOOR_COUNT_UNITS[str(entity)] + raise ValueError( + f"UK support floor sums counts and amounts only; {entity!r} " + f"{measurement.get('concept')!r} is neither." + ) + + +def assert_uk_support_floor_units( + floor: UKSupportFloor, contract_targets: Mapping[str, Mapping[str, Any]] +) -> None: + """Refuse a scope whose ``unit`` is not the unit its targets are counted in.""" + + failures = [] + for scope in floor.scopes: + for target_id in sorted(scope.contract_target_ids): + target = contract_targets.get(target_id) + if target is None: + failures.append(f"{scope.scope}: {target_id} is no contract target") + continue + unit = uk_support_floor_target_unit(target["measurement"]) + if unit != scope.unit: + failures.append( + f"{scope.scope}: {target_id} is counted in {unit}, not {scope.unit}" + ) + if failures: + raise ValueError( + "UK support floor scope units do not match their targets: " + + "; ".join(failures) + ) + + def load_uk_support_floor_declaration( path: Path | None = None, ) -> dict[str, Any] | None: @@ -264,17 +390,20 @@ class UKSupportFloorResult: receipt: dict[str, Any] -def _assert_within_ceilings(floor: UKSupportFloor, dropped: int, share: float) -> None: - if dropped > floor.max_dropped_rows: +def _assert_within_ceilings( + floor: UKSupportFloor, scope: UKSupportFloorScope, dropped: int, share: float +) -> None: + if dropped > scope.max_dropped_rows: raise ValueError( - f"UK support floor drops {dropped} rows, more than its signed " - f"ceiling of {floor.max_dropped_rows} ({floor.tracking})." + f"UK support floor drops {dropped} rows in scope {scope.scope!r}, " + f"more than its signed ceiling of {scope.max_dropped_rows} " + f"({floor.tracking})." ) - if share > floor.max_dropped_published_share: + if share > scope.max_dropped_published_share: raise ValueError( - f"UK support floor drops {share:.4f} of its scope's published " - "total, more than its signed ceiling of " - f"{floor.max_dropped_published_share} ({floor.tracking})." + f"UK support floor drops {share:.4f} of scope {scope.scope!r}'s " + "published total, more than its signed ceiling of " + f"{scope.max_dropped_published_share} ({floor.tracking})." ) @@ -346,10 +475,20 @@ def apply_uk_support_floor( f"exclusion; retire those entries ({floor.tracking}): {redundant}." ) dropped = [position for position in in_scope if support[position] < floor.floor] - scope_total = math.fsum(float(specs[position].value) for position in in_scope) - dropped_total = math.fsum(float(specs[position].value) for position in dropped) - share = dropped_total / scope_total if scope_total > 0.0 else 0.0 - _assert_within_ceilings(floor, len(dropped), share) + by_scope: dict[str, dict[str, Any]] = {} + for scope in floor.scopes: + members = [p for p in in_scope if floor.scope_of(specs[p]) == scope] + gone = [p for p in dropped if floor.scope_of(specs[p]) == scope] + scope_total = math.fsum(float(specs[p].value) for p in members) + dropped_total = math.fsum(float(specs[p].value) for p in gone) + share = dropped_total / scope_total if scope_total > 0.0 else 0.0 + _assert_within_ceilings(floor, scope, len(gone), share) + by_scope[scope.scope] = { + "unit": scope.unit, + "in_scope_rows": len(members), + "dropped_rows": len(gone), + "dropped_published_share": share, + } record = floor.record(evaluated_on) exclusions = {specs[position].name: dict(record) for position in dropped} leaving = probes | set(dropped) @@ -370,7 +509,7 @@ def apply_uk_support_floor( "in_scope_rows": len(in_scope), "probed_row_exclusions": len(probes), "dropped_rows": len(dropped), - "dropped_published_share": share, + "scopes": by_scope, "dropped_by_target": _dropped_by_target([specs[p] for p in dropped]), "dropped": sorted(exclusions), "solved_register_sha256": narrowed.version, @@ -442,11 +581,14 @@ def narrow_uk_registry_by_support_floor( "The run's support-floor drops do not match the declared floor: " + "; ".join(failures) ) - if len(names) > floor.max_dropped_rows: - raise ValueError( - f"The run's support floor dropped {len(names)} rows, more than its " - f"signed ceiling of {floor.max_dropped_rows} ({floor.tracking})." - ) + for scope in floor.scopes: + count = sum(1 for name in names if floor.scope_of(by_name[name][0]) == scope) + if count > scope.max_dropped_rows: + raise ValueError( + f"The run's support floor dropped {count} rows in scope " + f"{scope.scope!r}, more than its signed ceiling of " + f"{scope.max_dropped_rows} ({floor.tracking})." + ) return TargetRegistry( [spec for spec in registry.specs if spec.name not in names], country=registry.country, diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/terminal_gates.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/terminal_gates.py index bf18e42b5e..210617b8d1 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/terminal_gates.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/terminal_gates.py @@ -402,6 +402,27 @@ def __post_init__(self) -> None: # pe-uk#2382). The enhanced FRS still adds FRS benefit code 9 into # bsp_reported, so its surface has no such input. "person.war_widows_pension_reported", + # Widowed Parent's Allowance, split out of FRS code 6 by rate (#1222, + # pe-uk#2572). The enhanced FRS keeps the whole code in bsp_reported. + "person.widowed_parents_allowance_reported", + # Spousal maintenance (ALIAMT or ALUAMT, and APAMT; #1320, pe-uk#2572). + # The enhanced FRS reads no alimony and keeps APAMT a private transfer. + "person.spousal_maintenance_income", + # Bonus sacrifice (#1340, pe-uk#2572 section 1): the enhanced FRS carries + # salary sacrifice only. + "person.pension_contributions_via_bonus_sacrifice", + # Liquid and solid heating fuels (#1278, pe-uk#2572): the enhanced FRS + # draws no fuel beside electricity and gas. + "household.liquid_fuel_consumption", + "household.solid_fuel_consumption", + # The share split inside corporate_wealth (pe-uk#1974) and the debt + # secured on other property (UC Regs 2013 reg 49(1)(b)), from the WAS + # property draw (microcosm#1095): the enhanced FRS carries corporate_wealth + # alone and no secured debt. + "household.directly_held_shares", + "household.unit_and_investment_trusts", + "household.other_residential_property_secured_debt", + "household.non_residential_property_secured_debt", ) UK_KNOWN_MISSING_REFERENCE_EXPORT_COLUMNS: tuple[str, ...] = ( diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_capital_coherence.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_capital_coherence.py index 0f7e22c4a8..9c7e6d5da6 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_capital_coherence.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_capital_coherence.py @@ -16,6 +16,7 @@ from collections.abc import Mapping from dataclasses import dataclass, field +from types import MappingProxyType import numpy as np import pandas as pd @@ -75,14 +76,14 @@ _UC_CAPITAL_LEVELS = ("exact_cell", *UC_CAPITAL_COARSENING) #: The UC capital limits the receipt measures the redraw against. _UC_CAPITAL_RECEIPT_LIMITS = (6_000.0, 16_000.0) -#: policyengine-uk 2.147.2 counts these household property values as Universal +#: policyengine-uk 2.151.0 counts these household property values as Universal #: Credit capital (``property_sources`` under #: ``gov.dwp.universal_credit.means_test.capital``, at 90% of value less any #: secured debt since 2.136.1) and as Pension Credit capital (the ``sources`` #: list under ``gov.dwp.pension_credit.income.capital``, beside ``savings`` and -#: ``share_like_capital``, which is ``corporate_wealth`` unless the share -#: components the build leaves unset exceed it). A recorded figure of 0 or more is a unit's complete -#: capital: it replaces every source, property included, and the engine takes +#: ``share_like_capital``, which is ``corporate_wealth``: the WAS stage writes +#: its share components to sum to it). A recorded figure of 0 or more is a unit's +#: complete capital: it replaces every source, property included, and the engine takes #: it as already countable, but TOTCAPB4 counts accounts and assets and no #: property. So the recorded figures add the household's property for the unit #: that holds it (uk-data#495, microcosm#1095). @@ -123,18 +124,35 @@ PROPERTY_CAPITAL_OWNERS = "household_reference_person_unit" PROPERTY_CAPITAL_OWNER_COLUMN = "is_household_head" #: Capital counts at its market value less 10% for the costs of sale (UC Regs -#: 2013 reg 49(1)(a); SPC Regs 2002 reg 19(a)). Debt secured on the property -#: is not on the frame and is not netted here (pe-uk#1969). +#: 2013 reg 49(1)(a); SPC Regs 2002 reg 19(a)). PROPERTY_CAPITAL_VALUATION = 0.9 +#: Then less the debt secured on it (UC Regs 2013 reg 49(1)(b); SPC Regs 2002 +#: reg 19(b)), floored at zero class by class, as policyengine-uk values +#: ``uc_other_residential_property_capital`` and +#: ``uc_non_residential_property_capital`` from 2.136.1. The was_wealth stage +#: draws both debts (microcosm#1095); owned land carries none, as the engine +#: has no input for the debt secured on it (pe-uk#1969). +PROPERTY_CAPITAL_SECURED_DEBT: Mapping[str, str] = MappingProxyType( + { + "other_residential_property_value": "other_residential_property_secured_debt", + "non_residential_property_value": "non_residential_property_secured_debt", + } +) UC_PROPERTY_CAPITAL_SHARE = "uc_property_capital_share" PENSION_CREDIT_PROPERTY_CAPITAL_SHARE = "pension_credit_property_capital_share" def _property_share_definition(sources: tuple[str, ...]) -> str: + terms = " + ".join( + f"max(0, {PROPERTY_CAPITAL_VALUATION:g} x {source} - " + f"{PROPERTY_CAPITAL_SECURED_DEBT[source]})" + if source in PROPERTY_CAPITAL_SECURED_DEBT + else f"{PROPERTY_CAPITAL_VALUATION:g} x {source}" + for source in sources + ) return ( - f"{PROPERTY_CAPITAL_VALUATION:g} x ({' + '.join(sources)}) of the household " - "where the unit holds the household reference person " - f"({PROPERTY_CAPITAL_OWNER_COLUMN}), else 0" + f"({terms}) of the household where the unit holds the household " + f"reference person ({PROPERTY_CAPITAL_OWNER_COLUMN}), else 0" ) @@ -277,7 +295,11 @@ def cohere_uc_capital( ) _require_columns( household, - ("household_id", *PENSION_CREDIT_PROPERTY_CAPITAL_SOURCES), + ( + "household_id", + *PENSION_CREDIT_PROPERTY_CAPITAL_SOURCES, + *PROPERTY_CAPITAL_SECURED_DEBT.values(), + ), label="household", ) @@ -417,8 +439,10 @@ def uc_property_capital_share( """The household property each unit holds for Universal Credit. The household's ``UC_PROPERTY_CAPITAL_SOURCES`` at - ``PROPERTY_CAPITAL_VALUATION`` for the household reference person's unit, - and nothing for any other unit. In benefit-unit row order. + ``PROPERTY_CAPITAL_VALUATION`` less the debt secured on each + (``PROPERTY_CAPITAL_SECURED_DEBT``, floored at zero per class) for the + household reference person's unit, and nothing for any other unit. In + benefit-unit row order. """ return _reference_person_unit_property( @@ -449,8 +473,10 @@ def pension_credit_property_capital_share( """The household property each unit holds for Pension Credit. The household's ``PENSION_CREDIT_PROPERTY_CAPITAL_SOURCES`` at - ``PROPERTY_CAPITAL_VALUATION`` for the household reference person's unit, - and nothing for any other unit. In benefit-unit row order. + ``PROPERTY_CAPITAL_VALUATION`` less the debt secured on each + (``PROPERTY_CAPITAL_SECURED_DEBT``, floored at zero per class; owned land + carries none) for the household reference person's unit, and nothing for + any other unit. In benefit-unit row order. """ return _reference_person_unit_property( @@ -474,12 +500,24 @@ def _reference_person_unit_property( *, sources: tuple[str, ...], ) -> np.ndarray: - values = household[list(sources)].apply(pd.to_numeric, errors="coerce") - property_value = values.sum(axis=1, min_count=len(sources)).to_numpy( - dtype=float, na_value=np.nan - ) - if not np.isfinite(property_value).all() or (property_value < 0.0).any(): - raise ValueError(f"household {list(sources)} must be finite and nonnegative.") + debts = [ + PROPERTY_CAPITAL_SECURED_DEBT[source] + for source in sources + if source in PROPERTY_CAPITAL_SECURED_DEBT + ] + values = household[[*sources, *debts]].apply(pd.to_numeric, errors="coerce") + raw = values.to_numpy(dtype=float, na_value=np.nan) + if not np.isfinite(raw).all() or (raw < 0.0).any(): + raise ValueError( + f"household {[*sources, *debts]} must be finite and nonnegative." + ) + property_value = np.zeros(len(household), dtype=float) + for source in sources: + net = PROPERTY_CAPITAL_VALUATION * values[source].to_numpy(dtype=float) + if source in PROPERTY_CAPITAL_SECURED_DEBT: + debt = values[PROPERTY_CAPITAL_SECURED_DEBT[source]].to_numpy(dtype=float) + net = np.maximum(net - debt, 0.0) + property_value += net reference_person = person[PROPERTY_CAPITAL_OWNER_COLUMN] if not pd.api.types.is_bool_dtype(reference_person.dtype): raise ValueError(f"{PROPERTY_CAPITAL_OWNER_COLUMN} must be a boolean column.") @@ -508,7 +546,7 @@ def _reference_person_unit_property( .isin(person.loc[reference_person, "person_benunit_id"]) .to_numpy(dtype=bool) ) - return np.where(holds, PROPERTY_CAPITAL_VALUATION * household_value, 0.0) + return np.where(holds, household_value, 0.0) def _property_share_receipt( @@ -528,6 +566,7 @@ def _property_share_receipt( receipt: dict[str, object] = { "owners": PROPERTY_CAPITAL_OWNERS, "valuation": PROPERTY_CAPITAL_VALUATION, + "secured_debt": dict(PROPERTY_CAPITAL_SECURED_DEBT), } for programme, (share, recorded) in shares.items(): with_share = available & (share > 0.0) diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_reporter_redraw.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_reporter_redraw.py index 50bad156e6..c376de20fe 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_reporter_redraw.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_reporter_redraw.py @@ -35,6 +35,7 @@ ) from microcosm.build.uk_runtime.uc_capital_coherence import ( PROPERTY_CAPITAL_OWNER_COLUMN, + PROPERTY_CAPITAL_SECURED_DEBT, UC_CAPITAL_WITH_PROPERTY_DEFINITION, UC_PROPERTY_CAPITAL_SHARE, UC_PROPERTY_CAPITAL_SHARE_DEFINITION, @@ -225,7 +226,15 @@ def redraw_spi_reported_uc( ) _require_columns( household, - ("household_id", "region", *UC_PROPERTY_CAPITAL_SOURCES), + ( + "household_id", + "region", + *UC_PROPERTY_CAPITAL_SOURCES, + *( + PROPERTY_CAPITAL_SECURED_DEBT[source] + for source in UC_PROPERTY_CAPITAL_SOURCES + ), + ), label="household", ) diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_take_up.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_take_up.py index f32d32d57e..9d901698cc 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_take_up.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_take_up.py @@ -78,6 +78,7 @@ ) from microcosm.build.uk_runtime.legacy_closure_take_up import ( LEGACY_CLOSURE_RESOURCE, + _reported_by_benunit, legacy_benefit_combinations, legacy_closure_claim_probabilities, load_move_to_uc_claim_rates, @@ -159,6 +160,17 @@ UC_TAKE_UP_DATASET_YEAR_RULE = "survey_year" UC_TAKE_UP_SOLVE_SCOPE = "great_britain" _OUTSIDE_SOLVE_REGION = "NORTHERN_IRELAND" +#: The legacy award a unit keeps off a Universal Credit claim: policyengine-uk +#: ends a claimant's or partner's income-related ESA once the family claims +#: Universal Credit (from 2.149.0; pe-uk#2563), so a unit on that award at the +#: interview claims none (microcosm#1095). +UC_TAKE_UP_KEPT_ESA_COLUMN = "esa_income_reported" +UC_TAKE_UP_KEPT_ESA_RULE = ( + "a unit whose claimant or partner reports income-related ESA " + "(esa_income_reported), and that neither reports Universal Credit nor is " + "moved off its legacy benefits, claims no Universal Credit, since " + "policyengine-uk ends that award once the family claims it" +) #: The calibration measure's family types with DWP's Stat-Xplore labels. UC_FAMILY_TYPES: tuple[tuple[str, str], ...] = ( ("SINGLE", "Single, no children"), @@ -677,7 +689,21 @@ def redraw_uc_take_up( .to_numpy(dtype=bool) ) population = uc_age_eligible_benunits(person, benunit, population_policy) - previous = benunit[UK_UC_TAKE_UP_OUTPUT].fillna(False).to_numpy(dtype=bool) + stored = benunit[UK_UC_TAKE_UP_OUTPUT].fillna(False).to_numpy(dtype=bool) + # policyengine-uk ends a claimant's or partner's income-related ESA once + # the family claims Universal Credit (esa_income_report_closed, from + # 2.149.0; pe-uk#2563). A unit whose claimant or partner reports the award, + # and that neither reports Universal Credit nor is moved off its legacy + # benefits, was on that award at the interview, so it claims no Universal + # Credit: a reported receipt is a fact (microcosm#1095). The closure draw + # reads the flag this stage writes, so the closure probabilities below use + # it too. + esa_kept = ( + _reported_by_benunit(person, benunit, UC_TAKE_UP_KEPT_ESA_COLUMN) + & ~moved + & ~reporter + ) + previous = stored & ~esa_kept weights = _household_to_benunit_weights( benunit, person=person, @@ -734,12 +760,23 @@ def redraw_uc_take_up( minimum_pool_sources=minimum_pool_sources, legacy_kept=(combination != "") & ~moved & ~reporter, ) + kept_off = esa_kept & stored & great_britain + esa_kept_receipt = { + "scope": "great_britain", + "column": UC_TAKE_UP_KEPT_ESA_COLUMN, + "rule": UC_TAKE_UP_KEPT_ESA_RULE, + "units_kept_off_universal_credit": small_cell_share( + float(weights[kept_off].sum()), + distinct_count(source_ids, kept_off, weights), + ), + "kept_off_support": support_band(distinct_count(source_ids, kept_off, weights)), + } working_age_hb = working_age_housing_benefit_receipt( person=person, benunit=benunit, population=population, moved=moved, - uc_before=previous | reporter, + uc_before=stored | reporter, uc_after=would_claim | reporter, weights=weights, great_britain=great_britain, @@ -762,6 +799,7 @@ def redraw_uc_take_up( **receipt, "population_state_pension_age": int(population_policy.state_pension_age), "working_age_housing_benefit": working_age_hb, + "income_related_esa_kept": esa_kept_receipt, }, entitlement_year=entitlement_year, ) @@ -925,12 +963,17 @@ def uc_take_up_operation_parameters() -> tuple[tuple[str, dict[str, object]], .. "undrawn_claims": ( "a reporter at 1, a moved unit at the claim probability " "uc_legacy_closure_take_up's rule gives it " - f"({LEGACY_CLOSURE_RESOURCE}), any other at its stored flag" + f"({LEGACY_CLOSURE_RESOURCE}), a unit keeping income-related " + "ESA at 0, any other at its stored flag" ), + "kept_legacy_award": UC_TAKE_UP_KEPT_ESA_RULE, "weight_mapping": "household_to_benunit", "residual_rate": UC_TAKE_UP_RESIDUAL_RATE, "solve_scope": UC_TAKE_UP_SOLVE_SCOPE, - "not_drawn": "keeps its stored flag", + "not_drawn": ( + "keeps its stored flag, except a unit keeping income-related " + "ESA, which claims none" + ), }, ), ) diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/was_wealth.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/was_wealth.py index d1318749f0..3205a061f5 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/was_wealth.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/was_wealth.py @@ -148,6 +148,54 @@ UK_WAS_NET_FINANCIAL_LIABILITIES = ("consumer_debt", "student_loan_balance") #: Absolute tolerance, in pounds, of the donor identity checks. UK_WAS_IDENTITY_TOLERANCE_GBP = 1.0 +#: The share-like holdings outside ISAs, split as policyengine-uk reads them +#: inside ``corporate_wealth`` (pe-uk#1974, 2.147.0; uk-data#501): directly +#: held shares are WAS UK shares plus employee shares and options +#: (DVFShUKVR8_aggr + DVFESHARESR8_aggr), unit and investment trusts WAS's +#: collective investments (DVFCollVR8_aggr, which asks about both in one +#: question). The chain draws the directly held fraction of the non-ISA total +#: last, from the donors holding either, so no earlier draw moves; the split +#: is written on the final total, so the two and the stocks-and-shares ISA sum +#: to ``corporate_wealth`` exactly and the engine's ``share_like_capital`` +#: stays ``corporate_wealth``. +UK_WAS_DIRECT_SHARES_COLUMN = "directly_held_shares" +UK_WAS_TRUSTS_COLUMN = "unit_and_investment_trusts" +UK_WAS_SHARE_SPLIT_COLUMNS = (UK_WAS_DIRECT_SHARES_COLUMN, UK_WAS_TRUSTS_COLUMN) +UK_WAS_DIRECT_SHARE_FRACTION_COLUMN = "directly_held_share_fraction" +#: The fraction a household takes where the chain drew none but the final +#: non-ISA total is positive (a clip that lowered the ISA alone): directly +#: held, the holding most donors with share-like wealth carry. The receipt +#: counts such rows. +UK_WAS_UNDRAWN_DIRECT_SHARE_FRACTION = 1.0 +#: The debt secured on each class of other property, by the asset it is +#: secured on (WAS DVHseDebtR8_sum + DVBLtDebtR8_sum on the other houses and +#: buy-to-let property; DVBldDebtR8_sum on buildings and land other than +#: houses), which policyengine-uk deducts after the sale costs in valuing UC +#: property capital (UC Regs 2013 reg 49(1)(b); pe-uk 2.136.1). Each is drawn +#: after the chain's other draws, from the donors holding its asset, and is +#: zero where the asset is zero. The debts are parts of the household's +#: mortgages on other property (``other_mortgage``): where their sum passes +#: it, both are scaled down to it, and the receipt counts the rows. +UK_WAS_PROPERTY_SECURED_DEBT: Mapping[str, str] = MappingProxyType( + { + "other_residential_property_secured_debt": "other_residential_property_value", + "non_residential_property_secured_debt": "non_residential_property_value", + } +) +UK_WAS_SECURED_DEBT_WITHIN = UK_WAS_OTHER_MORTGAGE_COLUMN +#: The draws appended after consumer debt, each from the donors (and for the +#: recipients) holding the column it names, in chain order. +UK_WAS_HOLDER_STRATA: Mapping[str, str] = MappingProxyType( + { + UK_WAS_DIRECT_SHARE_FRACTION_COLUMN: "corporate_wealth_excl_isa", + **UK_WAS_PROPERTY_SECURED_DEBT, + } +) +#: The appended outputs: the share split and the secured debts. +UK_WAS_APPENDED_OUTPUT_COLUMNS = ( + *UK_WAS_SHARE_SPLIT_COLUMNS, + *UK_WAS_PROPERTY_SECURED_DEBT, +) UK_WAS_WEALTH_OUTPUT_COLUMNS = ( "owned_land", "property_wealth", @@ -171,9 +219,15 @@ for column in UK_WAS_WEALTH_OUTPUT_COLUMNS if column != "student_loan_balance" ) +#: Every column the stage emits: the chain's outputs, then the appended split +#: and debts (all household columns, all nonnegative). +UK_WAS_WEALTH_STAGE_OUTPUT_COLUMNS = ( + *UK_WAS_WEALTH_OUTPUT_COLUMNS, + *UK_WAS_APPENDED_OUTPUT_COLUMNS, +) UK_WAS_WEALTH_NONNEGATIVE_OUTPUT_COLUMNS = tuple( column - for column in UK_WAS_WEALTH_OUTPUT_COLUMNS + for column in UK_WAS_WEALTH_STAGE_OUTPUT_COLUMNS if column != "net_financial_wealth" ) UK_WAS_WEALTH_DECLARED_SEEDS = {"was_wealth": 0} @@ -289,6 +343,10 @@ "DVHseValR8_sum": "other_houses_value", "DVBltValR8_sum": "buy_to_let_property_value", "DVBlDValR8_sum": "non_residential_property_value", + # The debt secured on each (microcosm#1095, the WAS property draw). + "DVHseDebtR8_sum": "other_houses_secured_debt", + "DVBLtDebtR8_sum": "buy_to_let_secured_debt", + "DVBldDebtR8_sum": "non_residential_property_secured_debt", "DVTotinc_bhcR8": "household_net_income", "DVSaValR8_aggr": "savings", "vcarnr8": "num_vehicles", @@ -378,10 +436,13 @@ def __call__(self, frame: Frame) -> Frame: self.last_fit_weight_records = imputation.fit_weight_records capped, capped_rows = cap_derived_totals_to_donor_range(imputation.draws, donor) clip_result = support_clip_to_donor(capped, donor) - household_draws = clip_result.clipped + household_draws, appended_rows = write_share_split_and_secured_debt( + clip_result.clipped + ) identities = { **wealth_identity_violations(household_draws), **capped_rows, + **appended_rows, } household_draws["num_vehicles"] = ( np.rint(household_draws["num_vehicles"]).clip(lower=0).astype("int64") @@ -394,7 +455,10 @@ def __call__(self, frame: Frame) -> Frame: ) person = frame.table("person").copy() household = frame.table("household").copy() - for column in UK_WAS_WEALTH_HOUSEHOLD_OUTPUT_COLUMNS: + for column in ( + *UK_WAS_WEALTH_HOUSEHOLD_OUTPUT_COLUMNS, + *UK_WAS_APPENDED_OUTPUT_COLUMNS, + ): household[column] = household_draws[column].to_numpy() person["student_loan_balance"] = allocate_student_loan_balance_to_people( household_balances=household_draws["student_loan_balance"].clip(lower=0), @@ -426,7 +490,7 @@ def __call__(self, frame: Frame) -> Frame: @staticmethod def output_columns() -> tuple[str, ...]: - return UK_WAS_WEALTH_OUTPUT_COLUMNS + return UK_WAS_WEALTH_STAGE_OUTPUT_COLUMNS def checkpoint_metadata(self) -> dict[str, object]: if self.last_result is None: @@ -489,6 +553,37 @@ def clean_was_household_table(raw: pd.DataFrame) -> pd.DataFrame: cleaned["corporate_wealth"] = ( cleaned["corporate_wealth_excl_isa"] + cleaned["stocks_and_shares_isa"] ) + cleaned[UK_WAS_DIRECT_SHARES_COLUMN] = ( + cleaned["uk_shares"] + cleaned["emp_shares_options"] + ) + cleaned[UK_WAS_TRUSTS_COLUMN] = cleaned["unit_investment_trusts"] + holders = cleaned["corporate_wealth_excl_isa"] > 0.0 + cleaned[UK_WAS_DIRECT_SHARE_FRACTION_COLUMN] = ( + cleaned[UK_WAS_DIRECT_SHARES_COLUMN] + / cleaned["corporate_wealth_excl_isa"].where(holders, 1.0) + ).where(holders, 0.0) + cleaned["other_residential_property_secured_debt"] = ( + cleaned["other_houses_secured_debt"] + cleaned["buy_to_let_secured_debt"] + ) + negative = [ + source + for source, column in _RAW_TO_CLEAN.items() + if column + in ( + "uk_shares", + "emp_shares_options", + "unit_investment_trusts", + "other_houses_secured_debt", + "buy_to_let_secured_debt", + "non_residential_property_secured_debt", + ) + and (cleaned[column] < 0.0).any() + ] + if negative: + raise ValueError( + f"WAS donor {negative} carry negative values; a holding or a secured " + "debt has no reviewed reading for a sentinel." + ) cleaned["student_loan_balance"] = ( cleaned["total_loans"] - cleaned["total_loans_exc_slc"] ) @@ -521,6 +616,14 @@ def clean_was_household_table(raw: pd.DataFrame) -> pd.DataFrame: components=UK_WAS_DERIVED_TOTALS["mortgage_debt"][:-1], ) _assert_donor_net_financial_identity(cleaned) + secured = cleaned[list(UK_WAS_PROPERTY_SECURED_DEBT)].sum(axis=1) + above = secured - cleaned[UK_WAS_SECURED_DEBT_WITHIN] > UK_WAS_IDENTITY_TOLERANCE_GBP + if above.any(): + raise ValueError( + f"WAS donor secured debt {list(UK_WAS_PROPERTY_SECURED_DEBT)} passes " + f"{UK_WAS_SECURED_DEBT_WITHIN} on {int(above.sum())} row(s); the debts " + "are parts of the mortgages on other property." + ) cleaned["region"] = cleaned["region_code"].map(REGIONS) return cleaned[ [ @@ -535,6 +638,8 @@ def clean_was_household_table(raw: pd.DataFrame) -> pd.DataFrame: "other_property_mortgage", *UK_WAS_WEALTH_HOUSEHOLD_OUTPUT_COLUMNS, "student_loan_balance", + UK_WAS_DIRECT_SHARE_FRACTION_COLUMN, + *UK_WAS_APPENDED_OUTPUT_COLUMNS, ] ] @@ -707,9 +812,14 @@ class UKWASWealthImputationResult: #: The chain's segments, each with its own model and child seed: #: 1 land; 2 main residence (owner stratum); 3 the other property components; #: 4 pension and share-like wealth; 5 the financial components, vehicles and -#: the student loan balance; 6 mortgage debt (mortgaged stratum); 7 consumer -#: debt. Totals are derived between segments from the components drawn so far. -UK_WAS_CHAIN_SEGMENTS = 8 +#: the student loan balance; 6 the main-residence mortgage (mortgaged +#: stratum); 7 the mortgages on other property; 8 consumer debt; then, each +#: from the holders of its column (``UK_WAS_HOLDER_STRATA``), 9 the directly +#: held fraction of the non-ISA share-like total, 10 the debt secured on other +#: residential property and 11 on non-residential property. Totals are +#: derived between segments from the components drawn so far. The appended +#: segments come last, so the first eight draw as they did before them. +UK_WAS_CHAIN_SEGMENTS = 11 def was_wealth_segment_seeds( @@ -811,11 +921,10 @@ def run_segment( targets: Sequence[str], *, stratum: Sequence[str] | None = None, + holders: str | None = None, ) -> None: model = next(segment_models) - if stratum is None: - donor_rows, recipient_rows = donor_encoded, recipient_encoded - else: + if stratum is not None: donor_rows = donor_encoded.loc[np.isin(donor_category, stratum)] recipient_rows = recipient_encoded.loc[np.isin(recipient_category, stratum)] if donor_rows.empty: @@ -823,6 +932,18 @@ def run_segment( f"WAS donor has no household in the tenure stratum " f"{list(stratum)} that {list(targets)} is fitted on." ) + elif holders is not None: + donor_rows = donor_encoded.loc[ + pd.to_numeric(donor_encoded[holders], errors="coerce").to_numpy() > 0.0 + ] + recipient_rows = recipient_encoded.loc[raw[holders].to_numpy() > 0.0] + if donor_rows.empty: + raise ValueError( + f"WAS donor has no household holding {holders!r} that " + f"{list(targets)} is fitted on." + ) + else: + donor_rows, recipient_rows = donor_encoded, recipient_encoded state = model.start_chain( donor_rows, list(base_predictors), @@ -963,8 +1084,57 @@ def derive_total(total: str) -> None: recipient_encoded["mortgage_debt"] = raw["mortgage_debt"] run_segment((*base, *prior_outputs, "mortgage_debt"), ("consumer_debt",)) raw["net_financial_wealth"] = derived_net_financial_wealth(raw) + if segments == 8: + return _partial_result(raw, fit_records, segment_seeds) + # The appended draws (microcosm#1095): each from the holders of its column + # only, conditioned on everything the chain drew; nothing before them + # reads them. + for column in ( + "corporate_wealth_excl_isa", + UK_WAS_OTHER_MORTGAGE_COLUMN, + "consumer_debt", + ): + recipient_encoded[column] = raw[column] + donor_encoded["corporate_wealth_excl_isa"] = donor_encoded[ + "corporate_wealth_excl_isa" + ].astype(float) + run_segment( + (*base, *prior_outputs, "corporate_wealth_excl_isa"), + (UK_WAS_DIRECT_SHARE_FRACTION_COLUMN,), + holders=UK_WAS_HOLDER_STRATA[UK_WAS_DIRECT_SHARE_FRACTION_COLUMN], + ) + if segments == 9: + return _partial_result(raw, fit_records, segment_seeds) + debt_predictors = ( + *base, + *prior_outputs, + "main_residence_mortgage", + UK_WAS_OTHER_MORTGAGE_COLUMN, + "consumer_debt", + ) + residential, non_residential = UK_WAS_PROPERTY_SECURED_DEBT + run_segment( + debt_predictors, + (residential,), + holders=UK_WAS_HOLDER_STRATA[residential], + ) + if segments == 10: + return _partial_result(raw, fit_records, segment_seeds) + recipient_encoded[residential] = raw[residential] + run_segment( + (*debt_predictors, residential), + (non_residential,), + holders=UK_WAS_HOLDER_STRATA[non_residential], + ) return UKWASWealthImputationResult( - draws=raw.loc[:, (*UK_WAS_WEALTH_OUTPUT_COLUMNS, *UK_WAS_DRAWN_ONLY_COLUMNS)], + draws=raw.loc[ + :, + ( + *UK_WAS_WEALTH_OUTPUT_COLUMNS, + *UK_WAS_DRAWN_ONLY_COLUMNS, + *UK_WAS_APPENDED_DRAWN_COLUMNS, + ), + ], fit_weight_records=tuple(fit_records), segment_seeds=segment_seeds, ) @@ -977,6 +1147,9 @@ def derive_total(total: str) -> None: "main_residence_mortgage", *UK_WAS_INTERNAL_COMPONENT_COLUMNS, ) +#: The appended segments' draws, from which the split and the secured debts +#: are written on the final totals (:func:`write_share_split_and_secured_debt`). +UK_WAS_APPENDED_DRAWN_COLUMNS = tuple(UK_WAS_HOLDER_STRATA) def derived_net_financial_wealth(draws: pd.DataFrame) -> pd.Series: @@ -995,7 +1168,11 @@ def _partial_result( ) -> UKWASWealthImputationResult: produced = [ column - for column in (*UK_WAS_WEALTH_OUTPUT_COLUMNS, *UK_WAS_DRAWN_ONLY_COLUMNS) + for column in ( + *UK_WAS_WEALTH_OUTPUT_COLUMNS, + *UK_WAS_DRAWN_ONLY_COLUMNS, + *UK_WAS_APPENDED_DRAWN_COLUMNS, + ) if column in raw ] return UKWASWealthImputationResult( @@ -1108,9 +1285,78 @@ def wealth_identity_violations(table: pd.DataFrame) -> dict[str, int]: violations["net_financial_wealth_violation_rows"] = int( (gap.abs() > tolerance).sum() ) + if set(UK_WAS_SHARE_SPLIT_COLUMNS) <= set(table.columns): + # The split and the ISA are corporate_wealth (microcosm#1095). + gap = table["corporate_wealth"] - table.loc[ + :, [*UK_WAS_SHARE_SPLIT_COLUMNS, "stocks_and_shares_isa"] + ].sum(axis=1) + violations["share_split_violation_rows"] = int((gap.abs() > tolerance).sum()) + if set(UK_WAS_PROPERTY_SECURED_DEBT) <= set(table.columns): + # Each debt sits on a held asset, and together they are within the + # mortgages on other property where the table carries them. + off = pd.Series(False, index=table.index) + for debt, asset in UK_WAS_PROPERTY_SECURED_DEBT.items(): + off |= (table[debt] > 0.0) & (table[asset] <= 0.0) + off |= (table.loc[:, list(UK_WAS_PROPERTY_SECURED_DEBT)] < 0.0).any(axis=1) + if UK_WAS_SECURED_DEBT_WITHIN in table.columns: + off |= ( + table.loc[:, list(UK_WAS_PROPERTY_SECURED_DEBT)].sum(axis=1) + - table[UK_WAS_SECURED_DEBT_WITHIN] + > tolerance + ) + violations["secured_debt_violation_rows"] = int(off.sum()) return violations +def write_share_split_and_secured_debt( + draws: pd.DataFrame, +) -> tuple[pd.DataFrame, dict[str, int]]: + """Write the share split and the secured debts on the final draws. + + The split takes the drawn directly held fraction of the final non-ISA + share-like total (``corporate_wealth`` less ``stocks_and_shares_isa``, + floored at zero; ``UK_WAS_UNDRAWN_DIRECT_SHARE_FRACTION`` where the chain + drew none), so the two and the ISA sum to ``corporate_wealth``. Each + secured debt is zero where the final value of its asset is zero, and the + two are scaled down together where they pass ``other_mortgage``. Run after + the donor-range cap and the support clip, which may move the totals and the + assets these are written on. Returns the draws with the four outputs and + the rows each rule touched. + """ + + out = draws.copy() + non_isa = ( + pd.to_numeric(out["corporate_wealth"], errors="coerce") + - pd.to_numeric(out["stocks_and_shares_isa"], errors="coerce") + ).clip(lower=0.0) + drawn = pd.to_numeric(out[UK_WAS_DIRECT_SHARE_FRACTION_COLUMN], errors="coerce") + held = pd.to_numeric(out["corporate_wealth_excl_isa"], errors="coerce") > 0.0 + undrawn = (non_isa > 0.0) & ~held + fraction = drawn.where(held, UK_WAS_UNDRAWN_DIRECT_SHARE_FRACTION).clip(0.0, 1.0) + out[UK_WAS_DIRECT_SHARES_COLUMN] = fraction * non_isa + out[UK_WAS_TRUSTS_COLUMN] = non_isa - out[UK_WAS_DIRECT_SHARES_COLUMN] + zeroed = 0 + for debt, asset in UK_WAS_PROPERTY_SECURED_DEBT.items(): + value = pd.to_numeric(out[debt], errors="coerce").clip(lower=0.0) + without = (pd.to_numeric(out[asset], errors="coerce") <= 0.0) & (value > 0.0) + zeroed += int(without.sum()) + out[debt] = value.where(~without, 0.0) + debts = list(UK_WAS_PROPERTY_SECURED_DEBT) + total = out[debts].sum(axis=1) + within = pd.to_numeric(out[UK_WAS_SECURED_DEBT_WITHIN], errors="coerce").clip( + lower=0.0 + ) + above = total > within + scale = (within / total.where(above, 1.0)).where(above, 1.0) + for debt in debts: + out[debt] = out[debt] * scale + return out, { + "share_split_undrawn_fraction_rows": int(undrawn.sum()), + "secured_debt_zeroed_without_asset_rows": zeroed, + f"secured_debt_scaled_to_{UK_WAS_SECURED_DEBT_WITHIN}_rows": int(above.sum()), + } + + def encode_qrf_predictor_pair( donor: pd.DataFrame, recipient: pd.DataFrame, @@ -1450,6 +1696,30 @@ def _assert_chain_declaration(stage: SourceStageSpec) -> None: "was_wealth derived_totals drifted: manifest declares " f"{declared_totals!r}, runtime uses {runtime_totals!r}." ) + appended = { + "holder_strata": { + str(target): str(holder) + for target, holder in dict( + operation.parameters.get("holder_strata", {}) + ).items() + }, + "share_split": dict(operation.parameters.get("share_split", {})), + "secured_debt_within": operation.parameters.get("secured_debt_within"), + } + runtime_appended = { + "holder_strata": dict(UK_WAS_HOLDER_STRATA), + "share_split": { + "fraction": UK_WAS_DIRECT_SHARE_FRACTION_COLUMN, + "outputs": list(UK_WAS_SHARE_SPLIT_COLUMNS), + "undrawn_fraction": UK_WAS_UNDRAWN_DIRECT_SHARE_FRACTION, + }, + "secured_debt_within": UK_WAS_SECURED_DEBT_WITHIN, + } + if appended != runtime_appended: + raise ValueError( + "was_wealth appended draws drifted: manifest declares " + f"{appended!r}, runtime uses {runtime_appended!r}." + ) def _qrf_n_estimators(stage: SourceStageSpec) -> int: diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/worker_identity.py b/packages/microcosm-build/src/microcosm/build/us_runtime/worker_identity.py index db3b05654b..f4f9606e3f 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/worker_identity.py +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/worker_identity.py @@ -28,7 +28,7 @@ PRIMARY_QRF_WORKER_MODULE = "microcosm.build.us_runtime.puf_qrf_worker" PRIMARY_QRF_INTERPRETER_PLACEHOLDER = "{python_interpreter}" APPROVED_UV_LOCK_SHA256 = ( - "66ed380da8ad2caa67a6147793e9e8ed1906f0815959c50cb921b2005b5dc547" + "26d2e9e4aab5efe60357c7b06affbf75c4129566dc3754cfa155501294feea7b" ) LEGACY_CAMPAIGN_UV_LOCK_SHA256 = ( "27f47e385cfa35e2644a37410d1804b361ad9aee123577551c8421547bda65ee" diff --git a/packages/microcosm-build/tests/engine/uk/test_uk_bonus_sacrifice_anchor.py b/packages/microcosm-build/tests/engine/uk/test_uk_bonus_sacrifice_anchor.py new file mode 100644 index 0000000000..6866b867a8 --- /dev/null +++ b/packages/microcosm-build/tests/engine/uk/test_uk_bonus_sacrifice_anchor.py @@ -0,0 +1,79 @@ +"""The bonus-sacrifice anchor follows the locked policyengine-uk (microcosm#1340). + +The salary_sacrifice stage converts FRS bonuses until the engine's projection +of them meets OBR's 2027-28 base above the GBP 2,000 threshold. These tests +fail if the engine moves the growth it projects either route or the weights +by, the upper earnings limit, or the rule that the threshold applies to the +two routes summed. +""" + +from __future__ import annotations + +import importlib.util + +import numpy as np +import pytest + +from microcosm.build.uk_runtime.salary_sacrifice import ( + bonus_sacrifice_excess, + load_bonus_sacrifice_anchor, +) +from test_support.paths import paths_for + +_ROOT = paths_for("microcosm-build").repository + + +def _tool(): + spec = importlib.util.spec_from_file_location( + "pin_uk_bonus_sacrifice_anchor", + _ROOT / "tools/pin_uk_bonus_sacrifice_anchor.py", + ) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +def test_the_anchor_is_the_installed_engines() -> None: + assert _tool().build_anchor() == load_bonus_sacrifice_anchor() + + +@pytest.mark.parametrize( + ("salary", "bonus"), + [(0.0, 1_000.0), (1_500.0, 1_000.0), (3_000.0, 1_000.0), (0.0, 5_000.0)], +) +def test_the_bonus_routes_excess_is_the_engines_cap_arithmetic( + salary: float, bonus: float +) -> None: + import policyengine_uk + + def excess(bonus_amount: float) -> float: + simulation = policyengine_uk.Simulation( + situation={ + "people": { + "worker": { + "age": 40, + "employment_income": {2029: 100_000}, + "pension_contributions_via_salary_sacrifice": {2029: salary}, + "pension_contributions_via_bonus_sacrifice": { + 2029: bonus_amount + }, + } + }, + "benunits": {"unit": {"members": ["worker"]}}, + "households": {"home": {"members": ["worker"]}}, + } + ) + return float( + np.asarray( + simulation.calculate("salary_sacrifice_pension_ni_excess", 2029) + )[0] + ) + + # The threshold is the engine's 2029 cap, which the OBR's base lies above. + assert excess(bonus) - excess(0.0) == pytest.approx( + float( + bonus_sacrifice_excess( + np.asarray([salary]), np.asarray([bonus]), earnings_growth=1.0 + )[0] + ) + ) diff --git a/packages/microcosm-build/tests/engine/uk/test_uk_carers_allowance_take_up.py b/packages/microcosm-build/tests/engine/uk/test_uk_carers_allowance_take_up.py index 03cbc7619d..7467525759 100644 --- a/packages/microcosm-build/tests/engine/uk/test_uk_carers_allowance_take_up.py +++ b/packages/microcosm-build/tests/engine/uk/test_uk_carers_allowance_take_up.py @@ -1,11 +1,12 @@ """Engine lockstep for the Carer's Allowance take-up stage (microcosm#1319). -The stage opens the claim flag to carers outside Scotland whose care hours -meet the engine's condition, who report no allowance, and whom the engine's -earnings test holds gainfully employed at the survey year. These tests fail if -policyengine-uk moves the hours condition or the earnings limit, adds a -condition the stage does not read, or starts applying an earnings test to -Carer Support Payment, whose absence keeps Scotland closed. +The stage opens the claim flag to carers whose care hours meet the engine's +condition, who report no allowance, and whom the engine's earnings test holds +gainfully employed at the survey year; in Scotland the flag is Carer Support +Payment's. These tests fail if policyengine-uk moves the hours condition or +the earnings limit, adds a condition the stage does not read, or stops +applying Carer Support Payment's own earnings limit, on which drawing Scotland +rests. """ from __future__ import annotations @@ -112,27 +113,28 @@ def test_the_earnings_limit_is_the_only_bar_left_for_a_non_reporting_carer() -> assert (entitled_2025[weekly_pay > 196.0] == 0).all() -def test_scotland_stays_closed_though_carer_support_payment_now_tests_earnings() -> ( - None -): - simulation = _simulation(_carers([400.0]), 2025, region="SCOTLAND") +def test_a_drawn_scottish_carer_is_paid_only_under_the_support_payments_limit() -> None: + simulation = _simulation(_carers([100.0, 400.0]), 2025, region="SCOTLAND") # The stage reads Scotland off the household region; the engine's country # follows it. A top-level calculate returns the enum decoded. country = simulation.calculate("country", 2025, decode_enums=True) - assert [str(value) for value in country] == ["SCOTLAND"] - assert np.asarray(simulation.calculate(_TEST, 2025)).all() - # From policyengine-uk 2.146.1 Carer Support Payment applies the earnings - # limit (PolicyEngine/policyengine-uk#2473): a gainfully employed carer is - # paid neither benefit with the flag true. Scotland stays closed until a - # follow-up opens it (microcosm#1319). - assert ( - np.asarray(simulation.calculate("carer_support_payment_pre_overlap", 2025))[0] - == 0 + assert [str(value) for value in country] == ["SCOTLAND", "SCOTLAND"] + # Scotland is drawn (María's ruling of 2026-10-23): with the flag true, + # Carer Support Payment pays a carer under its own earnings limit and not + # one over it (policyengine-uk 2.146.1, PolicyEngine/policyengine-uk#2473), + # and the allowance pays neither. + support = np.asarray( + simulation.calculate("carer_support_payment_pre_overlap", 2025) ) + assert support[0] > 0 + assert support[1] == 0 + assert np.asarray(simulation.calculate(_TEST, 2025))[1] assert ( - np.asarray(simulation.calculate("carers_allowance_pre_overlap", 2025))[0] == 0 + np.asarray(simulation.calculate("carers_allowance_pre_overlap", 2025))[1] == 0 + ) + assert "In Scotland the flag is Carer Support Payment's" in ( + ca.CARERS_ALLOWANCE_ELIGIBILITY ) - assert "applies its earnings limit from 2.146.1" in ca.CARERS_ALLOWANCE_ELIGIBILITY class _CertainContract: @@ -188,7 +190,8 @@ def test_the_stage_reaches_the_carers_the_2025_rise_entitles() -> None: _frame(), engine=engine, contract=_CertainContract() ) flag = result.frame.table("person")["would_claim_carers_allowance"].tolist() - assert flag == [True, False, False, True] + # Scotland is drawn as Wales is (María's ruling of 2026-10-23). + assert flag == [True, True, False, True] assert result.evidence()["weekly_earnings_limit"] == 151.0 # Projected from the survey year as the released file is, the Welsh carer # over the 2024-25 limit and under 2025-26's is entitled and would claim; @@ -201,6 +204,12 @@ def test_the_stage_reaches_the_carers_the_2025_rise_entitles() -> None: )["carers_allowance_pre_overlap"] assert before[0] == 0 assert after[0] > 0 - # Scotland and the carer under the limit who reports nothing stay unpaid. + # The Scottish carer is paid Carer Support Payment under its own 2025-26 + # limit, not the allowance; the carer under the limit who reports nothing + # stays unpaid. + support = engine.materialize( + result.frame, ["carer_support_payment_pre_overlap"], 2025, dataset_period=2024 + )["carer_support_payment_pre_overlap"] + assert support[1] > 0 assert after[1] == 0 assert after[2] == 0 diff --git a/packages/microcosm-build/tests/engine/uk/test_uk_donor_uprating.py b/packages/microcosm-build/tests/engine/uk/test_uk_donor_uprating.py index c4e4930881..65fab5b5c9 100644 --- a/packages/microcosm-build/tests/engine/uk/test_uk_donor_uprating.py +++ b/packages/microcosm-build/tests/engine/uk/test_uk_donor_uprating.py @@ -21,7 +21,9 @@ def test_declared_factors_lockstep_with_the_installed_engine() -> None: for column, spec in lcfs_receipt["columns"].items() if spec.get("parameter_path") == CPI ] - assert len(cpi_columns) == 13 + # Thirteen diary spend columns and, from microcosm#1278, the liquid and + # solid heating fuels. + assert len(cpi_columns) == 15 for column in cpi_columns: assert lcfs_factors[column] == pytest.approx(diary_ratio), column assert lcfs_receipt["columns"][column]["following"] == reader(CPI, 2025) diff --git a/packages/microcosm-build/tests/engine/uk/test_uk_energy_price_basis.py b/packages/microcosm-build/tests/engine/uk/test_uk_energy_price_basis.py new file mode 100644 index 0000000000..ca91fb1e87 --- /dev/null +++ b/packages/microcosm-build/tests/engine/uk/test_uk_energy_price_basis.py @@ -0,0 +1,120 @@ +"""policyengine-uk reads the energy price period the UK writer declares. + +From policyengine-uk 2.148.1 (PolicyEngine/policyengine-uk#2571) the engine +projects stored domestic energy spending from the price period a dataset +declares in its root ``energy_price_basis`` attribute, and keeps spending +without one at its stored prices in every later year +(PolicyEngine/policyengine-uk#2526). +""" + +from __future__ import annotations + +from pathlib import Path + +import numpy as np +import pandas as pd + +from microcosm.build.uk_runtime.national_frame import ( + UK_ENERGY_PRICE_BASIS_COLUMNS, + uk_national_frame, + write_uk_national_frame, +) +from microcosm.frame import MassChangeRecord, WeightKind + + +def _frame(**extra): + household = pd.DataFrame( + { + "household_id": np.asarray([11, 12], dtype="int64"), + "household_weight": [10.0, 20.0], + "electricity_consumption": [900.0, 1_100.0], + "gas_consumption": [700.0, 0.0], + "domestic_energy_consumption": [1_600.0, 1_100.0], + **extra, + } + ) + return uk_national_frame( + person=pd.DataFrame( + { + "person_id": np.asarray([1, 2], dtype="int64"), + "person_benunit_id": np.asarray([101, 201], dtype="int64"), + "person_household_id": np.asarray([11, 12], dtype="int64"), + } + ), + benunit=pd.DataFrame({"benunit_id": np.asarray([101, 201], dtype="int64")}), + household=household, + time_period="2024", + weight_kind=WeightKind.DESIGN, + mass_log=( + MassChangeRecord( + entity="household", + old_total=30.0, + new_total=30.0, + declared_factor=1.0, + reason="Toy reviewed record.", + ), + ), + ) + + +def test_the_declared_columns_are_the_ones_the_engine_projects_from_a_basis() -> None: + from policyengine_uk.data.economic_assumptions import ( + DATASET_UPRATING_EXCLUSIONS, + ) + + assert set(UK_ENERGY_PRICE_BASIS_COLUMNS) == set(DATASET_UPRATING_EXCLUSIONS) + + +def test_policyengine_uk_reads_the_written_declaration(tmp_path: Path) -> None: + from policyengine_uk.data.energy_price_basis import ( + EnergyPriceBasis, + read_energy_price_basis, + ) + + path = write_uk_national_frame(_frame(), tmp_path / "energy.h5") + assert read_energy_price_basis(path) == EnergyPriceBasis("calendar_year", 2024) + + +def test_the_engine_projects_declared_energy_spending_by_its_price_index( + tmp_path: Path, +) -> None: + """End to end through Microsimulation (Vahid's review of #1383, item 3). + + A written file declares calendar-2024 prices, so the engine carries each + household's energy spending to a later year by its energy price index, + every household and column alike. The same file without the declaration + keeps its stored spending in every year. + """ + + import h5py + from policyengine_uk import Microsimulation + from policyengine_uk.data.economic_assumptions import ENERGY_PRICE_INDEX + from policyengine_uk.data.energy_price_basis import ENERGY_PRICE_BASIS_ATTRIBUTE + + # The household inputs the engine's yearly uprating reads. + frame = _frame( + region=["LONDON", "WALES"], + tenure_type=["OWNED_OUTRIGHT", "RENT_PRIVATELY"], + council_tax=[0.0, 0.0], + rent=[0.0, 0.0], + ) + stored = frame.table("household").set_index("household_id") + declared = write_uk_national_frame(frame, tmp_path / "declared.h5") + undeclared = write_uk_national_frame(frame, tmp_path / "undeclared.h5") + with h5py.File(undeclared, "a") as handle: + del handle.attrs[ENERGY_PRICE_BASIS_ATTRIBUTE] + + simulation = Microsimulation(dataset=str(declared)) + index = simulation.tax_benefit_system.parameters.get_child(ENERGY_PRICE_INDEX) + flat = Microsimulation(dataset=str(undeclared)) + for year in (2025, 2026): + ratio = index(f"{year}-01-01") / index("2024-01-01") + assert ratio > 1.0 + for column in UK_ENERGY_PRICE_BASIS_COLUMNS: + np.testing.assert_allclose( + simulation.calculate(column, year).values, + stored[column].to_numpy() * ratio, + ) + np.testing.assert_allclose( + flat.calculate(column, year).values, stored[column].to_numpy() + ) diff --git a/packages/microcosm-build/tests/engine/uk/test_uk_esa_support_group.py b/packages/microcosm-build/tests/engine/uk/test_uk_esa_support_group.py index d665c6ca39..e2a4e69987 100644 --- a/packages/microcosm-build/tests/engine/uk/test_uk_esa_support_group.py +++ b/packages/microcosm-build/tests/engine/uk/test_uk_esa_support_group.py @@ -6,7 +6,10 @@ benefit cap's ESA exemption follows the survey's answer. Since policyengine-uk 2.135.0 each scheme applies its own cap: this tenant on income-related ESA meets Housing Benefit's, whose specified-benefit exemption -reads the stored group. +reads the stored group. Since 2.149.0 a claim for Universal Credit ends an +income-related ESA award (esa_income_report_closed, pe-uk#2563), and the +engine's default unit claims it, so the tenant, still on legacy ESA, claims +no Universal Credit. """ from __future__ import annotations @@ -37,7 +40,7 @@ def _frame(in_support_group: bool): "esa_includes_support_component": [in_support_group], } ) - benunit = pd.DataFrame({"benunit_id": [1]}) + benunit = pd.DataFrame({"benunit_id": [1], "would_claim_uc": [False]}) household = pd.DataFrame( { "household_id": [1], diff --git a/packages/microcosm-build/tests/engine/uk/test_uk_student_loans.py b/packages/microcosm-build/tests/engine/uk/test_uk_student_loans.py index f08ec0df75..eb1b22a0f4 100644 --- a/packages/microcosm-build/tests/engine/uk/test_uk_student_loans.py +++ b/packages/microcosm-build/tests/engine/uk/test_uk_student_loans.py @@ -13,3 +13,78 @@ def test_values_match_policyengine_enum_when_available() -> None: assert set(STUDENT_LOAN_ENUM_DOMAIN) <= engine_names assert "PLAN_4" in engine_names assert "PLAN_4" not in STUDENT_LOAN_ENUM_DOMAIN + + +def test_the_engine_relabels_course_dated_plans_by_age_at_2025() -> None: + """policyengine-uk projects the 2024 dataset to the 2025 calibration year and + relabels every holder by a course started at 18 (uprate_student_loan_plans, + step 1), while the stage dates a course from the age its borrower left + full-time education (microcosm#868, #1299). Where the two dates fall on + either side of a plan boundary, or the age rule writes the loan off, the + engine's plan is the one the calibration measures at 2025. This pins which, + so an engine that starts to keep the stage's dating fails it and the SLC + rows are re-measured (microcosm#1095). The engine fix is tracked in + PolicyEngine/policyengine-uk#2636, item 4.""" + + from policyengine_uk.data import UKSingleYearDataset + from policyengine_uk.data.economic_assumptions import uprate_student_loan_plans + from policyengine_uk.system import system + + from microcosm.build.uk_runtime.student_loans import course_start_year + + year = 2025 + # (age, age left full-time education, the stage's plan) + people = [ + (33, 25, "PLAN_2"), # left at 25: a 2014 course, Plan 2 + (25, 21, "PLAN_2"), # left at 21: a 2018 course, both rules agree + (45, 21, "PLAN_1"), # a 1998 course, both rules agree + (50, 21, "PLAN_1"), # a 1993 course: the age rule writes it off + ] + starts = course_start_year( + year=year, + age=np.asarray([age for age, _, _ in people]), + age_left=np.asarray([left for _, left, _ in people]), + ) + assert starts.tolist() == [2014, 2018, 1998, 1993] + person = pd.DataFrame( + { + "person_id": np.arange(1, len(people) + 1), + "person_benunit_id": np.arange(1, len(people) + 1), + "person_household_id": np.arange(1, len(people) + 1), + "age": [age for age, _, _ in people], + "student_loan_plan": [plan for _, _, plan in people], + "student_loan_repayments": [500.0] * len(people), + "highest_education": ["TERTIARY"] * len(people), + } + ) + benunit = pd.DataFrame({"benunit_id": person["person_benunit_id"]}) + household = pd.DataFrame( + { + "household_id": person["person_household_id"], + "region": ["LONDON"] * len(people), + "household_weight": [1.0] * len(people), + } + ) + base = UKSingleYearDataset( + person=person.copy(), + benunit=benunit.copy(), + household=household.copy(), + fiscal_year=2024, + ) + projected = UKSingleYearDataset( + person=person.copy(), + benunit=benunit.copy(), + household=household.copy(), + fiscal_year=year, + ) + + out = uprate_student_loan_plans(projected, base, system.parameters, base_year=2024) + + # The 2014 course becomes a 2010 one, Plan 1, and the 1993 course is + # written off; the two the rules agree on keep their plans. + assert out.person["student_loan_plan"].astype(str).tolist() == [ + "PLAN_1", + "PLAN_2", + "PLAN_1", + "NONE", + ] diff --git a/packages/microcosm-build/tests/engine/uk/test_uk_uc_capital_coherence.py b/packages/microcosm-build/tests/engine/uk/test_uk_uc_capital_coherence.py index f198b13f6d..7baa4ad09c 100644 --- a/packages/microcosm-build/tests/engine/uk/test_uk_uc_capital_coherence.py +++ b/packages/microcosm-build/tests/engine/uk/test_uk_uc_capital_coherence.py @@ -33,6 +33,8 @@ def test_engine_uses_reported_capital_and_sentinel_routes_to_residual_proxy() -> "savings": [100_000.0, 100_000.0, 7_000.0], "other_residential_property_value": [0.0, 0.0, 0.0], "non_residential_property_value": [0.0, 0.0, 0.0], + "other_residential_property_secured_debt": [0.0, 0.0, 0.0], + "non_residential_property_secured_debt": [0.0, 0.0, 0.0], "corporate_wealth": [0.0, 0.0, 0.0], } ) @@ -89,6 +91,8 @@ def _capital_frame(uc_capital, pension_credit_capital, *, child_heads=False): "other_residential_property_value": [90_000.0, 50_000.0], "non_residential_property_value": [10_000.0, 0.0], "owned_land": [30_000.0, 5_000.0], + "other_residential_property_secured_debt": [0.0, 0.0], + "non_residential_property_secured_debt": [0.0, 0.0], } ) return uk_national_frame( diff --git a/packages/microcosm-build/tests/engine/uk/test_uk_uc_reporter_redraw.py b/packages/microcosm-build/tests/engine/uk/test_uk_uc_reporter_redraw.py index 9c875dbd8e..c288295781 100644 --- a/packages/microcosm-build/tests/engine/uk/test_uk_uc_reporter_redraw.py +++ b/packages/microcosm-build/tests/engine/uk/test_uk_uc_reporter_redraw.py @@ -48,6 +48,8 @@ def test_live_engine_screen_reads_the_recorded_capital_with_property() -> None: # At 90% of its value, GBP 18,000 of property is GBP 16,200. "other_residential_property_value": [0.0, 0.0, 18_000.0], "non_residential_property_value": [0.0, 0.0, 0.0], + "other_residential_property_secured_debt": [0.0, 0.0, 0.0], + "non_residential_property_secured_debt": [0.0, 0.0, 0.0], "corporate_wealth": [0.0, 0.0, 0.0], } ) diff --git a/packages/microcosm-build/tests/engine_free/shared/test_country_spec.py b/packages/microcosm-build/tests/engine_free/shared/test_country_spec.py index 99686a985c..87d09f0449 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_country_spec.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_country_spec.py @@ -940,6 +940,8 @@ def test_spi_spine_adds_no_country_package_resources(self) -> None: "hmrc_uprating_engine_pins.json", "advani_summers_capital_gains_distribution.json", "salary_sacrifice_anchor.json", + "bonus_sacrifice_anchor.json", + "obr_salary_sacrifice_costing_facts.json", "slc_liable_stocks.json", "hmrc_income_release_gate_report.json", "hmrc_income_replay_report.json", @@ -1092,6 +1094,8 @@ def test_uk_package_loads(self) -> None: "hmrc_uprating_engine_pins.json", "advani_summers_capital_gains_distribution.json", "salary_sacrifice_anchor.json", + "bonus_sacrifice_anchor.json", + "obr_salary_sacrifice_costing_facts.json", "slc_liable_stocks.json", "hmrc_income_release_gate_report.json", "hmrc_income_replay_report.json", @@ -1178,8 +1182,8 @@ def test_uk_target_references_accept_regenerated_contract_fields(self) -> None: references = {reference.name: reference for reference in spec.target_references} assert ( - len(references) == 1338 - ) # childcare costing fixes: + 5, DfE funded childcare by single age (working parent 9-11 months and 1-3, universal nursery 3; the age-4 cells are signed out); item 6: + 11, the UK's ONS single years 3 to 6 and England's 0 to 6; microcosm#1278: + 3, the ONS single years 0, 1 and 2 for all persons; microcosm#1095: + 4, the two national 15_19 sex bands split into ages 15, 16-17 and 18-19; microcosm#1106: + 13 SPI property amounts; microcosm#1113: + 1 ONS 07.2.2 household road fuel; PolicyEngine/chronicle#280 lane: 705 + 33 HMRC liabilities rows (Table 2.5, three + len(references) == 1336 + ) # microcosm#953: + 1, England's single adult council tax discount; microcosm#1095 (the next policyengine-uk bump): - 3, the OBR welfare-cap split and the England postgraduate repayments retire; childcare costing fixes: + 5, DfE funded childcare by single age (working parent 9-11 months and 1-3, universal nursery 3; the age-4 cells are signed out); item 6: + 11, the UK's ONS single years 3 to 6 and England's 0 to 6; microcosm#1278: + 3, the ONS single years 0, 1 and 2 for all persons; microcosm#1095: + 4, the two national 15_19 sex bands split into ages 15, 16-17 and 18-19; microcosm#1106: + 13 SPI property amounts; microcosm#1113: + 1 ONS 07.2.2 household road fuel; PolicyEngine/chronicle#280 lane: 705 + 33 HMRC liabilities rows (Table 2.5, three # measures by eleven bands) + 26 SPI savings-interest rows (two measures by # thirteen bands) + 360 SPI Table 3.11 region-tier rows (three measures by # ten regional bands over twelve areas); microcosm#905: 424 - 18 country @@ -1480,6 +1484,9 @@ def test_declares_the_full_june_battery(self, manifest) -> None: "uk_stage_student_loans_realization", "uk_stage_age_tail_targets", "uk_stage_frs_relationships_composition", + "uk_stage_regional_home_values_ranking", + "uk_stage_property_purchases_fit", + "uk_stage_uc_legacy_closure_take_up_contract", "uk_release_input_coverage", "uk_degenerate_release_surface", "uk_zero_weight_strata", @@ -1605,6 +1612,9 @@ def test_strict_absent_evidence_entries_are_declared(self, manifest) -> None: "uk_stage_student_loans_realization", "uk_stage_age_tail_targets", "uk_stage_frs_relationships_composition", + "uk_stage_regional_home_values_ranking", + "uk_stage_property_purchases_fit", + "uk_stage_uc_legacy_closure_take_up_contract", "uk_weights_audit", # The #970 projection fence: a seam that cannot project cannot # certify the candidate's sub-exempt gainers. diff --git a/packages/microcosm-build/tests/engine_free/shared/test_engine_core_pins.py b/packages/microcosm-build/tests/engine_free/shared/test_engine_core_pins.py index 779b70b8b8..b609cfbf72 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_engine_core_pins.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_engine_core_pins.py @@ -33,7 +33,7 @@ #: policyengine-core its own floor brings. UK_ENGINE = { "policyengine-core": "3.33.3", - "policyengine-uk": "2.147.2", + "policyengine-uk": "2.151.0", } ENGINE_PACKAGES = ("microcosm-build", "microcosm-data", "microcosm-frame") diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_battery_bindings.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_battery_bindings.py index b815f484ea..0a68992035 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_battery_bindings.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_battery_bindings.py @@ -163,6 +163,15 @@ def _tables(*, n: int = 4, weights=None): other_property = 1_000.0 * (np.arange(n) % 2) non_residential = 500.0 * (np.arange(n) % 2) land = 250.0 * (np.arange(n) % 2) + # Debt secured on the last unit's property (microcosm#1095): the shares + # net it class by class, the non-residential debt above 90% of its + # property's value flooring that class at zero. + last = np.arange(n) == n - 1 + other_property_debt = np.where(last, 300.0, 0.0) + non_residential_debt = np.where(last, 600.0, 0.0) + property_share = np.maximum(0.9 * other_property - other_property_debt, 0.0) + ( + np.maximum(0.9 * non_residential - non_residential_debt, 0.0) + ) carrier = np.arange(n, dtype=float) person = pd.DataFrame( { @@ -184,9 +193,8 @@ def _tables(*, n: int = 4, weights=None): "benunit_id": np.arange(201, 201 + n, dtype=np.int64), "would_claim_uc": np.asarray([True, False] * n)[:n], "frs_benunit_capital": carrier, - "uc_reported_capital": carrier + 0.9 * (other_property + non_residential), - "pension_credit_reported_capital": carrier - + 0.9 * (land + other_property + non_residential), + "uc_reported_capital": carrier + property_share, + "pension_credit_reported_capital": carrier + 0.9 * land + property_share, } ) household = pd.DataFrame( @@ -198,6 +206,8 @@ def _tables(*, n: int = 4, weights=None): "owned_land": land, "other_residential_property_value": other_property, "non_residential_property_value": non_residential, + "other_residential_property_secured_debt": other_property_debt, + "non_residential_property_secured_debt": non_residential_debt, } ) return person, benunit, household @@ -756,12 +766,15 @@ def _salary_sacrifice_frames(self, *, carrier): """ from microcosm.build.uk_runtime.salary_sacrifice import ( + BONUS_SACRIFICE_OUTPUT, SALSAC_OUTPUT, SALSAC_PRE_CONVERSION_PAY_COLUMN, ) person, benunit, household = _tables() person[SALSAC_OUTPUT] = [0.0, 10.0, 0.0, 5.0] + # The stage's bonus route (#1340) is a declared non-negative output too. + person[BONUS_SACRIFICE_OUTPUT] = [0.0, 0.0, 3.0, 0.0] person["employee_pension_contributions"] = [1.0, 0.0, 2.0, 0.0] release = uk_national_frame( person=person.copy(), diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_benefit_target_scope.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_benefit_target_scope.py index 456ac8f4b7..c5feba2f44 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_benefit_target_scope.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_benefit_target_scope.py @@ -39,8 +39,6 @@ "obr.esa", "obr.jobseekers_allowance", "obr.universal_credit", - "obr.universal_credit_in_cap", - "obr.universal_credit_outside_cap", "obr.housing_benefit", "obr.statutory_maternity_pay", "dwp.esa_claimants", diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_carers_allowance_take_up.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_carers_allowance_take_up.py index bef59a44f9..981ace3b25 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_carers_allowance_take_up.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_carers_allowance_take_up.py @@ -117,26 +117,19 @@ def _stage(): ] -def test_eligibility_is_hours_no_report_and_over_the_limit_outside_scotland() -> None: - rows = list( - itertools.product( - [False, True], [34.0, 35.0, 50.0], [False, True], [False, True] - ) - ) - scotland, hours, reported, gainful = ( +def test_eligibility_is_hours_no_report_and_over_the_limit() -> None: + rows = list(itertools.product([34.0, 35.0, 50.0], [False, True], [False, True])) + hours, reported, gainful = ( np.asarray(column) for column in zip(*rows, strict=True) ) eligible = ca.carers_allowance_eligible( care_hours=hours, reported=reported, gainfully_employed=gainful, - scotland=scotland, min_hours=35.0, ) - np.testing.assert_array_equal( - eligible, ~scotland & (hours >= 35.0) & ~reported & gainful - ) - # 35 and 50 hours, outside Scotland, reporting nothing, over the limit. + np.testing.assert_array_equal(eligible, (hours >= 35.0) & ~reported & gainful) + # 35 and 50 hours, reporting nothing, over the limit. assert int(eligible.sum()) == 2 @@ -144,7 +137,7 @@ def _groups(): """Carers on every side of each condition, a hundred or more in each.""" groups = { - # Over the limit, no report, outside Scotland: the only drawn group. + # Over the limit and no report: the drawn groups, Scotland's included. "eligible": dict(care=35.0, reported=0.0, pay=200.0, region="WALES", n=400), "eligible_ni": dict( care=50.0, reported=0.0, pay=250.0, region="NORTHERN_IRELAND", n=100 @@ -183,10 +176,11 @@ def test_the_draw_opens_the_flag_to_the_eligible_carers_only() -> None: for group in ("reporter", "reporter_over_limit", "scotland_reporter"): assert flag[labels == group].all(), group # Under or at the limit the survey records them entitled and not claiming; - # Scotland stays closed; 20 hours do not meet the condition. - for group in ("under_limit", "at_limit", "scotland", "short_hours"): + # 20 hours do not meet the condition. + for group in ("under_limit", "at_limit", "short_hours"): assert not flag[labels == group].any(), group - eligible = np.isin(labels, ["eligible", "eligible_ni"]) + # Scotland is drawn too: there the flag is Carer Support Payment's. + eligible = np.isin(labels, ["eligible", "eligible_ni", "scotland"]) uniforms = stable_identity_uniforms( person["person_id"].to_numpy(), seed=0, salt=_OUTPUT ) @@ -203,10 +197,11 @@ def test_the_draw_opens_the_flag_to_the_eligible_carers_only() -> None: ) evidence = result.evidence() assert evidence["stage"] == ca.CARERS_ALLOWANCE_TAKE_UP_STAGE_NAME - assert evidence["scotland_closed"] is True - assert evidence["scotland_left_closed_support"] == "30+" + assert evidence["scotland_eligible_support"] == "30+" + assert evidence["scotland_eligible_weighted_persons"] == pytest.approx(100.0) + assert evidence["scotland_drawn_support"] == "30+" assert evidence["eligible_support"] == "30+" - assert evidence["eligible_weighted_persons"] == pytest.approx(500.0) + assert evidence["eligible_weighted_persons"] == pytest.approx(600.0) assert evidence["realized_share"] == pytest.approx(flag[eligible].mean()) @@ -235,9 +230,7 @@ def test_the_weighted_share_drawn_is_the_rate() -> None: ) result = _run(frame) flag = result.frame.table("person")[_OUTPUT].to_numpy() - eligible = ( - (regions != "SCOTLAND") & (care >= 35.0) & (reported == 0.0) & (pay > _LIMIT) - ) + eligible = (care >= 35.0) & (reported == 0.0) & (pay > _LIMIT) share = weights[eligible & flag].sum() / weights[eligible].sum() assert share == pytest.approx(0.6, abs=0.03) evidence = result.evidence() @@ -357,15 +350,15 @@ def test_households_are_read_through_membership_not_position() -> None: region_of = dict(zip(household_ids, regions, strict=True)) scottish = out["person_household_id"].map(region_of).eq("SCOTLAND").to_numpy() carer = out["care_hours"].to_numpy() >= 35.0 - np.testing.assert_array_equal(out[_OUTPUT].to_numpy(), carer & ~scottish) + np.testing.assert_array_equal(out[_OUTPUT].to_numpy(), carer) evidence = result.evidence() - # Sixteen households outside Scotland, one eligible carer in each. - assert evidence["eligible_weighted_persons"] == pytest.approx( - weights[regions != "SCOTLAND"].sum() - ) + # Twenty-four households, one eligible carer in each, eight in Scotland. + assert evidence["eligible_weighted_persons"] == pytest.approx(weights.sum()) assert evidence["eligible_support"] == "10-29" assert evidence["realized_share"] == 1.0 - assert evidence["scotland_left_closed_support"] == "<10" + assert evidence["scotland_eligible_support"] == "<10" + assert evidence["scotland_eligible_weighted_persons"] == "<10" + assert int(carer[scottish].sum()) == 8 def test_a_frame_without_eligible_carers_draws_nothing() -> None: diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_council_tax_targets.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_council_tax_targets.py index 750b4e288c..13a5a93f72 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_council_tax_targets.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_council_tax_targets.py @@ -78,11 +78,18 @@ def _region_frame(rows: list[tuple[str, str, str]]) -> Frame: ) -def _registry_for(prefix: str) -> tuple[list, TargetRegistry]: +#: England's single adult discount: one national row in the stock family +#: (microcosm#953), not a band cell. +_SINGLE_ADULT_DISCOUNT = "mhclg.council_tax_stock.single_adult_discount" + + +def _registry_for( + prefix: str, *, exclude: tuple[str, ...] = () +) -> tuple[list, TargetRegistry]: refs = [ r for r in load_country_spec("uk").target_references - if r.name.startswith(prefix) + if r.name.startswith(prefix) and r.name not in exclude ] registry = TargetRegistry( [ @@ -120,7 +127,9 @@ def test_national_mhclg_region_cells_count_only_their_region_for_every_band() -> ("NORTHERN_IRELAND", "NORTHERN_IRELAND"), ) rows = [(country, region, band) for country, region in areas for band in "ABCDEFGH"] - refs, registry = _registry_for("mhclg.council_tax_stock.") + refs, registry = _registry_for( + "mhclg.council_tax_stock.", exclude=(_SINGLE_ADULT_DISCOUNT,) + ) assert len(refs) == 81 assert {r.metadata["geography_level"] for r in refs} == {"region"} assert sorted({r.metadata["geography_id"] for r in refs}) == [ @@ -608,3 +617,30 @@ def test_composed_english_region_cells_sum_to_the_publisher_england_row() -> Non assert sum(published[f"band_{band}"] for band in "abcdefgh") == pytest.approx( published["total"], abs=0.5 ) + + +def test_englands_single_adult_discount_is_one_national_row() -> None: + """MHCLG Council Taxbase line 8, all bands, at England's country grain + (microcosm#953), against the households policyengine-uk gives the 25% + discount.""" + + (reference,) = [ + r + for r in load_country_spec("uk").target_references + if r.name == _SINGLE_ADULT_DISCOUNT + ] + assert reference.entity == "household" + assert reference.measure == "mhclg/council_tax/single_adult_discount" + assert reference.ledger_selector["geography_level"] == "country" + assert reference.ledger_selector["geography_id"] == "E92000001" + assert reference.ledger_selector["source_measure_id"] == "total" + (target,) = [ + target + for target in load_uk_population_contract()["targets"] + if target["target_id"] == _SINGLE_ADULT_DISCOUNT + ] + conditions = target["bindings"]["policyengine"]["household_conditions"] + assert {(c["variable"], c["value"]) for c in conditions} == { + ("country", "ENGLAND"), + ("council_tax_discount_rate", 0.25), + } diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_dense_release_assembler.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_dense_release_assembler.py index f3f42873c7..b4f65127d2 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_dense_release_assembler.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_dense_release_assembler.py @@ -617,6 +617,20 @@ def test_assembler_stages_a_contract_valid_dense_release( manifest = json.loads((release_dir / "release_manifest.json").read_text()) assert manifest["dataset_role"] == "non_default_local_area" assert manifest["default_datasets"] == {} and manifest["is_default"] is False + # The fixture's spine ran frs_spine alone, which reads no SPI tape; the + # marker is rederived from the stages the provenance names (#1095). + assert manifest["licensed_data"]["spi_public_use_tape"] == { + "study": "SN 9422", + "dependent": False, + "stages": [], + "conditions": [], + } + assert ( + manifest["artifacts"]["microcosm_uk_2024_25_dense"][ + "spi_public_use_tape_dependent" + ] + is False + ) assert ( manifest["artifacts"]["microcosm_uk_2024_25_dense"]["revision"] == summary["cut_tag"] diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_diagnostics.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_diagnostics.py index 885ba0e2eb..b274d09e86 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_diagnostics.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_diagnostics.py @@ -700,6 +700,94 @@ def test_consumption_drift_compares_design_and_final_weights() -> None: assert "full_rate_vat_base" not in drift["totals"] +def test_consumption_drift_carries_the_heating_fuels_where_the_frame_has_them() -> None: + """The liquid and solid fuels the stage draws (pe-uk#2572), read only where + the frame carries them, so an older spine keeps its drift block.""" + + from microcosm.build.uk_runtime.diagnostics import uk_consumption_drift + + household = pd.DataFrame(_consumption_columns(4)) + design = np.array([1.0, 1.0, 1.0, 1.0]) + final = np.array([2.0, 0.0, 1.0, 1.0]) + assert ( + "liquid_fuel_consumption" + not in uk_consumption_drift(household, design, final)["totals"] + ) + household["liquid_fuel_consumption"] = [100.0, 0.0, 50.0, 0.0] + household["solid_fuel_consumption"] = [0.0, 30.0, 0.0, 0.0] + totals = uk_consumption_drift(household, design, final)["totals"] + assert totals["liquid_fuel_consumption"]["final"] == 250.0 + assert totals["solid_fuel_consumption"]["relative_change"] == -1.0 + + +def test_drift_flags_mark_totals_past_two_percent_and_shares_past_half_a_point() -> ( + None +): + """Warn-only flags at #1278's R1 thresholds; the payload keeps its shape.""" + + from microcosm.build.uk_runtime.diagnostics import ( + UK_DRIFT_SHARE_FLAG, + UK_DRIFT_TOTAL_FLAG, + uk_consumption_drift_flags, + ) + + drift = { + "totals": { + "moves": {"relative_change": 0.021, "change": 21.0}, + "edge": {"relative_change": -0.02, "change": -20.0}, + "none": {"relative_change": None, "change": 0.0}, + }, + "shares": { + "moves": {"change": -0.0051}, + "edge": {"change": 0.005}, + }, + } + flags = uk_consumption_drift_flags(drift) + assert flags["total_relative_change_above"] == UK_DRIFT_TOTAL_FLAG == 0.02 + assert flags["share_change_above"] == UK_DRIFT_SHARE_FLAG == 0.005 + assert flags["totals"] == ["moves"] + assert flags["shares"] == ["moves"] + + +def test_drift_flags_reach_the_payload_as_warnings() -> None: + """Vahid's review of #1383, item 11: the flags are wired, not a hand run. + + Each flagged total or share is one warn-only diagnostic warning, naming it + and the threshold, never its figures. + """ + + from microcosm.build.uk_runtime.diagnostics import ( + UK_CONSUMPTION_DRIFT_WARNING_CODE, + uk_consumption_drift_warnings, + ) + + drift = { + "totals": {"solid_fuel_consumption": {"relative_change": -0.3, "change": -1.0}}, + "shares": {"gas_connected_households": {"change": 0.0001}}, + } + (warning,) = uk_consumption_drift_warnings(drift) + assert warning["code"] == UK_CONSUMPTION_DRIFT_WARNING_CODE + assert warning["severity"] == "warning" + assert "solid_fuel_consumption" in warning["message"] + assert "2%" in warning["message"] and "-0.3" not in warning["message"] + result, frame, registry, geography = _diagnostics_case(with_consumption=True) + payload = uk_calibration_diagnostics_payload( + result, + frame, + target_geography_levels=geography, + target_registry=registry, + withheld=frozenset(), + ) + flagged = [ + warning + for warning in payload["diagnostic_warnings"] + if warning["code"] == UK_CONSUMPTION_DRIFT_WARNING_CODE + ] + assert flagged == uk_consumption_drift_warnings( + payload["uk_diagnostics"]["consumption_drift"] + ) + + def test_consumption_drift_carries_the_full_rate_vat_base() -> None: """Consumption times the ETB VAT stage's full-rate share (#1207).""" @@ -1386,12 +1474,12 @@ def test_a_thin_national_row_keeps_its_place_but_not_its_model_figures() -> None assert payload["loss_trajectory"] == [] -def test_a_thin_local_area_row_stays_with_the_area_support_rule() -> None: - """Constituency and authority rows keep the local line's area-support rule. +def test_a_thin_row_is_withheld_at_every_level() -> None: + """María's rule of 2026-10-21, and her ruling of 2026-10-23 on the local line. - María's rule of 2026-10-21 on thin rows reaches national, regional and - BRMA rows; whether it reaches the local line is still hers to rule, and - the report guard matches a withheld local row by its bare area code. + A row resting on fewer than ten source households keeps its place without + its figures at every level; the area-support rule still decides which + constituency and authority rows bind. """ from types import SimpleNamespace @@ -1404,7 +1492,7 @@ def test_a_thin_local_area_row_stays_with_the_area_support_rule() -> None: matrix = sparse.csr_array( (np.ones(3), (np.zeros(3, dtype=int), np.arange(3))), shape=(1, n) ) - problem = SimpleNamespace(matrix=matrix, names=["thin_row@2025"]) + problem = SimpleNamespace(matrix=matrix, names=["thin_row@E14000001@2025"]) frame = Frame( { "person": pd.DataFrame( @@ -1417,26 +1505,27 @@ def test_a_thin_local_area_row_stays_with_the_area_support_rule() -> None: { "household_id": np.arange(n, dtype=np.int64), "source_household_id": np.arange(n, dtype=np.int64), + "region": ["LONDON"] * n, } ), }, EntitySchema(group_entities=("household",)), {"household": Weights(np.ones(n), WeightKind.DESIGN)}, ) - rows = [{"name": "thin_row@2025"}] + rows = [{"name": "thin_row@E14000001@2025"}] for level, withheld in ( ("national", True), ("region", True), ("brma", True), ("statistical_scope", True), - ("constituency", False), - ("local_authority", False), - ("la", False), + ("constituency", True), + ("local_authority", True), + ("la", True), ): found = uk_withheld_rows( - problem, np.ones(n), frame, rows, {"thin_row@2025": level} + problem, np.ones(n), frame, rows, {"thin_row@E14000001@2025": level} ) - assert (found == {"thin_row@2025"}) is withheld, level + assert (found == {"thin_row@E14000001@2025"}) is withheld, level def _withheld_sets( @@ -1444,12 +1533,16 @@ def _withheld_sets( n: int, values: dict[str, float | list[float]] | None = None, sources: list[float] | None = None, + levels: dict[str, str] | None = None, + regions: list[str] | None = None, + targets: dict[str, str] | None = None, ) -> tuple[set[str], set[str]]: """``uk_withheld_row_sets`` over rows given by the households that carry them. Every household is its own source household (or ``sources``) and carries weight one. A row's entries are one, or its ``values`` (one for all its - households, or one each). + households, or one each). ``regions`` gives each household's region, and + ``targets`` a row's contract target. """ from types import SimpleNamespace @@ -1479,15 +1572,20 @@ def _withheld_sets( if sources is None else np.asarray(sources) ), + **({} if regions is None else {"region": regions}), } ), }, EntitySchema(group_entities=("household",)), {"household": Weights(np.ones(n), WeightKind.DESIGN)}, ) - return uk_withheld_row_sets( - problem, np.ones(n), frame, [{"name": name} for name in names] - ) + target_rows = [ + {"name": name} + if name not in (targets or {}) + else {"name": name, "metadata": {"contract_target_id": targets[name]}} + for name in names + ] + return uk_withheld_row_sets(problem, np.ones(n), frame, target_rows, levels) def test_a_band_its_total_gives_back_withholds_the_next_smallest_band() -> None: @@ -2511,7 +2609,9 @@ def test_the_report_guard_refuses_any_mention_of_a_withheld_row(capsys) -> None: (key,) = keys def guard(report): - uk_refuse_named_withheld_rows(report, names=names, keys=keys) + uk_refuse_named_withheld_rows( + report, names=names, keys=keys, areas=frozenset({"S33999999"}) + ) # Counts, published rows and other areas pass. guard( @@ -2602,3 +2702,198 @@ def test_an_explicit_zero_in_a_brma_row_carries_nothing() -> None: assert uk_withheld_brma_rows(problem, weights, frame, rows, levels) == { "brma_row@2025" } + + +def test_the_local_line_withholds_thin_local_rows_by_block() -> None: + """María's ruling of 2026-10-23: thin local rows are withheld, by block. + + In one constituency a family total less its published band gives a thin + band back, so the next-smallest band is withheld beside it, as nationally. + A thin row in another area is withheld on its own, and no row of one area + is withheld for a difference with another's that gives nothing back. + """ + + rows = { + "fam.total@E14000001@2025": list(range(30)), + "fam.band_1@E14000001@2025": list(range(25)), + "fam.band_2@E14000001@2025": list(range(25, 30)), + "other.total@E14000002@2025": list(range(30, 35)), + "other.total@E14000003@2025": list(range(35, 60)), + } + levels = {name: "constituency" for name in rows} + thin, beside = _withheld_sets(rows, 60, levels=levels, regions=["LONDON"] * 60) + assert thin == {"fam.band_2@E14000001@2025", "other.total@E14000002@2025"} + assert beside == {"fam.band_1@E14000001@2025"} + # The same rows as one national block would give the same verdict; the + # block split changes only which differences are looked for. + national = _withheld_sets(rows, 60) + assert national == (thin, beside) + + +def test_a_region_row_less_its_published_local_cells_withholds_one_more() -> None: + """Vahid's review of #1383, item 1: the region and its cells are one block. + + The region row binds beside its local-authority cells, so the region less + the published cell gives the thin one back, and the next-smallest giver + is withheld beside it. Per area, nothing was withheld beside it. + """ + + rows = { + "fam.region@E12000007@2025": list(range(30)), + "fam.cell@E09000001@2025": list(range(25, 30)), + "fam.cell@E09000002@2025": list(range(25)), + "fam.region@E12000008@2025": list(range(30, 60)), + } + levels = { + "fam.region@E12000007@2025": "region", + "fam.region@E12000008@2025": "region", + "fam.cell@E09000001@2025": "local_authority", + "fam.cell@E09000002@2025": "local_authority", + } + regions = ["LONDON"] * 30 + ["SOUTH_EAST"] * 30 + thin, beside = _withheld_sets(rows, 60, levels=levels, regions=regions) + assert thin == {"fam.cell@E09000001@2025"} + assert beside == {"fam.cell@E09000002@2025"} + + +def test_a_regions_constituencies_less_its_authorities_withhold_one_more() -> None: + """Both local grains partition a region, so each gives the other back.""" + + rows = { + "fam.cell@E14000001@2025": list(range(20)), + "fam.cell@E14000002@2025": list(range(20, 40)), + "fam.cell@E06000001@2025": list(range(35)), + "fam.cell@E06000002@2025": list(range(35, 40)), + } + levels = { + "fam.cell@E14000001@2025": "constituency", + "fam.cell@E14000002@2025": "constituency", + "fam.cell@E06000001@2025": "local_authority", + "fam.cell@E06000002@2025": "local_authority", + } + thin, beside = _withheld_sets(rows, 40, levels=levels, regions=["WALES"] * 40) + assert thin == {"fam.cell@E06000002@2025"} + # The constituencies less the larger authority give the thin one back; + # the smaller constituency is withheld (ties go by name), and what is left + # (the thin cell with it) rests on 25 households. + assert beside == {"fam.cell@E14000001@2025"} + + +def _uc_family_rows() -> tuple[dict[str, list[int]], dict[str, str], dict[str, str]]: + # The national UC caseload and its constituency cells share one + # measurement, so they are one family with its parent (the contract). + rows = { + "dwp.uc.households@2025": list(range(60)), + "dwp.uc.households_by_area@E14000001@2025": list(range(30)), + "dwp.uc.households_by_area@E14000002@2025": list(range(30, 55)), + "dwp.uc.households_by_area@E14000003@2025": list(range(55, 60)), + } + levels = {name: "constituency" for name in rows} + levels["dwp.uc.households@2025"] = "country" + targets = { + name: "dwp.uc.households" + if name.startswith("dwp.uc.households@") + else ("dwp.uc.households_by_area") + for name in rows + } + return rows, levels, targets + + +def test_a_national_row_less_a_familys_published_cells_withholds_one_more() -> None: + """A national parent less its family's cells across regions gives one back. + + No region row binds, so no region block sees it: the family's own block + with its parent, the contract's national UC caseload, does. + """ + + rows, levels, targets = _uc_family_rows() + regions = ["NORTH_EAST"] * 30 + ["NORTH_WEST"] * 30 + thin, beside = _withheld_sets( + rows, 60, levels=levels, regions=regions, targets=targets + ) + assert thin == {"dwp.uc.households_by_area@E14000003@2025"} + assert beside == {"dwp.uc.households_by_area@E14000002@2025"} + # Without the contract targets no family block forms, and nothing is + # withheld beside the thin cell: the gap this closes. + assert _withheld_sets(rows, 60, levels=levels, regions=regions) == (thin, set()) + + +def test_a_row_one_block_withholds_stays_hidden_in_another() -> None: + """A row withheld beside a thin one is protected in every block holding it. + + The family block withholds the second cell beside the thin third. A row + of the region's own, on exactly that cell's households, would give it + back, and with it the thin cell, so the region block withholds that too. + """ + + rows, levels, targets = _uc_family_rows() + rows["other.cell@E14000002@2025"] = list(range(30, 55)) + levels["other.cell@E14000002@2025"] = "constituency" + regions = ["NORTH_EAST"] * 30 + ["NORTH_WEST"] * 30 + thin, beside = _withheld_sets( + rows, 60, levels=levels, regions=regions, targets=targets + ) + assert thin == {"dwp.uc.households_by_area@E14000003@2025"} + assert beside == { + "dwp.uc.households_by_area@E14000002@2025", + "other.cell@E14000002@2025", + } + + +def test_local_rows_without_household_regions_refuse() -> None: + """A local row is checked against its region's rows, so it needs regions.""" + + rows = {"fam.cell@E14000001@2025": list(range(20))} + with pytest.raises(ValueError, match="household table needs a region column"): + _withheld_sets(rows, 20, levels={"fam.cell@E14000001@2025": "constituency"}) + + +def test_the_report_guard_matches_a_withheld_local_row_by_its_key(capsys) -> None: + """A constituency binds many families, so its bare code names published rows.""" + + from microcosm.build.uk_runtime.diagnostics import ( + UKWithheldRowNamedError, + uk_refuse_named_withheld_rows, + uk_withheld_gate_areas, + uk_withheld_gate_keys, + ) + + rows = [ + { + "family": "fam", + "area_code": "E14000001", + "metric": "band_2", + "geography_level": "constituency", + "model_figures_withheld": True, + }, + { + "family": "private_rent", + "area_code": "S33999999", + "metric": "private_rent_brma", + "geography_level": "statistical_scope", + "model_figures_withheld": True, + }, + { + "family": "other", + "area_code": "E14000001", + "metric": "total", + "geography_level": "constituency", + }, + ] + keys = uk_withheld_gate_keys(rows) + areas = uk_withheld_gate_areas(rows) + assert keys == {"fam/E14000001/band_2", "private_rent/S33999999/private_rent_brma"} + assert areas == {"S33999999"} + + def guard(report): + uk_refuse_named_withheld_rows(report, names=frozenset(), keys=keys, areas=areas) + + # Another family's published row in the same constituency may be named. + guard({"failures": ["other/E14000001/total +30.0%"], "areas": ["E14000001"]}) + for report in ( + {"failures": ["fam/E14000001/band_2 +30.0%"]}, + {"failures": ["S33999999 is beyond the bound"]}, + ): + with pytest.raises(UKWithheldRowNamedError): + guard(report) + assert "names a withheld row" in capsys.readouterr().err diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_frs_spine.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_frs_spine.py index 1a103006ae..41bf6f41ca 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_frs_spine.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_frs_spine.py @@ -42,13 +42,14 @@ ) from microcosm.build.uk_runtime.frs_spine import ( BENEFIT_CODES, + BSP_MONTHLY_RATES, FRS_SPINE_TABLES, OWNER_MANAGER_COLUMNS, REGION_MAP, SCOTTISH_WATER_CHARGES_REDUCTION_RECIPIENT_SHARE, - STATE_PENSION_WEEKS_IN_YEAR, UC_CAPITAL_UNAVAILABLE, WEEKS_IN_YEAR, + WPA_WEEKLY_RATE, UKFRSSpineStageTransform, _add_benefits, access_fund_annual, @@ -184,6 +185,10 @@ def _write_tab(root: Path, table: str, rows: list[dict[str, object]]) -> None: pd.DataFrame(rows).to_csv(path, sep="\t", index=False) +#: Bereavement Support Payment's standard rate, GBP 100 a month, weekly. +_BSP_STANDARD_WEEKLY = 100 * 12 / 52 + + def _fixture_tables() -> dict[str, list[dict[str, object]]]: household_2 = { "SERNUM": 2, @@ -303,6 +308,10 @@ def _fixture_tables() -> dict[str, list[dict[str, object]]]: "APAMT": 11.0, "APDAMT": 12.0, "PAREAMT": 13.0, + # The last alimony was not the usual amount (ALIUS 2): ALUAMT counts. + "ALIUS": 2, + "ALUAMT": 3.0, + "ALIAMT": 4.0, "REDAMT": 100.0, "SLREPAMT": 2.0, # A repayer answers no to SLOS; EDUCLEFT dates the course (#868). @@ -436,6 +445,20 @@ def _fixture_tables() -> dict[str, list[dict[str, object]]]: "NATURE": 4, "DIRPERC": -1, "DIVIDEND": 0.0, + # Two bonuses (#1340): 1,000 before tax, and 500 after a weekly + # imputed tax of 2. + **{ + f"BONAMT{index}": {1: 1_000.0, 2: 500.0}.get(index, "") + for index in range(1, 7) + }, + **{ + f"BONTAX{index}": {1: 1, 2: 2}.get(index, "") + for index in range(1, 7) + }, + **{ + f"BONTXAM{index}": 2.0 if index == 2 else "" + for index in range(1, 7) + }, } ], "benefits": [ @@ -489,7 +512,9 @@ def _fixture_tables() -> dict[str, list[dict[str, object]]]: "PERSON": 1, "BENEFIT": 6, "VAR2": 0, - "BENAMT": 6.0, + # Bereavement Support Payment's standard rate, GBP 100 a + # month, as a weekly amount. + "BENAMT": _BSP_STANDARD_WEEKLY, "UCSTART": "", "UCHOUSEL": "", }, @@ -1196,9 +1221,11 @@ def test_direct_person_mapping_values_are_ported(tmp_path: Path) -> None: assert adult["maintenance_income"] == pytest.approx(3 * WEEKS_IN_YEAR) # Odd jobs 4, ALLPAY2 6, ROYYR2-4 3 + 4 + 5, CHAMTERN 9 and CHAMTTST 10. assert adult["miscellaneous_income"] == pytest.approx(41 * WEEKS_IN_YEAR) - # APAMT 11, APDAMT 12, PAREAMT 13, ALLPAY3 7 and ALLPAY4 8: ALLPAY2 is - # miscellaneous income alone (#1320). - assert adult["private_transfer_income"] == pytest.approx(51 * WEEKS_IN_YEAR) + # ALUAMT 3 (ALIUS 2) and APAMT 11 (#1320). + assert adult["spousal_maintenance_income"] == pytest.approx(14 * WEEKS_IN_YEAR) + # APDAMT 12, PAREAMT 13, ALLPAY3 7 and ALLPAY4 8: ALLPAY2 is miscellaneous + # income alone and APAMT spousal maintenance (#1320). + assert adult["private_transfer_income"] == pytest.approx(40 * WEEKS_IN_YEAR) assert adult["lump_sum_income"] == pytest.approx(100) assert adult["student_loan_repayments"] == pytest.approx(2 * WEEKS_IN_YEAR) assert adult["statutory_sick_pay"] == pytest.approx(WEEKS_IN_YEAR) @@ -1234,6 +1261,7 @@ def test_direct_person_mapping_values_are_ported(tmp_path: Path) -> None: "dividend_income", "property_income", "maintenance_income", + "spousal_maintenance_income", "miscellaneous_income", "private_transfer_income", "lump_sum_income", @@ -1254,6 +1282,7 @@ def test_direct_person_mapping_values_are_ported(tmp_path: Path) -> None: "esa_contrib_reported", "esa_income_reported", "bsp_reported", + "widowed_parents_allowance_reported", ) @@ -1306,7 +1335,11 @@ def test_no_frs_field_feeds_two_income_columns(tmp_path: Path) -> None: } == {} # The comparison sees a field's own column. assert moved[("adult", "ALLPAY2")] == {"miscellaneous_income"} - assert moved[("adult", "APAMT")] == {"private_transfer_income"} + assert moved[("adult", "APAMT")] == {"spousal_maintenance_income"} + assert moved[("adult", "APDAMT")] == {"private_transfer_income"} + assert moved[("adult", "ALUAMT")] == {"spousal_maintenance_income"} + # ALIUS 2 reads the usual amount, so the last one moves nothing. + assert moved[("adult", "ALIAMT")] == set() assert moved[("adult", "INEARNS")] == {"employment_income"} assert moved[("househol", "CTREBAMT")] == {"council_tax_benefit_reported"} assert moved[("oddjob", "OJAMT")] == {"miscellaneous_income"} @@ -1438,6 +1471,43 @@ def test_household_subrent_column_floors_missing_value_codes( assert household.loc[2, "subrent"] == pytest.approx(6 * WEEKS_IN_YEAR) +@pytest.mark.parametrize( + ("alius", "expected"), + [(1, 4.0), (2, 3.0), (3, 4.0)], + ids=["usual", "not_usual", "no_usual"], +) +def test_spousal_maintenance_reads_the_usual_alimony_where_the_last_was_not( + tmp_path: Path, alius: int, expected: float +) -> None: + """ALIUS 2 (the last amount was not the usual one) reads ALUAMT; any other + answer reads ALIAMT, beside APAMT (#1320; María's ruling of 2026-10-22).""" + + tables = _fixture_tables() + for row in tables["adult"]: + row.update(ALIUS=alius, ALUAMT=3.0, ALIAMT=4.0, APAMT=0.0) + stage = _write_fixture(tmp_path, tables) + person = build_uk_frs_spine_frame(tmp_path, stage=stage).table("person") + adults = person[person["age"] >= 16] + assert adults["spousal_maintenance_income"].to_numpy() == pytest.approx( + expected * WEEKS_IN_YEAR + ) + + +@pytest.mark.parametrize("column", ["ALIAMT", "ALUAMT", "ALIUS"]) +def test_frs_spine_refuses_an_adult_tab_without_alimony( + tmp_path: Path, column: str +) -> None: + """A vintage without the alimony columns refuses; it never sets nobody's + spousal maintenance.""" + + tables = _fixture_tables() + for row in tables["adult"]: + row.pop(column) + stage = _write_fixture(tmp_path, tables) + with pytest.raises(KeyError, match=column): + build_uk_frs_spine_frame(tmp_path, stage=stage) + + def test_frs_spine_refuses_an_adult_tab_without_sppadj(tmp_path: Path) -> None: """A vintage without SPPADJ refuses; it never sets nobody's paternity pay.""" @@ -1858,7 +1928,88 @@ def test_benefit_code_splits_are_ported(tmp_path: Path) -> None: assert adult["jsa_income_reported"] == pytest.approx(3 * WEEKS_IN_YEAR) assert adult["esa_contrib_reported"] == pytest.approx(4 * WEEKS_IN_YEAR) assert adult["esa_income_reported"] == pytest.approx(5 * WEEKS_IN_YEAR) - assert adult["bsp_reported"] == pytest.approx(6 * WEEKS_IN_YEAR) + assert adult["bsp_reported"] == pytest.approx(_BSP_STANDARD_WEEKLY * WEEKS_IN_YEAR) + assert adult["widowed_parents_allowance_reported"] == 0.0 + + +@pytest.mark.parametrize( + ("weekly", "payment"), + [ + # Each monthly rate at 12/52 and at four weeks, and 1% either side. + (350 * 12 / 52, "bsp"), + (350 / 4, "bsp"), + (100 * 12 / 52, "bsp"), + (100 / 4, "bsp"), + (350 * 12 / 52 * 1.0099, "bsp"), + (100 * 12 / 52 * 0.9901, "bsp"), + # Off every rate: Widowed Parent's Allowance, at its 2024-25 full + # rate and 1% above it, at a reduced rate, and just outside the band. + (148.40, "wpa"), + (148.40 * 1.0099, "wpa"), + (65.0, "wpa"), + (350 * 12 / 52 * 1.011, "wpa"), + (100 / 4 * 0.989, "wpa"), + # Above the allowance's rate and at no rate (a lump sum, a part month + # or a misreport): the payment (Vahid's review of #1383, item 12). + (148.40 * 1.011, "bsp"), + (3_500 / 4, "bsp"), + # A lump sum spread over the year reads as a reduced allowance: the + # rule cannot tell the two apart below the allowance's rate. + (2_500 / 52, "wpa"), + ], +) +def test_code_6_splits_at_the_bereavement_support_payment_rates( + tmp_path: Path, weekly: float, payment: str +) -> None: + """A code-6 amount at a Bereavement Support Payment rate stays + bsp_reported; one at Widowed Parent's Allowance's rate or below it is the + allowance, which policyengine-uk 2.149.0 gives its own input (#1222, + pe-uk#2572); any other stays bsp_reported.""" + + assert BSP_MONTHLY_RATES == (350.0, 100.0) + assert WPA_WEEKLY_RATE == 148.40 + tables = _fixture_tables() + (row,) = [entry for entry in tables["benefits"] if entry["BENEFIT"] == 6] + row["BENAMT"] = weekly + stage = _write_fixture(tmp_path, tables) + person = ( + build_uk_frs_spine_frame(tmp_path, stage=stage) + .table("person") + .set_index("person_id") + ) + columns = {"bsp": "bsp_reported", "wpa": "widowed_parents_allowance_reported"} + assert person.loc[1001, columns[payment]] == pytest.approx(weekly * WEEKS_IN_YEAR) + other = columns["wpa" if payment == "bsp" else "bsp"] + assert person[other].eq(0.0).all() + assert person.drop(index=1001)[columns[payment]].eq(0.0).all() + + +def test_bonuses_are_summed_gross_over_the_year(tmp_path: Path) -> None: + """A bonus given after tax adds back its imputed weekly tax over the year; + BONAMT is the sum received, not weekly (#1340).""" + + stage = _write_fixture(tmp_path, _fixture_tables()) + person = ( + build_uk_frs_spine_frame(tmp_path, stage=stage) + .table("person") + .set_index("person_id") + ) + assert person.loc[1001, "frs_bonus_amount"] == pytest.approx( + 1_000.0 + 500.0 + 2.0 * WEEKS_IN_YEAR + ) + assert person.drop(index=1001)["frs_bonus_amount"].eq(0.0).all() + + +@pytest.mark.parametrize("column", ["BONAMT1", "BONTAX3", "BONTXAM6"]) +def test_frs_spine_refuses_a_job_tab_without_the_bonus_fields( + tmp_path: Path, column: str +) -> None: + tables = _fixture_tables() + for row in tables["job"]: + row.pop(column) + stage = _write_fixture(tmp_path, tables) + with pytest.raises(KeyError, match=column.lower()): + build_uk_frs_spine_frame(tmp_path, stage=stage) def test_war_widows_pension_leaves_bereavement_support(tmp_path: Path) -> None: @@ -1885,7 +2036,9 @@ def test_war_widows_pension_leaves_bereavement_support(tmp_path: Path) -> None: .set_index("person_id") ) - assert person.loc[1001, "bsp_reported"] == pytest.approx(6 * WEEKS_IN_YEAR) + assert person.loc[1001, "bsp_reported"] == pytest.approx( + _BSP_STANDARD_WEEKLY * WEEKS_IN_YEAR + ) assert person.loc[1001, "war_widows_pension_reported"] == pytest.approx( 8 * WEEKS_IN_YEAR ) @@ -1929,13 +2082,14 @@ def test_scottish_disability_payments_land_in_the_pip_and_dla_columns() -> None: ) -def test_state_pension_alone_annualises_at_52_weeks() -> None: - """policyengine-uk reads the State Pension back at 52 weeks a year. +def test_weekly_benefits_annualise_at_52_weeks() -> None: + """policyengine-uk reads weekly amounts back at 52 weeks a year. At 365.25 / 7 a full-rate pensioner would read above the full rate and the - excess would become a protected payment (María's ruling of 2026-10-20, an - exception to microcosm#1095's weekly amounts). Every other weekly benefit - keeps 365.25 / 7, and the Winter Fuel Payment, already annual, keeps its + excess would become a protected payment (María's ruling of 2026-10-20), + and every other weekly amount would read 0.34% high at the rule that tests + it; since her ruling of 2026-10-23 every weekly FRS amount annualises at + 52 (uk-data#531). The Winter Fuel Payment, already annual, keeps its amount. """ @@ -1955,7 +2109,7 @@ def test_state_pension_alone_annualises_at_52_weeks() -> None: _add_benefits(pe_person, person, benefits) - assert STATE_PENSION_WEEKS_IN_YEAR == 52 + assert WEEKS_IN_YEAR == 52 state_pension = pe_person["state_pension_reported"] assert state_pension.tolist() == pytest.approx([221.20 * 52, 179.50 * 52, 0.0]) # Read back at the engine's 52 weeks, the full rate is the full rate. @@ -1966,7 +2120,7 @@ def test_state_pension_alone_annualises_at_52_weeks() -> None: assert pe_person["winter_fuel_allowance_reported"].tolist() == pytest.approx( [0.0, 0.0, 300.0] ) - # The 52-week State Pension stays out of the 365.25 / 7 sum. + # The State Pension is re-summed on its own, beside the other benefits. reported = pe_person.drop( columns=[ "state_pension_reported", @@ -1977,7 +2131,7 @@ def test_state_pension_alone_annualises_at_52_weeks() -> None: assert reported.to_numpy().sum() == pytest.approx(2 * 81.90 * WEEKS_IN_YEAR) -def test_manifest_declares_the_state_pension_weeks_in_year() -> None: +def test_manifest_declares_52_weeks_for_every_weekly_amount() -> None: operation = next( operation for operation in _manifest_stage().operations @@ -1985,14 +2139,48 @@ def test_manifest_declares_the_state_pension_weeks_in_year() -> None: ) parameters = dict(operation.parameters) - assert parameters["weeks_in_year"] == WEEKS_IN_YEAR - exceptions = parameters["weeks_in_year_exceptions"] - assert set(exceptions) == {"state_pension_reported"} - assert ( - exceptions["state_pension_reported"]["weeks_in_year"] - == STATE_PENSION_WEEKS_IN_YEAR + assert parameters["weeks_in_year"] == WEEKS_IN_YEAR == 52 + # The State Pension's exception of 2026-10-20 became the rule. + assert "weeks_in_year_exceptions" not in parameters + + +def test_every_reader_of_weekly_frs_amounts_annualises_at_52() -> None: + """One week count for every FRS amount a weekly or monthly rule reads. + + María's ruling of 2026-10-23 (uk-data#531): the spine, the HMRC replay + leaves and the private-rent localisation read 52; LCFS spending keeps + 365.25 / 7 and NTS trips 52.14, since no weekly rule reads them back. + """ + + from microcosm.build.uk_runtime import ( + frs_council_tax, + frs_disability, + frs_education, + frs_hmrc_source, + frs_legacy_proxies, + lcfs_consumption, + nts_bus_travel, + private_rent_localisation, ) + for module in ( + frs_council_tax, + frs_disability, + frs_education, + frs_legacy_proxies, + ): + assert module.WEEKS_IN_YEAR is WEEKS_IN_YEAR, module.__name__ + assert frs_hmrc_source.FRS_WEEKS_IN_YEAR == WEEKS_IN_YEAR == 52 + assert private_rent_localisation.WEEKS_IN_YEAR == WEEKS_IN_YEAR + formulas = [ + str(entry["formula"]) + for entry in frs_hmrc_source.FRS_HMRC_RETAINED_LEAF_SOURCE_EVIDENCE.values() + if "formula" in entry + ] + assert formulas and not [formula for formula in formulas if "365.25" in formula] + assert lcfs_consumption.WEEKS_IN_YEAR == pytest.approx(365.25 / 7) + assert nts_bus_travel.WEEKS_IN_YEAR == 52.14 + def test_northern_ireland_households_take_the_placeholder_band() -> None: # Northern Ireland pays domestic rates, so a ctband code there is ignored; @@ -2308,6 +2496,17 @@ def test_driver_writes_spine_h5_sidecars_and_logbook( } <= set(frame.table("household")) sidecar = json.loads(output.with_suffix(".build.json").read_text()) assert sidecar["pipeline"] == "uk-frs-spine" + # The build record says which of its stages read the SPI Public Use Tape + # (microcosm#1095), from the artifacts the run's spec declares. This + # synthetic spec's SPI stage reads a fabricated tab, not the tape. + from microcosm.build.uk_runtime.spi_dependency import ( + uk_spi_public_use_tape_marker, + ) + + assert sidecar["spi_public_use_tape"] == uk_spi_public_use_tape_marker( + _synthetic_spec(stage).sources.stages + ) + assert sidecar["spi_public_use_tape"]["dependent"] is False for name in ( "graph_declaration", "graph_manifest", @@ -3403,6 +3602,8 @@ def test_e8_manifest_seeds_all_reach_the_build_sidecar_harvester() -> None: assert declared["salary_sacrifice"] == { "salary_sacrifice": 42, "salary_sacrifice_conversion": 2024, + # The bonus route's conversion (microcosm#1340). + "pension_contributions_via_bonus_sacrifice": 2024, } assert declared["student_loans"] == { "student_loan_plan_5": 42, diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_frs_stochastic.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_frs_stochastic.py index d424b44fcb..63404655b1 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_frs_stochastic.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_frs_stochastic.py @@ -219,7 +219,7 @@ def test_uc_take_up_population_excludes_units_without_a_working_age_adult() -> N def test_uc_take_up_population_needs_a_claimant_or_partner_of_working_age() -> None: """A working-age dependant does not bring a unit into the UC population. - policyengine-uk 2.147.2's is_uc_eligible reads the age of the unit's UC + policyengine-uk 2.151.0's is_uc_eligible reads the age of the unit's UC claimant or partner (is_uc_claimant), not of any adult: a pensioner unit with an 18-year-old dependant cannot claim Universal Credit. """ diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_full_gates.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_full_gates.py index 872e109d78..0172d1cadd 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_full_gates.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_full_gates.py @@ -116,7 +116,8 @@ def evidence(monkeypatch): ) solution = OrderedSolution(np.ones(2), (1, 2), "a" * 64, {}, "b" * 64) # A real national frame: the context reads it through the release export - # boundary, which renumbers identifiers (microcosm#1194). + # boundary, which renumbers identifiers (microcosm#1194). The household + # region places the constituency row in its region's withholding block. ids = np.asarray([1, 2], dtype="int64") frame = uk_national_frame( person=pd.DataFrame( @@ -124,7 +125,12 @@ def evidence(monkeypatch): ), benunit=pd.DataFrame({"benunit_id": ids}), household=pd.DataFrame( - {"household_id": ids, "source_household_id": ids, "income": [1.0, 1.0]} + { + "household_id": ids, + "source_household_id": ids, + "income": [1.0, 1.0], + "region": ["SOUTH_EAST", "SOUTH_EAST"], + } ), time_period="2024", weight_kind=weights.kind, diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_hbai_validation.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_hbai_validation.py new file mode 100644 index 0000000000..4ed7f408d9 --- /dev/null +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_hbai_validation.py @@ -0,0 +1,123 @@ +"""The HBAI validation scorecard: report-only, against DWP's 95% intervals (microcosm#731).""" + +from __future__ import annotations + +import pytest + +from microcosm.build.uk_runtime.hbai_validation import ( + UK_HBAI_VALIDATION_PERIOD, + UK_HBAI_VALIDATION_STATISTICS, + classify_uk_hbai_statistics, + uk_hbai_validation_references, +) + +#: Fixture estimates and intervals, shaped as the feed carries them. +_FIXTURE = { + "median_equivalised_income_bhc_gbp_week": (700.0, 690.0, 710.0, "gbp_per_week"), + "median_equivalised_income_ahc_gbp_week": (600.0, 590.0, 610.0, "gbp_per_week"), + "relative_low_income_bhc_pct": (16.0, 15.0, 17.0, "percent"), + "relative_low_income_ahc_pct": (21.0, 20.0, 22.0, "percent"), +} + + +def _fact(record_set: str, measure: str, value: float, unit: str) -> dict: + return { + "aggregate_fact_key": f"ledger.aggregate_fact.v2:{record_set}:{measure}", + "source_release_key": "ledger.source_release.v1:hbai-fye2025", + "period": {"type": "fiscal_year", "value": 2024}, + "observed_measure": {"unit": unit}, + "layout": {"record_set_id": record_set, "measure_id": measure}, + "value": value, + } + + +def _facts(**overrides) -> list[dict]: + rows = [] + for statistic, (kind, housing, measure) in UK_HBAI_VALIDATION_STATISTICS.items(): + estimate, lower, upper, unit = overrides.get(statistic, _FIXTURE[statistic]) + base = f"dwp.hbai_fye2025.{kind}.{housing}.fy2024" + bounds = f"dwp.hbai_fye2025.{kind}_ci95.{housing}.fy2024" + rows += [ + _fact(base, measure, estimate, unit), + _fact(bounds, f"{measure}_ci_95_lower_bound", lower, unit), + _fact(bounds, f"{measure}_ci_95_upper_bound", upper, unit), + ] + # A later year of the same series is not FYE 2025. + rows.append( + _fact( + "dwp.hbai_fye2025.median_income.before_housing_costs.fy2023", + "median_equivalised_household_income", + 650.0, + "gbp_per_week", + ) + ) + return rows + + +def test_the_comparison_year_is_frs_2024_25(): + # Period 2024 is FRS FY2024/25, HBAI's FYE 2025, not FYE 2024. + assert UK_HBAI_VALIDATION_PERIOD == 2024 + assert set(UK_HBAI_VALIDATION_STATISTICS) == set(_FIXTURE) + + +def test_references_take_each_estimate_and_its_interval(): + references = uk_hbai_validation_references(_facts()) + bhc = references["median_equivalised_income_bhc_gbp_week"] + assert (bhc["estimate"], bhc["ci_95_lower"], bhc["ci_95_upper"]) == ( + 700.0, + 690.0, + 710.0, + ) + assert bhc["unit"] == "gbp_per_week" + assert bhc["source_release_key"] == "ledger.source_release.v1:hbai-fye2025" + assert bhc["period"] == {"type": "fiscal_year", "value": 2024} + assert len(bhc["fact_keys"]) == 3 + + +def test_a_statistic_on_a_bound_is_inside_and_one_past_it_is_not(): + references = uk_hbai_validation_references(_facts()) + report = classify_uk_hbai_statistics( + { + "median_equivalised_income_bhc_gbp_week": 710.0, + "median_equivalised_income_ahc_gbp_week": 589.0, + "relative_low_income_bhc_pct": 15.0, + "relative_low_income_ahc_pct": 22.5, + }, + references, + ) + assert {name: row["inside_ci_95"] for name, row in report.items()} == { + "median_equivalised_income_bhc_gbp_week": True, + "median_equivalised_income_ahc_gbp_week": False, + "relative_low_income_bhc_pct": True, + "relative_low_income_ahc_pct": False, + } + ahc = report["median_equivalised_income_ahc_gbp_week"] + assert ahc["difference"] == pytest.approx(-11.0) + assert ahc["relative_difference"] == pytest.approx(-11.0 / 600.0) + assert ahc["ci_95"] == [590.0, 610.0] + + +def test_a_missing_statistic_or_fact_is_refused(): + references = uk_hbai_validation_references(_facts()) + with pytest.raises(ValueError, match="missing"): + classify_uk_hbai_statistics({"relative_low_income_bhc_pct": 16.0}, references) + with pytest.raises(ValueError, match="not finite"): + classify_uk_hbai_statistics( + {statistic: float("nan") for statistic in _FIXTURE}, references + ) + facts = [ + row + for row in _facts() + if row["layout"]["measure_id"] != "relative_low_income_share_ci_95_upper_bound" + ] + with pytest.raises(ValueError, match="carries 0"): + uk_hbai_validation_references(facts) + with pytest.raises(ValueError, match="carries 2"): + uk_hbai_validation_references([*_facts(), _facts()[0]]) + + +def test_an_interval_that_does_not_hold_its_estimate_is_refused(): + with pytest.raises(ValueError, match="does not hold"): + uk_hbai_validation_references( + _facts(relative_low_income_bhc_pct=(18.0, 15.0, 17.0, "percent")) + ) diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_lcfs_consumption.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_lcfs_consumption.py index 640ba6d250..89db02bc01 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_lcfs_consumption.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_lcfs_consumption.py @@ -1289,10 +1289,11 @@ def test_stage_transform_prices_bus_fares_from_journeys() -> None: out = result.table("household") assert set(UK_LCFS_CONSUMPTION_OUTPUT_COLUMNS) <= set(out.columns) - # The 18 chain targets, the road-fuel redraw's total and petrol share, - # the prepayment-meter flag (microcosm#1110), then the gas-payer - # classifier and amount model the connection walk reads (microcosm#1164). - assert len(transform.fit_weight_records) == 23 + # The 20 chain targets (the heating fuels last, pe-uk#2572), the road-fuel + # redraw's total and petrol share, the prepayment-meter flag + # (microcosm#1110), then the gas-payer classifier and amount model the + # connection walk reads (microcosm#1164). + assert len(transform.fit_weight_records) == 25 assert transform.fit_weight_records[-4].fit_name.endswith( ":petrol_share_of_road_fuel" ) @@ -1860,20 +1861,76 @@ def test_division_capture_places_an_over_draw_in_the_tail() -> None: assert "tail" not in capture["total"] -def test_uncarried_spend_sits_beside_the_donors_other_fuels() -> None: - from microcosm.build.uk_runtime.lcfs_consumption import uncarried_beside_donor +def test_published_fuels_sit_beside_the_donors_and_the_frames_draws() -> None: + from microcosm.build.uk_runtime.lcfs_consumption import ( + published_fuels_beside_draws, + ) - uncarried = {"resource": "r", "classes": [], "total": 2.0e9} - beside = uncarried_beside_donor(uncarried, {"other_fuels": 1.5e9}) - assert beside["donor_other_fuels_at_diary_prices"] == 1.5e9 - assert beside["donor_over_published"] == pytest.approx(0.75) - assert {key: beside[key] for key in uncarried} == uncarried - assert ( - uncarried_beside_donor({**uncarried, "total": 0.0}, {"other_fuels": 1.0})[ - "donor_over_published" - ] - is None + published = { + "resource": "r", + "classes": [ + {"coicop": "04.5.3", "column": "liquid_fuel_consumption", "value": 2.0e9}, + {"coicop": "04.5.4", "column": "solid_fuel_consumption", "value": 0.0}, + ], + "total": 2.0e9, + } + beside = published_fuels_beside_draws( + published, + {"liquid_fuel_consumption": 1.5e9, "solid_fuel_consumption": 1.0e8}, + {"liquid_fuel_consumption": 1.8e9, "solid_fuel_consumption": 2.0e8}, + ) + liquid, solid = beside["classes"] + assert liquid["donor_at_diary_prices"] == 1.5e9 + assert liquid["donor_over_published"] == pytest.approx(0.75) + assert liquid["frame"] == 1.8e9 + assert liquid["frame_over_published"] == pytest.approx(0.9) + # A published zero gives no ratio. + assert solid["donor_over_published"] is None + assert solid["frame_over_published"] is None + assert beside["total"] == published["total"] + # ONS's 04.5.3 leaves out the bottled gas the liquid column holds, so the + # donor's figure is also given without it (Vahid's review of #1383, 8). + assert "donor_bottled_gas_at_diary_prices" not in liquid + with_gas = published_fuels_beside_draws( + published, + { + "liquid_fuel_consumption": 1.5e9, + "solid_fuel_consumption": 1.0e8, + "bottled_gas": 5.0e8, + }, + {"liquid_fuel_consumption": 1.8e9, "solid_fuel_consumption": 2.0e8}, + ) + liquid, solid = with_gas["classes"] + assert liquid["donor_bottled_gas_at_diary_prices"] == 5.0e8 + assert liquid["donor_without_bottled_gas_over_published"] == pytest.approx(0.5) + assert "04.5.2" in liquid["concept_note"] + assert "donor_bottled_gas_at_diary_prices" not in solid + + +def test_the_heating_fuels_are_the_declared_diary_parts() -> None: + """Each fuel column's parts, pinned (Vahid's review of #1383, nit 20). + + Liquid holds oil and paraffin with bottled gas (María's ruling of + 2026-10-22); solid holds coal, coke, wood and peat; hot water, steam and + ice (c45511) stays in the housing remainder. + """ + + from microcosm.build.uk_runtime.lcfs_consumption import ( + UK_LCFS_BOTTLED_GAS_PARTS, + UK_LCFS_FUEL_PARTS, + UK_LCFS_OTHER_FUEL_PARTS, + ) + + assert dict(UK_LCFS_FUEL_PARTS) == { + "liquid_fuel_consumption": ("b017", "c45312", "b018", "c45222"), + "solid_fuel_consumption": ("c45411", "c45412"), + } + assert UK_LCFS_BOTTLED_GAS_PARTS == ("b018", "c45222") + assert set(UK_LCFS_BOTTLED_GAS_PARTS) <= set( + UK_LCFS_FUEL_PARTS["liquid_fuel_consumption"] ) + drawn = {code for codes in UK_LCFS_FUEL_PARTS.values() for code in codes} + assert set(UK_LCFS_OTHER_FUEL_PARTS) - drawn == {"c45511"} def test_report_only_diagnostics_fail_closed_on_ambiguous_rows(monkeypatch) -> None: @@ -2337,7 +2394,9 @@ def test_redraw_is_a_no_op_when_undeclared() -> None: } -def _recompose_declaration() -> dict: +def _recompose_declaration(*, levelled: bool = False) -> dict: + """The packaged declaration; without its division levelling unless asked.""" + from microcosm.build.country_spec import load_country_spec from microcosm.build.uk_runtime.lcfs_consumption import ( recompose_from_remainder_operation, @@ -2347,9 +2406,134 @@ def _recompose_declaration() -> dict: load_country_spec("uk").sources.stage_map()["lcfs_consumption"] ) assert declared is not None + assert "level_division_excess" in declared + if not levelled: + declared = { + key: value + for key, value in declared.items() + if key != "level_division_excess" + } return declared +def test_division_excess_factors_bring_only_the_over_drawn_to_the_shared_ratio() -> ( + None +): + """María's rulings of 2026-10-23 and 2026-10-24 (microcosm#1278). + + A division above the shared ratio of the drawn spend comes down to it; + none other moves, and the shared ratio is measured once. Housing's + levelled parts are no over-draw (Vahid's review of #1383, item 9): its + remainder is set against the donor's remainder, so it keeps its draw. + """ + + from microcosm.build.uk_runtime.lcfs_consumption import ( + UK_LCFS_COICOP_DIVISION_COLUMNS, + division_excess_factors, + ) + + food = UK_LCFS_COICOP_DIVISION_COLUMNS[0] + # Ten households; every donor drawn mean is 10, so each division expects + # 100 of drawn spend. Housing's remainder is 120 whatever its levelled + # parts add to its total. + means = dict.fromkeys(UK_LCFS_COICOP_DIVISION_COLUMNS, 10.0) + drawn = dict.fromkeys(UK_LCFS_COICOP_DIVISION_COLUMNS, 120.0) + drawn[food] = 240.0 + result = division_excess_factors(drawn, means, households=10.0) + shared = (240.0 + 120.0 * 11) / 1200.0 + assert result["shared_ratio"] == pytest.approx(shared) + divisions = result["divisions"] + assert divisions[food]["ratio"] == pytest.approx(2.4) + assert divisions[food]["factor"] == pytest.approx(shared * 100.0 / 240.0) + for division in UK_LCFS_COICOP_DIVISION_COLUMNS[1:]: + assert divisions[division]["ratio"] == pytest.approx(1.2) + assert divisions[division]["factor"] == 1.0 + # One pass: the levelled food leaves the shared ratio below the others' + # 1.2, and they keep their draws all the same. + assert "passes" not in result + + +def test_recompose_levels_the_divisions_excess_before_the_hold() -> None: + from microcosm.build.uk_runtime.lcfs_consumption import ( + UK_LCFS_COICOP_DIVISION_COLUMNS, + recompose_parent_totals, + ) + + housing = "housing_water_and_electricity_consumption" + food = "food_and_non_alcoholic_beverages_consumption" + draws = pd.DataFrame( + {column: [100.0, 100.0] for column in UK_LCFS_COICOP_DIVISION_COLUMNS} + ) + draws[food] = [300.0, 300.0] + for column in ( + "electricity_consumption", + "gas_consumption", + "liquid_fuel_consumption", + "solid_fuel_consumption", + "petrol_spending", + "diesel_spending", + "bus_fare_spending", + ): + draws[column] = 0.0 + draws["electricity_consumption"] = [20.0, 20.0] + # The chain's draws of the parts: housing nets 20 of drawn energy. + drawn = pd.DataFrame( + { + "domestic_energy_consumption": [20.0, 20.0], + "liquid_fuel_consumption": [0.0, 0.0], + "solid_fuel_consumption": [0.0, 0.0], + "petrol_spending": [0.0, 0.0], + "diesel_spending": [0.0, 0.0], + "bus_fare_spending": [0.0, 0.0], + } + ) + # The donor's drawn spend per household: housing's is its total less the + # parts the stage levels. + means = dict.fromkeys(UK_LCFS_COICOP_DIVISION_COLUMNS, 100.0) + means[housing] = 80.0 + out, receipt = recompose_parent_totals( + draws, + drawn=drawn, + parameters=_recompose_declaration(levelled=True), + weights=np.array([1.0, 1.0]), + donor_support=_WIDE_RECOMPOSE_SUPPORT, + donor_division_means=means, + ) + levelling = receipt["division_levelling"] + shared = levelling["shared_ratio"] + # Food alone stands above the shared ratio and comes down to it. + assert levelling["divisions"][food]["factor"] < 1.0 + assert out[food].tolist() == pytest.approx([shared * 100.0, shared * 100.0]) + # Housing's 80 remainder against the donor's 80 sits below it, and keeps + # its draw beside its 20 of electricity. + assert receipt["parents"][housing]["levelling_factor"] == 1.0 + assert out[housing].tolist() == [100.0, 100.0] + with pytest.raises(ValueError, match="division means"): + recompose_parent_totals( + draws, + drawn=drawn, + parameters=_recompose_declaration(levelled=True), + weights=np.array([1.0, 1.0]), + donor_support=_WIDE_RECOMPOSE_SUPPORT, + ) + + +def test_recompose_refuses_a_drifted_levelling_declaration() -> None: + from microcosm.build.uk_runtime.lcfs_consumption import check_recomposed_parents + + declared = _recompose_declaration(levelled=True) + check_recomposed_parents(declared) + drifted = { + **declared, + "level_division_excess": { + **declared["level_division_excess"], + "rule": "to_donor_totals", + }, + } + with pytest.raises(ValueError, match="not the rule the stage applies"): + check_recomposed_parents(drifted) + + def test_recompose_writes_each_total_around_its_levelled_parts() -> None: """Totals keep the chain's own split and hold the levelled parts (#1113).""" @@ -2360,17 +2544,22 @@ def test_recompose_writes_each_total_around_its_levelled_parts() -> None: drawn = pd.DataFrame( { "domestic_energy_consumption": [2000.0, 900.0, 0.0], + "liquid_fuel_consumption": [300.0, 0.0, 0.0], + "solid_fuel_consumption": [0.0, 50.0, 0.0], "petrol_spending": [800.0, 0.0, 0.0], "diesel_spending": [0.0, 700.0, 0.0], "bus_fare_spending": [100.0, 0.0, 50.0], } ) - # The levelled parts, beside the totals as the chain drew them. + # The levelled parts, beside the totals as the chain drew them; the + # heating fuels are drawn parts, added back unchanged. draws = pd.DataFrame( { "housing_water_and_electricity_consumption": [7000.0, 600.0, 800.0], "electricity_consumption": [900.0, 600.0, 0.0], "gas_consumption": [700.0, 0.0, 0.0], + "liquid_fuel_consumption": [300.0, 0.0, 0.0], + "solid_fuel_consumption": [0.0, 50.0, 0.0], "transport_consumption": [2000.0, 1000.0, 0.0], "petrol_spending": [1500.0, 0.0, 0.0], "diesel_spending": [0.0, 900.0, 0.0], @@ -2389,10 +2578,11 @@ def test_recompose_writes_each_total_around_its_levelled_parts() -> None: donor_support=_WIDE_RECOMPOSE_SUPPORT, ) - # Housing: 7000 - 2000 + 1600; 600 - 900 floors at 0, + 600; 800 + 0. + # Housing: 7000 - 2300 + 1900; 600 - 950 floors at 0, + 650, so the total + # holds its solid fuel as well as its electricity; 800 + 0. assert out["housing_water_and_electricity_consumption"].tolist() == [ 6600.0, - 600.0, + 650.0, 800.0, ] # Transport nets the drawn fuel and bus and adds the levelled fuel and the @@ -2409,7 +2599,7 @@ def test_recompose_writes_each_total_around_its_levelled_parts() -> None: # With the parent on a 1.02 bridge, drawn energy and bus left at 1.0 and # petrol at 0.9, the remainders keep the gap between the factors: housing - # (2 x 2000 + 900) x 0.02; transport 1600 x (1.02 / 0.9 - 1) + 700 x 0.02 + # (2 x 2300 + 950) x 0.02; transport 1600 x (1.02 / 0.9 - 1) + 700 x 0.02 # + 350 x 0.02 (the #1167 re-review's item 2, recorded not corrected). _, with_factors = recompose_parent_totals( draws, @@ -2425,16 +2615,20 @@ def test_recompose_writes_each_total_around_its_levelled_parts() -> None: ) housing = with_factors["parents"]["housing_water_and_electricity_consumption"] transport = with_factors["parents"]["transport_consumption"] - assert housing["uprating_residue"]["weighted_residue_gbp"] == pytest.approx(98.0) + assert housing["uprating_residue"]["weighted_residue_gbp"] == pytest.approx(111.0) assert transport["uprating_residue"]["weighted_residue_gbp"] == pytest.approx( 1600.0 * (1.02 / 0.9 - 1.0) + 700.0 * 0.02 + 350.0 * 0.02 ) assert transport["uprating_residue"]["part_factors"]["petrol_spending"] == 0.9 housing = receipt["parents"]["housing_water_and_electricity_consumption"] - assert housing["drawn_subtracts"] == ["domestic_energy_consumption"] + assert housing["drawn_subtracts"] == [ + "domestic_energy_consumption", + "liquid_fuel_consumption", + "solid_fuel_consumption", + ] assert housing["weighted_drawn_total"] == 2.0 * 7000.0 + 600.0 + 3.0 * 800.0 assert housing["rows_floored"] == 1 - assert housing["weighted_floored_mass"] == 300.0 + assert housing["weighted_floored_mass"] == 350.0 assert housing["weighted_remainder"] == pytest.approx( housing["weighted_drawn_total"] - housing["weighted_drawn_subtracts"] @@ -2453,7 +2647,7 @@ def test_recompose_writes_each_total_around_its_levelled_parts() -> None: assert transport["weighted_total"] == 2.0 * 2600.0 + 1450.0 + 3.0 * 400.0 assert transport["weighted_components"] == 2.0 * 1500.0 + 1150.0 + 3.0 * 400.0 assert transport["rows_floored"] == 1 - uncarried = receipt["uncarried"] + published = receipt["published_fuels"] expected = [ float( vendored_rows( @@ -2470,8 +2664,12 @@ def test_recompose_writes_each_total_around_its_levelled_parts() -> None: ("04.5.4", "ons.household_expenditure.solid_fuels"), ) ] - assert [entry["value"] for entry in uncarried["classes"]] == expected - assert uncarried["total"] == pytest.approx(sum(expected)) + assert [entry["value"] for entry in published["classes"]] == expected + assert [entry["column"] for entry in published["classes"]] == [ + "liquid_fuel_consumption", + "solid_fuel_consumption", + ] + assert published["total"] == pytest.approx(sum(expected)) @pytest.mark.parametrize( @@ -2491,13 +2689,21 @@ def test_recompose_writes_each_total_around_its_levelled_parts() -> None: ), (lambda d: d["parents"].pop("transport_consumption"), "must declare"), ( - lambda d: d["uncarried"].update(resource="family_resources.json"), + lambda d: d["published_fuels"].update(resource="family_resources.json"), "not a vendored", ), ( - lambda d: d["uncarried"]["classes"][0].update(concept="ons.other"), + lambda d: d["published_fuels"]["classes"][0].update(concept="ons.other"), "expected one", ), + ( + lambda d: d["published_fuels"]["classes"][0].update(column="gas"), + "not a heating-fuel column", + ), + ( + lambda d: d["published_fuels"]["classes"].pop(), + "once each", + ), (lambda d: d.pop("maximum_total"), "maximum_total"), ], ) @@ -2513,6 +2719,8 @@ def test_recompose_refuses_a_declaration_it_does_not_apply(change, match) -> Non "domestic_energy_consumption", "electricity_consumption", "gas_consumption", + "liquid_fuel_consumption", + "solid_fuel_consumption", "transport_consumption", "petrol_spending", "diesel_spending", @@ -2537,6 +2745,8 @@ def test_recompose_holds_each_total_to_the_donor_maximum() -> None: drawn = pd.DataFrame( { "domestic_energy_consumption": [2000.0, 100.0, 0.0], + "liquid_fuel_consumption": [0.0, 0.0, 0.0], + "solid_fuel_consumption": [0.0, 0.0, 0.0], "petrol_spending": [0.0, 0.0, 0.0], "diesel_spending": [0.0, 0.0, 0.0], "bus_fare_spending": [0.0, 0.0, 0.0], @@ -2548,6 +2758,8 @@ def test_recompose_holds_each_total_to_the_donor_maximum() -> None: "housing_water_and_electricity_consumption": [7800.0, 5000.0, 3000.0], "electricity_consumption": [2500.0, 700.0, 4000.0], "gas_consumption": [1500.0, 200.0, 3000.0], + "liquid_fuel_consumption": [0.0, 0.0, 0.0], + "solid_fuel_consumption": [0.0, 0.0, 0.0], "transport_consumption": [10.0, 10.0, 10.0], "petrol_spending": [0.0, 0.0, 0.0], "diesel_spending": [0.0, 0.0, 0.0], diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_legacy_closure_take_up.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_legacy_closure_take_up.py index 1a3836dd9e..1bbc702779 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_legacy_closure_take_up.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_legacy_closure_take_up.py @@ -171,6 +171,8 @@ def _frame( "person_household_id": ids, "person_benunit_id": ids, "age": np.full(n, 40, dtype="int64"), + # One person per unit, so each is its claimant. + "is_claimant_or_partner": np.ones(n, dtype=bool), **{ column: reported.get(column, np.zeros(n)).astype(float) for column in _REPORTED @@ -236,6 +238,64 @@ def test_units_outside_the_draw_keep_the_engine_default() -> None: } +def test_only_the_claimant_and_partner_place_a_unit_in_the_draw() -> None: + """The engine closes an award through its owners (pe-uk#2549), so a + dependant's own award neither puts the family in the draw nor keeps it + out as a Universal Credit unit.""" + + person = pd.DataFrame( + { + "person_id": np.arange(1, 5, dtype="int64"), + "person_household_id": np.asarray([1, 1, 2, 2], dtype="int64"), + "person_benunit_id": np.asarray([1, 1, 2, 2], dtype="int64"), + "age": np.asarray([45, 17, 40, 18], dtype="int64"), + "is_claimant_or_partner": [True, False, True, False], + **{column: np.zeros(4) for column in _REPORTED}, + } + ) + # Unit 1: only its dependant reports income-related ESA, in their own + # right. Unit 2: its claimant reports Child Tax Credit, and a member who + # is neither claimant nor partner reports Universal Credit. + person["esa_income_reported"] = [0.0, 300.0, 0.0, 0.0] + person["child_tax_credit_reported"] = [0.0, 0.0, 500.0, 0.0] + person["universal_credit_reported"] = [0.0, 0.0, 0.0, 800.0] + benunit = pd.DataFrame( + { + "benunit_id": np.asarray([1, 2], dtype="int64"), + "would_claim_uc": [False, False], + "frs_benunit_capital": np.zeros(2), + } + ) + frame = uk_national_frame( + person=person, + benunit=benunit, + household=pd.DataFrame( + { + "household_id": np.asarray([1, 2], dtype="int64"), + "region": pd.array(["NORTH_WEST", "NORTH_WEST"], dtype="string"), + "household_source_id": np.asarray([1, 2], dtype="int64"), + } + ), + time_period="2024", + weight_kind=WeightKind.DESIGN, + household_weights=np.ones(2), + ) + + assert list(lc.legacy_benefit_combinations(person, benunit)) == [ + "", + "child_tax_credit", + ] + result = lc.assign_uc_claim_at_legacy_closure(frame, rates=_RATES) + # Unit 1 is outside the draw and keeps the engine's default; unit 2 is + # drawn on its claimant's Child Tax Credit alone. + assert result.frame.table("benunit")[lc.LEGACY_CLOSURE_OUTPUT].to_numpy()[0] + assert set(result.evidence()["combinations"]) == {"child_tax_credit"} + + without = person.drop(columns="is_claimant_or_partner") + with pytest.raises(ValueError, match="is_claimant_or_partner"): + lc.legacy_benefit_combinations(without, benunit) + + def test_the_weighted_share_claiming_matches_dwps_rate() -> None: rng = np.random.default_rng(11) n = 6_000 diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_measure_simulation.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_measure_simulation.py index 29febbf375..54f99c484e 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_measure_simulation.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_measure_simulation.py @@ -593,17 +593,28 @@ def test_exclusion_applier_warns_within_week_of_expiry(): # a band test that reads the Scottish bands; microcosm#1095 binds them by # rate class, so no salary-sacrifice entry remains. "hmrc.salary_sacrifice.": 0, + # The next policyengine-uk bump: every HMRC £1m-and-over cell has carriers + # on #1333's 2.145.0 spine, so arm 1 bound the ten; bound, they distorted + # their SPI-channel neighbours, so they stay held on that measurement + # (María's rule of 2026-10-21), re-signed on 2026-10-23. Of the five SLC + # rows, the postgraduate repayments row retired from the targets (the + # stage assigns no postgraduate plan) and Plan 5's liable stock binds; the + # Plan 5 repayments and the two Plan 2 stocks stay. "_1_000_000_to_inf": 10, - "slc.": 5, + "slc.": 3, # microcosm#1095 (2026-10-07): two bands whose few supporting awards # policyengine-uk 2.122.2 moves out join the uk-data#452 class. # microcosm#1095 U3 (2026-10-16): the sparse-band support floor drops # every band below ten source households, so the nine entries it covers # on the head spine retire (seven uk-data#452, the two microcosm#736 # zero-support bands); twelve well-supported bands remain held out per - # row, each on its own renewal. - "dwp/uc_payment_dist/": 12, - "obr.universal_credit_": 2, + # row, each on its own renewal. Arm 2 of the next policyengine-uk bump + # (2026-10-24) binds four of them, which it fits within 10 percent + # unbound since the award-band take-up of microcosm#1344. + "dwp/uc_payment_dist/": 8, + # The OBR welfare-cap split retired from the targets with the next bump: + # obr.universal_credit binds the sum of the two cells. + "obr.universal_credit_": 0, # microcosm#890 E1 (2026-09-11): the all-road-users obr.fuel_duties row # is signed out of the reference surface (target_reference_signed_ # exclusions.json) and obr.fuel_duties_cars binds the cars receipts, so @@ -644,6 +655,10 @@ def test_exclusion_applier_warns_within_week_of_expiry(): # microcosm#1113 and #1123 item 3 (2026-10-08): rows whose level the # engine, a published-source residual or a scope the frame doesn't hold # sets, held out and measured with tools/diagnose_uk_consumption_taxes.py. + # obr.vat bound again with the next policyengine-uk bump (ruling D3), and + # was held again as a diagnostic (María's ruling of 2026-10-24, Vahid's + # review of #1383, item 10): the engine's coverage factor was derived on + # a certified Microcosm release, so binding the row is circular. "obr.vat": 1, "obr.fuel_duties_cars": 1, "ons.household_electricity_expenditure": 1, @@ -686,22 +701,28 @@ def test_packaged_exclusions_load(): # plus the employer NICs diagnostic (microcosm#1301) and the rail-support # hold-out (microcosm#1278), less the thirteen rows bound again under # María's rule of 2026-10-21 (the eleven benefit-cap amount bands and the - # HMRC £500k to £1m dividend and property-income-count rows). - assert len(names) == len(set(names)) == 45 + # HMRC £500k to £1m dividend and property-income-count rows), less the + # seven the next policyengine-uk bump retires: the three band-H region + # cells and Plan 5's liable stock bind, and the OBR welfare-cap split and + # the postgraduate repayments leave the targets; and obr.vat binds again + # with it (ruling D3). The ten HMRC £1m-and-over cells it bound on arm 1 + # are held again on that arm's measured distortion. Arm 2 binds four of + # the twelve UC payment bands, which it fits unbound (microcosm#1344), and + # obr.vat is held again as a diagnostic (Vahid's review of #1383, 10). + assert len(names) == len(set(names)) == 34 + rehold = [entry for entry in exclusions if "_1_000_000_to_inf" in entry["name"]] + assert {(e["approved_on"], e["expires_on"], e["tracking"]) for e in rehold} == { + ("2026-10-23", "2027-01-23", "microcosm#1095") + } + for entry in rehold: + assert entry["reason"].startswith("Measured distortion"), entry["name"] + assert "arm 1" in entry["adjudication"], entry["name"] + # The cells rest on the SPI Public Use Tape: no figure of theirs or + # their neighbours' enters the register. + assert "%" not in entry["reason"], entry["name"] assert not [name for name in names if name.startswith("dwp.benefit_cap.")] - band_h_region_cells = [ - entry - for entry in exclusions - if entry["name"].startswith("mhclg.council_tax_stock.band_h@E12") - ] - assert [entry["name"] for entry in band_h_region_cells] == [ - "mhclg.council_tax_stock.band_h@E12000001", - "mhclg.council_tax_stock.band_h@E12000002", - "mhclg.council_tax_stock.band_h@E12000003", - ] - assert {entry["approved_on"] for entry in band_h_region_cells} == {"2026-09-14"} - assert {entry["tracking"] for entry in band_h_region_cells} == {"microcosm#796"} - assert {entry["expires_on"] for entry in band_h_region_cells} == {"2026-11-26"} + # The band-H region cells bind under the floor's band-H scope. + assert not [name for name in names if name.startswith("mhclg.council_tax_stock.")] for marker, expected in _PACKAGED_EXCLUSION_CENSUS.items(): matched = [name for name in names if marker in name] @@ -727,14 +748,25 @@ def test_packaged_exclusions_load(): # entry may remain on the register. 35 since microcosm#890 also retired # the obr.fuel_duties entry (2026-09-11): the all-road-users row is # signed out of the reference surface and the cars receipts bind instead. - tranche = [e for e in exclusions if e["approved_on"] == "2026-08-26"] # Three 2026-08-26 rows retired 2026-09-21 on the v20 measurement, three - # payment bands retired 2026-10-16 under the support floor, and the two - # thin HMRC 500k-1m cells retired 2026-10-21, bound again. - assert len(tranche) == 27 + # payment bands retired 2026-10-16 under the support floor, the two thin + # HMRC 500k-1m cells retired 2026-10-21, bound again, and fourteen more + # with the next bump: the ten HMRC £1m-and-over cells (held again on arm + # 1's distortion, on their own entries) and Plan 5's liable stock were + # bound, and the OBR welfare-cap split and the postgraduate repayments + # left the targets. The twelve payment bands and Plan 5's repayments + # remained, renewed on 2026-10-23 on arm 1's measurement, and arm 2 + # bound four of the bands (2026-10-24), so eight bands and Plan 5's + # repayments remain. + assert [e for e in exclusions if e["approved_on"] == "2026-08-26"] == [] + tranche = [e for e in exclusions if "5427936411" in e["adjudication"]] + assert len(tranche) == 9 for entry in tranche: - assert "5427936411" in entry["adjudication"], entry["name"] - assert entry["expires_on"] == "2026-11-26", entry["name"] + assert (entry["approved_on"], entry["expires_on"]) == ( + "2026-10-23", + "2027-01-23", + ), entry["name"] + assert "renewed on 2026-10-23 to 2027-01-23" in entry["adjudication"] assert not [n for n in names if n.startswith("ons.household_composition.")] # The 2026-09-03 tranche was #762's A16: five unreachable national rows, @@ -759,14 +791,15 @@ def test_packaged_exclusions_load(): # #1063 stack arm retired 2026-10-16 (the support floor drops them), and # the plan-2 rows left the 2026-10-02 clock on their 2026-10-20 renewal. assert [e for e in exclusions if e["approved_on"] == "2026-10-02"] == [] - # The other 2026-10-20 entry is the rail-support hold-out (below). + # The plan-2 rows were renewed again on 2026-10-23, on arm 1 of the next + # bump; the 2026-10-20 entry left is the rail-support hold-out (below). assert sorted( e["name"] for e in exclusions if e["approved_on"] == "2026-10-20" - ) == sorted([*_A16_UNREACHABLE_ROWS[:2], "orr.rail_government_support"]) + ) == ["orr.rail_government_support"] renewed = [ e for e in exclusions - if e["approved_on"] == "2026-10-20" and e["name"] in _A16_UNREACHABLE_ROWS + if e["approved_on"] == "2026-10-23" and e["name"] in _A16_UNREACHABLE_ROWS ] assert sorted(e["name"] for e in renewed) == sorted(_A16_UNREACHABLE_ROWS[:2]) # María's ruling of 2026-10-20 (microcosm#1278): the ORR row is held out @@ -780,6 +813,11 @@ def test_packaged_exclusions_load(): assert "microcosm#890 G" in rail["reason"] assert "never fitted" in rail["reason"] assert "within 10 percent" in rail["adjudication"] + # Bound on table 7271, the plan's default of 2026-10-22, the row failed + # the weight-ratio gate on arm 2c of the next policyengine-uk bump, so + # the hold stands and the basis ruling stays open. + assert "uk_weight_ratio failed" in rail["reason"] + assert "arm 2c" in rail["adjudication"] # So did the two bands the engine bump of microcosm#1095 (policyengine-uk # 2.122.2) emptied, the 2026-10-07 entries. assert [e for e in exclusions if e["approved_on"] == "2026-10-07"] == [] @@ -794,11 +832,12 @@ def test_packaged_exclusions_load(): # three that tracked it tracked its follow-up issue, microcosm#1207, and # since that closed into it, microcosm#1278. obr.vat tracked # policyengine-uk#1996 until policyengine-uk#2187 (released in 2.135.7) - # closed it; it tracks microcosm#1278 until a lock bump lets it rebind. + # closed it, bound again with the next policyengine-uk bump, and is held + # again on its own entry: the factor #2187 uses was derived on a certified + # Microcosm release (María's ruling of 2026-10-24). consumption_taxes = [e for e in exclusions if e["approved_on"] == "2026-10-08"] assert sorted(e["name"] for e in consumption_taxes) == [ "obr.fuel_duties_cars", - "obr.vat", "ons.household_electricity_expenditure", "ons.household_gas_expenditure", ] @@ -813,14 +852,16 @@ def test_packaged_exclusions_load(): ), entry["name"] trackings = {e["name"]: e["tracking"] for e in consumption_taxes} assert trackings == { - "obr.vat": "microcosm#1278", "obr.fuel_duties_cars": "microcosm#1278", "ons.household_electricity_expenditure": "microcosm#1278", "ons.household_gas_expenditure": "microcosm#1278", } - vat = next(e for e in consumption_taxes if e["name"] == "obr.vat") - assert "policyengine-uk#2187" in vat["adjudication"] - assert "lock bump" in vat["adjudication"] + (vat,) = [e for e in exclusions if e["name"] == "obr.vat"] + assert (vat["approved_on"], vat["expires_on"]) == ("2026-10-24", "2027-01-24") + assert vat["tracking"] == "microcosm#1278" + assert "circularity" in vat["reason"] + assert "policyengine-uk#2319" in vat["reason"] + assert "tools/diagnose_uk_consumption_taxes.py" in vat["reason"] # microcosm#1095: the five-or-more children row held out on 2026-10-14 # (María's ruling on microcosm#1271) is no target since 2026-10-16, but a # diagnostic beside the two-child-limit rows, so no exclusion names it and @@ -829,9 +870,9 @@ def test_packaged_exclusions_load(): assert sorted( e["name"] for e in exclusions if e["approved_on"] == "2026-10-16" ) == ["obr.ni_employer", "ons.savings_interest_income"] - assert sorted( - e["name"] for e in exclusions if e["approved_on"] == "2026-10-14" - ) == sorted(_UC_ELEMENT_REGISTER_ROWS) + # The housing-element row's 2026-10-14 renewal was renewed again on + # 2026-10-23, on arm 1 of the next bump. + assert [e for e in exclusions if e["approved_on"] == "2026-10-14"] == [] assert "dwp.uc.households_children_5_or_more" not in names # María's ruling of 2026-10-20 (microcosm#1278): renewed rather than made # diagnostics, and restated on the academic year 2024/25 stock the rows @@ -842,7 +883,8 @@ def test_packaged_exclusions_load(): } for entry in renewed: assert entry["approved_by"] == "juaristi22", entry["name"] - assert entry["expires_on"] == "2026-11-26", entry["name"] + assert entry["expires_on"] == "2027-01-23", entry["name"] + assert "renewed on 2026-10-23 to 2027-01-23" in entry["adjudication"] assert entry["tracking"] == a16_issues[entry["name"]], entry["name"] assert "A16" in entry["adjudication"], entry["name"] assert "renewed one month on 2026-10-02" in entry["adjudication"], entry["name"] @@ -854,11 +896,16 @@ def test_packaged_exclusions_load(): assert "Table 6a" in entry["reason"], entry["name"] assert plan_2_stocks[entry["name"]] in entry["reason"], entry["name"] assert "frame-side gap" in entry["reason"], entry["name"] + # The two re-adjudicated rows left the 2026-12-08 clock on 2026-10-24, + # renewed on arm 2 of the next policyengine-uk bump pending the Housing + # Benefit and JSA PR. for name in _A16_READJUDICATED_ROWS: entry = next(e for e in exclusions if e["name"] == name) - assert entry["approved_on"] == "2026-09-16", name - assert entry["expires_on"] == "2026-12-08", name + assert entry["approved_on"] == "2026-10-24", name + assert entry["expires_on"] == "2027-01-24", name assert entry["tracking"] == a16_issues[name], name + assert "Renewed on 2026-10-24 to 2027-01-24" in entry["adjudication"], name + assert "arm 2" in entry["reason"], name for name in _A16_CONCEPT_ROWS: entry = next(e for e in exclusions if e["name"] == name) # Ruling R3 of 2026-09-22, renewed on 2026-10-16 to 2027-01-08. @@ -877,15 +924,19 @@ def test_packaged_exclusions_load(): # (tracked on #867 like the spend row) and the benefit-cap amount bands # outside the bound (tracked on #882); every entry names its tool. The # bands retired 2026-10-21, bound again (María's rule of that day), so - # the caseload rows remain. + # the caseload rows remain, renewed on 2026-10-24 on arm 2 of the next + # policyengine-uk bump with the spend and JSA rows. + assert [e for e in exclusions if e["approved_on"] == "2026-09-16"] == [] repairs = [ e for e in exclusions - if e["approved_on"] == "2026-09-16" and e["name"] not in _A16_READJUDICATED_ROWS + if e["approved_on"] == "2026-10-24" + and e["name"] not in _A16_READJUDICATED_ROWS + and e["name"] != "obr.vat" ] assert len(repairs) == 3 for entry in repairs: - assert entry["expires_on"] == "2026-12-08", entry["name"] + assert entry["expires_on"] == "2027-01-24", entry["name"] # Every entry of the tranche points at the ruling that exists (the # 2026-09-16 status comment) and explains the shared expiry. assert "issuecomment-5694598278" in entry["adjudication"], entry["name"] @@ -912,12 +963,13 @@ def test_packaged_exclusions_load(): elements = [ e for e in exclusions - if e["approved_on"] == "2026-10-14" and e["tracking"] == "microcosm#882" + if e["approved_on"] == "2026-10-23" and e["tracking"] == "microcosm#882" ] assert sorted(e["name"] for e in elements) == sorted(_UC_ELEMENT_REGISTER_ROWS) for entry in elements: - assert entry["expires_on"] == "2026-11-14", entry["name"] + assert entry["expires_on"] == "2027-01-23", entry["name"] assert "renewed one month on 2026-10-14" in entry["adjudication"] + assert "renewed on 2026-10-23 to 2027-01-23" in entry["adjudication"] assert entry["tracking"] == "microcosm#882", entry["name"] assert entry["approved_by"] == "juaristi22", entry["name"] assert "microcosm#882" in entry["adjudication"], entry["name"] @@ -981,15 +1033,12 @@ def test_employer_nics_are_a_measured_diagnostic(): assert entry["tracking"] == "policyengine-uk#2459" assert entry["approved_by"] == "juaristi22" assert entry["approved_on"] == "2026-10-16" - # Three months, the window of the 2026-10-08 engine-factor diagnostic. + # Three months, the window the 2026-10-08 engine-factor diagnostic had. assert entry["expires_on"] == "2027-01-16" - vat = exclusions["obr.vat"] assert ( date.fromisoformat(entry["expires_on"]) - date.fromisoformat(entry["approved_on"]) - ).days == ( - date.fromisoformat(vat["expires_on"]) - date.fromisoformat(vat["approved_on"]) - ).days + ).days == (date(2027, 1, 8) - date(2026, 10, 8)).days for phrase in ( "Employment Allowance", "calendar-2025 window", diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_measurement_period.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_measurement_period.py index 51a3fef0b4..2280bca166 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_measurement_period.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_measurement_period.py @@ -368,6 +368,8 @@ def test_a_frame_without_a_period_label_keeps_the_frame_route(): "benefit_cap_reduction", "benunit_tenure_type", "council_tax_band", + # Engine-computed from the household's adults (pe-uk#1864; microcosm#953). + "council_tax_discount_rate", "country", "dfe_age_at_31_december", "dfe_spring_early_learning_2", @@ -410,6 +412,7 @@ def test_a_frame_without_a_period_label_keeps_the_frame_route(): "tenure_type", "total_income_after_loss_relief", "uc_LCWRA_element", + "uc_benefit_cap_reduction_after_floor", "uc_calibration_administrative_family_type", "uc_calibration_child_count", "uc_calibration_has_child_under_one", diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_national_calibration.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_national_calibration.py index 6d2a6edb44..a64bb5041b 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_national_calibration.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_national_calibration.py @@ -59,8 +59,11 @@ # the ONS single years 0, 1 and 2 for all persons, and the childcare costing # fixes (item 6) the UK's single years 3 to 6 and England's 0 to 6, and the # DfE single-age rows five funded-childcare counts (working parent 9 to 11 -# months and ages 1-3, universal nursery 3; the age-4 cells are signed out). -ACTIVE_REFERENCE_COUNT = 1338 +# months and ages 1-3, universal nursery 3; the age-4 cells are signed out); +# the next policyengine-uk bump retires the OBR welfare-cap split and the +# England postgraduate repayments (microcosm#1095), and England's single adult +# council tax discount binds (microcosm#953). +ACTIVE_REFERENCE_COUNT = 1336 def _uc_reference(**overrides) -> LedgerTargetReference: @@ -594,7 +597,7 @@ def test_chronicle_184_uc_and_obr_references_compile_fail_closed() -> None: spec = load_country_spec("uk") assert len(spec.target_references) == ACTIVE_REFERENCE_COUNT reference_names = {reference.name for reference in spec.target_references} - assert "obr.universal_credit_in_cap" in reference_names + assert "obr.universal_credit" in reference_names assert "dwp.uc.households" in reference_names membership = json.loads( @@ -635,19 +638,18 @@ def test_chronicle_184_uc_and_obr_references_compile_fail_closed() -> None: references = tuple( reference for reference in spec.target_references - if reference.name == "obr.universal_credit_in_cap" + if reference.name == "obr.universal_credit" ) registry = compile_ledger_target_references( [ - # The OBR row binds at the calendar-2025 window, so the series - # needs the fiscal years opening in 2024 and 2025. + # The OBR total binds the two welfare-cap cells at the calendar-2025 + # window, so each cell's series needs the fiscal years opening in + # 2024 and 2025. { - **_fact( - concept="obr.universal_credit_in_cap", - source_name="obr", - value=40_000_000_000, + **_fact(concept=concept, source_name="obr", value=value), + "aggregate_fact_key": ( + f"ledger.aggregate_fact.v2:obr-fixture-{concept}-fy{year}" ), - "aggregate_fact_key": f"ledger.aggregate_fact.v2:obr-fixture-fy{year}", "period": {"type": "fiscal_year", "value": year}, # Chronicle stamps OBR table 4.9's DWP lines with the # geography DWP counts them over (microcosm#1300). @@ -657,13 +659,17 @@ def test_chronicle_184_uc_and_obr_references_compile_fail_closed() -> None: "name": "Great Britain", }, } + for concept, value in ( + ("obr.universal_credit_in_cap", 40_000_000_000), + ("obr.universal_credit_outside_cap", 10_000_000_000), + ) for year in (2024, 2025) ], references, country="uk", ) - assert {spec.name for spec in registry.specs} == {"obr.universal_credit_in_cap"} + assert {spec.name for spec in registry.specs} == {"obr.universal_credit"} def test_packaged_binding_classes_materialize_through_the_national_route() -> None: diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_national_frame.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_national_frame.py index 95b85e7851..af7e29d0ae 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_national_frame.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_national_frame.py @@ -14,6 +14,8 @@ from __future__ import annotations +import json +from importlib.resources import files from pathlib import Path import numpy as np @@ -21,6 +23,8 @@ import pytest from microcosm.build.uk_runtime.national_frame import ( + UK_ENERGY_PRICE_BASIS, + UK_ENERGY_PRICE_BASIS_ATTR, UK_NATIONAL_SCHEMA, UKNationalStage, load_uk_national_frame, @@ -322,6 +326,52 @@ def test_frame_writer_payload_is_stable_across_generations( assert old_attrs == new_attrs +def test_the_writer_declares_the_energy_price_period_where_energy_is_stored( + tmp_path: Path, +) -> None: + """policyengine-uk projects stored energy spending only from a declared + period (PolicyEngine/policyengine-uk#2571), so every H5 that stores it + declares the period, and one that stores none declares nothing.""" + + pytest.importorskip("tables") + h5py = pytest.importorskip("h5py") + household = household_frame().assign(electricity_consumption=[1.0, 2.0, 3.0]) + with_energy = write_uk_national_frame( + _frame(household=household), tmp_path / "energy.h5" + ) + without_energy = write_uk_national_frame(_frame(), tmp_path / "plain.h5") + + with h5py.File(with_energy, mode="r") as file: + stored = file.attrs[UK_ENERGY_PRICE_BASIS_ATTR] + assert json.loads(stored) == {"period_type": "calendar_year", "period_value": 2024} + # The engine's own writer sorts the keys, so the bytes match its own. + assert stored == '{"period_type": "calendar_year", "period_value": 2024}' + with h5py.File(without_energy, mode="r") as file: + assert UK_ENERGY_PRICE_BASIS_ATTR not in file.attrs + # A reload and rewrite declares it again. + reloaded, _provenance = load_uk_national_frame(with_energy) + again = write_uk_national_frame(reloaded, tmp_path / "again.h5") + with h5py.File(again, mode="r") as file: + assert file.attrs[UK_ENERGY_PRICE_BASIS_ATTR] == stored + + +def test_the_declared_energy_price_period_is_the_one_the_lcfs_gate_holds() -> None: + """The stage-time gate holds every LCFS spend level to one calendar year + (microcosm#1113); the declaration must name that year, not drift from it.""" + + gates = json.loads( + files("microcosm.build.uk").joinpath("gates.json").read_text("utf-8") + )["gates"] + (entry,) = [ + gate for gate in gates if gate["id"] == "uk_stage_lcfs_consumption_basis" + ] + parameters = entry["parameters"] + assert { + "period_type": parameters["period_type"], + "period_value": parameters["period_value"], + } == dict(UK_ENERGY_PRICE_BASIS) + + def test_spi_replacement_output_constructs_a_frame() -> None: """The mid-pipeline kill-shot: stage 2's output must be frameable. diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_orrery_contract.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_orrery_contract.py index 984c277464..dcc13752d3 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_orrery_contract.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_orrery_contract.py @@ -296,6 +296,7 @@ def _brma_problem(n: int = 12, level: str = "brma"): { "household_id": np.arange(n, dtype=np.int64), "source_household_id": np.arange(n, dtype=np.int64), + "region": ["SCOTLAND"] * n, } ), }, diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_population_targets.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_population_targets.py index e4861a8df9..23d429dde4 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_population_targets.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_population_targets.py @@ -244,8 +244,10 @@ def test_uk_population_targets_shape_order_and_registry_accounting() -> None: # to 6 and England's 0 to 6, and the DfE single-age rows five more # funded-childcare counts (working parent 9 to 11 months and ages 1-3, # nursery age 3; the age-4 cells are signed out, as the bound rows fix - # them). - assert len(resource["targets"]) == 437 + # them). The next policyengine-uk bump retires the OBR welfare-cap split + # and the England postgraduate repayments to registry_parity.excluded + # (microcosm#1095). + assert len(resource["targets"]) == 435 providers = resource["hierarchy"]["providers"] categories = resource["hierarchy"]["categories"] @@ -259,10 +261,10 @@ def test_uk_population_targets_shape_order_and_registry_accounting() -> None: target_ids = [target["target_id"] for target in resource["targets"]] registry_scope = resource["registry_parity"]["scope_target_ids"] profile_scope = resource["profile_parity"]["scope_target_ids"] - assert len(registry_scope) == 378 + assert len(registry_scope) == 376 assert len(profile_scope) == 59 - assert target_ids[:378] == registry_scope - assert target_ids[378:] == profile_scope + assert target_ids[:376] == registry_scope + assert target_ids[376:] == profile_scope parity = resource["registry_parity"] assert parity["pinned_ref"] == "12a1e028afeef08d8b2d74ee03fd9de3a78b2dd3" @@ -282,9 +284,11 @@ def test_uk_population_targets_shape_order_and_registry_accounting() -> None: # microcosm#1301's three high-value homes region rows have no uk-data # metric, nor do microcosm#1278's three single years of age or the eleven # the childcare costing fixes add (UK 3 to 6, England 0 to 6), nor the - # five DfE funded-childcare single-age rows. - assert len(mapped_target_ids) == 186 - assert len(unmapped_declarations) == 192 + # five DfE funded-childcare single-age rows. The next policyengine-uk bump + # retires the OBR welfare-cap split and the England postgraduate + # repayments to the excluded rows (microcosm#1095). + assert len(mapped_target_ids) == 183 + assert len(unmapped_declarations) == 193 suppressed_ancestors = parity["suppressed_ancestors"] assert len(suppressed_ancestors) == 5 assert set(suppressed_ancestors).isdisjoint(parity["mapped"]) @@ -791,7 +795,7 @@ def test_uk_population_targets_have_unique_target_ids() -> None: resource = _load() target_ids = [target["target_id"] for target in resource["targets"]] - assert len(target_ids) == 437 + assert len(target_ids) == 435 assert len(target_ids) == len(set(target_ids)) @@ -1294,7 +1298,7 @@ def test_uc_payment_bands_share_administrative_family_but_keep_source_window() - def test_paid_joint_diagnostics_do_not_add_active_targets() -> None: targets = _load()["targets"] - assert len(targets) == 437 + assert len(targets) == 435 assert not any( f.get("variable") == "uc_calibration_child_entitlement" for target in targets diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_release_assembler.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_release_assembler.py index 25b3fb38d7..5c325d86a6 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_release_assembler.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_release_assembler.py @@ -11,6 +11,7 @@ import pandas as pd import pytest +from microcosm.build.country_spec import load_country_spec from microcosm.build.uk_runtime.calibration_run import resign_uk_gate_report from microcosm.build.uk_runtime.local_targets import load_uk_population_contract from microcosm.build.uk_runtime.national_frame import ( @@ -53,6 +54,9 @@ def _load_fixture_module(): _signing_key_fixture, ) _CODE_PIN = "5fa48f07436a806ad75ff76fd22cfb8613bddbe0" +#: The stages a national spine runs: the signed provenance names them, and the +#: assembler rederives the SPI Public Use Tape marker from them. +_SPINE_STAGES = tuple(stage.stage for stage in load_country_spec("uk").sources.stages) _ATTEMPT_ID = "uk-frs-calibration-attempt-20260828T101112Z-1a2b3c4d" _CUT_TAG = f"{UK_NATIONAL_RELEASE_ID}-20260828T101112Z-1a2b3c4d" @@ -108,7 +112,12 @@ def _frame(weights: list[float], *, weight_kind: WeightKind): ) -def _diagnostics(spine_sha256: str, *, runtime: dict | None = None) -> dict: +def _diagnostics( + spine_sha256: str, + *, + runtime: dict | None = None, + spine_provenance: dict | None = None, +) -> dict: return { "schema_version": 6, "weight_entity": "household", @@ -196,6 +205,11 @@ def _diagnostics(spine_sha256: str, *, runtime: dict | None = None) -> dict: "build_id": _ATTEMPT_ID, "input_posture": {"tier": "staging_candidate", "sha256": spine_sha256}, "runtime": dict(_SIGNED_RUNTIME if runtime is None else runtime), + "spine_provenance": ( + {"stages": list(_SPINE_STAGES)} + if spine_provenance is None + else spine_provenance + ), }, } @@ -222,6 +236,7 @@ def _build_assembler_inputs( spine_frame=None, candidate_frame=None, runtime=None, + spine_provenance=None, ): pytest.importorskip("tables") # pandas HDF backend pytest.importorskip("h5py") @@ -236,7 +251,12 @@ def _build_assembler_inputs( diagnostics_path = tmp_path / "calibration_diagnostics.json" diagnostics_path.write_text( - json.dumps(_diagnostics(sha256(spine), runtime=runtime)), encoding="utf-8" + json.dumps( + _diagnostics( + sha256(spine), runtime=runtime, spine_provenance=spine_provenance + ) + ), + encoding="utf-8", ) diagnostics_sha = sha256(diagnostics_path) for report_name in ("seam_report_path", "release_cut_report_path"): @@ -398,6 +418,16 @@ def test_assemble_green_release_dir(assembler_inputs, capsys) -> None: _CUT_TAG } assert "dataset_role" not in release_manifest + # The spine ran the SPI stages, so the release says it rests on the tape, + # on the microdata's own entry and with the tape's conditions. + assert release_manifest["artifacts"][driver._DATASET_KEY][ + "spi_public_use_tape_dependent" + ] + tape = release_manifest["licensed_data"]["spi_public_use_tape"] + assert tape["study"] == "SN 9422" + assert tape["dependent"] is True + assert "spi_income_band_donors" in tape["stages"] + assert len(tape["conditions"]) == 2 assert ( release_dir / "calibration_diagnostics.json" ).read_bytes() == assembler_inputs["diagnostics"].read_bytes() @@ -785,3 +815,35 @@ def test_assemble_refuses_reserialized_diagnostics(assembler_inputs) -> None: ) with pytest.raises(SystemExit, match="diagnostics bytes"): _load_driver_module().main(assembler_inputs["argv"]) + + +def test_assemble_refuses_a_recorded_spi_marker_its_stages_contradict( + green_certification_inputs, tmp_path: Path +) -> None: + inputs = _build_assembler_inputs( + green_certification_inputs, + tmp_path, + spine_provenance={ + "stages": list(_SPINE_STAGES), + "spi_public_use_tape": { + "study": "SN 9422", + "dependent": False, + "stages": [], + "conditions": [], + }, + }, + ) + with pytest.raises(SystemExit, match="disagrees with the stages"): + _load_driver_module().main(inputs["argv"]) + + +def test_assemble_refuses_a_spine_stage_the_spec_does_not_declare( + green_certification_inputs, tmp_path: Path +) -> None: + inputs = _build_assembler_inputs( + green_certification_inputs, + tmp_path, + spine_provenance={"stages": [*_SPINE_STAGES, "unknown_stage"]}, + ) + with pytest.raises(SystemExit, match="declares no stage"): + _load_driver_module().main(inputs["argv"]) diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_salary_sacrifice.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_salary_sacrifice.py index fd784edbd5..560e190489 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_salary_sacrifice.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_salary_sacrifice.py @@ -16,14 +16,20 @@ from microcosm.build.uk_runtime.cgt_support import HOUSEHOLD_IS_CGT_SUPPORT_COPY from microcosm.build.uk_runtime.national_frame import uk_national_frame from microcosm.build.uk_runtime.salary_sacrifice import ( + BONUS_SACRIFICE_OUTPUT, + BONUS_SACRIFICE_SOURCE, SALSAC_MOVE_PAY_SHARE_CAP, SALSAC_OUTPUT, SALSAC_PRE_CONVERSION_PAY_COLUMN, SALSAC_RATE_CAP, SALSAC_STAGE_TARGET, UKSalarySacrificeStageTransform, + _assert_bonus_sacrifice_anchor, _assert_salary_sacrifice_stage_parameters, + bonus_sacrifice_excess, + convert_bonuses_to_bonus_sacrifice, impute_salary_sacrifice, + load_bonus_sacrifice_anchor, load_salary_sacrifice_anchor, ) @@ -65,6 +71,7 @@ def _frame( donors=None, weights=None, employment_income=None, + bonus=None, ): n = len(asked) ids = np.arange(1, n + 1, dtype="int64") @@ -85,11 +92,13 @@ def _frame( "salary_sacrifice_asked": asked, SALSAC_OUTPUT: salary_sacrifice_values, "employee_pension_contributions": employee_pension, + BONUS_SACRIFICE_SOURCE: np.zeros(n) if bonus is None else bonus, } ) household = pd.DataFrame( { "household_id": ids, + "household_source_id": ids, "household_support_channel": channels, HOUSEHOLD_IS_CGT_CLONE: clones, HOUSEHOLD_IS_CGT_SUPPORT_COPY: donors, @@ -502,6 +511,7 @@ def draw(recipient: pd.DataFrame, ids: np.ndarray) -> pd.DataFrame: "household_support_channel": "frs", HOUSEHOLD_IS_CGT_CLONE: False, HOUSEHOLD_IS_CGT_SUPPORT_COPY: False, + "household_source_id": groups, } ), household_weights=np.ones(len(ids)), @@ -521,6 +531,7 @@ def draw(recipient: pd.DataFrame, ids: np.ndarray) -> pd.DataFrame: "salary_sacrifice_asked": [1, 1, 0, 0, 0, 0], SALSAC_OUTPUT: [10.0, 20.0, 0.0, 0.0, 0.0, 0.0], "employee_pension_contributions": np.zeros(rows), + BONUS_SACRIFICE_SOURCE: np.zeros(rows), } ) assert_draws_are_keyed_on_ids( @@ -544,6 +555,21 @@ def test_anchor_is_self_consistent() -> None: [ *[ (0, name) + for name in ( + "artifact_role", + "resource", + "feed_pin", + "record_sets", + "source_vintage", + "mapped_build_period", + "period_mapping", + "require_before_source_read", + "runtime_sha256_required", + "fail_on_mismatch", + ) + ], + *[ + (1, name) for name in ( "training_population", "target_population", @@ -560,7 +586,7 @@ def test_anchor_is_self_consistent() -> None: ) ], *[ - (1, name) + (2, name) for name in ( "resource", "target", @@ -573,6 +599,27 @@ def test_anchor_is_self_consistent() -> None: "receipt", ) ], + *[ + (3, name) + for name in ( + "resource", + "facts", + "source", + "output", + "candidates", + "move", + "move_pay_share_cap", + "spi_bonus_draw", + "spi_cell_quantiles", + "spi_min_donor_sources", + "spi_salt", + "threshold", + "solve", + "seed", + "salt", + "receipt", + ) + ], ], ) def test_manifest_drift_assert_covers_every_reviewed_parameter( @@ -595,7 +642,7 @@ def test_resource_drift_assert_rejects_anchor_change() -> None: def test_drift_assert_rejects_extra_keys_and_operations() -> None: with pytest.raises(ValueError, match="drifted"): _assert_salary_sacrifice_stage_parameters( - _drift(1, "undeclared_extra_key"), + _drift(2, "undeclared_extra_key"), anchor=load_salary_sacrifice_anchor(), ) stage = _stage() @@ -604,3 +651,280 @@ def test_drift_assert_rejects_extra_keys_and_operations() -> None: _assert_salary_sacrifice_stage_parameters( extra, anchor=load_salary_sacrifice_anchor() ) + + +def _toy_bonus_anchor(**overrides) -> dict: + anchor = { + "engine": {"package": "policyengine-uk", "version": "toy"}, + "source": {}, + "obr_base_above_threshold": 0.0, + "threshold": 2000, + "data_year": 2024, + "base_year": 2027, + "earnings_growth": {"factor": 1.0}, + "weight_growth": {"factor": 1.0}, + "upper_earnings_limit": {"weekly": 50_000 / 52, "annual": 50_000.0}, + } + anchor.update(overrides) + return anchor + + +def test_bonus_excess_is_the_bonus_routes_share_above_the_threshold() -> None: + """The threshold applies to the two routes summed (microcosm#1340).""" + + salary = np.asarray([0.0, 1_500.0, 3_000.0, 0.0]) + bonus = np.asarray([1_000.0, 1_000.0, 1_000.0, 3_000.0]) + np.testing.assert_allclose( + bonus_sacrifice_excess(salary, bonus, earnings_growth=1.0), + [0.0, 500.0, 1_000.0, 1_000.0], + ) + # The amounts grow to the base year before the fixed threshold applies. + np.testing.assert_allclose( + bonus_sacrifice_excess(salary, bonus, earnings_growth=2.0), + [0.0, 2_000.0, 2_000.0, 4_000.0], + ) + + +def _conversion(target: float, **kwargs): + defaults = dict( + bonus=np.asarray([10_000.0, 10_000.0, 10_000.0, 10_000.0, 0.0, 10_000.0]), + employment_income=np.asarray( + [100_000.0, 100_000.0, 100_000.0, 100_000.0, 100_000.0, 45_000.0] + ), + salary_sacrifice=np.zeros(6), + weights=np.ones(6), + uniforms=np.asarray([0.4, 0.1, 0.3, 0.2, 0.05, 0.01]), + anchor=_toy_bonus_anchor(obr_base_above_threshold=target), + ) + defaults.update(kwargs) + return convert_bonuses_to_bonus_sacrifice(**defaults) + + +def test_bonus_candidates_have_a_bonus_and_pay_at_the_limit() -> None: + """A sacrificed bonus sits beside pay, so pay itself must reach the limit.""" + + result = _conversion(0.0) + # No bonus (row 4), and pay under the limit (row 5). + np.testing.assert_array_equal( + result.candidates, [True, True, True, True, False, False] + ) + assert not result.participants.any() + + +def test_bonus_participants_follow_their_uniforms_to_the_nearest_base() -> None: + """Each candidate adds 8,000 above the threshold; 17,000 is nearest two.""" + + result = _conversion(17_000.0) + # The two candidates with the smallest uniforms: rows 1 (0.1) and 3 (0.2). + np.testing.assert_array_equal( + result.participants, [False, True, False, True, False, False] + ) + np.testing.assert_allclose(result.sacrificed, [0, 10_000, 0, 10_000, 0, 0]) + assert result.projected_base == pytest.approx(16_000.0) + assert result.all_candidates_fall_short is False + # The engine's growth moves the base, not who is first. + grown = _conversion( + 17_000.0, + anchor=_toy_bonus_anchor( + obr_base_above_threshold=17_000.0, weight_growth={"factor": 2.0} + ), + ) + np.testing.assert_array_equal( + grown.participants, [False, True, False, False, False, False] + ) + assert grown.projected_base == pytest.approx(16_000.0) + + +def test_every_candidate_converts_where_all_fall_short() -> None: + result = _conversion(1e12) + np.testing.assert_array_equal(result.participants, result.candidates) + assert result.all_candidates_fall_short is True + + +def test_a_bonus_is_sacrificed_whole_up_to_half_the_pay() -> None: + """María's ruling of 2026-10-24 (Vahid's review of #1383, item 5). + + The sacrifice is added beside pay, so no other route's share of the pay + limits it: only half the pay does, as an imputation bound. + """ + + result = _conversion( + 1e12, + bonus=np.asarray([80_000.0, 10_000.0, 10_000.0, 0.0, 0.0, 0.0]), + employment_income=np.asarray([140_000.0, 100_000.0, 100_000.0, 0.0, 0.0, 0.0]), + salary_sacrifice=np.asarray([0.0, 0.0, 95_000.0, 0.0, 0.0, 0.0]), + ) + # Half of 140,000; the whole bonus twice, the salary route beside it. + np.testing.assert_allclose(result.sacrificed, [70_000, 10_000, 10_000, 0, 0, 0]) + np.testing.assert_array_equal( + result.pay_share_capped, [True, False, False, False, False, False] + ) + + +def _spi_draw(**kwargs): + from microcosm.build.uk_runtime.salary_sacrifice import draw_spi_bonuses + + n_donors = 25 + defaults = dict( + # 25 FRS donors at 100,000 with a tenth of pay as bonus, then two + # SPI adults (one paid, one not) and one FRS adult with a bonus of + # its own. + bonus=np.asarray([10_000.0] * n_donors + [99_000.0, 5_000.0, 7_000.0]), + employment_income=np.asarray( + [100_000.0] * n_donors + [300_000.0, 0.0, 80_000.0] + ), + weights=np.ones(n_donors + 3), + person_ids=np.arange(1, n_donors + 4), + source_ids=np.arange(1, n_donors + 4), + donors=np.asarray([True] * n_donors + [False, False, False]), + spi=np.asarray([False] * n_donors + [True, True, False]), + ) + defaults.update(kwargs) + return draw_spi_bonuses(**defaults) + + +def test_an_spi_adult_draws_a_bonus_share_of_its_own_pay() -> None: + """Vahid's review of #1383, item 6, and María's ruling of 2026-10-24. + + The SPI adult's twin's bonus is set aside: it takes a donor's tenth of + pay, on its own pay. One without pay has none, and an FRS adult that is + no donor keeps its own. + """ + + draw = _spi_draw() + np.testing.assert_allclose(draw.bonus[-3:], [30_000.0, 0.0, 7_000.0]) + np.testing.assert_array_equal(draw.recipients[-3:], [True, False, False]) + np.testing.assert_allclose(draw.bonus[:-3], 10_000.0) + + +def test_spi_bonus_cells_hold_the_donor_floor_and_the_draw_is_keyed() -> None: + """A cell with fewer than 20 donor households joins the one below. + + Five high-paid donors with half their pay as bonus are too few for a cell + of their own, so they draw with the others. The draw is keyed on person + ids, so shuffling the rows leaves each SPI adult's bonus where it was. + """ + + bonus = np.asarray([10_000.0] * 25 + [250_000.0] * 5 + [0.0]) + pay = np.asarray([100_000.0] * 25 + [500_000.0] * 5 + [600_000.0]) + ids = np.arange(1, 32) + donors = np.asarray([True] * 30 + [False]) + spi = np.asarray([False] * 30 + [True]) + draw = _spi_draw( + bonus=bonus, + employment_income=pay, + weights=np.ones(31), + person_ids=ids, + source_ids=ids, + donors=donors, + spi=spi, + ) + assert draw.cells == 1 + assert draw.bonus[-1] in {60_000.0, 300_000.0} + order = np.random.default_rng(7).permutation(31) + shuffled = _spi_draw( + bonus=bonus[order], + employment_income=pay[order], + weights=np.ones(31), + person_ids=ids[order], + source_ids=ids[order], + donors=donors[order], + spi=spi[order], + ) + assert shuffled.bonus[np.flatnonzero(order == 30)[0]] == draw.bonus[-1] + + +def test_spi_bonuses_need_paid_frs_donors() -> None: + with pytest.raises(ValueError, match="base-FRS adults with pay"): + _spi_draw(donors=np.zeros(28, dtype=bool)) + + +def test_the_stage_adds_bonus_sacrifice_beside_pay( + monkeypatch: pytest.MonkeyPatch, +) -> None: + _Fitted.value = 0.0 + monkeypatch.setattr(salary_sacrifice, "QRF", _FakeQRF) + n = 12 + frame = _frame( + asked=[1] * n, + salary_sacrifice_values=[0.0] * n, + employee_pension=[0.0] * n, + employment_income=[120_000.0] * n, + bonus=[20_000.0] * n, + ) + result = impute_salary_sacrifice( + frame, bonus_anchor=_toy_bonus_anchor(obr_base_above_threshold=90_000.0) + ) + person = result.frame.table("person") + converted = person[BONUS_SACRIFICE_OUTPUT] > 0.0 + # Each converted bonus adds 18,000 above the threshold: five is nearest. + assert int(converted.sum()) == 5 + assert (person.loc[converted, BONUS_SACRIFICE_OUTPUT] == 20_000.0).all() + # A sacrificed bonus is never received, so pay stays as it is. + assert (person["employment_income"] == 120_000.0).all() + assert (person[SALSAC_PRE_CONVERSION_PAY_COLUMN] == 0.0).all() + receipt = result.evidence()["bonus_sacrifice_receipt"] + assert receipt["pay"] == "unchanged: a sacrificed bonus is never received" + assert receipt["spi_drawn_support"] == 0 + assert receipt["target_base"] == 90_000.0 + # Five sources: the base and the band are withheld under ten. + assert receipt["participant_support"] == "<10" + assert receipt["projected_base"] == "<10" + assert receipt["candidate_support"] == "10-29" + assert BONUS_SACRIFICE_OUTPUT in UKSalarySacrificeStageTransform.output_columns() + + +def test_the_stage_refuses_a_frame_without_the_bonus_carrier( + monkeypatch: pytest.MonkeyPatch, +) -> None: + _Fitted.value = 0.0 + monkeypatch.setattr(salary_sacrifice, "QRF", _FakeQRF) + frame = _frame(asked=[1], salary_sacrifice_values=[0.0], employee_pension=[0.0]) + person = frame.table("person").drop(columns=BONUS_SACRIFICE_SOURCE) + bare = uk_national_frame( + person=person, + benunit=frame.table("benunit"), + household=frame.table("household"), + household_weights=frame.weights_for("household").values, + time_period="2024", + ) + with pytest.raises(ValueError, match=BONUS_SACRIFICE_SOURCE): + impute_salary_sacrifice(bare, bonus_anchor=_toy_bonus_anchor()) + + +def test_the_stage_refuses_an_anchor_for_another_year( + monkeypatch: pytest.MonkeyPatch, +) -> None: + _Fitted.value = 0.0 + monkeypatch.setattr(salary_sacrifice, "QRF", _FakeQRF) + frame = _frame(asked=[1], salary_sacrifice_values=[0.0], employee_pension=[0.0]) + with pytest.raises(ValueError, match="projects from 2023"): + impute_salary_sacrifice(frame, bonus_anchor=_toy_bonus_anchor(data_year=2023)) + + +def test_the_packaged_bonus_anchor_is_the_vendored_obr_row() -> None: + anchor = load_bonus_sacrifice_anchor() + _assert_bonus_sacrifice_anchor(anchor) + assert anchor["base_year"] == 2027 + assert anchor["obr_base_above_threshold"] == 13.0e9 + with pytest.raises(ValueError, match="differs from the vendored row"): + _assert_bonus_sacrifice_anchor({**anchor, "obr_base_above_threshold": 1.0}) + + +def test_the_hmrc_salary_sacrifice_rows_bind_the_salary_route_alone() -> None: + """ASHE, which HMRC's salary-sacrifice figures come from, covers no bonus + sacrifice, so those rows keep reading the salary route (microcosm#1340).""" + + import json + from importlib.resources import files + + targets = json.loads( + files("microcosm.build.uk") + .joinpath("uk_population_targets.json") + .read_text("utf-8") + )["targets"] + rows = [t for t in targets if t["target_id"].startswith("hmrc.salary_sacrifice")] + assert rows + for row in rows: + text = json.dumps(row) + assert BONUS_SACRIFICE_OUTPUT not in text, row["target_id"] diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_source_stages.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_source_stages.py index 3311f3be56..1e3c1241ac 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_source_stages.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_source_stages.py @@ -411,7 +411,7 @@ def test_e3_outputs_are_backed_by_runtime_written_columns(self) -> None: ) from microcosm.build.uk_runtime.was_wealth import ( UK_WAS_WEALTH_NONNEGATIVE_OUTPUT_COLUMNS, - UK_WAS_WEALTH_OUTPUT_COLUMNS, + UK_WAS_WEALTH_STAGE_OUTPUT_COLUMNS, ) spec = load_country_spec("uk") @@ -446,7 +446,7 @@ def test_e3_outputs_are_backed_by_runtime_written_columns(self) -> None: stages["frs_household_draws"].outputs == FRS_HOUSEHOLD_DRAW_OUTPUT_COLUMNS ) assert stages["frs_brma"].outputs == FRS_BRMA_OUTPUT_COLUMNS - assert stages["was_wealth"].outputs == UK_WAS_WEALTH_OUTPUT_COLUMNS + assert stages["was_wealth"].outputs == UK_WAS_WEALTH_STAGE_OUTPUT_COLUMNS assert ( stages["was_wealth"].nonnegative_outputs == UK_WAS_WEALTH_NONNEGATIVE_OUTPUT_COLUMNS @@ -539,6 +539,7 @@ def test_e8_outputs_and_rewrites_are_backed_by_runtime_constants(self) -> None: assert stages["hmrc_cgt_gains_spine"].rewrites == ("capital_gains",) assert stages["salary_sacrifice"].outputs == ( SALSAC_OUTPUT, + "pension_contributions_via_bonus_sacrifice", "employee_pension_contributions", "employment_income", SALSAC_PRE_CONVERSION_PAY_COLUMN, @@ -779,8 +780,10 @@ def test_e3_operation_kinds_are_declared_in_order(self) -> None: "classify_cgt_band_facts_with_reviewed_fence", ] assert [op.kind for op in stages["salary_sacrifice"].operations] == [ + "verify_vendored_fact_resource", "fit_weighted_qrf", "convert_donors_to_target_stock", + "convert_bonuses_to_bonus_sacrifice", ] assert [op.kind for op in stages["student_loans"].operations] == [ "assign_student_loan_plan_cohorts", @@ -967,8 +970,10 @@ def test_every_e4_stochastic_operation_declares_integer_seed(self) -> None: def test_e5_tenure_strata_and_derived_totals_lockstep(self) -> None: from microcosm.build.uk_runtime.was_wealth import ( + UK_WAS_APPENDED_DRAWN_COLUMNS, UK_WAS_DERIVED_TOTALS, UK_WAS_DRAWN_ONLY_COLUMNS, + UK_WAS_HOLDER_STRATA, UK_WAS_INTERNAL_COMPONENT_COLUMNS, UK_WAS_NET_FINANCIAL_LIABILITIES, UK_WAS_STRATIFIED_TARGETS, @@ -1007,10 +1012,16 @@ def test_e5_tenure_strata_and_derived_totals_lockstep(self) -> None: ) # The chain order names every output and every drawn-only column (the # internal components, the dropped share-like component and the - # main-residence mortgage) exactly once. - assert sorted(qrf.parameters["chain_order"]) == sorted( + # main-residence mortgage) exactly once, then the appended draws in + # chain order (microcosm#1095). + order = list(qrf.parameters["chain_order"]) + assert sorted(order[: -len(UK_WAS_APPENDED_DRAWN_COLUMNS)]) == sorted( {*UK_WAS_WEALTH_OUTPUT_COLUMNS, *UK_WAS_DRAWN_ONLY_COLUMNS} ) + assert tuple(order[-len(UK_WAS_APPENDED_DRAWN_COLUMNS) :]) == ( + UK_WAS_APPENDED_DRAWN_COLUMNS + ) + assert dict(qrf.parameters["holder_strata"]) == dict(UK_WAS_HOLDER_STRATA) def test_e5_qrf_operation_declares_integer_seed(self) -> None: spec = load_country_spec("uk") @@ -1071,8 +1082,9 @@ def test_e8_declared_seed_lockstep(self) -> None: assert ( stages["hmrc_cgt_gains_spine"].operations[4].parameters["seed_base"] == 552 ) - assert stages["salary_sacrifice"].operations[0].parameters["seed"] == 42 - assert stages["salary_sacrifice"].operations[1].parameters["seed"] == 2024 + assert stages["salary_sacrifice"].operations[1].parameters["seed"] == 42 + assert stages["salary_sacrifice"].operations[2].parameters["seed"] == 2024 + assert stages["salary_sacrifice"].operations[3].parameters["seed"] == 2024 assert [ operation.parameters["seed"] for operation in stages["student_loans"].operations[1:] diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_dependency.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_dependency.py new file mode 100644 index 0000000000..1d99a4b219 --- /dev/null +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_dependency.py @@ -0,0 +1,99 @@ +"""The SPI Public Use Tape marker (SN 9422's Special Conditions; microcosm#1095).""" + +from __future__ import annotations + +import json +from pathlib import Path +from types import SimpleNamespace + +import pytest + +from microcosm.build.uk_runtime.calibration_run import spine_provenance_from_sidecar +from microcosm.build.uk_runtime.spi_dependency import ( + UK_SPI_PUBLIC_USE_TAPE_CONDITIONS, + UK_SPI_PUBLIC_USE_TAPE_KEY, + uk_check_spi_public_use_tape_marker, + uk_spi_public_use_tape_marker, + uk_spi_public_use_tape_marker_for_stage_names, + uk_ukds_study_number, +) + + +def _stage(name: str, *studies: object) -> SimpleNamespace: + return SimpleNamespace( + stage=name, + artifacts=tuple( + {"role": "tab", "kind": "private_microdata", "ukds_study_number": study} + for study in studies + ) + + ({"role": "anchors", "kind": "public_parameter_reference"},), + ) + + +def test_study_numbers_read_in_either_spelling() -> None: + assert uk_ukds_study_number(9563) == "SN 9563" + assert uk_ukds_study_number("SN 9422") == "SN 9422" + assert uk_ukds_study_number(" 9422 ") == "SN 9422" + with pytest.raises(ValueError, match="study number"): + uk_ukds_study_number("SN") + + +def test_the_marker_names_the_stages_that_read_the_tape() -> None: + marker = uk_spi_public_use_tape_marker( + [_stage("frs_spine", 9563), _stage("spi_b", "SN 9422"), _stage("spi_a", 9422)] + ) + assert marker == { + "study": "SN 9422", + "dependent": True, + "stages": ["spi_a", "spi_b"], + "conditions": list(UK_SPI_PUBLIC_USE_TAPE_CONDITIONS), + } + # A run that selects no SPI stage rests on no tape, so no condition applies. + assert uk_spi_public_use_tape_marker([_stage("frs_spine", 9563)]) == { + "study": "SN 9422", + "dependent": False, + "stages": [], + "conditions": [], + } + + +def test_the_packaged_roster_reads_the_tape_in_three_stages() -> None: + from microcosm.build.country_spec import load_country_spec + + names = [stage.stage for stage in load_country_spec("uk").sources.stages] + marker = uk_spi_public_use_tape_marker_for_stage_names(names) + assert marker["dependent"] is True + assert marker["stages"] == [ + "hmrc_spi_income_spine", + "property_components", + "spi_income_band_donors", + ] + with pytest.raises(ValueError, match="declares no stage"): + uk_spi_public_use_tape_marker_for_stage_names([*names, "unknown_stage"]) + + +def test_a_recorded_marker_must_agree_with_its_stages() -> None: + derived = uk_spi_public_use_tape_marker([_stage("spi_a", "SN 9422")]) + uk_check_spi_public_use_tape_marker(None, derived) + uk_check_spi_public_use_tape_marker({}, derived) + uk_check_spi_public_use_tape_marker(dict(derived), derived) + with pytest.raises(ValueError, match="disagrees"): + uk_check_spi_public_use_tape_marker({**derived, "dependent": False}, derived) + + +def test_the_spine_provenance_carries_the_marker(tmp_path: Path) -> None: + marker = uk_spi_public_use_tape_marker([_stage("spi_a", "SN 9422")]) + path = tmp_path / "spine.build.json" + sidecar = { + "schema_version": 2, + "stages": ["spi_a"], + UK_SPI_PUBLIC_USE_TAPE_KEY: marker, + } + path.write_text(json.dumps(sidecar)) + assert spine_provenance_from_sidecar(path, sidecar)[UK_SPI_PUBLIC_USE_TAPE_KEY] == ( + marker + ) + # A spine built before the marker records none. + older = {"schema_version": 2, "stages": ["spi_a"]} + path.write_text(json.dumps(older)) + assert spine_provenance_from_sidecar(path, older)[UK_SPI_PUBLIC_USE_TAPE_KEY] == {} diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_income.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_income.py index 56772bd245..ce1ce77416 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_income.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_income.py @@ -5,7 +5,7 @@ def test_spi_disability_refresh_reuses_frs_derivation_for_spi_people() -> None: - weeks = 365.25 / 7 + weeks = 52 person = pd.DataFrame( { "attendance_allowance_reported": [0.0, 19 * weeks, 0.0], diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_spine.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_spine.py index 3fb923b8cc..c137c57ef7 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_spine.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_spine.py @@ -188,11 +188,9 @@ def test_spine_leaves_align_by_raw_person_id_not_position(tmp_path: Path) -> Non person = result.table("person") assert person["person_id"].tolist() == [2001, 1001] - assert person["hmrc_spi_pay"].tolist() == pytest.approx( - [5.0 * 365.25 / 7.0, 4.0 * 365.25 / 7.0] - ) + assert person["hmrc_spi_pay"].tolist() == pytest.approx([5.0 * 52.0, 4.0 * 52.0]) assert person["hmrc_spi_incapacity_benefit_income"].tolist() == pytest.approx( - [2.0 * 365.25 / 7.0, 0.0] + [2.0 * 52.0, 0.0] ) # Employer contributions come from an ASHE rate draw on pay (microcosm#1069 # c9): person 2001 has no employer scheme; person 1001's public-sector @@ -231,9 +229,7 @@ def test_spine_leaves_sampled_rung_restricts_to_surviving_people( person = result.table("person") assert person["person_id"].tolist() == [2001, 1001] - assert person["hmrc_spi_pay"].tolist() == pytest.approx( - [5.0 * 365.25 / 7.0, 4.0 * 365.25 / 7.0] - ) + assert person["hmrc_spi_pay"].tolist() == pytest.approx([5.0 * 52.0, 4.0 * 52.0]) def _support_stage() -> SourceStageSpec: diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_stage_health.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_stage_health.py index 06a461802a..addd05917f 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_stage_health.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_stage_health.py @@ -832,6 +832,8 @@ def _wealth_coherence_evidence() -> dict: "gross_financial_wealth_violation_rows": 0, "net_financial_wealth_violation_rows": 0, "mortgage_debt_violation_rows": 0, + "share_split_violation_rows": 0, + "secured_debt_violation_rows": 0, "property_wealth_capped_rows": 3, }, } @@ -872,6 +874,8 @@ def test_wealth_coherence_gate_passes_a_coherent_receipt() -> None: ("identities", "gross_financial_wealth_violation_rows"), ("identities", "net_financial_wealth_violation_rows"), ("identities", "mortgage_debt_violation_rows"), + ("identities", "share_split_violation_rows"), + ("identities", "secured_debt_violation_rows"), ], ) def test_wealth_coherence_gate_requires_every_count_and_requires_it_zero( @@ -1791,6 +1795,7 @@ def test_recomposed_totals_gate_holds_totals_above_their_components() -> None: from microcosm.build.country_spec import load_country_spec from microcosm.build.uk_runtime.calibration_run import UK_SPINE_GATE_SCOPE from microcosm.build.uk_runtime.lcfs_consumption import ( + UK_LCFS_COICOP_DIVISION_COLUMNS, recompose_from_remainder_operation, recompose_parent_totals, ) @@ -1805,6 +1810,8 @@ def test_recomposed_totals_gate_holds_totals_above_their_components() -> None: drawn = pd.DataFrame( { "domestic_energy_consumption": [2000.0, 900.0], + "liquid_fuel_consumption": [0.0, 0.0], + "solid_fuel_consumption": [0.0, 0.0], "petrol_spending": [800.0, 0.0], "diesel_spending": [0.0, 700.0], "bus_fare_spending": [100.0, 0.0], @@ -1815,12 +1822,24 @@ def test_recomposed_totals_gate_holds_totals_above_their_components() -> None: "housing_water_and_electricity_consumption": [7000.0, 600.0], "electricity_consumption": [900.0, 600.0], "gas_consumption": [700.0, 0.0], + "liquid_fuel_consumption": [0.0, 0.0], + "solid_fuel_consumption": [0.0, 0.0], "transport_consumption": [2000.0, 1000.0], "petrol_spending": [1500.0, 0.0], "diesel_spending": [0.0, 900.0], "bus_fare_spending": [0.0, 250.0], } ) + housing = "housing_water_and_electricity_consumption" + food = "food_and_non_alcoholic_beverages_consumption" + # Every other division at its donor's level; food far above it, so food + # alone is levelled (microcosm#1278) and the two totals keep their draws. + means = dict.fromkeys(UK_LCFS_COICOP_DIVISION_COLUMNS, 100.0) + means.update({housing: 4600.0, "transport_consumption": 2300.0, food: 1.0}) + for division in UK_LCFS_COICOP_DIVISION_COLUMNS: + if division not in draws: + draws[division] = [100.0, 100.0] + draws[food] = [1000.0, 1000.0] _, receipt = recompose_parent_totals( draws, drawn=drawn, @@ -1830,7 +1849,10 @@ def test_recomposed_totals_gate_holds_totals_above_their_components() -> None: "housing_water_and_electricity_consumption": (0.0, 6000.0), "transport_consumption": (0.0, 1e9), }, + donor_division_means=means, ) + assert receipt["division_levelling"]["divisions"][food]["factor"] < 1.0 + assert receipt["parents"][housing]["levelling_factor"] == 1.0 def run(ev): return uk_stage_health_gate( @@ -1851,8 +1873,9 @@ def failing(mutate, fragment: str) -> None: passed = run(receipt) assert passed.passed, passed.failures - assert passed.details["uncarried_total"] == receipt["uncarried"]["total"] - housing = "housing_water_and_electricity_consumption" + assert ( + passed.details["published_fuels_total"] == receipt["published_fuels"]["total"] + ) # 7000 - 2000 + 1600 is held at 6000 (microcosm#1164). assert receipt["parents"][housing]["rows_held_at_maximum"] == 1 assert receipt["parents"][housing]["weighted_held_mass"] == 2.0 * 600.0 @@ -1895,7 +1918,35 @@ def failing(mutate, fragment: str) -> None: "drawn_subtracts", ) failing(lambda r: r["parents"].pop("transport_consumption"), "not the declared") - failing(lambda r: r["uncarried"].update(total=0.0), "uncarried spend") + failing(lambda r: r["published_fuels"].update(total=0.0), "published fuel spend") + # The division levelling (microcosm#1278). + failing(lambda r: r.pop("division_levelling"), "records no division levelling") + failing( + lambda r: r["division_levelling"].update(rule="to_donor_totals"), + "not the declared levelling", + ) + failing( + lambda r: r["division_levelling"]["divisions"].pop(food), + "not the declared", + ) + failing( + lambda r: r["division_levelling"]["divisions"][food].update(factor=1.5), + "is not in [0, 1]", + ) + failing( + lambda r: r["division_levelling"]["divisions"]["transport_consumption"].update( + factor=0.5 + ), + "is not above the shared", + ) + failing( + lambda r: r["parents"][housing].update(levelling_factor=1.5), + "is not in [0, 1]", + ) + failing( + lambda r: r["parents"][housing].update(levelling_factor=0.5), + "is not its division's", + ) with pytest.raises(ValueError, match="recomposed_totals must be an object"): run(None) @@ -2630,3 +2681,187 @@ def run(ev): result = run(evidence) assert not result.passed assert any("not after / base" in f and first in f for f in result.failures) + + +def _packaged_parameters(gate_id: str) -> dict: + gates = json.loads( + (_TEST_PATHS.package / "src/microcosm/build/uk/gates.json").read_text() + )["gates"] + (gate,) = [entry for entry in gates if entry["id"] == gate_id] + return gate["parameters"] + + +def _purchases_receipt() -> dict: + def kind(name, target, fitted, shortfall=0.0, value=1.0e9): + return { + "property_type": name, + "target_transactions": target, + "fitted_transactions": fitted, + "target_value": value, + "fitted_value": value * (1.0 - shortfall), + "value_shortfall_share": shortfall, + } + + return { + "stage": "property_purchases", + "kinds": [ + kind("additional_residential", 1000.0, 1010.0), + kind("non_residential", 200.0, 196.0, shortfall=0.1), + ], + "derivation": { + "residential_individuals_transaction_share": 0.9, + "residential_individuals_value_share": 0.8, + }, + } + + +def _gate(gate_id: str, evidence: dict): + parameters = _packaged_parameters(gate_id) + return uk_stage_health_gate( + evidence=evidence, + stage=parameters["stage"], + check=parameters["check"], + parameters=parameters, + ) + + +def test_property_purchases_gate_holds_each_kind_to_hmrc_within_the_contract() -> None: + assert _passed(_gate("uk_stage_property_purchases_fit", _purchases_receipt())) + + missing = _purchases_receipt() + missing["kinds"] = missing["kinds"][:1] + assert ( + "draws kinds" in _gate("uk_stage_property_purchases_fit", missing).failures[0] + ) + + far = _purchases_receipt() + far["kinds"][0]["fitted_transactions"] = 1100.0 + assert "transactions" in _gate("uk_stage_property_purchases_fit", far).failures[0] + + short = _purchases_receipt() + short["kinds"][1].update(value_shortfall_share=0.25, fitted_value=0.75e9) + assert ( + "short of HMRC" in _gate("uk_stage_property_purchases_fit", short).failures[0] + ) + + unrecorded = _purchases_receipt() + unrecorded["kinds"][1]["fitted_value"] = 1.0e9 + assert ( + "recorded shortfall" + in (_gate("uk_stage_property_purchases_fit", unrecorded).failures[0]) + ) + + no_share = _purchases_receipt() + no_share["derivation"]["residential_individuals_value_share"] = 1.2 + assert ( + "not a share" in _gate("uk_stage_property_purchases_fit", no_share).failures[0] + ) + + +def _home_values_receipt() -> dict: + regions = [f"E1200000{index}" for index in range(1, 10)] + ["W92000004"] + return { + "stage": "regional_home_values", + "rows": 100, + "rows_rewritten_by_region": {region: 5 for region in regions}, + "sources_at_cap": 0, + "knots_basis_year": 2024, + "ranking": {"rank_basis": "weighted_midpoint_within_frs_region"}, + "weighted_value_before": 1.0e9, + "weighted_value_after": 1.2e9, + } + + +@pytest.mark.parametrize( + ("mutate", "fragment"), + [ + (lambda r: r["rows_rewritten_by_region"].pop("W92000004"), "rewrites regions"), + (lambda r: r["rows_rewritten_by_region"].update(E12000007=0), "no row"), + (lambda r: r.update(rows=40), "more rows"), + (lambda r: r.update(sources_at_cap=1), "value cap"), + (lambda r: r.update(knots_basis_year=2023), "basis year"), + (lambda r: r["ranking"].update(rank_basis="national"), "ranking basis"), + (lambda r: r.update(weighted_value_after=0.0), "not positive"), + ], +) +def test_regional_home_values_gate_holds_the_ranking_contract(mutate, fragment) -> None: + assert _passed( + _gate("uk_stage_regional_home_values_ranking", _home_values_receipt()) + ) + receipt = _home_values_receipt() + mutate(receipt) + result = _gate("uk_stage_regional_home_values_ranking", receipt) + assert not result.passed + assert any(fragment in failure for failure in result.failures), result.failures + + +def _legacy_closure_receipt() -> dict: + return { + "stage": "uc_legacy_closure_take_up", + "p_basis": "spine_design_weights_great_britain", + "great_britain_weighted_share_claiming_at_closure": 0.8, + "combinations": { + "housing_benefit": { + "rate": 0.75, + "rate_source": "combination", + "rate_unreachable": False, + "support": "30+", + }, + "jsa_income": { + "rate": 0.6, + "rate_source": "all_households", + "rate_unreachable": "<10", + "support": "<10", + }, + }, + } + + +def test_legacy_closure_gate_reads_what_the_receipt_prints() -> None: + gate_id = "uk_stage_uc_legacy_closure_take_up_contract" + assert _passed(_gate(gate_id, _legacy_closure_receipt())) + # A thin drawn cohort prints its share withheld. + withheld = _legacy_closure_receipt() + withheld["great_britain_weighted_share_claiming_at_closure"] = "<10" + assert _passed(_gate(gate_id, withheld)) + for mutate, fragment in ( + (lambda r: r.update(p_basis="calibrated_weights"), "measured on"), + (lambda r: r["combinations"]["housing_benefit"].update(rate=1.2), "rate 1.2"), + ( + lambda r: r["combinations"]["jsa_income"].update(rate_source="guess"), + "takes its rate", + ), + (lambda r: r["combinations"]["jsa_income"].update(support="3"), "support band"), + ( + lambda r: r["combinations"]["jsa_income"].update(rate_unreachable="2"), + "unreachable", + ), + (lambda r: r.update(combinations={}), "no combinations"), + ): + receipt = _legacy_closure_receipt() + mutate(receipt) + result = _gate(gate_id, receipt) + assert not result.passed + assert any(fragment in failure for failure in result.failures), result.failures + + +def test_the_1308_fact_gates_record_without_blocking_a_synthetic_smoke_build() -> None: + """A synthetic fixture is not the population HMRC and the knots describe (#1308). + + The legacy closure gate holds the receipt's own contract, which a synthetic + fixture can meet, so it blocks a smoke build as it blocks every posture. + """ + + gates = { + entry["id"]: entry + for entry in json.loads( + (_TEST_PATHS.package / "src/microcosm/build/uk/gates.json").read_text() + )["gates"] + } + for gate_id in ( + "uk_stage_regional_home_values_ranking", + "uk_stage_property_purchases_fit", + ): + assert gates[gate_id]["population_fact_check"] is True + contract = gates["uk_stage_uc_legacy_closure_take_up_contract"] + assert contract.get("population_fact_check", False) is False diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_subset_relations.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_subset_relations.py index 01fabf7d6f..d3987f688b 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_subset_relations.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_subset_relations.py @@ -221,7 +221,8 @@ def test_every_committed_subset_names_its_part_and_whole(): for relation in load_uk_cross_grain_declarations()["relations"] if relation["relation"] == "subset" ] - assert len(relations) == 17 + # England's single adult discount within its households (microcosm#953). + assert len(relations) == 18 for relation in relations: assert {relation["part"], relation["whole"]} == set(relation["targets"]) assert 0.0 <= relation.get("max_excess", 0.0) <= 0.01 diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_support_floor.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_support_floor.py index 9db226e7f6..72e526fa61 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_support_floor.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_support_floor.py @@ -4,11 +4,13 @@ import json from datetime import date +from importlib import resources as importlib_resources import numpy as np import pandas as pd import pytest +from microcosm.build.uk_runtime.full_targets import _support_floor_input from microcosm.build.uk_runtime.measure_simulation import ( load_uk_calibration_measure_exclusions, ) @@ -16,26 +18,38 @@ from microcosm.build.uk_runtime.support_floor import ( UK_SUPPORT_FLOOR_KIND, apply_uk_support_floor, + assert_uk_support_floor_units, load_uk_support_floor_declaration, narrow_uk_registry_by_support_floor, uk_household_source_ids, uk_row_support, uk_support_floor_from_payload, uk_support_floor_names, + uk_support_floor_target_unit, ) from microcosm.calibrate import TargetRegistry, TargetSpec, build_constraint_matrix SCOPE = "dwp.uc.payment_distribution_single" +SCOPE_NAME = "uc_bands" EVALUATED = date(2026, 10, 20) -def _block(**overrides): +def _scope(**overrides): return { + "scope": SCOPE_NAME, + "unit": "benefit_units", "contract_target_ids": [SCOPE], - "metric": "distinct_source_households_with_positive_prior_weight", - "floor": 1, "max_dropped_rows": 2, "max_dropped_published_share": 0.5, + **overrides, + } + + +def _block(scope=None, **overrides): + return { + "metric": "distinct_source_households_with_positive_prior_weight", + "floor": 1, + "scopes": [_scope(**(scope or {}))], "reason": "Sparse bands are dropped, not pooled.", "tracking": "microcosm#1095", "approved_by": "juaristi22", @@ -149,7 +163,14 @@ def test_the_floor_drops_only_rows_no_household_carries(): receipt = result.receipt assert receipt["dropped"] == ["zero_weight"] assert receipt["dropped_by_target"] == {SCOPE: {"rows": 1, "published_total": 5.0}} - assert receipt["dropped_published_share"] == pytest.approx(5.0 / 75.0) + assert receipt["scopes"] == { + SCOPE_NAME: { + "unit": "benefit_units", + "in_scope_rows": 3, + "dropped_rows": 1, + "dropped_published_share": pytest.approx(5.0 / 75.0), + } + } assert receipt["solved_register_sha256"] == result.registry.version # The receipt carries no row's support: support counts stay local. assert set(receipt) == { @@ -162,7 +183,7 @@ def test_the_floor_drops_only_rows_no_household_carries(): "in_scope_rows", "probed_row_exclusions", "dropped_rows", - "dropped_published_share", + "scopes", "dropped_by_target", "dropped", "solved_register_sha256", @@ -180,10 +201,58 @@ def test_the_floor_refuses_outside_its_window_and_past_its_ceilings(): _apply(registry, evaluated_on=date(2026, 10, 15)) with pytest.raises(ValueError, match="outside its reviewed window"): _apply(registry, evaluated_on=date(2027, 1, 9)) - with pytest.raises(ValueError, match="drops 2 rows"): - _apply(registry, block={"max_dropped_rows": 1}) + with pytest.raises(ValueError, match="drops 2 rows in scope 'uc_bands'"): + _apply(registry, block={"scope": {"max_dropped_rows": 1}}) with pytest.raises(ValueError, match="published total"): - _apply(registry, block={"max_dropped_published_share": 0.1}) + _apply(registry, block={"scope": {"max_dropped_published_share": 0.1}}) + + +def test_each_scope_meets_its_own_ceilings(): + """A share sums published values, so it is taken within one unit's scope.""" + + other = "hmrc.spi.dividend_income.amount_by_total_income_band" + registry = _registry( + _spec("low", "band_low", 40.0), + _spec("zero_weight", "band_zero_weight", 5.0), + _spec("pounds", "band_low", 9_000.0, target=other), + _spec("pounds_none", "band_zero_weight", 1_000.0, target=other), + ) + pounds = { + "scope": "spi_amounts", + "unit": "GBP", + "contract_target_ids": [other], + "max_dropped_rows": 1, + "max_dropped_published_share": 0.2, + } + floor = uk_support_floor_from_payload({**_block(), "scopes": [_scope(), pounds]}) + result = apply_uk_support_floor( + registry, + _compiled(registry), + source_ids=uk_household_source_ids(_frame()), + floor=floor, + evaluated_on=EVALUATED, + ) + assert result.receipt["dropped"] == ["pounds_none", "zero_weight"] + shares = { + name: scope["dropped_published_share"] + for name, scope in result.receipt["scopes"].items() + } + # Pooled, the two would read 1,005 of 10,045; each scope reads its own. + assert shares == { + SCOPE_NAME: pytest.approx(5.0 / 45.0), + "spi_amounts": pytest.approx(0.1), + } + tight = {**pounds, "max_dropped_published_share": 0.05} + with pytest.raises(ValueError, match="scope 'spi_amounts'"): + apply_uk_support_floor( + registry, + _compiled(registry), + source_ids=uk_household_source_ids(_frame()), + floor=uk_support_floor_from_payload( + {**_block(), "scopes": [_scope(), tight]} + ), + evaluated_on=EVALUATED, + ) def test_a_per_row_exclusion_the_floor_would_cover_refuses(): @@ -237,9 +306,14 @@ def test_lineage_is_read_only_when_a_row_in_scope_needs_it(): ({"floor": 3}, "must be 1"), ({"floor": 10}, "must be 1"), ({"floor": True}, "must be 1"), - ({"max_dropped_rows": -1}, "count"), - ({"max_dropped_published_share": 1.0}, r"\[0, 1\)"), - ({"contract_target_ids": [SCOPE, SCOPE]}, "distinct"), + ({"scope": {"max_dropped_rows": -1}}, "count"), + ({"scope": {"max_dropped_published_share": 1.0}}, r"\[0, 1\)"), + ({"scope": {"contract_target_ids": [SCOPE, SCOPE]}}, "distinct"), + ({"scope": {"unit": ""}}, "unit is empty"), + ({"scope": {"extra": 1}}, "closed-world"), + ({"scopes": []}, "non-empty"), + ({"scopes": [_scope(), _scope(contract_target_ids=["other"])]}, "distinct"), + ({"scopes": [_scope(), _scope(scope="again")]}, "disjoint"), ({"approved_by": " "}, "approved_by is empty"), ({"expires_on": "2027-1-8"}, "canonical ISO"), ({"expires_on": "2026-10-16"}, "after approved_on"), @@ -261,42 +335,172 @@ def test_the_packaged_floor_drops_only_unsupported_bands_and_binds_thin_ones(): *(f"{low}_01_to_{low + 100}" for low in range(100, 1300, 100)), "1300_01_and_above", ) - assert floor.contract_target_ids == { - *( - f"dwp.uc.payment_distribution_{family}" - for family in ( - "single", - "lone_parent", - "couple_no_children", - "couple_with_children", - ) - ), - *(f"dwp.benefit_cap.capped_households_{band}" for band in bands), + spi = ( + "employment_income", + "self_employment_income", + "dividend_income", + "property_income", + "private_pension_income", + "state_pension", + "savings_interest_income", + ) + scopes = {scope.scope: scope for scope in floor.scopes} + assert {name: scope.contract_target_ids for name, scope in scopes.items()} == { + "uc_payment_and_benefit_cap_bands": { + *( + f"dwp.uc.payment_distribution_{family}" + for family in ( + "single", + "lone_parent", + "couple_no_children", + "couple_with_children", + ) + ), + *(f"dwp.benefit_cap.capped_households_{band}" for band in bands), + }, + # Extended on María's ruling of 2026-10-22 (the next policyengine-uk bump). + "hmrc_spi_income_band_counts": { + f"hmrc.spi.{family}.count_by_total_income_band" for family in spi + }, + "hmrc_spi_income_band_amounts": { + f"hmrc.spi.{family}.amount_by_total_income_band" for family in spi + }, + "council_tax_band_h_by_region": {"mhclg.council_tax_stock.band_h"}, } assert floor.floor == 1 assert (floor.approved_by, floor.approved_on, floor.expires_on) == ( "juaristi22", - date(2026, 10, 21), + date(2026, 10, 22), date(2027, 1, 8), ) - # The rows once left out for thin support are bound again. + # The rows once left out for thin support are bound again; the floor + # covers the ones no household carries. named = {entry["name"] for entry in load_uk_calibration_measure_exclusions()} assert not {name for name in named if name.startswith("dwp.benefit_cap.")} + # The HMRC £1m-and-over cells were bound on arm 1 and distorted their + # neighbours, so they are held on that measurement, not for thin support. + held_top = [ + entry + for entry in load_uk_calibration_measure_exclusions() + if "income_band_1_000_000_to_inf" in entry["name"] + ] + assert len(held_top) == 10 + assert all(entry["reason"].startswith("Measured distortion") for entry in held_top) + assert not {name for name in named if name.startswith("mhclg.council_tax_stock.")} assert not named & { "hmrc/dividend_income_income_band_500_000_to_1_000_000", "hmrc/property_income_count_income_band_500_000_to_1_000_000", } -def test_only_schema_3_registers_carry_a_floor(tmp_path): - path = tmp_path / "exclusions.json" - path.write_text( - json.dumps({"schema_version": 2, "support_floor": _block(), "exclusions": []}) +def test_each_packaged_scope_holds_one_unit(): + """A share ceiling sums published values, so no scope mixes units.""" + + targets = { + target["target_id"]: target + for target in json.loads( + importlib_resources.files("microcosm.build.uk") + .joinpath("uk_population_targets.json") + .read_text() + )["targets"] + } + floor = uk_support_floor_from_payload(load_uk_support_floor_declaration()) + for scope in floor.scopes: + units = { + ( + targets[target_id]["measurement"]["entity"], + targets[target_id]["measurement"]["concept"].rsplit(".", 1)[-1], + ) + for target_id in scope.contract_target_ids + } + assert len(units) == 1, (scope.scope, units) + + +def _contract_targets(): + return { + target["target_id"]: target + for target in json.loads( + importlib_resources.files("microcosm.build.uk") + .joinpath("uk_population_targets.json") + .read_text() + )["targets"] + } + + +def test_each_packaged_scope_is_labelled_in_its_targets_unit(): + """Band H counts occupied dwellings, one household each (Vahid on microcosm#1383).""" + + floor = uk_support_floor_from_payload(load_uk_support_floor_declaration()) + assert_uk_support_floor_units(floor, _contract_targets()) + assert {scope.scope: scope.unit for scope in floor.scopes} == { + "uc_payment_and_benefit_cap_bands": "benefit_units", + "hmrc_spi_income_band_counts": "people", + "hmrc_spi_income_band_amounts": "GBP", + "council_tax_band_h_by_region": "households", + } + + +def test_a_scope_labelled_in_another_unit_refuses(): + contract = _contract_targets() + band_h = _scope( + scope="band_h", + unit="dwellings", + contract_target_ids=["mhclg.council_tax_stock.band_h"], ) - with pytest.raises(ValueError, match="support_floor"): - load_uk_calibration_measure_exclusions(path) + mislabelled = uk_support_floor_from_payload({**_block(), "scopes": [band_h]}) + with pytest.raises(ValueError, match="counted in households, not dwellings"): + assert_uk_support_floor_units(mislabelled, contract) + unknown = uk_support_floor_from_payload( + _block(scope={"contract_target_ids": ["no.such.target"]}) + ) + with pytest.raises(ValueError, match="no.such.target is no contract target"): + assert_uk_support_floor_units(unknown, contract) + assert ( + uk_support_floor_target_unit( + {"entity": "household", "concept": "uk.household.count"} + ) + == "households" + ) + assert ( + uk_support_floor_target_unit( + {"entity": "person", "concept": "uk.income.employment.amount"} + ) + == "GBP" + ) + with pytest.raises(ValueError, match="counts and amounts only"): + uk_support_floor_target_unit( + {"entity": "household", "concept": "uk.energy.electricity.kwh"} + ) + + +def test_the_run_refuses_a_floor_labelled_in_another_unit(tmp_path): + payload = json.loads( + importlib_resources.files("microcosm.build.uk") + .joinpath("calibration_measure_exclusions.json") + .read_text() + ) + for scope in payload["support_floor"]["scopes"]: + if scope["scope"] == "council_tax_band_h_by_region": + scope["unit"] = "dwellings" + path = tmp_path / "exclusions.json" + path.write_text(json.dumps(payload)) + with pytest.raises(ValueError, match="counted in households, not dwellings"): + _support_floor_input(path, date(2026, 10, 24)) + assert _support_floor_input(None, date(2026, 10, 24)) is not None + + +def test_only_schema_4_registers_carry_a_floor(tmp_path): + path = tmp_path / "exclusions.json" + for version in (2, 3): + path.write_text( + json.dumps( + {"schema_version": version, "support_floor": _block(), "exclusions": []} + ) + ) + with pytest.raises(ValueError, match="support_floor|schema_version"): + load_uk_calibration_measure_exclusions(path) path.write_text( - json.dumps({"schema_version": 3, "support_floor": _block(), "exclusions": []}) + json.dumps({"schema_version": 4, "support_floor": _block(), "exclusions": []}) ) assert load_uk_calibration_measure_exclusions(path) == () assert load_uk_support_floor_declaration(path) == _block() @@ -327,8 +531,8 @@ def test_readers_narrow_by_the_recorded_drops_under_the_declared_floor(): narrow_uk_registry_by_support_floor( registry, {"thin": {**record, "approved_by": "someone"}}, floor ) - tight = uk_support_floor_from_payload(_block(max_dropped_rows=0)) - with pytest.raises(ValueError, match="signed ceiling"): + tight = uk_support_floor_from_payload(_block(scope={"max_dropped_rows": 0})) + with pytest.raises(ValueError, match="in scope 'uc_bands', more than its signed"): narrow_uk_registry_by_support_floor(registry, {"thin": record}, tight) diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_target_references.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_target_references.py index 615c30c256..60c8f904d5 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_target_references.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_target_references.py @@ -72,7 +72,9 @@ _TEST_PATHS = paths_for("microcosm-build") -ACTIVE_REFERENCE_COUNT = 1338 +# The next policyengine-uk bump retires three rows (microcosm#1095) and binds +# England's single adult council tax discount (microcosm#953). +ACTIVE_REFERENCE_COUNT = 1336 REGION_TIER_LEVEL = {code: level for level, code in UK_REGION_TIER} @@ -1007,7 +1009,7 @@ def test_uk_target_reference_membership_report_is_packaged() -> None: assert membership["target_period"] == 2025 assert membership["active_reference_count"] == ACTIVE_REFERENCE_COUNT assert membership["status_counts"] == { - "active": 1338, + "active": ACTIVE_REFERENCE_COUNT, "no_fact_at_or_before_period": 5, "signed_excluded": 17, } @@ -1106,7 +1108,7 @@ def test_uk_target_reference_membership_report_is_packaged() -> None: { "family": "council_tax_stock", "status": "active_declared_rows", - "active_reference_count": 100, + "active_reference_count": 101, "signed_rationale": ( "MHCLG council taxbase (England), Welsh Government CT1 " "(Wales) and Scottish Government CTAXBASE (Scotland) " @@ -1117,7 +1119,9 @@ def test_uk_target_reference_membership_report_is_packaged() -> None: "nine English regions of the region tier (microcosm#905), each " "cell composed as the linear combination of the billing-" "authority facts the crosswalk places in that region " - "(microcosm#929)." + "(microcosm#929). England's single adult discount is one " + "national row, MHCLG Council Taxbase line 8 for all bands " + "(microcosm#953)." ), }, { diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_terminal_gates.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_terminal_gates.py index 6ff8055dcf..16b8837fc6 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_terminal_gates.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_terminal_gates.py @@ -420,12 +420,16 @@ def test_export_candidate_columns_strip_ids_and_carry_the_weight() -> None: assert exported.mass_log == frame.mass_log # The boundary drops the reviewed export exclusions, the internal # disability carriers, the salary-sacrifice pre-conversion pay carrier, - # the landlord carrier and the value the regional home values replaced - # (microcosm#1112), and nothing else. + # the landlord carrier, the FRS bonus carrier (microcosm#1340) and the + # value the regional home values replaced (microcosm#1112), and nothing + # else. from microcosm.build.uk_runtime.frs_disability import ( UK_INTERNAL_DISABILITY_REPORTED_COLUMNS, ) - from microcosm.build.uk_runtime.frs_spine import FRS_LANDLORD_CARRIER_COLUMN + from microcosm.build.uk_runtime.frs_spine import ( + FRS_BONUS_CARRIER_COLUMN, + FRS_LANDLORD_CARRIER_COLUMN, + ) from microcosm.build.uk_runtime.property_localisation import RANK_BASIS_COLUMN from microcosm.build.uk_runtime.salary_sacrifice import ( SALSAC_PRE_CONVERSION_PAY_COLUMN, @@ -441,12 +445,34 @@ def test_export_candidate_columns_strip_ids_and_carry_the_weight() -> None: | {f"person.{column}" for column in UK_INTERNAL_DISABILITY_REPORTED_COLUMNS} | {f"person.{SALSAC_PRE_CONVERSION_PAY_COLUMN}"} | {f"person.{FRS_LANDLORD_CARRIER_COLUMN}"} + | {f"person.{FRS_BONUS_CARRIER_COLUMN}"} | {f"household.{RANK_BASIS_COLUMN}"} ) # A frame without the column passes through untouched. assert uk_release_export_frame(exported) is exported +def test_no_spine_column_writes_an_input_signed_at_the_engine_default() -> None: + """A signed engine default (microcosm#1095) holds only while no stage writes it.""" + + import json + + from microcosm.frame.adapters.policyengine_uk_concepts import ( + UK_ENGINE_DEFAULT_INPUTS, + ) + from test_support.paths import paths_for + + schema = json.loads( + ( + paths_for("microcosm-graph").tests + / "fixtures/parity/uk_spine/sources/schema.json" + ).read_text() + ) + written = {column for dtypes in schema["dtypes"].values() for column in dtypes} + assert "self_employment_income" in written + assert not written & set(UK_ENGINE_DEFAULT_INPUTS) + + def _target_fit_exclusion( *, approved_on: str = "2026-08-30", diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_capital_coherence.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_capital_coherence.py index 0711392622..a822fecec3 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_capital_coherence.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_capital_coherence.py @@ -406,6 +406,8 @@ def _property_tables(): ], "non_residential_property_value": [20_000.0, 0.0, 0.0, 2_000.0], "owned_land": [5_000.0, 30_000.0, 0.0, 0.0], + "other_residential_property_secured_debt": [0.0, 0.0, 0.0, 0.0], + "non_residential_property_secured_debt": [0.0, 0.0, 0.0, 0.0], } ) return person, benunit, household @@ -437,6 +439,36 @@ def test_the_reference_persons_unit_holds_the_households_property() -> None: ) +def test_the_property_shares_net_the_debt_secured_on_each_class() -> None: + """microcosm#1095: the debt secured on each property class comes off its + value after the costs of sale, floored at zero class by class (UC Regs + 2013 reg 49(1)(b); SPC Regs 2002 reg 19(b)); owned land carries none.""" + + person, benunit, household = _property_tables() + household["other_residential_property_secured_debt"] = [30_000.0, 0.0, 0.0, 0.0] + # 25,000 on buildings worth 20,000: that class floors at zero and takes + # nothing off the other residential property. + household["non_residential_property_secured_debt"] = [25_000.0, 0.0, 0.0, 0.0] + + uc = uc_property_capital_share(person, benunit, household) + pension_credit = pension_credit_property_capital_share(person, benunit, household) + + np.testing.assert_allclose( + uc, [60_000.0, 81_000.0, 0.0, 36_000.0, 0.0, 10_800.0], rtol=1e-12 + ) + np.testing.assert_allclose( + pension_credit, + [64_500.0, 108_000.0, 0.0, 36_000.0, 0.0, 10_800.0], + rtol=1e-12, + ) + with pytest.raises(ValueError, match="finite and nonnegative"): + uc_property_capital_share( + person, + benunit, + household.assign(other_residential_property_secured_debt=-1.0), + ) + + def test_a_household_needs_exactly_one_reference_person() -> None: person, benunit, household = _property_tables() diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_family.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_family.py index 59333844ef..96e30d19f5 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_family.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_family.py @@ -361,10 +361,11 @@ def test_full_uc_payment_registry_matches_independent_relationship_and_band_case # 26,400-27,600 and COUPLE_NO_CHILDREN 24,000-25,200). 88 active / 12 # excluded since microcosm#1095 U3: the support floor drops every band # below ten source households on the built frame, so the nine per-row - # entries it covers retired. + # entries it covers retired. 92 / 8 since arm 2 of the next + # policyengine-uk bump binds four bands it fits unbound (microcosm#1344). assert len(specs) == 100 - assert len(active) == 88 - assert len({s.name for s in specs} & excluded) == 12 + assert len(active) == 92 + assert len({s.name for s in specs} & excluded) == 8 registry = TargetRegistry(active, country="uk") result = materialize_uk_ledger_targets( adapter, registry, period=2025, band_edge_registry=full_registry @@ -374,7 +375,7 @@ def test_full_uc_payment_registry_matches_independent_relationship_and_band_case adapter.to_frame(), registry.to_target_set(), weight_entity="household" ) assert not problem.skipped - assert len(problem.names) == 88 + assert len(problem.names) == 92 assert not {f"{name}@2025" for name in excluded}.intersection(problem.names) expected_family = np.asarray(expected_families)[bu.benunit_id.to_numpy()] uc = bu.universal_credit.to_numpy() diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_take_up.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_take_up.py index 43ab161ed4..ba9ed57c27 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_take_up.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_take_up.py @@ -465,6 +465,9 @@ def _frame(time_period: str = "2024"): "is_uc_claimant": [True] * 4, "is_benunit_head": [True] * 4, "is_parent": [False] * 4, + # The legacy reports that count are the claimant's and partner's + # (pe-uk#2549). + "is_claimant_or_partner": [True] * 4, "universal_credit_reported": [1_000.0, 0.0, 0.0, 0.0], **{column: [0.0] * 4 for column in _LEGACY_REPORTS}, } @@ -668,3 +671,38 @@ def test_a_unit_keeping_a_legacy_benefit_is_not_drawn_onto_uc() -> None: ) # Counted at its stored flag: the pool then needs only two more claims. assert kept_previous.tolist() == [True, True, True, False] + + +@pytest.mark.parametrize( + ("claimant_or_partner", "claims"), + [(True, False), (False, True)], +) +def test_a_unit_keeping_income_related_esa_claims_no_universal_credit( + claimant_or_partner: bool, claims: bool +) -> None: + """policyengine-uk ends a claimant's or partner's income-related ESA once + the family claims Universal Credit (pe-uk#2563, from 2.149.0): a unit on + the award at the interview, neither a UC reporter nor moved off its + legacy benefits, claims none. A report by anyone else does not count, as + the engine leaves that person's award alone (microcosm#1095).""" + + engine = _StubEngine({1: 900.0, 2: 900.0, 3: 0.0, 4: 900.0}) + frame = _frame() + person = frame.table("person") + unit_three = person["person_benunit_id"] == 3 + # Unit 3 has no award, so the solve leaves it at its stored claim. + person.loc[unit_three, "esa_income_reported"] = 4_000.0 + person.loc[unit_three, "is_claimant_or_partner"] = claimant_or_partner + + result = _redraw(frame, engine) + + after = result.frame.table("benunit").set_index("benunit_id") + assert bool(after.loc[3, "would_claim_uc"]) is claims + kept = result.evidence()["income_related_esa_kept"] + assert kept["scope"] == "great_britain" + assert kept["column"] == "esa_income_reported" + # One source household carries it: a band, never a count or a weight. + assert kept["kept_off_support"] == ("<10" if claimant_or_partner else 0) + assert kept["units_kept_off_universal_credit"] == ( + "<10" if claimant_or_partner else 0.0 + ) diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_was_wealth.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_was_wealth.py index 76b3686808..e6599aeace 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_was_wealth.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_was_wealth.py @@ -11,16 +11,24 @@ from microcosm.build.uk_runtime.tenure_constants import UK_TENURE_CATEGORIES from microcosm.build.uk_runtime.was_wealth import ( REGIONS, + UK_WAS_APPENDED_DRAWN_COLUMNS, + UK_WAS_APPENDED_OUTPUT_COLUMNS, UK_WAS_DERIVED_TOTALS, + UK_WAS_DIRECT_SHARE_FRACTION_COLUMN, UK_WAS_DRAWN_ONLY_COLUMNS, UK_WAS_ENGINE_PREDICTOR_ENTITIES, UK_WAS_ENGINE_PREDICTORS, + UK_WAS_HOLDER_STRATA, UK_WAS_NET_FINANCIAL_LIABILITIES, + UK_WAS_SECURED_DEBT_WITHIN, + UK_WAS_SHARE_SPLIT_COLUMNS, UK_WAS_STRATIFIED_TARGETS, UK_WAS_TENURE_CATEGORY_COLUMN, UK_WAS_TENURE_PREDICTORS, + UK_WAS_UNDRAWN_DIRECT_SHARE_FRACTION, UK_WAS_WEALTH_OUTPUT_COLUMNS, UK_WAS_WEALTH_PREDICTORS, + UK_WAS_WEALTH_STAGE_OUTPUT_COLUMNS, UKWASWealthStageTransform, allocate_student_loan_balance_to_people, cap_derived_totals_to_donor_range, @@ -32,9 +40,22 @@ tenure_coherence_receipt, was_tenure_category, wealth_identity_violations, + write_share_split_and_secured_debt, ) -_DRAW_COLUMNS = [*UK_WAS_WEALTH_OUTPUT_COLUMNS, *UK_WAS_DRAWN_ONLY_COLUMNS] +_DRAW_COLUMNS = [ + *UK_WAS_WEALTH_OUTPUT_COLUMNS, + *UK_WAS_DRAWN_ONLY_COLUMNS, + *UK_WAS_APPENDED_DRAWN_COLUMNS, +] +#: The five accounting identities of the chain's own totals. +_TOTAL_IDENTITY_KEYS = ( + "property_wealth_violation_rows", + "corporate_wealth_violation_rows", + "gross_financial_wealth_violation_rows", + "mortgage_debt_violation_rows", + "net_financial_wealth_violation_rows", +) def _chain_operation(n_estimators: int = 2) -> dict[str, object]: @@ -57,6 +78,13 @@ def _chain_operation(n_estimators: int = 2) -> dict[str, object]: *(f"-{column}" for column in UK_WAS_NET_FINANCIAL_LIABILITIES), ], }, + "holder_strata": dict(UK_WAS_HOLDER_STRATA), + "share_split": { + "fraction": UK_WAS_DIRECT_SHARE_FRACTION_COLUMN, + "outputs": list(UK_WAS_SHARE_SPLIT_COLUMNS), + "undrawn_fraction": UK_WAS_UNDRAWN_DIRECT_SHARE_FRACTION, + }, + "secured_debt_within": UK_WAS_SECURED_DEBT_WITHIN, } @@ -98,10 +126,10 @@ def _stage() -> SourceStageSpec: "grain": "household", "artifacts": [], "operations": [_materialize_operation(), _chain_operation()], - "outputs": list(UK_WAS_WEALTH_OUTPUT_COLUMNS), + "outputs": list(UK_WAS_WEALTH_STAGE_OUTPUT_COLUMNS), "nonnegative_outputs": [ name - for name in UK_WAS_WEALTH_OUTPUT_COLUMNS + for name in UK_WAS_WEALTH_STAGE_OUTPUT_COLUMNS if name != "net_financial_wealth" ], } @@ -147,6 +175,10 @@ def _raw_was() -> pd.DataFrame: "DVHseValR8_sum": [1000.0, 2000.0], "DVBltValR8_sum": [0.0, 300.0], "DVBlDValR8_sum": [3000.0, 4000.0], + # No mortgage on other property, so no debt secured on it. + "DVHseDebtR8_sum": [0.0, 0.0], + "DVBLtDebtR8_sum": [0.0, 0.0], + "DVBldDebtR8_sum": [0.0, 0.0], "DVTotinc_bhcR8": [50000.0, 60000.0], "DVSaValR8_aggr": [500.0, 600.0], "vcarnr8": [1.2, 2.8], @@ -242,6 +274,15 @@ def test_was_donor_cleaning_arithmetic_and_exact_case_insensitive_columns() -> N assert donor["other_financial_assets"].tolist() == [5.0, 14.0] assert donor["main_residence_mortgage"].tolist() == [1000.0, 0.0] assert donor["other_mortgage"].tolist() == [0.0, 0.0] + # The share split inside the non-ISA total (microcosm#1095): UK shares + # plus employee shares, and the collective investments. + assert donor["directly_held_shares"].tolist() == [4.0, 6.0] + assert donor["unit_and_investment_trusts"].tolist() == [9.0, 10.0] + assert donor[UK_WAS_DIRECT_SHARE_FRACTION_COLUMN].tolist() == pytest.approx( + [4.0 / 13.0, 6.0 / 16.0] + ) + assert donor["other_residential_property_secured_debt"].tolist() == [0.0, 0.0] + assert donor["non_residential_property_secured_debt"].tolist() == [0.0, 0.0] assert donor["region"].tolist() == ["LONDON", "SCOTLAND"] # The private-renter flag the Lifetime ISA stage reads on both sides. assert donor["is_renting"].tolist() == [False, False] @@ -308,6 +349,47 @@ def test_was_donor_breaking_an_identity_is_refused(column, value, match) -> None clean_was_household_table(raw) +def _raw_was_with_secured_debt() -> pd.DataFrame: + """The owner donor with 200 of mortgages on other property, 150 of it + secured on its other houses and buildings.""" + + raw = _raw_was() + raw.loc[0, "HMortGR8"] = 1200.0 + raw.loc[0, "OthMortR8_sum"] = 200.0 + raw.loc[0, "DVHseDebtR8_sum"] = 100.0 + raw.loc[0, "DVBldDebtR8_sum"] = 50.0 + return raw + + +def test_was_donor_secured_debt_is_read_beside_its_property() -> None: + donor = clean_was_household_table(_raw_was_with_secured_debt()) + + assert donor["other_mortgage"].tolist() == [200.0, 0.0] + assert donor["mortgage_debt"].tolist() == [1200.0, 0.0] + # The other houses' and buy-to-let debt together, beside the value they + # make up together; the buildings' debt beside the buildings. + assert donor["other_residential_property_secured_debt"].tolist() == [100.0, 0.0] + assert donor["non_residential_property_secured_debt"].tolist() == [50.0, 0.0] + + +@pytest.mark.parametrize( + ("column", "value", "match"), + [ + ("DVBldDebtR8_sum", 150.0, "parts of the mortgages on other property"), + ("DVBLtDebtR8_sum", -8.0, "negative values"), + ("DVFCollVR8_aggr", -1.0, "negative values"), + ], +) +def test_was_donor_secured_debt_outside_its_mortgages_is_refused( + column, value, match +) -> None: + raw = _raw_was_with_secured_debt() + raw.loc[0, column] = value + + with pytest.raises(ValueError, match=match): + clean_was_household_table(raw) + + def test_was_donor_sentinel_codes_recode_to_zero_for_nonnegative_domains() -> None: raw = _raw_was() raw.loc[0, "vcarnr8"] = -8 @@ -485,22 +567,34 @@ def fake_impute(*args, **kwargs): "rows_considered": 2, } evidence = transform.checkpoint_metadata()["evidence"] - # The drawn-only components never reach the frame. - assert not set(UK_WAS_DRAWN_ONLY_COLUMNS) & set( - transformed.table("household").columns - ) + # The drawn-only components never reach the frame; the split and the + # secured debts do. + household = transformed.table("household") + assert not set(UK_WAS_DRAWN_ONLY_COLUMNS) & set(household.columns) + assert UK_WAS_DIRECT_SHARE_FRACTION_COLUMN not in household.columns + assert set(UK_WAS_APPENDED_OUTPUT_COLUMNS) <= set(household.columns) + assert ( + household["directly_held_shares"] + + household["unit_and_investment_trusts"] + + household["stocks_and_shares_isa"] + ).tolist() == pytest.approx(household["corporate_wealth"].tolist()) assert evidence["identities"] == { "property_wealth_violation_rows": 0, "corporate_wealth_violation_rows": 0, "gross_financial_wealth_violation_rows": 0, "mortgage_debt_violation_rows": 0, "net_financial_wealth_violation_rows": 0, + "share_split_violation_rows": 0, + "secured_debt_violation_rows": 0, "property_wealth_capped_rows": 0, "corporate_wealth_capped_rows": 0, "gross_financial_wealth_capped_rows": 0, "mortgage_debt_capped_rows": 0, "net_financial_wealth_capped_high_rows": 0, "net_financial_wealth_capped_low_rows": 0, + "share_split_undrawn_fraction_rows": 0, + "secured_debt_zeroed_without_asset_rows": 0, + "secured_debt_scaled_to_other_mortgage_rows": 0, } tenure = evidence["tenure_coherence"] assert tenure["main_residence_mortgage_off_mortgaged_tenure_rows"] == 0 @@ -673,6 +767,10 @@ def fit_draw_next( ("main_residence_mortgage",), ("other_mortgage",), ("consumer_debt",), + # The appended draws, each from its holders (microcosm#1095). + (UK_WAS_DIRECT_SHARE_FRACTION_COLUMN,), + ("other_residential_property_secured_debt",), + ("non_residential_property_secured_debt",), ] base = calls[0][0] assert set(UK_WAS_TENURE_PREDICTORS) <= set(base) @@ -690,9 +788,20 @@ def fit_draw_next( assert calls[5][0] == (*base, *prior) assert calls[6][0] == (*base, *prior, "main_residence_mortgage") assert calls[7][0] == (*base, *prior, "mortgage_debt") + assert calls[8][0] == (*base, *prior, "corporate_wealth_excl_isa") + debt_base = ( + *base, + *prior, + "main_residence_mortgage", + "other_mortgage", + "consumer_debt", + ) + assert calls[9][0] == debt_base + assert calls[10][0] == (*debt_base, "other_residential_property_secured_debt") # The stratified targets are fitted on their stratum's donors only: the one - # mortgaged owner of the two donors; the other mortgages on both. - assert donors == [2, 1, 2, 2, 2, 1, 2, 2] + # mortgaged owner of the two donors; the other mortgages on both; both + # donors hold share-like wealth outside ISAs and both kinds of property. + assert donors == [2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2] # Both recipients are owners, one of them mortgaged: the outright owner # holds no main-residence mortgage by rule but may hold other mortgages, # and mortgage_debt is the sum of the two. @@ -705,6 +814,10 @@ def fit_draw_next( assert result.draws["corporate_wealth"].tolist() == [5.0, 5.0] assert result.draws["gross_financial_wealth"].tolist() == [11.0, 11.0] assert result.draws["net_financial_wealth"].tolist() == [5.0, 5.0] + # The appended draws reach every holder: both recipients hold share-like + # wealth and both kinds of property. + for column in UK_WAS_APPENDED_DRAWN_COLUMNS: + assert result.draws[column].tolist() == [1.0, 1.0] fitted_targets = [name for _, targets in calls for name in targets] assert [record.fit_name for record in result.fit_weight_records] == [ f"uk_was_2018_20_wealth:{target}" for target in fitted_targets @@ -712,7 +825,7 @@ def fit_draw_next( assert {record.weight_kind for record in result.fit_weight_records} == {"explicit"} # One independent RNG root per segment, derived from the declared seed. assert seeds == list(module.was_wealth_segment_seeds(0)) - assert len(set(seeds)) == module.UK_WAS_CHAIN_SEGMENTS == 8 + assert len(set(seeds)) == module.UK_WAS_CHAIN_SEGMENTS == 11 assert result.segment_seeds == tuple(seeds) @@ -818,7 +931,9 @@ def test_segment_seeds_are_distinct_and_deterministic() -> None: # Golden pin: the production roots for the declared stage seed 0. Moving # them is a spec-visible RNG change, never an accident. The first four are - # the roots the four-segment chain used before microcosm#1063. + # the roots the four-segment chain used before microcosm#1063, and the + # first eight the roots of the chain before its appended draws + # (microcosm#1095). assert seeds == ( 3757552657, 673228719, @@ -828,9 +943,12 @@ def test_segment_seeds_are_distinct_and_deterministic() -> None: 2078861726, 2471122328, 23012616, + 3031610183, + 2976135721, + 556745865, ) - assert len(seeds) == 8 - assert len(set(seeds)) == 8 + assert len(seeds) == 11 + assert len(set(seeds)) == 11 assert seeds[:3] == module.was_wealth_segment_seeds(0, segments=3) assert seeds == module.was_wealth_segment_seeds(0) assert seeds != module.was_wealth_segment_seeds(1) @@ -885,7 +1003,9 @@ def test_later_segments_leave_the_earlier_draws_byte_equal() -> None: donor, recipient, seed=0, n_estimators=2, record_ids=_ids(recipient) ) assert list(full.draws.columns) == _DRAW_COLUMNS - for segments in range(1, 8): + import microcosm.build.uk_runtime.was_wealth as module + + for segments in range(1, module.UK_WAS_CHAIN_SEGMENTS): partial = impute_was_wealth( donor, recipient, @@ -927,23 +1047,28 @@ def test_real_chain_holds_the_tenure_rules_and_the_identities() -> None: draws["mortgage_debt"] == draws["main_residence_mortgage"] + draws["other_mortgage"] ).all() - assert wealth_identity_violations(draws) == { - "property_wealth_violation_rows": 0, - "corporate_wealth_violation_rows": 0, - "gross_financial_wealth_violation_rows": 0, - "mortgage_debt_violation_rows": 0, - "net_financial_wealth_violation_rows": 0, - } + raw_identities = wealth_identity_violations(draws) + assert {key: raw_identities[key] for key in _TOTAL_IDENTITY_KEYS} == dict.fromkeys( + _TOTAL_IDENTITY_KEYS, 0 + ) + # The appended debts are drawn on their holders only. + for debt, asset in UK_WAS_HOLDER_STRATA.items(): + if debt != UK_WAS_DIRECT_SHARE_FRACTION_COLUMN: + assert (draws.loc[draws[asset] <= 0.0, debt] == 0.0).all() capped, fired = cap_derived_totals_to_donor_range(draws, donor) clipped = support_clip_to_donor(capped, donor) # The cap keeps every total inside the donor's range, so the support clip - # moves nothing and the identities survive it. + # moves nothing and the identities survive it; the split and the debts + # written on the final totals hold too. assert all( column["clipped_low_rows"] == 0 and column["clipped_high_rows"] == 0 for column in clipped.receipt.evidence()["columns"].values() ) - assert set(wealth_identity_violations(clipped.clipped).values()) == {0} + written, _ = write_share_split_and_secured_debt(clipped.clipped) + assert set(wealth_identity_violations(written).values()) == {0} + assert (written["directly_held_shares"] > 0.0).any() + assert (written["unit_and_investment_trusts"] > 0.0).any() assert set(fired) == { "property_wealth_capped_rows", "corporate_wealth_capped_rows", @@ -976,6 +1101,81 @@ def test_real_chain_holds_the_tenure_rules_and_the_identities() -> None: assert receipt["donor_main_residence_mortgage_mass_off_mortgaged_tenure"] == 0.0 +def test_split_and_secured_debt_are_written_on_the_final_totals() -> None: + """microcosm#1095: the split sums to the final non-ISA total; each debt + sits on a held asset and within the mortgages on other property.""" + + draws = pd.DataFrame( + { + "corporate_wealth": [100.0, 50.0, 30.0, 0.0], + "stocks_and_shares_isa": [20.0, 50.0, 10.0, 0.0], + # The third row's ISA was lowered by a clip: a non-ISA total with no + # drawn split, which goes to the directly held shares. + "corporate_wealth_excl_isa": [80.0, 0.0, 0.0, 0.0], + UK_WAS_DIRECT_SHARE_FRACTION_COLUMN: [0.25, 0.0, 0.0, 0.0], + "other_residential_property_value": [1000.0, 0.0, 500.0, 900.0], + "non_residential_property_value": [0.0, 0.0, 400.0, 100.0], + "other_residential_property_secured_debt": [300.0, 40.0, 300.0, 50.0], + "non_residential_property_secured_debt": [10.0, 0.0, 300.0, 25.0], + "other_mortgage": [500.0, 100.0, 300.0, 1000.0], + } + ) + + written, rows = write_share_split_and_secured_debt(draws) + + assert written["directly_held_shares"].tolist() == [20.0, 0.0, 20.0, 0.0] + assert written["unit_and_investment_trusts"].tolist() == [60.0, 0.0, 0.0, 0.0] + # A debt beside no asset is zero (first row's buildings, second row's + # houses); the third row's 600 of debt passes its 300 of mortgages and + # both halve. + assert written["other_residential_property_secured_debt"].tolist() == [ + 300.0, + 0.0, + 150.0, + 50.0, + ] + assert written["non_residential_property_secured_debt"].tolist() == [ + 0.0, + 0.0, + 150.0, + 25.0, + ] + assert rows == { + "share_split_undrawn_fraction_rows": 1, + "secured_debt_zeroed_without_asset_rows": 2, + "secured_debt_scaled_to_other_mortgage_rows": 1, + } + # The chain's own totals are not under test here: zero them so only the + # split and the debts are read. + totals = dict.fromkeys( + ( + *UK_WAS_DERIVED_TOTALS, + *(c for parts in UK_WAS_DERIVED_TOTALS.values() for c in parts), + "net_financial_wealth", + *UK_WAS_NET_FINANCIAL_LIABILITIES, + ), + 0.0, + ) + for kept in ( + "corporate_wealth", + "stocks_and_shares_isa", + "corporate_wealth_excl_isa", + "other_mortgage", + *UK_WAS_HOLDER_STRATA.values(), + ): + totals.pop(kept, None) + identities = wealth_identity_violations(written.assign(**totals)) + assert identities["share_split_violation_rows"] == 0 + assert identities["secured_debt_violation_rows"] == 0 + # A debt beside no asset and a split that misses its total are counted. + broken = written.copy() + broken.loc[1, "non_residential_property_secured_debt"] = 5.0 + broken.loc[0, "directly_held_shares"] = 0.0 + identities = wealth_identity_violations(broken.assign(**totals)) + assert identities["share_split_violation_rows"] == 1 + assert identities["secured_debt_violation_rows"] == 1 + + def test_total_cap_takes_the_excess_from_the_remainder_first() -> None: donor = clean_was_household_table(_raw_was()) draws = donor.loc[[0], _DRAW_COLUMNS].reset_index(drop=True) diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_wealth_resources.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_wealth_resources.py index 5aaa48144a..676079352f 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_wealth_resources.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_wealth_resources.py @@ -139,6 +139,9 @@ def test_support_bounds_tool_rounds_synthetic_donor_outward(tmp_path: Path) -> N "DVHseValR8_sum": [1000, 2000], "DVBltValR8_sum": [0, 300], "DVBlDValR8_sum": [3000, 4000], + "DVHseDebtR8_sum": [0, 0], + "DVBLtDebtR8_sum": [0, 0], + "DVBldDebtR8_sum": [0, 0], "DVTotinc_bhcR8": [50000, 60000], "DVSaValR8_aggr": [500, 600], "vcarnr8": [1, 2], diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_weighted_integrity.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_weighted_integrity.py index 987b9742f9..9a8a675224 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_weighted_integrity.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_weighted_integrity.py @@ -476,6 +476,7 @@ def test_qrf_columns_check_every_declared_output_regardless_of_density() -> None "afcs_reported", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", "jsa_contrib_reported", "jsa_income_reported", "esa_income_reported", diff --git a/packages/microcosm-data/pyproject.toml b/packages/microcosm-data/pyproject.toml index d0ad1be68b..63735538a5 100644 --- a/packages/microcosm-data/pyproject.toml +++ b/packages/microcosm-data/pyproject.toml @@ -37,7 +37,7 @@ us = ["policyengine-us>=2.2.1,<3", "policyengine-core==3.32.5"] # The UK artifact lives in a PRIVATE repo (UK Data Service licence): loads # require an authenticated HF token with access. The loader surfaces the # 401 with that explanation rather than retrying. -uk = ["policyengine-uk>=2.147.2"] +uk = ["policyengine-uk>=2.151.0"] [project.urls] Homepage = "https://microcosm.institute" diff --git a/packages/microcosm-data/src/microcosm/data/contract.py b/packages/microcosm-data/src/microcosm/data/contract.py index d99f34065c..a680a81949 100644 --- a/packages/microcosm-data/src/microcosm/data/contract.py +++ b/packages/microcosm-data/src/microcosm/data/contract.py @@ -451,13 +451,13 @@ def compatibility_claim_declarer_error(declared_by: object) -> str | None: # fingerprint derives from the manifest digest. Editing the spec moves all # three here in the same reviewed change. _UK_GATE_BATTERY_POLICY_SHA256 = ( - "cf7df0ce75fcb6b66cdba6f706ed777aca9550a966f364cef6c3c2c5f7780813" + "ebf48e9a2b64a1518923e7795f771da069ec2c0cc1608c764013e1ff9c83dec0" ) _UK_GATE_BATTERY_GATES_MANIFEST_SHA256 = ( - "cb12e74aed6397667b17d5cf770161cf01df721f796ddc244ae9b6945dcf3605" + "2437ef6c1e3ee2cd6a844c7d8dbca72c8ec7163199e03979295fc6ce0f486623" ) _UK_GATE_BATTERY_SPEC_FINGERPRINT = ( - "fcebd763a4e9c427615ca935b019de43bc49e7dffbcece54181c21576bdcc372" + "9b478f778c03838adc2aa2b769d8a3fbf21e6f8d776d318ff37d8db10c759e24" ) #: Spec entry id -> the legacy gate name whose observable detail checks #: apply unchanged (the battery re-keys the report by entry id; the gate @@ -552,6 +552,9 @@ def compatibility_claim_declarer_error(declared_by: object) -> str | None: "transferred", ), "uk_stage_student_loans_realization": ("stage_health", "transferred"), + "uk_stage_regional_home_values_ranking": ("stage_health", "transferred"), + "uk_stage_property_purchases_fit": ("stage_health", "transferred"), + "uk_stage_uc_legacy_closure_take_up_contract": ("stage_health", "transferred"), "uk_stage_age_tail_targets": ("stage_health", "assembled"), "uk_stage_frs_relationships_composition": ("stage_health", "assembled"), "uk_ledger_compile_parity_local_incumbent_2025": ( @@ -652,6 +655,9 @@ def compatibility_claim_declarer_error(declared_by: object) -> str | None: "uk_stage_cgt_incidence_anchor_composition", "uk_stage_salary_sacrifice_realization", "uk_stage_student_loans_realization", + "uk_stage_regional_home_values_ranking", + "uk_stage_property_purchases_fit", + "uk_stage_uc_legacy_closure_take_up_contract", "uk_stage_age_tail_targets", "uk_stage_frs_relationships_composition", "uk_cgt_projection_entrants", @@ -888,11 +894,14 @@ def _uk_line_cut_tag_re(release_id: str) -> re.Pattern[str] | None: "uk_stage_nts_bus_travel_support", "uk_stage_pension_credit_take_up", "uk_stage_property_components", + "uk_stage_property_purchases_fit", + "uk_stage_regional_home_values_ranking", "uk_stage_salary_sacrifice_realization", "uk_stage_spi_benefit_coherence", "uk_stage_spi_support_channel_mass", "uk_stage_student_loans_realization", "uk_stage_uc_deduction_attributes", + "uk_stage_uc_legacy_closure_take_up_contract", "uk_stage_uc_take_up", "uk_stage_was_lisa_support", "uk_stage_was_wealth_coherence", @@ -937,10 +946,10 @@ def _uk_line_cut_tag_re(release_id: str) -> re.Pattern[str] | None: _UK_CERTIFICATION_PART_DIGESTS: Mapping[str, Mapping[str, str]] = { "spine": { "gates_manifest_sha256": ( - "985f54966ef25bfd7f778cb33ad501fd2e7d4c036f00245518bd1fd448ef9c7d" + "a5ecd8de5f98a40fb8ad7b00cca2236f22c82ea24653da2f3270b3de67f24fd6" ), "policy_sha256": ( - "2b4995c6389870fd54ffd815f40d269facb593f1131c4e3fa3c5fa55e2869d24" + "00d01f3534e1c9c3effb1316f6b70c102854bcf0f991ebb5667bb0f1647c3485" ), }, "calibration_seam": { @@ -953,10 +962,10 @@ def _uk_line_cut_tag_re(release_id: str) -> re.Pattern[str] | None: }, "release_cut": { "gates_manifest_sha256": ( - "85aaa1f2a7a9d295c12db01698c4ba0e2c3724ab6051d68966f49e5d8a3427f5" + "c3faf15d083ab7e0bae430280e7b14619b3465c56c0b147e9da2932e04f409fa" ), "policy_sha256": ( - "d7bda5f6771845ffc5bf591ae45f2618885f51ebeb48fcb96538a2a3b0ef6a11" + "57bebe91df53951c0b4e8403cab0b4e07aaea40e7eb828a121354b2812bd7a6c" ), }, } diff --git a/packages/microcosm-data/tests/engine_free/shared/test_contract.py b/packages/microcosm-data/tests/engine_free/shared/test_contract.py index 520cd4e486..b5ce5e927a 100644 --- a/packages/microcosm-data/tests/engine_free/shared/test_contract.py +++ b/packages/microcosm-data/tests/engine_free/shared/test_contract.py @@ -213,13 +213,13 @@ def _trusted_terminal_gate_signing_key(monkeypatch) -> None: UK_GATE_BATTERY_PRODUCER = "microcosm.build.gate_battery" UK_GATE_BATTERY_SIGNING_KEY_ENV = "MICROCOSM_UK_TERMINAL_GATE_SIGNING_KEY" UK_GATE_BATTERY_POLICY_SHA256 = ( - "cf7df0ce75fcb6b66cdba6f706ed777aca9550a966f364cef6c3c2c5f7780813" + "ebf48e9a2b64a1518923e7795f771da069ec2c0cc1608c764013e1ff9c83dec0" ) UK_GATE_BATTERY_GATES_MANIFEST_SHA256 = ( - "cb12e74aed6397667b17d5cf770161cf01df721f796ddc244ae9b6945dcf3605" + "2437ef6c1e3ee2cd6a844c7d8dbca72c8ec7163199e03979295fc6ce0f486623" ) UK_GATE_BATTERY_SPEC_FINGERPRINT = ( - "fcebd763a4e9c427615ca935b019de43bc49e7dffbcece54181c21576bdcc372" + "9b478f778c03838adc2aa2b769d8a3fbf21e6f8d776d318ff37d8db10c759e24" ) UK_GATE_BATTERY_DEGENERATE_EVIDENCE_SHA256 = ( "6a179222c6b6058ad9caacfd347f7bdb8cb98a62237b50d1fc1136df09337251" @@ -329,6 +329,21 @@ def _trusted_terminal_gate_signing_key(monkeypatch) -> None: "transferred", None, ), + "uk_stage_regional_home_values_ranking": ( + "stage_health", + "transferred", + None, + ), + "uk_stage_property_purchases_fit": ( + "stage_health", + "transferred", + None, + ), + "uk_stage_uc_legacy_closure_take_up_contract": ( + "stage_health", + "transferred", + None, + ), "uk_stage_hmrc_cgt_asset_type_spine_summary": ( "stage_health", "transferred", @@ -1395,6 +1410,9 @@ def _gate_battery_payload( "uk_stage_cgt_incidence_anchor_composition": "cgt_incidence_anchor", "uk_stage_salary_sacrifice_realization": "salary_sacrifice", "uk_stage_student_loans_realization": "student_loans", + "uk_stage_regional_home_values_ranking": "regional_home_values", + "uk_stage_property_purchases_fit": "property_purchases", + "uk_stage_uc_legacy_closure_take_up_contract": "uc_legacy_closure_take_up", "uk_stage_age_tail_targets": "age_tail", "uk_stage_frs_relationships_composition": "frs_relationships", } diff --git a/packages/microcosm-frame/pyproject.toml b/packages/microcosm-frame/pyproject.toml index ef175ba177..582d8af423 100644 --- a/packages/microcosm-frame/pyproject.toml +++ b/packages/microcosm-frame/pyproject.toml @@ -22,7 +22,7 @@ policyengine = [ "policyengine-core==3.32.5", "microunit>=0.1.0", ] -uk = ["policyengine-uk>=2.147.2"] +uk = ["policyengine-uk>=2.151.0"] # The Axiom adapter's PyPI-resolvable dependencies. The engine itself # (axiom-rules-engine + its dense native extension) is not on PyPI yet and # installs from a checkout; see microcosm/frame/adapters/axiom.py. diff --git a/packages/microcosm-frame/src/microcosm/frame/adapters/policyengine_uk_concepts.py b/packages/microcosm-frame/src/microcosm/frame/adapters/policyengine_uk_concepts.py index 74c0099330..daa2758043 100644 --- a/packages/microcosm-frame/src/microcosm/frame/adapters/policyengine_uk_concepts.py +++ b/packages/microcosm-frame/src/microcosm/frame/adapters/policyengine_uk_concepts.py @@ -25,14 +25,18 @@ ) from microcosm.frame.concepts import AlignmentRelation -__all__ = ["POLICYENGINE_UK_CONCEPT_MAPPING", "UK_ENGINE_DEFAULT_TAKE_UP_INPUTS"] +__all__ = [ + "POLICYENGINE_UK_CONCEPT_MAPPING", + "UK_ENGINE_DEFAULT_INPUTS", + "UK_ENGINE_DEFAULT_TAKE_UP_INPUTS", +] # --------------------------------------------------------------------------- # Concept mapping # --------------------------------------------------------------------------- # # Which PolicyEngine-UK inputs each engine-neutral concept feeds -# (microcosm.frame.concepts), reviewed against policyengine-uk 2.147.2. Every +# (microcosm.frame.concepts), reviewed against policyengine-uk 2.151.0. Every # target is a pure input (in ``PolicyEngineUKEngine.variables``). The UK # loader also accepts some formula-owned variables as overrides # (``employment_income``, ``state_pension_reported``, ``is_household_head``); @@ -185,6 +189,36 @@ UK_ENGINE_DEFAULT_TAKE_UP_INPUTS: dict[str, str] = {} +#: Other engine inputs the build leaves at the engine's default, each signed as +#: an approximation with the error it can make (microcosm#1095). +UK_ENGINE_DEFAULT_INPUTS: dict[str, str] = { + "self_employment_gross_receipts": ( + "No source of the self-employed's turnover is read yet (the FRS job " + "record and the SPI tape are the candidates, as #1145 found landlords' " + "receipts). Since policyengine-uk 2.108.0 the trading allowance replaces " + "expenses and does not stack on them, so without receipts " + "trading_allowance_deduction relieves a profit of GBP 1,000 or less in " + "full and gives a larger profit no allowance. Taxable profit is off by at " + "most GBP 1,000 a person: too low where receipts above GBP 1,000 leave a " + "small profit, too high just above GBP 1,000 where the allowance would " + "beat the expenses. Signed as an approximation with the plan for the " + "next policyengine-uk bump, approved on 2026-10-23." + ), + "housing_benefit_residential_capital_exception": ( + "The working-age residential capital tariff exception (Housing Benefit " + "Regulations 2006 reg. 52(4)-(5), (8)-(9); NI reg. 49) covers residents " + "of the residential accommodation and saved circumstances it lists, and " + "policyengine-uk 2.148.4 asks for it pre-assessed. The FRS samples " + "private households, so it holds almost no such resident, and it records " + "no assessment of the circumstances, so the input stays False. A " + "qualifying working-age resident takes tariff income on capital above " + "GBP 6,000 instead of GBP 10,000, so Housing Benefit is understated for " + "such residents alone; eligibility, capital and the upper limit do not " + "move (Vahid's review of #1383, item 4)." + ), +} + + def _uk_take_up(program: str, entity: str) -> InputBinding: person = entity == "person" documentation, build = _UK_TAKE_UP_EVIDENCE[program] @@ -206,7 +240,7 @@ def _uk_take_up(program: str, entity: str) -> InputBinding: POLICYENGINE_UK_CONCEPT_MAPPING = ConceptMapping( engine="policyengine-uk", - engine_version="2.147.2", + engine_version="2.151.0", entity_correspondence={"person": "person", "household": "household"}, input_declaration=InputDeclaration.ENGINE_TYPED, bindings=( @@ -580,8 +614,10 @@ def _uk_take_up(program: str, entity: str) -> InputBinding: "(gov.dwp.universal_credit.means_test.capital.sources); since " "policyengine-uk 2.147.0 share_like_capital is corporate_wealth unless " "its components, the household inputs directly_held_shares and " - "unit_and_investment_trusts, add up to more, and the build sets " - "neither. Universal Credit's one person-level source is " + "unit_and_investment_trusts, add up to more; the WAS stage writes " + "both on its corporate_wealth less the stocks-and-shares ISA, so " + "they and the ISA sum to it (microcosm#1095). Universal Credit's " + "one person-level source is " "lifetime_isa_countable_capital, the Lifetime ISA at its surrender " "value (capital.person_sources). " "uc_reported_capital (benefit unit, default -1) is Universal " diff --git a/packages/microcosm-frame/tests/engine/uk/test_concept_mapping_policyengine_uk.py b/packages/microcosm-frame/tests/engine/uk/test_concept_mapping_policyengine_uk.py index e4576c6826..472752874a 100644 --- a/packages/microcosm-frame/tests/engine/uk/test_concept_mapping_policyengine_uk.py +++ b/packages/microcosm-frame/tests/engine/uk/test_concept_mapping_policyengine_uk.py @@ -22,6 +22,7 @@ PolicyEngineUKEngine, ) from microcosm.frame.adapters.policyengine_uk_concepts import ( + UK_ENGINE_DEFAULT_INPUTS, UK_ENGINE_DEFAULT_TAKE_UP_INPUTS, ) from microcosm.frame.concept_mapping import ( @@ -92,6 +93,16 @@ def test_take_up_bindings_are_the_engines_would_claim_inputs(engine) -> None: assert bound | left == would_claim +def test_signed_default_inputs_are_engine_inputs_the_mapping_leaves(engine) -> None: + # Each is left at the engine's default as a signed approximation, so it + # must be an input the engine reads and the mapping never binds. + inputs = set(engine.variables()) + bound = {binding.engine_input for binding in MAPPING.bindings} + assert set(UK_ENGINE_DEFAULT_INPUTS) <= inputs + assert bound.isdisjoint(UK_ENGINE_DEFAULT_INPUTS) + assert all(reason.strip() for reason in UK_ENGINE_DEFAULT_INPUTS.values()) + + def test_structural_inputs_are_engine_inputs(engine) -> None: assert set(MAPPING.structural_inputs) <= set(engine.variables()) @@ -174,7 +185,8 @@ def test_the_liquid_asset_reason_names_the_household_wealth_inputs(engine) -> No # Shares and funds sit on the household too, in corporate_wealth. Since # policyengine-uk 2.147.0 Universal Credit counts them, alongside savings, # as share_like_capital: corporate_wealth unless its two household - # components, which the build leaves unset, add up to more. Its one + # components, which the WAS stage writes to sum to it with the ISA, add up + # to more (microcosm#1095). Its one # person-level source is the Lifetime ISA at its surrender value. reason = MAPPING.unmapped["fact:person.liquid_financial_assets"] inputs = set(engine.variables()) diff --git a/packages/microcosm-frame/tests/golden/concept-coverage/policyengine-uk.json b/packages/microcosm-frame/tests/golden/concept-coverage/policyengine-uk.json index d30d637051..7a165d480f 100644 --- a/packages/microcosm-frame/tests/golden/concept-coverage/policyengine-uk.json +++ b/packages/microcosm-frame/tests/golden/concept-coverage/policyengine-uk.json @@ -413,8 +413,8 @@ } ], "engine": "policyengine-uk", - "engine_version": "2.147.2", - "input_count": 314, + "engine_version": "2.151.0", + "input_count": 335, "schema_sha256": "5a55669d0447a686692911a6327ae298f19741dde29559f2654a75807878a141", "structural_inputs": [ { @@ -551,6 +551,14 @@ "entity": "benunit", "name": "benunit_reported_capital" }, + { + "entity": "household", + "name": "betting_exchange_commission" + }, + { + "entity": "household", + "name": "bingo_net_receipts" + }, { "entity": "person", "name": "blind_persons_allowance" @@ -823,6 +831,10 @@ "entity": "household", "name": "external_child_payments" }, + { + "entity": "household", + "name": "financial_spread_betting_net_losses" + }, { "entity": "household", "name": "food_and_non_alcoholic_beverages_consumption" @@ -871,6 +883,10 @@ "entity": "household", "name": "heated_tobacco_grams_per_week" }, + { + "entity": "household", + "name": "horse_and_dog_pool_betting_net_losses" + }, { "entity": "household", "name": "household_furnishings_consumption" @@ -887,6 +903,10 @@ "entity": "person", "name": "housing_benefit_reported" }, + { + "entity": "benunit", + "name": "housing_benefit_residential_capital_exception" + }, { "entity": "household", "name": "housing_service_charges" @@ -971,6 +991,14 @@ "entity": "person", "name": "jsa_income_reported" }, + { + "entity": "household", + "name": "land_based_casino_net_losses" + }, + { + "entity": "household", + "name": "land_based_fixed_odds_betting_net_losses" + }, { "entity": "benunit", "name": "liable_for_share_of_household_rent" @@ -979,6 +1007,10 @@ "entity": "person", "name": "lifetime_isa_balance" }, + { + "entity": "household", + "name": "liquid_fuel_consumption" + }, { "entity": "household", "name": "local_authority" @@ -999,6 +1031,18 @@ "entity": "person", "name": "lump_sum_income" }, + { + "entity": "household", + "name": "machine_games_higher_rate_net_takings" + }, + { + "entity": "household", + "name": "machine_games_lower_rate_net_takings" + }, + { + "entity": "household", + "name": "machine_games_standard_rate_net_takings" + }, { "entity": "household", "name": "main_residence_value" @@ -1047,6 +1091,10 @@ "entity": "household", "name": "mortgage_debt" }, + { + "entity": "household", + "name": "national_lottery_ticket_spending" + }, { "entity": "household", "name": "natural_gas_kg" @@ -1123,6 +1171,10 @@ "entity": "household", "name": "other_residential_property_value" }, + { + "entity": "household", + "name": "other_spread_betting_net_losses" + }, { "entity": "person", "name": "other_tax_credits" @@ -1179,6 +1231,10 @@ "entity": "person", "name": "pension_annual_allowance_taxable_lump_sum_death_benefits" }, + { + "entity": "person", + "name": "pension_contributions_via_bonus_sacrifice" + }, { "entity": "person", "name": "pension_contributions_via_salary_sacrifice" @@ -1219,6 +1275,10 @@ "entity": "person", "name": "pip_m_points" }, + { + "entity": "household", + "name": "pool_betting_net_receipts" + }, { "entity": "household", "name": "private_pension_wealth" @@ -1263,6 +1323,18 @@ "entity": "household", "name": "region" }, + { + "entity": "household", + "name": "remote_gaming_net_losses" + }, + { + "entity": "household", + "name": "remote_other_betting_net_losses" + }, + { + "entity": "household", + "name": "remote_uk_horseracing_betting_net_losses" + }, { "entity": "person", "name": "rent_paid_as_boarder" @@ -1303,6 +1375,10 @@ "entity": "person", "name": "sic_industry_division" }, + { + "entity": "household", + "name": "solid_fuel_consumption" + }, { "entity": "household", "name": "sparkling_cider_draught_share" @@ -1323,6 +1399,10 @@ "entity": "household", "name": "spirits_litres" }, + { + "entity": "person", + "name": "spousal_maintenance_income" + }, { "entity": "person", "name": "ssmg_reported" @@ -1483,6 +1563,10 @@ "entity": "household", "name": "water_and_sewerage_charges" }, + { + "entity": "person", + "name": "widowed_parents_allowance_reported" + }, { "entity": "household", "name": "wine_draught_share" @@ -1513,7 +1597,7 @@ "fact:household.reference_person_id": "is_household_head is formula-owned (the oldest member). The UK build overrides it with the FRS household reference person (frs_spine.py), an override the loader accepts, but it is not an input, so the mapping does not target it. Every housing input is household-level, so nothing is allocated to the reference person.", "fact:household.source_household_id": "Original donor household lineage is build provenance and weight diagnostic support, not a policyengine-uk rules input.", "fact:person.legal_marital_status": "policyengine-uk derives marital status from benefit-unit composition; marital_status and is_married are formula-owned.", - "fact:person.liquid_financial_assets": "policyengine-uk holds financial wealth on the household: savings ('Household liquid savings'), corporate_wealth ('Wealth held in corporations directly or through investment funds'), gross_financial_wealth and net_financial_wealth are household inputs, and no transform puts a person amount on a household input. Its person-level GBP stock inputs are student_loan_balance, a debt; car_list_price, the price vehicle excise duty's expensive-car supplement tests; and lifetime_isa_balance ('Current value of the person's Lifetime ISAs, cash and stocks and shares together'), one savings wrapper, which the engine documents as already inside gross_financial_wealth and net_financial_wealth. Since policyengine-uk 2.130.0 three more describe a company the person owns, for Universal Credit's regulation 77 (owned_company_capital, owned_company_holding_value and owned_company_trade_assets); every one defaults to no such company, and the build sets none. savings and share_like_capital are two of Universal Credit's capital sources (gov.dwp.universal_credit.means_test.capital.sources); since policyengine-uk 2.147.0 share_like_capital is corporate_wealth unless its components, the household inputs directly_held_shares and unit_and_investment_trusts, add up to more, and the build sets neither. Universal Credit's one person-level source is lifetime_isa_countable_capital, the Lifetime ISA at its surrender value (capital.person_sources). uc_reported_capital (benefit unit, default -1) is Universal Credit capital; since policyengine-uk 2.136.1 a value of zero or more set directly is the unit's complete countable capital, in place of every source, property included. benunit_reported_capital, a benefit-unit input ('Savings and investments of the benefit unit's adults (the claimant and any partner) as recorded'), replaces the financial sources only: the household pool it otherwise sums from the household sources, net of what other benefit units report or override, and apportions by claimant and partner count, and the person-level sources of the unit's claimant and partner. Property is valued separately (uc_property_capital) and shared across every claimant and partner in the household. Feeding either would be a modelling choice for a UK build, not a mapping of this concept.", + "fact:person.liquid_financial_assets": "policyengine-uk holds financial wealth on the household: savings ('Household liquid savings'), corporate_wealth ('Wealth held in corporations directly or through investment funds'), gross_financial_wealth and net_financial_wealth are household inputs, and no transform puts a person amount on a household input. Its person-level GBP stock inputs are student_loan_balance, a debt; car_list_price, the price vehicle excise duty's expensive-car supplement tests; and lifetime_isa_balance ('Current value of the person's Lifetime ISAs, cash and stocks and shares together'), one savings wrapper, which the engine documents as already inside gross_financial_wealth and net_financial_wealth. Since policyengine-uk 2.130.0 three more describe a company the person owns, for Universal Credit's regulation 77 (owned_company_capital, owned_company_holding_value and owned_company_trade_assets); every one defaults to no such company, and the build sets none. savings and share_like_capital are two of Universal Credit's capital sources (gov.dwp.universal_credit.means_test.capital.sources); since policyengine-uk 2.147.0 share_like_capital is corporate_wealth unless its components, the household inputs directly_held_shares and unit_and_investment_trusts, add up to more; the WAS stage writes both on its corporate_wealth less the stocks-and-shares ISA, so they and the ISA sum to it (microcosm#1095). Universal Credit's one person-level source is lifetime_isa_countable_capital, the Lifetime ISA at its surrender value (capital.person_sources). uc_reported_capital (benefit unit, default -1) is Universal Credit capital; since policyengine-uk 2.136.1 a value of zero or more set directly is the unit's complete countable capital, in place of every source, property included. benunit_reported_capital, a benefit-unit input ('Savings and investments of the benefit unit's adults (the claimant and any partner) as recorded'), replaces the financial sources only: the household pool it otherwise sums from the household sources, net of what other benefit units report or override, and apportions by claimant and partner count, and the person-level sources of the unit's claimant and partner. Property is valued separately (uc_property_capital) and shared across every claimant and partner in the household. Feeding either would be a modelling choice for a UK build, not a mapping of this concept.", "fact:person.partner_person_id": "Partnerships reach policyengine-uk only through benefit-unit membership, a structure the bundle must already carry (the adapter builds no units); is_benunit_head and is_married are formula-owned.", "fact:person.public_pension_income": "The State Pension is computed from state_pension_reported, which is formula-owned: the loader accepts it as an override, but it is not an input." } diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/cgt_asset_type_facts.json b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/cgt_asset_type_facts.json index adb11cb62a..40bf20145e 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/cgt_asset_type_facts.json +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/cgt_asset_type_facts.json @@ -2,70 +2,70 @@ "resource": "synthetic-cgt-asset-type.json", "resource_sha256": "synthetic", "source_commit": "synthetic", - "table4_all_gains": 6543361.536228343, + "table4_all_gains": 6472476.363235764, "table4_all_tax": 0.0, - "table4_all_taxpayers": 15.645847684894521, + "table4_all_taxpayers": 15.64584768489452, "table4_bands": [ { - "gains": 6262.397159008047, + "gains": 6343.7876538201135, "lower_bound": 0, "tax": null, - "taxpayers": 1.4320098873007394, + "taxpayers": 1.4508598323557498, "upper_bound": 10000 }, { - "gains": 24822.654876166478, + "gains": 31485.760340906432, "lower_bound": 10000, "tax": null, - "taxpayers": 1.5147322556160423, + "taxpayers": 1.9244306390596129, "upper_bound": 25000 }, { - "gains": 79283.34035328866, + "gains": 63324.14855305699, "lower_bound": 25000, "tax": null, - "taxpayers": 2.178624737238577, + "taxpayers": 1.7239151594793525, "upper_bound": 50000 }, { - "gains": 132688.53820392478, + "gains": 140800.40954871886, "lower_bound": 50000, "tax": null, - "taxpayers": 1.901735026156099, + "taxpayers": 2.0175072572478596, "upper_bound": 100000 }, { - "gains": 146476.1345210153, + "gains": 155344.30651445186, "lower_bound": 100000, "tax": null, - "taxpayers": 0.9308528178709959, + "taxpayers": 0.9869230277893157, "upper_bound": 250000 }, { - "gains": 661905.7509932889, + "gains": 630694.061491824, "lower_bound": 250000, "tax": null, - "taxpayers": 1.8388639901748962, + "taxpayers": 1.7500749317552278, "upper_bound": 500000 }, { - "gains": 812463.3906394695, + "gains": 790243.0554791468, "lower_bound": 500000, "tax": null, - "taxpayers": 1.1695696410549907, + "taxpayers": 1.1378960035535624, "upper_bound": 1000000 }, { - "gains": 4679459.329482181, + "gains": 4654240.833653839, "lower_bound": 1000000, "tax": null, - "taxpayers": 4.679459329482181, + "taxpayers": 4.654240833653839, "upper_bound": null } ], - "table4_individuals_gains": 6543361.536228343, + "table4_individuals_gains": 6472476.363235764, "table4_individuals_tax": 0.0, - "table4_individuals_taxpayers": 15.645847684894521, + "table4_individuals_taxpayers": 15.64584768489452, "table4_trusts_gains": 0.0, "table4_trusts_tax": 0.0, "table7_total_disposals": 2743095.2380952383, @@ -115,11 +115,11 @@ } ], "table8a_disposals_total": 29.50359849151538, - "table8a_gains_total": 36979426.86475159, - "table8a_tax_total": 7395885.372950319, + "table8a_gains_total": 36909134.810149446, + "table8a_tax_total": 7381826.962029889, "table8a_taxpayers_total": 26.82145317410489, - "table8b_all_gains": 36979426.86475159, + "table8b_all_gains": 36909134.810149446, "table8b_all_taxpayers": 26.82145317410489, - "table8b_individuals_gains": 36979426.86475159, + "table8b_individuals_gains": 36909134.810149446, "table8b_individuals_taxpayers": 26.82145317410489 } diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/fixture.json b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/fixture.json index c0c4ba6bb3..8fa427af63 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/fixture.json +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/fixture.json @@ -98,7 +98,7 @@ "artifacts": [], "grain": "person", "nonnegative_outputs": [], - "notes": "Runs after the SPI income chain, UC capital coherence and the Pension Credit and Child Benefit redraws, before CGT cloning, so every clone carries its source's draw (microcosm#1319). frs_spine sets would_claim_carers_allowance from reported receipt and the SPI income chain re-derives it from the refilled receipt on the rows it redraws, so that care_hours qualifies a carer for the Universal Credit carer element without paying the allowance to every carer (#882). A carer above the earnings limit cannot report the allowance, so no reform that widens it reached a carer who would claim once entitled: the April 2025 rise of the limit from \u00a3151 to \u00a3196 a week brought an estimated 61,000 more people into eligibility (Independent Review of Carer's Allowance Overpayments, July 2025, chapter 7). One temporary engine materialization at the survey year, on the frame's own values, gives each person's is_gainfully_employed_for_carers_allowance (consumed only); the engine reads a year's parameters at 30 April, so the limit is 2024-25's \u00a3151. A person outside Scotland whose care_hours reach the engine's gov.dwp.carers_allowance.min_hours (35), who reports no allowance and whom that test holds gainfully employed claims at the take-up contract's carers_allowance_newly_entitled rate (0.6, Mar\u00eda's ruling of 2026-10-20, sensitivity 0.45 to 0.75) on the person's identity-keyed uniform (seed 0, salt would_claim_carers_allowance): would_claim = reported OR (eligible AND u < rate). A reporter stays true; a carer under the limit who reports no allowance stays false, as the survey records them entitled and not claiming. Scotland stays closed, since Carer Support Payment reads the same flag; policyengine-uk applies its earnings limit from 2.146.1, and opening Scotland is a follow-up (microcosm#1319). The earnings test is read before salary_sacrifice moves some contributors' pension amounts out of their pay, so a drawn carer whom that conversion takes under the survey year's limit keeps the flag although the file then shows them entitled and not reporting. The stage rebuilds the flag from reported receipt and refuses a frame whose flag no longer follows it. Its receipt bands support on distinct source households (household_source_id), and gives a weighted total only where ten or more carry it and the realised share only where neither side rests on one to nine; the stage has no health gate.", + "notes": "Runs after the SPI income chain, UC capital coherence and the Pension Credit and Child Benefit redraws, before CGT cloning, so every clone carries its source's draw (microcosm#1319). frs_spine sets would_claim_carers_allowance from reported receipt and the SPI income chain re-derives it from the refilled receipt on the rows it redraws, so that care_hours qualifies a carer for the Universal Credit carer element without paying the allowance to every carer (#882). A carer above the earnings limit cannot report the allowance, so no reform that widens it reached a carer who would claim once entitled: the April 2025 rise of the limit from \u00a3151 to \u00a3196 a week brought an estimated 61,000 more people into eligibility (Independent Review of Carer's Allowance Overpayments, July 2025, chapter 7). One temporary engine materialization at the survey year, on the frame's own values, gives each person's is_gainfully_employed_for_carers_allowance (consumed only); the engine reads a year's parameters at 30 April, so the limit is 2024-25's \u00a3151. A person whose care_hours reach the engine's gov.dwp.carers_allowance.min_hours (35), who reports no allowance and whom that test holds gainfully employed claims at the take-up contract's carers_allowance_newly_entitled rate (0.6, Mar\u00eda's ruling of 2026-10-20, sensitivity 0.45 to 0.75) on the person's identity-keyed uniform (seed 0, salt would_claim_carers_allowance): would_claim = reported OR (eligible AND u < rate). A reporter stays true; a carer under the limit who reports no allowance stays false, as the survey records them entitled and not claiming. Scotland is drawn too (Mar\u00eda's ruling of 2026-10-23): there the flag is Carer Support Payment's, which policyengine-uk pays only under its own earnings limit from 2.146.1 (PolicyEngine/policyengine-uk#2473), and the receipt reports Scotland apart. The earnings test is read before salary_sacrifice moves some contributors' pension amounts out of their pay, so a drawn carer whom that conversion takes under the survey year's limit keeps the flag although the file then shows them entitled and not reporting. The stage rebuilds the flag from reported receipt and refuses a frame whose flag no longer follows it. Its receipt bands support on distinct source households (household_source_id), and gives a weighted total only where ten or more carry it and the realised share only where neither side rests on one to nine; the stage has no health gate.", "operations": [ { "consumed_only": true, @@ -111,7 +111,7 @@ { "assignment_unit": "person", "draw": "would_claim_carers_allowance", - "eligibility": "persons outside Scotland whose care_hours reach policyengine-uk's gov.dwp.carers_allowance.min_hours, who report no Carer's Allowance, and whom is_gainfully_employed_for_carers_allowance holds gainfully employed at the survey year: the carers the earnings limit alone keeps from the allowance. Scotland stays closed, since Carer Support Payment reads the same flag; policyengine-uk applies its earnings limit from 2.146.1, and opening Scotland is a follow-up (microcosm#1319)", + "eligibility": "persons whose care_hours reach policyengine-uk's gov.dwp.carers_allowance.min_hours, who report no Carer's Allowance, and whom is_gainfully_employed_for_carers_allowance holds gainfully employed at the survey year: the carers the earnings limit alone keeps from the allowance. In Scotland the flag is Carer Support Payment's, which policyengine-uk pays under its own earnings limit from 2.146.1", "kind": "assign_binary_from_rate", "output": "would_claim_carers_allowance", "rate_derivation": "the take-up contract's carers_allowance_newly_entitled rate, drawn flat over the eligible persons; would_claim = reported OR (eligible AND u < rate), so a reporter stays true and every other person false", @@ -288,7 +288,7 @@ "cgt_residential_split": { "artifacts": [ { - "dependency": "policyengine-uk>=2.147.2 via microcosm-build[uk]", + "dependency": "policyengine-uk>=2.151.0 via microcosm-build[uk]", "dependency_discipline": "deferred inside uk_cgt_policy_parameters; the base package never imports policyengine-uk at import time", "instant_rule": "raw dated parameter files evaluated at 1 June of the build period's tax year", "kind": "versioned_parameter_tree", @@ -1152,8 +1152,8 @@ "locator": "adult.tab", "role": "frs_table", "runtime_sha256_required": true, - "sha256": "8d1d7b4195081f9f24543e051484b563fcbc35044e8f93b39e4887a4d0a54500", - "size_bytes": 33996, + "sha256": "20d3343a77d6896cea4b786568b8fc5d869b5bf8594360d610ce9e85a63fd271", + "size_bytes": 35366, "table": "adult", "vintage": "synthetic-h2" }, @@ -1163,8 +1163,8 @@ "locator": "job.tab", "role": "frs_table", "runtime_sha256_required": true, - "sha256": "cc985ee1ded0af25fb629acd58c31a8ea4e103c0d3bb3b0c35cc52158af17c57", - "size_bytes": 7593, + "sha256": "2130e5cba40f5e006aa63d02d576eb21899e4de89fc6e59e46f399efba506ab7", + "size_bytes": 10385, "table": "job", "vintage": "synthetic-h2" }, @@ -1327,7 +1327,7 @@ "donor_filter": "raw ctreb != 1 and ctannual > 0", "kind": "impute_cell_means", "missing": "raw ctannual < 0 or NaN, or ctannual == 0 with ctpaid == 1 and ctreb != 1", - "value": "council tax before council tax reduction: CTANNUAL net of the Scottish water and sewerage charges ((CWATAMT1 + CSEWAMT1) x 365.25/7, at 0.65 where CTREB is 1; CWATAMTD where CWATAMT1 is not positive), plus CTREBAMT x 365.25/7 where CTREB is 1 and CTREBAMT > 0; a CTREB 1 household without a positive CTREBAMT takes the larger of its netted CTANNUAL and its cell mean" + "value": "council tax before council tax reduction: CTANNUAL net of the Scottish water and sewerage charges ((CWATAMT1 + CSEWAMT1) x 52, at 0.65 where CTREB is 1; CWATAMTD where CWATAMT1 is not positive), plus CTREBAMT x 52 where CTREB is 1 and CTREBAMT > 0; a CTREB 1 household without a positive CTREBAMT takes the larger of its netted CTANNUAL and its cell mean" } ], "outputs": [ @@ -1378,8 +1378,8 @@ "locator": "adult.tab", "role": "frs_table", "runtime_sha256_required": true, - "sha256": "8d1d7b4195081f9f24543e051484b563fcbc35044e8f93b39e4887a4d0a54500", - "size_bytes": 33996, + "sha256": "20d3343a77d6896cea4b786568b8fc5d869b5bf8594360d610ce9e85a63fd271", + "size_bytes": 35366, "table": "adult", "vintage": "synthetic-h2" }, @@ -1423,7 +1423,7 @@ "donor_filter": "participants with non-negative reported amounts", "kind": "impute_cell_means", "missing": "participants with sentinel negative reported amounts", - "value": "donor-mean fill, floored at zero, annualized with 365.25 / 7" + "value": "donor-mean fill, floored at zero, annualized at 52 weeks" } ], "outputs": [ @@ -1497,8 +1497,8 @@ "locator": "adult.tab", "role": "frs_table", "runtime_sha256_required": true, - "sha256": "8d1d7b4195081f9f24543e051484b563fcbc35044e8f93b39e4887a4d0a54500", - "size_bytes": 33996, + "sha256": "20d3343a77d6896cea4b786568b8fc5d869b5bf8594360d610ce9e85a63fd271", + "size_bytes": 35366, "table": "adult", "vintage": "synthetic-h2" } @@ -1540,8 +1540,8 @@ "locator": "adult.tab", "role": "frs_table", "runtime_sha256_required": true, - "sha256": "8d1d7b4195081f9f24543e051484b563fcbc35044e8f93b39e4887a4d0a54500", - "size_bytes": 33996, + "sha256": "20d3343a77d6896cea4b786568b8fc5d869b5bf8594360d610ce9e85a63fd271", + "size_bytes": 35366, "table": "adult", "vintage": "synthetic-h2" }, @@ -1562,8 +1562,8 @@ "locator": "job.tab", "role": "frs_table", "runtime_sha256_required": true, - "sha256": "cc985ee1ded0af25fb629acd58c31a8ea4e103c0d3bb3b0c35cc52158af17c57", - "size_bytes": 7593, + "sha256": "2130e5cba40f5e006aa63d02d576eb21899e4de89fc6e59e46f399efba506ab7", + "size_bytes": 10385, "table": "job", "vintage": "synthetic-h2" }, @@ -1598,7 +1598,7 @@ "notes": "Retains adjudicated raw-FRS HMRC leaves on the raw FRS spine, where person_id equals the raw sernum*1000+person identity, then draws employer pension contributions: each member of an employer scheme (PENPROV.STEMPPEN 1 to 4) with earnings takes an ASHE 2024 employer contribution rate for their scheme type and sector (Table P10 band shares, full pay, all industries; occupational schemes split into defined benefit and defined contribution by the sector's Table P2 job counts), uniform within the band (top band 20% to 30%), times pay. It replaces the incumbent's three times the employee contribution (microcosm#1069 c9, R6).", "operations": [ { - "annualization": "weekly raw FRS amounts * (365.25 / 7)", + "annualization": "weekly raw FRS amounts * 52", "fail_on_full_concept_alias": true, "fail_on_missing_retained_constituent": true, "forbid_proxy_substitution": [ @@ -1619,7 +1619,7 @@ "population": "uk_frs_raw_spine", "retained_full_constituents": { "hmrc_spi_incapacity_benefit_income": { - "formula": "sum(BENAMT where BENEFIT == 17) * (365.25 / 7)", + "formula": "sum(BENAMT where BENEFIT == 17) * 52", "observed_support": "structural zero in the audited 2023-24 FRS; retained so future vintages flow", "raw_sources": [ "BENEFITS.BENEFIT=17:BENAMT" @@ -1628,7 +1628,7 @@ "spi_concept": "INCPBEN" }, "hmrc_spi_pay": { - "formula": "max(0, ADULT.INEARNS) * (365.25 / 7)", + "formula": "max(0, ADULT.INEARNS) * 52", "raw_sources": [ "ADULT.INEARNS" ], @@ -1636,7 +1636,7 @@ "spi_concept": "PAY" }, "hmrc_spi_unemployment_benefit_income": { - "formula": "sum(BENAMT where BENEFIT in {14, 19}) * (365.25 / 7)", + "formula": "sum(BENAMT where BENEFIT in {14, 19}) * 52", "raw_sources": [ "BENEFITS.BENEFIT=14:BENAMT", "BENEFITS.BENEFIT=19:BENAMT" @@ -1647,7 +1647,7 @@ }, "retained_named_subsets": { "ossben_identifiable_subset": { - "formula": "sum(BENAMT where BENEFIT == 13 or (BENEFIT == 16 and VAR2 in {1, 3})) * (365.25 / 7)", + "formula": "sum(BENAMT where BENEFIT == 13 or (BENEFIT == 16 and VAR2 in {1, 3})) * 52", "raw_sources": [ "BENEFITS.BENEFIT=13:BENAMT", "BENEFITS.BENEFIT=16,VAR2 in {1,3}:BENAMT" @@ -1656,7 +1656,7 @@ "spi_concept": "OSSBEN" }, "srp_regular_code5": { - "formula": "sum(BENAMT where BENEFIT == 5) * (365.25 / 7)", + "formula": "sum(BENAMT where BENEFIT == 5) * 52", "raw_sources": [ "BENEFITS.BENEFIT=5:BENAMT" ], @@ -1758,15 +1758,15 @@ "locator": "adult.tab", "role": "frs_table", "runtime_sha256_required": true, - "sha256": "8d1d7b4195081f9f24543e051484b563fcbc35044e8f93b39e4887a4d0a54500", - "size_bytes": 33996, + "sha256": "20d3343a77d6896cea4b786568b8fc5d869b5bf8594360d610ce9e85a63fd271", + "size_bytes": 35366, "table": "adult", "vintage": "synthetic-h2" } ], "grain": "person", "nonnegative_outputs": [], - "notes": "The proxies are labels, not entitlement determinations. JSA hours compare against 16 * (365.25 / 7) on the E2 spine hours scale; state_pension_age is consumed but not persisted.", + "notes": "The proxies are labels, not entitlement determinations. JSA hours compare against 16 * 52 on the E2 spine hours scale; state_pension_age is consumed but not persisted.", "operations": [ { "delimiter": "\t", @@ -1869,8 +1869,8 @@ "locator": "adult.tab", "role": "frs_table", "runtime_sha256_required": true, - "sha256": "8d1d7b4195081f9f24543e051484b563fcbc35044e8f93b39e4887a4d0a54500", - "size_bytes": 33996, + "sha256": "20d3343a77d6896cea4b786568b8fc5d869b5bf8594360d610ce9e85a63fd271", + "size_bytes": 35366, "table": "adult", "vintage": "synthetic-h2" }, @@ -2100,8 +2100,8 @@ "locator": "adult.tab", "role": "frs_table", "runtime_sha256_required": true, - "sha256": "8d1d7b4195081f9f24543e051484b563fcbc35044e8f93b39e4887a4d0a54500", - "size_bytes": 33996, + "sha256": "20d3343a77d6896cea4b786568b8fc5d869b5bf8594360d610ce9e85a63fd271", + "size_bytes": 35366, "table": "adult", "vintage": "synthetic-h2" }, @@ -2177,8 +2177,8 @@ "locator": "job.tab", "role": "frs_table", "runtime_sha256_required": true, - "sha256": "cc985ee1ded0af25fb629acd58c31a8ea4e103c0d3bb3b0c35cc52158af17c57", - "size_bytes": 7593, + "sha256": "2130e5cba40f5e006aa63d02d576eb21899e4de89fc6e59e46f399efba506ab7", + "size_bytes": 10385, "table": "job", "vintage": "synthetic-h2" }, @@ -2256,6 +2256,7 @@ "dividend_income", "owned_company_income_share", "maintenance_income", + "spousal_maintenance_income", "miscellaneous_income", "student_loan_repayments", "statutory_sick_pay", @@ -2301,17 +2302,11 @@ }, { "kind": "map_coded_amounts", - "scope": "region, tenure, accommodation, council tax band, benefit-code amount mappings (Scotland's Adult and Child Disability Payment codes 117/118 and 121/122 into the PIP and DLA columns they replace; benefit recovery codes 69 and 70 unmapped); adult HOURTOT care-hours band code to weekly care_hours at the band's lower edge (codes 5, 6, 7 and 10 reach the 35-hour Carer's Allowance line); would_claim_carers_allowance from positive reported Carer's Allowance, the anchor carers_allowance_take_up opens to carers over the earnings limit (microcosm#1319)" + "scope": "region, tenure, accommodation, council tax band, benefit-code amount mappings (Scotland's Adult and Child Disability Payment codes 117/118 and 121/122 into the PIP and DLA columns they replace; benefit recovery codes 69 and 70 unmapped; code 6 into bsp_reported where a weekly amount is within 1% of a Bereavement Support Payment rate's weekly equivalent, into widowed_parents_allowance_reported where it is at or below Widowed Parent's Allowance's 2024-25 rate of GBP 148.40 a week, and into bsp_reported otherwise); adult HOURTOT care-hours band code to weekly care_hours at the band's lower edge (codes 5, 6, 7 and 10 reach the 35-hour Carer's Allowance line); would_claim_carers_allowance from positive reported Carer's Allowance, the anchor carers_allowance_take_up opens to carers over the earnings limit (microcosm#1319)" }, { "kind": "annualize_periodic_amounts", - "weeks_in_year": 52.17857142857143, - "weeks_in_year_exceptions": { - "state_pension_reported": { - "reason": "The State Pension is paid at weekly rates, and policyengine-uk reads state_pension_reported back to a weekly amount at 52 weeks a year before comparing it with the full rate, so at 365.25 / 7 a full-rate pensioner would read 0.34% above the full rate and the excess would become a protected payment. An exception for the State Pension alone to microcosm#1095's weekly amounts (Mar\u00eda's ruling of 2026-10-20, microcosm#1278).", - "weeks_in_year": 52 - } - } + "weeks_in_year": 52 }, { "assignment_unit": "benefit unit", @@ -2362,6 +2357,7 @@ "property_income", "reports_rent_from_other_property", "maintenance_income", + "spousal_maintenance_income", "miscellaneous_income", "private_transfer_income", "lump_sum_income", @@ -2384,6 +2380,7 @@ "pension_contributions_via_salary_sacrifice", "salary_sacrifice_reported", "salary_sacrifice_asked", + "frs_bonus_amount", "child_benefit_reported", "income_support_reported", "housing_benefit_reported", @@ -2412,6 +2409,7 @@ "esa_includes_support_component", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", "benunit_id", "frs_benunit_capital", "is_married", @@ -2448,7 +2446,7 @@ "maximum_extended_childcare_hours_usage", "max_free_entitlement_hours_used" ], - "notes": "Identity-keyed seed 0 streams replace the incumbent sequential take-up seed 100; salts are output variable names. Reported positive receipt anchors are transient and consumed only. The Universal Credit draw's population is the benefit units with a UC claimant or partner (is_uc_claimant) aged 18 or over and under Pension Credit qualifying age (66 for everyone who can reach it in this release), the age and role conditions of policyengine-uk 2.147.2's is_uc_eligible; the engine lockstep test pins it and names the three engine cases not mirrored (16- and 17-year-old claimants under the UC Regs 2013 reg 8 exceptions, mixed-age couples on the Pension Credit route, and from 2.128.0 pension-age families moved onto Universal Credit when their legacy benefit closes, SI 2014/1230 reg 60A). So the contract rate is a share of those units, an anchor outside them stays true, and any other unit is never drawn; a unit with no claimant or partner of that age keeps its reported Housing Benefit, which a claim it cannot make no longer zeroes (#882, microcosm#867, microcosm#1095). The universal childcare flag is nested under the working-parent one. A unit that claims the extended hours claims the universal hours, and any other unit claims them at the contract's universal_childcare rate, the rate conditional on not claiming the extended hours; the extended draw is unchanged. childcare_copy_take_up later re-draws the childcare flags and hours of the support and CGT copies on their own benefit units. A child of DfE age 0 or 1 (its age on 31 December of the fit's model year, the age DfE counts by) in a unit that claims the working-parent hours uses them at its age's contract rate, extended_childcare_age_0_usage or extended_childcare_age_1_usage (DfE registers far fewer of the youngest eligible children than of those aged 2 to 4, and fewer at 9 to 11 months than at age 1); a child that does not gets max_free_entitlement_hours_used 0, so the engine funds it no hours, and every other person keeps the engine's default of 30.", + "notes": "Identity-keyed seed 0 streams replace the incumbent sequential take-up seed 100; salts are output variable names. Reported positive receipt anchors are transient and consumed only. The Universal Credit draw's population is the benefit units with a UC claimant or partner (is_uc_claimant) aged 18 or over and under Pension Credit qualifying age (66 for everyone who can reach it in this release), the age and role conditions of policyengine-uk 2.151.0's is_uc_eligible; the engine lockstep test pins it and names the three engine cases not mirrored (16- and 17-year-old claimants under the UC Regs 2013 reg 8 exceptions, mixed-age couples on the Pension Credit route, and from 2.128.0 pension-age families moved onto Universal Credit when their legacy benefit closes, SI 2014/1230 reg 60A). So the contract rate is a share of those units, an anchor outside them stays true, and any other unit is never drawn; a unit with no claimant or partner of that age keeps its reported Housing Benefit, which a claim it cannot make no longer zeroes (#882, microcosm#867, microcosm#1095). The universal childcare flag is nested under the working-parent one. A unit that claims the extended hours claims the universal hours, and any other unit claims them at the contract's universal_childcare rate, the rate conditional on not claiming the extended hours; the extended draw is unchanged. childcare_copy_take_up later re-draws the childcare flags and hours of the support and CGT copies on their own benefit units. A child of DfE age 0 or 1 (its age on 31 December of the fit's model year, the age DfE counts by) in a unit that claims the working-parent hours uses them at its age's contract rate, extended_childcare_age_0_usage or extended_childcare_age_1_usage (DfE registers far fewer of the youngest eligible children than of those aged 2 to 4, and fewer at 9 to 11 months than at age 1); a child that does not gets max_free_entitlement_hours_used 0, so the engine funds it no hours, and every other person keeps the engine's default of 30.", "operations": [ { "aggregates": { @@ -2629,7 +2627,7 @@ "hmrc_cgt_asset_type_spine": { "artifacts": [ { - "dependency": "policyengine-uk>=2.147.2 via microcosm-build[uk]", + "dependency": "policyengine-uk>=2.151.0 via microcosm-build[uk]", "dependency_discipline": "deferred inside uk_cgt_policy_parameters and uk_cgt_badr_parameters; the base package never imports policyengine-uk at import time", "instant_rule": "raw dated parameter files evaluated at 1 June of the build period's tax year", "kind": "versioned_parameter_tree", @@ -3433,6 +3431,7 @@ "afcs_reported", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", "winter_fuel_allowance_reported", "council_tax_benefit_reported", "jsa_contrib_reported", @@ -3818,6 +3817,7 @@ "afcs_reported", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", "winter_fuel_allowance_reported", "council_tax_benefit_reported", "jsa_contrib_reported", @@ -3962,10 +3962,12 @@ "domestic_energy_consumption", "electricity_consumption", "gas_consumption", + "liquid_fuel_consumption", + "solid_fuel_consumption", "has_fuel_consumption", "uses_energy_prepayment_meter" ], - "notes": "Ports the incumbent LCFS consumption QRF, including NEED energy raking, with adjudicated weighted fits and an identity-keyed seed-0 fuel flag. The vehicle count is a numeric QRF predictor on both sides (LCFS a124 on the donor, the was_wealth draw of WAS vcarnr8 on the recipient, both clipped to 0-5), which retires the incumbent's WAS-to-LCFS has-fuel bridge (microcosm#890 A). The recipient fuel flag draws each of a household's vehicles as zero-emission at the battery-electric and fuel-cell share of the vendored DfT VEH1103 licensed-car stock (2024, Great Britain; plug-in hybrids count as fuel buyers), replacing the hand-copied NTS share (microcosm#890 E2): a household with vehicles buys fuel unless every one of them is zero-emission, so it is flagged at one minus that share raised to its vehicle count, and a one-vehicle household keeps the draw it had when the whole household was drawn at once (microcosm#1278; before, a household with several vehicles was all one or the other). The frame holds no fuel type, so the draw, keyed on the household identity, is what makes a vehicle-owning household a fuel buyer: it is random with respect to income and every other characteristic. With the redraw of microcosm#1113 every flagged household buys fuel, so this flag alone sets fuel incidence; who holds the zero-emission cars by income is a known residual. The household input uses_energy_prepayment_meter, which policyengine-uk reads for the July 2023 to March 2024 Energy Price Guarantee prepayment discount (PolicyEngine/policyengine-uk#2098, from 2.123.3), is drawn by the declared impute_prepayment_meter step (microcosm#1110): the donor prepays when it last put money on an electricity, gas or combined key or meter (b1751, b1701, b233, which the LCF asks only of prepayment-meter households) or its diary records a slot-meter payment (c45114, c45214), so electricity-only prepayment counts and a household with no meter payment, including one that did not answer, does not; a weighted regime-gated QRF on the chain's predictors fits that flag and each recipient draws it at uniforms keyed on its household id, which moves no other draw. The release exports it: policyengine-uk reads it from 2.123.3 and an older engine, Microcosm's locked one among them, ignores a column it does not know; the incumbent does not carry it until uk-data#539, so it is a reviewed extra column of the export surface. The frame flags about 3.0 million Great Britain households (10.5 %) at prior weights, against the around three million prepayment households the government counted when the discount began in July 2023 (a different reference period, households in both). Energy support clipping is exempt because NEED raking governs those columns. Bus fares are clipped to donor support before the pricing step (Mar\u00eda's rulings 2026-09-15 and 2026-09-17), which bounds the region no area prices (Wales keeps the chain's raw draw) while the priced regions move beyond donor support afterwards; for that reason the column carries no committed support bound for the terminal gate. Domestic energy is raked in kWh to the NEED 2024 shape at the DESNZ level and priced at the average prices paid (microcosm#890 F, chronicle#270), where both NEED rakes take their mean-kWh margins from the vendored NEED 2024 tables (England and Wales by income band, tenure, property type and region; Scotland by income band, tenure and property type with the all-dwellings mean as its region margin; Northern Ireland untouched), the declared price_domestic_energy step converts spend to kWh and back at each household's QEP price region through the committed crosswalk using the calendar-2024 average variable unit cost and fixed cost across payment methods, standard metering, including VAT (Northern Ireland gas at the UK average because QEP publishes no Northern Ireland gas row), a gas fixed cost only for connected households, the gas connection imposed on the recipient frame at the published share of each region (DESNZ subnational gas meters over electricity meters, 2024) by disconnecting gas-positive households in an identity-keyed uniform order, skipping a household whose weight would overshoot the published share (Northern Ireland has no subnational row and keeps the positive-gas rule), and, where the draw leaves a region below its share, by the declared connect_rule (microcosm#1164): two weighted fits on the chain's predictors give each zero-gas household the probability that a donor like it pays for gas (a gradient-boosted classifier of the donor's gas payers) and the gas such a donor pays (a regime-gated QRF of the payers' gas spend, at quantiles keyed on the household id), and the region's zero-gas households are connected in an identity-keyed order drawn in proportion to that probability, by the same weight-fitting walk, until the share is met. The labelled energy split leaves about 80 % of donors paying for gas against the about 85 % of homes DESNZ counts gas meters for (the derivation it replaced gave gas to 98 %), so without the connect leg nine of the eleven Great Britain regions fell short of their share, and after the four-margin NEED rake one factor per fuel scales the kWh so the prior-weighted frame total equals the DESNZ Energy Trends domestic consumption at actual temperature summed over the four quarters of calendar 2024; NEED gas means are per gas-metered household, so the gas kWh margins are raked over connected households only while electricity is raked over every household, and the energy_rake gate recomputes every NEED mean, the DESNZ level and the connection shares from the vendored rows. After the level, no household is left above the domestic meter definitions behind the DESNZ total (NEED Annex B: gas meters under 73,200 kWh a year, electricity meters under 50,000 kWh on profile classes 1 and 2; Mar\u00eda's ruling of 2026-10-12 on microcosm#1207's extreme energy values): the declared household_kwh_ceiling caps a household there, the households below it in the capped households' own NEED cells are re-raked to those cells' levelled means, and a proportional step restores the DESNZ total (microcosm#1164); the receipt counts the households capped and the share of the total they gave up, and the energy_rake gate checks both. Mobile homes have no NEED property-type row, so the rake takes them to the all-dwellings mean, the incumbent's translation; where every mobile home of a NEED geography draws a spend at or below the standing charge, that cell has no kWh for the rake to scale, and the declared zero_kwh_cells_at_need_mean starts it at its NEED mean before the first sweep (microcosm#1240). The receipt lists the cells it started, and the energy_rake gate fails on a started cell the stage does not declare and on any other cell with a zero mean. Both rakes band households on gross income, NEED's concept: the donor on LCFS p344p, cash income before tax, National Insurance, council tax and pension contributions, and the recipient on the same concept, its HBAI net income with the deductions policyengine-uk takes to reach it added back (council tax and domestic rates, income tax, National Insurance, student loan repayments, employee and personal pension contributions, maintenance and child payments, LVT), which the stage materializes for that band alone (microcosm#1164). Before it the recipient fell back to its HBAI net income, which put households in too low a band; the engine's household_gross_income would put them in too high a one, since it adds capital gains and the in-kind NHS, education and transport spending to cash income. The disconnection walk's seed-0 uniform order makes every group of households (dwelling type, income band, support channel) lose the same expected share of its drawn connected mass, so only the level of the drawn connection moves; the smallest-drawn-gas-first order it replaces piled the disconnections onto low-draw flats once the SPI support households drew gas from their own incomes, and NEED's Scottish property-type means then implied a level 2.6 % above the Scottish all-dwellings mean, a margin conflict the rake could not close. Bus fares are priced from journeys (microcosm#930), where the nts_bus_travel stage imputes each person's annual bus-in-London and other-local-bus trips and their concessionary eligibility, and the declared price_bus_journeys step sets bus_fare_spending as the sum over the household's non-eligible persons of trips times boardings per resident trip (the published BUS01 journeys over the published NTS0705a trips per resident times the ONS population) times the yield per fare-paying boarding (BUS05ai receipts over journeys less concessionary journeys), per area; bus-in-London trips take the London area's price for every resident, other-local-bus trips the price of the residence area (England outside London; Scotland and Northern Ireland from their own receipts and journeys with England's trip rate as the declared proxy); Wales is unpriced and keeps the raw draw. The chain still draws bus_fare_spending so later targets condition on the same raw draw; the emitted column is the priced value. The receipt records every factor, the frame-implied boardings beside the published ones and the frame's eligible trip share beside the publisher's concessionary boarding share, so the prior-weight fit of the bound receipts targets is read as a composition check, never a level the stage set; the #890 incidence draw and fare rake are retired. The 2024-25 diary (UKDS SN 9603, 2nd edition, whose household tab carries the annual weight as cal_weight_annual, the name weighta had; microcosm#1164) is moved to the base year by the declared uprate_donor_columns step (microcosm#890). Consumption columns and bus fares take the engine's CPI index from the April-to-March diary year, placed on the calendar-year index at three quarters of 2024 and one of 2025, back a quarter to calendar 2024 (microcosm#1113; the diary sits a quarter past it, so the factor is below one; the fare factor survives only where no fare cell levels the column, i.e. Wales). Income predictors take a factor of one: the diary year is the FRS 2024-25 year they are matched against. Petrol and diesel take the DESNZ pump-price times HMRC litres per head outturn from the vendored road_fuel_anchors.json, which sets only their donor distribution because the level step follows; the energy columns are exempt because the NEED 2024 shape at the DESNZ level and the QEP average prices paid set their level. The household adult and child counts (LCFS G018 and G019, the survey's age-18 split) predict on both sides; the recipient counts its members by age, not through the engine's is_adult and is_child flags, which policyengine-uk#1896 deprecates (uk-data#486, microcosm#1095). Road fuel incidence and level are set by two declared steps (microcosm#1113). The two-week diary leaves about a third of car-owning donors with no fuel purchase, which the chain reproduces among the households the fuel flag marks as fuel buyers, so the redraw_zero_road_fuel step redraws a flagged household that drew zero from the donor's distribution among households with positive road fuel, on the chain's predictors: a weighted regime-gated QRF draws the total, positive by construction, then the petrol share of it, at quantiles keyed on the household id; positive draws are kept. Then the level_road_fuel step, after the fuel flag has zeroed the households without a fuel car, scales petrol and diesel so their prior-weighted total equals ONS Consumer Trends household spending on COICOP 07.2.2 for calendar 2024 (the year of the DESNZ pump prices the donor uprating uses) less the donor's own other-fuels share of 07.2.2 (c72213), keeping the drawn mix. The diary's 07.2.2 has three lines (c72211 petrol, c72212 diesel and c72213, the other motor fuels and lubricants) and none for vehicle electricity. The LCFS diary records about a quarter less road fuel than ONS, and binding the OBR cars receipts had closed that gap by moving weight onto fuel-buying households; petrol and diesel therefore carry no committed support bound, like the other levelled columns. The totals that contain levelled columns are written back around them by the declared recompose_from_remainder step (microcosm#1113): each keeps its own chain draw less the chain's draws of the parts the stage re-levels, kept before any step touches them and floored at zero where the parts outgrow the total, and adds the levelled parts back, so housing_water_and_electricity_consumption is its draw less the drawn electricity and gas plus the levelled electricity and gas, and transport_consumption its draw less the drawn petrol, diesel and bus fares plus the levelled petrol and diesel and the priced bus fares. The chain draws each part after, and conditional on, its total, so the remainder is the chain's own split; a remainder drawn as a chain target of its own over-drew the vehicle-purchase tail of transport, 10 to 13 percent above the donor in-sample. The chain's domestic-energy target is the electricity and gas the stage derives from the diary's fuel, light and power (p537) by its labelled parts, from the LCF User Guide's derived-variable labels and P537 definition (microcosm#1164): each fuel's last account payment less its rebate (b489 electricity, b490 gas, read as the tab carries them; the stage refuses a donor where b489 equals b175 less b178, or b490 equals b170 less b173, to the penny for under 95 percent of that fuel's account payers, which pins the labels and the rebate's sign), its prepayment key or meter payment (b1751, b1701), its component of a combined utilities bill (b227 electricity, b226 gas) and of a combined key or meter payment (b2332, b2331), and the diary's second-dwelling account and slot-meter lines (c45112 and c45114, c45212 and c45214); what a combined payment leaves unsplit (the combined bill b231 less its rebate b174, and the combined key or meter payment b233, each less its parts) goes by the household's own electricity share where it pays for both fuels, and otherwise by the donor's mean share of the households that do, since a combined payment means the household pays for both; a donor with no such household fails. The diary's other fuels (central-heating oil b017 and c45312, bottled gas b018 and c45222, coal and coke c45411, wood and peat c45412, hot water, steam and ice c45511) are neither, so they stay in the housing remainder, and the donor_energy_split receipt records the split against p537: what reading refunds as zero adds, what the unclipped parts differ from p537 by, the weighted share of donors whose unclipped parts differ from their p537, and the account identity shares. The derivation it replaces read b226 as electricity by direct debit and b489 and b490 as prepayment payments, where the labels make them the gas component of a combined bill and the electricity and gas account payments less rebates. No column carries the other fuels; the receipt records their published ONS 04.5.3 and 04.5.4 spend. Each total is then held to the donor's realised maximum of that total (maximum_total: donor_support, the support every drawn column is clipped to; microcosm#1164), never below its parts, the excess coming out of its remainder: a remainder near the top of the diary's range plus levelled parts larger than the drawn ones would otherwise leave it. The two totals keep their committed support bounds, which the terminal support gate applies to the emitted frame; the recomposed_totals gate checks the declaration and the receipt, whose rows held at the maximum and weighted mass taken enter its identities. Every household spend column is at calendar-2024 prices as households paid them, the H5's year that policyengine-uk projects from and the calibration uprates to the calendar-2025 window (microcosm#1113): the diary columns by the CPI uprating to 2024, road fuel at ONS 07.2.2 for 2024, energy at DESNZ volume and QEP prices for 2024, and bus fares at each area's fiscal-year yield re-priced to 2024 by its fares index (the DfT local bus fares index by quarter for London and England outside London, Scotland's calendar-year index; Northern Ireland, which publishes no fares index, from its own yields of the two fiscal years 2024 overlaps, weighted three months and nine (microcosm#1207), in place of England's index, which carries the January 2025 rise in the English fare cap Northern Ireland did not have); the consumption_basis gate holds every level-setting step to that year. policyengine-uk applies the fiscal 2024-25 rules to model year 2024 (it samples each parameter at 30 April), so every levelled column sits about a quarter before the midpoint of the policy year it is taxed in; the calibration binds calendar-year facts as published and fiscal-year facts at the calendar window (Mar\u00eda's rule of 2026-09-22). The stage receipt also reports, for each of the twelve COICOP divisions, the prior-weighted frame total against ONS Consumer Trends for the same calendar year less the classes a household diary does not record (02.3 narcotics, 04.2 owner-occupiers' imputed rent and 12.6.1 FISIM), on ONS's domestic concept, and the twelve together against the national concept as well; it is report-only (microcosm#1113). The report-only litres audit compares each fuel's frame litres with HMRC's clearances of that fuel scaled by the cars share of its road use, from the vendored DESNZ sub-national road transport fuel consumption by vehicle type and fuel (PolicyEngine/chronicle#322); the OBR cars share of fuel duty receipts, uniform across fuels, stays beside the total.", + "notes": "Ports the incumbent LCFS consumption QRF, including NEED energy raking, with adjudicated weighted fits and an identity-keyed seed-0 fuel flag. The vehicle count is a numeric QRF predictor on both sides (LCFS a124 on the donor, the was_wealth draw of WAS vcarnr8 on the recipient, both clipped to 0-5), which retires the incumbent's WAS-to-LCFS has-fuel bridge (microcosm#890 A). The recipient fuel flag draws each of a household's vehicles as zero-emission at the battery-electric and fuel-cell share of the vendored DfT VEH1103 licensed-car stock (2024, Great Britain; plug-in hybrids count as fuel buyers), replacing the hand-copied NTS share (microcosm#890 E2): a household with vehicles buys fuel unless every one of them is zero-emission, so it is flagged at one minus that share raised to its vehicle count, and a one-vehicle household keeps the draw it had when the whole household was drawn at once (microcosm#1278; before, a household with several vehicles was all one or the other). The frame holds no fuel type, so the draw, keyed on the household identity, is what makes a vehicle-owning household a fuel buyer: it is random with respect to income and every other characteristic. With the redraw of microcosm#1113 every flagged household buys fuel, so this flag alone sets fuel incidence; who holds the zero-emission cars by income is a known residual. The household input uses_energy_prepayment_meter, which policyengine-uk reads for the July 2023 to March 2024 Energy Price Guarantee prepayment discount (PolicyEngine/policyengine-uk#2098, from 2.123.3), is drawn by the declared impute_prepayment_meter step (microcosm#1110): the donor prepays when it last put money on an electricity, gas or combined key or meter (b1751, b1701, b233, which the LCF asks only of prepayment-meter households) or its diary records a slot-meter payment (c45114, c45214), so electricity-only prepayment counts and a household with no meter payment, including one that did not answer, does not; a weighted regime-gated QRF on the chain's predictors fits that flag and each recipient draws it at uniforms keyed on its household id, which moves no other draw. The release exports it: policyengine-uk reads it from 2.123.3 and an older engine, Microcosm's locked one among them, ignores a column it does not know; the incumbent does not carry it until uk-data#539, so it is a reviewed extra column of the export surface. The frame flags about 3.0 million Great Britain households (10.5 %) at prior weights, against the around three million prepayment households the government counted when the discount began in July 2023 (a different reference period, households in both). Energy support clipping is exempt because NEED raking governs those columns. Bus fares are clipped to donor support before the pricing step (Mar\u00eda's rulings 2026-09-15 and 2026-09-17), which bounds the region no area prices (Wales keeps the chain's raw draw) while the priced regions move beyond donor support afterwards; for that reason the column carries no committed support bound for the terminal gate. Domestic energy is raked in kWh to the NEED 2024 shape at the DESNZ level and priced at the average prices paid (microcosm#890 F, chronicle#270), where both NEED rakes take their mean-kWh margins from the vendored NEED 2024 tables (England and Wales by income band, tenure, property type and region; Scotland by income band, tenure and property type with the all-dwellings mean as its region margin; Northern Ireland untouched), the declared price_domestic_energy step converts spend to kWh and back at each household's QEP price region through the committed crosswalk using the calendar-2024 average variable unit cost and fixed cost across payment methods, standard metering, including VAT (Northern Ireland gas at the UK average because QEP publishes no Northern Ireland gas row), a gas fixed cost only for connected households, the gas connection imposed on the recipient frame at the published share of each region (DESNZ subnational gas meters over electricity meters, 2024) by disconnecting gas-positive households in an identity-keyed uniform order, skipping a household whose weight would overshoot the published share (Northern Ireland has no subnational row and keeps the positive-gas rule), and, where the draw leaves a region below its share, by the declared connect_rule (microcosm#1164): two weighted fits on the chain's predictors give each zero-gas household the probability that a donor like it pays for gas (a gradient-boosted classifier of the donor's gas payers) and the gas such a donor pays (a regime-gated QRF of the payers' gas spend, at quantiles keyed on the household id), and the region's zero-gas households are connected in an identity-keyed order drawn in proportion to that probability, by the same weight-fitting walk, until the share is met. The labelled energy split leaves about 80 % of donors paying for gas against the about 85 % of homes DESNZ counts gas meters for (the derivation it replaced gave gas to 98 %), so without the connect leg nine of the eleven Great Britain regions fell short of their share, and after the four-margin NEED rake one factor per fuel scales the kWh so the prior-weighted frame total equals the DESNZ Energy Trends domestic consumption at actual temperature summed over the four quarters of calendar 2024; NEED gas means are per gas-metered household, so the gas kWh margins are raked over connected households only while electricity is raked over every household, and the energy_rake gate recomputes every NEED mean, the DESNZ level and the connection shares from the vendored rows. After the level, no household is left above the domestic meter definitions behind the DESNZ total (NEED Annex B: gas meters under 73,200 kWh a year, electricity meters under 50,000 kWh on profile classes 1 and 2; Mar\u00eda's ruling of 2026-10-12 on microcosm#1207's extreme energy values): the declared household_kwh_ceiling caps a household there, the households below it in the capped households' own NEED cells are re-raked to those cells' levelled means, and a proportional step restores the DESNZ total (microcosm#1164); the receipt counts the households capped and the share of the total they gave up, and the energy_rake gate checks both. Mobile homes have no NEED property-type row, so the rake takes them to the all-dwellings mean, the incumbent's translation; where every mobile home of a NEED geography draws a spend at or below the standing charge, that cell has no kWh for the rake to scale, and the declared zero_kwh_cells_at_need_mean starts it at its NEED mean before the first sweep (microcosm#1240). The receipt lists the cells it started, and the energy_rake gate fails on a started cell the stage does not declare and on any other cell with a zero mean. Both rakes band households on gross income, NEED's concept: the donor on LCFS p344p, cash income before tax, National Insurance, council tax and pension contributions, and the recipient on the same concept, its HBAI net income with the deductions policyengine-uk takes to reach it added back (council tax and domestic rates, income tax, National Insurance, student loan repayments, employee and personal pension contributions, maintenance and child payments, LVT), which the stage materializes for that band alone (microcosm#1164). Before it the recipient fell back to its HBAI net income, which put households in too low a band; the engine's household_gross_income would put them in too high a one, since it adds capital gains and the in-kind NHS, education and transport spending to cash income. The disconnection walk's seed-0 uniform order makes every group of households (dwelling type, income band, support channel) lose the same expected share of its drawn connected mass, so only the level of the drawn connection moves; the smallest-drawn-gas-first order it replaces piled the disconnections onto low-draw flats once the SPI support households drew gas from their own incomes, and NEED's Scottish property-type means then implied a level 2.6 % above the Scottish all-dwellings mean, a margin conflict the rake could not close. Bus fares are priced from journeys (microcosm#930), where the nts_bus_travel stage imputes each person's annual bus-in-London and other-local-bus trips and their concessionary eligibility, and the declared price_bus_journeys step sets bus_fare_spending as the sum over the household's non-eligible persons of trips times boardings per resident trip (the published BUS01 journeys over the published NTS0705a trips per resident times the ONS population) times the yield per fare-paying boarding (BUS05ai receipts over journeys less concessionary journeys), per area; bus-in-London trips take the London area's price for every resident, other-local-bus trips the price of the residence area (England outside London; Scotland and Northern Ireland from their own receipts and journeys with England's trip rate as the declared proxy); Wales is unpriced and keeps the raw draw. The chain still draws bus_fare_spending so later targets condition on the same raw draw; the emitted column is the priced value. The receipt records every factor, the frame-implied boardings beside the published ones and the frame's eligible trip share beside the publisher's concessionary boarding share, so the prior-weight fit of the bound receipts targets is read as a composition check, never a level the stage set; the #890 incidence draw and fare rake are retired. The 2024-25 diary (UKDS SN 9603, 2nd edition, whose household tab carries the annual weight as cal_weight_annual, the name weighta had; microcosm#1164) is moved to the base year by the declared uprate_donor_columns step (microcosm#890). Consumption columns and bus fares take the engine's CPI index from the April-to-March diary year, placed on the calendar-year index at three quarters of 2024 and one of 2025, back a quarter to calendar 2024 (microcosm#1113; the diary sits a quarter past it, so the factor is below one; the fare factor survives only where no fare cell levels the column, i.e. Wales). Income predictors take a factor of one: the diary year is the FRS 2024-25 year they are matched against. Petrol and diesel take the DESNZ pump-price times HMRC litres per head outturn from the vendored road_fuel_anchors.json, which sets only their donor distribution because the level step follows; the energy columns are exempt because the NEED 2024 shape at the DESNZ level and the QEP average prices paid set their level. The household adult and child counts (LCFS G018 and G019, the survey's age-18 split) predict on both sides; the recipient counts its members by age, not through the engine's is_adult and is_child flags, which policyengine-uk#1896 deprecates (uk-data#486, microcosm#1095). Road fuel incidence and level are set by two declared steps (microcosm#1113). The two-week diary leaves about a third of car-owning donors with no fuel purchase, which the chain reproduces among the households the fuel flag marks as fuel buyers, so the redraw_zero_road_fuel step redraws a flagged household that drew zero from the donor's distribution among households with positive road fuel, on the chain's predictors: a weighted regime-gated QRF draws the total, positive by construction, then the petrol share of it, at quantiles keyed on the household id; positive draws are kept. Then the level_road_fuel step, after the fuel flag has zeroed the households without a fuel car, scales petrol and diesel so their prior-weighted total equals ONS Consumer Trends household spending on COICOP 07.2.2 for calendar 2024 (the year of the DESNZ pump prices the donor uprating uses) less the donor's own other-fuels share of 07.2.2 (c72213), keeping the drawn mix. The diary's 07.2.2 has three lines (c72211 petrol, c72212 diesel and c72213, the other motor fuels and lubricants) and none for vehicle electricity. The LCFS diary records about a quarter less road fuel than ONS, and binding the OBR cars receipts had closed that gap by moving weight onto fuel-buying households; petrol and diesel therefore carry no committed support bound, like the other levelled columns. The totals that contain levelled columns are written back around them by the declared recompose_from_remainder step (microcosm#1113): each keeps its own chain draw less the chain's draws of the parts the stage re-levels, kept before any step touches them and floored at zero where the parts outgrow the total, and adds the levelled parts back, so housing_water_and_electricity_consumption is its draw less the drawn electricity and gas plus the levelled electricity and gas, and transport_consumption its draw less the drawn petrol, diesel and bus fares plus the levelled petrol and diesel and the priced bus fares. The chain draws each part after, and conditional on, its total, so the remainder is the chain's own split; a remainder drawn as a chain target of its own over-drew the vehicle-purchase tail of transport, 10 to 13 percent above the donor in-sample. The chain's domestic-energy target is the electricity and gas the stage derives from the diary's fuel, light and power (p537) by its labelled parts, from the LCF User Guide's derived-variable labels and P537 definition (microcosm#1164): each fuel's last account payment less its rebate (b489 electricity, b490 gas, read as the tab carries them; the stage refuses a donor where b489 equals b175 less b178, or b490 equals b170 less b173, to the penny for under 95 percent of that fuel's account payers, which pins the labels and the rebate's sign), its prepayment key or meter payment (b1751, b1701), its component of a combined utilities bill (b227 electricity, b226 gas) and of a combined key or meter payment (b2332, b2331), and the diary's second-dwelling account and slot-meter lines (c45112 and c45114, c45212 and c45214); what a combined payment leaves unsplit (the combined bill b231 less its rebate b174, and the combined key or meter payment b233, each less its parts) goes by the household's own electricity share where it pays for both fuels, and otherwise by the donor's mean share of the households that do, since a combined payment means the household pays for both; a donor with no such household fails. The diary's other fuels (central-heating oil b017 and c45312, bottled gas b018 and c45222, coal and coke c45411, wood and peat c45412, hot water, steam and ice c45511) are neither, and the donor_energy_split receipt records the split against p537: what reading refunds as zero adds, what the unclipped parts differ from p537 by, the weighted share of donors whose unclipped parts differ from their p537, and the account identity shares. The derivation it replaces read b226 as electricity by direct debit and b489 and b490 as prepayment payments, where the labels make them the gas component of a combined bill and the electricity and gas account payments less rebates. The liquid fuels (central-heating oil and paraffin with bottled gas, LPG with liquid) and the solid fuels (coal, coke, wood and peat) are drawn as liquid_fuel_consumption and solid_fuel_consumption, the inputs policyengine-uk 2.149.0 reads (pe-uk#2572; Mar\u00eda's ruling of 2026-10-22), last in the chain so that every earlier draw is the chain's own, uprated to calendar-2024 prices as every diary spend column is; the housing total nets their draws and adds them back unchanged, so it always holds them, and hot water, steam and ice stays in its remainder. The receipt records the published ONS 04.5.3 and 04.5.4 spend beside each fuel's donor total at diary prices and the frame's draw (published_fuels). Before the hold, each COICOP division's drawn spend per household (a recomposed total's remainder, any other division's whole draw) is set against the donor's mean of the same spend (for housing and transport, the donor's total less the same parts, since the levelled parts keep their published levels and are no over-draw); a division above the divisions' shared ratio, measured once before any levelling, comes down to it (Mar\u00eda's rulings of 2026-10-23 and 2026-10-24, microcosm#1278; Vahid's review of microcosm#1383, item 9); the receipt records each division's ratio and factor and the shared ratio (division_levelling) and each recomposed total's levelling_factor. Each total is then held to the donor's realised maximum of that total (maximum_total: donor_support, the support every drawn column is clipped to; microcosm#1164), never below its parts, the excess coming out of its remainder: a remainder near the top of the diary's range plus levelled parts larger than the drawn ones would otherwise leave it. The two totals keep their committed support bounds, which the terminal support gate applies to the emitted frame; the recomposed_totals gate checks the declaration and the receipt, whose rows held at the maximum and weighted mass taken enter its identities. Every household spend column is at calendar-2024 prices as households paid them, the H5's year that policyengine-uk projects from and the calibration uprates to the calendar-2025 window (microcosm#1113): the diary columns by the CPI uprating to 2024, road fuel at ONS 07.2.2 for 2024, energy at DESNZ volume and QEP prices for 2024, and bus fares at each area's fiscal-year yield re-priced to 2024 by its fares index (the DfT local bus fares index by quarter for London and England outside London, Scotland's calendar-year index; Northern Ireland, which publishes no fares index, from its own yields of the two fiscal years 2024 overlaps, weighted three months and nine (microcosm#1207), in place of England's index, which carries the January 2025 rise in the English fare cap Northern Ireland did not have); the consumption_basis gate holds every level-setting step to that year. policyengine-uk applies the fiscal 2024-25 rules to model year 2024 (it samples each parameter at 30 April), so every levelled column sits about a quarter before the midpoint of the policy year it is taxed in; the calibration binds calendar-year facts as published and fiscal-year facts at the calendar window (Mar\u00eda's rule of 2026-09-22). The stage receipt also reports, for each of the twelve COICOP divisions, the prior-weighted frame total against ONS Consumer Trends for the same calendar year less the classes a household diary does not record (02.3 narcotics, 04.2 owner-occupiers' imputed rent and 12.6.1 FISIM), on ONS's domestic concept, and the twelve together against the national concept as well; it is report-only (microcosm#1113). The report-only litres audit compares each fuel's frame litres with HMRC's clearances of that fuel scaled by the cars share of its road use, from the vendored DESNZ sub-national road transport fuel consumption by vehicle type and fuel (PolicyEngine/chronicle#322); the OBR cars share of fuel duty receipts, uniform across fuels, stays beside the total. The liquid fuels hold bottled gas (b018, c45222), which COICOP puts under 04.5.2 (gas) and ONS's 04.5.3 leaves out, so the receipt also gives the donor's liquid fuels without it; neither heating-fuel column is levelled to ONS: the donor's diary totals are about twice ONS's, and the frame's draws reach neither those nor ONS's, so a costing on either needs levelling to ONS first (Vahid's review of microcosm#1383, item 8).", "operations": [ { "annualization_weeks": 52.17857142857143, @@ -4055,6 +4057,11 @@ "from_window": "fiscal_year", "parameter_path": "gov.economic_assumptions.indices.obr.consumer_price_index" }, + "liquid_fuel_consumption": { + "basis": "engine_parameter", + "from_window": "fiscal_year", + "parameter_path": "gov.economic_assumptions.indices.obr.consumer_price_index" + }, "miscellaneous_consumption": { "basis": "engine_parameter", "from_window": "fiscal_year", @@ -4086,6 +4093,11 @@ "basis": "engine_parameter", "parameter_path": "gov.economic_assumptions.indices.obr.per_capita.mixed_income" }, + "solid_fuel_consumption": { + "basis": "engine_parameter", + "from_window": "fiscal_year", + "parameter_path": "gov.economic_assumptions.indices.obr.consumer_price_index" + }, "transport_consumption": { "basis": "engine_parameter", "from_window": "fiscal_year", @@ -4191,7 +4203,9 @@ "bus_fare_spending", "domestic_energy_consumption", "electricity_consumption", - "gas_consumption" + "gas_consumption", + "liquid_fuel_consumption", + "solid_fuel_consumption" ], "weights": "explicit" }, @@ -4520,15 +4534,37 @@ }, { "kind": "recompose_from_remainder", + "level_division_excess": { + "basis": "drawn_spend_over_donor_spend_per_household", + "divisions": [ + "food_and_non_alcoholic_beverages_consumption", + "alcohol_and_tobacco_consumption", + "clothing_and_footwear_consumption", + "housing_water_and_electricity_consumption", + "household_furnishings_consumption", + "health_consumption", + "transport_consumption", + "communication_consumption", + "recreation_consumption", + "education_consumption", + "restaurants_and_hotels_consumption", + "miscellaneous_consumption" + ], + "rule": "excess_over_shared_ratio" + }, "maximum_total": "donor_support", "parents": { "housing_water_and_electricity_consumption": { "components": [ "electricity_consumption", - "gas_consumption" + "gas_consumption", + "liquid_fuel_consumption", + "solid_fuel_consumption" ], "drawn_subtracts": [ - "domestic_energy_consumption" + "domestic_energy_consumption", + "liquid_fuel_consumption", + "solid_fuel_consumption" ] }, "transport_consumption": { @@ -4544,14 +4580,16 @@ ] } }, - "uncarried": { + "published_fuels": { "classes": [ { "coicop": "04.5.3", + "column": "liquid_fuel_consumption", "concept": "ons.household_expenditure.liquid_fuels" }, { "coicop": "04.5.4", + "column": "solid_fuel_consumption", "concept": "ons.household_expenditure.solid_fuels" } ], @@ -4586,6 +4624,8 @@ "domestic_energy_consumption", "electricity_consumption", "gas_consumption", + "liquid_fuel_consumption", + "solid_fuel_consumption", "has_fuel_consumption", "uses_energy_prepayment_meter" ], @@ -5467,17 +5507,50 @@ "resource": "salary_sacrifice_anchor.json", "role": "salary_sacrifice_anchor", "runtime_sha256_required": true + }, + { + "format": "json", + "kind": "public_aggregate_reference", + "resource": "obr_salary_sacrifice_costing_facts.json", + "role": "obr_salary_sacrifice_costing_facts", + "runtime_sha256_required": true + }, + { + "format": "json", + "kind": "public_aggregate_reference", + "resource": "bonus_sacrifice_anchor.json", + "role": "bonus_sacrifice_anchor", + "runtime_sha256_required": true } ], "grain": "person", "nonnegative_outputs": [ "pension_contributions_via_salary_sacrifice", + "pension_contributions_via_bonus_sacrifice", "employee_pension_contributions", "employment_income", "salary_sacrifice_pre_conversion_pay" ], - "notes": "The QRF trains only on the 2024-25 FRS asked subset with pay. Salary sacrifice is pay given up, so every amount, reported or predicted, is limited to the pay the person still receives, and a person without pay has none (uk-data#518, microcosm#1095); the limit bites above all on SPI-channel rows, which keep their FRS twin's answer beside pay redrawn from the SPI. The second arm creates support toward the reviewed 5.4m staging target by moving contributors' pension amounts, up to half their pay, into salary sacrifice and lowering their pay by the same amount, since the engine reads employment_income after sacrifice; what does not move stays an employee contribution, so the sacrifice never exceeds the pay that remains. Before microcosm#1069 c9 the pay stayed whole and the converted record lost its net-pay relief.", + "notes": "The QRF trains only on the 2024-25 FRS asked subset with pay. Salary sacrifice is pay given up, so every amount, reported or predicted, is limited to the pay the person still receives, and a person without pay has none (uk-data#518, microcosm#1095); the limit bites above all on SPI-channel rows, which keep their FRS twin's answer beside pay redrawn from the SPI. The second arm creates support toward the reviewed 5.4m staging target by moving contributors' pension amounts, up to half their pay, into salary sacrifice and lowering their pay by the same amount, since the engine reads employment_income after sacrifice; what does not move stays an employee contribution, so the sacrifice never exceeds the pay that remains. Before microcosm#1069 c9 the pay stayed whole and the converted record lost its net-pay relief. The third arm adds bonus sacrifice beside pay toward the OBR's 2027-28 base above GBP 2,000 (microcosm#1340). A sacrificed bonus is never received, so the FRS records it in neither pay nor its bonus amounts, and pay stays as it is (Mar\u00eda's ruling of 2026-10-24 on Vahid's review of microcosm#1383); a received FRS bonus marks a bonus-paying job and its size. An SPI-channel adult's FRS bonus is its twin's, beside the tape's pay, so it draws a bonus share of pay from a base-FRS adult in its pay cell instead.", "operations": [ + { + "artifact_role": "obr_salary_sacrifice_costing_facts", + "fail_on_mismatch": true, + "feed_pin": "chronicle_feed.json", + "kind": "verify_vendored_fact_resource", + "mapped_build_period": 2024, + "period_mapping": "fiscal_year_2027_base_met_by_the_engine_projection", + "record_sets": [ + "obr.salary_sacrifice_costing_2026_02.tax_base.fy2027", + "obr.salary_sacrifice_costing_2026_02.tax_base.fy2028", + "obr.salary_sacrifice_costing_2026_02.tax_base.fy2029", + "obr.salary_sacrifice_costing_2026_02.tax_base.fy2030" + ], + "require_before_source_read": true, + "resource": "obr_salary_sacrifice_costing_facts.json", + "runtime_sha256_required": true, + "source_vintage": "OBR supplementary forecast information on salary sacrifice, 5 February 2026" + }, { "cache": false, "clamp_maximum": "employment_income floored at zero; every row, reported or predicted, FRS and SPI channel", @@ -5510,10 +5583,42 @@ "salt": "salary_sacrifice_conversion", "seed": 2024, "target": 5400000 + }, + { + "candidates": "a bonus (frs_bonus_amount, or an SPI-channel adult's drawn bonus) > 0 and employment_income at least the anchor's annual upper earnings limit, after the salary conversion", + "facts": "obr_salary_sacrifice_costing_facts.json", + "kind": "convert_bonuses_to_bonus_sacrifice", + "move": "the bonus, at most move_pay_share_cap of employment_income, to pension_contributions_via_bonus_sacrifice; employment_income unchanged, since a sacrificed bonus is never received", + "move_pay_share_cap": 0.5, + "output": "pension_contributions_via_bonus_sacrifice", + "receipt": "projected_base", + "resource": "bonus_sacrifice_anchor.json", + "salt": "bonus_sacrifice_conversion", + "seed": 2024, + "solve": "the candidates in the order of their identity-keyed uniforms, taken while the projected base is nearer the anchor's OBR base: the anchor's weight growth times the sum of person weight times (max(0, g (S + B) - threshold) - max(0, g S - threshold)), with g the anchor's earnings growth, S the salary sacrifice and B the bonus sacrificed; every candidate where even all fall short", + "source": "frs_bonus_amount", + "spi_bonus_draw": "an SPI-channel adult with pay draws the bonus share of pay (frs_bonus_amount over employment_income) of a base-FRS adult with pay in the same pay cell, by person weight, keyed on person_id; the cells are the base-FRS paid adults' weighted pay quantiles at spi_cell_quantiles, and a cell with fewer than spi_min_donor_sources donor source households joins the one below", + "spi_cell_quantiles": [ + 0.1, + 0.2, + 0.3, + 0.4, + 0.5, + 0.6, + 0.7, + 0.8, + 0.9, + 0.95, + 0.99 + ], + "spi_min_donor_sources": 20, + "spi_salt": "bonus_sacrifice_spi_bonus_share", + "threshold": 2000 } ], "outputs": [ "pension_contributions_via_salary_sacrifice", + "pension_contributions_via_bonus_sacrifice", "employee_pension_contributions", "employment_income", "salary_sacrifice_pre_conversion_pay" @@ -5553,7 +5658,8 @@ "iidb_reported", "afcs_reported", "bsp_reported", - "war_widows_pension_reported" + "war_widows_pension_reported", + "widowed_parents_allowance_reported" ], "kind": "restore_spi_channel_reports_from_source", "linkage": "person_source_id -> FRS-channel person_id", @@ -5611,6 +5717,7 @@ "afcs_reported", "bsp_reported", "war_widows_pension_reported", + "widowed_parents_allowance_reported", "is_disabled_for_benefits", "is_enhanced_disabled_for_benefits", "is_severely_disabled_for_benefits", @@ -5988,7 +6095,7 @@ "artifacts": [], "grain": "benunit", "nonnegative_outputs": [], - "notes": "Runs after the last universal_credit_reported writer and before CGT cloning. Redraws every SPI benefit unit's capital, since the channel's incomes are SPI draws and the copied FRS answer no longer belongs to the unit (uk-data#495, microcosm#1095), from weighted base-FRS units with available capital in cells of UC reporter status by financial investment income band (interest, dividends and other investment income; property income is excluded because TOTCAPB4 counts accounts and assets) by is_uc_couple (two retained FRS claimant/partner roles, independently of legal is_married) by dependent-children band. A cell with fewer than 20 donors widens in the declared coarsening order, and reporter status is never coarsened. It then applies the monotone reported-UC OR refresh. The recorded capitals add property (uk-data#495, microcosm#1095), since policyengine-uk 2.147.2 replaces every capital source with a recorded figure of 0 or more and takes it as countable, and TOTCAPB4 has no property. WAS records the property for the household, and each means test counts the claimant's and partner's own capital (UC Regs 2013 reg 18; SPCA 2002 s.5). The household reference person's benefit unit therefore holds all of the household's property, and no other unit records any (Mar\u00eda's ruling of 2026-10-12), since that person is the one in whose name the home is owned or rented, the best single reading of the owner. The engine shares household property over every claimant or partner instead, which puts a parent's property on an adult child's claim; a recorded figure consumes its own unit's share, so the engine's shares reach only a unit on the unavailable sentinel, and since policyengine-uk 2.136.1 such a unit takes its share whatever a recording unit beside it holds (the receipt counts any unit left there). The property counts at 90% of its value, market value less 10% for the costs of sale (UC Regs 2013 reg 49; SPC Regs 2002 reg 19); debt secured on it is not on the frame and is not netted (pe-uk#1969). Universal Credit counts other residential and non-residential property, and Pension Credit counts those and owned land. A unit that reports Universal Credit keeps its receipt and records the carrier alone for Universal Credit, since DWP assessed its capital to pay it and the property is imputed without that receipt. frs_benunit_capital stays the financial carrier, and its unavailable sentinel -1 passes through to both. Both recorded figures project to later years by GDP per head, as financial capital does, while policyengine-uk 2.139.1 projects other residential property by house prices, so the other residential property in a recorded figure grows faster than the engine's own projection of it; by the OBR indices the engine carries, it grows 1.5% faster by 2025 and 2.0% by 2026 from a 2024 base.", + "notes": "Runs after the last universal_credit_reported writer and before CGT cloning. Redraws every SPI benefit unit's capital, since the channel's incomes are SPI draws and the copied FRS answer no longer belongs to the unit (uk-data#495, microcosm#1095), from weighted base-FRS units with available capital in cells of UC reporter status by financial investment income band (interest, dividends and other investment income; property income is excluded because TOTCAPB4 counts accounts and assets) by is_uc_couple (two retained FRS claimant/partner roles, independently of legal is_married) by dependent-children band. A cell with fewer than 20 donors widens in the declared coarsening order, and reporter status is never coarsened. It then applies the monotone reported-UC OR refresh. The recorded capitals add property (uk-data#495, microcosm#1095), since policyengine-uk 2.151.0 replaces every capital source with a recorded figure of 0 or more and takes it as countable, and TOTCAPB4 has no property. WAS records the property for the household, and each means test counts the claimant's and partner's own capital (UC Regs 2013 reg 18; SPCA 2002 s.5). The household reference person's benefit unit therefore holds all of the household's property, and no other unit records any (Mar\u00eda's ruling of 2026-10-12), since that person is the one in whose name the home is owned or rented, the best single reading of the owner. The engine shares household property over every claimant or partner instead, which puts a parent's property on an adult child's claim; a recorded figure consumes its own unit's share, so the engine's shares reach only a unit on the unavailable sentinel, and since policyengine-uk 2.136.1 such a unit takes its share whatever a recording unit beside it holds (the receipt counts any unit left there). The property counts at 90% of its value, market value less 10% for the costs of sale, less the debt secured on it, class by class and floored at zero per class (UC Regs 2013 reg 49(1); SPC Regs 2002 reg 19), as policyengine-uk values Universal Credit property capital. The was_wealth stage draws the debt on other residential and on non-residential property (microcosm#1095), and owned land carries none, as the engine has no input for it (pe-uk#1969). Universal Credit counts other residential and non-residential property, and Pension Credit counts those and owned land. A unit that reports Universal Credit keeps its receipt and records the carrier alone for Universal Credit, since DWP assessed its capital to pay it and the property is imputed without that receipt. frs_benunit_capital stays the financial carrier, and its unavailable sentinel -1 passes through to both. Both recorded figures project to later years by GDP per head, as financial capital does, while policyengine-uk 2.139.1 projects other residential property by house prices, so the other residential property in a recorded figure grows faster than the engine's own projection of it; by the OBR indices the engine carries, it grows 1.5% faster by 2025 and 2.0% by 2026 from a 2024 base.", "operations": [ { "aggregates": { @@ -6034,9 +6141,9 @@ }, { "derived": { - "pension_credit_property_capital_share": "0.9 x (owned_land + other_residential_property_value + non_residential_property_value) of the household where the unit holds the household reference person (is_household_head), else 0", + "pension_credit_property_capital_share": "(0.9 x owned_land + max(0, 0.9 x other_residential_property_value - other_residential_property_secured_debt) + max(0, 0.9 x non_residential_property_value - non_residential_property_secured_debt)) of the household where the unit holds the household reference person (is_household_head), else 0", "pension_credit_reported_capital": "frs_benunit_capital + pension_credit_property_capital_share where frs_benunit_capital >= 0, else frs_benunit_capital", - "uc_property_capital_share": "0.9 x (other_residential_property_value + non_residential_property_value) of the household where the unit holds the household reference person (is_household_head), else 0", + "uc_property_capital_share": "(max(0, 0.9 x other_residential_property_value - other_residential_property_secured_debt) + max(0, 0.9 x non_residential_property_value - non_residential_property_secured_debt)) of the household where the unit holds the household reference person (is_household_head), else 0", "uc_reported_capital": "frs_benunit_capital + uc_property_capital_share where frs_benunit_capital >= 0 and NOT universal_credit_reported_anchor, else frs_benunit_capital", "would_claim_uc": "would_claim_uc OR universal_credit_reported_anchor" }, @@ -6133,7 +6240,7 @@ ], "grain": "benunit", "nonnegative_outputs": [], - "notes": "Ports uk-data#534 (a draft, at c67077a66; uk-data#492) at the spine's design weights (microcosm#1095). policyengine-uk 2.128.0 (pe-uk#2119) moves a family off a legacy benefit DWP has closed (tax credits from 2025-26) and takes its other legacy awards away; the family then claims Universal Credit if would_claim_uc or would_claim_uc_at_legacy_closure is true, and the engine's default for the second, true, put every such family on Universal Credit. The stage runs after uc_take_up, the last writer of would_claim_uc (uc_capital_coherence is the last writer of universal_credit_reported), and before pension_credit_take_up and CGT cloning, so every SPI benefit unit draws on its own final receipts and every clone carries its source's draw. A benefit unit with a member reporting Universal Credit, a unit whose would_claim_uc is true, and a unit reporting none of the six legacy means-tested benefits (child_tax_credit, working_tax_credit, housing_benefit, esa_income, income_support and jsa_income, each read as a member's _reported above 0) is true, the engine's default. Every other unit is drawn at (r - p) / (1 - p), clipped to [0, 1], where r is DWP's claimed / (claimed + did not claim) for the unit's combination of legacy benefits (the all-households rate where DWP reports none; households still in progress are left out) and p is the combination's share of Great Britain's such units whose would_claim_uc is true, at the stage's household weights mapped to benefit units (uk-data#534's p is unweighted, as its draw precedes calibration; Mar\u00eda's rulings of 2026-10-16 and 2026-10-17); the probability applies to the combination's units in Northern Ireland too, since DWP's rates cover Great Britain. So, in expectation, the weighted share of Great Britain's drawn units claiming at the closure in each combination is DWP's rate wherever p is at most r; where p exceeds it the probability is 0 and the receipt flags the combination (rate_unreachable), never p itself. Two limits carry over from uk-data#534. The drawn cohort includes units on the Pension Credit route, whose legacy benefits policyengine-uk does not close, and DWP's rates count every household sent a notice, entitled to Universal Credit or not. The uniform reads an identity-keyed stream on benunit_id.", + "notes": "Ports uk-data#534 (a draft, at c67077a66; uk-data#492) at the spine's design weights (microcosm#1095). policyengine-uk 2.128.0 (pe-uk#2119) moves a family off a legacy benefit DWP has closed (tax credits from 2025-26) and takes its other legacy awards away; the family then claims Universal Credit if would_claim_uc or would_claim_uc_at_legacy_closure is true, and the engine's default for the second, true, put every such family on Universal Credit. The stage runs after uc_take_up, the last writer of would_claim_uc (uc_capital_coherence is the last writer of universal_credit_reported), and before pension_credit_take_up and CGT cloning, so every SPI benefit unit draws on its own final receipts and every clone carries its source's draw. A benefit unit whose claimant or partner reports Universal Credit, a unit whose would_claim_uc is true, and a unit whose claimant and partner report none of the six legacy means-tested benefits (child_tax_credit, working_tax_credit, housing_benefit, esa_income, income_support and jsa_income, each read as the claimant's or partner's _reported above 0, is_claimant_or_partner) is true, the engine's default. Only the claimant's and partner's reports count, since policyengine-uk 2.146.0 (pe-uk#2549) closes an award through its owners, so an award another member claims in their own right closes on its own and does not move the family. Every other unit is drawn at (r - p) / (1 - p), clipped to [0, 1], where r is DWP's claimed / (claimed + did not claim) for the unit's combination of legacy benefits (the all-households rate where DWP reports none; households still in progress are left out) and p is the combination's share of Great Britain's such units whose would_claim_uc is true, at the stage's household weights mapped to benefit units (uk-data#534's p is unweighted, as its draw precedes calibration; Mar\u00eda's rulings of 2026-10-16 and 2026-10-17); the probability applies to the combination's units in Northern Ireland too, since DWP's rates cover Great Britain. So, in expectation, the weighted share of Great Britain's drawn units claiming at the closure in each combination is DWP's rate wherever p is at most r; where p exceeds it the probability is 0 and the receipt flags the combination (rate_unreachable), never p itself. Two limits carry over from uk-data#534. The drawn cohort includes units on the Pension Credit route, whose legacy benefits policyengine-uk does not close, and DWP's rates count every household sent a notice, entitled to Universal Credit or not. The uniform reads an identity-keyed stream on benunit_id.", "operations": [ { "artifact_role": "move_to_uc_facts", @@ -6166,11 +6273,12 @@ "port_of": "uk-data#534 at c67077a66", "probability": "clip((rate - p) / (1 - p), 0, 1)", "rate": "claimed / (claimed + did not claim) for the combination, the all-households rate where DWP reports none", + "reporters": "the claimant and partner (is_claimant_or_partner); an award another member claims in their own right closes on its own (policyengine-uk 2.146.0, pe-uk#2549)", "stream": { "salt": "would_claim_uc_at_legacy_closure", "seed": 0 }, - "true_without_draw": "a member reports universal_credit_reported, would_claim_uc is true, or no member reports a legacy benefit" + "true_without_draw": "the claimant or partner reports universal_credit_reported, would_claim_uc is true, or neither reports a legacy benefit" } ], "outputs": [ @@ -6193,7 +6301,7 @@ "has_non_child_member": "any(NOT is_child_or_qualifying_young_person_for_universal_credit) over benefit-unit members", "is_uc_couple": "count(is_benunit_head OR is_parent OR (dependent_children == 0)) over benefit-unit members == 2", "positive_pre_takeup_uc_award": "max(0, uc_maximum_amount - uc_income_reduction) > 0", - "uc_property_capital_share": "0.9 x (other_residential_property_value + non_residential_property_value) of the household where the unit holds the household reference person (is_household_head), else 0", + "uc_property_capital_share": "(max(0, 0.9 x other_residential_property_value - other_residential_property_secured_debt) + max(0, 0.9 x non_residential_property_value - non_residential_property_secured_debt)) of the household where the unit holds the household reference person (is_household_head), else 0", "uc_reported_capital": "frs_benunit_capital + uc_property_capital_share where frs_benunit_capital >= 0, else frs_benunit_capital; a base FRS-channel unit with universal_credit_reported_amount > 0 takes frs_benunit_capital alone" }, "kind": "derive" @@ -6265,7 +6373,7 @@ ], "grain": "benunit", "nonnegative_outputs": [], - "notes": "Runs after uc_capital_coherence, the last writer of universal_credit_reported and of the capital the engine assesses, and before uc_legacy_closure_take_up, which reads would_claim_uc. frs_take_up draws would_claim_uc early for FRS benefit units and spi_benefit_coherence redraws the SPI-channel units on the same rule: a reporter claims and the rest of the take-up contract's one rate times the age population is drawn uniformly over its non-reporting units, whatever their award. At the spine's design weights that put the caseload above DWP's for single people without children, couples and the smallest awards, and below it for lone parents, so the national solve met DWP's caseloads by reweighting low-income families. This stage redraws the flag for both channels. One temporary engine materialization, at the release's calibration year on the frame stamped with its survey year (as pension_credit_take_up reads Pension Credit), gives each benefit unit the award it would be paid if it claimed: universal_credit on a temporary copy where every unit claims and carries the deduction attributes uc_deduction_attributes will assign it (they read only the unit's identity and region), so after the benefit cap and deductions, the award the registry's dwp/uc_payment_dist rows band. It also gives whether the engine moves the unit off its legacy benefits that year (legacy_benefits_closed) and the UC child status the calibration's family type reads; all are consumed only. A unit with an award falls into a cell of DWP's family type by DWP's GBP 100 monthly award band, banded as the registry rows band an award, with one more band above GBP 2,500 a month. Within a family type, adjacent bands pool, lowest first, until the drawn units rest on at least 30 distinct source households. In each pool a reporter claims, and each drawn unit (entitled, non-reporting, in frs_take_up's age population and not moved off its legacy benefits) claims at r = (T - F) / D clipped to [0, 1]: T is DWP's count for the pool's bands, the mean of the April to December 2025 Stat-Xplore months (the facts the registry rows average, vendored as dwp_uc_award_band_facts.json), D the weight of the drawn units, and F the expected claims of the other entitled units: 1 for a reporter, the claim probability uc_legacy_closure_take_up's rule gives a moved unit (whose flag this stage leaves alone, so that probability does not move), and the stored flag for any other. T, F and D are Great Britain's at the stage's household weights, which DWP's counts cover. The drawn units claim in the order of their uniform until their weight is nearest T - F, so each pool realizes r to within one unit's weight rather than only in expectation, which a pool resting on a few dozen households can miss by several per cent, and Northern Ireland's drawn units claim below the same uniform. A pool whose other claims reach T, or whose T exceeds every entitled unit, cannot meet DWP's count; the receipt flags it. A unit with no award, or outside the age population, keeps its stored flag, the single-rate draw, which is how a unit claims once a reform or a later year entitles it. The uniform is the would_claim_uc identity stream frs_take_up and spi_benefit_coherence use. The receipt gives each pool's DWP count, its support in bands of distinct source households and its unreachable flag (only where ten or more sources carry the pool), and each family type's weighted caseload before and after; it gives no unit count except in bands and no rate. The uk_stage_uc_take_up gate reads it; the terminal take-up signal gate no longer measures would_claim_uc.", + "notes": "Runs after uc_capital_coherence, the last writer of universal_credit_reported and of the capital the engine assesses, and before uc_legacy_closure_take_up, which reads would_claim_uc. frs_take_up draws would_claim_uc early for FRS benefit units and spi_benefit_coherence redraws the SPI-channel units on the same rule: a reporter claims and the rest of the take-up contract's one rate times the age population is drawn uniformly over its non-reporting units, whatever their award. At the spine's design weights that put the caseload above DWP's for single people without children, couples and the smallest awards, and below it for lone parents, so the national solve met DWP's caseloads by reweighting low-income families. This stage redraws the flag for both channels. One temporary engine materialization, at the release's calibration year on the frame stamped with its survey year (as pension_credit_take_up reads Pension Credit), gives each benefit unit the award it would be paid if it claimed: universal_credit on a temporary copy where every unit claims and carries the deduction attributes uc_deduction_attributes will assign it (they read only the unit's identity and region), so after the benefit cap and deductions, the award the registry's dwp/uc_payment_dist rows band. It also gives whether the engine moves the unit off its legacy benefits that year (legacy_benefits_closed) and the UC child status the calibration's family type reads; all are consumed only. A unit with an award falls into a cell of DWP's family type by DWP's GBP 100 monthly award band, banded as the registry rows band an award, with one more band above GBP 2,500 a month. Within a family type, adjacent bands pool, lowest first, until the drawn units rest on at least 30 distinct source households. In each pool a reporter claims, and each drawn unit (entitled, non-reporting, in frs_take_up's age population and not moved off its legacy benefits) claims at r = (T - F) / D clipped to [0, 1]: T is DWP's count for the pool's bands, the mean of the April to December 2025 Stat-Xplore months (the facts the registry rows average, vendored as dwp_uc_award_band_facts.json), D the weight of the drawn units, and F the expected claims of the other entitled units: 1 for a reporter, the claim probability uc_legacy_closure_take_up's rule gives a moved unit (whose flag this stage leaves alone, so that probability does not move), and the stored flag for any other. T, F and D are Great Britain's at the stage's household weights, which DWP's counts cover. The drawn units claim in the order of their uniform until their weight is nearest T - F, so each pool realizes r to within one unit's weight rather than only in expectation, which a pool resting on a few dozen households can miss by several per cent, and Northern Ireland's drawn units claim below the same uniform. A pool whose other claims reach T, or whose T exceeds every entitled unit, cannot meet DWP's count; the receipt flags it. A unit with no award, or outside the age population, keeps its stored flag, the single-rate draw, which is how a unit claims once a reform or a later year entitles it. The uniform is the would_claim_uc identity stream frs_take_up and spi_benefit_coherence use. The receipt gives each pool's DWP count, its support in bands of distinct source households and its unreachable flag (only where ten or more sources carry the pool), and each family type's weighted caseload before and after; it gives no unit count except in bands and no rate. The uk_stage_uc_take_up gate reads it; the terminal take-up signal gate no longer measures would_claim_uc. From policyengine-uk 2.149.0 a claim for Universal Credit ends a claimant's or partner's income-related ESA (pe-uk#2563), so a unit whose claimant or partner reports that award, and that neither reports Universal Credit nor is moved off its legacy benefits, claims none (kept_legacy_award): it was on the award at the interview, and a reported receipt is a fact (microcosm#1095). The closure draw downstream reads the flag this stage writes, so the closure probabilities the solve expects use it too, and the receipt bands the units it keeps off Universal Credit (income_related_esa_kept). Housing Benefit, which the engine also ends on a claim, keeps the stored flag here, pending the Housing Benefit and JSA PR (microcosm#867, microcosm#869).", "operations": [ { "artifact_role": "uc_award_band_facts", @@ -6325,9 +6433,10 @@ "draw": "would_claim_uc", "drawn_units": "entitled, non-reporting units of the population that the engine does not move off their legacy benefits (legacy_benefits_closed) and that report none, since a legacy benefit the engine leaves in place ends once the unit claims UC", "family_type": "two FRS claimant or partner roles make a couple; children are UC children or qualifying young people and other non-claimants under 20 (the calibration measure's uc_calibration_family_type)", + "kept_legacy_award": "a unit whose claimant or partner reports income-related ESA (esa_income_reported), and that neither reports Universal Credit nor is moved off its legacy benefits, claims no Universal Credit, since policyengine-uk ends that award once the family claims it", "kind": "assign_award_band_take_up_residual", "minimum_pool_sources": 30, - "not_drawn": "keeps its stored flag", + "not_drawn": "keeps its stored flag, except a unit keeping income-related ESA, which claims none", "output": "would_claim_uc", "pooling": "adjacent bands within a family type, lowest first, until the drawn units rest on minimum_pool_sources distinct household_source_id values; a short last pool joins the one before it", "population": "uc_age_eligible", @@ -6335,7 +6444,7 @@ "seed": 0, "solve_scope": "great_britain", "targets": "DWP Stat-Xplore Households on Universal Credit by family type and monthly award band, mean of April to December 2025", - "undrawn_claims": "a reporter at 1, a moved unit at the claim probability uc_legacy_closure_take_up's rule gives it (dwp_move_to_uc_facts.json), any other at its stored flag", + "undrawn_claims": "a reporter at 1, a moved unit at the claim probability uc_legacy_closure_take_up's rule gives it (dwp_move_to_uc_facts.json), a unit keeping income-related ESA at 0, any other at its stored flag", "weight_mapping": "household_to_benunit" } ], @@ -6586,24 +6695,32 @@ "stocks_and_shares_isa", "student_loan_balance", "mortgage_debt", - "consumer_debt" + "consumer_debt", + "directly_held_shares", + "unit_and_investment_trusts", + "other_residential_property_secured_debt", + "non_residential_property_secured_debt" ], - "notes": "Ports incumbent WAS round-8 wealth imputation with signed E5 differences: exact lower-case column matching replaces the fuzzy r/w fallback; cash ISA uses DVCISAVR8_aggr and stocks-and-shares ISA uses DVIISAVR8_aggr; private pension wealth (WAS total private pension wealth less the current defined-benefit component; DB-type components at the SCAPE rate, money-purchase components at reported fund values) is drawn as its own output private_pension_wealth and no longer folded into corporate_wealth, which keeps only the share-like holdings - pension rights are disregarded capital in every means test (UC Regs 2013 Sch 10 para 10 and the HB/JSA/ESA/IS/SPC parallels; uk-data#452) - and the downstream chain segment conditions on both components; each chain segment starts its own fit and draw RNG streams from a child seed derived deterministically from the declared seed (start_chain respawns from the model seed on every call, so one shared model coupled the k-th target of every segment); corporate_wealth folds stocks-and-shares ISA after drawing corporate_wealth_excl_isa; recipient Northern Ireland regions are mapped to Wales for prediction only; student_loan_balance is allocated by household id rather than the incumbent positional off-by-one. Tenure enters every chain segment as one four-way category built the same way on both sides (microcosm#1063): the donor's from Ten1R8 and DVPriRntR8 (owned outright; buying with a mortgage or part rent, part mortgage; rented or rent-free from a private landlord; rented from a council or housing association), the recipient's from the frame's tenure_type (council and housing association together), so the stage reads no engine tenure formula. Two columns are structural in tenure and are fitted and drawn inside their stratum only, zero by rule elsewhere: main_residence_value on the owner tenures (every WAS owner has a positive value and no renter has one) and main_residence_mortgage (TotMortR8) on the mortgaged tenure. mortgage_debt is HMortGR8, all of the household's mortgages, and is derived as the main-residence mortgage plus the mortgages on other property (other_mortgage, HMortGR8 less TotMortR8 on the donor: buy-to-let, second homes and the rest), which are held on every tenure and drawn without a stratum, so an outright owner's or a renter's buy-to-let keeps its mortgage beside the property it is secured on (OthMortR8_sum is read for the receipt only); the donor's conditioning copy carries the same rule, so consumer_debt is fitted on values recipients can hold. Totals are not drawn: property_wealth is the sum of land, the main residence, other houses, buildings and a drawn remainder (buy-to-let, overseas and other property), gross_financial_wealth is savings, the cash ISA, the share-like holdings and a drawn remainder, and net_financial_wealth is gross less consumer debt and the student loan balance - identities the pinned tab satisfies on every row and the cleaning step refuses a donor that breaks. A sum of donor-valued components that leaves the donor's range for the total gives up the excess from the remainder first, and the receipt counts the rows. Eight chain segments, each with its own child seed: land; the main residence; the other property components; pension and share-like wealth; the financial components, vehicles and the student loan balance; the main-residence mortgage; the other mortgages; consumer debt. HFINWNTR8_exSLC_Sum is net financial wealth excluding student loans, so gross less it is the non-student-loan financial liabilities; UKDS SN 7215 documentation is the codebook. Engine predictors materialize at their native entity and person/benunit values are summed to household, reproducing the incumbent map_to=household semantics; region is one-hot encoded jointly across donor and recipient (the incumbent's dummy encoding), with unmapped donor GOR codes becoming all-zero dummy rows. The WAS and FRS predictor definitions are not fully like-for-like and are ported as-is; raw WAS missing values are blanket-filled with zero; UKDS negative sentinel codes (-9/-8/-7/-6) are recoded to zero for the nonnegative-domain columns the licensed audit found carrying them (vcarnr8: 2 rows; HBedRmR8: 95.8 percent - the bedrooms question is effectively unasked in the WAS household file, predictor-quality revisit registered on microcosm#145) - a signed difference vs the incumbent, which trains on raw sentinels; DVPriRntR8's -9 is structural not-applicable so the private-renter reading is unchanged; genuinely negative domains are never recoded. The recipient council_tax predictor is the bill the household pays, council_tax less council_tax_rebate, the quantity the WAS donor records, since the spine's council_tax is the liability before council tax reduction (uk-data#496/#499, microcosm#1095). The donor council_tax is DVCTaxAmtAnnualR8, the annual amount paid (CTAmtR8 is one instalment), its children are NumChildR8 (NumCh18R8 overlaps NumAdultR8), and the recipient adults and children are the household's FRS claimants and partners and its other members (is_uc_claimant), which together make the household size on both sides; rental_income is the donor's net rent DVNetRentAmtAnnualR8_aggr against the household's property_income (uk-data#486/#495, microcosm#1095).", + "notes": "Ports incumbent WAS round-8 wealth imputation with signed E5 differences: exact lower-case column matching replaces the fuzzy r/w fallback; cash ISA uses DVCISAVR8_aggr and stocks-and-shares ISA uses DVIISAVR8_aggr; private pension wealth (WAS total private pension wealth less the current defined-benefit component; DB-type components at the SCAPE rate, money-purchase components at reported fund values) is drawn as its own output private_pension_wealth and no longer folded into corporate_wealth, which keeps only the share-like holdings - pension rights are disregarded capital in every means test (UC Regs 2013 Sch 10 para 10 and the HB/JSA/ESA/IS/SPC parallels; uk-data#452) - and the downstream chain segment conditions on both components; each chain segment starts its own fit and draw RNG streams from a child seed derived deterministically from the declared seed (start_chain respawns from the model seed on every call, so one shared model coupled the k-th target of every segment); corporate_wealth folds stocks-and-shares ISA after drawing corporate_wealth_excl_isa; recipient Northern Ireland regions are mapped to Wales for prediction only; student_loan_balance is allocated by household id rather than the incumbent positional off-by-one. Tenure enters every chain segment as one four-way category built the same way on both sides (microcosm#1063): the donor's from Ten1R8 and DVPriRntR8 (owned outright; buying with a mortgage or part rent, part mortgage; rented or rent-free from a private landlord; rented from a council or housing association), the recipient's from the frame's tenure_type (council and housing association together), so the stage reads no engine tenure formula. Two columns are structural in tenure and are fitted and drawn inside their stratum only, zero by rule elsewhere: main_residence_value on the owner tenures (every WAS owner has a positive value and no renter has one) and main_residence_mortgage (TotMortR8) on the mortgaged tenure. mortgage_debt is HMortGR8, all of the household's mortgages, and is derived as the main-residence mortgage plus the mortgages on other property (other_mortgage, HMortGR8 less TotMortR8 on the donor: buy-to-let, second homes and the rest), which are held on every tenure and drawn without a stratum, so an outright owner's or a renter's buy-to-let keeps its mortgage beside the property it is secured on (OthMortR8_sum is read for the receipt only); the donor's conditioning copy carries the same rule, so consumer_debt is fitted on values recipients can hold. Totals are not drawn: property_wealth is the sum of land, the main residence, other houses, buildings and a drawn remainder (buy-to-let, overseas and other property), gross_financial_wealth is savings, the cash ISA, the share-like holdings and a drawn remainder, and net_financial_wealth is gross less consumer debt and the student loan balance - identities the pinned tab satisfies on every row and the cleaning step refuses a donor that breaks. A sum of donor-valued components that leaves the donor's range for the total gives up the excess from the remainder first, and the receipt counts the rows. Eleven chain segments, each with its own child seed: land; the main residence; the other property components; pension and share-like wealth; the financial components, vehicles and the student loan balance; the main-residence mortgage; the other mortgages; consumer debt; then three appended after them, so the first eight draw as they did before them (microcosm#1095, the WAS property draw), each fitted on the donors and drawn for the recipients holding the column holder_strata names. The first is the directly held fraction of the share-like holdings outside ISAs, from which the stage writes directly_held_shares (WAS UK shares plus employee shares and options) and unit_and_investment_trusts (WAS collective investments, which the survey asks about in one question; uk-data#501), the inputs policyengine-uk reads inside corporate_wealth (pe-uk#1974): the split is written on the final corporate_wealth less the stocks-and-shares ISA, so the two and the ISA sum to corporate_wealth and the engine's share_like_capital stays corporate_wealth; a household with such holdings but no drawn fraction (a clip that lowered the ISA alone) holds them directly (undrawn_fraction), and the receipt counts it. The other two are the debt secured on other residential property (WAS DVHseDebtR8_sum + DVBLtDebtR8_sum) and on non-residential property (DVBldDebtR8_sum), which policyengine-uk deducts after the sale costs in valuing Universal Credit property capital (UC Regs 2013 reg 49(1)(b)): each is zero where the final value of its asset is zero, and the two are parts of the mortgages on other property, so where their sum passes other_mortgage both are scaled down to it (secured_debt_within); the receipt counts the rows each rule touched, and the wealth_coherence gate holds the split and the debts as identities. HFINWNTR8_exSLC_Sum is net financial wealth excluding student loans, so gross less it is the non-student-loan financial liabilities; UKDS SN 7215 documentation is the codebook. Engine predictors materialize at their native entity and person/benunit values are summed to household, reproducing the incumbent map_to=household semantics; region is one-hot encoded jointly across donor and recipient (the incumbent's dummy encoding), with unmapped donor GOR codes becoming all-zero dummy rows. The WAS and FRS predictor definitions are not fully like-for-like and are ported as-is; raw WAS missing values are blanket-filled with zero; UKDS negative sentinel codes (-9/-8/-7/-6) are recoded to zero for the nonnegative-domain columns the licensed audit found carrying them (vcarnr8: 2 rows; HBedRmR8: 95.8 percent - the bedrooms question is effectively unasked in the WAS household file, predictor-quality revisit registered on microcosm#145) - a signed difference vs the incumbent, which trains on raw sentinels; DVPriRntR8's -9 is structural not-applicable so the private-renter reading is unchanged; genuinely negative domains are never recoded. The recipient council_tax predictor is the bill the household pays, council_tax less council_tax_rebate, the quantity the WAS donor records, since the spine's council_tax is the liability before council tax reduction (uk-data#496/#499, microcosm#1095). The donor council_tax is DVCTaxAmtAnnualR8, the annual amount paid (CTAmtR8 is one instalment), its children are NumChildR8 (NumCh18R8 overlaps NumAdultR8), and the recipient adults and children are the household's FRS claimants and partners and its other members (is_uc_claimant), which together make the household size on both sides; rental_income is the donor's net rent DVNetRentAmtAnnualR8_aggr against the household's property_income (uk-data#486/#495, microcosm#1095).", "operations": [ { "derived": { "cash_isa": "DVCISAVR8_aggr", "consumer_debt": "max(HFINWR8_SUM - HFINWNTR8_exSLC_Sum, 0)", "corporate_wealth_excl_isa": "DVFESHARESR8_aggr + DVFShUKVR8_aggr + DVFCollVR8_aggr", + "directly_held_share_fraction": "directly_held_shares / corporate_wealth_excl_isa where corporate_wealth_excl_isa > 0, else 0", + "directly_held_shares": "DVFShUKVR8_aggr + DVFESHARESR8_aggr (UK shares plus employee shares and options)", "is_renting": "DVPriRntR8 == 1", "other_financial_assets": "HFINWR8_SUM - (DVSaValR8_aggr + DVCISAVR8_aggr + corporate_wealth), refused when negative", "other_property_value": "DVPropertyR8 - (DVhvalueR8 + DVHseValR8_sum + DVBltValR8_sum + DVBlDValR8_sum + DVLUKValR8_sum), refused when negative", + "other_residential_property_secured_debt": "DVHseDebtR8_sum + DVBLtDebtR8_sum (the debt secured on the other houses and on buy-to-let property)", "other_residential_property_value": "DVHseValR8_sum + DVBltValR8_sum (houses other than the main residence plus buy-to-let property)", "private_pension_wealth": "totalpenr8_aggr - dvvaldbt_scaper8_aggr", "region": "GORR8 via incumbent REGIONS map", "stocks_and_shares_isa": "DVIISAVR8_aggr", "student_loan_balance": "Tot_LosR8_aggr - Tot_los_exc_SLCR8_aggr", - "tenure_category": "Ten1R8 1 owned_outright; 2 or 3 owned_with_mortgage; 4 or 5 private_rent when DVPriRntR8 == 1, otherwise social_rent; any other code private_rent, counted in the receipt" + "tenure_category": "Ten1R8 1 owned_outright; 2 or 3 owned_with_mortgage; 4 or 5 private_rent when DVPriRntR8 == 1, otherwise social_rent; any other code private_rent, counted in the receipt", + "unit_and_investment_trusts": "DVFCollVR8_aggr" }, "direct_maps": { "council_tax": "DVCTaxAmtAnnualR8", @@ -6613,6 +6730,7 @@ "mortgage_debt": "HMortGR8", "net_financial_wealth": "HFINWNTR8_Sum", "net_financial_wealth_exsl": "HFINWNTR8_exSLC_Sum", + "non_residential_property_secured_debt": "DVBldDebtR8_sum", "non_residential_property_value": "DVBlDValR8_sum", "num_adults": "NumAdultR8", "num_children": "NumChildR8", @@ -6669,7 +6787,10 @@ "other_mortgage", "mortgage_debt", "consumer_debt", - "net_financial_wealth" + "net_financial_wealth", + "directly_held_share_fraction", + "other_residential_property_secured_debt", + "non_residential_property_secured_debt" ], "derived_totals": { "corporate_wealth": [ @@ -6699,6 +6820,11 @@ "other_property_value" ] }, + "holder_strata": { + "directly_held_share_fraction": "corporate_wealth_excl_isa", + "non_residential_property_secured_debt": "non_residential_property_value", + "other_residential_property_secured_debt": "other_residential_property_value" + }, "integer_outputs": [ "num_vehicles" ], @@ -6728,7 +6854,16 @@ "region_remap": { "NORTHERN_IRELAND": "WALES" }, + "secured_debt_within": "other_mortgage", "seed": 0, + "share_split": { + "fraction": "directly_held_share_fraction", + "outputs": [ + "directly_held_shares", + "unit_and_investment_trusts" + ], + "undrawn_fraction": 1 + }, "stratified_targets": { "main_residence_mortgage": [ "owned_with_mortgage" @@ -6793,7 +6928,11 @@ "stocks_and_shares_isa", "student_loan_balance", "mortgage_debt", - "consumer_debt" + "consumer_debt", + "directly_held_shares", + "unit_and_investment_trusts", + "other_residential_property_secured_debt", + "non_residential_property_secured_debt" ], "rewrites": [], "source": "Office for National Statistics Wealth and Assets Survey, UK Data Service SN 7215, DOI 10.5255/UKDA-SN-7215-20; local licensed 2006-22 household tab.", diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/frs_raw/adult.tab b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/frs_raw/adult.tab index 77ea37406f..53cfbca96c 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/frs_raw/adult.tab +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/frs_raw/adult.tab @@ -1,136 +1,136 @@ -SERNUM BENUNIT PERSON AGE80 AGE SEX TOTHOURS HRPID UPERSON RELHRP R01 R02 R03 R04 R05 R06 R07 R08 R09 R10 R11 R12 R13 R14 MARITAL EMPSTATI SAMESIT SRENTAMT CONVBL SDEMP01 SDEMP02 SDEMP03 SDEMP04 SDEMP05 SDEMP06 SDEMP07 SDEMP08 SDEMP09 SDEMP10 SDEMP11 SDEMP12 SELFDEMP WORKING JOBAWAY NUMJOB2 CURRJOBM PREVJOBM LSTWRK1 LSTWRK2 LSTYR RETIRE RETIRE1 MJOBSECT SIC FTED TYPEED2 EDUCQUAL TRAINEE EMAAMT CHEMAAMT INEARNS SEINCAM2 MNTUS1 MNTUSAM1 MNTAMT1 MNTAMT2 CVPAY ROYYR1 ROYYR2 ROYYR3 ROYYR4 ALLPAY2 ALLPAY3 ALLPAY4 CHAMTERN CHAMTTST APAMT APDAMT PAREAMT REDAMT SLREPAMT SLOS EDUCLEFT SSPADJ SMPADJ SPPADJ TUBORR ACCSSAMT ACCSSPD SPCREG1 SPCREG2 GRTDIR1 GRTDIR2 HEARTVAL HOURTOT -1 1 1 0 80 2 21 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 2 11 2 0 2 2 0.0 0.0 101.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -2 1 1 0 22 1 22 1 1 3 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 14 2 1 12 2 0 3 2 0.0 0.0 102.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -3 1 1 0 23 2 23 1 1 1 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 15 2 2 13 2 0 4 2 0.0 0.0 103.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -4 1 1 0 24 1 24 1 1 2 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 2 1 14 2 0 5 2 0.0 0.0 104.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -5 1 1 0 25 2 25 1 1 7 3 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 2 15 2 0 6 2 0.0 0.0 105.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -6 1 1 0 26 1 26 1 1 1 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 18 2 1 16 2 0 7 2 0.0 0.0 106.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -7 1 1 0 27 2 27 1 1 2 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 19 2 2 17 2 0 8 2 0.0 0.0 107.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 -8 1 1 0 28 1 28 1 1 3 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 20 2 1 18 2 0 9 2 0.0 0.0 108.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -9 1 1 0 29 2 29 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 21 2 2 19 2 0 10 2 0.0 0.0 109.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -10 1 1 0 30 1 30 1 1 7 2 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 4 2 1 20 2 0 11 2 0.0 0.0 110.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -11 1 1 0 31 2 31 1 1 3 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 23 2 2 21 2 0 12 2 0.0 0.0 111.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -12 1 1 0 32 1 32 1 1 1 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 24 2 1 22 2 0 13 2 0.0 0.0 112.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -13 1 1 0 33 2 33 1 1 2 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 25 1 2 2 23 2 0 14 2 0.0 0.0 113.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -14 1 1 0 34 1 34 1 1 3 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 1 24 2 0 15 2 0.0 0.0 114.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 -15 1 1 0 35 2 35 1 1 7 1 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 27 2 2 25 2 0 16 2 0.0 0.0 115.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -16 1 1 0 36 1 36 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 28 2 1 26 2 0 17 2 0.0 0.0 116.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -17 1 1 0 37 2 37 1 1 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 29 2 2 27 2 0 18 2 0.0 0.0 117.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -18 1 1 0 38 1 38 1 1 1 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 30 2 1 28 2 0 1 2 0.0 0.0 118.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -19 1 1 0 39 2 39 1 1 2 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 4 2 2 29 2 0 2 2 0.0 0.0 119.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -20 1 1 0 40 1 40 1 1 7 3 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32 2 1 30 2 0 3 2 0.0 0.0 120.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -21 1 1 0 41 2 41 1 1 1 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 33 2 2 31 2 0 4 2 0.0 0.0 121.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 5 -22 1 1 0 42 1 42 1 1 2 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 34 2 1 32 2 0 5 2 0.0 0.0 122.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -23 1 1 0 43 2 43 1 1 3 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 2 33 2 0 6 2 0.0 0.0 123.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -24 1 1 0 44 1 44 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 36 2 1 34 2 0 7 2 0.0 0.0 124.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -25 1 1 0 45 2 20 1 1 7 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 37 2 2 35 2 0 8 2 0.0 0.0 125.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -26 1 1 0 46 1 21 1 1 3 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 38 1 3 1 36 2 0 9 2 0.0 0.0 126.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -27 1 1 0 47 2 22 1 1 1 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 39 2 2 37 2 0 10 2 0.0 0.0 127.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -28 1 1 0 48 1 23 1 1 2 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 1 38 2 0 11 2 0.0 0.0 128.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 -29 1 1 0 49 2 24 1 1 3 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 41 2 2 39 2 0 12 2 0.0 0.0 129.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -30 1 1 0 50 1 25 1 1 7 1 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 42 2 1 40 2 0 13 2 0.0 0.0 130.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -31 1 1 0 51 2 26 1 1 2 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 43 2 2 41 2 0 14 2 0.0 0.0 131.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -32 1 1 0 52 1 27 1 1 3 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 1 42 2 0 15 2 0.0 0.0 132.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -33 1 1 0 53 2 28 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 45 2 2 43 2 0 16 2 0.0 0.0 133.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -34 1 1 0 54 1 29 1 1 2 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 46 2 1 44 2 0 17 2 0.0 0.0 134.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -35 1 1 0 55 2 30 1 1 7 3 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 47 2 2 45 2 0 18 2 0.0 0.0 135.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 1 1 2.0 3.0 5.0 4 -36 1 1 0 56 1 31 1 1 1 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 48 2 1 46 2 0 1 2 0.0 0.0 136.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -37 1 1 0 57 2 32 1 1 2 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 2 47 2 0 2 2 0.0 0.0 137.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -38 1 1 0 58 1 33 1 1 3 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 50 2 1 48 2 0 3 2 0.0 0.0 138.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -39 1 1 0 59 2 34 1 1 1 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 51 1 4 2 49 2 0 4 2 0.0 0.0 139.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -40 1 1 0 60 1 35 1 1 7 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 52 2 1 50 2 0 5 2 0.0 0.0 140.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -41 1 1 0 61 2 36 1 1 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 2 51 2 0 6 2 0.0 0.0 141.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -42 1 1 0 62 1 37 1 1 1 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 54 2 1 52 2 0 7 2 0.0 0.0 142.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 -43 1 1 0 63 2 38 1 1 2 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 55 2 2 53 2 0 8 2 0.0 0.0 143.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -44 1 1 0 64 1 39 1 1 3 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 56 2 1 54 2 0 9 2 0.0 0.0 144.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -45 1 1 0 65 2 40 1 1 7 1 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 57 2 2 55 2 0 10 2 0.0 0.0 145.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -46 1 1 0 66 1 41 1 1 2 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 1 56 2 0 11 2 0.0 0.0 146.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -47 1 1 0 67 2 42 1 1 3 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 59 2 2 57 2 0 12 2 0.0 0.0 147.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -48 1 1 0 68 1 43 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 60 2 1 58 2 0 13 2 0.0 0.0 148.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -49 1 1 0 69 2 44 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 61 2 2 59 2 0 14 2 0.0 0.0 149.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 -50 1 1 0 70 1 20 1 1 7 3 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 8 2 1 60 2 0 15 2 0.0 0.0 150.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -51 1 1 0 71 2 21 1 1 1 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 63 2 2 61 2 0 16 2 0.0 0.0 151.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -52 1 1 0 72 1 22 1 1 2 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 64 1 5 1 62 2 0 17 2 0.0 0.0 152.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -53 1 1 0 73 2 23 1 1 3 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 65 2 2 63 2 0 18 2 0.0 0.0 153.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -54 1 1 0 74 1 24 1 1 1 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 66 2 1 64 2 0 1 2 0.0 0.0 154.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -55 1 1 0 20 2 25 1 1 7 2 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 2 65 2 0 2 2 0.0 0.0 155.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -56 1 1 0 21 1 26 1 1 3 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 68 2 1 66 2 0 3 2 0.0 0.0 156.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 5 -57 1 1 0 22 2 27 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 69 2 2 67 2 0 4 2 0.0 0.0 157.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -58 1 1 0 23 1 28 1 1 2 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 70 2 1 68 2 0 5 2 0.0 0.0 158.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -59 1 1 0 24 2 29 1 1 3 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 8 2 2 69 2 0 6 2 0.0 0.0 159.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -60 1 1 0 25 1 30 1 1 7 1 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 72 2 1 70 2 0 7 2 0.0 0.0 160.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -61 1 1 0 26 2 31 1 1 2 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 73 2 2 71 2 0 8 2 0.0 0.0 161.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -62 1 1 0 27 1 32 1 1 3 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 74 2 1 72 2 0 9 2 0.0 0.0 162.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -63 1 1 0 28 2 33 1 1 1 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 75 2 2 73 2 0 10 2 0.0 0.0 163.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 -64 1 1 0 29 1 34 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 1 74 2 0 11 2 0.0 0.0 164.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -65 1 1 0 30 2 35 1 1 7 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 77 1 6 2 75 2 0 12 2 0.0 0.0 165.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -66 1 1 0 31 1 36 1 1 1 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 78 2 1 76 2 0 13 2 0.0 0.0 166.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -67 1 1 0 32 2 37 1 1 2 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 79 2 2 77 2 0 14 2 0.0 0.0 167.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -68 1 1 0 33 1 38 1 1 3 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 1 78 2 0 15 2 0.0 0.0 168.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -69 1 1 0 34 2 39 1 1 1 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 81 2 2 79 2 0 16 2 0.0 0.0 169.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -70 1 1 0 35 1 40 1 1 7 2 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 82 2 1 80 2 0 17 2 0.0 0.0 170.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 1 1 2.0 3.0 5.0 4 -71 1 1 0 36 2 41 1 1 3 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 83 2 2 81 2 0 18 2 0.0 0.0 171.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -72 1 1 0 37 1 42 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 84 2 1 82 2 0 1 2 0.0 0.0 172.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -73 1 1 0 38 2 43 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 2 83 2 0 2 2 0.0 0.0 173.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -74 1 1 0 39 1 44 1 1 3 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 86 2 1 84 2 0 3 2 0.0 0.0 174.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -75 1 1 0 40 2 20 1 1 7 1 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 87 2 2 85 2 0 4 2 0.0 0.0 175.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -76 1 1 0 41 1 21 1 1 2 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 88 2 1 86 2 0 5 2 0.0 0.0 176.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -77 1 1 0 42 2 22 1 1 3 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 2 87 2 0 6 2 0.0 0.0 177.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 -78 1 1 0 43 1 23 1 1 1 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 90 1 7 1 88 2 0 7 2 0.0 0.0 178.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -79 1 1 0 44 2 24 1 1 2 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 91 2 2 89 2 0 8 2 0.0 0.0 179.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -80 1 1 0 45 1 25 1 1 7 3 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 92 2 1 10 2 0 9 2 0.0 0.0 180.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -81 1 1 0 46 2 26 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 93 2 2 11 2 0 10 2 0.0 0.0 181.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -82 1 1 0 47 1 27 1 1 2 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 4 2 1 12 2 0 11 2 0.0 0.0 182.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -83 1 1 0 48 2 28 1 1 3 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 95 2 2 13 2 0 12 2 0.0 0.0 183.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -84 1 1 0 49 1 29 1 1 1 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 96 2 1 14 2 0 13 2 0.0 0.0 184.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 -85 1 1 0 50 2 30 1 1 7 2 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 97 2 2 15 2 0 14 2 0.0 0.0 185.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -86 1 1 0 51 1 31 1 1 3 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 1 16 2 0 15 2 0.0 0.0 186.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -87 1 1 0 52 2 32 1 1 1 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 99 2 2 17 2 0 16 2 0.0 0.0 187.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -88 1 1 0 53 1 33 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 2 1 18 2 0 17 2 0.0 0.0 188.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -89 1 1 0 54 2 34 1 1 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 101 2 2 19 2 0 18 2 0.0 0.0 189.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -90 1 1 0 55 1 35 1 1 7 1 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 102 2 1 20 2 0 1 2 0.0 0.0 190.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -91 1 1 0 56 2 36 1 1 2 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 4 1 8 2 21 2 0 2 2 0.0 0.0 191.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 5 -92 1 1 0 57 1 37 1 1 3 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 104 2 1 22 2 0 3 2 0.0 0.0 192.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -93 1 1 0 58 2 38 1 1 1 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 105 2 2 23 2 0 4 2 0.0 0.0 193.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -94 1 1 0 59 1 39 1 1 2 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 106 2 1 24 2 0 5 2 0.0 0.0 194.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -95 1 1 0 60 2 40 1 1 7 3 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 2 25 2 0 6 2 0.0 0.0 195.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -96 1 1 0 61 1 41 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 108 2 1 26 2 0 7 2 0.0 0.0 196.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -97 1 1 0 62 2 42 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 109 2 2 27 2 0 8 2 0.0 0.0 197.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -98 1 1 0 63 1 43 1 1 3 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 110 2 1 28 2 0 9 2 0.0 0.0 198.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 -99 1 1 0 64 2 44 1 1 1 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 111 2 2 29 2 0 10 2 0.0 0.0 199.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -100 1 1 0 65 1 20 1 1 7 2 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 1 30 2 0 11 2 0.0 0.0 200.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -101 1 1 0 66 2 21 1 1 3 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 13 2 2 31 2 0 12 2 0.0 0.0 201.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -102 1 1 0 67 1 22 1 1 1 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 14 2 1 32 2 0 13 2 0.0 0.0 202.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -103 1 1 0 68 2 23 1 1 2 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 2 2 33 2 0 14 2 0.0 0.0 203.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -104 1 1 0 69 1 24 1 1 3 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 9 1 34 2 0 15 2 0.0 0.0 204.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -105 1 1 0 70 2 25 1 1 7 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 17 2 2 35 2 0 16 2 0.0 0.0 205.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 1 1 2.0 3.0 5.0 4 -106 1 1 0 71 1 26 1 1 2 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 18 2 1 36 2 0 17 2 0.0 0.0 206.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -107 1 1 0 72 2 27 1 1 3 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 19 2 2 37 2 0 18 2 0.0 0.0 207.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -108 1 1 0 73 1 28 1 1 1 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 20 2 1 38 2 0 1 2 0.0 0.0 208.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -109 1 1 0 74 2 29 1 1 2 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 2 39 2 0 2 2 0.0 0.0 209.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -110 1 1 0 20 1 30 1 1 7 3 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 22 2 1 40 2 0 3 2 0.0 0.0 210.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -111 1 1 0 21 2 31 1 1 1 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 2 2 41 2 0 4 2 0.0 0.0 211.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -112 1 1 0 22 1 32 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 24 2 1 42 2 0 5 2 0.0 0.0 212.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 -113 1 1 0 23 2 33 1 1 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 2 43 2 0 6 2 0.0 0.0 213.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -114 1 1 0 24 1 34 1 1 1 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 26 2 1 44 2 0 7 2 0.0 0.0 214.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -115 1 1 0 25 2 35 1 1 7 2 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 27 2 2 45 2 0 8 2 0.0 0.0 215.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -116 1 1 0 26 1 36 1 1 3 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 28 2 1 46 2 0 9 2 0.0 0.0 216.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -117 1 1 0 27 2 37 1 1 1 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 29 1 10 2 47 2 0 10 2 0.0 0.0 217.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -118 1 1 0 28 1 38 1 1 2 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 1 48 2 0 11 2 0.0 0.0 218.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -119 1 1 0 29 2 39 1 1 3 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 31 2 2 49 2 0 12 2 0.0 0.0 219.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 -120 1 1 0 30 1 40 1 1 7 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32 2 1 50 2 0 13 2 0.0 0.0 220.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -121 1 1 0 31 2 41 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 33 2 2 51 2 0 14 2 0.0 0.0 221.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -122 1 1 0 32 1 42 1 1 3 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 8 2 1 52 2 0 15 2 0.0 0.0 222.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -123 1 1 0 33 2 43 1 1 1 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 35 2 2 53 2 0 16 2 0.0 0.0 223.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -124 1 1 0 34 1 44 1 1 2 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 36 2 1 54 2 0 17 2 0.0 0.0 224.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -125 1 1 0 35 2 20 1 1 7 3 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 37 2 2 55 2 0 18 2 0.0 0.0 225.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -126 1 1 0 36 1 21 1 1 1 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 38 2 1 56 2 0 1 2 0.0 0.0 226.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 5 -127 1 1 0 37 2 22 1 1 2 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 2 57 2 0 2 2 0.0 0.0 227.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -128 1 1 0 38 1 23 1 1 3 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 40 2 1 58 2 0 3 2 0.0 0.0 228.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -129 1 1 0 39 2 24 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 41 2 2 59 2 0 4 2 0.0 0.0 229.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -130 1 1 0 40 1 25 1 1 7 2 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 42 1 11 1 60 2 0 5 2 0.0 0.0 230.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 -131 1 1 0 41 2 26 1 1 3 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 8 2 2 61 2 0 6 2 0.0 0.0 231.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 -132 1 1 0 42 1 27 1 1 1 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 44 2 1 62 2 0 7 2 0.0 0.0 232.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -133 1 1 0 43 2 28 1 1 2 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 45 2 2 63 2 0 8 2 0.0 0.0 233.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 -134 1 1 0 44 1 29 1 1 3 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 46 2 1 64 2 0 9 2 0.0 0.0 234.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 -135 1 1 0 45 2 30 1 1 7 1 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 47 2 2 65 2 0 10 2 0.0 0.0 235.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +SERNUM BENUNIT PERSON AGE80 AGE SEX TOTHOURS HRPID UPERSON RELHRP R01 R02 R03 R04 R05 R06 R07 R08 R09 R10 R11 R12 R13 R14 MARITAL EMPSTATI SAMESIT SRENTAMT CONVBL SDEMP01 SDEMP02 SDEMP03 SDEMP04 SDEMP05 SDEMP06 SDEMP07 SDEMP08 SDEMP09 SDEMP10 SDEMP11 SDEMP12 SELFDEMP WORKING JOBAWAY NUMJOB2 CURRJOBM PREVJOBM LSTWRK1 LSTWRK2 LSTYR RETIRE RETIRE1 MJOBSECT SIC FTED TYPEED2 EDUCQUAL TRAINEE EMAAMT CHEMAAMT INEARNS SEINCAM2 MNTUS1 MNTUSAM1 MNTAMT1 MNTAMT2 CVPAY ROYYR1 ROYYR2 ROYYR3 ROYYR4 ALLPAY2 ALLPAY3 ALLPAY4 CHAMTERN CHAMTTST APAMT APDAMT ALIUS ALUAMT ALIAMT PAREAMT REDAMT SLREPAMT SLOS EDUCLEFT SSPADJ SMPADJ SPPADJ TUBORR ACCSSAMT ACCSSPD SPCREG1 SPCREG2 GRTDIR1 GRTDIR2 HEARTVAL HOURTOT +1 1 1 0 80 2 21 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 2 11 2 0 2 2 0.0 0.0 101.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +2 1 1 0 22 1 22 1 1 3 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 14 2 1 12 2 0 3 2 0.0 0.0 102.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +3 1 1 0 23 2 23 1 1 1 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 15 2 2 13 2 0 4 2 0.0 0.0 103.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +4 1 1 0 24 1 24 1 1 2 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 2 1 14 2 0 5 2 0.0 0.0 104.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +5 1 1 0 25 2 25 1 1 7 3 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 2 15 2 0 6 2 0.0 0.0 105.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +6 1 1 0 26 1 26 1 1 1 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 18 2 1 16 2 0 7 2 0.0 0.0 106.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +7 1 1 0 27 2 27 1 1 2 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 19 2 2 17 2 0 8 2 0.0 0.0 107.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 +8 1 1 0 28 1 28 1 1 3 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 20 2 1 18 2 0 9 2 0.0 0.0 108.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +9 1 1 0 29 2 29 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 21 2 2 19 2 0 10 2 0.0 0.0 109.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +10 1 1 0 30 1 30 1 1 7 2 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 4 2 1 20 2 0 11 2 0.0 0.0 110.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +11 1 1 0 31 2 31 1 1 3 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 23 2 2 21 2 0 12 2 0.0 0.0 111.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +12 1 1 0 32 1 32 1 1 1 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 24 2 1 22 2 0 13 2 0.0 0.0 112.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +13 1 1 0 33 2 33 1 1 2 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 25 1 2 2 23 2 0 14 2 0.0 0.0 113.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +14 1 1 0 34 1 34 1 1 3 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 1 24 2 0 15 2 0.0 0.0 114.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 +15 1 1 0 35 2 35 1 1 7 1 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 27 2 2 25 2 0 16 2 0.0 0.0 115.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +16 1 1 0 36 1 36 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 28 2 1 26 2 0 17 2 0.0 0.0 116.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +17 1 1 0 37 2 37 1 1 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 29 2 2 27 2 0 18 2 0.0 0.0 117.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +18 1 1 0 38 1 38 1 1 1 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 30 2 1 28 2 0 1 2 0.0 0.0 118.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +19 1 1 0 39 2 39 1 1 2 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 4 2 2 29 2 0 2 2 0.0 0.0 119.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +20 1 1 0 40 1 40 1 1 7 3 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32 2 1 30 2 0 3 2 0.0 0.0 120.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +21 1 1 0 41 2 41 1 1 1 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 33 2 2 31 2 0 4 2 0.0 0.0 121.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 5 +22 1 1 0 42 1 42 1 1 2 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 34 2 1 32 2 0 5 2 0.0 0.0 122.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +23 1 1 0 43 2 43 1 1 3 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 2 33 2 0 6 2 0.0 0.0 123.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +24 1 1 0 44 1 44 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 36 2 1 34 2 0 7 2 0.0 0.0 124.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +25 1 1 0 45 2 20 1 1 7 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 37 2 2 35 2 0 8 2 0.0 0.0 125.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +26 1 1 0 46 1 21 1 1 3 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 38 1 3 1 36 2 0 9 2 0.0 0.0 126.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +27 1 1 0 47 2 22 1 1 1 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 39 2 2 37 2 0 10 2 0.0 0.0 127.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +28 1 1 0 48 1 23 1 1 2 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 1 38 2 0 11 2 0.0 0.0 128.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 +29 1 1 0 49 2 24 1 1 3 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 41 2 2 39 2 0 12 2 0.0 0.0 129.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +30 1 1 0 50 1 25 1 1 7 1 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 42 2 1 40 2 0 13 2 0.0 0.0 130.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +31 1 1 0 51 2 26 1 1 2 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 43 2 2 41 2 0 14 2 0.0 0.0 131.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +32 1 1 0 52 1 27 1 1 3 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 1 42 2 0 15 2 0.0 0.0 132.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +33 1 1 0 53 2 28 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 45 2 2 43 2 0 16 2 0.0 0.0 133.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +34 1 1 0 54 1 29 1 1 2 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 46 2 1 44 2 0 17 2 0.0 0.0 134.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +35 1 1 0 55 2 30 1 1 7 3 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 47 2 2 45 2 0 18 2 0.0 0.0 135.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 1 1 2.0 3.0 5.0 4 +36 1 1 0 56 1 31 1 1 1 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 48 2 1 46 2 0 1 2 0.0 0.0 136.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +37 1 1 0 57 2 32 1 1 2 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 2 47 2 0 2 2 0.0 0.0 137.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +38 1 1 0 58 1 33 1 1 3 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 50 2 1 48 2 0 3 2 0.0 0.0 138.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +39 1 1 0 59 2 34 1 1 1 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 51 1 4 2 49 2 0 4 2 0.0 0.0 139.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +40 1 1 0 60 1 35 1 1 7 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 52 2 1 50 2 0 5 2 0.0 0.0 140.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +41 1 1 0 61 2 36 1 1 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 2 51 2 0 6 2 0.0 0.0 141.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +42 1 1 0 62 1 37 1 1 1 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 54 2 1 52 2 0 7 2 0.0 0.0 142.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 +43 1 1 0 63 2 38 1 1 2 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 55 2 2 53 2 0 8 2 0.0 0.0 143.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +44 1 1 0 64 1 39 1 1 3 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 56 2 1 54 2 0 9 2 0.0 0.0 144.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +45 1 1 0 65 2 40 1 1 7 1 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 57 2 2 55 2 0 10 2 0.0 0.0 145.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +46 1 1 0 66 1 41 1 1 2 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 1 56 2 0 11 2 0.0 0.0 146.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +47 1 1 0 67 2 42 1 1 3 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 59 2 2 57 2 0 12 2 0.0 0.0 147.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +48 1 1 0 68 1 43 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 60 2 1 58 2 0 13 2 0.0 0.0 148.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +49 1 1 0 69 2 44 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 61 2 2 59 2 0 14 2 0.0 0.0 149.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 +50 1 1 0 70 1 20 1 1 7 3 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 8 2 1 60 2 0 15 2 0.0 0.0 150.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +51 1 1 0 71 2 21 1 1 1 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 63 2 2 61 2 0 16 2 0.0 0.0 151.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +52 1 1 0 72 1 22 1 1 2 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 64 1 5 1 62 2 0 17 2 0.0 0.0 152.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +53 1 1 0 73 2 23 1 1 3 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 65 2 2 63 2 0 18 2 0.0 0.0 153.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +54 1 1 0 74 1 24 1 1 1 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 66 2 1 64 2 0 1 2 0.0 0.0 154.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +55 1 1 0 20 2 25 1 1 7 2 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 2 65 2 0 2 2 0.0 0.0 155.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +56 1 1 0 21 1 26 1 1 3 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 68 2 1 66 2 0 3 2 0.0 0.0 156.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 5 +57 1 1 0 22 2 27 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 69 2 2 67 2 0 4 2 0.0 0.0 157.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +58 1 1 0 23 1 28 1 1 2 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 70 2 1 68 2 0 5 2 0.0 0.0 158.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +59 1 1 0 24 2 29 1 1 3 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 8 2 2 69 2 0 6 2 0.0 0.0 159.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +60 1 1 0 25 1 30 1 1 7 1 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 72 2 1 70 2 0 7 2 0.0 0.0 160.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +61 1 1 0 26 2 31 1 1 2 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 73 2 2 71 2 0 8 2 0.0 0.0 161.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +62 1 1 0 27 1 32 1 1 3 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 74 2 1 72 2 0 9 2 0.0 0.0 162.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +63 1 1 0 28 2 33 1 1 1 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 75 2 2 73 2 0 10 2 0.0 0.0 163.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 +64 1 1 0 29 1 34 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 1 74 2 0 11 2 0.0 0.0 164.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +65 1 1 0 30 2 35 1 1 7 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 77 1 6 2 75 2 0 12 2 0.0 0.0 165.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +66 1 1 0 31 1 36 1 1 1 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 78 2 1 76 2 0 13 2 0.0 0.0 166.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +67 1 1 0 32 2 37 1 1 2 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 79 2 2 77 2 0 14 2 0.0 0.0 167.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +68 1 1 0 33 1 38 1 1 3 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 1 78 2 0 15 2 0.0 0.0 168.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +69 1 1 0 34 2 39 1 1 1 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 81 2 2 79 2 0 16 2 0.0 0.0 169.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +70 1 1 0 35 1 40 1 1 7 2 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 82 2 1 80 2 0 17 2 0.0 0.0 170.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 1 1 2.0 3.0 5.0 4 +71 1 1 0 36 2 41 1 1 3 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 83 2 2 81 2 0 18 2 0.0 0.0 171.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +72 1 1 0 37 1 42 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 84 2 1 82 2 0 1 2 0.0 0.0 172.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +73 1 1 0 38 2 43 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 2 83 2 0 2 2 0.0 0.0 173.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +74 1 1 0 39 1 44 1 1 3 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 86 2 1 84 2 0 3 2 0.0 0.0 174.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +75 1 1 0 40 2 20 1 1 7 1 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 87 2 2 85 2 0 4 2 0.0 0.0 175.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +76 1 1 0 41 1 21 1 1 2 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 88 2 1 86 2 0 5 2 0.0 0.0 176.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +77 1 1 0 42 2 22 1 1 3 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 2 87 2 0 6 2 0.0 0.0 177.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 +78 1 1 0 43 1 23 1 1 1 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 90 1 7 1 88 2 0 7 2 0.0 0.0 178.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +79 1 1 0 44 2 24 1 1 2 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 91 2 2 89 2 0 8 2 0.0 0.0 179.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +80 1 1 0 45 1 25 1 1 7 3 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 92 2 1 10 2 0 9 2 0.0 0.0 180.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +81 1 1 0 46 2 26 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 93 2 2 11 2 0 10 2 0.0 0.0 181.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +82 1 1 0 47 1 27 1 1 2 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 4 2 1 12 2 0 11 2 0.0 0.0 182.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +83 1 1 0 48 2 28 1 1 3 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 95 2 2 13 2 0 12 2 0.0 0.0 183.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +84 1 1 0 49 1 29 1 1 1 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 96 2 1 14 2 0 13 2 0.0 0.0 184.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 +85 1 1 0 50 2 30 1 1 7 2 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 97 2 2 15 2 0 14 2 0.0 0.0 185.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +86 1 1 0 51 1 31 1 1 3 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 1 16 2 0 15 2 0.0 0.0 186.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +87 1 1 0 52 2 32 1 1 1 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 99 2 2 17 2 0 16 2 0.0 0.0 187.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +88 1 1 0 53 1 33 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 2 1 18 2 0 17 2 0.0 0.0 188.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +89 1 1 0 54 2 34 1 1 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 101 2 2 19 2 0 18 2 0.0 0.0 189.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +90 1 1 0 55 1 35 1 1 7 1 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 102 2 1 20 2 0 1 2 0.0 0.0 190.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +91 1 1 0 56 2 36 1 1 2 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 4 1 8 2 21 2 0 2 2 0.0 0.0 191.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 5 +92 1 1 0 57 1 37 1 1 3 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 104 2 1 22 2 0 3 2 0.0 0.0 192.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +93 1 1 0 58 2 38 1 1 1 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 105 2 2 23 2 0 4 2 0.0 0.0 193.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +94 1 1 0 59 1 39 1 1 2 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 106 2 1 24 2 0 5 2 0.0 0.0 194.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +95 1 1 0 60 2 40 1 1 7 3 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 2 25 2 0 6 2 0.0 0.0 195.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +96 1 1 0 61 1 41 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 108 2 1 26 2 0 7 2 0.0 0.0 196.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +97 1 1 0 62 2 42 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 109 2 2 27 2 0 8 2 0.0 0.0 197.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +98 1 1 0 63 1 43 1 1 3 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 110 2 1 28 2 0 9 2 0.0 0.0 198.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 +99 1 1 0 64 2 44 1 1 1 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 111 2 2 29 2 0 10 2 0.0 0.0 199.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +100 1 1 0 65 1 20 1 1 7 2 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 1 30 2 0 11 2 0.0 0.0 200.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +101 1 1 0 66 2 21 1 1 3 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 13 2 2 31 2 0 12 2 0.0 0.0 201.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +102 1 1 0 67 1 22 1 1 1 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 14 2 1 32 2 0 13 2 0.0 0.0 202.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +103 1 1 0 68 2 23 1 1 2 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 2 2 33 2 0 14 2 0.0 0.0 203.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +104 1 1 0 69 1 24 1 1 3 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 9 1 34 2 0 15 2 0.0 0.0 204.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +105 1 1 0 70 2 25 1 1 7 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 17 2 2 35 2 0 16 2 0.0 0.0 205.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 1 1 2.0 3.0 5.0 4 +106 1 1 0 71 1 26 1 1 2 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 18 2 1 36 2 0 17 2 0.0 0.0 206.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +107 1 1 0 72 2 27 1 1 3 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 19 2 2 37 2 0 18 2 0.0 0.0 207.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +108 1 1 0 73 1 28 1 1 1 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 20 2 1 38 2 0 1 2 0.0 0.0 208.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +109 1 1 0 74 2 29 1 1 2 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 2 39 2 0 2 2 0.0 0.0 209.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +110 1 1 0 20 1 30 1 1 7 3 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 22 2 1 40 2 0 3 2 0.0 0.0 210.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +111 1 1 0 21 2 31 1 1 1 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 2 2 41 2 0 4 2 0.0 0.0 211.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +112 1 1 0 22 1 32 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 24 2 1 42 2 0 5 2 0.0 0.0 212.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 +113 1 1 0 23 2 33 1 1 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2 2 43 2 0 6 2 0.0 0.0 213.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +114 1 1 0 24 1 34 1 1 1 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 26 2 1 44 2 0 7 2 0.0 0.0 214.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +115 1 1 0 25 2 35 1 1 7 2 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 27 2 2 45 2 0 8 2 0.0 0.0 215.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +116 1 1 0 26 1 36 1 1 3 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 28 2 1 46 2 0 9 2 0.0 0.0 216.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +117 1 1 0 27 2 37 1 1 1 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 29 1 10 2 47 2 0 10 2 0.0 0.0 217.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +118 1 1 0 28 1 38 1 1 2 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 1 48 2 0 11 2 0.0 0.0 218.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +119 1 1 0 29 2 39 1 1 3 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 31 2 2 49 2 0 12 2 0.0 0.0 219.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 +120 1 1 0 30 1 40 1 1 7 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32 2 1 50 2 0 13 2 0.0 0.0 220.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +121 1 1 0 31 2 41 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 33 2 2 51 2 0 14 2 0.0 0.0 221.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +122 1 1 0 32 1 42 1 1 3 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 8 2 1 52 2 0 15 2 0.0 0.0 222.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +123 1 1 0 33 2 43 1 1 1 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 35 2 2 53 2 0 16 2 0.0 0.0 223.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +124 1 1 0 34 1 44 1 1 2 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 36 2 1 54 2 0 17 2 0.0 0.0 224.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +125 1 1 0 35 2 20 1 1 7 3 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 37 2 2 55 2 0 18 2 0.0 0.0 225.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +126 1 1 0 36 1 21 1 1 1 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 38 2 1 56 2 0 1 2 0.0 0.0 226.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 5 +127 1 1 0 37 2 22 1 1 2 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 2 57 2 0 2 2 0.0 0.0 227.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +128 1 1 0 38 1 23 1 1 3 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 40 2 1 58 2 0 3 2 0.0 0.0 228.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 16 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +129 1 1 0 39 2 24 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 41 2 2 59 2 0 4 2 0.0 0.0 229.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 17 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +130 1 1 0 40 1 25 1 1 7 2 3 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 1 42 1 11 1 60 2 0 5 2 0.0 0.0 230.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 18 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 +131 1 1 0 41 2 26 1 1 3 4 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 8 2 2 61 2 0 6 2 0.0 0.0 231.0 1.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 19 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 5 +132 1 1 0 42 1 27 1 1 1 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 44 2 1 62 2 0 7 2 0.0 0.0 232.0 2.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 20 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +133 1 1 0 43 2 28 1 1 2 6 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 45 2 2 63 2 0 8 2 0.0 0.0 233.0 3.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 21 1.0 0.5 0.25 500.0 1.0 52.0 1 2 2.0 3.0 5.0 4 +134 1 1 0 44 1 29 1 1 3 7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 46 2 1 64 2 0 9 2 0.0 0.0 234.0 4.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 22 1.0 0.5 0.25 500.0 1.0 52.0 2 2 2.0 3.0 5.0 0 +135 1 1 0 45 2 30 1 1 7 1 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 47 2 2 65 2 0 10 2 0.0 0.0 235.0 0.0 2 1.0 2.0 1.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 2 3.0 4.0 13.0 20.0 2.0 2 23 1.0 0.5 0.25 500.0 1.0 52.0 2 1 2.0 3.0 5.0 0 diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/frs_raw/job.tab b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/frs_raw/job.tab index ec303f3b13..10b3d292c9 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/frs_raw/job.tab +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/frs_raw/job.tab @@ -1,136 +1,136 @@ -SERNUM BENUNIT PERSON DEDUC1 SPNAMT SALSAC JOBSECT ETYPE JOBTYPE SEEND SEJBLONG JOBBUS DIRECTOR NATURE DIRPERC DIVIDEND FTPT WRKPREV UGROSS UGRSPAY SEJBMTHS SELWKS SEINCAMT PROFIT1 PROFIT2 -1 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 1 101.0 -2 1 1 2.0 3.0 1 1 4 1 2.0 1 2 4 -1 0.0 1 -3 1 1 2.0 3.0 1 2 4 1 0.0 2 2 4 -1 0.0 1 5.0 -4 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 104.0 -5 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 1 105.0 -6 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 103.92 106.0 -7 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 107.0 -8 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 108.0 -9 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 106.86 109.0 -10 1 1 2.0 3.0 1 1 4 1 1.0 1 1 4 2 1000.0 1 3 -11 1 1 2.0 3.0 1 2 4 1 2.0 2 2 4 -1 0.0 1 -12 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 109.8 112.0 -13 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 113.0 -14 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 3 114.0 -15 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 112.75 115.0 -16 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 116.0 -17 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 117.0 -18 1 1 2.0 3.0 1 1 4 1 0.0 1 2 4 -1 0.0 1 5.0 -19 1 1 2.0 3.0 1 2 4 1 1.0 2 2 4 -1 0.0 1 3 -20 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 1 120.0 -21 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 118.63 121.0 -22 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 122.0 -23 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 3 123.0 -24 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 121.57 124.0 -25 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 125.0 -26 1 1 2.0 3.0 1 1 4 1 2.0 1 2 4 -1 0.0 1 -27 1 1 2.0 3.0 1 2 4 1 0.0 2 2 4 -1 0.0 1 5.0 -28 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 1 128.0 -29 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 129.0 -30 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 1 127.45 130.0 -31 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 131.0 -32 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 1 132.0 -33 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 130.39 133.0 -34 1 1 2.0 3.0 1 1 4 1 1.0 1 2 4 -1 0.0 1 -35 1 1 2.0 3.0 1 2 4 1 2.0 2 2 4 -1 0.0 1 -36 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 133.33 136.0 -37 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 1 137.0 -38 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 138.0 -39 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 136.27 139.0 -40 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 1 140.0 -41 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 1 141.0 -42 1 1 2.0 3.0 1 1 4 1 0.0 1 2 4 -1 0.0 1 5.0 -43 1 1 2.0 3.0 1 2 4 1 1.0 2 2 4 -1 0.0 1 -44 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 144.0 -45 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 142.16 145.0 -46 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 3 146.0 -47 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 147.0 -48 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 145.1 148.0 -49 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 149.0 -50 1 1 2.0 3.0 1 1 4 1 2.0 1 1 4 2 1000.0 1 3 -51 1 1 2.0 3.0 1 2 4 1 0.0 2 2 4 -1 0.0 1 5.0 -52 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 152.0 -53 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 153.0 -54 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 150.98 154.0 -55 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 3 155.0 -56 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 156.0 -57 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 153.92 157.0 -58 1 1 2.0 3.0 1 1 4 1 1.0 1 2 4 -1 0.0 1 -59 1 1 2.0 3.0 1 2 4 1 2.0 2 2 4 -1 0.0 1 3 -60 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 1 156.86 160.0 -61 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 161.0 -62 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 162.0 -63 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 159.8 163.0 -64 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 1 164.0 -65 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 165.0 -66 1 1 2.0 3.0 1 1 4 1 0.0 1 2 4 -1 0.0 1 5.0 -67 1 1 2.0 3.0 1 2 4 1 1.0 2 2 4 -1 0.0 1 -68 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 1 168.0 -69 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 165.69 169.0 -70 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 1 170.0 -71 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 171.0 -72 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 168.63 172.0 -73 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 1 173.0 -74 1 1 2.0 3.0 1 1 4 1 2.0 1 2 4 -1 0.0 1 -75 1 1 2.0 3.0 1 2 4 1 0.0 2 2 4 -1 0.0 1 5.0 -76 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 176.0 -77 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 1 177.0 -78 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 174.51 178.0 -79 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 179.0 -80 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 1 180.0 -81 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 177.45 181.0 -82 1 1 2.0 3.0 1 1 4 1 1.0 1 2 4 -1 0.0 1 3 -83 1 1 2.0 3.0 1 2 4 1 2.0 2 2 4 -1 0.0 1 -84 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 180.39 184.0 -85 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 185.0 -86 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 3 186.0 -87 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 183.33 187.0 -88 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 188.0 -89 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 189.0 -90 1 1 2.0 3.0 1 1 4 1 0.0 1 1 4 2 1000.0 1 5.0 -91 1 1 2.0 3.0 1 2 4 1 1.0 2 2 4 -1 0.0 1 3 -92 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 192.0 -93 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 189.22 193.0 -94 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 194.0 -95 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 3 195.0 -96 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 192.16 196.0 -97 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 197.0 -98 1 1 2.0 3.0 1 1 4 1 2.0 1 2 4 -1 0.0 1 -99 1 1 2.0 3.0 1 2 4 1 0.0 2 2 4 -1 0.0 1 5.0 -100 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 1 1 200.0 -101 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 201.0 -102 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 198.04 202.0 -103 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 203.0 -104 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 1 204.0 -105 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 200.98 205.0 -106 1 1 2.0 3.0 1 1 4 1 1.0 1 2 4 -1 0.0 1 -107 1 1 2.0 3.0 1 2 4 1 2.0 2 2 4 -1 0.0 1 -108 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 203.92 208.0 -109 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 1 209.0 -110 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 1 210.0 -111 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 206.86 211.0 -112 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 212.0 -113 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 1 213.0 -114 1 1 2.0 3.0 1 1 4 1 0.0 1 2 4 -1 0.0 1 5.0 -115 1 1 2.0 3.0 1 2 4 1 1.0 2 2 4 -1 0.0 1 -116 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 216.0 -117 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 212.75 217.0 -118 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 3 218.0 -119 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 219.0 -120 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 1 215.69 220.0 -121 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 221.0 -122 1 1 2.0 3.0 1 1 4 1 2.0 1 2 4 -1 0.0 1 3 -123 1 1 2.0 3.0 1 2 4 1 0.0 2 2 4 -1 0.0 1 5.0 -124 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 224.0 -125 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 225.0 -126 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 221.57 226.0 -127 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 3 227.0 -128 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 228.0 -129 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 224.51 229.0 -130 1 1 2.0 3.0 1 1 4 1 1.0 1 1 4 2 1000.0 1 -131 1 1 2.0 3.0 1 2 4 1 2.0 2 2 4 -1 0.0 1 3 -132 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 227.45 232.0 -133 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 233.0 -134 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 234.0 -135 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 230.39 235.0 +SERNUM BENUNIT PERSON DEDUC1 SPNAMT SALSAC JOBSECT ETYPE JOBTYPE SEEND SEJBLONG JOBBUS DIRECTOR NATURE DIRPERC DIVIDEND BONAMT1 BONAMT2 BONAMT3 BONAMT4 BONAMT5 BONAMT6 BONTAX1 BONTAX2 BONTAX3 BONTAX4 BONTAX5 BONTAX6 BONTXAM1 BONTXAM2 BONTXAM3 BONTXAM4 BONTXAM5 BONTXAM6 FTPT WRKPREV UGROSS UGRSPAY SEJBMTHS SELWKS SEINCAMT PROFIT1 PROFIT2 +1 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 1 101.0 +2 1 1 2.0 3.0 1 1 4 1 2.0 1 2 4 -1 0.0 1 +3 1 1 2.0 3.0 1 2 4 1 0.0 2 2 4 -1 0.0 1 5.0 +4 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 104.0 +5 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1000.0 2 3.0 1 1 105.0 +6 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 103.92 106.0 +7 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 107.0 +8 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 108.0 +9 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 106.86 109.0 +10 1 1 2.0 3.0 1 1 4 1 1.0 1 1 4 2 1000.0 800.0 1 1 3 +11 1 1 2.0 3.0 1 2 4 1 2.0 2 2 4 -1 0.0 1 +12 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 109.8 112.0 +13 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 113.0 +14 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 3 114.0 +15 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 600.0 2 3.0 1 112.75 115.0 +16 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 116.0 +17 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 117.0 +18 1 1 2.0 3.0 1 1 4 1 0.0 1 2 4 -1 0.0 1 5.0 +19 1 1 2.0 3.0 1 2 4 1 1.0 2 2 4 -1 0.0 1 3 +20 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 1100.0 1 1 120.0 +21 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 118.63 121.0 +22 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 122.0 +23 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 3 123.0 +24 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 121.57 124.0 +25 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 900.0 2 3.0 2 125.0 +26 1 1 2.0 3.0 1 1 4 1 2.0 1 2 4 -1 0.0 1 +27 1 1 2.0 3.0 1 2 4 1 0.0 2 2 4 -1 0.0 1 5.0 +28 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 1 128.0 +29 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 129.0 +30 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 700.0 1 1 127.45 130.0 +31 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 131.0 +32 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 1 132.0 +33 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 130.39 133.0 +34 1 1 2.0 3.0 1 1 4 1 1.0 1 2 4 -1 0.0 1 +35 1 1 2.0 3.0 1 2 4 1 2.0 2 2 4 -1 0.0 500.0 2 3.0 1 +36 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 133.33 136.0 +37 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 1 137.0 +38 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 138.0 +39 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 136.27 139.0 +40 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 1000.0 1 1 140.0 +41 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 1 141.0 +42 1 1 2.0 3.0 1 1 4 1 0.0 1 2 4 -1 0.0 1 5.0 +43 1 1 2.0 3.0 1 2 4 1 1.0 2 2 4 -1 0.0 1 +44 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 144.0 +45 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 800.0 2 3.0 1 142.16 145.0 +46 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 3 146.0 +47 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 147.0 +48 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 145.1 148.0 +49 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 149.0 +50 1 1 2.0 3.0 1 1 4 1 2.0 1 1 4 2 1000.0 600.0 1 1 3 +51 1 1 2.0 3.0 1 2 4 1 0.0 2 2 4 -1 0.0 1 5.0 +52 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 152.0 +53 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 153.0 +54 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 150.98 154.0 +55 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1100.0 2 3.0 1 3 155.0 +56 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 156.0 +57 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 153.92 157.0 +58 1 1 2.0 3.0 1 1 4 1 1.0 1 2 4 -1 0.0 1 +59 1 1 2.0 3.0 1 2 4 1 2.0 2 2 4 -1 0.0 1 3 +60 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 900.0 1 1 156.86 160.0 +61 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 161.0 +62 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 162.0 +63 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 159.8 163.0 +64 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 1 164.0 +65 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 700.0 2 3.0 2 165.0 +66 1 1 2.0 3.0 1 1 4 1 0.0 1 2 4 -1 0.0 1 5.0 +67 1 1 2.0 3.0 1 2 4 1 1.0 2 2 4 -1 0.0 1 +68 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 1 168.0 +69 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 165.69 169.0 +70 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 500.0 1 1 170.0 +71 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 171.0 +72 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 168.63 172.0 +73 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 1 173.0 +74 1 1 2.0 3.0 1 1 4 1 2.0 1 2 4 -1 0.0 1 +75 1 1 2.0 3.0 1 2 4 1 0.0 2 2 4 -1 0.0 1000.0 2 3.0 1 5.0 +76 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 176.0 +77 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 1 177.0 +78 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 174.51 178.0 +79 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 179.0 +80 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 800.0 1 1 180.0 +81 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 177.45 181.0 +82 1 1 2.0 3.0 1 1 4 1 1.0 1 2 4 -1 0.0 1 3 +83 1 1 2.0 3.0 1 2 4 1 2.0 2 2 4 -1 0.0 1 +84 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 180.39 184.0 +85 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 600.0 2 3.0 1 185.0 +86 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 3 186.0 +87 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 183.33 187.0 +88 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 188.0 +89 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 189.0 +90 1 1 2.0 3.0 1 1 4 1 0.0 1 1 4 2 1000.0 1100.0 1 1 5.0 +91 1 1 2.0 3.0 1 2 4 1 1.0 2 2 4 -1 0.0 1 3 +92 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 192.0 +93 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 189.22 193.0 +94 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 194.0 +95 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 900.0 2 3.0 1 3 195.0 +96 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 192.16 196.0 +97 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 197.0 +98 1 1 2.0 3.0 1 1 4 1 2.0 1 2 4 -1 0.0 1 +99 1 1 2.0 3.0 1 2 4 1 0.0 2 2 4 -1 0.0 1 5.0 +100 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 700.0 1 1 1 200.0 +101 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 201.0 +102 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 198.04 202.0 +103 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 203.0 +104 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 1 204.0 +105 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 500.0 2 3.0 2 200.98 205.0 +106 1 1 2.0 3.0 1 1 4 1 1.0 1 2 4 -1 0.0 1 +107 1 1 2.0 3.0 1 2 4 1 2.0 2 2 4 -1 0.0 1 +108 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 203.92 208.0 +109 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 1 209.0 +110 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 1000.0 1 1 210.0 +111 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 206.86 211.0 +112 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 212.0 +113 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 1 213.0 +114 1 1 2.0 3.0 1 1 4 1 0.0 1 2 4 -1 0.0 1 5.0 +115 1 1 2.0 3.0 1 2 4 1 1.0 2 2 4 -1 0.0 800.0 2 3.0 1 +116 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 216.0 +117 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 212.75 217.0 +118 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 3 218.0 +119 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 219.0 +120 1 1 2.0 3.0 1 1 1 1 1 1 4 2 1000.0 600.0 1 1 215.69 220.0 +121 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 221.0 +122 1 1 2.0 3.0 1 1 4 1 2.0 1 2 4 -1 0.0 1 3 +123 1 1 2.0 3.0 1 2 4 1 0.0 2 2 4 -1 0.0 1 5.0 +124 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 224.0 +125 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1100.0 2 3.0 1 225.0 +126 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 221.57 226.0 +127 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 3 227.0 +128 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 228.0 +129 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 2 224.51 229.0 +130 1 1 2.0 3.0 1 1 4 1 1.0 1 1 4 2 1000.0 900.0 1 1 +131 1 1 2.0 3.0 1 2 4 1 2.0 2 2 4 -1 0.0 1 3 +132 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 227.45 232.0 +133 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 1 233.0 +134 1 1 2.0 3.0 1 1 1 1 1 2 4 -1 0.0 1 234.0 +135 1 1 2.0 3.0 1 2 1 1 2 2 4 -1 0.0 700.0 2 3.0 1 230.39 235.0 diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/household.csv b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/household.csv index 0e33e94e28..58abcd1261 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/household.csv +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/household.csv @@ -1,136 +1,136 @@ household_id,region,tenure_type,accommodation_type,num_bedrooms,council_tax_reported,council_tax_band,council_tax_rebate,council_tax_single_adult_raw,water_and_sewerage_charges,domestic_rates,rent,subrent,mortgage_interest_repayment,mortgage_capital_repayment,structural_insurance_payments,housing_service_charges,external_child_payments -1,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,9.1_0000000000000000e+02,B,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -2,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,9.2_0000000000000000e+02,C,1.0_4357142857142861e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -3,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,9.3_0000000000000000e+02,D,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -4,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,9.4_0000000000000000e+02,E,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -5,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,9.5_0000000000000000e+02,F,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -6,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,9.6_0000000000000000e+02,G,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -7,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,9.7_0000000000000000e+02,A,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -8,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,9.8_0000000000000000e+02,B,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -9,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,9.9_0000000000000000e+02,C,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -10,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.0_0000000000000000e+03,D,5.2_1785714285714306e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -11,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.0_1000000000000000e+03,E,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -12,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,0.0_0000000000000000e+00,F,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -13,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.0_3000000000000000e+03,G,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -14,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.0_4000000000000000e+03,A,1.0_4357142857142861e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -15,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.0_5000000000000000e+03,B,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -16,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.0_6000000000000000e+03,C,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -17,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.0_7000000000000000e+03,D,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -18,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.0_8000000000000000e+03,E,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -19,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.0_9000000000000000e+03,F,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -20,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.1_0000000000000000e+03,G,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -21,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.1_1000000000000000e+03,A,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -22,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.1_2000000000000000e+03,B,5.2_1785714285714306e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -23,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.1_3000000000000000e+03,C,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -24,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.1_4000000000000000e+03,D,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -25,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.1_5000000000000000e+03,E,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -26,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.1_6000000000000000e+03,F,1.0_4357142857142861e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -27,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.1_7000000000000000e+03,G,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -28,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.1_8000000000000000e+03,A,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -29,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.1_9000000000000000e+03,B,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -30,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.2_0000000000000000e+03,C,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -31,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.2_1000000000000000e+03,D,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -32,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.2_2000000000000000e+03,E,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -33,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.2_3000000000000000e+03,F,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -34,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.2_4000000000000000e+03,G,5.2_1785714285714306e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -35,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.2_5000000000000000e+03,A,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -36,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.2_6000000000000000e+03,B,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -37,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.2_7000000000000000e+03,C,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -38,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.2_8000000000000000e+03,D,1.0_4357142857142861e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -39,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.2_9000000000000000e+03,E,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -40,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.3_0000000000000000e+03,F,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -41,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.3_1000000000000000e+03,G,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -42,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.3_2000000000000000e+03,A,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -43,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.3_3000000000000000e+03,B,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -44,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.3_4000000000000000e+03,C,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -45,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.3_5000000000000000e+03,D,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -46,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.3_6000000000000000e+03,E,5.2_1785714285714306e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -47,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.3_7000000000000000e+03,F,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -48,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.3_8000000000000000e+03,G,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -49,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.3_9000000000000000e+03,A,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -50,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.4_0000000000000000e+03,B,1.0_4357142857142861e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -51,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.4_1000000000000000e+03,C,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -52,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.4_2000000000000000e+03,D,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -53,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.4_3000000000000000e+03,E,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -54,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.4_4000000000000000e+03,F,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -55,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.4_5000000000000000e+03,G,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -56,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.4_6000000000000000e+03,A,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -57,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.4_7000000000000000e+03,B,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -58,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.4_8000000000000000e+03,C,5.2_1785714285714306e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -59,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.4_9000000000000000e+03,D,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -60,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.5_0000000000000000e+03,E,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -61,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.5_1000000000000000e+03,F,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -62,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.5_2000000000000000e+03,G,1.0_4357142857142861e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -63,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.5_3000000000000000e+03,A,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -64,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.5_4000000000000000e+03,B,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -65,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.5_5000000000000000e+03,C,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -66,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.5_6000000000000000e+03,D,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -67,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.5_7000000000000000e+03,E,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -68,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.5_8000000000000000e+03,F,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -69,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.5_9000000000000000e+03,G,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -70,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.6_0000000000000000e+03,A,5.2_1785714285714306e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -71,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.6_1000000000000000e+03,B,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -72,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.6_2000000000000000e+03,C,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -73,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.6_3000000000000000e+03,D,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -74,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.6_4000000000000000e+03,E,1.0_4357142857142861e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -75,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.6_5000000000000000e+03,F,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -76,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.6_6000000000000000e+03,G,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -77,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.6_7000000000000000e+03,A,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -78,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.6_8000000000000000e+03,B,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -79,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.6_9000000000000000e+03,C,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -80,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.7_0000000000000000e+03,D,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -81,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.7_1000000000000000e+03,E,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -82,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.7_2000000000000000e+03,F,5.2_1785714285714306e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -83,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.7_3000000000000000e+03,G,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -84,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.7_4000000000000000e+03,A,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -85,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.7_5000000000000000e+03,B,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -86,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.7_6000000000000000e+03,C,1.0_4357142857142861e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -87,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.7_7000000000000000e+03,D,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -88,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.7_8000000000000000e+03,E,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -89,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.7_9000000000000000e+03,F,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -90,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.8_0000000000000000e+03,G,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -91,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.8_1000000000000000e+03,A,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -92,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.8_2000000000000000e+03,B,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -93,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.8_3000000000000000e+03,C,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -94,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.8_4000000000000000e+03,D,5.2_1785714285714306e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -95,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.8_5000000000000000e+03,E,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -96,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.8_6000000000000000e+03,F,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -97,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.8_7000000000000000e+03,G,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -98,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.8_8000000000000000e+03,A,1.0_4357142857142861e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -99,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.8_9000000000000000e+03,B,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -100,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.9_0000000000000000e+03,C,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -101,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.9_1000000000000000e+03,D,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -102,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.9_2000000000000000e+03,E,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -103,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.9_3000000000000000e+03,F,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -104,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.9_4000000000000000e+03,G,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -105,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.9_5000000000000000e+03,A,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -106,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.9_6000000000000000e+03,B,5.2_1785714285714306e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -107,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.9_7000000000000000e+03,C,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -108,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.9_8000000000000000e+03,D,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -109,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.9_9000000000000000e+03,E,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -110,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,2.0_0000000000000000e+03,F,1.0_4357142857142861e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -111,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,2.0_1000000000000000e+03,G,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -112,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,2.0_2000000000000000e+03,A,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -113,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,2.0_3000000000000000e+03,B,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -114,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,2.0_4000000000000000e+03,C,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -115,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,2.0_5000000000000000e+03,D,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -116,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,2.0_6000000000000000e+03,E,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -117,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,2.0_7000000000000000e+03,F,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -118,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,2.0_8000000000000000e+03,G,5.2_1785714285714306e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -119,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,2.0_9000000000000000e+03,A,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -120,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,2.1_0000000000000000e+03,B,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -121,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,2.1_1000000000000000e+03,C,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -122,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,2.1_2000000000000000e+03,D,1.0_4357142857142861e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -123,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,2.1_3000000000000000e+03,E,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -124,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,2.1_4000000000000000e+03,F,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -125,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,2.1_5000000000000000e+03,G,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -126,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,2.1_6000000000000000e+03,A,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -127,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,2.1_7000000000000000e+03,B,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -128,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,2.1_8000000000000000e+03,C,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -129,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,2.1_9000000000000000e+03,D,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -130,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,2.2_0000000000000000e+03,E,5.2_1785714285714306e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -131,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,2.2_1000000000000000e+03,F,1.0_4357142857142861e+02,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -132,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,2.2_2000000000000000e+03,G,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -133,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,2.2_3000000000000000e+03,A,5.2_1785714285714306e+01,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -134,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,2.2_4000000000000000e+03,B,1.0_4357142857142861e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 -135,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,2.2_5000000000000000e+03,C,0.0_0000000000000000e+00,1,1.5_6535714285714278e+02,0.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,3.6_5250000000000000e+02,1.0_0000000000000000e+01,4.1_7428571428571445e+02,2.3_4803571428571422e+03,1.0_4357142857142861e+02 +1,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,9.1_0000000000000000e+02,B,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +2,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,9.2_0000000000000000e+02,C,1.0_4000000000000000e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +3,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,9.3_0000000000000000e+02,D,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +4,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,9.4_0000000000000000e+02,E,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +5,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,9.5_0000000000000000e+02,F,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +6,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,9.6_0000000000000000e+02,G,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +7,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,9.7_0000000000000000e+02,A,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +8,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,9.8_0000000000000000e+02,B,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +9,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,9.9_0000000000000000e+02,C,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +10,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.0_0000000000000000e+03,D,5.2_0000000000000000e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +11,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.0_1000000000000000e+03,E,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +12,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,0.0_0000000000000000e+00,F,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +13,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.0_3000000000000000e+03,G,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +14,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.0_4000000000000000e+03,A,1.0_4000000000000000e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +15,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.0_5000000000000000e+03,B,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +16,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.0_6000000000000000e+03,C,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +17,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.0_7000000000000000e+03,D,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +18,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.0_8000000000000000e+03,E,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +19,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.0_9000000000000000e+03,F,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +20,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.1_0000000000000000e+03,G,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +21,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.1_1000000000000000e+03,A,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +22,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.1_2000000000000000e+03,B,5.2_0000000000000000e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +23,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.1_3000000000000000e+03,C,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +24,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.1_4000000000000000e+03,D,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +25,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.1_5000000000000000e+03,E,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +26,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.1_6000000000000000e+03,F,1.0_4000000000000000e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +27,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.1_7000000000000000e+03,G,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +28,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.1_8000000000000000e+03,A,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +29,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.1_9000000000000000e+03,B,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +30,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.2_0000000000000000e+03,C,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +31,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.2_1000000000000000e+03,D,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +32,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.2_2000000000000000e+03,E,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +33,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.2_3000000000000000e+03,F,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +34,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.2_4000000000000000e+03,G,5.2_0000000000000000e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +35,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.2_5000000000000000e+03,A,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +36,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.2_6000000000000000e+03,B,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +37,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.2_7000000000000000e+03,C,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +38,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.2_8000000000000000e+03,D,1.0_4000000000000000e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +39,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.2_9000000000000000e+03,E,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +40,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.3_0000000000000000e+03,F,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +41,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.3_1000000000000000e+03,G,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +42,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.3_2000000000000000e+03,A,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +43,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.3_3000000000000000e+03,B,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +44,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.3_4000000000000000e+03,C,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +45,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.3_5000000000000000e+03,D,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +46,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.3_6000000000000000e+03,E,5.2_0000000000000000e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +47,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.3_7000000000000000e+03,F,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +48,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.3_8000000000000000e+03,G,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +49,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.3_9000000000000000e+03,A,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +50,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.4_0000000000000000e+03,B,1.0_4000000000000000e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +51,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.4_1000000000000000e+03,C,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +52,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.4_2000000000000000e+03,D,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +53,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.4_3000000000000000e+03,E,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +54,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.4_4000000000000000e+03,F,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +55,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.4_5000000000000000e+03,G,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +56,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.4_6000000000000000e+03,A,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +57,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.4_7000000000000000e+03,B,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +58,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.4_8000000000000000e+03,C,5.2_0000000000000000e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +59,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.4_9000000000000000e+03,D,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +60,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.5_0000000000000000e+03,E,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +61,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.5_1000000000000000e+03,F,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +62,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.5_2000000000000000e+03,G,1.0_4000000000000000e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +63,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.5_3000000000000000e+03,A,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +64,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.5_4000000000000000e+03,B,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +65,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.5_5000000000000000e+03,C,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +66,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.5_6000000000000000e+03,D,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +67,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.5_7000000000000000e+03,E,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +68,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.5_8000000000000000e+03,F,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +69,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.5_9000000000000000e+03,G,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +70,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.6_0000000000000000e+03,A,5.2_0000000000000000e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +71,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.6_1000000000000000e+03,B,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +72,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.6_2000000000000000e+03,C,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +73,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.6_3000000000000000e+03,D,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +74,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.6_4000000000000000e+03,E,1.0_4000000000000000e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +75,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.6_5000000000000000e+03,F,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +76,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.6_6000000000000000e+03,G,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +77,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.6_7000000000000000e+03,A,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +78,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.6_8000000000000000e+03,B,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +79,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.6_9000000000000000e+03,C,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +80,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.7_0000000000000000e+03,D,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +81,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.7_1000000000000000e+03,E,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +82,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.7_2000000000000000e+03,F,5.2_0000000000000000e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +83,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.7_3000000000000000e+03,G,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +84,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.7_4000000000000000e+03,A,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +85,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.7_5000000000000000e+03,B,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +86,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.7_6000000000000000e+03,C,1.0_4000000000000000e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +87,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.7_7000000000000000e+03,D,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +88,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.7_8000000000000000e+03,E,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +89,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.7_9000000000000000e+03,F,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +90,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.8_0000000000000000e+03,G,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +91,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.8_1000000000000000e+03,A,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +92,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.8_2000000000000000e+03,B,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +93,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.8_3000000000000000e+03,C,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +94,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.8_4000000000000000e+03,D,5.2_0000000000000000e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +95,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.8_5000000000000000e+03,E,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +96,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.8_6000000000000000e+03,F,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +97,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.8_7000000000000000e+03,G,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +98,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.8_8000000000000000e+03,A,1.0_4000000000000000e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +99,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.8_9000000000000000e+03,B,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +100,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.9_0000000000000000e+03,C,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +101,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.9_1000000000000000e+03,D,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +102,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.9_2000000000000000e+03,E,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +103,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.9_3000000000000000e+03,F,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +104,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.9_4000000000000000e+03,G,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +105,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.9_5000000000000000e+03,A,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +106,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,1.9_6000000000000000e+03,B,5.2_0000000000000000e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +107,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,1.9_7000000000000000e+03,C,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +108,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,1.9_8000000000000000e+03,D,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +109,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,1.9_9000000000000000e+03,E,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +110,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,2.0_0000000000000000e+03,F,1.0_4000000000000000e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +111,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,2.0_1000000000000000e+03,G,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +112,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,2.0_2000000000000000e+03,A,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +113,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,2.0_3000000000000000e+03,B,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +114,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,2.0_4000000000000000e+03,C,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +115,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,2.0_5000000000000000e+03,D,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +116,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,2.0_6000000000000000e+03,E,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +117,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,2.0_7000000000000000e+03,F,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +118,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,2.0_8000000000000000e+03,G,5.2_0000000000000000e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +119,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,2.0_9000000000000000e+03,A,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +120,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,2.1_0000000000000000e+03,B,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +121,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,2.1_1000000000000000e+03,C,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +122,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,2.1_2000000000000000e+03,D,1.0_4000000000000000e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +123,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,2.1_3000000000000000e+03,E,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +124,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,2.1_4000000000000000e+03,F,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +125,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,2.1_5000000000000000e+03,G,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +126,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,2.1_6000000000000000e+03,A,0.0_0000000000000000e+00,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +127,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,2.1_7000000000000000e+03,B,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +128,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,2.1_8000000000000000e+03,C,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +129,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,2.1_9000000000000000e+03,D,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +130,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,2.2_0000000000000000e+03,E,5.2_0000000000000000e+01,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +131,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,2.2_1000000000000000e+03,F,1.0_4000000000000000e+02,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +132,LONDON,OWNED_OUTRIGHT,HOUSE_DETACHED,1,2.2_2000000000000000e+03,G,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +133,WALES,OWNED_WITH_MORTGAGE,HOUSE_SEMI_DETACHED,2,2.2_3000000000000000e+03,A,5.2_0000000000000000e+01,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +134,SCOTLAND,OWNED_OUTRIGHT,HOUSE_TERRACED,3,2.2_4000000000000000e+03,B,1.0_4000000000000000e+02,1,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 +135,NORTH_EAST,OWNED_WITH_MORTGAGE,FLAT,4,2.2_5000000000000000e+03,C,0.0_0000000000000000e+00,1,1.5_6000000000000000e+02,0.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,3.6_4000000000000000e+02,1.0_0000000000000000e+01,4.1_6000000000000000e+02,2.3_4000000000000000e+03,1.0_4000000000000000e+02 diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/person.csv b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/person.csv index 9f07056db2..3e865daa59 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/person.csv +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/person.csv @@ -1,163 +1,163 @@ -person_id,person_benunit_id,person_household_id,age,gender,months_since_last_birthday,marital_status,hours_worked,care_hours,is_household_head,is_benunit_head,is_parent,is_blind,employment_income,self_employment_income,trading_loss,loss_relief,ni_class_4_losses_brought_forward,private_pension_income,tax_free_savings_income,savings_interest_income,dividend_income,stands_as_sole_owner_or_partner_of_company,is_engaged_in_owned_company_trade,owned_company_is_main_employment,owned_company_carries_on_trade,owned_company_carries_on_property_business,owned_company_income_share,property_income,reports_rent_from_other_property,maintenance_income,miscellaneous_income,private_transfer_income,lump_sum_income,student_loan_repayments,statutory_sick_pay,statutory_maternity_pay,statutory_paternity_pay,student_loans,access_fund,education_grants,healthy_start_vouchers,free_school_breakfasts,free_school_fruit_veg,free_school_meals,child_benefit_reported,income_support_reported,housing_benefit_reported,attendance_allowance_reported,dla_sc_reported,dla_m_reported,iidb_reported,carers_allowance_reported,sda_reported,afcs_reported,ssmg_reported,pension_credit_reported,child_tax_credit_reported,working_tax_credit_reported,state_pension_reported,winter_fuel_allowance_reported,incapacity_benefit_reported,universal_credit_reported,pip_m_reported,pip_dl_reported,jsa_contrib_reported,jsa_income_reported,esa_contrib_reported,esa_income_reported,esa_includes_support_component,bsp_reported,war_widows_pension_reported,would_claim_carers_allowance,council_tax_benefit_reported,maintenance_expenses,childcare_expenses,personal_pension_contributions,employee_pension_contributions,pension_contributions_via_salary_sacrifice,salary_sacrifice_reported,salary_sacrifice_asked,is_uc_claimant,rent_paid_as_boarder,rent_paid_as_lodger,is_claimant_or_partner,is_hbai_dependent_child,uc_is_in_startup_period,uc_is_in_gainful_self_employment,__stratum__ -1001,101,1,80,FEMALE,5.9_9999999999921663e+00,SINGLE,1.0_9575000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,5.2_7003571428571468e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_7342500000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,True,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -2001,201,2,22,MALE,1.0_0509554140127424e+01,SINGLE,1.1_4792857142857156e+03,0.0_0000000000000000e+00,True,True,False,False,5.3_2221428571428623e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -3001,301,3,23,FEMALE,1.9_5569620253164977e+00,MARRIED,1.2_0010714285714289e+03,0.0_0000000000000000e+00,True,True,False,False,5.3_7439285714285779e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,True,True,default -4001,401,4,24,MALE,1.0_0377358490566309e+01,SINGLE,1.2_5228571428571422e+03,0.0_0000000000000000e+00,True,True,False,False,5.4_2657142857142844e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -5001,501,5,25,FEMALE,1.9_6875000000004219e+00,SINGLE,1.3_0446428571428578e+03,0.0_0000000000000000e+00,True,True,True,False,5.4_7875000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -5002,501,5,13,FEMALE,9.5_4545454545455918e-01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -6001,601,6,26,MALE,1.0_0248447204969420e+01,MARRIED,1.3_5664285714285711e+03,3.5_0000000000000000e+01,True,True,False,False,5.5_3092857142857156e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,True,False,default -7001,701,7,27,FEMALE,1.0_0185185185185510e+01,SINGLE,1.4_0882142857142867e+03,2.0_0000000000000000e+01,True,True,False,True,5.5_8310714285714312e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -8001,801,8,28,MALE,1.9_8773006134973951e+00,SINGLE,1.4_6100000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,5.6_3528571428571468e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -9001,901,9,29,FEMALE,1.0_0060975609756149e+01,MARRIED,1.5_1317857142857156e+03,0.0_0000000000000000e+00,True,True,False,False,5.6_8746428571428623e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,True,False,default -10001,1001,10,30,MALE,1.9_9999999999997891e+00,SINGLE,1.5_6535714285714289e+03,0.0_0000000000000000e+00,True,True,True,False,5.7_3964285714285779e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -10002,1001,10,10,MALE,5.0_2941176470588047e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -11001,1101,11,31,FEMALE,2.0_0602409638553958e+00,SINGLE,1.6_1753571428571445e+03,3.5_0000000000000000e+01,True,True,False,False,5.7_9182142857142844e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,True,default -12001,1201,12,32,MALE,9.9_8802395209581917e+00,MARRIED,1.6_6971428571428578e+03,0.0_0000000000000000e+00,True,True,False,False,5.8_4400000000000000e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -13001,1301,13,33,FEMALE,9.9_8214285714285587e+00,SINGLE,1.7_2189285714285711e+03,0.0_0000000000000000e+00,True,True,False,False,5.8_9617857142857156e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -14001,1401,14,34,MALE,2.0_2366863905325678e+00,SINGLE,1.7_7407142857142867e+03,2.0_0000000000000000e+01,True,True,False,True,5.9_4835714285714312e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -15001,1501,15,35,FEMALE,9.9_7058823529413729e+00,MARRIED,1.8_2625000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,6.0_0053571428571468e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -15002,1501,15,15,FEMALE,1.1_0142857142857142e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -16001,1601,16,36,MALE,9.9_6491228070176049e+00,SINGLE,1.8_7842857142857156e+03,3.5_0000000000000000e+01,True,True,False,False,6.0_5271428571428623e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_7342500000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,True,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -17001,1701,17,37,FEMALE,9.9_5930232558133888e+00,SINGLE,1.9_3060714285714289e+03,0.0_0000000000000000e+00,True,True,False,False,6.1_0489285714285779e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -18001,1801,18,38,MALE,9.9_5375722543345631e+00,MARRIED,1.9_8278571428571445e+03,0.0_0000000000000000e+00,True,True,False,False,6.1_5707142857142844e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,True,True,default -19001,1901,19,39,FEMALE,2.0_5172413793092900e+00,SINGLE,2.0_3496428571428578e+03,0.0_0000000000000000e+00,True,True,False,False,6.2_0925000000000000e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,True,default -20001,2001,20,40,MALE,9.9_4285714285704536e+00,SINGLE,2.0_8714285714285734e+03,0.0_0000000000000000e+00,True,True,True,False,6.2_6142857142857156e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -20002,2001,20,12,MALE,1.4_9999999999999800e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -21001,2101,21,41,FEMALE,2.0_6249999999993028e+00,MARRIED,2.1_3932142857142844e+03,3.5_0000000000000000e+01,True,True,False,True,6.3_1360714285714312e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -22001,2201,22,42,MALE,2.0_6779661016939098e+00,SINGLE,2.1_9150000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,6.3_6578571428571468e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -23001,2301,23,43,FEMALE,9.9_2696629213474324e+00,SINGLE,2.2_4367857142857156e+03,0.0_0000000000000000e+00,True,True,False,False,6.4_1796428571428623e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -24001,2401,24,44,MALE,9.9_2178770949715272e+00,MARRIED,2.2_9585714285714312e+03,0.0_0000000000000000e+00,True,True,False,False,6.4_7014285714285779e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -25001,2501,25,45,FEMALE,9.9_1666666666655239e+00,SINGLE,1.0_4357142857142867e+03,0.0_0000000000000000e+00,True,True,True,False,6.5_2232142857142844e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -25002,2501,25,9,FEMALE,6.4_8484848484848264e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -26001,2601,26,46,MALE,5.9_9999999999964206e+00,SINGLE,1.0_9575000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,6.5_7450000000000000e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -27001,2701,27,47,FEMALE,5.9_9999999999982769e+00,MARRIED,1.1_4792857142857156e+03,0.0_0000000000000000e+00,True,True,False,False,6.6_2667857142857156e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,True,True,default -28001,2801,28,48,MALE,5.9_9999999999974420e+00,SINGLE,1.2_0010714285714289e+03,2.0_0000000000000000e+01,True,True,False,True,6.6_7885714285714312e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -29001,2901,29,49,FEMALE,5.9_9999999999966072e+00,SINGLE,1.2_5228571428571422e+03,0.0_0000000000000000e+00,True,True,False,False,6.7_3103571428571468e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -30001,3001,30,50,MALE,5.9_9999999999984190e+00,MARRIED,1.3_0446428571428578e+03,0.0_0000000000000000e+00,True,True,True,False,6.7_8321428571428623e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -30002,3001,30,14,MALE,1.0_4705882352941195e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -31001,3101,31,51,FEMALE,5.9_9999999999976019e+00,SINGLE,1.3_5664285714285711e+03,3.5_0000000000000000e+01,True,True,False,False,6.8_3539285714285779e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_7342500000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,True,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -32001,3201,32,52,MALE,5.9_9999999999967848e+00,SINGLE,1.4_0882142857142867e+03,0.0_0000000000000000e+00,True,True,False,False,6.8_8757142857142844e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -33001,3301,33,53,FEMALE,5.9_9999999999985523e+00,MARRIED,1.4_6100000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,6.9_3975000000000000e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,True,False,default -34001,3401,34,54,MALE,5.9_9999999999977529e+00,SINGLE,1.5_1317857142857156e+03,0.0_0000000000000000e+00,True,True,False,False,6.9_9192857142857156e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -35001,3501,35,55,FEMALE,5.9_9999999999969624e+00,SINGLE,1.5_6535714285714289e+03,2.0_0000000000000000e+01,True,True,True,True,7.0_4410714285714312e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,True,default -35002,3501,35,11,FEMALE,6.4_5714285714285818e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -36001,3601,36,56,MALE,5.9_9999999999986855e+00,MARRIED,1.6_1753571428571445e+03,3.5_0000000000000000e+01,True,True,False,False,7.0_9628571428571468e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,True,False,default -37001,3701,37,57,FEMALE,5.9_9999999999979039e+00,SINGLE,1.6_6971428571428578e+03,0.0_0000000000000000e+00,True,True,False,False,7.1_4846428571428623e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -38001,3801,38,58,MALE,5.9_9999999999971401e+00,SINGLE,1.7_2189285714285711e+03,0.0_0000000000000000e+00,True,True,False,False,7.2_0064285714285779e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -39001,3901,39,59,FEMALE,5.9_9999999999963762e+00,MARRIED,1.7_7407142857142867e+03,0.0_0000000000000000e+00,True,True,False,False,7.2_5282142857142844e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -40001,4001,40,60,MALE,5.9_9999999999980638e+00,SINGLE,1.8_2625000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,7.3_0500000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -40002,4001,40,8,MALE,5.5_5555555555555536e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -41001,4101,41,61,FEMALE,5.9_9999999999972999e+00,SINGLE,1.8_7842857142857156e+03,3.5_0000000000000000e+01,True,True,False,False,7.3_5717857142857156e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -42001,4201,42,62,MALE,5.9_9999999999965539e+00,MARRIED,1.9_3060714285714289e+03,2.0_0000000000000000e+01,True,True,False,True,7.4_0935714285714312e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -43001,4301,43,63,FEMALE,5.9_9999999999981970e+00,SINGLE,1.9_8278571428571445e+03,0.0_0000000000000000e+00,True,True,False,False,7.4_6153571428571468e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,True,default -44001,4401,44,64,MALE,5.9_9999999999974509e+00,SINGLE,2.0_3496428571428578e+03,0.0_0000000000000000e+00,True,True,False,False,7.5_1371428571428623e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -45001,4501,45,65,FEMALE,5.9_9999999999967137e+00,MARRIED,2.0_8714285714285734e+03,0.0_0000000000000000e+00,True,True,True,False,7.5_6589285714285779e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -45002,4501,45,13,FEMALE,3.2_2727272727272707e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -46001,4601,46,66,MALE,5.9_9999999999983213e+00,SINGLE,2.1_3932142857142844e+03,3.5_0000000000000000e+01,True,True,False,False,7.6_1807142857142844e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_7342500000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,True,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -47001,4701,47,67,FEMALE,5.9_9999999999975842e+00,SINGLE,2.1_9150000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,7.6_7025000000000000e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -48001,4801,48,68,MALE,5.9_9999999999968736e+00,MARRIED,2.2_4367857142857156e+03,0.0_0000000000000000e+00,True,True,False,False,7.7_2242857142857156e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -49001,4901,49,69,FEMALE,5.9_9999999999984368e+00,SINGLE,2.2_9585714285714312e+03,2.0_0000000000000000e+01,True,True,False,True,7.7_7460714285714312e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -50001,5001,50,70,MALE,5.9_9999999999954525e+00,SINGLE,1.0_4357142857142867e+03,0.0_0000000000000000e+00,True,True,True,False,7.8_2678571428571468e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -50002,5001,50,10,MALE,1.0_6764705882352917e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -51001,5101,51,71,FEMALE,5.9_9999999999947597e+00,MARRIED,1.0_9575000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,7.8_7896428571428623e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,True,True,default -52001,5201,52,72,MALE,5.9_9999999999940758e+00,SINGLE,1.1_4792857142857156e+03,0.0_0000000000000000e+00,True,True,False,False,7.9_3114285714285779e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -53001,5301,53,73,FEMALE,5.9_9999999999934008e+00,SINGLE,1.2_0010714285714289e+03,0.0_0000000000000000e+00,True,True,False,False,7.9_8332142857142844e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -54001,5401,54,74,MALE,5.9_9999999999971578e+00,MARRIED,1.2_5228571428571422e+03,0.0_0000000000000000e+00,True,True,False,False,8.0_3550000000000000e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,True,False,default -55001,5501,55,20,FEMALE,5.9_9999999999997691e+00,SINGLE,1.3_0446428571428578e+03,0.0_0000000000000000e+00,True,True,True,False,8.0_8767857142857156e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -55002,5501,55,15,FEMALE,1.3_2857142857142363e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -56001,5601,56,21,MALE,6.0_0000000000001776e+00,SINGLE,1.3_5664285714285711e+03,3.5_0000000000000000e+01,True,True,False,True,8.1_3985714285714312e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -57001,5701,57,22,FEMALE,6.0_0000000000000355e+00,MARRIED,1.4_0882142857142867e+03,0.0_0000000000000000e+00,True,True,False,False,8.1_9203571428571377e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -58001,5801,58,23,MALE,5.9_9999999999998668e+00,SINGLE,1.4_6100000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,8.2_4421428571428623e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -59001,5901,59,24,FEMALE,6.0_0000000000002487e+00,SINGLE,1.5_1317857142857156e+03,0.0_0000000000000000e+00,True,True,False,False,8.2_9639285714285688e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,True,default -60001,6001,60,25,MALE,6.0_0000000000006217e+00,MARRIED,1.5_6535714285714289e+03,0.0_0000000000000000e+00,True,True,True,False,8.3_4857142857142935e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -60002,6001,60,12,MALE,1.0_0000000000000000e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -61001,6101,61,26,FEMALE,6.0_0000000000010125e+00,SINGLE,1.6_1753571428571445e+03,3.5_0000000000000000e+01,True,True,False,False,8.4_0075000000000000e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_7342500000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,True,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -62001,6201,62,27,MALE,6.0_0000000000013856e+00,SINGLE,1.6_6971428571428578e+03,0.0_0000000000000000e+00,True,True,False,False,8.4_5292857142857247e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -63001,6301,63,28,FEMALE,6.0_0000000000007194e+00,MARRIED,1.7_2189285714285711e+03,2.0_0000000000000000e+01,True,True,False,True,8.5_0510714285714312e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,True,False,default -64001,6401,64,29,MALE,6.0_0000000000000533e+00,SINGLE,1.7_7407142857142867e+03,0.0_0000000000000000e+00,True,True,False,False,8.5_5728571428571377e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -65001,6501,65,30,FEMALE,6.0_0000000000004263e+00,SINGLE,1.8_2625000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,8.6_0946428571428623e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -65002,6501,65,9,FEMALE,1.0_0000000000000000e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -66001,6601,66,31,MALE,5.9_9999999999997602e+00,MARRIED,1.8_7842857142857156e+03,3.5_0000000000000000e+01,True,True,False,False,8.6_6164285714285688e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -67001,6701,67,32,FEMALE,6.0_0000000000001332e+00,SINGLE,1.9_3060714285714289e+03,0.0_0000000000000000e+00,True,True,False,False,8.7_1382142857142935e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,True,default -68001,6801,68,33,MALE,6.0_0000000000004796e+00,SINGLE,1.9_8278571428571445e+03,0.0_0000000000000000e+00,True,True,False,False,8.7_6600000000000000e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -69001,6901,69,34,FEMALE,5.9_9999999999998401e+00,MARRIED,2.0_3496428571428578e+03,0.0_0000000000000000e+00,True,True,False,False,8.8_1817857142857247e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,True,False,default -70001,7001,70,35,MALE,6.0_0000000000001954e+00,SINGLE,2.0_8714285714285734e+03,2.0_0000000000000000e+01,True,True,True,True,8.8_7035714285714312e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -70002,7001,70,14,MALE,6.9_4117647058824527e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -71001,7101,71,36,FEMALE,5.9_9999999999995648e+00,SINGLE,2.1_3932142857142844e+03,3.5_0000000000000000e+01,True,True,False,False,8.9_2253571428571377e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -72001,7201,72,37,MALE,5.9_9999999999979394e+00,MARRIED,2.1_9150000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,8.9_7471428571428623e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,True,False,default -73001,7301,73,38,FEMALE,5.9_9999999999973177e+00,SINGLE,2.2_4367857142857156e+03,0.0_0000000000000000e+00,True,True,False,False,9.0_2689285714285688e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -74001,7401,74,39,MALE,5.9_9999999999986677e+00,SINGLE,2.2_9585714285714312e+03,0.0_0000000000000000e+00,True,True,False,False,9.0_7907142857142935e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -75001,7501,75,40,FEMALE,5.9_9999999999980460e+00,MARRIED,1.0_4357142857142867e+03,0.0_0000000000000000e+00,True,True,True,False,9.1_3125000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,True,True,default -75002,7501,75,11,FEMALE,1.0_0000000000000000e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -76001,7601,76,41,MALE,5.9_9999999999974420e+00,SINGLE,1.0_9575000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,9.1_8342857142857247e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_7342500000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,True,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -77001,7701,77,42,FEMALE,5.9_9999999999987654e+00,SINGLE,1.1_4792857142857156e+03,2.0_0000000000000000e+01,True,True,False,True,9.2_3560714285714312e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -78001,7801,78,43,MALE,5.9_9999999999981615e+00,MARRIED,1.2_0010714285714289e+03,0.0_0000000000000000e+00,True,True,False,False,9.2_8778571428571377e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -79001,7901,79,44,FEMALE,5.9_9999999999975664e+00,SINGLE,1.2_5228571428571422e+03,0.0_0000000000000000e+00,True,True,False,False,9.3_3996428571428623e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -80001,8001,80,45,MALE,5.9_9999999999988631e+00,SINGLE,1.3_0446428571428578e+03,0.0_0000000000000000e+00,True,True,True,False,9.3_9214285714285688e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -80002,8001,80,8,MALE,2.0_0000000000000000e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -81001,8101,81,46,FEMALE,5.9_9999999999982592e+00,MARRIED,1.3_5664285714285711e+03,3.5_0000000000000000e+01,True,True,False,False,9.4_4432142857142935e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,True,False,default -82001,8201,82,47,MALE,5.9_9999999999976730e+00,SINGLE,1.4_0882142857142867e+03,0.0_0000000000000000e+00,True,True,False,False,9.4_9650000000000000e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -83001,8301,83,48,FEMALE,5.9_9999999999989519e+00,SINGLE,1.4_6100000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,9.5_4867857142857247e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,True,default -84001,8401,84,49,MALE,5.9_9999999999983658e+00,MARRIED,1.5_1317857142857156e+03,2.0_0000000000000000e+01,True,True,False,True,9.6_0085714285714312e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -85001,8501,85,50,FEMALE,5.9_9999999999977796e+00,SINGLE,1.5_6535714285714289e+03,0.0_0000000000000000e+00,True,True,True,False,9.6_5303571428571377e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -85002,8501,85,13,FEMALE,6.2_2727272727273107e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -86001,8601,86,51,MALE,5.9_9999999999990408e+00,SINGLE,1.6_1753571428571445e+03,3.5_0000000000000000e+01,True,True,False,False,9.7_0521428571428623e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -87001,8701,87,52,FEMALE,5.9_9999999999984635e+00,MARRIED,1.6_6971428571428578e+03,0.0_0000000000000000e+00,True,True,False,False,9.7_5739285714285688e+03,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,True,False,default -88001,8801,88,53,MALE,5.9_9999999999979039e+00,SINGLE,1.7_2189285714285711e+03,0.0_0000000000000000e+00,True,True,False,False,9.8_0957142857142935e+03,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -89001,8901,89,54,FEMALE,5.9_9999999999973355e+00,SINGLE,1.7_7407142857142867e+03,0.0_0000000000000000e+00,True,True,False,False,9.8_6175000000000000e+03,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -90001,9001,90,55,MALE,5.9_9999999999985700e+00,MARRIED,1.8_2625000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,9.9_1392857142857247e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,True,True,default -90002,9001,90,10,MALE,7.6_7647058823529171e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -91001,9101,91,56,FEMALE,5.9_9999999999980105e+00,SINGLE,1.8_7842857142857156e+03,3.5_0000000000000000e+01,True,True,False,True,9.9_6610714285714312e+03,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_7342500000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,True,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,True,default -92001,9201,92,57,MALE,5.9_9999999999974509e+00,SINGLE,1.9_3060714285714289e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_0182857142857138e+04,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -93001,9301,93,58,FEMALE,5.9_9999999999986589e+00,MARRIED,1.9_8278571428571445e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_0704642857142862e+04,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -94001,9401,94,59,MALE,5.9_9999999999980993e+00,SINGLE,2.0_3496428571428578e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_1226428571428569e+04,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -95001,9501,95,60,FEMALE,5.9_9999999999975575e+00,SINGLE,2.0_8714285714285734e+03,0.0_0000000000000000e+00,True,True,True,False,1.0_1748214285714294e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -95002,9501,95,15,FEMALE,8.3_5714285714286120e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -96001,9601,96,61,MALE,5.9_9999999999987477e+00,MARRIED,2.1_3932142857142844e+03,3.5_0000000000000000e+01,True,True,False,False,1.0_2270000000000000e+04,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -97001,9701,97,62,FEMALE,5.9_9999999999982059e+00,SINGLE,2.1_9150000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_2791785714285725e+04,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -98001,9801,98,63,MALE,5.9_9999999999976552e+00,SINGLE,2.2_4367857142857156e+03,2.0_0000000000000000e+01,True,True,False,True,1.0_3313571428571431e+04,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -99001,9901,99,64,FEMALE,5.9_9999999999988365e+00,MARRIED,2.2_9585714285714312e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_3835357142857156e+04,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,True,True,default -100001,10001,100,65,MALE,5.9_9999999999982947e+00,SINGLE,1.0_4357142857142867e+03,0.0_0000000000000000e+00,True,True,True,False,1.0_4357142857142862e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -100002,10001,100,12,MALE,5.4_9999999999999734e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -101001,10101,101,66,FEMALE,5.9_9999999999977796e+00,SINGLE,1.0_9575000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,1.0_4878928571428569e+04,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -102001,10201,102,67,MALE,5.9_9999999999989164e+00,MARRIED,1.1_4792857142857156e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_5400714285714294e+04,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -103001,10301,103,68,FEMALE,5.9_9999999999984013e+00,SINGLE,1.2_0010714285714289e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_5922500000000000e+04,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -104001,10401,104,69,MALE,5.9_9999999999978506e+00,SINGLE,1.2_5228571428571422e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_6444285714285725e+04,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -105001,10501,105,70,FEMALE,5.9_9999999999990141e+00,MARRIED,1.3_0446428571428578e+03,2.0_0000000000000000e+01,True,True,True,True,1.0_6966071428571431e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -105002,10501,105,9,FEMALE,2.4_8484848484848486e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -106001,10601,106,71,MALE,5.9_9999999999968203e+00,SINGLE,1.3_5664285714285711e+03,3.5_0000000000000000e+01,True,True,False,False,1.0_7487857142857156e+04,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_7342500000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,True,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -107001,10701,107,72,FEMALE,5.9_9999999999962874e+00,SINGLE,1.4_0882142857142867e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_8009642857142862e+04,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,True,default -108001,10801,108,73,MALE,5.9_9999999999957989e+00,MARRIED,1.4_6100000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_8531428571428569e+04,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,True,False,default -109001,10901,109,74,FEMALE,5.9_9999999999953104e+00,SINGLE,1.5_1317857142857156e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_9053214285714294e+04,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -110001,11001,110,20,MALE,6.0_0000000000000799e+00,SINGLE,1.5_6535714285714289e+03,0.0_0000000000000000e+00,True,True,True,False,1.0_9575000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -110002,11001,110,14,MALE,2.4_7058823529412130e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -111001,11101,111,21,FEMALE,5.9_9999999999999467e+00,MARRIED,1.6_1753571428571445e+03,3.5_0000000000000000e+01,True,True,False,False,1.1_0096785714285725e+04,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -112001,11201,112,22,MALE,4.0_5095541401272818e+00,SINGLE,1.6_6971428571428578e+03,2.0_0000000000000000e+01,True,True,False,True,1.1_0618571428571431e+04,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -113001,11301,113,23,FEMALE,7.9_5569620253166043e+00,SINGLE,1.7_2189285714285711e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_1140357142857156e+04,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -114001,11401,114,24,MALE,4.0_3773584905660687e+00,MARRIED,1.7_7407142857142867e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_1662142857142862e+04,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -115001,11501,115,25,FEMALE,7.9_6875000000006217e+00,SINGLE,1.8_2625000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,1.1_2183928571428569e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,True,default -115002,11501,115,11,FEMALE,2.4_5714285714285419e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -116001,11601,116,26,MALE,4.0_2484472049693398e+00,SINGLE,1.8_7842857142857156e+03,3.5_0000000000000000e+01,True,True,False,False,1.1_2705714285714294e+04,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -117001,11701,117,27,FEMALE,4.0_1851851851857766e+00,MARRIED,1.9_3060714285714289e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_3227500000000000e+04,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,True,False,default -118001,11801,118,28,MALE,7.9_8773006134971375e+00,SINGLE,1.9_8278571428571445e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_3749285714285725e+04,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -119001,11901,119,29,FEMALE,4.0_0609756097560155e+00,SINGLE,2.0_3496428571428578e+03,2.0_0000000000000000e+01,True,True,False,True,1.1_4271071428571431e+04,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -120001,12001,120,30,MALE,7.9_9999999999998934e+00,MARRIED,2.0_8714285714285734e+03,0.0_0000000000000000e+00,True,True,True,False,1.1_4792857142857156e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -120002,12001,120,8,MALE,9.5_5555555555555713e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -121001,12101,121,31,FEMALE,8.0_0602409638551649e+00,SINGLE,2.1_3932142857142844e+03,3.5_0000000000000000e+01,True,True,False,False,1.1_5314642857142862e+04,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_7342500000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,True,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -122001,12201,122,32,MALE,3.9_8802395209580407e+00,SINGLE,2.1_9150000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_5836428571428569e+04,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -123001,12301,123,33,FEMALE,3.9_8214285714287186e+00,MARRIED,2.2_4367857142857156e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_6358214285714294e+04,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,True,True,default -124001,12401,124,34,MALE,8.0_2366863905323768e+00,SINGLE,2.2_9585714285714312e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_6880000000000000e+04,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -125001,12501,125,35,FEMALE,3.9_7058823529411775e+00,SINGLE,1.0_4357142857142867e+03,0.0_0000000000000000e+00,True,True,True,False,1.1_7401785714285725e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -125002,12501,125,13,FEMALE,9.9_5454545454545148e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -126001,12601,126,36,MALE,3.9_6491228070177248e+00,MARRIED,1.0_9575000000000000e+03,3.5_0000000000000000e+01,True,True,False,True,1.1_7923571428571431e+04,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,True,False,default -127001,12701,127,37,FEMALE,3.9_5930232558138151e+00,SINGLE,1.1_4792857142857156e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_8445357142857156e+04,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -128001,12801,128,38,MALE,3.9_5375722543343144e+00,SINGLE,1.2_0010714285714289e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_8967142857142862e+04,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -129001,12901,129,39,FEMALE,8.0_5172413793090058e+00,MARRIED,1.2_5228571428571422e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_9488928571428569e+04,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -130001,13001,130,40,MALE,3.9_4285714285708488e+00,SINGLE,1.3_0446428571428578e+03,0.0_0000000000000000e+00,True,True,True,False,1.2_0010714285714294e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,True,default -130002,13001,130,10,MALE,2.0_2941176470588092e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -131001,13101,131,41,FEMALE,8.0_6249999999993783e+00,SINGLE,1.3_5664285714285711e+03,3.5_0000000000000000e+01,True,True,False,False,1.2_0532500000000000e+04,5.2_1785714285714306e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,True,default -132001,13201,132,42,MALE,8.0_6779661016936700e+00,MARRIED,1.4_0882142857142867e+03,0.0_0000000000000000e+00,True,True,False,False,1.2_1054285714285725e+04,1.0_4357142857142861e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -133001,13301,133,43,FEMALE,3.9_2696629213477744e+00,SINGLE,1.4_6100000000000000e+03,2.0_0000000000000000e+01,True,True,False,True,1.2_1576071428571431e+04,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,5.2_1785714285714306e+01,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -134001,13401,134,44,MALE,3.9_2178770949712296e+00,SINGLE,1.5_1317857142857156e+03,0.0_0000000000000000e+00,True,True,False,False,1.2_2097857142857156e+04,2.0_8714285714285722e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,False,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,1.0_4357142857142861e+02,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_1785714285714306e+01,True,False,False,False,default -135001,13501,135,45,FEMALE,3.9_1666666666655283e+00,MARRIED,1.5_6535714285714289e+03,0.0_0000000000000000e+00,True,True,True,False,1.2_2619642857142862e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_2678571428571445e+02,5.2_1785714285714306e+01,1.8_2625000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,True,1.0_4357142857142861e+02,2.1_3932142857142844e+03,2.6_6110714285714312e+03,2.0_0000000000000000e+01,1.0_4357142857142861e+02,5.2_1785714285714306e+01,2.6_0892857142857153e+01,1.3_0446428571428577e+01,5.0_0000000000000000e+02,5.2_1785714285714306e+01,5.0_0000000000000000e+00,2.6_0892857142857167e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_5250000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_7428571428571445e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4357142857142861e+02,1.5_6535714285714278e+02,2.0_8714285714285722e+02,2.6_0892857142857167e+02,True,3.1_3071428571428555e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4357142857142861e+02,2.6_0892857142857167e+02,2.0_8714285714285722e+02,1.0_4357142857142861e+02,1.5_6535714285714278e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_1785714285714306e+01,0.0_0000000000000000e+00,True,False,False,False,default -135002,13501,135,15,FEMALE,4.6_7142857142856904e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8714285714285722e+02,1.0_4357142857142861e+02,5.2_1785714285714306e+01,1.5_6535714285714278e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +person_id,person_benunit_id,person_household_id,age,gender,months_since_last_birthday,marital_status,hours_worked,care_hours,is_household_head,is_benunit_head,is_parent,is_blind,employment_income,self_employment_income,trading_loss,loss_relief,ni_class_4_losses_brought_forward,private_pension_income,tax_free_savings_income,savings_interest_income,dividend_income,stands_as_sole_owner_or_partner_of_company,is_engaged_in_owned_company_trade,owned_company_is_main_employment,owned_company_carries_on_trade,owned_company_carries_on_property_business,owned_company_income_share,frs_bonus_amount,property_income,reports_rent_from_other_property,maintenance_income,spousal_maintenance_income,miscellaneous_income,private_transfer_income,lump_sum_income,student_loan_repayments,statutory_sick_pay,statutory_maternity_pay,statutory_paternity_pay,student_loans,access_fund,education_grants,healthy_start_vouchers,free_school_breakfasts,free_school_fruit_veg,free_school_meals,child_benefit_reported,income_support_reported,housing_benefit_reported,attendance_allowance_reported,dla_sc_reported,dla_m_reported,iidb_reported,carers_allowance_reported,sda_reported,afcs_reported,ssmg_reported,pension_credit_reported,child_tax_credit_reported,working_tax_credit_reported,state_pension_reported,winter_fuel_allowance_reported,incapacity_benefit_reported,universal_credit_reported,pip_m_reported,pip_dl_reported,jsa_contrib_reported,jsa_income_reported,esa_contrib_reported,esa_income_reported,esa_includes_support_component,bsp_reported,widowed_parents_allowance_reported,war_widows_pension_reported,would_claim_carers_allowance,council_tax_benefit_reported,maintenance_expenses,childcare_expenses,personal_pension_contributions,employee_pension_contributions,pension_contributions_via_salary_sacrifice,salary_sacrifice_reported,salary_sacrifice_asked,is_uc_claimant,rent_paid_as_boarder,rent_paid_as_lodger,is_claimant_or_partner,is_hbai_dependent_child,uc_is_in_startup_period,uc_is_in_gainful_self_employment,__stratum__ +1001,101,1,80,FEMALE,5.9_9999999999921663e+00,SINGLE,1.0_9200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,5.2_5200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +2001,201,2,22,MALE,1.0_0509554140127424e+01,SINGLE,1.1_4400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,5.3_0400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +3001,301,3,23,FEMALE,1.9_5569620253164977e+00,MARRIED,1.1_9600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,5.3_5600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default +4001,401,4,24,MALE,1.0_0377358490566309e+01,SINGLE,1.2_4800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,5.4_0800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +5001,501,5,25,FEMALE,1.9_6875000000004219e+00,SINGLE,1.3_0000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,5.4_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.1_5600000000000000e+03,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +5002,501,5,13,FEMALE,9.5_4545454545455918e-01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +6001,601,6,26,MALE,1.0_0248447204969420e+01,MARRIED,1.3_5200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,5.5_1200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default +7001,701,7,27,FEMALE,1.0_0185185185185510e+01,SINGLE,1.4_0400000000000000e+03,2.0_0000000000000000e+01,True,True,False,True,5.5_6400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +8001,801,8,28,MALE,1.9_8773006134973951e+00,SINGLE,1.4_5600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,5.6_1600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +9001,901,9,29,FEMALE,1.0_0060975609756149e+01,MARRIED,1.5_0800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,5.6_6800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default +10001,1001,10,30,MALE,1.9_9999999999997891e+00,SINGLE,1.5_6000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,5.7_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,8.0_0000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +10002,1001,10,10,MALE,5.0_2941176470588047e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +11001,1101,11,31,FEMALE,2.0_0602409638553958e+00,SINGLE,1.6_1200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,5.7_7200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +12001,1201,12,32,MALE,9.9_8802395209581917e+00,MARRIED,1.6_6400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,5.8_2400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +13001,1301,13,33,FEMALE,9.9_8214285714285587e+00,SINGLE,1.7_1600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,5.8_7600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +14001,1401,14,34,MALE,2.0_2366863905325678e+00,SINGLE,1.7_6800000000000000e+03,2.0_0000000000000000e+01,True,True,False,True,5.9_2800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +15001,1501,15,35,FEMALE,9.9_7058823529413729e+00,MARRIED,1.8_2000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,5.9_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,7.5_6000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +15002,1501,15,15,FEMALE,1.1_0142857142857142e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +16001,1601,16,36,MALE,9.9_6491228070176049e+00,SINGLE,1.8_7200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,6.0_3200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +17001,1701,17,37,FEMALE,9.9_5930232558133888e+00,SINGLE,1.9_2400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,6.0_8400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +18001,1801,18,38,MALE,9.9_5375722543345631e+00,MARRIED,1.9_7600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,6.1_3600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,True,default +19001,1901,19,39,FEMALE,2.0_5172413793092900e+00,SINGLE,2.0_2800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,6.1_8800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +20001,2001,20,40,MALE,9.9_4285714285704536e+00,SINGLE,2.0_8000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,6.2_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.1_0000000000000000e+03,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +20002,2001,20,12,MALE,1.4_9999999999999800e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +21001,2101,21,41,FEMALE,2.0_6249999999993028e+00,MARRIED,2.1_3200000000000000e+03,3.5_0000000000000000e+01,True,True,False,True,6.2_9200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +22001,2201,22,42,MALE,2.0_6779661016939098e+00,SINGLE,2.1_8400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,6.3_4400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +23001,2301,23,43,FEMALE,9.9_2696629213474324e+00,SINGLE,2.2_3600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,6.3_9600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +24001,2401,24,44,MALE,9.9_2178770949715272e+00,MARRIED,2.2_8800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,6.4_4800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +25001,2501,25,45,FEMALE,9.9_1666666666655239e+00,SINGLE,1.0_4000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,6.5_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_5600000000000000e+03,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +25002,2501,25,9,FEMALE,6.4_8484848484848264e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +26001,2601,26,46,MALE,5.9_9999999999964206e+00,SINGLE,1.0_9200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,6.5_5200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +27001,2701,27,47,FEMALE,5.9_9999999999982769e+00,MARRIED,1.1_4400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,6.6_0400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default +28001,2801,28,48,MALE,5.9_9999999999974420e+00,SINGLE,1.1_9600000000000000e+03,2.0_0000000000000000e+01,True,True,False,True,6.6_5600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +29001,2901,29,49,FEMALE,5.9_9999999999966072e+00,SINGLE,1.2_4800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,6.7_0800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +30001,3001,30,50,MALE,5.9_9999999999984190e+00,MARRIED,1.3_0000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,6.7_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,7.0_0000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +30002,3001,30,14,MALE,1.0_4705882352941195e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +31001,3101,31,51,FEMALE,5.9_9999999999976019e+00,SINGLE,1.3_5200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,6.8_1200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +32001,3201,32,52,MALE,5.9_9999999999967848e+00,SINGLE,1.4_0400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,6.8_6400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +33001,3301,33,53,FEMALE,5.9_9999999999985523e+00,MARRIED,1.4_5600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,6.9_1600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default +34001,3401,34,54,MALE,5.9_9999999999977529e+00,SINGLE,1.5_0800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,6.9_6800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +35001,3501,35,55,FEMALE,5.9_9999999999969624e+00,SINGLE,1.5_6000000000000000e+03,2.0_0000000000000000e+01,True,True,True,True,7.0_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,6.5_6000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +35002,3501,35,11,FEMALE,6.4_5714285714285818e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +36001,3601,36,56,MALE,5.9_9999999999986855e+00,MARRIED,1.6_1200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,7.0_7200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default +37001,3701,37,57,FEMALE,5.9_9999999999979039e+00,SINGLE,1.6_6400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,7.1_2400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +38001,3801,38,58,MALE,5.9_9999999999971401e+00,SINGLE,1.7_1600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,7.1_7600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +39001,3901,39,59,FEMALE,5.9_9999999999963762e+00,MARRIED,1.7_6800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,7.2_2800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +40001,4001,40,60,MALE,5.9_9999999999980638e+00,SINGLE,1.8_2000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,7.2_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_0000000000000000e+03,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +40002,4001,40,8,MALE,5.5_5555555555555536e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +41001,4101,41,61,FEMALE,5.9_9999999999972999e+00,SINGLE,1.8_7200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,7.3_3200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +42001,4201,42,62,MALE,5.9_9999999999965539e+00,MARRIED,1.9_2400000000000000e+03,2.0_0000000000000000e+01,True,True,False,True,7.3_8400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +43001,4301,43,63,FEMALE,5.9_9999999999981970e+00,SINGLE,1.9_7600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,7.4_3600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +44001,4401,44,64,MALE,5.9_9999999999974509e+00,SINGLE,2.0_2800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,7.4_8800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +45001,4501,45,65,FEMALE,5.9_9999999999967137e+00,MARRIED,2.0_8000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,7.5_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,9.5_6000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +45002,4501,45,13,FEMALE,3.2_2727272727272707e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +46001,4601,46,66,MALE,5.9_9999999999983213e+00,SINGLE,2.1_3200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,7.5_9200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +47001,4701,47,67,FEMALE,5.9_9999999999975842e+00,SINGLE,2.1_8400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,7.6_4400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +48001,4801,48,68,MALE,5.9_9999999999968736e+00,MARRIED,2.2_3600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,7.6_9600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +49001,4901,49,69,FEMALE,5.9_9999999999984368e+00,SINGLE,2.2_8800000000000000e+03,2.0_0000000000000000e+01,True,True,False,True,7.7_4800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +50001,5001,50,70,MALE,5.9_9999999999954525e+00,SINGLE,1.0_4000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,7.8_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,6.0_0000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +50002,5001,50,10,MALE,1.0_6764705882352917e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +51001,5101,51,71,FEMALE,5.9_9999999999947597e+00,MARRIED,1.0_9200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,7.8_5200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default +52001,5201,52,72,MALE,5.9_9999999999940758e+00,SINGLE,1.1_4400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,7.9_0400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +53001,5301,53,73,FEMALE,5.9_9999999999934008e+00,SINGLE,1.1_9600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,7.9_5600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +54001,5401,54,74,MALE,5.9_9999999999971578e+00,MARRIED,1.2_4800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,8.0_0800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default +55001,5501,55,20,FEMALE,5.9_9999999999997691e+00,SINGLE,1.3_0000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,8.0_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.2_5600000000000000e+03,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +55002,5501,55,15,FEMALE,1.3_2857142857142363e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +56001,5601,56,21,MALE,6.0_0000000000001776e+00,SINGLE,1.3_5200000000000000e+03,3.5_0000000000000000e+01,True,True,False,True,8.1_1200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +57001,5701,57,22,FEMALE,6.0_0000000000000355e+00,MARRIED,1.4_0400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,8.1_6400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +58001,5801,58,23,MALE,5.9_9999999999998668e+00,SINGLE,1.4_5600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,8.2_1600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +59001,5901,59,24,FEMALE,6.0_0000000000002487e+00,SINGLE,1.5_0800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,8.2_6800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +60001,6001,60,25,MALE,6.0_0000000000006217e+00,MARRIED,1.5_6000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,8.3_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,9.0_0000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +60002,6001,60,12,MALE,1.0_0000000000000000e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +61001,6101,61,26,FEMALE,6.0_0000000000010125e+00,SINGLE,1.6_1200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,8.3_7200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +62001,6201,62,27,MALE,6.0_0000000000013856e+00,SINGLE,1.6_6400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,8.4_2400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +63001,6301,63,28,FEMALE,6.0_0000000000007194e+00,MARRIED,1.7_1600000000000000e+03,2.0_0000000000000000e+01,True,True,False,True,8.4_7600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default +64001,6401,64,29,MALE,6.0_0000000000000533e+00,SINGLE,1.7_6800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,8.5_2800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +65001,6501,65,30,FEMALE,6.0_0000000000004263e+00,SINGLE,1.8_2000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,8.5_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,8.5_6000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +65002,6501,65,9,FEMALE,1.0_0000000000000000e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +66001,6601,66,31,MALE,5.9_9999999999997602e+00,MARRIED,1.8_7200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,8.6_3200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +67001,6701,67,32,FEMALE,6.0_0000000000001332e+00,SINGLE,1.9_2400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,8.6_8400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +68001,6801,68,33,MALE,6.0_0000000000004796e+00,SINGLE,1.9_7600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,8.7_3600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +69001,6901,69,34,FEMALE,5.9_9999999999998401e+00,MARRIED,2.0_2800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,8.7_8800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default +70001,7001,70,35,MALE,6.0_0000000000001954e+00,SINGLE,2.0_8000000000000000e+03,2.0_0000000000000000e+01,True,True,True,True,8.8_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,5.0_0000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +70002,7001,70,14,MALE,6.9_4117647058824527e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +71001,7101,71,36,FEMALE,5.9_9999999999995648e+00,SINGLE,2.1_3200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,8.8_9200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +72001,7201,72,37,MALE,5.9_9999999999979394e+00,MARRIED,2.1_8400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,8.9_4400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default +73001,7301,73,38,FEMALE,5.9_9999999999973177e+00,SINGLE,2.2_3600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,8.9_9600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +74001,7401,74,39,MALE,5.9_9999999999986677e+00,SINGLE,2.2_8800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,9.0_4800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +75001,7501,75,40,FEMALE,5.9_9999999999980460e+00,MARRIED,1.0_4000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,9.1_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.1_5600000000000000e+03,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default +75002,7501,75,11,FEMALE,1.0_0000000000000000e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +76001,7601,76,41,MALE,5.9_9999999999974420e+00,SINGLE,1.0_9200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,9.1_5200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +77001,7701,77,42,FEMALE,5.9_9999999999987654e+00,SINGLE,1.1_4400000000000000e+03,2.0_0000000000000000e+01,True,True,False,True,9.2_0400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +78001,7801,78,43,MALE,5.9_9999999999981615e+00,MARRIED,1.1_9600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,9.2_5600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +79001,7901,79,44,FEMALE,5.9_9999999999975664e+00,SINGLE,1.2_4800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,9.3_0800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +80001,8001,80,45,MALE,5.9_9999999999988631e+00,SINGLE,1.3_0000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,9.3_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,8.0_0000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +80002,8001,80,8,MALE,2.0_0000000000000000e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +81001,8101,81,46,FEMALE,5.9_9999999999982592e+00,MARRIED,1.3_5200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,9.4_1200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default +82001,8201,82,47,MALE,5.9_9999999999976730e+00,SINGLE,1.4_0400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,9.4_6400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +83001,8301,83,48,FEMALE,5.9_9999999999989519e+00,SINGLE,1.4_5600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,9.5_1600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +84001,8401,84,49,MALE,5.9_9999999999983658e+00,MARRIED,1.5_0800000000000000e+03,2.0_0000000000000000e+01,True,True,False,True,9.5_6800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +85001,8501,85,50,FEMALE,5.9_9999999999977796e+00,SINGLE,1.5_6000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,9.6_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,7.5_6000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +85002,8501,85,13,FEMALE,6.2_2727272727273107e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +86001,8601,86,51,MALE,5.9_9999999999990408e+00,SINGLE,1.6_1200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,9.6_7200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +87001,8701,87,52,FEMALE,5.9_9999999999984635e+00,MARRIED,1.6_6400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,9.7_2400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default +88001,8801,88,53,MALE,5.9_9999999999979039e+00,SINGLE,1.7_1600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,9.7_7600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +89001,8901,89,54,FEMALE,5.9_9999999999973355e+00,SINGLE,1.7_6800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,9.8_2800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +90001,9001,90,55,MALE,5.9_9999999999985700e+00,MARRIED,1.8_2000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,9.8_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.1_0000000000000000e+03,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,True,default +90002,9001,90,10,MALE,7.6_7647058823529171e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +91001,9101,91,56,FEMALE,5.9_9999999999980105e+00,SINGLE,1.8_7200000000000000e+03,3.5_0000000000000000e+01,True,True,False,True,9.9_3200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +92001,9201,92,57,MALE,5.9_9999999999974509e+00,SINGLE,1.9_2400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,9.9_8400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +93001,9301,93,58,FEMALE,5.9_9999999999986589e+00,MARRIED,1.9_7600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_0360000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +94001,9401,94,59,MALE,5.9_9999999999980993e+00,SINGLE,2.0_2800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_0880000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +95001,9501,95,60,FEMALE,5.9_9999999999975575e+00,SINGLE,2.0_8000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,1.0_1400000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_5600000000000000e+03,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +95002,9501,95,15,FEMALE,8.3_5714285714286120e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +96001,9601,96,61,MALE,5.9_9999999999987477e+00,MARRIED,2.1_3200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,1.0_1920000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +97001,9701,97,62,FEMALE,5.9_9999999999982059e+00,SINGLE,2.1_8400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_2440000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +98001,9801,98,63,MALE,5.9_9999999999976552e+00,SINGLE,2.2_3600000000000000e+03,2.0_0000000000000000e+01,True,True,False,True,1.0_2960000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +99001,9901,99,64,FEMALE,5.9_9999999999988365e+00,MARRIED,2.2_8800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_3480000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default +100001,10001,100,65,MALE,5.9_9999999999982947e+00,SINGLE,1.0_4000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,1.0_4000000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,7.0_0000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +100002,10001,100,12,MALE,5.4_9999999999999734e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +101001,10101,101,66,FEMALE,5.9_9999999999977796e+00,SINGLE,1.0_9200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,1.0_4520000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +102001,10201,102,67,MALE,5.9_9999999999989164e+00,MARRIED,1.1_4400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_5040000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +103001,10301,103,68,FEMALE,5.9_9999999999984013e+00,SINGLE,1.1_9600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_5560000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +104001,10401,104,69,MALE,5.9_9999999999978506e+00,SINGLE,1.2_4800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_6080000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +105001,10501,105,70,FEMALE,5.9_9999999999990141e+00,MARRIED,1.3_0000000000000000e+03,2.0_0000000000000000e+01,True,True,True,True,1.0_6600000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,6.5_6000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +105002,10501,105,9,FEMALE,2.4_8484848484848486e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +106001,10601,106,71,MALE,5.9_9999999999968203e+00,SINGLE,1.3_5200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,1.0_7120000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +107001,10701,107,72,FEMALE,5.9_9999999999962874e+00,SINGLE,1.4_0400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_7640000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +108001,10801,108,73,MALE,5.9_9999999999957989e+00,MARRIED,1.4_5600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_8160000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default +109001,10901,109,74,FEMALE,5.9_9999999999953104e+00,SINGLE,1.5_0800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.0_8680000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +110001,11001,110,20,MALE,6.0_0000000000000799e+00,SINGLE,1.5_6000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,1.0_9200000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_0000000000000000e+03,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +110002,11001,110,14,MALE,2.4_7058823529412130e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +111001,11101,111,21,FEMALE,5.9_9999999999999467e+00,MARRIED,1.6_1200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,1.0_9720000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +112001,11201,112,22,MALE,4.0_5095541401272818e+00,SINGLE,1.6_6400000000000000e+03,2.0_0000000000000000e+01,True,True,False,True,1.1_0240000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +113001,11301,113,23,FEMALE,7.9_5569620253166043e+00,SINGLE,1.7_1600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_0760000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +114001,11401,114,24,MALE,4.0_3773584905660687e+00,MARRIED,1.7_6800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_1280000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +115001,11501,115,25,FEMALE,7.9_6875000000006217e+00,SINGLE,1.8_2000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,1.1_1800000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,9.5_6000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +115002,11501,115,11,FEMALE,2.4_5714285714285419e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +116001,11601,116,26,MALE,4.0_2484472049693398e+00,SINGLE,1.8_7200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,1.1_2320000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +117001,11701,117,27,FEMALE,4.0_1851851851857766e+00,MARRIED,1.9_2400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_2840000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default +118001,11801,118,28,MALE,7.9_8773006134971375e+00,SINGLE,1.9_7600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_3360000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +119001,11901,119,29,FEMALE,4.0_0609756097560155e+00,SINGLE,2.0_2800000000000000e+03,2.0_0000000000000000e+01,True,True,False,True,1.1_3880000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +120001,12001,120,30,MALE,7.9_9999999999998934e+00,MARRIED,2.0_8000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,1.1_4400000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,6.0_0000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +120002,12001,120,8,MALE,9.5_5555555555555713e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +121001,12101,121,31,FEMALE,8.0_0602409638551649e+00,SINGLE,2.1_3200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,1.1_4920000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +122001,12201,122,32,MALE,3.9_8802395209580407e+00,SINGLE,2.1_8400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_5440000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +123001,12301,123,33,FEMALE,3.9_8214285714287186e+00,MARRIED,2.2_3600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_5960000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default +124001,12401,124,34,MALE,8.0_2366863905323768e+00,SINGLE,2.2_8800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_6480000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +125001,12501,125,35,FEMALE,3.9_7058823529411775e+00,SINGLE,1.0_4000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,1.1_7000000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.2_5600000000000000e+03,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +125002,12501,125,13,FEMALE,9.9_5454545454545148e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +126001,12601,126,36,MALE,3.9_6491228070177248e+00,MARRIED,1.0_9200000000000000e+03,3.5_0000000000000000e+01,True,True,False,True,1.1_7520000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default +127001,12701,127,37,FEMALE,3.9_5930232558138151e+00,SINGLE,1.1_4400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_8040000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +128001,12801,128,38,MALE,3.9_5375722543343144e+00,SINGLE,1.1_9600000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_8560000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +129001,12901,129,39,FEMALE,8.0_5172413793090058e+00,MARRIED,1.2_4800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.1_9080000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +130001,13001,130,40,MALE,3.9_4285714285708488e+00,SINGLE,1.3_0000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,1.1_9600000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,9.0_0000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +130002,13001,130,10,MALE,2.0_2941176470588092e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +131001,13101,131,41,FEMALE,8.0_6249999999993783e+00,SINGLE,1.3_5200000000000000e+03,3.5_0000000000000000e+01,True,True,False,False,1.2_0120000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +132001,13201,132,42,MALE,8.0_6779661016936700e+00,MARRIED,1.4_0400000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.2_0640000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +133001,13301,133,43,FEMALE,3.9_2696629213477744e+00,SINGLE,1.4_5600000000000000e+03,2.0_0000000000000000e+01,True,True,False,True,1.2_1160000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +134001,13401,134,44,MALE,3.9_2178770949712296e+00,SINGLE,1.5_0800000000000000e+03,0.0_0000000000000000e+00,True,True,False,False,1.2_1680000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +135001,13501,135,45,FEMALE,3.9_1666666666655283e+00,MARRIED,1.5_6000000000000000e+03,0.0_0000000000000000e+00,True,True,True,False,1.2_2200000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.8_2000000000000000e+02,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,8.5_6000000000000000e+02,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +135002,13501,135,15,FEMALE,4.6_7142857142856904e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/property_rental_facts.json b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/property_rental_facts.json index e7e4b8e2d6..b437809953 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/property_rental_facts.json +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/property_rental_facts.json @@ -9,18 +9,18 @@ "services_including_wages": 68.27759643273899 }, "expenses": { - "all": 32700.51779438455, - "individual": 32373.5126164407, - "partnership": 327.00517794384723 + "all": 32671.9451111427, + "individual": 32345.225660031272, + "partnership": 326.7194511114285 }, "expenses_by_type": { - "legal_management_and_professional_fees": 3914.6519143781215, - "non_residential_finance_costs": 1251.559386087236, - "other_allowable_expenses": 4309.8811941951435, - "rent_rates_and_insurance": 3585.2941811972696, - "repairs_and_maintenance": 6031.951627683596, - "residential_finance_costs": 12063.903255367191, - "services_including_wages": 1543.2762354759902 + "legal_management_and_professional_fees": 3911.2314147439897, + "non_residential_finance_costs": 1250.4658128869005, + "other_allowable_expenses": 4306.115355655642, + "rent_rates_and_insurance": 3582.1614639842787, + "repairs_and_maintenance": 6026.681098199272, + "residential_finance_costs": 12053.362196398544, + "services_including_wages": 1541.9277692740727 }, "landlords": { "all": 136.55519286547798, @@ -28,9 +28,9 @@ "partnership": 1.3655519286547815 }, "receipts": { - "all": 52320.82847101528, - "individual": 51797.620186305125, - "partnership": 523.2082847101556 + "all": 52275.11217782832, + "individual": 51752.36105605004, + "partnership": 522.7511217782812 }, "receipts_bands": [ { diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/schema.json b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/schema.json index a093457cba..3376d34772 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/schema.json +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/schema.json @@ -52,6 +52,7 @@ "free_school_breakfasts": "float64", "free_school_fruit_veg": "float64", "free_school_meals": "float64", + "frs_bonus_amount": "float64", "gender": "string", "healthy_start_vouchers": "float64", "hours_worked": "float64", @@ -100,6 +101,7 @@ "savings_interest_income": "float64", "sda_reported": "float64", "self_employment_income": "float64", + "spousal_maintenance_income": "float64", "ssmg_reported": "float64", "stands_as_sole_owner_or_partner_of_company": "bool", "state_pension_reported": "float64", @@ -114,6 +116,7 @@ "uc_is_in_startup_period": "bool", "universal_credit_reported": "float64", "war_widows_pension_reported": "float64", + "widowed_parents_allowance_reported": "float64", "winter_fuel_allowance_reported": "float64", "working_tax_credit_reported": "float64", "would_claim_carers_allowance": "bool" diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/was.csv b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/was.csv index d1b8094d72..e439d6b6df 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/was.csv +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/was.csv @@ -1,65 +1,65 @@ -CASER8,DVFLISAVR8_aggr,R8xshhwgt,DVLUKValR8_sum,DVPropertyR8,DVFESHARESR8_aggr,DVFShUKVR8_aggr,DVIISAVR8_aggR,DVCISAVR8_aggr,DVFCollVR8_aggr,totalpenr8_aggr,dvvaldbt_scaper8_aggr,NumAdultR8,NumChildR8,DVGIPPENR8_AGGR,DVGISER8_AGGR,DVGIINVR8_aggr,DVGIEMPR8_AGGR,HBedRmR8,GORR8,DVPriRntR8,DVCTaxAmtAnnualR8,DVNetRentAmtAnnualR8_aggr,HFINWNTR8_Sum,HFINWNTR8_exSLC_Sum,HMortGR8,TotMortR8,OthMortR8_sum,Ten1R8,HFINWR8_SUM,DVhvalueR8,DVHseValR8_sum,DVBltValR8_sum,DVBlDValR8_sum,DVTotinc_bhcR8,DVSaValR8_aggr,vcarnr8,Tot_LosR8_aggr,Tot_los_exc_SLCR8_aggr -1,5,1,10,104510,1,3,5,7,9,100,40,1,0,11,13,15,17,1,8,-9,900,0,555,555,2000,0,2000,1,555,100000,1000,0,3000,20000,500,0,9000,9000 -2,0,1.1000000000000001,0,142500,2,4,6,8,10,110,41,2,1,12,14,16,18,2,11,-9,910,2040,-4464,541,10100,10100,0,2,581,102000,0,40500,0,21000,520,1,14015,9010 -3,0,1.2,0,104000,3,5,7,9,11,120,42,3,2,13,15,17,19,3,12,-9,920,0,527,527,10200,10200,0,3,607,104000,0,0,0,22000,540,2,9020,9020 -4,0,1.3,0,1150,4,6,8,10,12,130,43,1,0,14,16,18,20,4,1,1,930,0,513,513,0,0,0,4,633,0,1150,0,0,23000,560,3,9030,9030 -5,0,1.3999999999999999,0,3240,5,7,9,11,13,140,44,2,1,15,17,19,21,5,8,2,940,0,-4521,499,0,0,0,4,659,0,0,0,3240,24000,580,0,14060,9040 -6,10,1.5,15,15,6,8,10,12,14,150,45,3,2,16,18,20,22,1,11,1,950,0,685,685,0,0,0,5,685,0,0,0,0,25000,600,1,9050,9050 -7,11,1.6000000000000001,0,113300,7,9,11,13,15,160,46,1,0,17,19,21,23,2,12,-9,960,0,671,671,2006,0,2006,1,711,112000,1300,0,0,26000,620,2,9060,9060 -8,0,1,0,158035,8,10,12,14,16,170,47,2,1,18,20,22,24,3,1,-9,970,2280,-4378,657,10700,10700,0,2,737,114000,0,43500,0,27000,640,3,14105,9070 -9,0,1.1000000000000001,0,119480,9,11,13,15,17,180,48,3,2,19,21,23,25,4,8,-9,980,0,643,643,10800,10800,0,3,763,116000,0,0,3480,28000,660,0,9080,9080 -10,0,1.2,0,1450,10,12,14,16,18,190,49,1,0,20,22,24,26,5,11,1,990,0,629,629,0,0,0,4,789,0,1450,0,0,29000,680,1,9090,9090 -11,15,1.3,20,20,11,13,15,17,19,200,50,2,1,21,23,25,27,1,12,2,1000,0,-4235,815,0,0,0,4,815,0,0,0,0,30000,700,2,14150,9100 -12,0,1.3999999999999999,0,0,12,14,16,18,20,210,51,3,2,22,24,26,28,2,1,1,1010,0,801,801,0,0,0,5,841,0,0,0,0,31000,720,3,9110,9110 -13,0,1.5,0,129320,13,15,17,19,21,220,52,1,0,23,25,27,29,3,8,-9,1020,0,787,787,2012,0,2012,1,867,124000,1600,0,3720,32000,740,0,9120,9120 -14,0,1.6000000000000001,0,172500,14,16,18,20,22,230,53,2,1,24,26,28,30,4,11,-9,1030,2520,-4292,773,11300,11300,0,2,893,126000,0,46500,0,33000,760,1,14195,9130 -15,19,1,0,128570,15,17,19,21,23,240,54,3,2,25,27,29,31,5,12,-9,1040,0,759,759,11400,11400,0,3,919,128000,0,0,0,34000,780,2,9140,9140 -16,0,1.1000000000000001,25,1775,16,18,20,22,24,250,55,1,0,26,28,30,32,1,1,1,1050,0,945,945,0,0,0,4,945,0,1750,0,0,35000,800,3,9150,9150 -17,0,1.2,0,3960,17,19,21,23,25,260,56,2,1,27,29,31,33,2,8,2,1060,0,-4149,931,0,0,0,4,971,0,0,0,3960,36000,820,0,14240,9160 -18,0,1.3,0,0,18,20,22,24,26,270,57,3,2,28,30,32,34,3,11,1,1070,0,917,917,0,0,0,5,997,0,0,0,0,37000,840,1,9170,9170 -19,0,1.3999999999999999,0,137900,19,21,23,25,27,280,58,1,0,29,31,33,35,4,12,-9,1080,0,903,903,2018,0,2018,1,1023,136000,1900,0,0,38000,860,2,9180,9180 -20,0,1.5,0,187500,20,22,24,26,28,290,59,2,1,30,32,34,36,5,1,-9,1090,2760,-4206,889,11900,11900,0,2,1049,138000,0,49500,0,39000,880,3,14285,9190 -21,5,1.6000000000000001,30,144230,21,23,25,27,29,300,60,3,2,31,33,35,37,1,8,-9,1100,0,1075,1075,12000,12000,0,3,1075,140000,0,0,4200,40000,900,0,9200,9200 -22,0,1,0,2655,22,24,26,28,30,310,61,1,0,32,34,36,38,2,11,1,1110,0,1061,1061,0,0,0,4,1101,0,2050,0,0,41000,920,1,9210,9210 -23,0,1.1000000000000001,0,0,23,25,27,29,31,320,62,2,1,33,35,37,39,3,12,2,1120,0,-4063,1047,0,0,0,4,1127,0,0,0,0,42000,940,2,14330,9220 -24,0,1.2,0,0,24,26,28,30,32,330,63,3,2,34,36,38,40,4,1,1,1130,0,1033,1033,0,0,0,5,1153,0,0,0,0,43000,960,3,9230,9230 -25,9,1.3,0,154640,25,27,29,31,33,340,64,1,0,35,37,39,41,5,8,-9,1140,0,1019,1019,2024,0,2024,1,1179,148000,2200,0,4440,44000,980,0,9240,9240 -26,0,1.3999999999999999,35,202535,26,28,30,32,34,350,65,2,1,36,38,40,42,1,11,-9,1150,3000,-3920,1205,12500,12500,0,2,1205,150000,0,52500,0,45000,1000,1,14375,9250 -27,0,1.5,0,152000,27,29,31,33,35,360,66,3,2,37,39,41,43,2,12,-9,1160,0,1191,1191,12600,12600,0,3,1231,152000,0,0,0,46000,1020,2,9260,9260 -28,0,1.6000000000000001,0,2350,28,30,32,34,36,370,67,1,0,38,40,42,44,3,1,1,1170,0,1177,1177,0,0,0,4,1257,0,2350,0,0,47000,1040,3,9270,9270 -29,13,1,0,5320,29,31,33,35,37,380,68,2,1,39,41,43,45,4,8,2,1180,0,-3977,1163,0,0,0,4,1283,0,0,0,4680,48000,1060,0,14420,9280 -30,0,1.1000000000000001,0,0,30,32,34,36,38,390,69,3,2,40,42,44,46,5,11,1,1190,0,1149,1149,0,0,0,5,1309,0,0,0,0,49000,1080,1,9290,9290 -31,0,1.2,40,162540,31,33,35,37,39,400,70,1,0,41,43,45,47,1,12,-9,1200,0,1335,1335,2030,0,2030,1,1335,160000,2500,0,0,50000,1100,2,9300,9300 -32,0,1.3,0,217500,32,34,36,38,40,410,71,2,1,42,44,46,48,2,1,-9,1210,3240,-3834,1321,13100,13100,0,2,1361,162000,0,55500,0,51000,1120,3,14465,9310 -33,0,1.3999999999999999,0,168920,33,35,37,39,41,420,72,3,2,43,45,47,49,3,8,-9,1220,0,1307,1307,13200,13200,0,3,1387,164000,0,0,4920,52000,1140,0,9320,9320 -34,0,1.5,0,2650,34,36,38,40,42,430,73,1,0,44,46,48,50,4,11,1,1230,0,1293,1293,0,0,0,4,1413,0,2650,0,0,53000,1160,1,9330,9330 -35,19,1.6000000000000001,0,0,35,37,39,41,43,440,74,2,1,45,47,49,51,5,12,2,1240,0,-3891,1279,0,0,0,4,1439,0,0,0,0,54000,1180,2,14510,9340 -36,0,1,45,720,36,38,40,42,44,450,75,3,2,46,48,50,52,1,1,1,1250,0,1465,1465,0,0,0,5,1465,0,0,0,0,55000,1200,3,9350,9350 -37,0,1.1000000000000001,0,179960,37,39,41,43,45,460,76,1,0,47,49,51,53,2,8,-9,1260,0,1451,1451,2036,0,2036,1,1491,172000,2800,0,5160,56000,1220,0,9360,9360 -38,0,1.2,0,232500,38,40,42,44,46,470,77,2,1,48,50,52,54,3,11,-9,1270,3480,-3748,1437,13700,13700,0,2,1517,174000,0,58500,0,57000,1240,1,14555,9370 -39,23,1.3,0,176000,39,41,43,45,47,480,78,3,2,49,51,53,55,4,12,-9,1280,0,1423,1423,13800,13800,0,3,1543,176000,0,0,0,58000,1260,2,9380,9380 -40,0,1.3999999999999999,0,2950,40,42,44,46,48,490,79,1,0,50,52,54,56,5,1,1,1290,0,1409,1409,0,0,0,4,1569,0,2950,0,0,59000,1280,3,9390,9390 -41,0,1.5,50,5450,41,43,45,47,49,500,80,2,1,51,53,55,57,1,8,2,1300,0,-3605,1595,0,0,0,4,1595,0,0,0,5400,60000,1300,0,14600,9400 -42,0,1.6000000000000001,0,0,42,44,46,48,50,510,81,3,2,52,54,56,58,2,11,1,1310,0,1581,1581,0,0,0,5,1621,0,0,0,0,61000,1320,1,9410,9410 -43,7,1,0,187810,43,45,47,49,51,520,82,1,0,53,55,57,59,3,12,-9,1320,0,1567,1567,2042,0,2042,1,1647,184000,3100,0,0,62000,1340,2,9420,9420 -44,0,1.1000000000000001,0,247500,44,46,48,50,52,530,83,2,1,54,56,58,60,4,1,-9,1330,3720,-3662,1553,14300,14300,0,2,1673,186000,0,61500,0,63000,1360,3,14645,9430 -45,0,1.2,0,193640,45,47,49,51,53,540,84,3,2,55,57,59,61,5,8,-9,1340,0,1539,1539,14400,14400,0,3,1699,188000,0,0,5640,64000,1380,0,9440,9440 -46,0,1.3,55,3305,46,48,50,52,54,550,85,1,0,56,58,60,62,1,11,1,1350,0,1725,1725,0,0,0,4,1725,0,3250,0,0,65000,1400,1,9450,9450 -47,0,1.3999999999999999,0,0,47,49,51,53,55,560,86,2,1,57,59,61,63,2,12,2,1360,0,-3519,1711,0,0,0,4,1751,0,0,0,0,66000,1420,2,14690,9460 -48,0,1.5,0,0,48,50,52,54,56,570,87,3,2,58,60,62,64,3,1,1,1370,0,1697,1697,0,0,0,5,1777,0,0,0,0,67000,1440,3,9470,9470 -49,13,1.6000000000000001,0,205280,49,51,53,55,57,580,88,1,0,59,61,63,65,4,8,-9,1380,0,1683,1683,2048,0,2048,1,1803,196000,3400,0,5880,68000,1460,0,9480,9480 -50,0,1,0,263245,50,52,54,56,58,590,89,2,1,60,62,64,66,5,11,-9,1390,3960,-3576,1669,14900,14900,0,2,1829,198000,0,64500,0,69000,1480,1,14735,9490 -51,0,1.1000000000000001,60,200060,51,53,55,57,59,600,90,3,2,61,63,65,67,1,12,-9,1400,0,1855,1855,15000,15000,0,3,1855,200000,0,0,0,70000,1500,2,9500,9500 -52,0,1.2,0,3550,52,54,56,58,60,610,91,1,0,62,64,66,68,2,1,1,1410,0,1841,1841,0,0,0,4,1881,0,3550,0,0,71000,1520,3,9510,9510 -53,17,1.3,0,6120,53,55,57,59,61,620,92,2,1,63,65,67,69,3,8,2,1420,0,-3433,1827,0,0,0,4,1907,0,0,0,6120,72000,1540,0,14780,9520 -54,0,1.3999999999999999,0,0,54,56,58,60,62,630,93,3,2,64,66,68,70,4,11,1,1430,0,1813,1813,0,0,0,5,1933,0,0,0,0,73000,1560,1,9530,9530 -55,0,1.5,0,211700,55,57,59,61,63,640,94,1,0,65,67,69,71,5,12,-9,1440,0,1799,1799,2054,0,2054,1,1959,208000,3700,0,0,74000,1580,2,9540,9540 -56,0,1.6000000000000001,65,277565,56,58,60,62,64,650,95,2,1,66,68,70,72,1,1,-9,1450,4200,-3290,1985,15500,15500,0,2,1985,210000,0,67500,0,75000,1600,3,14825,9550 -57,21,1,0,219140,57,59,61,63,65,660,96,3,2,67,69,71,73,2,8,-9,1460,0,1971,1971,15600,15600,0,3,2011,212000,0,0,6360,76000,1620,0,9560,9560 -58,0,1.1000000000000001,0,3850,58,60,62,64,66,670,97,1,0,68,70,72,74,3,11,1,1470,0,1957,1957,0,0,0,4,2037,0,3850,0,0,77000,1640,1,9570,9570 -59,0,1.2,0,0,59,61,63,65,67,680,98,2,1,69,71,73,75,4,12,2,1480,0,-3347,1943,0,0,0,4,2063,0,0,0,0,78000,1660,2,14870,9580 -60,0,1.3,0,0,60,62,64,66,68,690,99,3,2,70,72,74,76,5,1,1,1490,0,1929,1929,0,0,0,5,2089,0,0,0,0,79000,1680,3,9590,9590 -61,0,1.3999999999999999,70,230670,61,63,65,67,69,700,100,1,0,71,73,75,77,1,8,-9,1500,0,2115,2115,2060,0,2060,1,2115,220000,4000,0,6600,80000,1700,0,9600,9600 -62,0,1.5,0,292500,62,64,66,68,70,710,101,2,1,72,74,76,78,2,11,-9,1510,4440,-3204,2101,16100,16100,0,2,2141,222000,0,70500,0,81000,1720,1,14915,9610 -63,7,1.6000000000000001,0,224000,63,65,67,69,71,720,102,3,2,73,75,77,79,3,12,-9,1520,0,2087,2087,16200,16200,0,3,2167,224000,0,0,0,82000,1740,2,9620,9620 -64,0,1,0,4965,64,66,68,70,72,730,103,1,0,74,76,78,80,4,1,1,1530,0,2073,2073,0,0,0,4,2193,0,4150,0,0,83000,1760,3,9630,9630 +CASER8,DVFLISAVR8_aggr,R8xshhwgt,DVLUKValR8_sum,DVPropertyR8,DVFESHARESR8_aggr,DVFShUKVR8_aggr,DVIISAVR8_aggR,DVCISAVR8_aggr,DVFCollVR8_aggr,totalpenr8_aggr,dvvaldbt_scaper8_aggr,NumAdultR8,NumChildR8,DVGIPPENR8_AGGR,DVGISER8_AGGR,DVGIINVR8_aggr,DVGIEMPR8_AGGR,HBedRmR8,GORR8,DVPriRntR8,DVCTaxAmtAnnualR8,DVNetRentAmtAnnualR8_aggr,HFINWNTR8_Sum,HFINWNTR8_exSLC_Sum,HMortGR8,TotMortR8,OthMortR8_sum,Ten1R8,HFINWR8_SUM,DVhvalueR8,DVHseValR8_sum,DVBltValR8_sum,DVBlDValR8_sum,DVHseDebtR8_sum,DVBLtDebtR8_sum,DVBldDebtR8_sum,DVTotinc_bhcR8,DVSaValR8_aggr,vcarnr8,Tot_LosR8_aggr,Tot_los_exc_SLCR8_aggr +1,5,1,10,104510,1,3,5,7,9,100,40,1,0,11,13,15,17,1,8,-9,900,0,555,555,2000,0,2000,1,555,100000,1000,0,3000,1200,0,600,20000,500,0,9000,9000 +2,0,1.1000000000000001,0,142500,2,4,6,8,10,110,41,2,1,12,14,16,18,2,11,-9,910,2040,-4464,541,10100,10100,0,2,581,102000,0,40500,0,0,0,0,21000,520,1,14015,9010 +3,0,1.2,0,104000,3,5,7,9,11,120,42,3,2,13,15,17,19,3,12,-9,920,0,527,527,10200,10200,0,3,607,104000,0,0,0,0,0,0,22000,540,2,9020,9020 +4,0,1.3,0,1150,4,6,8,10,12,130,43,1,0,14,16,18,20,4,1,1,930,0,513,513,0,0,0,4,633,0,1150,0,0,0,0,0,23000,560,3,9030,9030 +5,0,1.3999999999999999,0,3240,5,7,9,11,13,140,44,2,1,15,17,19,21,5,8,2,940,0,-4521,499,0,0,0,4,659,0,0,0,3240,0,0,0,24000,580,0,14060,9040 +6,10,1.5,15,15,6,8,10,12,14,150,45,3,2,16,18,20,22,1,11,1,950,0,685,685,0,0,0,5,685,0,0,0,0,0,0,0,25000,600,1,9050,9050 +7,11,1.6000000000000001,0,113300,7,9,11,13,15,160,46,1,0,17,19,21,23,2,12,-9,960,0,671,671,2006,0,2006,1,711,112000,1300,0,0,1203.5999999999999,0,0,26000,620,2,9060,9060 +8,0,1,0,158035,8,10,12,14,16,170,47,2,1,18,20,22,24,3,1,-9,970,2280,-4378,657,10700,10700,0,2,737,114000,0,43500,0,0,0,0,27000,640,3,14105,9070 +9,0,1.1000000000000001,0,119480,9,11,13,15,17,180,48,3,2,19,21,23,25,4,8,-9,980,0,643,643,10800,10800,0,3,763,116000,0,0,3480,0,0,0,28000,660,0,9080,9080 +10,0,1.2,0,1450,10,12,14,16,18,190,49,1,0,20,22,24,26,5,11,1,990,0,629,629,0,0,0,4,789,0,1450,0,0,0,0,0,29000,680,1,9090,9090 +11,15,1.3,20,20,11,13,15,17,19,200,50,2,1,21,23,25,27,1,12,2,1000,0,-4235,815,0,0,0,4,815,0,0,0,0,0,0,0,30000,700,2,14150,9100 +12,0,1.3999999999999999,0,0,12,14,16,18,20,210,51,3,2,22,24,26,28,2,1,1,1010,0,801,801,0,0,0,5,841,0,0,0,0,0,0,0,31000,720,3,9110,9110 +13,0,1.5,0,129320,13,15,17,19,21,220,52,1,0,23,25,27,29,3,8,-9,1020,0,787,787,2012,0,2012,1,867,124000,1600,0,3720,1207.2,0,603.60000000000002,32000,740,0,9120,9120 +14,0,1.6000000000000001,0,172500,14,16,18,20,22,230,53,2,1,24,26,28,30,4,11,-9,1030,2520,-4292,773,11300,11300,0,2,893,126000,0,46500,0,0,0,0,33000,760,1,14195,9130 +15,19,1,0,128570,15,17,19,21,23,240,54,3,2,25,27,29,31,5,12,-9,1040,0,759,759,11400,11400,0,3,919,128000,0,0,0,0,0,0,34000,780,2,9140,9140 +16,0,1.1000000000000001,25,1775,16,18,20,22,24,250,55,1,0,26,28,30,32,1,1,1,1050,0,945,945,0,0,0,4,945,0,1750,0,0,0,0,0,35000,800,3,9150,9150 +17,0,1.2,0,3960,17,19,21,23,25,260,56,2,1,27,29,31,33,2,8,2,1060,0,-4149,931,0,0,0,4,971,0,0,0,3960,0,0,0,36000,820,0,14240,9160 +18,0,1.3,0,0,18,20,22,24,26,270,57,3,2,28,30,32,34,3,11,1,1070,0,917,917,0,0,0,5,997,0,0,0,0,0,0,0,37000,840,1,9170,9170 +19,0,1.3999999999999999,0,137900,19,21,23,25,27,280,58,1,0,29,31,33,35,4,12,-9,1080,0,903,903,2018,0,2018,1,1023,136000,1900,0,0,1210.8,0,0,38000,860,2,9180,9180 +20,0,1.5,0,187500,20,22,24,26,28,290,59,2,1,30,32,34,36,5,1,-9,1090,2760,-4206,889,11900,11900,0,2,1049,138000,0,49500,0,0,0,0,39000,880,3,14285,9190 +21,5,1.6000000000000001,30,144230,21,23,25,27,29,300,60,3,2,31,33,35,37,1,8,-9,1100,0,1075,1075,12000,12000,0,3,1075,140000,0,0,4200,0,0,0,40000,900,0,9200,9200 +22,0,1,0,2655,22,24,26,28,30,310,61,1,0,32,34,36,38,2,11,1,1110,0,1061,1061,0,0,0,4,1101,0,2050,0,0,0,0,0,41000,920,1,9210,9210 +23,0,1.1000000000000001,0,0,23,25,27,29,31,320,62,2,1,33,35,37,39,3,12,2,1120,0,-4063,1047,0,0,0,4,1127,0,0,0,0,0,0,0,42000,940,2,14330,9220 +24,0,1.2,0,0,24,26,28,30,32,330,63,3,2,34,36,38,40,4,1,1,1130,0,1033,1033,0,0,0,5,1153,0,0,0,0,0,0,0,43000,960,3,9230,9230 +25,9,1.3,0,154640,25,27,29,31,33,340,64,1,0,35,37,39,41,5,8,-9,1140,0,1019,1019,2024,0,2024,1,1179,148000,2200,0,4440,1214.3999999999999,0,607.19999999999993,44000,980,0,9240,9240 +26,0,1.3999999999999999,35,202535,26,28,30,32,34,350,65,2,1,36,38,40,42,1,11,-9,1150,3000,-3920,1205,12500,12500,0,2,1205,150000,0,52500,0,0,0,0,45000,1000,1,14375,9250 +27,0,1.5,0,152000,27,29,31,33,35,360,66,3,2,37,39,41,43,2,12,-9,1160,0,1191,1191,12600,12600,0,3,1231,152000,0,0,0,0,0,0,46000,1020,2,9260,9260 +28,0,1.6000000000000001,0,2350,28,30,32,34,36,370,67,1,0,38,40,42,44,3,1,1,1170,0,1177,1177,0,0,0,4,1257,0,2350,0,0,0,0,0,47000,1040,3,9270,9270 +29,13,1,0,5320,29,31,33,35,37,380,68,2,1,39,41,43,45,4,8,2,1180,0,-3977,1163,0,0,0,4,1283,0,0,0,4680,0,0,0,48000,1060,0,14420,9280 +30,0,1.1000000000000001,0,0,30,32,34,36,38,390,69,3,2,40,42,44,46,5,11,1,1190,0,1149,1149,0,0,0,5,1309,0,0,0,0,0,0,0,49000,1080,1,9290,9290 +31,0,1.2,40,162540,31,33,35,37,39,400,70,1,0,41,43,45,47,1,12,-9,1200,0,1335,1335,2030,0,2030,1,1335,160000,2500,0,0,1218,0,0,50000,1100,2,9300,9300 +32,0,1.3,0,217500,32,34,36,38,40,410,71,2,1,42,44,46,48,2,1,-9,1210,3240,-3834,1321,13100,13100,0,2,1361,162000,0,55500,0,0,0,0,51000,1120,3,14465,9310 +33,0,1.3999999999999999,0,168920,33,35,37,39,41,420,72,3,2,43,45,47,49,3,8,-9,1220,0,1307,1307,13200,13200,0,3,1387,164000,0,0,4920,0,0,0,52000,1140,0,9320,9320 +34,0,1.5,0,2650,34,36,38,40,42,430,73,1,0,44,46,48,50,4,11,1,1230,0,1293,1293,0,0,0,4,1413,0,2650,0,0,0,0,0,53000,1160,1,9330,9330 +35,19,1.6000000000000001,0,0,35,37,39,41,43,440,74,2,1,45,47,49,51,5,12,2,1240,0,-3891,1279,0,0,0,4,1439,0,0,0,0,0,0,0,54000,1180,2,14510,9340 +36,0,1,45,720,36,38,40,42,44,450,75,3,2,46,48,50,52,1,1,1,1250,0,1465,1465,0,0,0,5,1465,0,0,0,0,0,0,0,55000,1200,3,9350,9350 +37,0,1.1000000000000001,0,179960,37,39,41,43,45,460,76,1,0,47,49,51,53,2,8,-9,1260,0,1451,1451,2036,0,2036,1,1491,172000,2800,0,5160,1221.5999999999999,0,610.79999999999995,56000,1220,0,9360,9360 +38,0,1.2,0,232500,38,40,42,44,46,470,77,2,1,48,50,52,54,3,11,-9,1270,3480,-3748,1437,13700,13700,0,2,1517,174000,0,58500,0,0,0,0,57000,1240,1,14555,9370 +39,23,1.3,0,176000,39,41,43,45,47,480,78,3,2,49,51,53,55,4,12,-9,1280,0,1423,1423,13800,13800,0,3,1543,176000,0,0,0,0,0,0,58000,1260,2,9380,9380 +40,0,1.3999999999999999,0,2950,40,42,44,46,48,490,79,1,0,50,52,54,56,5,1,1,1290,0,1409,1409,0,0,0,4,1569,0,2950,0,0,0,0,0,59000,1280,3,9390,9390 +41,0,1.5,50,5450,41,43,45,47,49,500,80,2,1,51,53,55,57,1,8,2,1300,0,-3605,1595,0,0,0,4,1595,0,0,0,5400,0,0,0,60000,1300,0,14600,9400 +42,0,1.6000000000000001,0,0,42,44,46,48,50,510,81,3,2,52,54,56,58,2,11,1,1310,0,1581,1581,0,0,0,5,1621,0,0,0,0,0,0,0,61000,1320,1,9410,9410 +43,7,1,0,187810,43,45,47,49,51,520,82,1,0,53,55,57,59,3,12,-9,1320,0,1567,1567,2042,0,2042,1,1647,184000,3100,0,0,1225.2,0,0,62000,1340,2,9420,9420 +44,0,1.1000000000000001,0,247500,44,46,48,50,52,530,83,2,1,54,56,58,60,4,1,-9,1330,3720,-3662,1553,14300,14300,0,2,1673,186000,0,61500,0,0,0,0,63000,1360,3,14645,9430 +45,0,1.2,0,193640,45,47,49,51,53,540,84,3,2,55,57,59,61,5,8,-9,1340,0,1539,1539,14400,14400,0,3,1699,188000,0,0,5640,0,0,0,64000,1380,0,9440,9440 +46,0,1.3,55,3305,46,48,50,52,54,550,85,1,0,56,58,60,62,1,11,1,1350,0,1725,1725,0,0,0,4,1725,0,3250,0,0,0,0,0,65000,1400,1,9450,9450 +47,0,1.3999999999999999,0,0,47,49,51,53,55,560,86,2,1,57,59,61,63,2,12,2,1360,0,-3519,1711,0,0,0,4,1751,0,0,0,0,0,0,0,66000,1420,2,14690,9460 +48,0,1.5,0,0,48,50,52,54,56,570,87,3,2,58,60,62,64,3,1,1,1370,0,1697,1697,0,0,0,5,1777,0,0,0,0,0,0,0,67000,1440,3,9470,9470 +49,13,1.6000000000000001,0,205280,49,51,53,55,57,580,88,1,0,59,61,63,65,4,8,-9,1380,0,1683,1683,2048,0,2048,1,1803,196000,3400,0,5880,1228.8,0,614.39999999999998,68000,1460,0,9480,9480 +50,0,1,0,263245,50,52,54,56,58,590,89,2,1,60,62,64,66,5,11,-9,1390,3960,-3576,1669,14900,14900,0,2,1829,198000,0,64500,0,0,0,0,69000,1480,1,14735,9490 +51,0,1.1000000000000001,60,200060,51,53,55,57,59,600,90,3,2,61,63,65,67,1,12,-9,1400,0,1855,1855,15000,15000,0,3,1855,200000,0,0,0,0,0,0,70000,1500,2,9500,9500 +52,0,1.2,0,3550,52,54,56,58,60,610,91,1,0,62,64,66,68,2,1,1,1410,0,1841,1841,0,0,0,4,1881,0,3550,0,0,0,0,0,71000,1520,3,9510,9510 +53,17,1.3,0,6120,53,55,57,59,61,620,92,2,1,63,65,67,69,3,8,2,1420,0,-3433,1827,0,0,0,4,1907,0,0,0,6120,0,0,0,72000,1540,0,14780,9520 +54,0,1.3999999999999999,0,0,54,56,58,60,62,630,93,3,2,64,66,68,70,4,11,1,1430,0,1813,1813,0,0,0,5,1933,0,0,0,0,0,0,0,73000,1560,1,9530,9530 +55,0,1.5,0,211700,55,57,59,61,63,640,94,1,0,65,67,69,71,5,12,-9,1440,0,1799,1799,2054,0,2054,1,1959,208000,3700,0,0,1232.3999999999999,0,0,74000,1580,2,9540,9540 +56,0,1.6000000000000001,65,277565,56,58,60,62,64,650,95,2,1,66,68,70,72,1,1,-9,1450,4200,-3290,1985,15500,15500,0,2,1985,210000,0,67500,0,0,0,0,75000,1600,3,14825,9550 +57,21,1,0,219140,57,59,61,63,65,660,96,3,2,67,69,71,73,2,8,-9,1460,0,1971,1971,15600,15600,0,3,2011,212000,0,0,6360,0,0,0,76000,1620,0,9560,9560 +58,0,1.1000000000000001,0,3850,58,60,62,64,66,670,97,1,0,68,70,72,74,3,11,1,1470,0,1957,1957,0,0,0,4,2037,0,3850,0,0,0,0,0,77000,1640,1,9570,9570 +59,0,1.2,0,0,59,61,63,65,67,680,98,2,1,69,71,73,75,4,12,2,1480,0,-3347,1943,0,0,0,4,2063,0,0,0,0,0,0,0,78000,1660,2,14870,9580 +60,0,1.3,0,0,60,62,64,66,68,690,99,3,2,70,72,74,76,5,1,1,1490,0,1929,1929,0,0,0,5,2089,0,0,0,0,0,0,0,79000,1680,3,9590,9590 +61,0,1.3999999999999999,70,230670,61,63,65,67,69,700,100,1,0,71,73,75,77,1,8,-9,1500,0,2115,2115,2060,0,2060,1,2115,220000,4000,0,6600,1236,0,618,80000,1700,0,9600,9600 +62,0,1.5,0,292500,62,64,66,68,70,710,101,2,1,72,74,76,78,2,11,-9,1510,4440,-3204,2101,16100,16100,0,2,2141,222000,0,70500,0,0,0,0,81000,1720,1,14915,9610 +63,7,1.6000000000000001,0,224000,63,65,67,69,71,720,102,3,2,73,75,77,79,3,12,-9,1520,0,2087,2087,16200,16200,0,3,2167,224000,0,0,0,0,0,0,82000,1740,2,9620,9620 +64,0,1,0,4965,64,66,68,70,72,730,103,1,0,74,76,78,80,4,1,1,1530,0,2073,2073,0,0,0,4,2193,0,4150,0,0,0,0,0,83000,1760,3,9630,9630 diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/uk_spine.json b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/uk_spine.json index 6c09a01d2f..70502bc611 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/uk_spine.json +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/uk_spine.json @@ -1 +1 @@ -{"country":"uk","nodes":[{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Load the source-bound UK FRS root population.","id":"create_uk_frs","inputs":[],"kernel":"uk.create@1","mass":"conserve","outputs":[{"column":"age","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"gender","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"months_since_last_birthday","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"marital_status","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"hours_worked","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"care_hours","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"is_household_head","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_benunit_head","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_parent","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_blind","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_uc_claimant","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_claimant_or_partner","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_hbai_dependent_child","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"uc_is_in_startup_period","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"uc_is_in_gainful_self_employment","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"rent_paid_as_boarder","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"rent_paid_as_lodger","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"trading_loss","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"loss_relief","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"ni_class_4_losses_brought_forward","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"private_pension_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"tax_free_savings_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"savings_interest_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"dividend_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"stands_as_sole_owner_or_partner_of_company","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_engaged_in_owned_company_trade","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_is_main_employment","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_carries_on_trade","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_carries_on_property_business","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_income_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"reports_rent_from_other_property","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"maintenance_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"miscellaneous_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"private_transfer_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"lump_sum_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"student_loan_repayments","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"statutory_sick_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"statutory_maternity_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"statutory_paternity_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"student_loans","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"access_fund","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"education_grants","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"healthy_start_vouchers","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"free_school_breakfasts","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"free_school_fruit_veg","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"free_school_meals","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"maintenance_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"childcare_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"personal_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"salary_sacrifice_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"salary_sacrifice_asked","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"child_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"attendance_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_sc_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_m_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"carers_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"ssmg_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pension_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"state_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"winter_fuel_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"incapacity_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_m_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_dl_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_includes_support_component","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_benunit_capital","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"is_married","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"dependent_children","dtype":"int64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"liable_for_share_of_household_rent","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"region","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"tenure_type","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"accommodation_type","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"num_bedrooms","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_reported","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_band","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_rebate","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_single_adult_raw","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"water_and_sewerage_charges","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"domestic_rates","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"rent","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"subrent","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"mortgage_interest_repayment","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"mortgage_capital_repayment","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"structural_insurance_payments","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"housing_service_charges","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"external_child_payments","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"sample_fraction":1.0,"sample_seed":578,"stage_contract_sha256":"d55388f70ca6ef871c31c5db68c274d848e6351a7c3faf8782a7df3922958c3d","time_period":"2024"},"population":null,"sources":["frs"],"structural":"create","weights":null},{"base":"create_uk_frs","citation":"","description":"Ownership boundary for the source-assembling root stage.","id":"frs_spine.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"base":null,"citation":"","description":"Claim the cells assembled by the UK FRS root transform.","id":"frs_spine","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"age","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"gender","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"months_since_last_birthday","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"marital_status","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hours_worked","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"care_hours","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_household_head","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_benunit_head","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_parent","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_blind","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_uc_claimant","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_claimant_or_partner","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_hbai_dependent_child","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_startup_period","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_gainful_self_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent_paid_as_boarder","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent_paid_as_lodger","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"trading_loss","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"loss_relief","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ni_class_4_losses_brought_forward","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_pension_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"tax_free_savings_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"savings_interest_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dividend_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"stands_as_sole_owner_or_partner_of_company","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_engaged_in_owned_company_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_is_main_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_property_business","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_income_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"reports_rent_from_other_property","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"maintenance_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"miscellaneous_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_transfer_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"lump_sum_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"student_loan_repayments","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"statutory_sick_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"statutory_maternity_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"statutory_paternity_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"student_loans","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"access_fund","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"education_grants","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"healthy_start_vouchers","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"free_school_breakfasts","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"free_school_fruit_veg","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"free_school_meals","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"maintenance_expenses","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"childcare_expenses","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"personal_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"salary_sacrifice_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"salary_sacrifice_asked","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"attendance_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_sc_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"carers_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ssmg_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"state_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"winter_fuel_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"incapacity_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_dl_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_includes_support_component","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_benunit_capital","dtype":"float64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_married","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dependent_children","dtype":"int64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"liable_for_share_of_household_rent","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"region","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"tenure_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"accommodation_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"num_bedrooms","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_reported","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_band","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_rebate","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_single_adult_raw","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"water_and_sewerage_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"domestic_rates","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"subrent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_interest_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_capital_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"structural_insurance_payments","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_service_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"external_child_payments","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"}],"params":{},"population":"frs_spine.boundary","sources":[],"structural":"none","weights":null},{"base":"frs_spine.boundary","citation":"","description":"Ownership boundary before age_tail rewrites.","id":"age_tail.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage age_tail.","id":"age_tail","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["external_child_payments","region"],"entity":"household","rows":"all"},{"columns":["gender"],"entity":"person","rows":"all"}],"kernel":"uk.stage.age_tail@1","mass":"conserve","outputs":[{"column":"age","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"age_tail","stage_contract_sha256":"963a34f38caede2525e3b8735f904bb70a1bbef5a272f0eefd4346343444484f","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_relationships.","id":"frs_relationships","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","is_household_head"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_relationships@1","mass":"conserve","outputs":[{"column":"relationship_to_head","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"ons_family_role","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"ons_family_index","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"is_looked_after_by_local_authority","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"ons_household_type","dtype":"string","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_relationships","stage_contract_sha256":"85aca92dcc0590c2147cfc7e0886664f26cd8e1bc0b1de728d11fa567e9fd8b4","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_employment.","id":"frs_employment","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["ons_household_type","region"],"entity":"household","rows":"all"},{"columns":["age"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_employment@1","mass":"conserve","outputs":[{"column":"employment_status","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_sector","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"sic_industry_division","dtype":"int64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_employment","stage_contract_sha256":"ddbefaf05b44788d794a6e4b0e8926c14318d66e50d2f11f50ca549538bbf60c","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_council_tax.","id":"frs_council_tax","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","sic_industry_division"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_council_tax@1","mass":"conserve","outputs":[{"column":"council_tax","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_council_tax","stage_contract_sha256":"f7465970190c74095a0f31fa7463bd28f5ca9b9e254b25a956246e642c8b7351","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_disability.","id":"frs_disability","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["council_tax","region"],"entity":"household","rows":"all"},{"columns":["afcs_reported","age","attendance_allowance_reported","dla_m_reported","dla_sc_reported","esa_contrib_reported","esa_income_reported","iidb_reported","incapacity_benefit_reported","pip_dl_reported","pip_m_reported","sda_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_disability@1","mass":"conserve","outputs":[{"column":"aa_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_sc_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_m_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_m_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_dl_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"is_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_enhanced_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_severely_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_disability","stage_contract_sha256":"ac500b4cb1bc04d4fb72d198592dd376d61da8c150921a6ac53914ac18be0508","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_education.","id":"frs_education","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","esa_contrib_reported","esa_income_reported","is_severely_disabled_for_benefits","jsa_contrib_reported","jsa_income_reported","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_education@1","mass":"conserve","outputs":[{"column":"current_education","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"highest_education","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"is_in_non_advanced_education","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_in_approved_training","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"age_started_or_accepted_current_education_or_training","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"is_before_universal_credit_qualifying_young_person_terminal_date","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"adult_ema","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"child_ema","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"receives_benefits_in_own_right","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"reports_outstanding_student_loan","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"age_left_full_time_education","dtype":"int64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_education","stage_contract_sha256":"7ec718c35f8ab04c7dba62f5b5090161e1abace5d1c3bd313f05b0e584b7dcde","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_legacy_proxies.","id":"frs_legacy_proxies","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_legacy_proxies@1","mass":"conserve","outputs":[{"column":"legacy_jobseeker_proxy","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_health_condition_proxy","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_support_group_proxy","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_legacy_proxies","stage_contract_sha256":"1ecf761cf3fa7180da15659e138e67a8654e58272b4fde28344aa27a874ad0aa","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"age_tail.boundary","citation":"","description":"Ownership boundary before frs_education_grant_split rewrites.","id":"frs_education_grant_split.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_education_grant_split.","id":"frs_education_grant_split","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_education_grant_split@1","mass":"conserve","outputs":[{"column":"disabled_students_allowance_eligible_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"education_grants","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_education_grant_split","stage_contract_sha256":"8718f014b90498c2cc7c754289775ca4a41452d9b978d8cbc5f34b64cbdc7df2","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_take_up.","id":"frs_take_up","inputs":[{"columns":["frs_benunit_capital","is_married"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","child_benefit_reported","education_grants","is_uc_claimant","months_since_last_birthday","pension_credit_reported","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_child_benefit","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"child_benefit_opts_out","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_pc","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_tfc","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_extended_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_universal_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_targeted_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_uc_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"maximum_extended_childcare_hours_usage","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"max_free_entitlement_hours_used","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_take_up","stage_contract_sha256":"78aec80408c50455b37308e5a977fb70df3ecf915d6c1e8f80715ad9b58e62cf","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_person_draws.","id":"frs_person_draws","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","max_free_entitlement_hours_used"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_person_draws@1","mass":"conserve","outputs":[{"column":"would_claim_marriage_allowance","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"would_claim_scp","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"attends_private_school_random_draw","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"tax_free_childcare_spend_routed_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_person_draws","stage_contract_sha256":"77483e7f415014d7771b33cc3c9206aa664573ae2e93d37964b0ff4f685be401","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_household_draws.","id":"frs_household_draws","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","tax_free_childcare_spend_routed_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_household_draws@1","mass":"conserve","outputs":[{"column":"household_owns_tv","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"would_evade_tv_licence_fee","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"main_residential_property_purchased_is_first_home","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"property_purchased","dtype":"bool","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_household_draws","stage_contract_sha256":"c74c63b09264319c4bf0049dabba00ecd0ce660beb7b53d6dae71518434bc949","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_brma.","id":"frs_brma","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_brma@1","mass":"conserve","outputs":[{"column":"brma","dtype":"string","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_brma","stage_contract_sha256":"4285376b37299d375ed583b7f6b1747bd8b7cb1c8c0d19a36481156b5314a854","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"frs_education_grant_split.boundary","citation":"","description":"Freeze the assembled-spine gate population.","id":"frs_brma.checkpoint","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_hmrc_spine_leaves.","id":"frs_hmrc_spine_leaves","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["brma","region"],"entity":"household","rows":"all"},{"columns":["age","employment_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_hmrc_spine_leaves@1","mass":"conserve","outputs":[{"column":"hmrc_spi_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_unemployment_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_incapacity_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"ossben_identifiable_subset","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"srp_regular_code5","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employer_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_hmrc_spine_leaves","stage_contract_sha256":"b7eb5ecf39ae82822a02d49cdc8edc00bedd77e091de1d98d38a8c180146b2c0","time_period":"2024"},"population":"frs_brma.checkpoint","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_annual_income_spells.","id":"frs_annual_income_spells","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","employer_pension_contributions","employment_income","gender","self_employment_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_annual_income_spells@1","mass":"conserve","outputs":[{"column":"employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"private_pension_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"contributory_benefits_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_annual_income_spells","stage_contract_sha256":"23725dafbe7c6a84bcc7b9c48e4cbc7900bae596700fbb72a1002ded17bd804f","time_period":"2024"},"population":"frs_brma.checkpoint","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"frs_brma.checkpoint","citation":"","description":"Run structural UK stage spi_support_channel.","id":"spi_support_channel","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.spi_support_channel@1","mass":"declared","outputs":[],"params":{"expand_cells":[["person","person_source_id","int64"],["person","person_support_channel","string"],["person","person_support_clone_index","int64"],["benunit","benunit_source_id","int64"],["benunit","benunit_support_channel","string"],["benunit","benunit_support_clone_index","int64"],["household","source_household_id","int64"],["household","source_year","int64"],["household","source_household_key","string"],["household","household_source_id","int64"],["household","household_support_channel","string"],["household","household_support_clone_index","int64"],["household","household_is_spi_synthetic","bool"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_support_channel","stage_contract_sha256":"2c682605139c0a8f96e8ba45a2c03f506d3f758ef437841066a8fdb8b74269b6","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by spi_support_channel.","id":"spi_support_channel.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"person_source_id","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"person_support_channel","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"person_support_clone_index","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"benunit_source_id","dtype":"int64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"benunit_support_channel","dtype":"string","entity":"benunit","ownership":"produced","rows":"all"},{"column":"benunit_support_clone_index","dtype":"int64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"source_household_id","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"source_year","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"source_household_key","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"household_source_id","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_support_channel","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"household_support_clone_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_is_spi_synthetic","dtype":"bool","entity":"household","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["person.person_source_id","person.person_support_channel","person.person_support_clone_index","benunit.benunit_source_id","benunit.benunit_support_channel","benunit.benunit_support_clone_index","household.source_household_id","household.source_year","household.source_household_key","household.household_source_id","household.household_support_channel","household.household_support_clone_index","household.household_is_spi_synthetic"]},"population":"spi_support_channel","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"spi_support_channel","citation":"","description":"Run structural UK stage spi_income_band_donors.","id":"spi_income_band_donors","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.spi_income_band_donors@1","mass":"declared","outputs":[],"params":{"expand_cells":[["person","person_source_id","int64"],["person","person_support_channel","string"],["person","person_support_clone_index","int64"],["benunit","benunit_source_id","int64"],["benunit","benunit_support_channel","string"],["benunit","benunit_support_clone_index","int64"],["household","household_source_id","int64"],["household","household_support_channel","string"],["household","household_support_clone_index","int64"],["household","household_is_spi_synthetic","bool"],["household","household_is_spi_income_band_donor","bool"],["household","spi_income_band_donor_lower_bound","float64"],["person","person_is_spi_income_band_carrier","bool"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_income_band_donors","stage_contract_sha256":"d86ab4a1f53cf097f42c9c047e7a3fbb5144dc88496b49cb846b3f8be0bbe0a1","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by spi_income_band_donors.","id":"spi_income_band_donors.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"person_source_id","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"person_support_channel","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"person_support_clone_index","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"benunit_source_id","dtype":"int64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"benunit_support_channel","dtype":"string","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"benunit_support_clone_index","dtype":"int64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_source_id","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_support_channel","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_support_clone_index","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_is_spi_synthetic","dtype":"bool","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_is_spi_income_band_donor","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"spi_income_band_donor_lower_bound","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"person_is_spi_income_band_carrier","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_spi_income_band_donor","household.spi_income_band_donor_lower_bound","person.person_is_spi_income_band_carrier"]},"population":"spi_income_band_donors","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage hmrc_spi_income_spine.","id":"hmrc_spi_income_spine","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","rent_paid_as_boarder","rent_paid_as_lodger","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","maintenance_expenses","childcare_expenses","salary_sacrifice_reported","salary_sacrifice_asked","ssmg_reported","incapacity_benefit_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","ossben_identifiable_subset","srp_regular_code5","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier"],"entity":"person","rows":"all"}],"kernel":"uk.stage.hmrc_spi_income_spine@1","mass":"conserve","outputs":[{"column":"charitable_investment_gifts","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"gift_aid","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"other_investment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_employment_benefits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_employment_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_other_social_security_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_taxable_termination_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_miscellaneous_employment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_other_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_state_pension_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"property_finance_costs","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_employed_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_total_earned_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_total_investment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_assessable_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"savings_interest_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dividend_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_pension_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employer_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"personal_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"tax_free_savings_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"attendance_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"state_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_sc_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_dl_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"carers_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"winter_fuel_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"trading_loss","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"loss_relief","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ni_class_4_losses_brought_forward","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_income_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hmrc_spi_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hmrc_spi_unemployment_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hmrc_spi_incapacity_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_pension_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"contributory_benefits_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"aa_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_sc_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_m_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_m_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_dl_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_enhanced_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_severely_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_startup_period","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_gainful_self_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_includes_support_component","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"reports_rent_from_other_property","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"stands_as_sole_owner_or_partner_of_company","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_engaged_in_owned_company_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_is_main_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_property_business","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"person_is_spi_income_recipient","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"hmrc_spi_income_spine","stage_contract_sha256":"7f5e3a7a5aec973730df98b728509094a42a96f89892269ff3e0e1efd5edd452","time_period":"2024"},"population":"spi_income_band_donors","sources":["frs"],"structural":"none","weights":null},{"base":"spi_income_band_donors","citation":"","description":"Ownership boundary before spi_housing_shell rewrites.","id":"spi_housing_shell.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage spi_housing_shell.","id":"spi_housing_shell","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["council_tax_single_adult_raw","household_support_channel","ons_household_type","region"],"entity":"household","rows":"all"},{"columns":["age","dividend_income","employment_income","is_household_head","other_investment_income","person_is_spi_income_recipient","private_pension_income","property_income","savings_interest_income","self_employment_income","state_pension_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.spi_housing_shell@1","mass":"conserve","outputs":[{"column":"tenure_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"accommodation_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_band","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"num_bedrooms","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_reported","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_interest_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_capital_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"structural_insurance_payments","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_service_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"water_and_sewerage_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"domestic_rates","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"subrent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_rebate","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_housing_shell","stage_contract_sha256":"524549b7dfbd0fceb505311eb0c3b923cfe3b11a8acd5ecfbfbcbb477e142eb1","time_period":"2024"},"population":"spi_housing_shell.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage was_wealth.","id":"was_wealth","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient"],"entity":"person","rows":"all"}],"kernel":"uk.stage.was_wealth@1","mass":"conserve","outputs":[{"column":"owned_land","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"property_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"corporate_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"private_pension_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"gross_financial_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"net_financial_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"main_residence_value","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"other_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"non_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"savings","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"num_vehicles","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"cash_isa","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"stocks_and_shares_isa","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"mortgage_debt","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"consumer_debt","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"student_loan_balance","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"was_wealth","stage_contract_sha256":"9941b70870b0ced1ea1f51e9c9f12768005ea6c53ffdba1db3cb4e2ee030af87","time_period":"2024"},"population":"spi_housing_shell.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage was_lisa.","id":"was_lisa","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance"],"entity":"person","rows":"all"}],"kernel":"uk.stage.was_lisa@1","mass":"conserve","outputs":[{"column":"has_lifetime_isa","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"lifetime_isa_balance","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"household_lifetime_isa_balance","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"was_lisa","stage_contract_sha256":"46f12fdf9228f721d860ff7858b78b25406bb8737628acf63ac17d44d549f657","time_period":"2024"},"population":"spi_housing_shell.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"spi_housing_shell.boundary","citation":"","description":"Ownership boundary before regional_property_uprating rewrites.","id":"regional_property_uprating.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage regional_property_uprating.","id":"regional_property_uprating","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["household_lifetime_isa_balance","household_support_channel","region"],"entity":"household","rows":"all"},{"columns":["age"],"entity":"person","rows":"all"}],"kernel":"uk.stage.regional_property_uprating@1","mass":"conserve","outputs":[{"column":"main_residence_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_wealth","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_land","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"other_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"non_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"regional_property_uprating","stage_contract_sha256":"f45db95fde3f93731c0925b9bf8c12021921df2e4908770acdec1e3c97889277","time_period":"2024"},"population":"regional_property_uprating.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"regional_property_uprating.boundary","citation":"","description":"Run structural UK stage high_value_home_support.","id":"high_value_home_support","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.high_value_home_support@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_high_value_support_copy","bool"],["household","high_value_support_copies","int64"],["household","high_value_support_copy_index","int64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"high_value_home_support","stage_contract_sha256":"174f4b38228d98107bee1639d1a297a2748bb618e87c7bd0a6c869c6ab06f8fa","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by high_value_home_support.","id":"high_value_home_support.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_high_value_support_copy","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"high_value_support_copies","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"high_value_support_copy_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_high_value_support_copy","household.high_value_support_copies","household.high_value_support_copy_index"]},"population":"high_value_home_support","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage regional_home_values.","id":"regional_home_values","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["high_value_support_copy_index","household_is_high_value_support_copy","household_source_id","region","tenure_type"],"entity":"household","rows":"all"},{"columns":["age"],"entity":"person","rows":"all"}],"kernel":"uk.stage.regional_home_values@1","mass":"conserve","outputs":[{"column":"main_residence_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_wealth","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"main_residence_value_rank_basis","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"regional_home_values","stage_contract_sha256":"48e8a622c8830a54a4c48d9d8cb4f011751aa05d7cb5f6c7f0e06e1121b720b1","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage property_components.","id":"property_components","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["main_residence_value_rank_basis","non_residential_property_value","other_residential_property_value","region","subrent"],"entity":"household","rows":"all"},{"columns":["age","is_household_head","person_is_spi_income_recipient","person_support_channel"],"entity":"person","rows":"all"}],"kernel":"uk.stage.property_components@1","mass":"conserve","outputs":[{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_finance_costs","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_rental_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"property_components","stage_contract_sha256":"8c45b96e6c1cd6a3ec8080b674f06666b1bd1e86ecef4a654c18f9825977eb1b","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage property_purchases.","id":"property_purchases","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["household_source_id","non_residential_property_value","other_residential_property_value","region"],"entity":"household","rows":"all"},{"columns":["age","property_rental_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.property_purchases@1","mass":"conserve","outputs":[{"column":"additional_residential_property_purchased","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"non_residential_property_purchased","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"property_purchases","stage_contract_sha256":"281fe34ea94f71ac1a0652bf3ec17922f0d46919bfb74ab7b367ba6e9d680826","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage nts_bus_travel.","id":"nts_bus_travel","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.nts_bus_travel@1","mass":"conserve","outputs":[{"column":"local_bus_use_band","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"bus_in_london_trips","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"other_local_bus_trips","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"local_bus_trips","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"bus_pass_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"local_bus_single_fare_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"household_local_bus_trips","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"nts_bus_travel","stage_contract_sha256":"ef04589ebb01746b996c466517b07cb718cf88febe8c2d6d69f6edf6b4b80f8b","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage lcfs_consumption.","id":"lcfs_consumption","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.lcfs_consumption@1","mass":"conserve","outputs":[{"column":"food_and_non_alcoholic_beverages_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"alcohol_and_tobacco_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"clothing_and_footwear_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"housing_water_and_electricity_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_furnishings_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"health_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"transport_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"communication_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"recreation_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"education_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"restaurants_and_hotels_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"miscellaneous_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"petrol_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"diesel_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"bus_fare_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"domestic_energy_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"electricity_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"gas_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"has_fuel_consumption","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"uses_energy_prepayment_meter","dtype":"bool","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"lcfs_consumption","stage_contract_sha256":"a10aeec0491876f0906782a34e197bb52162f045678ca3c19769feabe14b09c6","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage etb_vat.","id":"etb_vat","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.etb_vat@1","mass":"conserve","outputs":[{"column":"full_rate_vat_expenditure_rate","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"etb_vat","stage_contract_sha256":"01adfcc85d77f38fb9cc896e2e4b4c4752518d9e2aa69e6947832678c25ecf19","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage etb_services.","id":"etb_services","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.etb_services@1","mass":"conserve","outputs":[{"column":"dfe_education_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"rail_subsidy_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"bus_subsidy_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"rail_usage","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"a_and_e_visits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"admitted_patient_visits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"outpatient_visits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"nhs_a_and_e_spending","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"nhs_admitted_patient_spending","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"nhs_outpatient_spending","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"etb_services","stage_contract_sha256":"85c52b57b06db2075b6422e8202b90eb70ebe60a3345e59cf48a4a0460f583e4","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"base":"high_value_home_support","citation":"","description":"Ownership boundary before uc_reporter_redraw rewrites.","id":"uc_reporter_redraw.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_reporter_redraw.","id":"uc_reporter_redraw","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_reporter_redraw@1","mass":"conserve","outputs":[{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_reporter_redraw","stage_contract_sha256":"93b86a8b8bbb49caebab64381c716da2d78eb7cd43d0bf1ee9edbf3a07b64539","time_period":"2024"},"population":"uc_reporter_redraw.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"uc_reporter_redraw.boundary","citation":"","description":"Ownership boundary before spi_benefit_coherence rewrites.","id":"spi_benefit_coherence.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage spi_benefit_coherence.","id":"spi_benefit_coherence","inputs":[{"columns":["benunit_support_channel","frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["aa_category","age","attendance_allowance_reported","dla_m_category","dla_m_reported","dla_sc_category","dla_sc_reported","esa_contrib_reported","incapacity_benefit_reported","is_uc_claimant","person_source_id","person_support_channel","pip_dl_category","pip_dl_reported","pip_m_category","pip_m_reported","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.spi_benefit_coherence@1","mass":"conserve","outputs":[{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ssmg_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_enhanced_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_severely_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"receives_benefits_in_own_right","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_benefit_coherence","stage_contract_sha256":"c3ac21a6be06f16b6c20eb5b828e2335a7e3f63d1d5ba60505562c3e7d6a8f2d","time_period":"2024"},"population":"spi_benefit_coherence.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"spi_benefit_coherence.boundary","citation":"","description":"Ownership boundary before uc_capital_coherence rewrites.","id":"uc_capital_coherence.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_capital_coherence.","id":"uc_capital_coherence","inputs":[{"columns":["benunit_support_channel","dependent_children","is_married"],"entity":"benunit","rows":"all"},{"columns":["non_residential_property_value","other_residential_property_value","owned_land","region"],"entity":"household","rows":"all"},{"columns":["age","dividend_income","is_benunit_head","is_household_head","is_parent","other_investment_income","person_support_channel","savings_interest_income","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_capital_coherence@1","mass":"conserve","outputs":[{"column":"uc_reported_capital","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"pension_credit_reported_capital","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"frs_benunit_capital","dtype":"float64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_capital_coherence","stage_contract_sha256":"40440a087f84967c734a1204f1dedcc2432556c7ce2a41f3c38bc9055f324bfa","time_period":"2024"},"population":"uc_capital_coherence.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"uc_capital_coherence.boundary","citation":"","description":"Ownership boundary before uc_take_up rewrites.","id":"uc_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_take_up.","id":"uc_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_take_up","stage_contract_sha256":"1e8d8426f400e8c80ee8bf3872fc5add46423a131475de4bdfa8a9d9f67b9639","time_period":"2024"},"population":"uc_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_legacy_closure_take_up.","id":"uc_legacy_closure_take_up","inputs":[{"columns":["frs_benunit_capital","would_claim_uc"],"entity":"benunit","rows":"all"},{"columns":["household_source_id","region"],"entity":"household","rows":"all"},{"columns":["age","child_tax_credit_reported","esa_income_reported","housing_benefit_reported","income_support_reported","jsa_income_reported","universal_credit_reported","working_tax_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_legacy_closure_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_uc_at_legacy_closure","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_legacy_closure_take_up","stage_contract_sha256":"759eba9869bb39f43d0a881de8630c132751ecb9467d97e6558899cb390f38b2","time_period":"2024"},"population":"uc_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"uc_take_up.boundary","citation":"","description":"Ownership boundary before pension_credit_take_up rewrites.","id":"pension_credit_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage pension_credit_take_up.","id":"pension_credit_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.pension_credit_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_pc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"has_mixed_age_couple_pension_credit_saving","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"pension_credit_take_up","stage_contract_sha256":"e887dbbb186cb79f6d3fc9a629269dbac4a43381b9574df65353b816f01a3a35","time_period":"2024"},"population":"pension_credit_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"pension_credit_take_up.boundary","citation":"","description":"Ownership boundary before child_benefit_take_up rewrites.","id":"child_benefit_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage child_benefit_take_up.","id":"child_benefit_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.child_benefit_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_child_benefit","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_benefit_opts_out","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"child_benefit_take_up","stage_contract_sha256":"6f1eac2609e868894a287254aac75ec57c0199783c6ae6cf4782f3fbb99f6e92","time_period":"2024"},"population":"child_benefit_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"child_benefit_take_up.boundary","citation":"","description":"Ownership boundary before carers_allowance_take_up rewrites.","id":"carers_allowance_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage carers_allowance_take_up.","id":"carers_allowance_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.carers_allowance_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"carers_allowance_take_up","stage_contract_sha256":"823cff5fdfb6c801c3301ddaeb0f20df438c4c3658faf71af07365419dc2d0c3","time_period":"2024"},"population":"carers_allowance_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_deduction_attributes.","id":"uc_deduction_attributes","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","would_claim_carers_allowance"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_deduction_attributes@1","mass":"conserve","outputs":[{"column":"uc_deduction_random_draw","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"uc_deduction_type_random_draw","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"uc_latent_deduction_rate","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"uc_deduction_combination","dtype":"string","entity":"benunit","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_deduction_attributes","stage_contract_sha256":"6bc7e3ec1a5712e23ca1b7d2956e8b17f2526b94431ba3e5a9294b04658e4fe0","time_period":"2024"},"population":"carers_allowance_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"carers_allowance_take_up.boundary","citation":"","description":"Run structural UK stage cgt_support_split.","id":"cgt_support_split","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_support_split@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_cgt_support_copy","bool"],["household","cgt_support_copies","int64"],["household","cgt_support_copy_index","int64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_support_split","stage_contract_sha256":"f7ef8492bacde1607f24693d7362110ba55ad3d083688f3df61de40dbe65bdc0","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by cgt_support_split.","id":"cgt_support_split.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_cgt_support_copy","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_support_copies","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_support_copy_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_cgt_support_copy","household.cgt_support_copies","household.cgt_support_copy_index"]},"population":"cgt_support_split","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"cgt_support_split","citation":"","description":"Run structural UK stage cgt_incidence_clone.","id":"cgt_incidence_clone","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_incidence_clone@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_capital_gains_clone","bool"],["person","capital_gains","float64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_incidence_clone","stage_contract_sha256":"ee30278543cc0297a5366d855b7753aa04af5518971594c193c52be36bf8a7b4","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by cgt_incidence_clone.","id":"cgt_incidence_clone.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_capital_gains_clone","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"capital_gains","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_capital_gains_clone","person.capital_gains"]},"population":"cgt_incidence_clone","sources":[],"structural":"none","weights":null},{"base":"cgt_incidence_clone","citation":"","description":"Ownership boundary before hmrc_cgt_gains_spine rewrites.","id":"hmrc_cgt_gains_spine.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage hmrc_cgt_gains_spine.","id":"hmrc_cgt_gains_spine","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["cgt_support_copies","corporate_wealth","gross_financial_wealth","household_is_cgt_support_copy","non_residential_property_value","other_residential_property_value","region"],"entity":"household","rows":"all"},{"columns":["age","dividend_income","employment_income","miscellaneous_income","private_pension_income","property_income","savings_interest_income","self_employment_income","state_pension_reported","tax_free_savings_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.hmrc_cgt_gains_spine@1","mass":"conserve","outputs":[{"column":"capital_gains","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"hmrc_cgt_gains_spine","stage_contract_sha256":"39011749dc0e95362e4ab606f09e95d457fdf3b40c66df9511d93dbb8208805d","time_period":"2024"},"population":"hmrc_cgt_gains_spine.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"hmrc_cgt_gains_spine.boundary","citation":"","description":"Run structural UK stage cgt_incidence_anchor.","id":"cgt_incidence_anchor","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["household_is_capital_gains_clone","region"],"entity":"household","rows":"all"},{"columns":["age","capital_gains","dividend_income","employment_income","miscellaneous_income","private_pension_income","property_income","savings_interest_income","self_employment_income","state_pension_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_incidence_anchor@1","mass":"conserve","outputs":[],"params":{"expand_cells":[],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_incidence_anchor","stage_contract_sha256":"b79ce806015de2f1e1703fa68bf4ad871c6df54b5b32633c864632ab68919a48","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"cgt_incidence_anchor","citation":"","description":"Run structural UK stage cgt_residential_split.","id":"cgt_residential_split","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_residential_split@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_cgt_residential_clone","bool"],["household","cgt_residential_clone_index","int64"],["person","cgt_residential_probability","float64"],["person","capital_gains_residential_property","float64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_residential_split","stage_contract_sha256":"554e05ecb984ae1a3262486aefbe6183496c4c03e201fe3fafb509648bd1777f","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by cgt_residential_split.","id":"cgt_residential_split.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_cgt_residential_clone","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_residential_clone_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_residential_probability","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"capital_gains_residential_property","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_cgt_residential_clone","household.cgt_residential_clone_index","person.cgt_residential_probability","person.capital_gains_residential_property"]},"population":"cgt_residential_split","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage hmrc_cgt_asset_type_spine.","id":"hmrc_cgt_asset_type_spine","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["corporate_wealth","gross_financial_wealth","other_residential_property_value","region","stocks_and_shares_isa"],"entity":"household","rows":"all"},{"columns":["age","capital_gains","capital_gains_residential_property","dividend_income","property_income","reports_rent_from_other_property","self_employment_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.hmrc_cgt_asset_type_spine@1","mass":"conserve","outputs":[{"column":"capital_gains_asset_type","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"capital_gains_badr","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"hmrc_cgt_asset_type_spine","stage_contract_sha256":"2c0e2b93ebef8e4f5ef5fcae0b0bf3270147f7d327a293686f5da2038d37ce5f","time_period":"2024"},"population":"cgt_residential_split","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage salary_sacrifice.","id":"salary_sacrifice","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr"],"entity":"person","rows":"all"}],"kernel":"uk.stage.salary_sacrifice@1","mass":"conserve","outputs":[{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"salary_sacrifice_pre_conversion_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"salary_sacrifice","stage_contract_sha256":"a64ac17ecb296b12171a1c5f3eb0b4dcaac9f32d08cffb95d7b87d094aeec693","time_period":"2024"},"population":"cgt_residential_split","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage student_loans.","id":"student_loans","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","age_left_full_time_education","current_education","highest_education","reports_outstanding_student_loan","salary_sacrifice_pre_conversion_pay","student_loan_repayments","student_loans"],"entity":"person","rows":"all"}],"kernel":"uk.stage.student_loans@1","mass":"conserve","outputs":[{"column":"student_loan_plan","dtype":"string","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"student_loans","stage_contract_sha256":"157d9ee607633e4246ed06eeee3aac3cdff98118e72400e18b84c11b3fd2b92b","time_period":"2024"},"population":"cgt_residential_split","sources":["frs"],"structural":"none","weights":null},{"base":"cgt_residential_split","citation":"","description":"Ownership boundary before childcare_copy_take_up rewrites.","id":"childcare_copy_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr","salary_sacrifice_pre_conversion_pay","student_loan_plan"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage childcare_copy_take_up.","id":"childcare_copy_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_uc_childcare","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr","salary_sacrifice_pre_conversion_pay","student_loan_plan"],"entity":"person","rows":"all"}],"kernel":"uk.stage.childcare_copy_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_tfc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_extended_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_universal_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_targeted_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"maximum_extended_childcare_hours_usage","dtype":"float64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"max_free_entitlement_hours_used","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"childcare_copy_take_up","stage_contract_sha256":"cdbb7e135b16fac7ca1bcd6c54222821e2976b4da99f10a60913efd0ba03c13c","time_period":"2024"},"population":"childcare_copy_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage private_school_attendance.","id":"private_school_attendance","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr","salary_sacrifice_pre_conversion_pay","student_loan_plan"],"entity":"person","rows":"all"}],"kernel":"uk.stage.private_school_attendance@1","mass":"conserve","outputs":[{"column":"attends_private_school","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.147.2"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"private_school_attendance","stage_contract_sha256":"7e44379c0331fe4c9de05cd76a075c1a6aa22cf0dec6cd2f91b277e70f14a038","time_period":"2024"},"population":"childcare_copy_take_up.boundary","sources":["frs"],"structural":"none","weights":null}],"sources":[{"codec":"csv-tables","description":"Content-bound UK FRS and donor fixture/source bundle.","name":"frs"}]} +{"country":"uk","nodes":[{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Load the source-bound UK FRS root population.","id":"create_uk_frs","inputs":[],"kernel":"uk.create@1","mass":"conserve","outputs":[{"column":"age","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"gender","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"months_since_last_birthday","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"marital_status","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"hours_worked","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"care_hours","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"is_household_head","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_benunit_head","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_parent","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_blind","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_uc_claimant","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_claimant_or_partner","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_hbai_dependent_child","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"uc_is_in_startup_period","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"uc_is_in_gainful_self_employment","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"rent_paid_as_boarder","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"rent_paid_as_lodger","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"trading_loss","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"loss_relief","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"ni_class_4_losses_brought_forward","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"private_pension_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"tax_free_savings_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"savings_interest_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"dividend_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"stands_as_sole_owner_or_partner_of_company","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_engaged_in_owned_company_trade","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_is_main_employment","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_carries_on_trade","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_carries_on_property_business","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_income_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"reports_rent_from_other_property","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"maintenance_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"spousal_maintenance_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"miscellaneous_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"private_transfer_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"lump_sum_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"student_loan_repayments","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"statutory_sick_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"statutory_maternity_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"statutory_paternity_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"student_loans","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"access_fund","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"education_grants","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"healthy_start_vouchers","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"free_school_breakfasts","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"free_school_fruit_veg","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"free_school_meals","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"maintenance_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"childcare_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"personal_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"salary_sacrifice_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"salary_sacrifice_asked","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_bonus_amount","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"child_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"attendance_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_sc_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_m_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"carers_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"ssmg_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pension_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"state_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"winter_fuel_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"incapacity_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_m_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_dl_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_includes_support_component","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"widowed_parents_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_benunit_capital","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"is_married","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"dependent_children","dtype":"int64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"liable_for_share_of_household_rent","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"region","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"tenure_type","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"accommodation_type","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"num_bedrooms","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_reported","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_band","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_rebate","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_single_adult_raw","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"water_and_sewerage_charges","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"domestic_rates","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"rent","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"subrent","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"mortgage_interest_repayment","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"mortgage_capital_repayment","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"structural_insurance_payments","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"housing_service_charges","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"external_child_payments","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"sample_fraction":1.0,"sample_seed":578,"stage_contract_sha256":"a28399056b8b510ded0c93db1baaa1169fe4fe8ec95f66dddc5d23686c97e716","time_period":"2024"},"population":null,"sources":["frs"],"structural":"create","weights":null},{"base":"create_uk_frs","citation":"","description":"Ownership boundary for the source-assembling root stage.","id":"frs_spine.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"base":null,"citation":"","description":"Claim the cells assembled by the UK FRS root transform.","id":"frs_spine","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"age","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"gender","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"months_since_last_birthday","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"marital_status","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hours_worked","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"care_hours","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_household_head","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_benunit_head","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_parent","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_blind","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_uc_claimant","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_claimant_or_partner","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_hbai_dependent_child","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_startup_period","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_gainful_self_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent_paid_as_boarder","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent_paid_as_lodger","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"trading_loss","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"loss_relief","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ni_class_4_losses_brought_forward","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_pension_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"tax_free_savings_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"savings_interest_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dividend_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"stands_as_sole_owner_or_partner_of_company","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_engaged_in_owned_company_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_is_main_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_property_business","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_income_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"reports_rent_from_other_property","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"maintenance_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"spousal_maintenance_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"miscellaneous_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_transfer_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"lump_sum_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"student_loan_repayments","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"statutory_sick_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"statutory_maternity_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"statutory_paternity_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"student_loans","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"access_fund","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"education_grants","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"healthy_start_vouchers","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"free_school_breakfasts","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"free_school_fruit_veg","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"free_school_meals","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"maintenance_expenses","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"childcare_expenses","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"personal_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"salary_sacrifice_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"salary_sacrifice_asked","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_bonus_amount","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"attendance_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_sc_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"carers_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ssmg_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"state_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"winter_fuel_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"incapacity_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_dl_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_includes_support_component","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"widowed_parents_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_benunit_capital","dtype":"float64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_married","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dependent_children","dtype":"int64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"liable_for_share_of_household_rent","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"region","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"tenure_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"accommodation_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"num_bedrooms","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_reported","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_band","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_rebate","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_single_adult_raw","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"water_and_sewerage_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"domestic_rates","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"subrent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_interest_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_capital_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"structural_insurance_payments","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_service_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"external_child_payments","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"}],"params":{},"population":"frs_spine.boundary","sources":[],"structural":"none","weights":null},{"base":"frs_spine.boundary","citation":"","description":"Ownership boundary before age_tail rewrites.","id":"age_tail.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage age_tail.","id":"age_tail","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["external_child_payments","region"],"entity":"household","rows":"all"},{"columns":["gender"],"entity":"person","rows":"all"}],"kernel":"uk.stage.age_tail@1","mass":"conserve","outputs":[{"column":"age","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"age_tail","stage_contract_sha256":"963a34f38caede2525e3b8735f904bb70a1bbef5a272f0eefd4346343444484f","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_relationships.","id":"frs_relationships","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","is_household_head"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_relationships@1","mass":"conserve","outputs":[{"column":"relationship_to_head","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"ons_family_role","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"ons_family_index","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"is_looked_after_by_local_authority","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"ons_household_type","dtype":"string","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_relationships","stage_contract_sha256":"85aca92dcc0590c2147cfc7e0886664f26cd8e1bc0b1de728d11fa567e9fd8b4","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_employment.","id":"frs_employment","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["ons_household_type","region"],"entity":"household","rows":"all"},{"columns":["age"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_employment@1","mass":"conserve","outputs":[{"column":"employment_status","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_sector","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"sic_industry_division","dtype":"int64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_employment","stage_contract_sha256":"ddbefaf05b44788d794a6e4b0e8926c14318d66e50d2f11f50ca549538bbf60c","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_council_tax.","id":"frs_council_tax","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","sic_industry_division"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_council_tax@1","mass":"conserve","outputs":[{"column":"council_tax","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_council_tax","stage_contract_sha256":"06804f54c12d25f2afcb31eec27789802f663cb42689a932dc32f3ba5fc05fff","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_disability.","id":"frs_disability","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["council_tax","region"],"entity":"household","rows":"all"},{"columns":["afcs_reported","age","attendance_allowance_reported","dla_m_reported","dla_sc_reported","esa_contrib_reported","esa_income_reported","iidb_reported","incapacity_benefit_reported","pip_dl_reported","pip_m_reported","sda_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_disability@1","mass":"conserve","outputs":[{"column":"aa_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_sc_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_m_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_m_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_dl_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"is_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_enhanced_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_severely_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_disability","stage_contract_sha256":"ac500b4cb1bc04d4fb72d198592dd376d61da8c150921a6ac53914ac18be0508","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_education.","id":"frs_education","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","esa_contrib_reported","esa_income_reported","is_severely_disabled_for_benefits","jsa_contrib_reported","jsa_income_reported","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_education@1","mass":"conserve","outputs":[{"column":"current_education","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"highest_education","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"is_in_non_advanced_education","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_in_approved_training","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"age_started_or_accepted_current_education_or_training","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"is_before_universal_credit_qualifying_young_person_terminal_date","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"adult_ema","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"child_ema","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"receives_benefits_in_own_right","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"reports_outstanding_student_loan","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"age_left_full_time_education","dtype":"int64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_education","stage_contract_sha256":"592ddc77703f19bb3e1d48b6aecffc98b4e2abd3379db84a06e011bde4fa5549","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_legacy_proxies.","id":"frs_legacy_proxies","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_legacy_proxies@1","mass":"conserve","outputs":[{"column":"legacy_jobseeker_proxy","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_health_condition_proxy","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_support_group_proxy","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_legacy_proxies","stage_contract_sha256":"1ecf761cf3fa7180da15659e138e67a8654e58272b4fde28344aa27a874ad0aa","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"age_tail.boundary","citation":"","description":"Ownership boundary before frs_education_grant_split rewrites.","id":"frs_education_grant_split.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_education_grant_split.","id":"frs_education_grant_split","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_education_grant_split@1","mass":"conserve","outputs":[{"column":"disabled_students_allowance_eligible_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"education_grants","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_education_grant_split","stage_contract_sha256":"8718f014b90498c2cc7c754289775ca4a41452d9b978d8cbc5f34b64cbdc7df2","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_take_up.","id":"frs_take_up","inputs":[{"columns":["frs_benunit_capital","is_married"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","child_benefit_reported","education_grants","is_uc_claimant","months_since_last_birthday","pension_credit_reported","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_child_benefit","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"child_benefit_opts_out","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_pc","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_tfc","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_extended_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_universal_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_targeted_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_uc_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"maximum_extended_childcare_hours_usage","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"max_free_entitlement_hours_used","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_take_up","stage_contract_sha256":"78aec80408c50455b37308e5a977fb70df3ecf915d6c1e8f80715ad9b58e62cf","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_person_draws.","id":"frs_person_draws","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","max_free_entitlement_hours_used"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_person_draws@1","mass":"conserve","outputs":[{"column":"would_claim_marriage_allowance","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"would_claim_scp","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"attends_private_school_random_draw","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"tax_free_childcare_spend_routed_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_person_draws","stage_contract_sha256":"c94c2ddd548017a6e7f43e1da51d727601b3f323e20fe4ee6ed120fa0f0f6e41","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_household_draws.","id":"frs_household_draws","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","tax_free_childcare_spend_routed_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_household_draws@1","mass":"conserve","outputs":[{"column":"household_owns_tv","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"would_evade_tv_licence_fee","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"main_residential_property_purchased_is_first_home","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"property_purchased","dtype":"bool","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_household_draws","stage_contract_sha256":"c74c63b09264319c4bf0049dabba00ecd0ce660beb7b53d6dae71518434bc949","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_brma.","id":"frs_brma","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_brma@1","mass":"conserve","outputs":[{"column":"brma","dtype":"string","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_brma","stage_contract_sha256":"4285376b37299d375ed583b7f6b1747bd8b7cb1c8c0d19a36481156b5314a854","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"frs_education_grant_split.boundary","citation":"","description":"Freeze the assembled-spine gate population.","id":"frs_brma.checkpoint","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_hmrc_spine_leaves.","id":"frs_hmrc_spine_leaves","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["brma","region"],"entity":"household","rows":"all"},{"columns":["age","employment_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_hmrc_spine_leaves@1","mass":"conserve","outputs":[{"column":"hmrc_spi_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_unemployment_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_incapacity_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"ossben_identifiable_subset","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"srp_regular_code5","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employer_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_hmrc_spine_leaves","stage_contract_sha256":"9eac704e9e86e7149321c76fb0f1c9a3ef1b5a0adb94119fc7add4f539717594","time_period":"2024"},"population":"frs_brma.checkpoint","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_annual_income_spells.","id":"frs_annual_income_spells","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","employer_pension_contributions","employment_income","gender","self_employment_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_annual_income_spells@1","mass":"conserve","outputs":[{"column":"employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"private_pension_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"contributory_benefits_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_annual_income_spells","stage_contract_sha256":"0b15c2e1e569577e2134d4e812e46e2d74d7b474bf58b8dae8aecedc7b47b55f","time_period":"2024"},"population":"frs_brma.checkpoint","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"frs_brma.checkpoint","citation":"","description":"Run structural UK stage spi_support_channel.","id":"spi_support_channel","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.spi_support_channel@1","mass":"declared","outputs":[],"params":{"expand_cells":[["person","person_source_id","int64"],["person","person_support_channel","string"],["person","person_support_clone_index","int64"],["benunit","benunit_source_id","int64"],["benunit","benunit_support_channel","string"],["benunit","benunit_support_clone_index","int64"],["household","source_household_id","int64"],["household","source_year","int64"],["household","source_household_key","string"],["household","household_source_id","int64"],["household","household_support_channel","string"],["household","household_support_clone_index","int64"],["household","household_is_spi_synthetic","bool"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_support_channel","stage_contract_sha256":"2c682605139c0a8f96e8ba45a2c03f506d3f758ef437841066a8fdb8b74269b6","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by spi_support_channel.","id":"spi_support_channel.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"person_source_id","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"person_support_channel","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"person_support_clone_index","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"benunit_source_id","dtype":"int64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"benunit_support_channel","dtype":"string","entity":"benunit","ownership":"produced","rows":"all"},{"column":"benunit_support_clone_index","dtype":"int64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"source_household_id","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"source_year","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"source_household_key","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"household_source_id","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_support_channel","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"household_support_clone_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_is_spi_synthetic","dtype":"bool","entity":"household","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["person.person_source_id","person.person_support_channel","person.person_support_clone_index","benunit.benunit_source_id","benunit.benunit_support_channel","benunit.benunit_support_clone_index","household.source_household_id","household.source_year","household.source_household_key","household.household_source_id","household.household_support_channel","household.household_support_clone_index","household.household_is_spi_synthetic"]},"population":"spi_support_channel","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"spi_support_channel","citation":"","description":"Run structural UK stage spi_income_band_donors.","id":"spi_income_band_donors","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.spi_income_band_donors@1","mass":"declared","outputs":[],"params":{"expand_cells":[["person","person_source_id","int64"],["person","person_support_channel","string"],["person","person_support_clone_index","int64"],["benunit","benunit_source_id","int64"],["benunit","benunit_support_channel","string"],["benunit","benunit_support_clone_index","int64"],["household","household_source_id","int64"],["household","household_support_channel","string"],["household","household_support_clone_index","int64"],["household","household_is_spi_synthetic","bool"],["household","household_is_spi_income_band_donor","bool"],["household","spi_income_band_donor_lower_bound","float64"],["person","person_is_spi_income_band_carrier","bool"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_income_band_donors","stage_contract_sha256":"d86ab4a1f53cf097f42c9c047e7a3fbb5144dc88496b49cb846b3f8be0bbe0a1","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by spi_income_band_donors.","id":"spi_income_band_donors.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"person_source_id","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"person_support_channel","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"person_support_clone_index","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"benunit_source_id","dtype":"int64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"benunit_support_channel","dtype":"string","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"benunit_support_clone_index","dtype":"int64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_source_id","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_support_channel","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_support_clone_index","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_is_spi_synthetic","dtype":"bool","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_is_spi_income_band_donor","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"spi_income_band_donor_lower_bound","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"person_is_spi_income_band_carrier","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_spi_income_band_donor","household.spi_income_band_donor_lower_bound","person.person_is_spi_income_band_carrier"]},"population":"spi_income_band_donors","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage hmrc_spi_income_spine.","id":"hmrc_spi_income_spine","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","rent_paid_as_boarder","rent_paid_as_lodger","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","maintenance_expenses","childcare_expenses","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","ssmg_reported","incapacity_benefit_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","ossben_identifiable_subset","srp_regular_code5","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier"],"entity":"person","rows":"all"}],"kernel":"uk.stage.hmrc_spi_income_spine@1","mass":"conserve","outputs":[{"column":"charitable_investment_gifts","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"gift_aid","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"other_investment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_employment_benefits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_employment_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_other_social_security_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_taxable_termination_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_miscellaneous_employment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_other_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_state_pension_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"property_finance_costs","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_employed_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_total_earned_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_total_investment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_assessable_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"savings_interest_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dividend_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_pension_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employer_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"personal_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"tax_free_savings_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"attendance_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"state_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_sc_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_dl_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"carers_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"widowed_parents_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"winter_fuel_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"trading_loss","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"loss_relief","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ni_class_4_losses_brought_forward","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_income_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hmrc_spi_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hmrc_spi_unemployment_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hmrc_spi_incapacity_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_pension_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"contributory_benefits_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"aa_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_sc_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_m_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_m_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_dl_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_enhanced_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_severely_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_startup_period","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_gainful_self_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_includes_support_component","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"reports_rent_from_other_property","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"stands_as_sole_owner_or_partner_of_company","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_engaged_in_owned_company_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_is_main_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_property_business","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"person_is_spi_income_recipient","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"hmrc_spi_income_spine","stage_contract_sha256":"b2cd2b9e80845a3867660b8f56eee6341fb89730b1b1cee19ae894ba3bf922fc","time_period":"2024"},"population":"spi_income_band_donors","sources":["frs"],"structural":"none","weights":null},{"base":"spi_income_band_donors","citation":"","description":"Ownership boundary before spi_housing_shell rewrites.","id":"spi_housing_shell.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage spi_housing_shell.","id":"spi_housing_shell","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["council_tax_single_adult_raw","household_support_channel","ons_household_type","region"],"entity":"household","rows":"all"},{"columns":["age","dividend_income","employment_income","is_household_head","other_investment_income","person_is_spi_income_recipient","private_pension_income","property_income","savings_interest_income","self_employment_income","state_pension_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.spi_housing_shell@1","mass":"conserve","outputs":[{"column":"tenure_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"accommodation_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_band","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"num_bedrooms","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_reported","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_interest_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_capital_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"structural_insurance_payments","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_service_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"water_and_sewerage_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"domestic_rates","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"subrent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_rebate","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_housing_shell","stage_contract_sha256":"524549b7dfbd0fceb505311eb0c3b923cfe3b11a8acd5ecfbfbcbb477e142eb1","time_period":"2024"},"population":"spi_housing_shell.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage was_wealth.","id":"was_wealth","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient"],"entity":"person","rows":"all"}],"kernel":"uk.stage.was_wealth@1","mass":"conserve","outputs":[{"column":"owned_land","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"property_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"corporate_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"private_pension_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"gross_financial_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"net_financial_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"main_residence_value","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"other_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"non_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"savings","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"num_vehicles","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"cash_isa","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"stocks_and_shares_isa","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"mortgage_debt","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"consumer_debt","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"student_loan_balance","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"directly_held_shares","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"unit_and_investment_trusts","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"other_residential_property_secured_debt","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"non_residential_property_secured_debt","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"was_wealth","stage_contract_sha256":"e648f94320deffd15d4e7c2f51e044e8b3572b24bb62d65f157edcb8f31753b5","time_period":"2024"},"population":"spi_housing_shell.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage was_lisa.","id":"was_lisa","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance"],"entity":"person","rows":"all"}],"kernel":"uk.stage.was_lisa@1","mass":"conserve","outputs":[{"column":"has_lifetime_isa","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"lifetime_isa_balance","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"household_lifetime_isa_balance","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"was_lisa","stage_contract_sha256":"46f12fdf9228f721d860ff7858b78b25406bb8737628acf63ac17d44d549f657","time_period":"2024"},"population":"spi_housing_shell.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"spi_housing_shell.boundary","citation":"","description":"Ownership boundary before regional_property_uprating rewrites.","id":"regional_property_uprating.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage regional_property_uprating.","id":"regional_property_uprating","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["household_lifetime_isa_balance","household_support_channel","region"],"entity":"household","rows":"all"},{"columns":["age"],"entity":"person","rows":"all"}],"kernel":"uk.stage.regional_property_uprating@1","mass":"conserve","outputs":[{"column":"main_residence_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_wealth","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_land","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"other_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"non_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"regional_property_uprating","stage_contract_sha256":"f45db95fde3f93731c0925b9bf8c12021921df2e4908770acdec1e3c97889277","time_period":"2024"},"population":"regional_property_uprating.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"regional_property_uprating.boundary","citation":"","description":"Run structural UK stage high_value_home_support.","id":"high_value_home_support","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.high_value_home_support@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_high_value_support_copy","bool"],["household","high_value_support_copies","int64"],["household","high_value_support_copy_index","int64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"high_value_home_support","stage_contract_sha256":"174f4b38228d98107bee1639d1a297a2748bb618e87c7bd0a6c869c6ab06f8fa","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by high_value_home_support.","id":"high_value_home_support.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_high_value_support_copy","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"high_value_support_copies","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"high_value_support_copy_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_high_value_support_copy","household.high_value_support_copies","household.high_value_support_copy_index"]},"population":"high_value_home_support","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage regional_home_values.","id":"regional_home_values","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["high_value_support_copy_index","household_is_high_value_support_copy","household_source_id","region","tenure_type"],"entity":"household","rows":"all"},{"columns":["age"],"entity":"person","rows":"all"}],"kernel":"uk.stage.regional_home_values@1","mass":"conserve","outputs":[{"column":"main_residence_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_wealth","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"main_residence_value_rank_basis","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"regional_home_values","stage_contract_sha256":"48e8a622c8830a54a4c48d9d8cb4f011751aa05d7cb5f6c7f0e06e1121b720b1","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage property_components.","id":"property_components","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["main_residence_value_rank_basis","non_residential_property_value","other_residential_property_value","region","subrent"],"entity":"household","rows":"all"},{"columns":["age","is_household_head","person_is_spi_income_recipient","person_support_channel"],"entity":"person","rows":"all"}],"kernel":"uk.stage.property_components@1","mass":"conserve","outputs":[{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_finance_costs","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_rental_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"property_components","stage_contract_sha256":"8c45b96e6c1cd6a3ec8080b674f06666b1bd1e86ecef4a654c18f9825977eb1b","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage property_purchases.","id":"property_purchases","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["household_source_id","non_residential_property_value","other_residential_property_value","region"],"entity":"household","rows":"all"},{"columns":["age","property_rental_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.property_purchases@1","mass":"conserve","outputs":[{"column":"additional_residential_property_purchased","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"non_residential_property_purchased","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"property_purchases","stage_contract_sha256":"281fe34ea94f71ac1a0652bf3ec17922f0d46919bfb74ab7b367ba6e9d680826","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage nts_bus_travel.","id":"nts_bus_travel","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.nts_bus_travel@1","mass":"conserve","outputs":[{"column":"local_bus_use_band","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"bus_in_london_trips","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"other_local_bus_trips","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"local_bus_trips","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"bus_pass_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"local_bus_single_fare_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"household_local_bus_trips","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"nts_bus_travel","stage_contract_sha256":"ef04589ebb01746b996c466517b07cb718cf88febe8c2d6d69f6edf6b4b80f8b","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage lcfs_consumption.","id":"lcfs_consumption","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.lcfs_consumption@1","mass":"conserve","outputs":[{"column":"food_and_non_alcoholic_beverages_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"alcohol_and_tobacco_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"clothing_and_footwear_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"housing_water_and_electricity_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_furnishings_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"health_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"transport_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"communication_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"recreation_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"education_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"restaurants_and_hotels_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"miscellaneous_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"petrol_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"diesel_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"bus_fare_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"domestic_energy_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"electricity_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"gas_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"liquid_fuel_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"solid_fuel_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"has_fuel_consumption","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"uses_energy_prepayment_meter","dtype":"bool","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"lcfs_consumption","stage_contract_sha256":"dcc0b5523c50de6360fbf0f0c6c585c38faa6c358098c4836280c641e6107b0a","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage etb_vat.","id":"etb_vat","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.etb_vat@1","mass":"conserve","outputs":[{"column":"full_rate_vat_expenditure_rate","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"etb_vat","stage_contract_sha256":"01adfcc85d77f38fb9cc896e2e4b4c4752518d9e2aa69e6947832678c25ecf19","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage etb_services.","id":"etb_services","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.etb_services@1","mass":"conserve","outputs":[{"column":"dfe_education_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"rail_subsidy_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"bus_subsidy_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"rail_usage","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"a_and_e_visits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"admitted_patient_visits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"outpatient_visits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"nhs_a_and_e_spending","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"nhs_admitted_patient_spending","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"nhs_outpatient_spending","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"etb_services","stage_contract_sha256":"85c52b57b06db2075b6422e8202b90eb70ebe60a3345e59cf48a4a0460f583e4","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"base":"high_value_home_support","citation":"","description":"Ownership boundary before uc_reporter_redraw rewrites.","id":"uc_reporter_redraw.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_reporter_redraw.","id":"uc_reporter_redraw","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_reporter_redraw@1","mass":"conserve","outputs":[{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_reporter_redraw","stage_contract_sha256":"b03d4947d6cb0404ba410c548e1850d5abe0c7dae2dc097d419b63eea04920a9","time_period":"2024"},"population":"uc_reporter_redraw.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"uc_reporter_redraw.boundary","citation":"","description":"Ownership boundary before spi_benefit_coherence rewrites.","id":"spi_benefit_coherence.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage spi_benefit_coherence.","id":"spi_benefit_coherence","inputs":[{"columns":["benunit_support_channel","frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["aa_category","age","attendance_allowance_reported","dla_m_category","dla_m_reported","dla_sc_category","dla_sc_reported","esa_contrib_reported","incapacity_benefit_reported","is_uc_claimant","person_source_id","person_support_channel","pip_dl_category","pip_dl_reported","pip_m_category","pip_m_reported","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.spi_benefit_coherence@1","mass":"conserve","outputs":[{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ssmg_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"widowed_parents_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_enhanced_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_severely_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"receives_benefits_in_own_right","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_benefit_coherence","stage_contract_sha256":"ad3bfd51b377963c1d976a82416283aeb7b80d9f89b44c0e5db79e3598e815d5","time_period":"2024"},"population":"spi_benefit_coherence.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"spi_benefit_coherence.boundary","citation":"","description":"Ownership boundary before uc_capital_coherence rewrites.","id":"uc_capital_coherence.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_capital_coherence.","id":"uc_capital_coherence","inputs":[{"columns":["benunit_support_channel","dependent_children","is_married"],"entity":"benunit","rows":"all"},{"columns":["non_residential_property_secured_debt","non_residential_property_value","other_residential_property_secured_debt","other_residential_property_value","owned_land","region"],"entity":"household","rows":"all"},{"columns":["age","dividend_income","is_benunit_head","is_household_head","is_parent","other_investment_income","person_support_channel","savings_interest_income","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_capital_coherence@1","mass":"conserve","outputs":[{"column":"uc_reported_capital","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"pension_credit_reported_capital","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"frs_benunit_capital","dtype":"float64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_capital_coherence","stage_contract_sha256":"e7c7311b3852e67ae755c09456cc10c46136681fa92ade60daa1fbeb581288d5","time_period":"2024"},"population":"uc_capital_coherence.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"uc_capital_coherence.boundary","citation":"","description":"Ownership boundary before uc_take_up rewrites.","id":"uc_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_take_up.","id":"uc_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_take_up","stage_contract_sha256":"1ef0c99087d48a4ee3e6298ce7144364b4e7ce4ca47902da738e5881be7f8151","time_period":"2024"},"population":"uc_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_legacy_closure_take_up.","id":"uc_legacy_closure_take_up","inputs":[{"columns":["frs_benunit_capital","would_claim_uc"],"entity":"benunit","rows":"all"},{"columns":["household_source_id","region"],"entity":"household","rows":"all"},{"columns":["age","child_tax_credit_reported","esa_income_reported","housing_benefit_reported","income_support_reported","is_claimant_or_partner","jsa_income_reported","universal_credit_reported","working_tax_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_legacy_closure_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_uc_at_legacy_closure","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_legacy_closure_take_up","stage_contract_sha256":"400097d7d4bf81ebcde8d9a0e8f8d13f306fe50426ea4524b6449ee02137a644","time_period":"2024"},"population":"uc_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"uc_take_up.boundary","citation":"","description":"Ownership boundary before pension_credit_take_up rewrites.","id":"pension_credit_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage pension_credit_take_up.","id":"pension_credit_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.pension_credit_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_pc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"has_mixed_age_couple_pension_credit_saving","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"pension_credit_take_up","stage_contract_sha256":"e887dbbb186cb79f6d3fc9a629269dbac4a43381b9574df65353b816f01a3a35","time_period":"2024"},"population":"pension_credit_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"pension_credit_take_up.boundary","citation":"","description":"Ownership boundary before child_benefit_take_up rewrites.","id":"child_benefit_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage child_benefit_take_up.","id":"child_benefit_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.child_benefit_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_child_benefit","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_benefit_opts_out","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"child_benefit_take_up","stage_contract_sha256":"6f1eac2609e868894a287254aac75ec57c0199783c6ae6cf4782f3fbb99f6e92","time_period":"2024"},"population":"child_benefit_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"child_benefit_take_up.boundary","citation":"","description":"Ownership boundary before carers_allowance_take_up rewrites.","id":"carers_allowance_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage carers_allowance_take_up.","id":"carers_allowance_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.carers_allowance_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"carers_allowance_take_up","stage_contract_sha256":"c4c1ddf4b7da2c3082e09d6e77a9b4a0dc617743ff2c3c1f546f930bcac0635f","time_period":"2024"},"population":"carers_allowance_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_deduction_attributes.","id":"uc_deduction_attributes","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","would_claim_carers_allowance"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_deduction_attributes@1","mass":"conserve","outputs":[{"column":"uc_deduction_random_draw","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"uc_deduction_type_random_draw","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"uc_latent_deduction_rate","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"uc_deduction_combination","dtype":"string","entity":"benunit","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_deduction_attributes","stage_contract_sha256":"6bc7e3ec1a5712e23ca1b7d2956e8b17f2526b94431ba3e5a9294b04658e4fe0","time_period":"2024"},"population":"carers_allowance_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"carers_allowance_take_up.boundary","citation":"","description":"Run structural UK stage cgt_support_split.","id":"cgt_support_split","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_support_split@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_cgt_support_copy","bool"],["household","cgt_support_copies","int64"],["household","cgt_support_copy_index","int64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_support_split","stage_contract_sha256":"f7ef8492bacde1607f24693d7362110ba55ad3d083688f3df61de40dbe65bdc0","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by cgt_support_split.","id":"cgt_support_split.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_cgt_support_copy","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_support_copies","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_support_copy_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_cgt_support_copy","household.cgt_support_copies","household.cgt_support_copy_index"]},"population":"cgt_support_split","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"cgt_support_split","citation":"","description":"Run structural UK stage cgt_incidence_clone.","id":"cgt_incidence_clone","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_incidence_clone@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_capital_gains_clone","bool"],["person","capital_gains","float64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_incidence_clone","stage_contract_sha256":"ee30278543cc0297a5366d855b7753aa04af5518971594c193c52be36bf8a7b4","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by cgt_incidence_clone.","id":"cgt_incidence_clone.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_capital_gains_clone","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"capital_gains","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_capital_gains_clone","person.capital_gains"]},"population":"cgt_incidence_clone","sources":[],"structural":"none","weights":null},{"base":"cgt_incidence_clone","citation":"","description":"Ownership boundary before hmrc_cgt_gains_spine rewrites.","id":"hmrc_cgt_gains_spine.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage hmrc_cgt_gains_spine.","id":"hmrc_cgt_gains_spine","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["cgt_support_copies","corporate_wealth","gross_financial_wealth","household_is_cgt_support_copy","non_residential_property_value","other_residential_property_value","region"],"entity":"household","rows":"all"},{"columns":["age","dividend_income","employment_income","miscellaneous_income","private_pension_income","property_income","savings_interest_income","self_employment_income","state_pension_reported","tax_free_savings_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.hmrc_cgt_gains_spine@1","mass":"conserve","outputs":[{"column":"capital_gains","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"hmrc_cgt_gains_spine","stage_contract_sha256":"39011749dc0e95362e4ab606f09e95d457fdf3b40c66df9511d93dbb8208805d","time_period":"2024"},"population":"hmrc_cgt_gains_spine.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"hmrc_cgt_gains_spine.boundary","citation":"","description":"Run structural UK stage cgt_incidence_anchor.","id":"cgt_incidence_anchor","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["household_is_capital_gains_clone","region"],"entity":"household","rows":"all"},{"columns":["age","capital_gains","dividend_income","employment_income","miscellaneous_income","private_pension_income","property_income","savings_interest_income","self_employment_income","state_pension_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_incidence_anchor@1","mass":"conserve","outputs":[],"params":{"expand_cells":[],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_incidence_anchor","stage_contract_sha256":"b79ce806015de2f1e1703fa68bf4ad871c6df54b5b32633c864632ab68919a48","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"cgt_incidence_anchor","citation":"","description":"Run structural UK stage cgt_residential_split.","id":"cgt_residential_split","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_residential_split@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_cgt_residential_clone","bool"],["household","cgt_residential_clone_index","int64"],["person","cgt_residential_probability","float64"],["person","capital_gains_residential_property","float64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_residential_split","stage_contract_sha256":"1d382f676df487d13cfe88e9b8086fcec2bc1453a29b546cbb24ca2206cb3f6e","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by cgt_residential_split.","id":"cgt_residential_split.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_cgt_residential_clone","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_residential_clone_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_residential_probability","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"capital_gains_residential_property","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_cgt_residential_clone","household.cgt_residential_clone_index","person.cgt_residential_probability","person.capital_gains_residential_property"]},"population":"cgt_residential_split","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage hmrc_cgt_asset_type_spine.","id":"hmrc_cgt_asset_type_spine","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["corporate_wealth","gross_financial_wealth","other_residential_property_value","region","stocks_and_shares_isa"],"entity":"household","rows":"all"},{"columns":["age","capital_gains","capital_gains_residential_property","dividend_income","property_income","reports_rent_from_other_property","self_employment_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.hmrc_cgt_asset_type_spine@1","mass":"conserve","outputs":[{"column":"capital_gains_asset_type","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"capital_gains_badr","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"hmrc_cgt_asset_type_spine","stage_contract_sha256":"1e5df2498c981c556937bb7b4dfae708327755b6dd35707dc2adec6c0cd04c80","time_period":"2024"},"population":"cgt_residential_split","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage salary_sacrifice.","id":"salary_sacrifice","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr"],"entity":"person","rows":"all"}],"kernel":"uk.stage.salary_sacrifice@1","mass":"conserve","outputs":[{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_contributions_via_bonus_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"salary_sacrifice_pre_conversion_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"salary_sacrifice","stage_contract_sha256":"c243b6abba42bd6c7c0ef3714076fb4ff0135cac327507c5bc8a5fae1f770035","time_period":"2024"},"population":"cgt_residential_split","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage student_loans.","id":"student_loans","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","age_left_full_time_education","current_education","highest_education","reports_outstanding_student_loan","salary_sacrifice_pre_conversion_pay","student_loan_repayments","student_loans"],"entity":"person","rows":"all"}],"kernel":"uk.stage.student_loans@1","mass":"conserve","outputs":[{"column":"student_loan_plan","dtype":"string","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"student_loans","stage_contract_sha256":"157d9ee607633e4246ed06eeee3aac3cdff98118e72400e18b84c11b3fd2b92b","time_period":"2024"},"population":"cgt_residential_split","sources":["frs"],"structural":"none","weights":null},{"base":"cgt_residential_split","citation":"","description":"Ownership boundary before childcare_copy_take_up rewrites.","id":"childcare_copy_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr","pension_contributions_via_bonus_sacrifice","salary_sacrifice_pre_conversion_pay","student_loan_plan"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage childcare_copy_take_up.","id":"childcare_copy_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_uc_childcare","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr","pension_contributions_via_bonus_sacrifice","salary_sacrifice_pre_conversion_pay","student_loan_plan"],"entity":"person","rows":"all"}],"kernel":"uk.stage.childcare_copy_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_tfc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_extended_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_universal_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_targeted_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"maximum_extended_childcare_hours_usage","dtype":"float64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"max_free_entitlement_hours_used","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"childcare_copy_take_up","stage_contract_sha256":"cdbb7e135b16fac7ca1bcd6c54222821e2976b4da99f10a60913efd0ba03c13c","time_period":"2024"},"population":"childcare_copy_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage private_school_attendance.","id":"private_school_attendance","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","tax_free_savings_income","savings_interest_income","dividend_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","other_investment_income","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr","pension_contributions_via_bonus_sacrifice","salary_sacrifice_pre_conversion_pay","student_loan_plan"],"entity":"person","rows":"all"}],"kernel":"uk.stage.private_school_attendance@1","mass":"conserve","outputs":[{"column":"attends_private_school","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.151.0"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"private_school_attendance","stage_contract_sha256":"7e44379c0331fe4c9de05cd76a075c1a6aa22cf0dec6cd2f91b277e70f14a038","time_period":"2024"},"population":"childcare_copy_take_up.boundary","sources":["frs"],"structural":"none","weights":null}],"sources":[{"codec":"csv-tables","description":"Content-bound UK FRS and donor fixture/source bundle.","name":"frs"}]} diff --git a/test_support/microcosm_build/uk_uc_capital_coherence.py b/test_support/microcosm_build/uk_uc_capital_coherence.py index 6742bb3183..0c94c06236 100644 --- a/test_support/microcosm_build/uk_uc_capital_coherence.py +++ b/test_support/microcosm_build/uk_uc_capital_coherence.py @@ -15,6 +15,7 @@ from microcosm.build.uk_runtime.spi_support import support_channel_column from microcosm.build.uk_runtime.uc_capital_coherence import ( PENSION_CREDIT_PROPERTY_CAPITAL_SOURCES, + PROPERTY_CAPITAL_SECURED_DEBT, UC_CAPITAL_COARSENING, UC_CAPITAL_INCOME_BAND_EDGES, UC_CAPITAL_MINIMUM_CELL_DONORS, @@ -123,7 +124,10 @@ def _frame(): ) household = pd.DataFrame({"household_id": [row[0] for row in rows]}) # No household holds property here; the property-share tests add it. - for column in PENSION_CREDIT_PROPERTY_CAPITAL_SOURCES: + for column in ( + *PENSION_CREDIT_PROPERTY_CAPITAL_SOURCES, + *PROPERTY_CAPITAL_SECURED_DEBT.values(), + ): household[column] = 0.0 return uk_national_frame( person=person, diff --git a/test_support/microcosm_build/uk_uc_reporter_redraw.py b/test_support/microcosm_build/uk_uc_reporter_redraw.py index 3cd5b8caba..15b463ba6d 100644 --- a/test_support/microcosm_build/uk_uc_reporter_redraw.py +++ b/test_support/microcosm_build/uk_uc_reporter_redraw.py @@ -17,6 +17,7 @@ ) from microcosm.build.uk_runtime.uc_capital_coherence import ( PENSION_CREDIT_PROPERTY_CAPITAL_SOURCES, + PROPERTY_CAPITAL_SECURED_DEBT, cohere_uc_capital, ) from microcosm.build.uk_runtime.uc_reporter_redraw import ( @@ -216,7 +217,10 @@ def _frame(*, child_only: bool = False): "household_is_capital_gains_clone": [row[4] for row in benunit_rows], } ) - for column in PENSION_CREDIT_PROPERTY_CAPITAL_SOURCES: + for column in ( + *PENSION_CREDIT_PROPERTY_CAPITAL_SOURCES, + *PROPERTY_CAPITAL_SECURED_DEBT.values(), + ): household[column] = 0.0 return uk_national_frame( person=person, diff --git a/tools/assemble_uk_dense_release_dir.py b/tools/assemble_uk_dense_release_dir.py index 9b20ac52e3..8ab823ad86 100644 --- a/tools/assemble_uk_dense_release_dir.py +++ b/tools/assemble_uk_dense_release_dir.py @@ -47,6 +47,11 @@ validate_staging_delivery, ) from microcosm.build.uk_runtime.release_identity import UK_DENSE_RELEASE_ID +from microcosm.build.uk_runtime.spi_dependency import ( + UK_SPI_PUBLIC_USE_TAPE_KEY, + uk_check_spi_public_use_tape_marker, + uk_spi_public_use_tape_marker_for_stage_names, +) from microcosm.data.contract import ( _UK_DENSE_SIGNED_EXCLUSION_GATES, _check_uk_incumbent_surface_evaluation, @@ -1017,6 +1022,21 @@ def artifact(kind: str, path: str, sha256: str) -> dict[str, str]: ) evidence_files = (*evidence_files, *source_paths) evidence_sha = {name: _sha256(release_dir / name) for name in evidence_files} + # The SPI Public Use Tape marker, rederived from the stages the spine + # provenance names and checked against any marker it records (#1095). + spine_provenance = _mapping( + _mapping(identity.get("spine"), "identity.spine").get("spine_provenance"), + "identity.spine.spine_provenance", + ) + try: + spi_marker = uk_spi_public_use_tape_marker_for_stage_names( + [str(stage) for stage in spine_provenance.get("stages") or ()] + ) + uk_check_spi_public_use_tape_marker( + spine_provenance.get(UK_SPI_PUBLIC_USE_TAPE_KEY), spi_marker + ) + except ValueError as exc: + raise SystemExit(f"error: {exc}") from exc release_manifest = { "schema_version": 1, "data_package": { @@ -1051,9 +1071,10 @@ def artifact(kind: str, path: str, sha256: str) -> dict[str, str]: {"name": "policyengine-uk", "specifier": f"=={runtime['policyengine-uk']}"} ], "artifacts": { - _DATASET_KEY: artifact( - "microdata", _DATASET_FILENAME, measured["candidate"] - ), + _DATASET_KEY: { + **artifact("microdata", _DATASET_FILENAME, measured["candidate"]), + "spi_public_use_tape_dependent": bool(spi_marker["dependent"]), + }, **{ Path(name).stem: artifact("diagnostics", name, evidence_sha[name]) for name in evidence_files @@ -1071,6 +1092,7 @@ def artifact(kind: str, path: str, sha256: str) -> dict[str, str]: "voa": "Valuation Office Agency", "slc": "Student Loans Company", }, + "licensed_data": {UK_SPI_PUBLIC_USE_TAPE_KEY: dict(spi_marker)}, } _write_json(release_dir / "release_manifest.json", release_manifest) sums = { diff --git a/tools/assemble_uk_release_dir.py b/tools/assemble_uk_release_dir.py index 750b992c83..decc753c08 100644 --- a/tools/assemble_uk_release_dir.py +++ b/tools/assemble_uk_release_dir.py @@ -32,6 +32,11 @@ uk_time_period, ) from microcosm.build.uk_runtime.release_identity import UK_NATIONAL_RELEASE_ID +from microcosm.build.uk_runtime.spi_dependency import ( + UK_SPI_PUBLIC_USE_TAPE_KEY, + uk_check_spi_public_use_tape_marker, + uk_spi_public_use_tape_marker_for_stage_names, +) from microcosm.build.uk_runtime.weight_year import uk_weights_are_at_dataset_year from microcosm.data.contract import validate_release_dir @@ -252,6 +257,7 @@ def _assemble(args: argparse.Namespace) -> dict[str, object]: signed_input_posture.get("sha256"), ) cut_tag = _cut_tag(attempt_id, args.cut_tag) + spi_marker = _spi_public_use_tape_marker(build_block) runtime = _runtime_versions(build_block, dict(args.runtime_version)) code_pin = _diagnostics_code_pin(diagnostics) calibration_filename = f"{_DATASET_KEY}_calibration.npz" @@ -353,6 +359,7 @@ def _assemble(args: argparse.Namespace) -> dict[str, object]: release_cut_part=release_cut_part, spine_report_path=spine_report_path, staging_delivery=staging_delivery, + spi_marker=spi_marker, ) finally: shutil.rmtree(staging_parent, ignore_errors=True) @@ -382,6 +389,7 @@ def _stage_and_finalize( release_cut_part: Mapping[str, object], spine_report_path: Path, staging_delivery: Mapping[str, object], + spi_marker: Mapping[str, object], ) -> dict[str, object]: np.savez( calibration_path, @@ -502,9 +510,12 @@ def artifact(kind: str, path: str, sha256: str) -> dict[str, str]: } ], "artifacts": { - _DATASET_KEY: artifact( - "microdata", _DATASET_FILENAME, measured["candidate"] - ), + # The microdata's own entry says whether it rests on the SPI + # Public Use Tape; licensed_data carries the tape's conditions. + _DATASET_KEY: { + **artifact("microdata", _DATASET_FILENAME, measured["candidate"]), + "spi_public_use_tape_dependent": bool(spi_marker["dependent"]), + }, f"{_DATASET_KEY}_calibration": artifact( "calibration", calibration_filename, calibration_sha ), @@ -549,6 +560,7 @@ def artifact(kind: str, path: str, sha256: str) -> dict[str, str]: f"{attempt_id} at immutable cut {cut_tag}." ), "publisher_labels": _uk_publisher_labels(), + "licensed_data": {UK_SPI_PUBLIC_USE_TAPE_KEY: dict(spi_marker)}, } release_manifest_path = release_dir / "release_manifest.json" _write_json(release_manifest_path, release_manifest) @@ -685,6 +697,31 @@ def _parse_args(argv: list[str] | None) -> argparse.Namespace: return args +def _spi_public_use_tape_marker( + build_block: Mapping[str, object], +) -> dict[str, object]: + """The SPI Public Use Tape marker, rederived from the signed stage list. + + The spine provenance in the signed diagnostics names the stages the spine + ran; the packaged spec says which of them read the tape. A provenance that + also records a marker must agree with the rederived one (microcosm#1095). + """ + + provenance = _mapping( + build_block.get("spine_provenance"), "diagnostics.build.spine_provenance" + ) + try: + marker = uk_spi_public_use_tape_marker_for_stage_names( + [str(stage) for stage in provenance.get("stages") or ()] + ) + uk_check_spi_public_use_tape_marker( + provenance.get(UK_SPI_PUBLIC_USE_TAPE_KEY), marker + ) + except ValueError as exc: + raise SystemExit(f"error: {exc}") from exc + return marker + + def _runtime_version(value: str) -> tuple[str, str]: package, separator, package_version = value.partition("=") if not separator or package not in _RUNTIME_PACKAGES or not package_version: diff --git a/tools/build_uk_ledger_compile_parity_signed_differences.py b/tools/build_uk_ledger_compile_parity_signed_differences.py index f52b46ad64..7846146bcc 100644 --- a/tools/build_uk_ledger_compile_parity_signed_differences.py +++ b/tools/build_uk_ledger_compile_parity_signed_differences.py @@ -167,6 +167,27 @@ class ParityReceiptSpec: "retained as diagnostic provenance on obr.ni_employee, so the frozen fixture's " "fitted row is fixture-only on the current surface." ) +#: The next policyengine-uk bump (microcosm#1095, María's ruling of +#: 2026-10-22) retires these rows from the targets to registry_parity.excluded. +_OBR_UC_CAP_SPLIT_ROWS = frozenset( + {"obr.universal_credit_in_cap", "obr.universal_credit_outside_cap"} +) +_OBR_UC_CAP_SPLIT_RETIRED_RATIONALE = ( + "microcosm#1095 (María's ruling of 2026-10-22) retires OBR's split of " + "Universal Credit spending at the welfare cap from the targets: the welfare " + "cap is a spending limit, no household-level concept in the model marks the " + "boundary, and the benefit-cap status the incumbent maps the split to is " + "another concept (microcosm#757). obr.universal_credit binds the sum of the " + "two cells, so the frozen fixture's fitted row is fixture-only on the current " + "surface." +) +_SLC_POSTGRADUATE_RETIRED_RATIONALE = ( + "microcosm#1095 (María's ruling of 2026-10-22) retires SLC's England " + "postgraduate repayments from the targets: the student-loans stage assigns no " + "postgraduate plan and policyengine-uk holds one plan a person, so no record " + "carries the repayments (microcosm#757). The frozen fixture's fitted row is " + "fixture-only on the current surface." +) _DWP_PIP_CASELOAD_DIAGNOSTIC_ROWS = frozenset( { "dwp.pip.daily_living_standard_claimants", @@ -791,6 +812,13 @@ def _add_signed_rationale_notes( row["reason"] = _OBR_STATE_PENSION_DIAGNOSTIC_RATIONALE elif name == "obr.ni" and row.get("kind") == "fixture_only": row["reason"] = _OBR_NI_DIAGNOSTIC_RATIONALE + elif name in _OBR_UC_CAP_SPLIT_ROWS and row.get("kind") == "fixture_only": + row["reason"] = _OBR_UC_CAP_SPLIT_RETIRED_RATIONALE + elif ( + name == "slc.repayments.england_postgraduate" + and row.get("kind") == "fixture_only" + ): + row["reason"] = _SLC_POSTGRADUATE_RETIRED_RATIONALE elif ( name in _DWP_PIP_CASELOAD_DIAGNOSTIC_ROWS and row.get("kind") == "fixture_only" diff --git a/tools/diagnose_uk_benefit_cap.py b/tools/diagnose_uk_benefit_cap.py index 33a81d9a68..ad0384064a 100644 --- a/tools/diagnose_uk_benefit_cap.py +++ b/tools/diagnose_uk_benefit_cap.py @@ -1,13 +1,15 @@ """Size the benefit-cap reduction tail on a UK spine or calibrated dataset. DWP's benefit-cap Table 4 counts UC households capped by the amount capped -per monthly assessment period. The engine's ``benefit_cap_reduction`` is an -annual amount, so the bands are the monthly edges times twelve, half-open on -the lower edge and closed on the upper. The tool reports the band counts on -the paid-claim GB basis the contract binds, the mean and median reduction, -the composition of the tail (family type, children, elements, regions) and, -on a spine, how many source households stand behind each band. Development -diagnostic: it never recalibrates and writes only an aggregate JSON. +per monthly assessment period. The contract binds the rows to +``uc_benefit_cap_reduction_after_floor``, the annual amount the Universal +Credit award loses to the cap (microcosm#1349), so the bands are the monthly +edges times twelve, half-open on the lower edge and closed on the upper. The +tool reports the band counts on the paid-claim GB basis the contract binds, +the mean and median reduction, the composition of the tail (family type, +children, elements, regions) and, on a spine, how many source households +stand behind each band. Development diagnostic: it never recalibrates and +writes only an aggregate JSON. """ from __future__ import annotations @@ -50,6 +52,8 @@ ("1300_01_and_above", 1300, None), ) TAIL_EDGE = 1300 +# The reduction the contract's dwp.benefit_cap rows bind (microcosm#1349). +REDUCTION = "uc_benefit_cap_reduction_after_floor" COMPONENTS = { "uc_maximum_amount": "uc_maximum_amount", "housing_element": "uc_housing_costs_element", @@ -86,9 +90,7 @@ def measure(dataset: str, year: int, spine: str | None = None) -> dict: universal_credit = np.asarray( simulation.calculate("universal_credit", year).values, dtype=float ) - reduction = np.asarray( - simulation.calculate("benefit_cap_reduction", year).values, dtype=float - ) + reduction = np.asarray(simulation.calculate(REDUCTION, year).values, dtype=float) family_type = np.asarray(simulation.calculate("family_type", year).values).astype( str ) @@ -142,9 +144,9 @@ def share_by(mask: np.ndarray, labels: np.ndarray) -> dict[str, float]: "dataset": str(dataset), "year": year, "basis": { - "capped": "benefit_cap_reduction > 0 and first member in a GB region", + "capped": f"{REDUCTION} > 0 and first member in a GB region", "paid_uc_gb": "capped and universal_credit > 0", - "bands": "monthly reduction = annual benefit_cap_reduction / 12; " + "bands": f"monthly reduction = annual {REDUCTION} / 12; " "lower edge exclusive, upper edge inclusive, last band open", }, "capped_units_gb": count(capped), diff --git a/tools/diagnose_uk_consumption_taxes.py b/tools/diagnose_uk_consumption_taxes.py index ede1d3081c..25e6896209 100644 --- a/tools/diagnose_uk_consumption_taxes.py +++ b/tools/diagnose_uk_consumption_taxes.py @@ -2,7 +2,8 @@ The levels of these rows are set by the build or the engine, not by the weights (microcosm#1113, microcosm#1123 item 3): ``obr.vat`` by an engine -coverage factor (policyengine-uk#1996), ``obr.fuel_duties_cars`` by fuel +coverage factor until policyengine-uk 2.135.7 (policyengine-uk#1996, #2187; +bound again since the next bump), ``obr.fuel_duties_cars`` by fuel that includes business-paid car fuel, and the ONS electricity and gas rows by a published-source residual against the stage's DESNZ volume at QEP prices. Rows held out of the objective by the measure-exclusion register stay diff --git a/tools/generate_uk_target_references.py b/tools/generate_uk_target_references.py index 64b1ed2209..773f83ce1e 100644 --- a/tools/generate_uk_target_references.py +++ b/tools/generate_uk_target_references.py @@ -1053,7 +1053,9 @@ def _add_uk_membership_accounting( "nine English regions of the region tier (microcosm#905), each " "cell composed as the linear combination of the billing-" "authority facts the crosswalk places in that region " - "(microcosm#929)." + "(microcosm#929). England's single adult discount is one " + "national row, MHCLG Council Taxbase line 8 for all bands " + "(microcosm#953)." ), }, { diff --git a/tools/graph_uk_spine_fixture.py b/tools/graph_uk_spine_fixture.py index da4ac8835a..728768d621 100644 --- a/tools/graph_uk_spine_fixture.py +++ b/tools/graph_uk_spine_fixture.py @@ -506,6 +506,11 @@ def _frs_tables() -> dict[str, pd.DataFrame]: "CHAMTTST": 10.0, "APAMT": 11.0, "APDAMT": 12.0, + # Alimony for the adult's own keep, the usual amount differing + # from the last (#1320). + "ALIUS": 2, + "ALUAMT": 3.0, + "ALIAMT": 4.0, "PAREAMT": 13.0, "REDAMT": 20.0, "SLREPAMT": 2.0, @@ -660,6 +665,34 @@ def _frs_tables() -> dict[str, pd.DataFrame]: "NATURE": 4, "DIRPERC": 2 if household_id % 10 == 0 else -1, "DIVIDEND": 1000.0 if household_id % 10 == 0 else 0.0, + # Every fifth job pays one bonus, given before or after tax by + # turn (#1340). + **{ + f"BONAMT{index}": ( + float(500 + 100 * (household_id % 7)) + if index == 1 and household_id % 5 == 0 + else "" + ) + for index in range(1, 7) + }, + **{ + f"BONTAX{index}": ( + 1 + (household_id // 5) % 2 + if index == 1 and household_id % 5 == 0 + else "" + ) + for index in range(1, 7) + }, + **{ + f"BONTXAM{index}": ( + 3.0 + if index == 1 + and household_id % 5 == 0 + and (household_id // 5) % 2 == 1 + else "" + ) + for index in range(1, 7) + }, # The annual income stage's job columns: a job under a year old # follows paid employment (WRKPREV 1) on two households in # four; every employee job carries its DV pay (UGRSPAY) and @@ -904,6 +937,12 @@ def _was_donor() -> pd.DataFrame: other_mortgage = np.where( ~mortgaged & (other_houses > 0.0) & (position % 2 == 0), 2_000.0 + rows, 0.0 ) + # The debt secured on each class of other property, parts of the + # mortgages on it and zero where its asset is zero, as on the real tab + # (microcosm#1095). + other_houses_debt = np.where(other_houses > 0.0, 0.6 * other_mortgage, 0.0) + buy_to_let_debt = np.where(buy_to_let > 0.0, 0.1 * other_mortgage, 0.0) + buildings_debt = np.where(buildings > 0.0, 0.3 * other_mortgage, 0.0) return pd.DataFrame( { "CASER8": rows + 1.0, @@ -952,6 +991,9 @@ def _was_donor() -> pd.DataFrame: "DVHseValR8_sum": other_houses, "DVBltValR8_sum": buy_to_let, "DVBlDValR8_sum": buildings, + "DVHseDebtR8_sum": other_houses_debt, + "DVBLtDebtR8_sum": buy_to_let_debt, + "DVBldDebtR8_sum": buildings_debt, "DVTotinc_bhcR8": 20_000.0 + rows * 1_000.0, "DVSaValR8_aggr": savings, "vcarnr8": position % 4, diff --git a/tools/pin_uk_bonus_sacrifice_anchor.py b/tools/pin_uk_bonus_sacrifice_anchor.py new file mode 100644 index 0000000000..68f25c1d62 --- /dev/null +++ b/tools/pin_uk_bonus_sacrifice_anchor.py @@ -0,0 +1,177 @@ +"""Pin the bonus-sacrifice anchor from the vendored OBR row and the locked engine. + +The ``salary_sacrifice`` stage converts FRS bonuses into +``pension_contributions_via_bonus_sacrifice`` until policyengine-uk's projection +of them meets the OBR's 2027-28 bonus-sacrifice base above the GBP 2,000 +threshold (OBR, supplementary forecast information on salary sacrifice, 5 +February 2026, Table 1.1; microcosm#1340). The OBR row is the build's vendored +copy of the pinned Chronicle feed (``obr_salary_sacrifice_costing_facts.json``), +never a hand-copied figure. + +policyengine-uk projects a dataset one year at a time, each year's amount the +year before's times one plus that year's growth (``data/economic_assumptions.py``, +``apply_single_year_uprating``): both sacrifice routes by the index its +``data/uprating_indices.yaml`` lists them under, and ``household_weight`` by +population. This tool writes those factors from the data year to the base year, +the OBR row and the upper earnings limit the conversion's candidates must reach +into ``uk/bonus_sacrifice_anchor.json`` with the engine version they came from. +A ``requires_uk`` test holds the file in lockstep with the installed engine, so +an engine bump re-runs this tool. + +Usage (with the uk extra installed): + + uv run --no-sync python tools/pin_uk_bonus_sacrifice_anchor.py [--check] + +``--check`` fails instead of writing when the committed file differs. +""" + +from __future__ import annotations + +import argparse +import json +import sys +from pathlib import Path + +from microcosm.build.uk_runtime.hmrc_uprating import ( + installed_engine_version, + live_engine_parameter_value, +) +from microcosm.build.uk_runtime.ledger_fact_vendoring import vendored_rows +from microcosm.build.uk_runtime.salary_sacrifice import ( + BONUS_SACRIFICE_ANCHOR_RESOURCE, + BONUS_SACRIFICE_BASE_YEAR, + BONUS_SACRIFICE_DATA_YEAR, + BONUS_SACRIFICE_FACTS_RESOURCE, + BONUS_SACRIFICE_OUTPUT, + BONUS_SACRIFICE_THRESHOLD, + BONUS_SACRIFICE_UEL_INSTANT, + BONUS_SACRIFICE_UEL_PARAMETER, + SALSAC_OUTPUT, +) + +UK_PACKAGE_DIR = ( + Path(__file__).resolve().parents[1] + / "packages" + / "microcosm-build" + / "src" + / "microcosm" + / "build" + / "uk" +) +#: The OBR line the anchor reads: the bonus route's base above the threshold, +#: in the base year. +_OBR_RECORD_SET = ( + f"obr.salary_sacrifice_costing_2026_02.tax_base.fy{BONUS_SACRIFICE_BASE_YEAR}" +) +_OBR_LINE = "bonus_sacrifice__above_2000" + + +def _growth(parameter: str) -> dict[str, object]: + years = list(range(BONUS_SACRIFICE_DATA_YEAR + 1, BONUS_SACRIFICE_BASE_YEAR + 1)) + rates = [live_engine_parameter_value(parameter, f"{year}-01-01") for year in years] + factor = 1.0 + for rate in rates: + if not rate > -1: + raise SystemExit( + f"{parameter!r} is {rate!r}; a growth rate must exceed -1." + ) + factor *= 1.0 + rate + return {"parameter": parameter, "years": years, "rates": rates, "factor": factor} + + +def build_anchor() -> dict[str, object]: + version = installed_engine_version() + if version == "absent": + raise SystemExit( + "policyengine-uk is not installed; sync the uk extra before pinning." + ) + from policyengine_uk.data.economic_assumptions import ( + _uprating_index_map, + household_weight_growth_path, + ) + + indices = { + variable: index + for index, variables in _uprating_index_map().items() + for variable in variables + if variable in (SALSAC_OUTPUT, BONUS_SACRIFICE_OUTPUT) + } + if len(indices) != 2 or len(set(indices.values())) != 1: + raise SystemExit( + f"policyengine-uk {version} projects the two sacrifice routes by " + f"{indices!r}; the anchor needs them on one index." + ) + rows = [ + row + for row in vendored_rows(BONUS_SACRIFICE_FACTS_RESOURCE) + if (row.get("layout") or {}).get("record_set_id") == _OBR_RECORD_SET + and (row.get("layout") or {}).get("groupby_value_id") == _OBR_LINE + ] + if len(rows) != 1: + raise SystemExit( + f"{BONUS_SACRIFICE_FACTS_RESOURCE} holds {len(rows)} rows for " + f"{_OBR_RECORD_SET} {_OBR_LINE}, not one." + ) + weekly = live_engine_parameter_value( + BONUS_SACRIFICE_UEL_PARAMETER, BONUS_SACRIFICE_UEL_INSTANT + ) + return { + "schema_version": 1, + "engine": {"package": "policyengine-uk", "version": version}, + "written_by": "tools/pin_uk_bonus_sacrifice_anchor.py", + "source": { + "resource": BONUS_SACRIFICE_FACTS_RESOURCE, + "record_set_id": _OBR_RECORD_SET, + "groupby_value_id": _OBR_LINE, + }, + "obr_base_above_threshold": float(rows[0]["value"]), + "threshold": int(BONUS_SACRIFICE_THRESHOLD), + "data_year": BONUS_SACRIFICE_DATA_YEAR, + "base_year": BONUS_SACRIFICE_BASE_YEAR, + "earnings_growth": _growth(next(iter(indices.values()))), + "weight_growth": _growth(household_weight_growth_path()), + "upper_earnings_limit": { + "parameter": BONUS_SACRIFICE_UEL_PARAMETER, + "instant": BONUS_SACRIFICE_UEL_INSTANT, + "weekly": weekly, + # policyengine-uk's own weeks in a year. + "annual": weekly * 52, + }, + } + + +def main(argv: list[str] | None = None) -> int: + parser = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + parser.add_argument( + "--check", + action="store_true", + help="fail instead of writing when the committed anchor differs", + ) + parser.add_argument( + "--output", + type=Path, + default=UK_PACKAGE_DIR / BONUS_SACRIFICE_ANCHOR_RESOURCE, + ) + args = parser.parse_args(argv) + payload = build_anchor() + text = json.dumps(payload, indent=2, ensure_ascii=False) + "\n" + if args.check: + committed = ( + args.output.read_text(encoding="utf-8") if args.output.is_file() else "" + ) + if committed != text: + print( + f"{args.output} differs from policyengine-uk " + f"{payload['engine']['version']}; re-run without --check.", + file=sys.stderr, + ) + return 1 + print(f"{args.output} matches policyengine-uk {payload['engine']['version']}") + return 0 + args.output.write_text(text, encoding="utf-8") + print(f"wrote {args.output} from policyengine-uk {payload['engine']['version']}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/uv.lock b/uv.lock index f268998963..0a6a2b339b 100644 --- a/uv.lock +++ b/uv.lock @@ -857,7 +857,7 @@ requires-dist = [ { name = "openpyxl", marker = "extra == 'uk'", specifier = ">=3.1" }, { name = "pandas", specifier = ">=2" }, { name = "policyengine-core", marker = "extra == 'us'", specifier = "==3.32.5" }, - { name = "policyengine-uk", marker = "extra == 'uk'", specifier = ">=2.147.2" }, + { name = "policyengine-uk", marker = "extra == 'uk'", specifier = ">=2.151.0" }, { name = "policyengine-us", marker = "extra == 'us'", specifier = ">=2.2.1,<3" }, { name = "pyarrow", specifier = ">=15" }, { name = "pyyaml", specifier = ">=6" }, @@ -936,7 +936,7 @@ requires-dist = [ { name = "microcosm-diagnostics", editable = "packages/microcosm-diagnostics" }, { name = "packaging", specifier = ">=24" }, { name = "policyengine-core", marker = "extra == 'us'", specifier = "==3.32.5" }, - { name = "policyengine-uk", marker = "extra == 'uk'", specifier = ">=2.147.2" }, + { name = "policyengine-uk", marker = "extra == 'uk'", specifier = ">=2.151.0" }, { name = "policyengine-us", marker = "extra == 'us'", specifier = ">=2.2.1,<3" }, ] provides-extras = ["us", "uk"] @@ -1055,7 +1055,7 @@ requires-dist = [ { name = "numpy", specifier = ">=2" }, { name = "pandas", specifier = ">=2.3" }, { name = "policyengine-core", marker = "extra == 'policyengine'", specifier = "==3.32.5" }, - { name = "policyengine-uk", marker = "extra == 'uk'", specifier = ">=2.147.2" }, + { name = "policyengine-uk", marker = "extra == 'uk'", specifier = ">=2.151.0" }, { name = "policyengine-us", marker = "extra == 'policyengine'", specifier = ">=2.2.1,<3" }, { name = "tables", marker = "extra == 'axiom'", specifier = ">=3" }, ] @@ -1675,7 +1675,7 @@ wheels = [ [[package]] name = "policyengine-uk" -version = "2.147.2" +version = "2.151.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "microdf-python" }, @@ -1683,9 +1683,9 @@ dependencies = [ { name = "pydantic" }, { name = "tables" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/89/16/14fe43a9e0323eb29e2877e7860356d7ae682dd89575973adaa4f25a3e33/policyengine_uk-2.147.2.tar.gz", hash = "sha256:7a718b03cb09e21d7e00cfe655b9a2082af5edba747471b5aec20e651e1cc180", size = 3191436, upload-time = "2026-10-22T18:40:49.878Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8f/b4/4a4ccbca68518d3e433d2d00c7e35fe136239a8ae2baf59324637a941f97/policyengine_uk-2.151.0.tar.gz", hash = "sha256:93bc378cad973244e7e3854d7a3a35e1011d381895d029b6996f14b32c240fd1", size = 3316516, upload-time = "2026-10-23T22:35:26.619Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/dd/54ddc9226756877e630a3f9fcda4dbf2ae142635e96a564cab3a062ced62/policyengine_uk-2.147.2-py3-none-any.whl", hash = "sha256:4b48ab1008b00610abc38192927ac9d4bb22037b6bbd9578926c2899e639f972", size = 4705225, upload-time = "2026-10-22T18:40:47.418Z" }, + { url = "https://files.pythonhosted.org/packages/42/15/610c6825ed934d4338a42707b8c021e5627738e68224b6672df94770295c/policyengine_uk-2.151.0-py3-none-any.whl", hash = "sha256:5722f55aca3eb88e1a228e95e1a57e3bd70a4d530a5a000991565ebd8955ce35", size = 4896964, upload-time = "2026-10-23T22:35:24.116Z" }, ] [[package]]