본문 바로가기
공부/파이썬 Python

[Python] 언제 은퇴할 수 있을까를 계산

by 혼밥맨 2022. 3. 27.
반응형

 

[Python] 언제 은퇴할 수 있을까를 계산

 

FIRE Movement

FIRE 운동이란, “경제적 자립과 조기 퇴직(financial independence, retire early)”의 영문 첫 글자를 결합한 합성어입니다. 마치 나방이 불빛을 향해 모여들듯이 이런 삶을 꿈꾸는 사람들이 늘어나고 있습니다.

 

Libraries 라이브러리

1
2
3
4
5
# Import the libraries 
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')
cs

 

변수 세팅

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Get your savings rate
savings_rate = 0.64
# Get your yearly income
income = 30000
# Get your yearly expenses
expenses = income * (1-savings_rate)
# Get the interest rate from your portfolio or assets
interest_rate = 0.08
# Get the amount that you will invest into the portfolio or assets
investment = income - expenses
# Calculate the expected annual return
annual_return = investment * interest_rate
# Get the current year
year = 2022
# Get the withdrawal rate
withdrawal_rate = 0.04
cs

변수는 저축률, 소득액, 비용, 금리, 투자금액, 연수익률, 4% 룰을 세팅합니다.

1
2
3
4
5
6
7
# Create empty lists for the data set
Year = [] 
Yearly_Income = [] 
Yearly_Expenses  = [] 
Yearly_Invested_Amount = [] 
Total_Invested_Amount = [] 
Annual_Returns = [] 
cs

 

리스트에 데이터 채워넣기

1
2
3
4
5
6
7
# Append the data to the lists
Year.append(year)
Yearly_Income.append(income)
Yearly_Expenses.append(expenses)
Yearly_Invested_Amount.append(income - expenses)
Total_Invested_Amount.append(investment)
Annual_Returns.append(annual_return)
cs

 

투자 기간이 30년이라고 가정하고, 연도별 투자 금액과 비용, 소득 총액, 비용, 투자수익 총액은 어떻게 변화하는지 리스트에 담아서 확인합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
# Create a variable to store the amount of years/rows invested
invested_years = 30
for i in range(0, invested_years - 1):
  investment = (income - expenses) + annual_return + investment
  annual_return = investment * interest_rate
 
  # Append the new data to the lists
  Year.append(year + i + 1)
  Yearly_Income.append(income)
  Yearly_Expenses.append(expenses)
  Yearly_Invested_Amount.append(income - expenses)
  Total_Invested_Amount.append(investment)
  Annual_Returns.append(annual_return)
cs

 

투자기간동안의 데이터로 데이터프레임 생성하기

1
2
3
4
5
6
7
8
9
10
11
# Create the data set
df = pd.DataFrame()
df['Year'= Year
df['Yearly_Income'= Yearly_Income
df['Yearly_Expenses'= Yearly_Expenses
df['Yearly_Invested_Amount'= Yearly_Invested_Amount
df['Total_Invested_Amount'= Total_Invested_Amount
df['Annual_Returns'= Annual_Returns
 
Yearly_Withdrawal_Amount = np.array(Total_Invested_Amount) * withdrawal_rate
df['Yearly_Withdrawal_Amount'= Yearly_Withdrawal_Amount
cs

(30년 투자기간 동안의 소득, 비용, 투자금, 수익률, 금리 변화)

 

30년 투자기간 시각화하기

1
2
3
4
5
6
7
8
9
10
# Visually show the data
plt.figure(figsize=(124))
plt.plot(df['Year'], df['Yearly_Expenses'], label='Yearly Expenses')
plt.plot(df['Year'], df['Yearly_Withdrawal_Amount'], label='Yearly Withdrawal Amount')
plt.title('Years Until Retirement')
plt.xlabel('Years')
plt.ylabel('USD ($)')
plt.xticks(df['Year'], rotation=45)
plt.legend()
plt.show()
cs

2031년이 되면 은퇴를 할 수 있을 것이라고 나옵니다. 물론 소득액, 비용총액, 금리, 수익액은 초기 세팅 변수에 따라 설정되었기 때문에 정확할 순 없습니다.

1
2
# Show the year/row where you can live off of your returns
df[df.Yearly_Expenses <= df.Yearly_Withdrawal_Amount].head(1)
cs

재미정도로만 생각해서 하면 될 것 같습니다. 

반응형

댓글