趋势性动量策略有效性验证及实现

  • 1相关性验证
  • 2策略概要
  • 3其他回测结果
  • 其他量化策略

1相关性验证

  1. 选取上证指数000001.SH,获取收盘价
  2. 以50为单位,计算每个55天的收益序列。
  3. 使用shift(1),获得滞后一个时间段(50天)的时间序列数据。
  4. 使用df.corr()计算相关性
  5. 代码如下

运行此代码,需获取token码,这里获取token码

# coding=utf-8
import math
import tushare as ts
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import talib
import pandas as pd
from datetime import datetime, date
matplotlib.rcParams['axes.unicode_minus']=False
plt.rcParams['font.sans-serif']=['SimHei']
ts.set_token('token码')
pro = ts.pro_api()
#读取数据
start_time='20060931'
end_time="20200931"
#dsc1 = pro.index_daily(ts_code='000300.SH', start_date=start_time,end_date=end_time,fields='ts_code,trade_date,close')
#dsp = pro.index_daily(ts_code='NHCI.NH', start_date=start_time, end_date=end_time,fields='ts_code,trade_date,close')
dsb = pro.index_daily(ts_code='000001.SH', start_date=start_time, end_date=end_time)
dsb.open=0
dsb=dsb.sort_index(ascending=False)
dsb.index=pd.to_datetime(dsb.trade_date,format="%Y-%m-%d")
T= 55
for i in range( math.floor(len(dsb)/T)-1):dsb.open[(i+1)*T]=dsb.close[(i+1)*T]-dsb.close[i*T]
DF=dsb[dsb.open!=0].open
DF=pd.DataFrame(DF)
DF=DF.rename(columns={"open":"close_change"})
DD=DF.shift(1)
DD=pd.DataFrame(DD)
DD=DD.rename( columns={ "close_change":"close_change_shift1" }  )
DF1=pd.concat([DF,DD],axis=1)  #月度数据
print(DF1.dropna().corr())

输出

                     close_change  close_change_shift1
close_change             1.000000             0.416991
close_change_shift1      0.416991             1.000000

具有正相关性

2策略概要

  1. 由于滞后一期与本身存在正相关性,因此可以根据上一个时期的股价变动,在接下来的一个时期做出信号判断
  2. if 上一时期股价变动 Δ t − 1 \Delta_{t-1} Δt−1​>0,则买入。。否则买入债券、或融券卖出等操作,这里就用做空吧。毕竟考虑交易费用
  3. 计算组合收益情况等
# coding=utf-8
import math
import tushare as ts
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import talib
import pandas as pd
from datetime import datetime, date
matplotlib.rcParams['axes.unicode_minus']=False
plt.rcParams['font.sans-serif']=['SimHei']
ts.set_token('输入token码')
pro = ts.pro_api()
start_time='20060204'
end_time="20200428"
dsc1 = pro.index_daily(ts_code='000300.SH', start_date=start_time, end_date=end_time,fields='ts_code,trade_date,close')
dc=dsc1.set_index(dsc1.trade_date).sort_index(ascending=True)
dc.index=pd.to_datetime(dc.index,format="%Y-%m-%d" )
ret=(dc.close-dc.close.shift(1))/dc.close.shift(1)
ret=ret.sort_index(ascending=True)T=55###############################信号判断#######################################
sig=pd.Series(0,index=dc.index)
for i in range( math.floor(len(ret)/T)-2):if dc.close[(1+i)*T]>dc.close[i*T]+50:for j in range((i+1)*T+1,(i+2)*T+1):sig[j]=1
sig=sig.tail(len(sig)-T)
RET=ret*sig
cum=np.cumprod(RET+1).dropna()
#############################策略的年化统计######################################
def Tongji(cum):cum=cum.sort_index()NH=(cum[-1]-1)*100*252/len(cum.index)BD=np.std(np.log(cum/cum.shift(-1)))*np.sqrt(252)*100SR=(NH-4)/BDreturn_list=cumMHC=((np.maximum.accumulate(return_list) - return_list) / np.maximum.accumulate(return_list)).max()*100print("年化收益率:{:.2f}%:,年化夏普率:{:.2f},波动率为:{:.2f}%,最大回撤:{:.2f}%".format( NH,SR,BD,MHC))
############################################################################
JZ=dc.close.tail(len(cum))/dc.close.tail(len(cum))[0]#上证指数净值if __name__=="__main__":print("组合策略:")Tongji(cum)print("直接持有:")Tongji(JZ)plt.plot(JZ,label="000001.SH",color='b',linestyle='-')plt.plot(cum,label="策略",color='r',linestyle='-')plt.title("净值走势")plt.legend()

结果:

组合策略:
年化收益率:38.38%:,年化夏普率:1.72,波动率为:19.96%,最大回撤:45.97%
直接持有:
年化收益率:17.50%:,年化夏普率:0.48,波动率为:28.01%,最大回撤:72.30%

3其他回测结果


其他量化策略

1.python量化——alpha股票-指数期货对冲策略
2.多因子选股策略
3.海龟交易策略
4.移动平均策略——单/双均线策略
5.改进的美林时钟(介绍)
6.改进的美林时钟策略(一)
7.改进的美林时钟策略(二)
8.改进的美林时钟策略(三)
9.F-F三因子(改进代码+结果)
10.移动波动率策略

python量化策略——最简单的动量策略,简单趋势追踪策略相关推荐

  1. Python 量化投资实战教程(3) —A股回测MACD策略

    量化投资系列文章: Backtrader 教程 - Python 量化投资实战教程(1) Python 量化投资实战教程(2) -MACD策略(+26.9%) Python 量化投资实战教程(3) - ...

  2. 一位良心操盘手重磅推荐:MACD趋势追踪策略

    来源: 汇商琅琊榜 原文连接:https://mp.weixin.qq.com/s/WqfuhRMJ7zeqlBjBWOuSZw MACD趋势跟踪策略是实用的趋势跟踪策略之一.MACD指标是用来衡量移 ...

  3. 深入浅出Python量化交易实战--第2章 回测与经典策略(下)

    2.3 经典策略之海龟策略 说起经典的交易策略,就不得不提到"海龟策略"--一个20世纪80 年代提出的,以海龟交易法则为核心的交易策略.其核心要点是:在股 价超过过去N个交易日的 ...

  4. python量化回测结果分析53课_#滑动平均策略——python回测结果 (中山大学岭南学院量化投资协会)...

    策略如下: 回测区间为2016年10月10日至2017年10月13日,选择沪深300进行回测. 记录所有当天5日滑动平均价格高于20日滑动平均价格的股票 将总资金额的一半n/2用于买入股票,每一支股票 ...

  5. 金融量化-基于K线形态锤子线的趋势跟踪策略

    1.基本原理 1.1 K线部位定义: 实体:某一根K线开盘价和收盘价之间部分; 上影线:某一根K线最高价到实体上端的部分; 下影线:某一根K线最低价到实体下端的部分; 1.2 锤子线定义 实体处于整个 ...

  6. 5月24日趋势追踪策略分析股票

    免责声明:本文资讯及行情数据分析仅作参考,不构成操作建议,据此操作风险自担.股市有风险,投资需谨慎! 一.上个交易日盘面分析: 1.资金攻击路径: 老创投(市北高新)→国产系统(湘邮科技)→华为(实达 ...

  7. python海龟交易策略_【手把手教你】用Python量化海龟交易法则 - 简书

    下面使用简化版的海龟交易法则进行历史回测,即不考虑仓位管理和动态止损/止盈条件,以唐奇安通道突破作为买入卖出信号. 交易规则为: (1)当今天的收盘价,大于过去20个交易日中的最高价时,以收盘价买入: ...

  8. Python 量化投资实战教程(4) —KDJ 策略

    量化投资系列文章: Backtrader 教程 - Python 量化投资实战教程(1) Python 量化投资实战教程(2) -MACD策略(+26.9%) Python 量化投资实战教程(3) - ...

  9. Python 量化投资实战教程(2) —MACD策略(+26.9%)

    量化投资系列文章: Backtrader 教程 - Python 量化投资实战教程(1) Python 量化投资实战教程(2) -MACD策略(+26.9%) Python 量化投资实战教程(3) - ...

最新文章

  1. asp.net夜话之九:验证控件(上)
  2. 消息中间件—RabbitMQ(集群原理与搭建篇)
  3. VTK:隐藏线移除用法实战
  4. 使用C++实现多张BMP图片转换为YUV动画----附加淡入淡出转场(逐渐变明变暗),及垂直滑像转场(逐行渐变)
  5. ucos-ii在ARM7上移植
  6. PHP提取字符串中的数字
  7. 工厂模式 构建者模式_实践中的构建者模式
  8. Stacktraces告诉了事实。 但事实并非如此。
  9. 华为oj----iNOC产品部-杨辉三角的变形 .
  10. 算法的优缺点_朴素贝叶斯算法的优缺点
  11. 自定判断代码的执行环境
  12. ENVI5.3.1使用Landsat 8影像进行图像融合
  13. python一行输出_#python版一行内容分行输出
  14. php怎么自动识别车牌号,车牌号自动识别系统怎么录入,很多你不知道的潜规则...
  15. AI人工智能+区块链+物联网+大数据可视化平台建设综合解决方案
  16. 笔记——数据归一化 scikit-learn中的Scaler
  17. Epub格式电子书格式解析
  18. JS实现双人五子棋简易游戏(上)
  19. python人脸识别实验报告总结_人脸识别实验报告.doc
  20. 七:对微服务配置中心的理解

热门文章

  1. 新闻发布系统html,【HTML】-常用标记-新闻发布系统_html/css_WEB-ITnose
  2. 【转】蓝牙通信-打开和关闭蓝牙设备
  3. 【论文笔记】投影仪-相机系统标定方法
  4. 常用spaceclaim脚本(二)
  5. 四大私募量化策略解析——阿尔法、套利、期货CTA、高频交易
  6. 操作系统安装和u盘认识
  7. 仿淘宝图片空间 点击文字 出现可编辑文本框 提交ajax数据到后台修改
  8. 系统定制封装-windows
  9. 谷歌新大招UDG|直接生成训练数据送给你
  10. eflv2 android攻略,USM 1.5.2_ISO全能维护版(03pe+win8pe_x64全能,u+v2高端隐藏,EFI)