tax preview image

1 collaborator

Default-person Al Pugh (Author)


inequality & taxation 

Tagged by Al Pugh 11 months ago

Visible to everyone | Changeable by the author
Model was written in NetLogo 5.3.1 • Viewed 173 times • Downloaded 16 times • Run 0 times
Download the 'tax' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)

# Economic inequality & tax redistribution

© Al Pugh, 2016.

## Background

Adapted from a model popularized by Bryan Hayes in American Scientist. Agents meet randomly to wager a small amount on the outcome of a coin flip. With this simple model the distribution of agent wealth will become increasingly skewed and asymptotically leads to all the wealth being held by one agent.

Should one be tempted to at least consider the possibility that the above model represents reality (however tenuously), it begs the question if anything can be done to stabilize it.

Two methods of taxation (for wealth redistribution) are examined. One is to set aside a percentage of each transaction between agents – a sort of an excise or sales tax. The second is to tax those with a wealth above some threshold value, somewhat like a property tax. Wealth redistribution can also be done is two ways: equally divided among all agents, or a larger share going to poor agents.

## Design

Agents are homogeneous and unsophisticated with the single property of wealth. They move randomly about the environment, follow rules for wealth exchange upon encountering another and paying any taxes assessed. The environment includes user-adjustable parameters for sales and wealth tax rates, tax redistribution frequency, and the method by which taxes are redistributed. Those parameters serve as inputs. The primary output is the level of inequality as represented by the Gini coefficient.

Initially, each agent is endowed with a small amount of wealth drawn from a constant plus a uniform random deviate (specifically, $90 + URD $0-21 which yields an expected value of $100 per agent). They are then set free to randomly roam about the environment.

Should two agents meet, an amount equal to a fifth (1/5) of the lesser of the agent's wealth is awarded the winner (determined by coin flip). Sales tax and a wealth tax applied to those with greater than 10 times the average wealth may be applied.

Tax receipts are evenly distributed to all agents at a chosen interval, or a greater share is allocated to poor agents if one toggles the switch on the interface. Here the specific method of enhanced redistribution is to grant all agents an equal share of half the collected amount, with the other half granted to agents with wealth below average.

Inequality is shown by displaying the percentage of total wealth owned by the wealthiest agent, a histogram of agent wealth and by the Gini coefficient change over time. This metric varies between 0 (indicating uniform wealth distribution) and 1 (indicating one agent has acquired all the wealth). A plot the total amount traded during each period is shown to indicate economic activity. Note it contains essentially the same information as the Gini plot, except in noisier form. For clarity, agents are color-scaled in proportion to their relative wealth.

## Results & analysis

The results are not completely unexpected. Taxation appears to forestall the collapse of the economy. Both forms of taxation will prevent, or profoundly delay, the onset of collapse. If the option to give a greater portion of tax receipts to the poorer agents is selected, the Gini metric is reduced significantly. However, once the economy has decayed to the point that any semblance of a middle class has evaporated, taxation of wealth seems to be slightly more effective in restoring vitality. In any scenario, redistribution favoring poorer agents is effective. The redistribution frequency appears to have minimal effect other than adding noise to the metric.

What does this simple model imply about the nature of economies? The first is that the really simple model exhibits characteristics in agreement with actual data, the most important of these is the distribution of wealth. The second is that an economic system based upon unencumbered trade is likely to collapse. Lastly, collapse might be avoided through the use of taxation for the redistribution of wealth, especially if it is biased toward the poor.

One might complain this model is based upon agents that are so simple-minded that it could not possibly represent reality. But richly complex systems can emerge from the interaction of simple elements. There is also empirical evidence – the similarity of wealth distributions for real economies and the simulated economy is remarkable.

## Things to observe

* When no or minimal taxes are imposed, and tax redistribution is equally allocated, the Gini coefficient (the metric for inequality) soars.

* If the above-mentioned conditions are left to run for some time, it is difficult to recover.

* The Gini coefficient and economic activity appear inversely correlated.

* Even with heavy taxation and redistribution favoring the poor, the histogram of agent wealth remains weighted toward the poorer side.

## References & credits

* Gini-coefficient calculation algorithm due to: Wilensky, U. (1998). [NetLogo Wealth Distribution model.] ( Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

* NetLogo software: Wilensky, U. (1999). [NetLogo.] ( Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

* Hayes, Bryan. Follow the Money, **American Scientist**, v90, September-October 2002, pp 400–405.

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

turtles-own [ wealth ]                                        ; A economic inequality ABM
globals [ exc tax totaltax gini counter sumexc ]              ; © Al Pugh, 2016

to setup
  ca    set gini 0    set counter 0    set totaltax 0
  ask patches [ set pcolor green ]                            ; set green background for contrast
  ask n-of 400 patches [                                      ; ask some patches to create agents
    sprout 1 [set shape "person" set wealth (90 + random 21)
      set heading random 360 ] ]
  ask turtles [ set color yellow ]                            ; initialize agent color
  update-gini         reset-ticks

to go
  set sumexc 0
  ask turtles [
    set heading heading + random 10 fd 1                      ; move agent randomly
    wealthtax                                                 ; tax wealthy
    encounter ]                                               ; resolve agent encounters
  redistribute                                                ; redistribute taxes
  update-gini                                                 ; update Gini coefficient
  ; checkwealth                                               ; (for debugging only)
end                                                            ; (plot set up commands in plots)

to wealthtax
  if ( wealth > 1000 ) [                                      ; tax those with 10x mean starting wealth
    set tax ( wealthtaxrate / 100. * wealth )
    set wealth wealth - tax
    set totaltax totaltax + tax ]

to encounter
  if ( count turtles-here = 2 ) [                              ; for every interaction of 2 agents:
    let n2 one-of other turtles-here
    set exc ( min [ wealth ] of turtles-here / 5.0 )           ; determine exchange amount
    set sumexc sumexc + exc                                    ; add to sum of exchanges
    set tax ( exc * salestaxrate / 100. )                      ; extract sales tax
    set totaltax totaltax + 2 * tax
    ifelse ( random 2 ) = 0                                    ; determine winner
      [ set wealth ( wealth - exc - tax )
        ask n2 [set wealth ( [wealth] of n2 + exc - tax ) ] ]
      [ set wealth ( wealth + exc - tax )
        ask n2 [set wealth ( [wealth] of n2 - exc - tax ) ] ]
    set color scale-color yellow                               ; color agents by wealth
      wealth 0 int max [ wealth ] of turtles ]

to redistribute
  set counter counter + 1
  if ( totaltax > 0 ) [                                        ; distribute tax receipts
    ifelse ( poordist? )
      [ let share ( totaltax / count turtles ) / 2.0
        ask turtles [ set wealth  wealth + share ]             ; all agents get reduced share
        let npoor count turtles with [ wealth < 100.0 ]        ; define poor as < mean starting wealth
        let poorshare share * count turtles / npoor            ; poor get additional share
        ask turtles with [ wealth < 100.0 ] [
          set wealth wealth + poorshare ]
        set totaltax 0  ]
      [ let share ( totaltax / count turtles )                 ; agents share tax redistribution equally
        ask turtles [ set wealth wealth + share ]
        set totaltax 0 ]  ]

to update-gini                                                  ; find Gini coefficient
  let sorted-wealths sort [wealth] of turtles
  let total-wealth sum sorted-wealths     let wealth-sum-so-far 0
  let index 0          let gini-index-reserve 0
  repeat count turtles [
    set wealth-sum-so-far (wealth-sum-so-far + item index sorted-wealths)
    set index (index + 1)
    set gini-index-reserve gini-index-reserve + (index / count turtles)
      - (wealth-sum-so-far / total-wealth) ]
  set gini (gini-index-reserve / count turtles) / 0.5

to checkwealth                                                  ; check total wealth remains unchanged
  print sum [ wealth ] of turtles + totaltax

There is only one version of this model, created 11 months ago by Al Pugh.

Attached files

File Type Description Last updated
tax.png preview Preview for 'tax' 11 months ago, by Al Pugh Download

This model does not have any ancestors.

This model does not have any descendants.