PSLmodels / Business-Taxation

USA Corporate and Pass-Through Business Tax Model
11 stars 10 forks source link

Handling changes to depreciation rules #76

Closed codykallen closed 5 years ago

codykallen commented 5 years ago

One of the trickiest potential areas when dealing with policy parameters is how to design policy parameters to allow for flexible changes to depreciation rules without having too many parameters, as to make it unreasonably difficult.

When building this model, I generally followed the approach in CCC, which allows for changes based on class lives, with depreciation policy parameters tied to the class life. However, this approach doesn't allow for changes to the life, which is important for potential policy changes. For example, an early version (although not the final version) of the TCJA planned to reclassify the 39.5 year class (nonresidential structures) as 25 year property. One could also want to make changes to the tax rules for specific asset types, without altering the rules for other assets with the same class life.

A previous version of Business-Taxation had reform parameter reclassify_gds_life and reclassify_ads_life, which allowed for changing the lives from one length to another (e.g. 39.5 years to 25 years). But handling this was cumbersome, and it would not be applicable in the Policy class as currently structured.

Perhaps it would be useful to have 2 types of reforms. One would be a standard reform dictionary (as currently done in Tax-Calculator), and the other would be specific to depreciation rules, allowing for changes by class life, by specific asset type, and by minor asset class.

codykallen commented 5 years ago

On an additional note, I think it may be worthwhile to provide an overview of depreciation laws. The current-law rules for capital cost recovery, known as MACRS, provides two systems for deducting investment costs: the general depreciation system (GDS) and the alternative depreciation system (ADS). Each of these systems proscribes certain methods for capital cost recovery for each asset type. These methods are double-declining balance depreciation, 150% declining balance depreciation, straight-line depreciation, expensing, and economic depreciation. GDS uses all of these methods for various asset types; ADS only uses straight-line depreciation.

In addition to these systems, various proposals have recommended two other systems: expensing and economic depreciation. In that sense, expensing is both a depreciation system and a depreciation method; in the expensing system, the expensing method is used for all asset types. The same logic applies for economic depreciation.

In light of this, we should consider how to clarify and improve the implementation of depreciation rules. First, the policy parameter names, such as depr_5yr_method are misleading; these really mean the system to use for depreciating.

Furthermore, when building the Asset class from its previously poorly structured form, I dropped expensing as a depreciation system. At the time, I had been thinking that one could just as implement expensing by setting the bonus depreciation rate to 100%. However, there is a subtle distinction that makes this inaccurate. Bonus depreciation is optional, and it has a take-up rate below 100%. On the other hand, expensing is not optional; the deduction is taken immediately. The incomplete take-up of bonus depreciation isn't properly modeled in the Asset class yet, so this distinction doesn't alter results at this stage. However, this should still be rectified or addressed somehow.

@martinholmer, does this clear up any confusion on the handling of depreciation systems and methods?

martinholmer commented 5 years ago

At the end of this very informative comment to issue #76, @codykallen asked:

does this clear up any confusion on the handling of depreciation systems and methods?

Yes, thanks for the tutorial. Looks like issue #76 has outlined some future enhancement opportunities. I'll be spending some time thinking about approaches to parametric representation of asset reclassifications.

codykallen commented 5 years ago

I believe I have determined an appropriate method for handling this. I will store the depreciation rules either in a CSV file or in an Excel file (if expanded to multiple industries). A user will be able to either use the basic policy parameters to change tax rules in general, and they should also be able to provide an Excel file (or CSV) with the specific asset-by-industry rules to use, either by reading it in or by passing a string containing the path to the file.

codykallen commented 5 years ago

This has been addressed using the new depr_file parameter, although potential interactions merit further consideration.