diff --git a/fire-101/budgeting.ipynb b/fire-101/budgeting.ipynb index 6c29bee..ebd910d 100644 --- a/fire-101/budgeting.ipynb +++ b/fire-101/budgeting.ipynb @@ -17,7 +17,18 @@ "1. Understand how much you make and how much you spend\n", "2. Understand where you spend your money\n", " - Everyone has different styles or preferences (more or less granularity)\n", - " - Here are my bins (housing, health, food, transportation, utilities, miscellaneous)\n", + " - Setup categories that work for you\n", + " - housing/rent\n", + " - healthcare\n", + " - daycare/school\n", + " - food\n", + " - transportation\n", + " - utilities\n", + " - vacation\n", + " - giving\n", + " - entertainment\n", + " - Automate tracking\n", + " - Track your spending\n", "\n", "**Tools**\n", "- YNAB & MINT\n", @@ -25,6 +36,68 @@ "- Quicken\n", "- Bank apps" ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "
\n", + "\n", + "----------\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "### YNAB Income vs Expense Report\n", + "\n", + "![YNAB Income Expense Report](images/ynab-income-exp-1024x691.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "
\n", + "\n", + "----------\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "### YNAB Spending Report\n", + "\n", + "![YNAB Spending Report](images/ynab-spending-1024x720.png)\n" + ] } ], "metadata": { diff --git a/fire-101/financial-planning.ipynb b/fire-101/financial-planning.ipynb index b94a45b..6f60732 100644 --- a/fire-101/financial-planning.ipynb +++ b/fire-101/financial-planning.ipynb @@ -13,12 +13,19 @@ "source": [ "# Become financially independent\n", " \n", - "## 4% and 25 times rules" + "## 4% and 25 times rules\n", + "\n", + "| Annual Spending | Retirement Stash Needed |\n", + "| :------- | :------- |\n", + "| $\\$$25,000 | $\\$$625,000 |\n", + "| $\\$$50,000 | $\\$$1,250,000 |\n", + "| $\\$$100,000 | $\\$$2,500,000 |\n", + "| $\\$$150,000 | $\\$$3,750,000 |" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 5, "metadata": { "editable": true, "scrolled": true, @@ -39,7 +46,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "metadata": { "editable": true, "slideshow": { @@ -195,7 +202,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "metadata": { "editable": true, "slideshow": { @@ -209,7 +216,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "1623b20923414f278ad256f12f72ebda", + "model_id": "b9eb64b13faf417e8be9acb155186552", "version_major": 2, "version_minor": 0 }, @@ -217,7 +224,7 @@ "VBox(children=(interactive(children=(IntText(value=4, description='Rate of return on investments:', style=Desc…" ] }, - "execution_count": 4, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -268,7 +275,13 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, "source": [ "
\n", "\n", @@ -312,7 +325,13 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, "outputs": [], "source": [] } diff --git a/fire-101/images/100-sp500.png b/fire-101/images/100-sp500.png new file mode 100644 index 0000000..60e9034 Binary files /dev/null and b/fire-101/images/100-sp500.png differ diff --git a/fire-101/images/sp-500-historical-annual-returns-2024-05-30-macrotrends.png b/fire-101/images/sp-500-historical-annual-returns-2024-05-30-macrotrends.png new file mode 100644 index 0000000..5487430 Binary files /dev/null and b/fire-101/images/sp-500-historical-annual-returns-2024-05-30-macrotrends.png differ diff --git a/fire-101/images/sp-500-historical-chart-data-2024-05-30-macrotrends.png b/fire-101/images/sp-500-historical-chart-data-2024-05-30-macrotrends.png new file mode 100644 index 0000000..9ad8226 Binary files /dev/null and b/fire-101/images/sp-500-historical-chart-data-2024-05-30-macrotrends.png differ diff --git a/fire-101/images/ynab-income-exp-1024x691.png b/fire-101/images/ynab-income-exp-1024x691.png new file mode 100644 index 0000000..0f642d2 Binary files /dev/null and b/fire-101/images/ynab-income-exp-1024x691.png differ diff --git a/fire-101/images/ynab-spending-1024x720.png b/fire-101/images/ynab-spending-1024x720.png new file mode 100644 index 0000000..cdafea9 Binary files /dev/null and b/fire-101/images/ynab-spending-1024x720.png differ diff --git a/fire-101/investing.ipynb b/fire-101/investing.ipynb index 27b3ee0..7129b09 100644 --- a/fire-101/investing.ipynb +++ b/fire-101/investing.ipynb @@ -52,23 +52,52 @@ "tags": [] }, "source": [ - " ## Investing options\n", - " ### Standard investment options\n", + "## Investing options\n", + " \n", + "### Standard investment options\n", " - Savings\n", " - Money Market\n", " - Certificate of Deposit (CD)\n", + " - High Yield Savings Accounts (HYSA)\n", " - Bonds\n", " - Stocks (Index Funds)\n", " - Real estate\n", " \n", - " ### Speculation (risky investments)\n", + "### Speculation (risky investments)\n", " - Lottery\n", " - CryptoCurrency\n", " - Individual stocks\n", " - Meme stocks (Gamestop)\n", - " - Stock options\n", - " \n", - " ### How & where to invest (keep it simple)\n", + " - Stock options" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "
\n", + "\n", + "----------\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "### How & where to invest (keep it simple)\n", " * Company investments\n", " * **401K**\n", " * Employee Stock Purchase Plans\n", @@ -83,8 +112,35 @@ " * traditional & roth IRAs (tax benefits)\n", " * actively managed funds (beware)\n", " * Robo advisers (automated allocation and diversification offered by many online brokers)\n", - " * Certified Financial Planner (CFP)\n", - " \n", + " * Certified Financial Planner (CFP)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "
\n", + "\n", + "----------\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ "### Free money (Yes you heard that right)\n", " * Company benefits\n", " * 401k matching\n", @@ -122,7 +178,7 @@ "tags": [] }, "source": [ - " ## Investing strategies\n", + "## Investing strategies\n", " - Diversify\n", " - Low or no fee index funds\n", " - Be wary of investment advisers\n", @@ -149,6 +205,99 @@ "----------\n", "
" ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "### S&P 500 Invest $\\$$100, 1957-2023\n", + "If you invested $\\$$100 in the S&P 500 at the beginning of 1957, you would have about $\\$$72,148.05 at the end of 2023, assuming you reinvested all dividends. This is a return on investment of 72,048.05%, or 10.32% per year.\n", + "\n", + "This lump-sum investment beats inflation during this period for an inflation-adjusted return of about 6,553.58% cumulatively, or 6.47% per year.\n", + "\n", + "![S&P 500 Historic Returns](images/100-sp500.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "
\n", + "\n", + "----------\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "### S&P 500 Historic Chart\n", + "\n", + "![S&P 500 Historic Chart](images/sp-500-historical-chart-data-2024-05-30-macrotrends.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "
\n", + "\n", + "----------\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "### S&P 500 Historic Annual Returns\n", + "\n", + "![S&P 500 Historic Annual Returns](images/sp-500-historical-annual-returns-2024-05-30-macrotrends.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/fire-101/spending-less.ipynb b/fire-101/spending-less.ipynb index ffb2062..a1a6464 100644 --- a/fire-101/spending-less.ipynb +++ b/fire-101/spending-less.ipynb @@ -45,7 +45,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 22, "metadata": { "editable": true, "scrolled": true, @@ -72,7 +72,7 @@ " \n", "def get_compound_simple_df(i, one_time):\n", " start_age = 20\n", - " stop_age = 60\n", + " stop_age = 65\n", " yi = i*365\n", " \n", " df = pd.DataFrame({'Age': pd.Series(range(start_age,stop_age))})\n", @@ -190,6 +190,22 @@ "### **$\\$$1,305** total savings per year" ] }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "
\n", + "\n", + "----------\n", + "
" + ] + }, { "cell_type": "markdown", "metadata": { @@ -205,7 +221,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 23, "metadata": { "editable": true, "slideshow": { @@ -219,7 +235,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a4b0f70a82ac4f0988c9571c09aee90f", + "model_id": "df1b77948d5349859aa33fae22f1c8a8", "version_major": 2, "version_minor": 0 }, @@ -227,7 +243,7 @@ "VBox(children=(Play(value=1, description='Press play', interval=500, max=20, min=1), interactive(children=(Int…" ] }, - "execution_count": 3, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -253,6 +269,388 @@ "----------\n", "
" ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "hide-input" + ] + }, + "outputs": [], + "source": [ + "# Get dataframe for $1 invested\n", + "df1 = get_compound_simple_df(1, False)\n", + "df1 = df1.drop('Money Market', axis=1)\n", + "df1['Mattress 0%'] = df1['Mattress 0%'].map(\"${:,.0f}\".format)\n", + "df1['Bank/CD 4%'] = df1['Bank/CD 4%'].map(\"${:,.0f}\".format)\n", + "df1['Stocks 7%'] = df1['Stocks 7%'].map(\"${:,.0f}\".format)\n", + "\n", + "# Get dataframe for $10 invested\n", + "df10 = get_compound_simple_df(10, False)\n", + "df10 = df10.drop('Money Market', axis=1)\n", + "df10['Mattress 0%'] = df10['Mattress 0%'].map(\"${:,.0f}\".format)\n", + "df10['Bank/CD 4%'] = df10['Bank/CD 4%'].map(\"${:,.0f}\".format)\n", + "df10['Stocks 7%'] = df10['Stocks 7%'].map(\"${:,.0f}\".format)\n", + "\n", + "# Get dataframe for $20 invested\n", + "df20 = get_compound_simple_df(20, False)\n", + "df20 = df20.drop('Money Market', axis=1)\n", + "df20['Mattress 0%'] = df20['Mattress 0%'].map(\"${:,.0f}\".format)\n", + "df20['Bank/CD 4%'] = df20['Bank/CD 4%'].map(\"${:,.0f}\".format)\n", + "df20['Stocks 7%'] = df20['Stocks 7%'].map(\"${:,.0f}\".format)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "### $1 Invested" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AgeMattress 0%Bank/CD 4%Stocks 7%
020$365$365$365
1030$4,015$5,098$6,114
2040$7,665$12,104$17,423
3050$11,315$22,474$39,670
4060$14,965$37,824$83,433
\n", + "
" + ], + "text/plain": [ + " Age Mattress 0% Bank/CD 4% Stocks 7%\n", + "0 20 $365 $365 $365\n", + "10 30 $4,015 $5,098 $6,114\n", + "20 40 $7,665 $12,104 $17,423\n", + "30 50 $11,315 $22,474 $39,670\n", + "40 60 $14,965 $37,824 $83,433" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1.iloc[::10, :]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "### $10 Invested" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AgeMattress 0%Bank/CD 4%Stocks 7%
020$3,650$3,650$3,650
1030$40,150$50,978$61,140
2040$76,650$121,035$174,232
3050$113,150$224,737$396,701
4060$149,650$378,241$834,332
\n", + "
" + ], + "text/plain": [ + " Age Mattress 0% Bank/CD 4% Stocks 7%\n", + "0 20 $3,650 $3,650 $3,650\n", + "10 30 $40,150 $50,978 $61,140\n", + "20 40 $76,650 $121,035 $174,232\n", + "30 50 $113,150 $224,737 $396,701\n", + "40 60 $149,650 $378,241 $834,332" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df10.iloc[::10, :]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "### $20 Invested" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AgeMattress 0%Bank/CD 4%Stocks 7%
020$7,300$7,300$7,300
1030$80,300$101,956$122,280
2040$153,300$242,070$348,464
3050$226,300$449,474$793,403
4060$299,301$756,481$1,668,663
\n", + "
" + ], + "text/plain": [ + " Age Mattress 0% Bank/CD 4% Stocks 7%\n", + "0 20 $7,300 $7,300 $7,300\n", + "10 30 $80,300 $101,956 $122,280\n", + "20 40 $153,300 $242,070 $348,464\n", + "30 50 $226,300 $449,474 $793,403\n", + "40 60 $299,301 $756,481 $1,668,663" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df20.iloc[::10, :]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [] } ], "metadata": {