目录

序言

准备工作:

定投频率与收益

日定投

周定投

月定投

涨日与跌日

涨日定投

跌日定投


序言

博主最近沉迷理财,为了不使编程功力减退,特此使用python分析基金定投,文章不会推荐理财产品,各位看看就好。

准备工作:

  • 某指数,某基金的历史业绩,爬虫,复制皆可
  • python3环境,编译器

定投频率与收益

数据选取的是2018年到2019年9月间的微笑曲线

日定投

定投400个交易日,每日都定投

周定投

每周定投一次,80周

月定投

每月按20交易日算,定投20个月

频率越低收益越高,但三种定投收益相差不超过1%,大多数情况下是频率越高,收益越高,主要与波型有关。

对于如下的波形,日频能够在低点买入,但是周&月频率则较大概率在高点买入,所以日频定投更好

 如下波形的微笑曲线,正好与上面相反,日頻不会错过所有高点,而其他两种定投较大概率在低点买入。

涨日与跌日

这里定投就需要每日看盘了,分为涨日买进和跌日买进,定投次数不定,每次金额固定

涨日定投

跌日定投

跌日买进要比涨日买进收益高3%

import pandas as pd
import matplotlib.pyplot as plt
from pylab import mpl
from pandas.plotting import lag_plotdef Cast_Surely(count_list,cast_count,cast_fre,money):#普通定投#count_list 净值序列#money      本金#cast_count 定投次数#cast_fre   定投频率once_cost = money/cast_count #单笔定投金额final_count = count_list[len(count_list)-1] #结束定投净值Share_count = 0 #持有份额mark_count = 0  #上一次定投索引cast_x = []  #定投时间cast_y = []  #定投价格for i in range(len(count_list)):if i == 0:Share_count = once_cost/count_list[i]cast_x.append(i)cast_y.append(count_list[i])elif i-cast_fre == mark_count and i < cast_count*cast_fre:Share_count = Share_count + once_cost/count_list[i]cast_x.append(i)cast_y.append(count_list[i])mark_count = i  #标记本次定投位置InCome_final = Share_count*final_count  #最终收益return [money,InCome_final,(InCome_final/money-1)*100,cast_x,cast_y]def Cast_Surely_1(data,cast_fre,money):# 涨跌投#count_list 净值数据#money      本金#cast_fre   定投频率count_list = data['收盘']ware_list = data['涨跌幅']final_count = count_list[len(count_list)-1] #结束定投净值Share_count_up = 0 #涨持有份额Share_count_down = 0 #跌持有份额cast_up_x = []  #涨定投时间cast_up_y = []  #涨定投价格cast_down_x = []  #跌定投时间cast_down_y = []  #跌定投价格up_count = 0down_count = 0for i in range(len(count_list)):if ware_list[i] > 0:up_count = up_count + 1elif ware_list[i] < 0:down_count = down_count + 1for i in range(len(count_list)):if ware_list[i] > 0:Share_count_up = money/up_count/count_list[i] + Share_count_upcast_up_x.append(i)cast_up_y.append(count_list[i])elif ware_list[i] < 0:Share_count_down = money/down_count/count_list[i] + Share_count_downcast_down_x.append(i)cast_down_y.append(count_list[i])InCome_final_up = Share_count_up * final_count  # 涨最终收益InCome_final_down = Share_count_down * final_count  # 跌最终收益return [[money,InCome_final_down,(InCome_final_down/money-1)*100,cast_down_x,cast_down_y],[money,InCome_final_up,(InCome_final_up/money-1)*100,cast_up_x,cast_up_y]]def readfile(file_name):path = 'E:\DataAnalysis\project\money_analysis\Fund_analysis\\'+file_name+'.xls'data = pd.read_excel(path, index_col='时间',sheet_name='上证50指数A')return datadef plotMA(pandas_data,other1,other2,plot_name,a,b,c):title_name = '定投次数:' + str(a) + ' 交易频率:' + str(b) + ' 持有收益率:' + str(c) + '%'fig, ax = plt.subplots()ax.scatter(other1, other2, c='r',label = '投资时刻')ax.plot(range(len(pandas_data['收盘'])), pandas_data['收盘'], 'g--',label=plot_name)plt.xlabel('交易日')plt.ylabel('价值')plt.title(title_name)plt.legend()mpl.rcParams['font.sans-serif'] = ['SimHei']plt.savefig('E:\DataAnalysis\project\money_analysis\Fund_analysis\common\\'+str(a)+'_'+str(b)+'.png')plt.show()'''
filename = '数据'
data = readfile(filename)['2018':]
CS_count = 20
CS_fre = 20
money = 10000Result = Cast_Surely(data['收盘'],CS_count,CS_fre,money)
plotMA(data.copy(),Result[3],Result[4],filename,CS_count,CS_fre,Result[2])
''''''
filename = '数据'
data = readfile(filename)['2018':]
CS_count = 'down'
CS_fre = '跌日'
money = 10000
Result = Cast_Surely_1(data,CS_fre,money)
plotMA(data.copy(),Result[0][3],Result[0][4],filename,CS_count,CS_fre,Result[0][2])
#plotMA(data.copy(),Result[1][3],Result[1][4],filename,CS_count,CS_fre,Result[1][2])
'''

利用Python使基金定投收益最大相关推荐

  1. 黑科技编程开发,利用Python使图片完美去除水印

    网上下载的 pdf 学习资料有一些会带有水印,非常影响阅读.比如下面的图片就是在 pdf 文件上截取出来的. 安装模块 PIL:Python Imaging Library 是 python 上非常强 ...

  2. python eel 多线程_利用Eel使JavaScript调用Python程序

    利用Eel使JavaScript调用Python程序 Eel简介 Eel是一个轻量的python桌面GUI开发第三方库, 它使用HTML/JS作为界面开发语言, 但是能够访问所有的python功能, ...

  3. 怎么用python找论文_如何利用Python绘制学术论文图表方法

    论文中图表形式多样,常用的处理工具有excel.MATLAB以及Python等,excel自处理的方法有两个缺陷: 1.当数据较多时,容易出现excel"翻白眼"的现象: 2.需要 ...

  4. NLP实战:利用Python理解、分析和生成文本 | 赠书

    导读:本文内容参考自<自然语言处理实战:利用Python理解.分析和生成文本>一书,由Hobson Lane等人所著. 本书是介绍自然语言处理(NLP)和深度学习的实战书.NLP已成为深度 ...

  5. python个人博客搭建说明书_技术分享|利用Python Django一步步搭建个人博客(二)...

    原标题:技术分享|利用Python Django一步步搭建个人博客(二) Hello,欢迎来到我们的"利用Python Django一步步搭建个人博客"系列的第二部分.在第一部分中 ...

  6. python对数据进行合并的函数_利用Python pandas对Excel进行合并的方法示例

    前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...

  7. python绘制动态模拟图-如何利用Python动态模拟太阳系运转

    前言 提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周 ...

  8. python推荐系统-利用python构建一个简单的推荐系统

    摘要: 快利用python构建一个属于你自己的推荐系统吧,手把手教学,够简单够酷炫. 本文将利用python构建一个简单的推荐系统,在此之前读者需要对pandas和numpy等数据分析包有所了解. 什 ...

  9. python怎么判断一个文件是否存在-利用Python如何判断一个文件是否存在

    通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try ...

最新文章

  1. CG游戏道具全流程制作视频教程 Artstation – Stylized Game Asset
  2. 用户表单事件(focus事件)
  3. 你真的了解try{ return }finally{}中的return?
  4. 推荐一个妹子,播报汽车新闻
  5. ie9 background 不显示
  6. 使用X.509数字证书加密解密实务(一)-- 证书的获得和管理
  7. JavaScript将负数转换为正数
  8. 如何利用SQL Server的事务日志?
  9. 【转】el-cascade设置默认值遇到的坑!
  10. 报销金额数字小写转大写 总结
  11. 电子名片帮助实体服装产业快速融入互联网
  12. vue 下载文档乱码
  13. 航天信息服务器共享单元,防伪税控主机共享服务器
  14. 流年似水 启航2019
  15. 考研英语 - word-list-26
  16. SPSS与对应分析(类别简单型)
  17. win10系统连打印机服务器中,win10连不上打印机怎么回事_win10系统连接不上打印机如何解决...
  18. 脑机接口技术的现状与未来!
  19. Flutter Web(一)新建项目和登录页
  20. SCI论文,你是先写中文再翻译么?

热门文章

  1. 为什么使用React作为云平台的前端框架(PPT)
  2. 【我的OpenGL学习进阶之旅】计算机视觉 (CV) 、 计算机图形学 (CG) 以及图像处理(DIP)
  3. uni-app常见问题以及解决方案
  4. Excel添加宏之 大写字母前加空格
  5. 神经注意力蒸馏NAD
  6. Nginx学习部署环境(一)
  7. 提供三块Python爬虫代码学习
  8. LocalDate 年月日api
  9. 短视频运营技巧,掌握这五点你的视频也可以火爆
  10. 电路中滤波电容和退耦电容_带你学习退耦电容的PCB布局