Syllabus


Table of Content

§ 量化交易中的 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. Structured Array ### 3.2. 运算类 #### 3.2.1. 逻辑运算和比较 #### 3.2.2. 集合运算 #### 3.2.3. 数学运算和统计 _矩阵运算等数学运算及均值、方差、协方差、percentile 等统计函数_ ### 3.3. 类型转换和 Typing _深入了解Numpy数据类型及其转换,以及Typing库,帮助我们写出健壮的代码_ ## 4. Numpy 核心语法 (3) ### 4.1. 处理包含 np.nan 的数据 _我们从第三方获得的数据可能包含np.nan数据;技术指标在冷启动期的值也常常是np.nan。在数据包含None或者np.nan的情况下,如果计算其均值、最大值?将介绍 np.isnan, nanmean, nanmax 等 nan *函数_ ### 4.2. 随机数和采样 _随机数和采样是量化的高频操作,在“造”数据方面非常好用_ ### 4.3. IO 操作 _介绍如何读取csv、保存csv等io操作_ ### 4.4. 日期和时间 _从其它库中得到的行情数据的时间、日期,怎么转换?_ ### 4.5. 字符串操作 _如何在Numpy数组中进行字符串查找等操作?_ ## 5. Numpy 量化场景应用案例 ### 5.1. 连续值统计 _举例:如何高效地寻找连续涨停、N 连阳和计算 connor's rsi 中 streaks_ ### 5.2. cumsum 与分时均价线的计算 _分时均价线在日内交易中非常重要,一般来说,两次攻击分时线不破,就是日内买入(卖出)的信号。我们要如何计算分时均线呢?_ ### 5.3. 移动均线的计算 _如何用 numpy 快速计算均线?介绍一个卷积算法_ ### 5.4. 自适应参数如何选择才合理? _很多时候,我们需要自适应参数。怎么选?percentile很多时候是个好方案_ ### 5.5. 计算最大回撤 _如果你有经验,就能判断出 2 月 7 日的大反弹。反弹之日,要找跌幅最大的股票。怎么选呢?_ ### 5.6. 如何判断个股的长期走势? _不要买入长期看跌的个股。关键是,如何判断呢?这一节将介绍多项式回归_ ### 5.7. Alpha101 中的函数例程 _Alpha101 中有好几个基础函数,因子就构建在这些基础函数上。如何高效地实现它们?_ ### 5.8. 寻找相似的k线 _介绍 corrcoef 和 correlate_ ### 5.9. 资产组合的收益与波动率示例 _从随机生成若干资产开始,计算资产的期望收益和波动率。这是高频应用场景之一。_ ## 6. Numpy 高性能编程实践 ### 6.1. Broadcasting _深入Numpy高效的底层原理_ ### 6.2. 使用 NumExpr ### 6.3. 启用多线程 ### 6.4. 使用bottleneck库 ### 6.5. Numpy 的其它替代方案 ## 7. Pandas 核心语法(1) ### 7.1. 基本数据结构 #### 7.1.1. Series #### 7.1.2. 创建 DataFrame #### 7.1.3. 快速探索 DataFrame _index, info,describe,columns,head,tail 等_ #### 7.1.4. DataFrame 的合并和连接 #### 7.1.5. 删除行和列 #### 7.1.6. 定位、读取和修改 _介绍Pandas中的索引(indexing)、数据选择_ #### 7.1.7. 转置 #### 7.1.8. 重采样(resample) _盘中实时获得分钟线惊人地昂贵。所以,我们需要从tick级数据自己合成。这就是重采样_ ## 8. Pandas 核心语法 (2) ### 8.1. 逻辑运算和比较 _dataframe中包含了我们提取的特征。要选取PE最大同时是PB最小的前30列,怎么做?_ ### 8.2. 分组运算(groupby) _因子分析数据表包含了行业标签和各公司的PE值。如何选出每个行业PE最强的5支_ ### 8.3. 多重索引和高级索引 _这是pandas中比较难懂的内容之一_ ### 8.4. 窗口函数 _用以计算移动平均等具有滑动窗口的指标_ ### 8.5. 数学运算和统计 _均值、方差、协方差、percentile,diff,pct_change,rank 等统计函数,量化基础_ ## 9. Pandas 核心语法 (3) ### 9.1. 数据预处理类 _因子分析的预处理过程中,要进行缺失值、缩尾、去重等操作,怎么做?_ ### 9.2. IO 操作 _如何将数据从csv,网页,数据库,parquet等地方读进来_ #### 9.2.1. csv _除基本操作外,还将介绍读取 csv 时如何加速_ #### 9.2.2. pkl 和 hdf5 #### 9.2.3. parque #### 9.2.4. html 和 md #### 9.2.5. sql ### 9.3. 日期和时间 _我们从其它库中得到的行情数据的时间、日期,怎么转换?_ ### 9.4. 字符串操作 _dataframe存放了证券基本信息,比如名字和代码。如何排除科创板?_ ## 10. Pandas 核心语法(4) ### 10.1. 表格和样式 _让pandas拥有excel一样丰富的条件着色功能_ ### 10.2. Pandas 内置绘图功能 ## 11. Pandas 量化场景应用案例 ### 11.1. 通过rolling方法实现通达信例程 _实现通达信公式中的HHV,LLV,HHVBARS,LAST等方法_ ### 11.2. 补齐分钟线缺失的复权因子 _介绍最新版引入的as-of-join功能。量化必遇场景_ ### 11.3. 为Alphalens准备数据 _使用Alphalens进行因子分析时,最常用的dataframe操作_ ## 12. Pandas 性能 ### 12.1. 内存优化 _使用category,以及更紧湊的数据类型压缩内存使用_ ### 12.2. 优化迭代 _使用 itertuples 而不是 iterrows, 使用 apply 来优化迭代,先筛选再计算_ ### 12.3. 使用numpy和numba ### 12.4. 使用eval或者query ### 12.5. Pandas 的其它替代方案 #### 12.5.1. modin _一行代码,实现pandas替代,并拥有多核、不受内存限制的计算能力_ #### 12.5.2. polars _最快的tableu解决方案_ #### 12.5.3. dask _分布式tableu,可运行在数千结点上_