(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