基于Python的指数基金量化投资 - 指数投资技巧(三)不定期定额

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

指数投资方式中有四种基本的方法,分别是定期定额、定期不定额、不定期定额和不定期不定额,这四种方式投资效果不同,对投资者的要求也不同,定期定额最简单,但收益不算高,不定期不定额最复杂,对投资者的要求最高,特别是对情绪的要求非常高,同时收益也是最好的。

在上一篇《基于Python的指数基金量化投资- 指数投资技巧(二)定期不定额》中已经介绍了定期不定额的方式,这里接着介绍第三种不定期定额的情况和具体的量化过程。

不定期定额的方式和前面介绍的定期定额、定期不定额有着本质的区别,定期定额和定期不定额都是固定时间进行投资,而不定期定额投资的时间是不定的,要根据具体的指数估值进行,例如当指数的估值百分位低于某一个阈值,比如30%的时候,就会启动投资,如果一直低于该阈值,则采用类似定投的方式,按日、按周或者按月进行,一般采用按周的方式;如果估值高于该阈值则立即停止投资,直到指数估值再次落入该阈值范围内后会再次启动投资。

这里以沪深300指数进行举例说明,当沪深300指数的估值百分位低于某个阈值,这里以30%作为例子,当低于该阈值后,则开始进行沪深300的投资,每次投入的资金是等量的,同时按周进行投入,只要沪深300当下的估值百分位不高于30%,则一直执行该操作,如果沪深300的估值百分位高于30%则停止投资。

这种方式的好处是能在低位积累更多的筹码,让投资都集中在底部,但对投资的耐心有一定的要求,比如等待指数进行击球区,同时上涨超过该阈值后不进行追高,这两方面都是有点反人性的,所以不定期定额在实际投资过程中会比前面介绍的定期定额、定期不定额更难。

下面通过用中证全指的数据进行量化测试来看看具体的过程。

具体的策略是下面的三个条件:

1)估值百分位低于30%则启动投资;

2)投资按周进行;

3)每次买入1000元;

4)当估值高于80%时全仓卖出;

通过这种方式可以得到下面的量化结果。

在这里插入图片描述

图中上半部分蓝线是指数走势,红点是按估值百分位低于30%并按周投资的位置,每次投资的数额是是一样的;而几个紫色的点表示估值高于80%卖出的位置。

下半部分的图表示总资产、已投入资金和持有基金份额,其中红线时总资产,蓝线是已投入资金,橙线是持有基金份额。开始阶段不断买入持有份额和总资产是重合的,随着买入的增多同时指数上涨,红线橙线逐步高于蓝线,当估值超过预设的门限,则投入的资金暂停,蓝线也不再增长,在2015年初左右估值高于80%则卖出,可以看见橙线变为0,也就是全仓卖出,然后红线、蓝线和橙线持续保持了一段时间的水平走势,也就是这区间没有任何投入,资产、资金和份额都没有变化,接下来在2018年左右又开始进行投资,在2020年底左右卖出。

最后可以看出投入的资金是144000元,整体资产是25148.39,收益是74.62%,比定期定额和定期不定额的收益高出了不少。

在接下来最后一篇的不定期不定额会和大家分享最后一种投资方式,这种方式的投资效果最好,但也最考验投资者。

源码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import math as math

name_index = 'lxr_1000002'
name_index_g = 'g_lxr'
all_data_index = pd.read_csv('./exportfile/indexDataAll/' + name_index + '.csv')
all_data_index_g = pd.read_csv('./importfile/indexSeries/indexValuation/g/' + name_index_g + '.csv')

calc_range = 2500
calc_gap = 5
data_index_p = all_data_index['close'].values[len(all_data_index['close']) - calc_range:len(all_data_index['close']):calc_gap]
data_index_g = all_data_index_g['pe'].values[len(all_data_index_g['pe']) - calc_range:len(all_data_index_g['pe']):calc_gap]
val_percentage_list = list()

sell_flag_no_regular_quota = 0


def NoRegularQuota(val_percentage, val_data_p, buy_cnt, buy_total_share):
    global sell_flag_no_regular_quota
    if val_percentage <= 0.3:
        sell_flag_no_regular_quota = 0
        buy_each_no_regular_quota = 1000
        buy_each_share = buy_each_no_regular_quota / val_data_p
        buy_total_share = buy_total_share + buy_each_share
        buy_cnt = buy_cnt + 1
        plot_y = val_data_p
        plot_x = i
        plot_flag = 1
    elif val_percentage >= 0.8 and sell_flag_no_regular_quota == 0:
        sell_flag_no_regular_quota = 1
        buy_each_share = -buy_total_share
        buy_total_share = 0
        plot_y = val_data_p
        plot_x = i
        plot_flag = -1
    else:
        buy_each_share = 0
        plot_y = val_data_p
        plot_x = i
        plot_flag = 0

    return buy_each_share, buy_cnt, [plot_flag
基于Python指数基金量化投资 - 微笑曲线 什么是微笑曲线 什么是微笑曲线,顾名思义,这条曲线看起来像微笑的样子,像人开心时微笑的嘴唇。 这只是它表面的意思,更深层次的意思是进行左侧交易,在指数左侧下跌的过程中断的买入,当进入右侧指数上升的过程中会有同程度的收益。 先来分析下微笑曲线是怎么给我们带来收益的。 左侧下跌过程中断买入会摊薄我们的投资成本,右侧上涨过程中达到一定阶段就会产生正收益。上面图中的例子,从1开始买入一份,接下来0.78、0.65、0.52、0.47、0.52、0.65、0.78、1各买入一份,一共买入9份,当买到第8份 阅读详情

相关推荐

量化交易:止盈策略与回测

用代码表示大跌时买入,达到目标收益率时清仓,并回测输出收益率。

Sukey666666的博客 3136

python实现基金定投并可视化结果(及时止损)

1.什么是指数基金 2.什么是基金定投 3.本次数据来源 4.作出假设 每周定投一次,每次定投500,计算2019年对沪深300指数基金进行定投的收益率 每周定投一次,每次定投500,分别计算从2002年开始到2019年,每年定投沪深300指数基金的收益率 5.改变定投策略,获得更好的收益(以2018和2019的平均收益率分析) 改变定投周期(月一次定投) 改变定投金额(设置投入资金固定比例) 及时止损(资金最大时收盘) 1.什么是指数基金 股票指数是指按照一定的规则所选择的股票的平均值。比如: 上证50指数:就是把上海证券交易所规模最大、流动性最好的50家公司的股票统计起来的股票平均值。

基于Python指数基金量化投资 - 指数投资技巧(二)定期定额

指数投资方式中有四种基本的方法,分别是定期定额、定期定额不定期定额不定期定额。本篇介绍定期定额

SocratesNietzsche的博客 2552

Python 量化分析ETF指数基金投资

数据获取

oqqdake12的博客 9866

Python写一个红利低波ETF网格策略回测

【代码】用Python写一个红利低波ETF网格策略回测。

Irenewhere的博客 2427

运用Python分析公募基金量化投资

对于基金的收益,仅仅看收益率曲线,获得的评价较为主观,要客观比较收益的好坏,还要借助指标,比如:年化收益率、最大回撤等,更加复杂的还有夏普比率、Jensen指数等,需要的评价指标加入一下自定义的函数strategy_evaluate()即可。此处的分析作为分析的一个框架,可以添加更多的有趣的研究内容,比如:对基金的收益数据可以计算其期望,方差,峰度,偏度等指标,对收益率也可以计算夏普比率等指标。为了能够在以后的研究中,方便调用绘画收益率曲线的函数,我们新建一个专门存放自建函数的文档,将函数保存。

weixin_69999177的博客 1994

基于Python指数基金量化投资-股票数据源baostock

基于Python指数基金量化投资-股票数据源baostock课程参考:[基于Python量化指数基金投资](https://study.163.com/course/courseMain.htm?courseId=1211246807&share=2&shareId=480000002244487)微信公众号: 课程参考:基于Python量化指数基金投资 微信公众号: 量化用到的数据源来自baostock,可以通过www.baostock.com网址进行访问,它是一个免费、开源的证券

SocratesNietzsche的博客 4326

基于Python指数基金量化投资——指数基金估值榜

前面介绍过《基于Python指数基金量化投资-通过市盈率和市净率对指数估值》,通过估值来进行指数基金投资。 当估值百分位为90%-100%的时候,指数处于严重高估状态,可以考虑全仓卖出; 当估值百分位为80%-90%的时候,指数处于高估状态,可以考虑大份额卖出; 当估值百分位为60%-80%的时候,指数处于正常偏高状态,可以考虑小份额卖出; 当估值百分位为40%-60%的时候,指数处于正常状态,可以考虑持有; 当估值百分位为20%-40%的时候,指数处于正常偏低状态,可以考虑小份额定投; 当估值百分位

SocratesNietzsche的博客 2583

基于Python指数基金量化投资 -角和倒投资模型

普通投资者的投资方式中,有两种非常常见: 追涨杀跌式:涨了跟着买,跌了赶紧卖。 低买高卖式:跌了就买入,涨了就卖出。 第一种方式长期来看肯定是要亏钱的,长期追高难免站岗,而第二种方式是比较正确的投资方式,但低买高卖要根据固定的指标来进行量化才能形成有效的模式。 如果把这两种投资方式进行量化,第一种称为倒投资模式,第二种称为正角模式。 下面举两个例子来说明两种模式的差别(下面每一份代表买入1000元)。 倒角模式就是指数高位的时候买得多,越高买得越多,而低位的时候买得少,越低买得越少,最后份额累积

SocratesNietzsche的博客 3988

基于Python指数基金量化投资 - 指数投资技巧(一)定期定额

指数投资方式中有四种基本的方法,分别是定期定额、定期定额不定期定额不定期定额,这四种方式投资效果同,对投资者的要求也同,定期定额最简单,但收益算高,不定期定额最复杂,对投资者的要求最高,特别是对情绪的要求非常高,同时收益也是最好的。 这里先介绍第一种定期定额的情况,下面会通过量化的过程来反应投资的整体过程。 定期定额就是按日、按周或者按月进行投资,每次投资的资金是一样的,比如每周买入1000块的沪深300基金,这种方式是指数涨跌,到点就买; 假设每次投入的资金是1000块,按周定投,下面

SocratesNietzsche的博客 649

基于Python指数基金量化投资-为什么量化指数基金投资

进行指数基金投资我们需要清楚几个关键点:该投资哪些指数品种,为什么投资这些品种、这些品种目前处于什么状态、是该买入还是该卖出和整体市场的情况。 这些关键点会在很大程度上决定投资者的投资成果,举个简单例子:如果投资者在市场处于高估甚至极度高估的情况下买入的话,接下来投资面临的可能是大幅度的亏损。 很多投资者明明知道市场和投资指数估值都很高,为什么还要买入?因为市场处于牛市,整个市场非常的火爆,赚钱效应很高。在这种情况下如果没有估值来进行锚定,是很难控制住情绪进行交易的。 所以指数

SocratesNietzsche的博客 700

基于Python指数基金量化投资——指数基金间相关度计算

每一种指数基金都是由一篮子股票组成的,少的有几十个成分股,多的有几百上千个成分股,而整个A股目前有四千多家上市公司,每种指数基金都从A股这个大篮子里面选取成分股,那就会有个问题,同的指数基金选择的成分股会有重叠,重叠度是多少,这是一个很重要的指标。 从投资的角度来看,一定程度的分散覆盖度更好,同时抗非系统风险能力也会更强,但如果太分散也好,过度分散和买下整个A股没有什么区别,投资收益也会变低。 举个例子,如果指数A包含100个成分股,指数B也包含100个成分股,但他们有50个成分股是相同的,考虑权重影

SocratesNietzsche的博客 1478

基于Python指数基金量化投资——指数基金偏离度计算

什么是指数偏离度 它是指数涨跌的快慢和偏离幅度指标。 当指数快速上涨,偏离度数据会迅速的向上偏离,当快速下跌时,偏离度数据会迅速的向下偏离。 而持续的上涨中出现下跌,偏离度就会急转直下,另一种持续的下跌中出现上涨,偏离度就会迅速上升。 指数偏离度的计算公式:100% × (当日指数 - N日平均指数) / N日平均指数; 其中N可以取5、10、20、30、60等值,就能反映出多少日的偏离度情况。数值越小反映的结果越趋近于瞬时变化,而数值越大反映的结果趋近于于平均变化。 指数偏离度反映的特征 下面是沪深

SocratesNietzsche的博客 1万+

基于Python指数基金量化投资-通过市盈率和市净率对指数估值

投资指数基金,最简单也最实用的策略就是便宜的时候买入,昂贵的时候卖出,那怎么判断目前指数基金是否便宜?就会通过估值来进行判断,估值包含两个指标,一个是市盈率,另外一个是市净率,通过计算市盈率或者市净率的历史百分位就可以得到指数基金的估值情况,从而根据具体的估值点位来进行投资。 像宽基指数,沪深300、中证500、上证50、中证100等都用市盈率进行估值,而像中证银行和证券公司就要用到市净率进行估值,因为对于金融业来说,货币反而是产品,通过市盈率进行估值就会失真,所以需要用市净率。 下面通过创..

SocratesNietzsche的博客 2681

基于Python指数基金量化投资 - 通过指数估值榜进行指数投资

前面介绍过针对每一个单独的指数,可以通过市盈率和市净率的计算获得指数的估值百分位,从而进行相应的投资(《基于Python指数基金量化投资 - 通过市盈率和市净率对指数估值》)。 这里介绍一个可以把所有指数估值信息进行汇总的方式:指数估值榜,这样可以直观的看出所有指数的估值点位,从整体上来进行选择,而是一个指数一个指数的筛选,更加高效和便捷。 图中标示出了大部分目前的主流指数,纵坐标的单位是0%到100%,然后通过同的背景颜色对估值高低进行区分,从上到下分为7个颜色区间,从红色过度绿..

SocratesNietzsche的博客 1045

基于Python指数基金量化投资——指数数据获取

基金量化,最最重要的是要有数据,所以指数的数据是所有分析的源头。 Baostock就提供比较全面的指数数据,具体可以参考《基于Python指数基金量化投资 - 股票数据源baostock》。 指数数据也提供了相应的接口可供调取,通过API接口获取指数(综合指数、规模指数、一级行业指数、二级行业指数策略指数、成长指数、价值指数、主题指数)K线数据,用户可以指定起始日期和截至日期。 调用的参数包含5个参数,code, fields, start, end, frequency,分别表示股票代码、返回包含

SocratesNietzsche的博客 2847

基于Python指数基金量化投资 - 指数的市盈率和市净率计算

上一篇《基于Python指数基金量化投资 - 通过市盈率和市净率对指数估值》介绍了通过市盈率和市净率对指数进行估值,然后结合具体的估值百分位来进行投资。所以指数的市盈率和市净率是两个非常重要的指标。 这里就会有个问题,指数的市盈率和市净率怎么进行计算,指数像个股,个股的市盈率计算起来比较简单: 同样个股的市净率计算也比较简单: 而指数是一篮子股票,例如沪深300就包含了300家上市公司,中证500包含了500家上市公司,上证50包含了50家上市公司,所以指数是一个上市公司的集合..

SocratesNietzsche的博客 1797

量化投资工具】抓取沪深股市所有指数关联的公募基金列表(含ETF、增强、分级等)

转载请注明公众号:结丹记事本儿,关注后获取更多懒人投资工具。 摘要 当我们看中某些个指数时,第一步就是挑选对应的指数基金,那么如何知道指数对应的ETF基金、增强基金以及其他跟踪该指数的公募基金呢?再进一步,如果有基金的经理人、规模、年化、Alpha和Beta、误差率等信息,是是就能用excel筛选功能快速决策?本文用20行代码即可实现该功能,数据文件和代码附在文末。 数据样例 如何使用 筛选指数代码 过滤IndexTicker和IndexName 筛选规模较大的基金 筛选跟踪误差较小的基金 .

Py Sky 2420
上一篇: 基于Python的指数基金量化投资 - 指数投资技巧(二)定期不定额
小将前行
博客等级 码龄8年 36粉丝 · 21原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值