Tax-Calculator
Tax-Calculator copied to clipboard
Model Extension: Defining Non-Parametric Reforms
Spurred by a nice discussion with @nikhilwoodruff about the OpenFisca platform, I wanted to write down some notes for future reference about how Tax-Calculator might be enhanced so as to allow users flexibility to define non-parametric reforms more easily.
One path:
- Finish off PR #2585 to vectorize functions and remove
jit
decorators. - Pass just
Policy
andRecords
objects to all functions incalcfuctions.py
, rather than tuples of variable and parameter names. - Define a class that has each function in
calcfunctions.py
as a method (or as each function defined as a class). Call this super classCF
for now.
One can then define a non-parametric reform by creating an instance of the CF
class and then updating an existing method or adding a new one. This would be similar to what is done to create a reform in OpenFisca, where a variable class is updated/created.
cc @hdoupe
Would be neat to see how recipe 6 might look after these changes.