手机版 | 登陆 | 注册 | 留言 | 设首页 | 加收藏
当前位置: 网站首页 > python教程 > 文章 当前位置: python教程 > 文章

融安python量化交易培训费用a股和期货量化交易python入门

时间:2022-05-09    点击: 次    来源:网络    作者:佚名 - 小 + 大

融安python量化交易培训费用a股和期货量化交易python入门


下载地址

https://share.weiyun.com/tIMc8ewb


资料目录

Python股票量化投资视频课程(25集完结)
Python股票量化策略培训预习材料(视频讲解+素材)
《Python机器学习与量化投资》电子书
《Python量化交易》.pdf
《Python与量化投资:从基础到实战》.pdf
《零起点TensorFlow与量化交易》.pdf
机器学习在量化投资中的应用研究_汤凌冰著 pdf
量化交易之路:用Python做股票量化分析(高清).pdf
量化投资以Python为工具.pdf


举例

向量回测
下面以上证 50ETF(510050)为例进行双均线的向量回测,其具体步骤如下。
(1)导入包。
import matplotlib.pyplot as plt
%matplotlib inline
import pandas as pd
import tushare as ts
(2)用 Tushare 获取数据,然后用 sort_index()改变其时间排序方式,再计算每天的价格变化,df.head(20)可以显示头 20 行数据,如图 5-2 所示。
# 获取数据
data = ts.get_hist_data('510050', '2017-01-01', '2018-01-01')
#50ETF 1 年日线历史数据
data = data.sort_index() #按照日期排序
df = pd.DataFrame() #创建新DataFrame
df['close'] = data['close'] #收盘价
df['change'] = data['close'] - data['close'].shift(1) #每日收盘价的变动
df.head(20) #显示头20 行数据(交易日)
图 5-2 显示头 20 行数据(部分截取)
( 3 ) 计 算 两 条 均 线 , 分 别 是 5 天 移 动 均 线 和 20 天 移 动 均 线 。
rolling(window=5,center=False)意味着滚动回望窗口的周期是 5,不取中位数。
# 计算均值
df['ma5'] = df['close'].rolling(window=5, center=False).mean()
df['ma20'] = df['close'].rolling(window=20, center=False).mean()
df.head(20)
(4)从图 5-3 中可以观察到,ma5 是从第 5 个交易日才开始有的(统计的是前 4 天的收盘价,加上今天的收盘价),而 ma20 是从第 20 个交易日才开始产生的。所以到 2 月 6 日所有数据才完整起来,同时从这天起(第 20 个交易日)开始产生交易信号。
图 5-3 从第 20 个交易日后开始产生信号
(5)清除空值,从 2 月 6 日开始统计:
# 删除空值
df = df.dropna()
(6)通过交易信号计算持仓情况。若快均线上穿慢均线,即 ma5 > ma20 时
产生买入信号。因为 ma5 和 ma20 是当天收盘的时候才刚刚统计出来的,所以其交易信号需要第二天开盘的时候执行。若是不注意写成当天执行的话,就隐含未来函数,导致策略回测结果偏高。因为函数必须满足时序不变性,即时间靠后的数据对时间靠前的结果不产生影响,未来函数就是时间靠后的数据对靠前结果有影响。
反之,若 ma5 < ma20,手头有多仓,则先平掉,然后再开相同数目的空仓,
如图 5-4 所示。
# 持仓情况
df['pos'] = 0 # 初始化
#交易信号判断
df['pos'][df['ma5'] >= df['ma20']] = 10000
df['pos'][df['ma5'] < df['ma20']] = -10000
df['pos'] = df['pos'].shift(1).fillna(0)
df
图 5-4 通过交易信号计算持仓情况
(7)计算净盈亏。
每天盈亏=当日持仓×当天价格变化
当仓位发生变化时,如做多变成做空,则会产生手续费。
手续费=开仓的总数(这里是 2 万股)×当日收盘价×手续费率(万分之三)
净盈亏=每天盈亏−手续费
如图 5-5 所示。
# 计算每日盈亏和手续费
df['pnl'] = df['pos']*df['change']
df['fee'] = 0 #初始化fee
df['fee'][df['pos']!= df['pos'].shift(1)] = 20000 * df['close'] * 3 / 10000
df['netpnl'] = df['pnl'] - df['fee']
df
图 5-5 计算净盈亏
(8)计算累计盈亏,如图 5-6 所示。
# 累计盈亏 cumsum()
df['cumpnl'] = df['netpnl'].cumsum()
df
图 5-6 计算累计盈亏
(9)最后绘图得到累计盈亏曲线,如图 5-7 所示。
df['cumpnl'].plot()
测试表明双均线策略并不理想。图中显示 2.3 万元人民币的本钱,在 2017 年全年最终赢利 2 千元左右。
图 5-7 累计盈亏曲线

上一篇:量化交易python培训北京武汉深圳量化交易python代码开发招聘

下一篇:没有了

推荐阅读
声明 | 联系我们 | 关于我们
备案ICP编号  |   QQ:2151239526  |  地址:北京市东城区  |  电话:16605168200  |