Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

基金定投 #53

Open
renyuzhuo opened this issue Jan 7, 2021 · 0 comments
Open

基金定投 #53

renyuzhuo opened this issue Jan 7, 2021 · 0 comments
Labels
Blog TextBlog 微信小程序 Blog

Comments

@renyuzhuo
Copy link
Owner

用数学的方式分析定投的基本原理,如何均摊成本,何时该卖出,不要盲目投资!

用代码构建数学模型

# 引入依赖
import matplotlib.pyplot as plt
import numpy as np
import math

定义基准参数

# 一年 365 天
time = 365
# 每天定投金额
aip = 100
# 波动基准
base = 2

前提条件

假设一年之内基金或股票的价格是周期变化的。

# 假设市场在一年内是周期性变化的
days = np.linspace(0, 2 * np.pi, time)
# 假设某基金或股票以 base 为基准上下波动
price = np.sin(days) + base

# 价钱变化
plt.figure()
plt.xlabel("Days")
plt.ylabel("Price")
plt.plot(days, price, color='green')

波动

份额确认

每一天购买份额是变化的,由于价格波动,在价钱低的时候多买,价钱高的时候少买,整体可以拉低成本。

# 假设每天定投 aip 元,每一天购买份额为
share = aip / price

# 购买份额变化
plt.figure()
plt.xlabel("Days")
plt.ylabel("Share")
plt.plot(days, share, color='red')

购买份额

持仓

可以计算持仓总份额,以及持仓总市值。

# 持仓总份额
total_share = np.sum(share)
# 持仓份额市值
total_money = total_share * base

# 输出:持仓份额、持仓市值
print('Total Share: ', total_share)
print('Total Money: ', total_money)
# Total Share:  21065.549798502376
# Total Money:  42131.09959700475

收益

计算定投总成本和总收益。

# 总成本
total_cost = aip * time
# 最终收益为最后持仓总额减去成本
balance = total_money - total_cost

# 输出:总成本、总收益
print('Total Cost: ', total_cost)
print('Total Balance: ', balance)
# Total Cost:  36500
# Total Balance:  5631.099597004752

收益率

计算收益率,用总盈利除以总成本,不考虑主动调仓等操作,一年的收益率大约是 15.4%。

# 盈利收益率
print('Ratio: ', balance / total_cost)
# Ratio:  0.1542767012878014

成本变化曲线

在定投过程中,每一股的平均成本随着每天的定投而变化,一个周期内成本变化曲线。

sum = 0
costs = []

for day in range(0, time):
  # 0..364
  sum = sum + share[day]
  cost = aip * (day + 1) / sum
  # print(cost)
  costs.append(cost)

# 一年期后最终持仓成本
print('Last Cost: ', costs[time - 1])
# Last Cost:  1.73268679664819

# 成本变化
plt.figure()
plt.xlabel("Days")
plt.ylabel("Costs")
plt.plot(days, costs, color='orange')

成本

对比市场价和持仓成本

我们把基金或股票的价钱变化曲线(绿线)和由于定投平摊成本导致的成本变化曲线(蓝线)放到一起对比一下。

plt.figure()
pl = plt.plot(days, price, color='green')
cl = plt.plot(days, costs, color='blue')
plt.show()

对比

总结

可以看到,不考虑其他因素,虽然市场价经过符合正弦函数的波动后,但是如果每天都买,总的成本价比市场价还是要低的,卖出则是赚钱的,避免了一次购买择机的风险。经过上面计算,赚钱比例大约为 15%。

总结起来,如果市场波动符合经济发展规律,定投基本可以保证赚钱。

更进阶一点:

  • 穿越多个波动周期,盈利比例不会变好(修改波动周期,增加到一年内两次波动,盈利率保持不变);
  • 按照上面的波动情况计算,若在较高处及时卖出,一年的收益率大约在 16%,可以增加盈利比例;
  • 在波动处于上升期时,主动减少定投金额,在波动处于下降期时,增加定投金额,更可以提高盈利比例;
  • 若对于经济发展长期有信心,在较低处无脑定投,不用卖出,在较高处及时止盈,则可以有较好的收益。

警告

市场远比理论模型要复杂,狂跌不止才是真的危险。

别人恐惧我贪婪,别人贪婪我恐惧。
——巴菲特

Reference

@renyuzhuo renyuzhuo added Blog TextBlog 微信小程序 Blog labels Jan 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Blog TextBlog 微信小程序 Blog
Projects
None yet
Development

No branches or pull requests

1 participant