Lower your spending#
First things first - PAYOFF debts!!#
Debts with high interest are like anti investing#
- Payoff credit cards (rates can be as high as 15-20%) 
- Improves credit rating! 
The magic of auto bill pay.#
Set it and forget it - no late fees with high interest#
Show code cell source
import pandas as pd
import ipywidgets as widgets
import matplotlib.ticker as mtick
from IPython.display import YouTubeVideo, display
Show code cell source
#future self functions
savings = .0000001
money_market = .01
cd = .04
stocks = .07
def calc_simple_compound_interest(i, r, t, one_time):
    if one_time is True:
        return i*(1+r)**t
    else:
        return i * (1+r) ** t + i * (1+r) * ((1+r) ** t - 1) / r
    
def get_compound_simple_df(i, one_time):
    start_age = 20
    stop_age = 65
    yi = i*365
    
    df = pd.DataFrame({'Age': pd.Series(range(start_age,stop_age))})
    
    df['Mattress 0%'] = df.apply(lambda x: calc_simple_compound_interest(yi, savings, x['Age']-start_age, one_time), axis=1)
    df['Money Market'] = df.apply(lambda x: calc_simple_compound_interest(yi, money_market, x['Age']-start_age, one_time), axis=1)
    df['Bank/CD 4%'] = df.apply(lambda x: calc_simple_compound_interest(yi, cd, x['Age']-start_age, one_time), axis=1)
    df['Stocks 7%'] = df.apply(lambda x: calc_simple_compound_interest(yi, stocks, x['Age']-start_age, one_time), axis=1)
    
    return df
style = {'description_width': 'initial'}
fs_rn_investment = widgets.IntSlider(
    value=1,
    min=1,
    max=20,
    step=1,
    description='Daily amount you save & invest: $',
    disabled=False,
    continuous_update=False,
    orientation='horizontal',
    layout=widgets.Layout(width='100%'),
    style=style,
    readout=True,
    readout_format='d'
)
fs_rn_play = widgets.Play(
    value=1,
    min=1,
    max=20,
    step=1,
    description="Press play",
    interval=500,
    #speed=0,
    disabled=False
)
def fs_rn_output(i):
    #create and display dataframe
    df_plot = get_compound_simple_df(i, False)
    ax = df_plot.plot.line(x='Age', y=['Stocks 7%', 'Bank/CD 4%', 'Mattress 0%'], figsize=(12,8), linewidth=3, grid=True, ylim=(0,1000000))
    fmt = '${x:,.0f}'
    tick = mtick.StrMethodFormatter(fmt)
    ax.yaxis.set_major_formatter(tick)
 
    #display(df_plot)
    return("compare rate returns example")
How to spend less without being miserable?#
Why are you buying that? (Greed or Fear)#
Does that thing really make you happy?#
- The concept of badassity. 
- The challenge of consumerism 
Mentimeter Question
https://www.menti.com/alohp2v13yqh
Be nice to your future self#
\(\$\)1,825 (1 coffee at \(\$\)5 a day times 365 days in a year)#
- \(\$\)520 (1 bag of coffee \(\$\)10 each week at home)#
\(\$\)1,305 total savings per year#
Be really nice to your future self#
Show code cell source
fs_rn_res = widgets.interactive(fs_rn_output, i=fs_rn_investment)
widgets.jslink((fs_rn_play, 'value'), (fs_rn_investment, 'value'))
widgets.VBox([fs_rn_play, fs_rn_res])
Show code cell source
# Get dataframe for $1 invested
df1 = get_compound_simple_df(1, False)
df1 = df1.drop('Money Market', axis=1)
df1['Mattress 0%'] = df1['Mattress 0%'].map("${:,.0f}".format)
df1['Bank/CD 4%'] = df1['Bank/CD 4%'].map("${:,.0f}".format)
df1['Stocks 7%'] = df1['Stocks 7%'].map("${:,.0f}".format)
# Get dataframe for $10 invested
df10 = get_compound_simple_df(10, False)
df10 = df10.drop('Money Market', axis=1)
df10['Mattress 0%'] = df10['Mattress 0%'].map("${:,.0f}".format)
df10['Bank/CD 4%'] = df10['Bank/CD 4%'].map("${:,.0f}".format)
df10['Stocks 7%'] = df10['Stocks 7%'].map("${:,.0f}".format)
# Get dataframe for $20 invested
df20 = get_compound_simple_df(20, False)
df20 = df20.drop('Money Market', axis=1)
df20['Mattress 0%'] = df20['Mattress 0%'].map("${:,.0f}".format)
df20['Bank/CD 4%'] = df20['Bank/CD 4%'].map("${:,.0f}".format)
df20['Stocks 7%'] = df20['Stocks 7%'].map("${:,.0f}".format)
$1 Invested#
Show code cell source
df1.iloc[::10, :]
| Age | Mattress 0% | Bank/CD 4% | Stocks 7% | |
|---|---|---|---|---|
| 0 | 20 | $365 | $365 | $365 | 
| 10 | 30 | $4,015 | $5,098 | $6,114 | 
| 20 | 40 | $7,665 | $12,104 | $17,423 | 
| 30 | 50 | $11,315 | $22,474 | $39,670 | 
| 40 | 60 | $14,965 | $37,824 | $83,433 | 
$10 Invested#
Show code cell source
df10.iloc[::10, :]
| Age | Mattress 0% | Bank/CD 4% | Stocks 7% | |
|---|---|---|---|---|
| 0 | 20 | $3,650 | $3,650 | $3,650 | 
| 10 | 30 | $40,150 | $50,978 | $61,140 | 
| 20 | 40 | $76,650 | $121,035 | $174,232 | 
| 30 | 50 | $113,150 | $224,737 | $396,701 | 
| 40 | 60 | $149,650 | $378,241 | $834,332 | 
$20 Invested#
Show code cell source
df20.iloc[::10, :]
| Age | Mattress 0% | Bank/CD 4% | Stocks 7% | |
|---|---|---|---|---|
| 0 | 20 | $7,300 | $7,300 | $7,300 | 
| 10 | 30 | $80,300 | $101,956 | $122,280 | 
| 20 | 40 | $153,300 | $242,070 | $348,464 | 
| 30 | 50 | $226,300 | $449,474 | $793,403 | 
| 40 | 60 | $299,301 | $756,481 | $1,668,663 | 
Mentimeter Question
 
    
  
  
