程序员福音?用Python数据分析教你做投资,巴菲特不会的你会

简介:   Pyhton可以用来做金融量化投资分析。  探讨问题与分析思路  本文以Python为量化工具,主要探讨以下三个问题:  (1)指数定投的优势与劣势在哪?  (2)指数定投受哪些因素影响,是不是时间越长越好?  (3)指数定投策略如何优化?  编程软件:基于Python3.7的Jupyter Notebook,使用到的库包括numpy、pandas、matplotlib、pyecharts和tushare等。

  Pyhton可以用来做金融量化投资分析。

  探讨问题与分析思路

  本文以Python为量化工具,主要探讨以下三个问题:

  (1)指数定投的优势与劣势在哪?

  (2)指数定投受哪些因素影响,是不是时间越长越好?

  (3)指数定投策略如何优化?

  编程软件:基于Python3.7的Jupyter Notebook,使用到的库包括numpy、pandas、matplotlib、pyecharts和tushare等。

  数据来源:使用tushare pro开源包获取上证指数、深证指数、沪深300、上证50、中小板和创业板1991-2021年数据,其中中小板和创业板是2011年-2021年数据。

  01国内指数价格走势

  首先,对A股几个常用的指数历史走势进行可视化分析,直观反映不同期间股价涨跌情况,其次,计算各期间股指的累计收益率,为后面的指数定投对比分析做铺垫。

  各指数自上市交易以来累计收益率情况:区间拉长,各有千秋。

  牛市区间累计收益率情况:'2013-01-01':'2021-06-12':牛市来了,创业板身板轻,飞得更高(摔下来也疼)。

  倒V形区间收益率情况:'2011-01-01':'2021-12-24':辛辛苦苦八九年,最后回到解放前。

  2021年以来累计收益率:'2021-01-01':'2021-12-24'。怎一个“惨”字了得,中小板跌到妈都不认得。

  各指数自上市以来累计收益率和年化平均收益率:上证综指自1990年12月以来累计收益率达到322.98%,但是几何年平均收益率也只有5.29%,低于中证500、沪深300和中小板指。

  02指数定投策略

  指数定投策略:即每月于固定日期使用固定金额投资指数基金。如将每月月初发的工资3000元用于投资指数基金。

  下面运用Python定义指数定投的回测函数,假定无风险理财产品收益率为4%(假设而已),每月月初(或者月末)定投3000元购买指数基金,计算各期间累计收益率和累计定投资金。先来看第一个问题,指数定投在什么情况下优于一次性投资以及无风险理财(银行定期存款)呢?

  微笑曲线(V或W形态):不难理解,指数定投的优势在于规避择时,不怕踩坑,通过长期定额投资分摊成本,当股指呈微笑形走势的时候,一定是优于一次性投资的,但是否能获得较高回报,还得看右侧回升的幅度大小。如选取区间2007年10月17日至2021年6月12日,该期间是股指自1990年以来的历史高点6124点开始下跌,然后反弹至5178点,即假设你运气碰巧那么差,在最高点当接盘侠,然后每个月继续傻乎乎的补仓,然后终于运气来了,在2021年高点全部清仓。如下图所示,如果你在高点一次性买入然后长期持有,期间累计收益率是-16.48%,而定投的累计收益率却高达101.03%(每月月初投入),无风险理财的期间累计收益率也只有16.28%。

  小微曲线:上图选择的“微笑曲线”很优美,刚好是股指两头高(右侧高才是关键),中间低,因此通过每月定投不断分摊长期成本,获得超额收益率。那如果右侧不是很高呢?再来看另一个区间,2007年10月17日(6124高点)至2009年07月20日(3333低点),如下图所示,区间累计收益率为-62.31%(佛性),理财累计收益率3.62%,每月月初定投的累计收益率仍然有15.64%(每月月底定投是17.96%,其实统计分析二者并无显著差异)。可见,一次性买入长期持有策略对择时的要求非常高,一旦踩了坑(高点接盘),将很难翻身,而长期定投策略则规避了择时的困扰,在股指短期波动向下,中长期向上反弹的走势中优势凸显。

  难过曲线(倒V或M形态):有微笑曲线,当然也有难过曲线。正所谓,有阴必有阳,有涨必有跌,有得必有失。什么情况下定投指数策略处于劣势呢?将回测区间拉长,考察指数从低点-高点-低点、经历两次大的牛熊转换时,指数定投策略的累计收益率情况。如下图所示,选取区间2006年10月01日(2000多点)至2021年12月24日(2000多点),相当于经过了12年多,股指差不多又回到起点。一次性买入期间累计收益率为36.6%,理财定投累计收益率为27.63%,但是指数定投累计收益率却为-7.39%(-7.46%),可见,指数定投并非时间越长越好,也并非一直比一次性买入持有策略好。

  单边牛市:即起点为最低点,终点为最高点。选取区间2014年07月1日至2021年06月12日进行回测。如下图所示,一次性投入并持有的策略明显优于定投策略。二手买卖平台通过上述分析,不难发现,一次性买入并持有策略对择时要求非常高,即同时在买点和卖点精准把握才能获取超额收益率,而定投指数策略对买点并无要求,但要求卖点出现在右侧才能获取超额收益。换句话说,指数定投并非毫无目的的一直做长期定额投资,而是要结合一些择时指标判断拐点进行“止盈”,才能获取较高的累计收益率。

  03其他指数情况

  股票指数是反映股票市场总的价格水平变化的指标。一般是选取有代表性的一组股票,采取价格加权平均计算得到。各种指数具体的股票选取和计算方法是不同的,只看单一股票指数可能难以反映总体情况。下面对照分析上证指数、深证指数、沪深300、上证50、中小板和创业板指数,由于创业板是2010年才推出,因此下面的分析主要考察2011年-2021年区间。

  单边牛市:考察期间2014年07月01日至2021年06月12日,创业板定投累计收益率最高,达到124.3%,并且定投累计收益率居然高于一次性投入的累计收益率;而上证50定投累计收益率最低,只有63.22%。

  倒V形(右侧高于左侧):考察区间2011年08月01日至2021年12月24日,创业板累计收益率仍然是最高的,除了创业板外,指数定投策略的收益率均高于一次性投入持有策略。

  难过曲线:考察期间2011年08月01日至2021年12月24日,该区间内,上证综指、深证成指、中证500和中小板指累计收益率均出现了负数,但定投策略亏损较少,其他几个指数仍有正的收益率,除创业板外,指数定投策略仍然优于一次性投入持有策略。

  单边下行:考察期间2021年06月12日至2021年12月24日,毫无疑问,单边下行的时候,定投不断分摊了长期成本,累计亏损率要低于一次性投入。此外,单边下行的时候,期间内创业板累计跌幅是最大的,正所谓风水轮流转,山水有相逢。

  2021年情况:2021年国内外形势云诡波谲,内外夹击,经济持续下行,股票市场首当其冲,各大指数均出现了大幅下跌,股民怨声载道。年初至今,中小板累计亏损高达45.12%(定投:-24.66%)。可见,起风的时候,身子轻的猪可以飞得更高,但摔下来的时候也更惨!

  通过上述分析,不难看出指数定投的优势与劣势,以及什么条件下可以获得较好的累计收益率。但是数据仅供参考、分析,并不能成为投资的唯一依据。所以,规避风险,谨慎投资...

  小编这里有整理一些关于Python的学习资料,从基础到入门到项目实战都有。需要的可以关注并私信“01”免费领取

目录
相关文章
|
6天前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名
【4月更文挑战第22天】Pandas Python库提供数据排序和排名功能。使用`sort_values()`按列进行升序或降序排序,如`df.sort_values(by='A', ascending=False)`。`rank()`函数用于计算排名,如`df['A'].rank(ascending=False)`。多列操作可传入列名列表,如`df.sort_values(by=['A', 'B'], ascending=[True, False])`和分别对'A'、'B'列排名。
18 2
|
4天前
|
机器学习/深度学习 数据挖掘 网络架构
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
15 0
|
5天前
|
机器学习/深度学习 算法 数据挖掘
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-2
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
28 1
|
2天前
|
机器学习/深度学习 存储 监控
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
11 0
|
4天前
|
机器学习/深度学习 算法 算法框架/工具
数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
26 0
|
1天前
|
新零售 分布式计算 数据可视化
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
|
2天前
|
JSON 数据挖掘 数据库
Python复合型数据避坑指南
Python复合型数据避坑指南
11 3
|
2天前
|
机器学习/深度学习 数据采集 算法
Python信贷风控模型:Adaboost,XGBoost,SGD, SVC,随机森林, KNN预测信贷违约支付|数据分享
Python信贷风控模型:Adaboost,XGBoost,SGD, SVC,随机森林, KNN预测信贷违约支付|数据分享
10 1
Python信贷风控模型:Adaboost,XGBoost,SGD, SVC,随机森林, KNN预测信贷违约支付|数据分享
|
3天前
|
JSON 数据可视化 定位技术
python_将包含汉字的字典数据写入json(将datav的全省数据中的贵州区域数据取出来)
python_将包含汉字的字典数据写入json(将datav的全省数据中的贵州区域数据取出来)
8 0
|
3天前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
【4月更文挑战第25天】R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。