§ 量化交易中的 NUMPY 和 PANDAS

课程大纲

1. 导论

2. Numpy 核心语法 (1)

2.1. 基本数据结构

2.1.1. 创建数组

创建数组的常用方法,以及几个内置数组,这些数组在量化中也非常常用

2.1.2. 增删改操作

如何向数组中追加、插入、删除元素,以及修改?

2.1.3. 定位、读取和搜索

介绍indexing, slicing, searchsorted等

2.1.4. 审视 (inspecting) 数组

2.2. 数组操作

2.2.1. 升维

2.2.2. 降维

2.2.3. 转置

3. Numpy 核心语法 (2)

3.1. 运算类

3.1.1. 逻辑运算和比较

3.1.2. 集合运算

3.1.3. 数学运算和统计

矩阵运算等数学运算及均值、方差、协方差、percentile 等统计函数

3.2. 类型转换和 Typing

深入了解Numpy数据类型及其转换,以及Typing库,帮助我们写出健壮的代码

3.3. Numpy 核心语法 (3)

3.4. 处理包含 np.nan 的数据

我们从第三方获得的数据可能包含np.nan数据;技术指标在冷启动期的值也常常是np.nan。在数据包含None或者np.nan的情况下,如果计算其均值、最大值?将介绍 np.isnan, nanmean, nanmax 等 nan *函数

3.5. 随机数和采样

随机数和采样是量化的高频操作,在“造”数据方面非常好用

3.6. IO 操作

介绍如何读取csv、保存csv等io操作

3.7. 日期和时间

从其它库中得到的行情数据的时间、日期,怎么转换?

3.8. 字符串操作

如何在Numpy数组中进行字符串查找等操作?

3.9. Structured Array

4. Numpy 量化场景应用案例

4.1. 连续值统计

举例:如何高效地寻找连续涨停、N 连阳和计算 connor's rsi 中 streaks

4.2. cumsum 与分时均价线的计算

分时均价线在日内交易中非常重要,一般来说,两次攻击分时线不破,就是日内买入(卖出)的信号。我们要如何计算分时均线呢?

4.3. 移动均线的计算

如何用 numpy 快速计算均线?介绍一个卷积算法

4.4. 自适应参数如何选择才合理?

很多时候,我们需要自适应参数。怎么选?percentile很多时候是个好方案

4.5. 计算最大回撤

如果你有经验,就能判断出 2 月 7 日的大反弹。反弹之日,要找跌幅最大的股票。怎么选呢?

4.6. 如何判断个股的长期走势?

不要买入长期看跌的个股。关键是,如何判断呢?这一节将介绍多项式回归

4.7. Alpha101 中的函数例程

Alpha101 中有好几个基础函数,因子就构建在这些基础函数上。如何高效地实现它们?

4.8. 寻找相似的k线

介绍 corrcoef 和 correlate

4.9. 资产组合的收益与波动率示例

从随机生成若干资产开始,计算资产的期望收益和波动率。这是高频应用场景之一。

5. Numpy 高性能编程实践

5.1. Broadcasting

深入Numpy高效的底层原理

5.2. 使用 NumExpr

5.3. 启用多线程

5.4. 使用bottleneck库

5.5. Numpy 的其它替代方案

6. Pandas 核心语法(1)

6.1. 基本数据结构

6.1.1. Series

6.1.2. 创建 DataFrame

6.1.3. 快速探索 DataFrame

index, info,describe,columns,head,tail 等

6.1.4. DataFrame 的合并和连接

6.1.5. 删除行和列

6.1.6. 定位、读取和修改

介绍Pandas中的索引(indexing)、数据选择

6.1.7. 转置

6.1.8. 重采样(resample)

盘中实时获得分钟线惊人地昂贵。所以,我们需要从tick级数据自己合成。这就是重采样

7. Pandas 核心语法 (2)

7.1. 逻辑运算和比较

dataframe中包含了我们提取的特征。要选取PE最大同时是PB最小的前30列,怎么做?

7.2. 分组运算(groupby)

因子分析数据表包含了行业标签和各公司的PE值。如何选出每个行业PE最强的5支

7.3. 多重索引和高级索引

这是pandas中比较难懂的内容之一

7.4. 窗口函数

用以计算移动平均等具有滑动窗口的指标

7.5. 数学运算和统计

均值、方差、协方差、percentile,diff,pct_change,rank 等统计函数,量化基础

8. Pandas 核心语法 (3)

8.1. 数据预处理类

因子分析的预处理过程中,要进行缺失值、缩尾、去重等操作,怎么做?

8.2. IO 操作

如何将数据从csv,网页,数据库,parquet等地方读进来

8.2.1. csv

除基本操作外,还将介绍读取 csv 时如何加速

8.2.2. pkl 和 hdf5

8.2.3. parque

8.2.4. html 和 md

8.2.5. sql

8.3. 日期和时间

我们从其它库中得到的行情数据的时间、日期,怎么转换?

8.4. 字符串操作

dataframe存放了证券基本信息,比如名字和代码。如何排除科创板?

9. Pandas 核心语法(4)

9.1. 表格和样式

让pandas拥有excel一样丰富的条件着色功能

9.2. Pandas 内置绘图功能

10. Pandas 量化场景应用案例

10.1. 通过rolling方法实现通达信例程

实现通达信公式中的HHV,LLV,HHVBARS,LAST等方法

10.2. 补齐分钟线缺失的复权因子

介绍最新版引入的as-of-join功能。量化必遇场景

10.3. 为Alphalens准备数据

使用Alphalens进行因子分析时,最常用的dataframe操作

11. Pandas 性能

11.1. 内存优化

使用category,以及更紧湊的数据类型压缩内存使用

11.2. 优化迭代

使用 itertuples 而不是 iterrows, 使用 apply 来优化迭代,先筛选再计算

11.3. 使用numpy和numba

11.4. 使用eval或者query

11.5. Pandas 的其它替代方案

11.5.1. modin

一行代码,实现pandas替代,并拥有多核、不受内存限制的计算能力

11.5.2. polars

最快的tableu解决方案

11.5.3. dask

分布式tableu,可运行在数千结点上

  1. Numpy 核心语法 (1)

2.1. 基本数据结构

2.2. 数组操作

  1. Numpy 核心语法 (2)

3.1. 运算类

  1. Numpy 量化场景应用案例
  1. Numpy 高性能编程实践
  1. Pandas 核心语法(1)

6.1. 基本数据结构

  1. Pandas 核心语法 (2)
  1. Pandas 核心语法 (3)

8.2. IO 操作

  1. Pandas 核心语法(4)
  1. Pandas 量化场景应用案例
  1. Pandas 性能

11.5. Pandas 的其它替代方案