yyds!Python 量化交易教科书面世,赠送 3 本

大家好,我是俊欣

前不久,收到清华大学出版社赠送的 《深入浅出Python量化交易实战》 一书,也答应了出版社要写一些读书笔记,今天就来交作业了。

febb61fc233e182b55ab77c41487409d.png

当然老规矩,俊欣会在本篇赠送共3本书,规则详见文末

下面是我参考书中内容做的一些简单尝试,仅供学习参考。这本书对于使用Python玩量化的初学者们,还是很友好的,感兴趣可以考虑入手一本看看。

笔记①

用Python绘制出股价的5日均线和20日均线。众所周知,5日均线是短线交易的生死线,而20日均线是中长线趋势的分水岭。因此,基于这两条均线,可以设计出一些简单的交易策略。

下面是我练习的代码:

import pandas as pd
import numpy as np
from pandas_datareader import data
import datetime
import matplotlib.pyplot as plt
导入库的部分,不解释了,下面拉数据:
end_date = datetime.date.today()
start_date = end_date - datetime.timedelta(days = 100)
price = data.DataReader('601127.ss','yahoo',
                       start_date,
                       end_date)
price.head()

这里我选择从yahoo拉601127这支股票过去100天的行情数据。能够看到最早的数据到2021年的10月8日:

38fd3068c163dd97f18034a03fc7a618.png

然后我开始添加5日和20日均线

price['ma5'] = price['Adj Close'].rolling(5).mean()
price['ma20'] = price['Adj Close'].rolling(20).mean()
price.tail()

数据中就可以看到了:

ebb77aa96a89338241484bf3b34f6527.png

为了便于观察,我用代码画了个图:

fig = plt.figure(figsize=(16,9))
ax1 = fig.add_subplot(111, ylabel='Price')
price['Adj Close'].plot(ax=ax1, color='g', lw=2., legend=True)
price.ma5.plot(ax=ax1, color='r', lw=2., legend=True)
price.ma20.plot(ax=ax1, color='b', lw=2., legend=True)
plt.grid()
plt.show()

这样就可以直观看到图像:

e288b0481b7d705336c57c759fdc2fed.png

这样就可以根据不同周期的均线来设计移动平均策略了。

笔记②

这里把书中用KNN模式做的交易策略,换成了逻辑回归模型,试试看策略的业绩会有怎样的变化。

二话不说,上梯子,导库拉数据:

import pandas as pd
import pandas_datareader.data as web
import numpy as np
from datetime import datetime

数据甭多了,来个3年的:

end = datetime.date.today()
start = end - datetime.timedelta(days = 365*3)

我大A股,最牛X的股票,要说是茅台,没人反对吧?那咱搞茅台的行情数据:

owB = web.DataReader('600519.ss', 'yahoo',
                     start,
                     end)
cowB.head()

拉下来本仙就惊了,2019年1月的时候,大茅台才600多块钱啊!不过估计当时让本仙买,本仙也不敢。那时候我大A股过百的股票也没多少吧!

5fd6b674a61b9b41eb01fd8f6bcac0b2.png

然后我按照书里的方法,做下特征工程:

cowB['open-close'] = cowB['Open'] - cowB ['Close']
cowB ['high-low'] = cowB ['High'] - cowB ['Low']
cowB ['target'] = np.where(cowB ['Close'].shift(-1) > cowB ['Close'],1,-1)
cowB = cowB.dropna()
cowB.tail()

然后就多了几列,target里面,1表示次日上涨,-1表示次日下跌:

308683ecb9c1532f69929ee1e9a1cf90.png

下面要搞模型了:

x = cowB [['open-close','high-low']]
y = cowB ['target']

拆成x和y,然后请出scikit-learn:

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

然后把数据集拆分成训练集和测试集:

x_train, x_test, y_train, y_test =\
train_test_split(x, y, train_size = 0.8)

看看逻辑回归表现如何:

lr = LogisticRegression()
lr.fit(x_train, y_train)
print(lr.score(x_train, y_train))
print(lr.score(x_test, y_test))

结果发现,还没有书里KNN的分数高:

0.5438898450946644
0.5136986301369864

逻辑回归在训练集里面的准确率是54.39%,与书里KNN的准确率基本持平;但是测试集里只有51.37%,比书里的KNN模型低了差不多3个百分点。

第二个笔记结果有点扎心,但目的重在尝试,空余时间抽空玩一玩,感兴趣的话也可以自行动手实践一下。

赠书环节

赠送书籍:3 本《深入浅出Python量化交易实战》,由「清华大学出版社」赞助提供,Python量化经典,建议强烈入手一本。

赠送规则:通过留言点赞的方式送出,「转发本文至朋友圈」+「留言」,留言点赞数量最多 前3位 读者将获得一本(走心留言才可精选)。开奖时间:2月25日20:00」。

注意事项:最终获赠者请在24小时以内添加我的微信:1072362067,备注:赠书,并提供朋友圈转发和集赞的截图。如发现机器或者非真实流量刷赞,发现后将进入黑名单,取消获赠资格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值