ChrisCScott / forecaster

A personal finances forecasting tool for Canadian retirement planning
Other
1 stars 2 forks source link

Modify withdrawals based on tax liability #3

Closed ChrisCScott closed 6 years ago

ChrisCScott commented 6 years ago

Provide means to increase withdrawals based on tax liability. For example, allow user to indicate whether withdrawals are pre-tax or post-tax and, if the latter, provide a way to determine how much must be withdrawn to cover the existing tax liability and any additional liability for the increased withdrawals.

This could be approached in a couple of ways:

  1. Predictively: Add a pre_tax_equivalent method to Tax which converts post-tax amounts to pre-tax amounts (so that the appropriate amount can then be withdrawn). We may further need to add hooks to TaxSource objects (especially Account) to determine what proportion of withdrawn amounts result in taxable income. Since this behaviour can be non-linear, it may not be practicable to do this accurately with a single call; a search algorithm may be required.
  2. After-the-fact: Make the withdrawals of the desired post-tax amount, calculate tax liability, and then add further withdrawals as required to cover tax remittance requirements (see #2 ). This may require some iteration, since additional withdrawals may increase remittances required. Consider scaling withdrawals by the taxpayers' marginal rate as a first-order estimate of required withdrawals.

Note that any overwithdrawals can be recontributed in full at the beginning of the next year, whereas underwithdrawals will impact living standard, so when in doubt favour overwithdrawals.

ChrisCScott commented 6 years ago

Implemented in commit de8f5a91cce671bfe76ce8c742e3b0c2ee937736 to master.

Only basic functionality was implemented. Withdrawals are made in the following year, and only if there is insufficient contribution room to cover it. The hooks suggested above are the subject of issue #34.