python 储蓄计划_个人理财规划分析 —— 带着Python玩金融(4)

2024-03-10 13:10

本文主要是介绍python 储蓄计划_个人理财规划分析 —— 带着Python玩金融(4),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

刚刚大学毕业的你获得了一份满意的工作,接下来正雄心勃勃地规划着自己的未来。这其中自然少不了财富目标,比如怎样成为百万富翁呢?本文将带你用Python分析你的财务情况,以及怎样才能实现你的理财目标。

收入和支出

假如你工作的起薪是10万元,但是你需要交纳五险一金和个税,这部分大约占工资的30%。为了制定合理的预算方案,首先需要计算实际到手的工资。

# 设定年收入

salary = 100000

# 假设税率是30%

tax_rate = 0.30

# 计算税后收入

salary_after_taxes = salary * (1 - tax_rate)

print("税后年收入: " + str(round(salary_after_taxes, 2)))

# 计算每月的税后收入

monthly_takehome_salary = salary_after_taxes / 12

print("每月到手的收入: " + str(round(monthly_takehome_salary, 2)))

税后年收入: 70000.0

每月到手的收入: 5833.33

知道实际的收入后,我们再来看每月的开支,预算如下:

房租:1500/月

就餐:平均40/天,一月按30天计算

娱乐:500/月

未预见的开支:300/月

现在来计算每月的支出和结余。

# 每月的房租

monthly_rent = 1500

# 每月的就餐预算

monthly_food_budget = 40 * 30

# 每月的娱乐预算

monthly_entertainment_budget = 500

# 未预见的开支

monthly_unforeseen_expenses = 300

# 计算总的月度开支

monthly_expenses = monthly_rent + monthly_food_budget \

+ monthly_entertainment_budget + monthly_unforeseen_expenses

print("每月支出: " + str(round(monthly_expenses, 2)))

# 计算每月的结余

monthly_savings = monthly_takehome_salary - monthly_expenses

print("每月结余: " + str(round(monthly_savings, 2)))

每月支出: 3500

每月结余: 2333.33

你的收入和支出并不是一成不变的。随着工作经验的增长,一般你的工资也会上涨。假设工资以每年5%的速度稳定增长,预测未来15年的收入情况(为了简单起见,这里假设税率没变)。

注:下面使用的 np.cumprod()累积求积函数,以及年增长率到月增长率的换算说明,可参见上一篇文章《用Python分析房屋抵押贷款》

import numpy as np # 导入numpy科学计算包

from matplotlib import pyplot as plt # 导入绘图工具包

%config InlineBackend.figure_format = 'retina' # 设置图片清晰度

plt.rcParams['font.sans-serif']=['SimHei'] # 设置中文字体

# 预测未来15年的情况,并换算到月份

forecast_months = 12*15

# 设置工资的年增长率

annual_salary_growth = 0.05

# 换算成工资每月的增长率(注意是复利)

monthly_salary_growth = (1 + annual_salary_growth) ** (1/12) - 1

# 计算工资的累积增长

cumulative_salary_growth_forecast = np.cumprod(np.repeat(1 + monthly_salary_growth, forecast_months))

# 预测工资

salary_forecast = monthly_takehome_salary * cumulative_salary_growth_forecast

# 绘制工资随时间变化的曲线

plt.plot(salary_forecast, color='green')

plt.xlabel("月份")

plt.ylabel("每月收入")

plt.show()

3ab55bdcfb25

不仅工资会上涨,由于通货膨胀,你的开支也会上涨。假设开支的增长速度是每年2.5%,采用上面相同的方法来计算未来15年的开支情况。

# 设置年通货膨胀率

annual_inflation = 0.025

# 换算成每月的通胀率

monthly_inflation = (1 + annual_inflation) ** (1/12) - 1

# 预测累积的通胀

cumulative_inflation_forecast = np.cumprod(1 + np.repeat(monthly_inflation, forecast_months))

# 预测未来的开支

expenses_forecast = monthly_expenses * cumulative_inflation_forecast

# 绘制开支随时间变化的曲线

plt.plot(expenses_forecast, color='red')

plt.xlabel("月份")

plt.ylabel("月度支出")

plt.show()

3ab55bdcfb25

为了方便比较,将上两幅图中的收入和支出曲线绘制在一幅图中。幸运的是你的收入增长速度大于通货膨胀率,这意味着你每月将有更多的结余。

plt.plot(salary_forecast, color='green', label="每月收入")

plt.plot(expenses_forecast, color='red', label="每月支出")

plt.legend(loc=2)

plt.xlabel("月份")

plt.ylabel("金额")

plt.show()

3ab55bdcfb25

储蓄和投资

在上一节中,我们预测了收入和支出随时间变化的情况,将每月的收入减去支出,便可算得每月积攒了多少钱。将每月的积蓄累加起来,就得到了总的积蓄。

注:下面使用的 np.cumsum() 函数进行累积求和,可参见上一篇文章《用Python分析房屋抵押贷款》

# 计算每月的积蓄

savings_forecast = salary_forecast - expenses_forecast

# 计算累积的积蓄

cumulative_savings = np.cumsum(savings_forecast)

# 输出15年后总的积蓄

final_net_worth = cumulative_savings[-1]

print("15年后总的积蓄为: " + str(round(final_net_worth, 2)) + "元")

# 绘制总积蓄随时间推移的曲线

plt.plot(cumulative_savings, color='blue')

plt.xlabel("月份")

plt.ylabel("累积的积蓄")

plt.show()

15年后总的积蓄为: 787802.65元

3ab55bdcfb25

从上面的计算可知,即使你严格执行了预算计划,并且工资也保持稳定增长,在15年后你的积蓄才打到78万多,这离你百万富翁的目标还有一定的差距。这时光靠存钱还不够,还需要你来进行合理的投资。假如投资的年回报率是7%,那么每月需要投资多少钱才能在15年后使财富增长到100万呢?

numpy.pmt(rate, nper, pv) 函数用来计算每月投资额

rate:每月投资回报率

nper:总的投资期数

pv:现值,这里是0

fv:未来价值,这里是100万

# 设置年投资回报率为7%

investment_rate_annual = 0.07

# 换算成每月的投资回报率

investment_rate_monthly = (1 + investment_rate_annual) ** (1/12) -1

# 为了获得100万,计算每月需要投资的金额

required_investment_monthly = -np.pmt(rate=investment_rate_monthly, \

nper=forecast_months, pv=0, fv=1000000)

print("你需要连续15年每月投资 "

+ str(round(required_investment_monthly, 2))

+ " 元才能达到100万。")

你需要连续15年每月投资 3214.35 元才能达到100万。

上面的计算告诉你每月需要投资三千多元才行,但是你一开始的积蓄只有两千多,负担不起这样的投资方案。

# 查看前5个月每月的积蓄

savings_forecast[:5]

array([ 2349.88962846, 2366.52789784, 2383.24850536, 2400.05181645,

2416.9381981 ])

我们可以换一种投资方案,不是每月投资固定的额度,而是按你收入的一定比例来投资。这样虽然一开始投入的较少,但是随着收入的增长,投资额也会随之增长。下面将模拟这一投资方案,假设将结余50%的资金用于投资。

# 设置每月结余中用于投资的比例

monthly_investment_percentage = 0.5

# 计算每月投资额度

investment_deposit_forecast = savings_forecast * monthly_investment_percentage

# 剩余的进入储蓄账户

savings_forecast_new = savings_forecast * (1 - monthly_investment_percentage)

# 绘制每月储蓄和投资的累积额度

fig = plt.figure(figsize=(12,4.5)) #设置画布大小

p1 = fig.add_subplot(121) # 添加第一个子图

plt.plot(investment_deposit_forecast, color='orange', label="投资")

plt.xlabel("月份")

plt.ylabel("每月的投资金额")

p2 = fig.add_subplot(122) # 添加第二个子图

plt.plot(savings_forecast_new, color='blue', label="储蓄")

plt.xlabel("月份")

plt.ylabel("每月的储蓄金额")

plt.show()

3ab55bdcfb25

上面这两幅图一模一样,因为你将结余的一半用来投资,另一半用来储蓄。下面让我们来计算这样的投资组合带来的资产净值。(为简单起见,这里假设投资的年回报是7%,而储蓄没有利息。)

# 设置投资、净值的初始数组(每个元素都为0,数组长度是12*15)

investment_portfolio = np.repeat(0., forecast_months)

net_worth = np.repeat(0., forecast_months)

# 计算累积的储蓄额

cumulative_savings_new = np.cumsum(savings_forecast_new)

# 循环计算每个月的投资和结余情况

for i in range(forecast_months):

# 设置前一月投资的总金额

# 如果是第一个月,则前一月投资总额为0

if i == 0:

previous_investment = 0

else:

previous_investment = investment_portfolio[i-1]

# 计算前一月的投资总额在当月的增长

previous_investment_growth = previous_investment*(1 + investment_rate_monthly)

# 将之前的投资总额加上当月的新增的投资额,等于当月的投资总数

investment_portfolio[i] = previous_investment_growth + investment_deposit_forecast[i]

# 计算当月的净值,是累积储蓄存款额加上当月总的投资额

net_worth[i] = cumulative_savings_new[i] + investment_portfolio[i]

# 绘制储蓄、投资、净值的随时间变化的曲线图

plt.plot(investment_portfolio, color='orange', label="投资")

plt.plot(cumulative_savings_new, color="blue", label="储蓄")

plt.plot(net_worth, color='green', label="净值")

plt.xlabel("月份")

plt.ylabel("金额")

plt.legend(loc=2)

plt.show()

3ab55bdcfb25

我们来查看15年后总的净值:

print("15年后的净值:" + str(round(net_worth[-1],2)))

15年后的净值:1014978.67

按照上面的组合投资方法,即将一半的结余用于投资,另一半用于储蓄,那么15年后你将达到100万的目标。

这篇关于python 储蓄计划_个人理财规划分析 —— 带着Python玩金融(4)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/794337

相关文章

python中列表list切分的实现

《python中列表list切分的实现》列表是Python中最常用的数据结构之一,经常需要对列表进行切分操作,本文主要介绍了python中列表list切分的实现,文中通过示例代码介绍的非常详细,对大家... 目录一、列表切片的基本用法1.1 基本切片操作1.2 切片的负索引1.3 切片的省略二、列表切分的高

基于Python实现一个PDF特殊字体提取工具

《基于Python实现一个PDF特殊字体提取工具》在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的PDF特殊字体提取器是一款基于Python开发的桌面应用程序感兴趣的... 目录一、应用背景与功能概述二、技术架构与核心组件2.1 技术选型2.2 系统架构三、核心功能实现解析

通过Python脚本批量复制并规范命名视频文件

《通过Python脚本批量复制并规范命名视频文件》本文介绍了如何通过Python脚本批量复制并规范命名视频文件,实现自动补齐数字编号、保留原始文件、智能识别有效文件等功能,听过代码示例介绍的非常详细,... 目录一、问题场景:杂乱的视频文件名二、完整解决方案三、关键技术解析1. 智能路径处理2. 精准文件名

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

Python使用PIL库将PNG图片转换为ICO图标的示例代码

《Python使用PIL库将PNG图片转换为ICO图标的示例代码》在软件开发和网站设计中,ICO图标是一种常用的图像格式,特别适用于应用程序图标、网页收藏夹图标等场景,本文将介绍如何使用Python的... 目录引言准备工作代码解析实践操作结果展示结语引言在软件开发和网站设计中,ICO图标是一种常用的图像

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

使用Python实现表格字段智能去重

《使用Python实现表格字段智能去重》在数据分析和处理过程中,数据清洗是一个至关重要的步骤,其中字段去重是一个常见且关键的任务,下面我们看看如何使用Python进行表格字段智能去重吧... 目录一、引言二、数据重复问题的常见场景与影响三、python在数据清洗中的优势四、基于Python的表格字段智能去重

Python中如何控制小数点精度与对齐方式

《Python中如何控制小数点精度与对齐方式》在Python编程中,数据输出格式化是一个常见的需求,尤其是在涉及到小数点精度和对齐方式时,下面小编就来为大家介绍一下如何在Python中实现这些功能吧... 目录一、控制小数点精度1. 使用 round() 函数2. 使用字符串格式化二、控制对齐方式1. 使用

Python如何快速下载依赖

《Python如何快速下载依赖》本文介绍了四种在Python中快速下载依赖的方法,包括使用国内镜像源、开启pip并发下载功能、使用pipreqs批量下载项目依赖以及使用conda管理依赖,通过这些方法... 目录python快速下载依赖1. 使用国内镜像源临时使用镜像源永久配置镜像源2. 使用 pip 的并

Python如何实现读取csv文件时忽略文件的编码格式

《Python如何实现读取csv文件时忽略文件的编码格式》我们再日常读取csv文件的时候经常会发现csv文件的格式有多种,所以这篇文章为大家介绍了Python如何实现读取csv文件时忽略文件的编码格式... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍我们再日常读取csv文件的时候经常