Add VAT threshold simulation with behavioral responses #10
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Key Features
1. Behavioral Response Modeling
2. Policy Scenarios Implemented
3. Simulation Components
VATSimulatorclass with configurable elasticitiesVATPolicydataclass for policy configurationKey Findings from Simulation
📊 Current £90k Threshold:
📈 Policy Trade-offs:
Files Added
Core Implementation
src/vat_simulation.py- Main simulation modeltests/test_vat_simulation.py- Comprehensive test suiteData & Analysis
analysis/generate_synthetic_quick.py- Synthetic firm generatoranalysis/vat_threshold_analysis.py- Full analysis scriptanalysis/synthetic_firms_quick.csv- 100k synthetic firmsVisualizations
vat_simulation_demo.ipynb- Interactive Jupyter notebookvisualize_notch_effect.py- Clear visualization of notch effectvat_notch_explainer.md- Detailed explanation of the economicsAcademic Foundation
This work is based on:
Test Coverage
All tests passing:
Visualization Preview
The analysis shows clear bunching behavior below the threshold:
Note: The visualization demonstrates the discontinuous jump in tax liability at £90k and resulting firm bunching behavior
Next Steps
This simulation framework can be used to:
Testing
Run tests with:
Run the analysis:
Or explore interactively: