资源简介
量化交易策略之动量与反转交易python版,用户可修改参数进行自定义,可借助米匡、聚宽等网站平台实现量化交易。动量反转策略被证实为长久以来仍有明显效果的交易策略。
代码片段和文件信息
# coding=utf-8
from __future__ import division
from backtest import *
import os
import pandas as pd
from math import floor
# 计算复权价格
def cal_right_price(input_stock_data type=‘前复权‘):
“““
:param input_stock_data: 标准股票数据,需要‘收盘价‘ ‘涨跌幅‘
:param type: 确定是前复权还是后复权,分别为‘后复权‘,‘前复权‘
:return: 新增一列‘后复权价‘/‘前复权价‘的stock_data
“““
# 计算收盘复权价
stock_data = input_stock_data.copy()
num = {‘后复权‘: 0 ‘前复权‘: -1}
price1 = stock_data[‘close‘].iloc[num[type]]
stock_data[‘复权价_temp‘] = (stock_data[‘change‘] + 1.0).cumprod()
price2 = stock_data[‘复权价_temp‘].iloc[num[type]]
stock_data[‘复权价‘] = stock_data[‘复权价_temp‘] * (price1 / price2)
stock_data.pop(‘复权价_temp‘)
# 计算开盘复权价
stock_data[‘复权价_开盘‘] = stock_data[‘复权价‘] / (stock_data[‘close‘] / stock_data[‘open‘])
return stock_data[[‘复权价_开盘‘ ‘复权价‘]]
# 获取股票数据
def get_stock_data():
# 遍历数据文件夹中所有股票文件的文件名,得到股票代码列表
stock_code_list = []
# 此处为股票数据文件的本地路径,请自行修改
for root dirs files in os.walk(‘e:/data/stock data‘):
if files:
for f in files:
if ‘.csv‘ in f:
stock_code_list.append(f.split(‘.csv‘)[0])
all_stock = pd.Dataframe()
for code in stock_code_list:
# 此处为股票数据文件的本地路径,请自行修改
stock_data = pd.read_csv(‘e:/data/stock data/‘ + code + ‘.csv‘ parse_dates=[‘date‘])
stock_data = stock_data[[‘code‘ ‘date‘ ‘open‘ ‘close‘ ‘change‘]].sort_values(by=‘date‘)
stock_data.reset_index(drop=True inplace=True)
# 计算复权价
stock_data[[‘open‘ ‘close‘]] = cal_right_price(stock_data type=‘后复权‘)
# 判断每天开盘是否涨停
stock_data.ix[stock_data[‘open‘] > stock_data[‘close‘].shift(1) * 1.097 ‘limit_up‘] = 1
stock_data[‘limit_up‘].fillna(0 inplace=True)
all_stock = all_stock.append(stock_data ignore_index=True)
return all_stock[[‘code‘ ‘date‘ ‘change‘ ‘limit_up‘]]
def momentum_and_contrarian(all_stock start_date end_date window=3):
“““
:param all_stock: 所有股票的数据集
:param start_date: 起始日期(包含排名期)
:param end_date: 结束日期
:param window: 排名期的月份数,默认为3个月
:return: 返回动量策略和反转策略的收益率和资金曲线
“““
# 取出指数数据作为交易天数的参考标准 此处为指数数据文件的本地路径,请自行修改
index_data = pd.read_csv(‘e:/data/index data/sh000001.csv‘ parse_dates=True index_col=‘date‘)
index_data.sort_index(inplace=True)
index_data = index_data[start_date:end_date]
# 转换成月度数据
by_month = index_data[[‘close‘]].resample(‘M‘ how=‘last‘)
by_month.reset_index(inplace=True)
momentum_portfolio_all = pd.Dataframe()
contrarian_portfolio_all = pd.Dataframe()
for i in range(window len(by_month) - 1):
start_month = by_month[‘date‘].iloc[i - window] # 排名期第一个月
end_month = by_month[‘date‘].iloc[i] # 排名期最后一个月
# 取出在排名期内的数据
stock_temp = all_stock[(all_stock[‘date‘] > start_month) & (all_stock[‘date‘] <= end_month)]
# 将指数在这段时间的数据取出
相关资源
- python与量化投资-从基础到实战 配套资
- 100行python代码 帮你实现同花顺A股下单
- 量化投资:以Python为工具,代码和数
- 极智量化Python语言帮助文档.pdf
- 扫地僧Backtrader给力教程和源码
- 量化交易之路用Python做股票量化分析
- 《Python金融序列量化应用编程指南》
- 量化交易之路之python-源代码.rar
- Python开源量化平台框架支持A股基于
- 零起点Python大数据与量化交易高清书
- 量化投资以python为工具 数据及代码
- python量化交易教程241337
- 《Python与量化投资:从基础到实战(
- 零起点Python大数据与量化交易.pdf.zi
- 量化投资:以Python为工具 高清完整PD
- python量化.pdf
- 量化交易-python案例-简单易懂.zip
- 量化投资:以Python为工具,代码和数
- 量化投资:以Python为工具.蔡立耑(带
- 《量化投资:以python为工具》课后习
- 用Python做股票量化分析量化交易之路
- 量化投资以Python为工具高清
- 《量化投资:以Python为工具》课后习题
- python自动量化交易系统
- API — ffn 0.3.0 中文.pdf
- python做量化:一个简单的均线系统
- Python机器学习与量化投资视频教程
- python量化金融项目视频教程
- 日内回转交易策略源码
- MACD指标股票量化投资策略源码
评论
共有 条评论