当前位置:   article > 正文

学习《深入浅出python量化交易交易实战》第一章(笔记)_量化交易jupyter notebook

量化交易jupyter notebook

1.学习《深入浅出python量化交易交易实战》第一章

记录学习过程中的代码和一些坑

1.1 基础(名词解释)

1.1.1 CAPM (Capital Asset Pricing Modal)

  • beta 系数 用于表示某项资产的系统性风险
  • factor investment 因子投资
    在因子投资中,因子的定义就是那些可以量化的信号、特征或其他变量。
  • Arbitrage pricing Theory, Apt
  • 三因子模型:市场资产组合,市值,账面市值解释证券回报率
  • 四因子模型:市场资产组合,市值,账面市值,市场动量因子解释证券回报率

1.1.2 数据分析

  • alpha factor 阿尔法因子

1.1.3 工具介绍

  • Anaconda: http://www.anaconda.com
  • Jupyter notebook 是一种 Web 应用,能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中。
  • pandas_datareader 金融数据库(接口无法正常获取数据)
  • akshare 国内开源的获取金融数据的python库:https://akshare.akfamily.xyz/data/stock/stock.html#id19
  • mplfinance:绘制股票图的库
  • matplotlib:绘图库

1.2 获取股票数据并做简单的分析

书中的datareader,由于接口或网络原因,已无法正常获取股票数据,这里找到akshare代替,并且使用mplfinance绘制了蜡烛图。

代码如下:

# 下载股票数据
import akshare as ak
import pandas as pd
import mplfinance as mpf
# A 股日频率数据-东方财富 stock_zh_a_hist
'''
    '日期': 'Date',
    '开盘': 'Open',
    '最高': 'High',
    '最低': 'Low',
    '收盘': 'Close',
    '成交量': 'Volume',
    '成交额':
    '振幅':
    '涨跌幅': 
    '涨跌额':
    '换手率':
'''

stock = ak.stock_zh_a_hist(symbol="002236",
                           period="daily",
                           start_date="20170301",
                           end_date="20221231", adjust="hfq")

stock = pd.DataFrame(stock, columns=['日期', '开盘', '最高', '最低', '收盘', '成交量'])
stock.rename(columns={
        '日期': 'Date',
        '开盘': 'Open',
        '最高': 'High',
        '最低': 'Low',
        '收盘': 'Close',
        '成交量': 'Volume'
    },
        inplace=True)
stock.index = pd.DatetimeIndex(stock['Date'])
print(stock.tail(5))
# 绘制蜡烛图
# type='candle', type='line', type='renko', or type='pnf'
mpf.plot(stock.tail(30), type="candle", volume=True)

# 相比前一个交易日收益计算
stock['diff'] = stock['Close'].diff()
print(stock.head(5))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

获取的数据:
在这里插入图片描述
做了diff分析的数据:
在这里插入图片描述
绘制的蜡烛图:
在这里插入图片描述

1.3 设计最简单的交易策略

1. 简单的数据处理
当日股价下跌,我们就在下一个交易日开盘前挂单买入;反之,当日股价上涨,我们就在下一个交易日开盘前挂单卖出。
创建一个新的字段——Signal(交易信号),如果diff字段大于0,则Signal标记为1;如果diff字段小于或等于0,则Signal标记为0。
  • 1
  • 2

在上面获取到数据的基础上做如下操作:

'''
简单数据处理
- 相比前一个交易日收益计算
'''
stock['diff'] = stock['close'].diff()
print('----计算涨跌diff数据------')
print(stock.head(5))
stock['signal'] = np.where(stock['diff'] > 0, 1, 0)
print('----计算买入卖出信号后的数据------')
print(stock.head(5))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

2. 交易信号可视化

将上面买入卖出的数据生成可视化图表,这里需要用到两个苦:numpymatplotlib

代码如下:

'''
import matplotlib.pyplot as plt
import numpy as np

简单交易策略
·当日股价下跌,下一个交易日买入
·当日股价上涨,下一个交易日卖出

创建交易信号字段:Signal, diff > 0 Signal=1 卖出,否则Signal=0
'''



# matplotlib 绘图
plt.figure(figsize=(10, 5))
stock['close'].plot(linewidth=2, color='k', grid=True)
# 卖出标志 x轴日期,y轴数值
# matplotlib.pyplot.scatter(x, y, marker, size, color)
plt.scatter(stock['close'].loc[stock.signal == 1].index,
            stock['close'][stock.signal == 1],
            marker='v', s=80, c='g')
# 买入标志
plt.scatter(stock['close'].loc[stock.signal == 0].index,
            stock['close'][stock.signal == 0],
            marker='^', s=80, c='r')
plt.show()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

在这里插入图片描述

小结

该章主要讲述python量化获取股票数据并进行简单处理,同时介绍了常用的工具和库:

  • Anacond
  • Jupyter notebook :网页编辑pyth
  • pandas_datareader:获取股票数据(api废弃或网络问题无法使用,用akshare代替)
  • akshare:获取股票数据
  • mplfinance:绘制股票图的库
  • matplotlib:绘图库
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/836183
推荐阅读
相关标签
  

闽ICP备14008679号