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

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))

获取的数据:
学习《深入浅出python量化交易交易实战》第一章(笔记)_第1张图片
做了diff分析的数据:
学习《深入浅出python量化交易交易实战》第一章(笔记)_第2张图片
绘制的蜡烛图:
学习《深入浅出python量化交易交易实战》第一章(笔记)_第3张图片

1.3 设计最简单的交易策略

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

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

'''
简单数据处理
- 相比前一个交易日收益计算
'''
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))

学习《深入浅出python量化交易交易实战》第一章(笔记)_第4张图片

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()

学习《深入浅出python量化交易交易实战》第一章(笔记)_第5张图片

小结

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

  • Anacond
  • Jupyter notebook :网页编辑pyth
  • pandas_datareader:获取股票数据(api废弃或网络问题无法使用,用akshare代替)
  • akshare:获取股票数据
  • mplfinance:绘制股票图的库
  • matplotlib:绘图库

你可能感兴趣的:(python,python,pandas,开发语言)