发布时间:2025-12-09 19:32:49 浏览次数:4
参考书目:深入浅出Python量化交易实战
量化交易是很早就想开的栏目了,之前没时间。现在正好放寒假,然后也找到了一本合适的书可以进行学习。
本次第一章就介绍一下简单的量化流程和一个简单的策略。
量化交易顾名思义就是用代码去验证交易策略是否赚钱,严格按照程序的交易可以避免人性的很多缺点。
核心思想需要回测验证。
第一章就使用最简单的交易策略,低买高卖。如果股价在当天跌了就买,涨了就买。
使用Python进行回测验证收益。
使用国内量化最为流行的Tushare库获取数据,很简单便捷。
导入数据分析常用的库
#导入必要的库import tushare as tsimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns下载中国平安的数据来测试,时间从2020年1月1日到202年3月20日。
#指定下载股票的日期范围start_date = '2020-01-01'end_date = '2020-03-20'#使用ts获取数据#将时间范围作为参数传入zgpa = ts.get_k_data('601318',start_date, end_date)zgpa = zgpa.set_index('date')#检查是否下载成功zgpa.head() #下面我们来创建交易信号
#为了不影响原始数据,这里创建一个新的数据表
singal为0表示卖出,1表示买入。order表示相应的买入和卖出的数量 。
初始资金20000进行交易,计算持仓市值和账户总余额。
initial_cash = 20000.00#增加一个字段,代表交易的股票的市值zgpa_signal['stock'] = zgpa_signal['order']*zgpa_signal['price']#两次买卖的订单变化之差就是某一时刻仓位的变化情况#持仓股票的数量变化乘以现价,就是代表交易产生的现金流#用初始资金减去现金流变化的累加,就是剩余的现金zgpa_signal['cash'] = initial_cash -(zgpa_signal['order'].diff()*zgpa_signal['price']).cumsum()#而最股票的市值加上剩余的现金,就是总资产zgpa_signal['total'] = zgpa_signal['stock'] + zgpa_signal['cash']zgpa_signal.head()可以看到计算出来了每一天的持仓市值和总体的账户余额。
自己写量化的核心难点就在于怎么计算现金流的变化,这里是用order表示交易订单的变化之差表示仓位的变化,然后乘价格在累计加合就表示为交易的现金流。
画图展示
#用图形来进行展示#设置图形的尺寸是10*6plt.figure(figsize=(10,6))#分别绘制总资产和持仓股票市值的变化plt.plot(zgpa_signal['total'])plt.plot(zgpa_signal['order'].cumsum()*zgpa_signal['price'],'--',label='stock value')#增加网格,调整一下图注的位置,就可以显示图像了plt.xticks([0,12,24,36,48])plt.grid()plt.legend(loc='center right')plt.show()蓝色的线表示账户总额的变化,可以看到略微亏损,但整体还算不错。