(initial) prints html tables of balances over time
This commit is contained in:
commit
2355d79e60
89
econ-demo.py
Normal file
89
econ-demo.py
Normal file
@ -0,0 +1,89 @@
|
||||
|
||||
import pandas as pd
|
||||
|
||||
def simple_interest(balances, rate=0.05, terms=3):
|
||||
if terms <= 0:
|
||||
print("Number of terms must be >0!")
|
||||
return
|
||||
new_bal = []
|
||||
for balance in balances:
|
||||
b = balance
|
||||
for i in range(0,terms):
|
||||
b = b + (b * rate)
|
||||
new_bal.append(b)
|
||||
return new_bal
|
||||
|
||||
def share_of_wealth(balances):
|
||||
total_money = sum(balances)
|
||||
shares = []
|
||||
for balance in balances:
|
||||
shares.append(balance/total_money)
|
||||
return shares
|
||||
|
||||
def ubi(balances, dividend=10, terms=3):
|
||||
new_bal = []
|
||||
for balance in balances:
|
||||
b = balance
|
||||
for i in range(0,terms):
|
||||
b = b + dividend
|
||||
new_bal.append(b)
|
||||
return new_bal
|
||||
|
||||
def get_balances_over_time(names, balances, func):
|
||||
if func is None:
|
||||
print("Need a function!")
|
||||
return
|
||||
if len(names) != len(balances):
|
||||
print("Every person needs a balance.")
|
||||
return
|
||||
data = {
|
||||
'name' : names,
|
||||
'initial' : balances
|
||||
}
|
||||
df = pd.DataFrame(data)
|
||||
for t in range(1,4):
|
||||
key = "term%i" % t
|
||||
frame = func(balances, terms=t)
|
||||
if frame is not None:
|
||||
df[key] = frame
|
||||
return df
|
||||
|
||||
# -------------
|
||||
|
||||
def illustrate_share_of_wealth():
|
||||
|
||||
participants = ["Alice", "Bob", "Charlie"]
|
||||
balances = [100,40,20]
|
||||
|
||||
print("In this demo, we have three participants.\n", participants)
|
||||
print("They respectively have ", balances)
|
||||
|
||||
print("\nThe initial distribution of wealth is ")
|
||||
print(share_of_wealth(balances))
|
||||
print("\n")
|
||||
|
||||
df = get_balances_over_time (
|
||||
participants, balances, simple_interest
|
||||
)
|
||||
print(df.to_html())
|
||||
|
||||
terms = 222
|
||||
print(f"How much money exists after {terms} terms?")
|
||||
#### In 222 terms, even C becomes a millionaire.
|
||||
nb = simple_interest(balances, terms=terms)
|
||||
print(nb)
|
||||
print("\n")
|
||||
|
||||
df = get_balances_over_time (
|
||||
participants, balances, ubi
|
||||
)
|
||||
print(df.to_html())
|
||||
|
||||
print("How much money exists after 999 terms?")
|
||||
u = ubi(balances, terms=999)
|
||||
print(u)
|
||||
|
||||
print("What is the share of wealth in a UBI economy?")
|
||||
print(share_of_wealth(u))
|
||||
|
||||
illustrate_share_of_wealth()
|
Loading…
x
Reference in New Issue
Block a user