什么是动量效应和动量交易策略?

动量效应是指过去收益较高的资产,在未来一段时间内仍获得较高的收益,过去收益较低的资产在未来仍获得较低的收益。对于动量效应现象的解释,传统金融学认为,动量效应的存在并不是市场无效的证据,并试图从理性风险补偿这一角度对其进行解释;而行为金融学认为动量效应是由投资者的非理性行为和反应不足影响的。虽然两种学说的理论依据有所不同,但都从不同方面解释了动量效应的存在,这为动量效应的研究奠定了理论基础,也为投资者寻找套利机会提供了依据。

1. 引库

import numpy as np
import pandas as pd
import tushare as ts
import matplotlib.pyplot as plt
import seaborn
plt.style.use('seaborn')
import matplotlib as mpl
%matplotlib inline
mpl.rcParams['font.family'] = 'serif'
import warnings; warnings.simplefilter('ignore')     # 忽略警告信息

2. 数据准备 & 回测准备

# tushare 获取沪深300股票数据
data = ts.get_k_data('hs300', start = '2010-01-01', end='2017-06-30')[['date','close']]
data.rename(columns={'close': 'price'}, inplace=True)
data.set_index('date', inplace = True)
data.head()

3. 策略开发思路

# 计算连续收益率
data['returns'] = np.log(data['price'] / data['price'].shift(1))
# np.sign()符号函数支持向量化
data['position'] = np.sign(data['returns'])

只 使用 前一天的 进行预测(如果前一天收益为正,则预测今天收益也为正)

# 计算Momentum策略收益(注意未来函数问题)
data['strategy'] = data['position'].shift(1) * data['returns']

4. 策略可视化

# 计算策略最终累计收益
data[['returns', 'strategy']].cumsum().apply(np.exp).plot(figsize=(10, 6));

5. 策略优化之思路——参数优化和穷举

策略的问题和思考? 由于只是根据前一天进行预测今天的收益, 会出现过于频繁的买卖开仓,所以自然可以想到能否使用过去5天呢(当然不一定是5天),当然时间越长也会使得策略反应比较慢

# 计算5日内平均信号
data['position_5'] = np.sign(data['returns'].rolling(5).mean())
data['strategy_5'] = data['position_5'].shift(1) * data['returns']
data[['returns', 'strategy_5']].dropna().cumsum().apply(np.exp).plot(figsize=(10, 6))

参数寻优——使用离散Return计算方法

data['returns_dis'] = data['price'] / data['price'].shift(1) - 1
# 也可这样计算离散收益率:data['returns_dis'] = data['price'].pct_change()
data['returns_dis_cum'] = (data['returns_dis'] + 1).cumprod()
data.head()

# 建立一个绘制图形的 list
price_plot = ['returns_dis_cum']
# 参数寻优(入门方法)
for days in [10,20,30,60]:price_plot.append('sty_cumr_%dd' % days)data['position_%dd' % days] = np.where(data['returns'].rolling(days).mean()>0, 1, -1)data['strategy_%dd' % days] = data['position_%dd' % days].shift(1) * data['returns']data['sty_cumr_%dd' % days] = (data['strategy_%dd' % days] + 1).cumprod()
data[price_plot].dropna().plot(title='HS300 Multi Parameters Momuntum Strategy',figsize=(10, 6), style=['--', '--', '--', '--','--'])

6. 策略优化思路之—— High Frequency Data用于Momentum策略

hs300_hf = ts.get_k_data('hs300', ktype='5')  # ktype='5' 表示5分钟
hs300_hf.head(10)

hs300_hf.set_index('date',inplace = True)
hs300_hf.index = hs300_hf.index.to_datetime()
hs300_hf.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 482 entries, 2019-03-28 14:55:00 to 2019-04-12 15:00:00
Data columns (total 8 columns):
open             482 non-null float64
close            482 non-null float64
high             482 non-null float64
low              482 non-null float64
volume           482 non-null float64
amount           482 non-null object
turnoverratio    482 non-null object
code             482 non-null object
dtypes: float64(5), object(3)
memory usage: 33.9+ KB
hs300_hf['returns'] = np.log(hs300_hf['close'] / hs300_hf['close'].shift(1))
hs300_hf['position'] = np.sign(hs300_hf['returns'].rolling(10).mean())   #10个5分钟平均;
hs300_hf['strategy'] = hs300_hf['position'].shift(1) * hs300_hf['returns']
# 画图
hs300_hf[['returns', 'strategy']].dropna().cumsum().apply(np.exp).plot(figsize=(10, 6), style=['--', '--'])

金融量化— 动量策略(Momentum Strategy)相关推荐

  1. 量化投资 — 简单动量策略(Momentum Strategy)

    动量策略 - Momentum Strategy 0. 引库 import numpy as np import pandas as pd import tushare as ts import ma ...

  2. 【量化策略系列基本篇之一】股票动量策略(汇总篇)

    本文持续更新中.最后更新时间:11/3/2019 更新日志(11/3/2019): (1)优化部分表述和排版,修改错误 (2)添加移动平均动量部分内容 (3)修改部分2.1中部分代码错误 (4)增加免 ...

  3. python量化策略代码_手把手教你用三行python 代码做一个动量策略「量化投资系列」...

    动量策略是右侧交易里最常见的,背后的逻辑是就现在涨的,后市还会涨,动量具有惯性的意思. 首先加载原始数据,我们用天的收盘价即可,按统一转为收益率.因为点位本身不重要,我们最后只关心变化率. 以沪深30 ...

  4. python量化投资代码_手把手教你用三行python 代码做一个动量策略「量化投资系列」...

    动量策略是右侧交易里最常见的,背后的逻辑是就现在涨的,后市还会涨,动量具有惯性的意思. 首先加载原始数据,我们用天的收盘价即可,按统一转为收益率.因为点位本身不重要,我们最后只关心变化率. 以沪深30 ...

  5. 为什么股票量化交易策略可以归类为均值回归与动量策略?

    大部分股票量化交易策略都可以归类为均值回归与动量策略.事实上,只有当股票价格是均值回归或趋势的,交易策略才能盈利.否则,价格是随机游走的,交易将无利可图.均值回归是金融学的一个重要概念,指股票价格无论 ...

  6. 绘制levy曲线python_量化小白暑期研究笔记(5)——因子选股-高质量动量策略

    一.动量策略的一点历史 1.1 三大互补选股维度 1.Momentum:当价格沿着过去的轨迹继续运动时,我们能够获得收益: 2.Value:当价格恢复到之前的某种均衡状态时,我们能够获得收益: 3.C ...

  7. python 交易量化模型_Python期货股票量化交易,多品种组合模型之动量策略!

    一.策略简介 动量交易策略源于股票或期货市场中的动量效应,所谓动量效应是指过去一段时间的收益较高的资产价格,那么,资产在未来一段时间内同样也能获得较高收益. 同样的,如果某一资产价格过去的波动越大,那 ...

  8. 将quantopian的动量策略迁移到老虎证券量化api

    原quantopian的动量策略,感谢原策略作者 首先需要获取数据 dataframe的列是各个股票的代码,index是时间,日频 def get_price(bars_num):stocks = r ...

  9. python量化策略——最简单的动量策略,简单趋势追踪策略

    趋势性动量策略有效性验证及实现 1相关性验证 2策略概要 3其他回测结果 其他量化策略 1相关性验证 选取上证指数000001.SH,获取收盘价 以50为单位,计算每个55天的收益序列. 使用shif ...

最新文章

  1. HBase timestamp(version)
  2. 基于Boost::beast模块的小型http服务器
  3. C语言 ungetc将变量存放的字符返回给stdin输入流
  4. spring-在配置文件中配置DAO时直接引用DataSource
  5. stc 串口收发 c语言,STC15W408AS串口通讯PC乱码
  6. SAP QM数据库表清单
  7. 点金软件测试自学,徐文明短线点金相关公式
  8. 【考试总结贴】工程测量学
  9. 直方图代码matlab,MATLAB直方图均衡化代码(MATLAB histogram equalization code).doc
  10. BugKu Web题《网站被黑》writeUp
  11. 在IDEA里gradle配置和使用
  12. python quit函数作用_初识Python之基础知识
  13. JZOJ1758. 过河
  14. ethercat的linuxcnc解析器-关于lcec_conf和lcec.so
  15. STP保护、MSTP笔记(华为)
  16. CNN在自然语言处理上的详细解析与应用
  17. 交换机的116个知识点 (1)
  18. 在Qt中添加菜单图标
  19. 怎样在Word当中制作斜线表头,这样操作很简单
  20. 大写阿拉伯数字(大写阿拉伯数字0到10)

热门文章

  1. i茅台app登录分析
  2. i茅台app逆向分析
  3. unity里使用AddComponentMenu添加自定义组件的一个隐藏坑
  4. Python Split函数升级版
  5. vue解决 this.refs 拿取 v-for下元素undefine问题
  6. python--基础知识点--反射机制——hasattr、getattr、setattr、delattr
  7. 如何搭建前台系统(简)
  8. 微信小程序与传统APP十大优劣对比
  9. 【知识星球】视频分类/行为识别网络和数据集上新
  10. Word公式编辑器快速上手指南