Tax Functions#
The government is not an optimizing agent in OG-UK
. The government levies taxes on households, provides transfers to households, levies taxes on firms, spends resources on public goods, and makes rule-based adjustments to stabilize the economy in the long-run. The government can run budget deficits or surpluses in a given year and must, therefore, be able to accumulate debt or savings.
The government sector influences households through two terms in the household budget constraint (1)—government transfers OG-UK
, along with our method of incorporating detailed microsimulation data into a dynamic general equilibrium model.
Incorporating realistic tax and incentive detail into a general equilibrium model is notoriously difficult for two reasons. First, it is impossible in a dynamic general equilibrium model to capture all of the dimensions of heterogeneity on which the real-world tax rate depends. For example, a household’s tax liability in reality depends on filing status, number of dependents, many types of income, and some characteristics correlated with age. A good heterogeneous agent DGE model tries to capture the most important dimensions of heterogeneity, and necessarily neglects the other dimensions.
The second difficulty in modeling realistic tax and incentive detail is the need for good microeconomic data on the individuals who make up the economy from which to simulate behavioral responses and corresponding tax liabilities and tax rates.
OG-UK
follows the method of [DeBacker et al., 2019] of generating detailed tax data on effective tax rates and marginal tax rates for a sample of tax filers along with their respective income and demographic characteristics and then using that data to estimate parametric tax functions that can be incorporated into OG-UK
.
Effective and Marginal Tax Rates#
Before going into more detail regarding how we handle these two difficulties in OG-UK
, we need to define some functions and make some notation. For notational simplicity, we will use the variable
We can express total tax liability
Rearranging (4) gives the definition of an effective tax rate (
A marginal tax rate (OG-UK
, we differentiate between the marginal tax rate on labor income (
As we show in Section Optimality Conditions of the Households chapter of the OG-Core
repository documentation, the derivative of total tax liability with respect to labor supply OG-Core
documentation. It is valuable to be able to express those marginal tax rates, for which we have no data, as marginal tax rates for which we do have data. The following two expressions show how the marginal tax rates of labor supply can be expressed as the marginal tax rate on labor income times the household-specific wage and how the marginal tax rate of savings can be expressed as the marginal tax rate of capital income times the interest rate.
Microeconomic Data#
For OG-UK
, we use an open-source microsimulation model called PolicyEngine-UK
that uses microeconomic data on U.K. households from the Family Resources Survey (FRS), HMRC Survey of Personal Incomes (SPI), Living Costs and Food Survey (LCFS), and Wealth and Assets Survey QMI (WAS).[1] All of these data are public, except for the FRS. For users that do not have access to the FRS, PolicyEngine-UK
includes a synthetic FRS option.
PolicyEngine-UK
starts with the underlying population microeconomic data, in which each observation is a filer with a population weight that renders the sample representative. It then processes the relevant income and demographic characteristics in order to calculate the tax liability of each individual, according to the tax and benefit law of the U.K.. PolicyEngine-UK
can then calculate effective tax rates for all of these individuals, thereby creating a sample of how ETR’s are related to other variables in our OG-UK
model, such as total income PolicyEngine-UK
can also generate marginal tax rates by adding a dollar to each filer’s income of a particular type and calculate how the filer’s tax liability changes. This is a finite difference calculation of a derivative.
[TODO: Update this paragraph and associated figure, which currently come from OG-USA
.] Figure Fig. 1 shows a scatter plot of OG-UK
uses to best capture the main characteristics of these ETR data.

Fig. 1 Plot of estimated
[TODO: Update this paragraph and associated figure, which currently come from OG-USA
.] Figure Fig. 2 shows 3D scatter plots of PolicyEngine-UK
. This figure presents the main visual evidence for the functional form we use to fit tax functions to these data in Section Fitting Tax Functions. Figure Fig. 2 presents strong evidence that the tax rate—

Fig. 2 Scatter plot of ETR, MTRx, MTRy, and histogram as functions of labor income and capital income from microsimulation model:
Fitting Tax Functions#
In looking at the 2D scatter plot on effective tax rates as a function of total income in Figure Fig. 1 and the 3D scatter plots of
Default Tax Functional Form#
For the default option, OG-UK
follows the approach of [DeBacker et al., 2019] in using the following functional form to estimate tax functions for each age tax_func_type="DEP"
. Alternative specifications are outlined in Section Alternative Functional Forms below. Equation (9) is written as a generic tax rate, but we use this same functional form for
The parameters values will, in general, differ across the different functions (effective and marginal rate functions) and by age,
By assuming each tax function takes the same form, we are breaking the analytical link between the the effective tax rate function and the marginal rate functions. In particular, one could assume an effective tax rate function and then use the analytical derivative of that to find the marginal tax rate function. However, we’ve found it useful to separately estimate the marginal and average rate functions. One reason is that we want the tax functions to be able to capture policy changes that have differential effects on marginal and average rates. For example, a change in the standard deduction for tax payers would have a direct effect on their average tax rates. But it will have secondary effect on marginal rates as well, as some filers will find themselves in different tax brackets after the policy change. These are smaller and second order effects. When tax functions are are fit to the new policy, in this case a lower standard deduction, we want them to be able to represent this differential impact on the marginal and average tax rates. The second reason is related to the first. As the additional flexibility allows us to model specific aspects of tax policy more closely, it also allows us to better fit the parameterized tax functions to the data.
The key building blocks of the functional form Equation (9) are the
The respective
This functional form for tax rates delivers flexible parametric functions that can fit the tax rate data shown in Figure Fig. 2 as well as a wide variety of policy reforms. Further, these functional forms are monotonically increasing in both labor income
Symbol |
Description |
---|---|
Coefficient on squared labor income term |
|
Coefficient on labor income term |
|
Coefficient on squared capital income term |
|
Coefficient on capital income term y in |
|
Maximum tax rate on labor income |
|
Minimum tax rate on labor income |
|
Maximum tax rate on capital income |
|
Minimum tax rate on capital income |
|
shifter |
|
shifter |
|
shifter (can be negative) allows for support of |
|
Cobb-Douglas share parameter between 0 and 1 |

Fig. 3 Estimated tax rate functions of ETR, MTRx, MTRy, and histogram as functions of labor income and capital income from microsimulation model:
Parameter |
|||
---|---|---|---|
6.28E-12 |
3.43E-23 |
4.32E-11 |
|
4.36E-05 |
4.50E-04 |
5.52E-05 |
|
1.04E-23 |
9.81E-12 |
5.62E-12 |
|
7.77E-09 |
5.30E-08 |
3.09E-06 |
|
0.80 |
0.71 |
0.44 |
|
-0.14 |
-0.17 |
0.00E+00 |
|
0.80 |
0.80 |
0.13 |
|
-0.15 |
-0.42 |
0.00E+00 |
|
0.15 |
0.18 |
4.45E-03 |
|
0.16 |
0.43 |
1.34E-03 |
|
-0.15 |
-0.42 |
0.00E+00 |
|
0.84 |
0.96 |
0.86 |
|
Obs. ( |
3,105 |
3,105 |
1,990 |
SSE |
9,122.68 |
15,041.35 |
7,756.54 |
Let
We then estimate five remaining parameters
where
The underlying data can limit the number of tax functions that can be estimated. For example, we use the age of the primary filer from the PUF-CPS match to be equivalent to the age of the DGE model household. The DGE model we use allows for individuals up to age 100, however the data contain few primary filers with age above age 80. Because we cannot reliably estimate tax functions for
In OG-UK
, we estimate the 12-parameter functional form (9) using weighted nonlinear least squares to fit an effective tax rate function
The full set of estimated values are calculated using the get_tax_function_parameters
method of the Calibration
class of the OG-UK/oguk/calibrate.py
module. And the estimated baseline values are stored in the oguk_default_parameters.json
file.
Alternative Functional Forms#
In addition to the default option using tax functions of the form developed by [DeBacker et al., 2019], OG-UK
also allows users to specify alternative tax functions. Three alternatives are offered:
Functions as in [DeBacker et al., 2019], but where
, , and are functions of total income (i.e., ) and not labor and capital income separately. Users can select this option by setting the parametertax_func_type="DEP_totalinc"
.Functions of the Gouveia and Strauss form [Gouveia and Strauss, 1994]:
Users can select this option by setting the parameter
tax_func_type="GS"
. The three parameters of this function ( ) are estimated using the weighted sum of squares estimated described in Equation (10).Linear tax functions (i.e.,
a constant). Users can select this option by setting the parametertax_func_type="linear"
. The constant rate is found by taking the weighted average of the appropriate tax rate (effective tax rate, marginal tax rate on labor income, marginal tax rate on labor income) for each age and year, where the values are weighted by sampling weights and income.
Among all of these tax functional forms, users can set the age_specific
parameter to False
if they wish to have one function for all ages tax_func_type="DEP"
or tax_func_type="DEP_totinc"
), one can set analytical_mtrs=True
if they wish to have the
Factor Transforming Income Units#
The tax functions OG-UK
model are not in the same units as the real-world U.K. incomes data. For this reason, we have to transform the income by a
The tax rate functions are each functions of capital income and labor income
We do not know the steady-state wage, interest rate, household labor supply, and savings ex ante. So the income
Household Transfers#
Total transfers to households by the government in a given period OG-UK
currently has the transfer distribution function set to distribute transfers uniformly among the population.
However, this distribution function