量化交易系列【4】高频函数:rolling与expanding用法
量化交易系列【4】高频函数:rolling与expanding用法
- rolling函数:计算移动平均线MA
- expanding函数
示例中使用的‘000001.XSHE.csv’文件,已上传至csdn资源中,可直接下载
import pandas as pd
# 读取CSV文件
df = pd.read_csv('./000001.XSHE.csv')
df = df[:10] # 取前10行数据
df
date | open | close | high | low | volume | money | |
---|---|---|---|---|---|---|---|
0 | 2015/1/5 | 9.98 | 10.00 | 10.17 | 9.74 | 458099037 | 4.565388e+09 |
1 | 2015/1/6 | 9.90 | 9.85 | 10.23 | 9.71 | 346952496 | 3.453446e+09 |
2 | 2015/1/7 | 9.72 | 9.67 | 9.88 | 9.55 | 272274401 | 2.634796e+09 |
3 | 2015/1/8 | 9.68 | 9.34 | 9.72 | 9.30 | 225445502 | 2.128003e+09 |
4 | 2015/1/9 | 9.30 | 9.42 | 9.91 | 9.19 | 401736419 | 3.835378e+09 |
5 | 2015/1/12 | 9.29 | 9.22 | 9.40 | 9.05 | 248759608 | 2.293105e+09 |
6 | 2015/1/13 | 9.15 | 9.17 | 9.30 | 9.12 | 130822538 | 1.204987e+09 |
7 | 2015/1/14 | 9.23 | 9.25 | 9.49 | 9.18 | 202274250 | 1.889297e+09 |
8 | 2015/1/15 | 9.27 | 9.58 | 9.58 | 9.19 | 198933635 | 1.868796e+09 |
9 | 2015/1/16 | 9.62 | 9.60 | 9.75 | 9.48 | 249168874 | 2.403346e+09 |
rolling函数:计算移动平均线MA
# 5日均线的计算:即最近5天收盘价的均值
# 使用rolling函数进行计算:rolling(n)即为取最近n行数据的意思,只计算这n行数据。后面可以接各类计算函数,例如max、min、std等
df['MA_5'] = df['close'].rolling(5).mean()
df[['date','close','MA_5']]
date | close | MA_5 | |
---|---|---|---|
0 | 2015/1/5 | 10.00 | NaN |
1 | 2015/1/6 | 9.85 | NaN |
2 | 2015/1/7 | 9.67 | NaN |
3 | 2015/1/8 | 9.34 | NaN |
4 | 2015/1/9 | 9.42 | 9.656 |
5 | 2015/1/12 | 9.22 | 9.500 |
6 | 2015/1/13 | 9.17 | 9.364 |
7 | 2015/1/14 | 9.25 | 9.280 |
8 | 2015/1/15 | 9.58 | 9.328 |
9 | 2015/1/16 | 9.60 | 9.364 |
由于前4天不满足5天的条件,因此,前4天的MA_5值为空
# 计算近5天的最大值
df['max_5'] = df['close'].rolling(5).max()
df[['date','close','max_5']]
date | close | max_5 | |
---|---|---|---|
0 | 2015/1/5 | 10.00 | NaN |
1 | 2015/1/6 | 9.85 | NaN |
2 | 2015/1/7 | 9.67 | NaN |
3 | 2015/1/8 | 9.34 | NaN |
4 | 2015/1/9 | 9.42 | 10.00 |
5 | 2015/1/12 | 9.22 | 9.85 |
6 | 2015/1/13 | 9.17 | 9.67 |
7 | 2015/1/14 | 9.25 | 9.42 |
8 | 2015/1/15 | 9.58 | 9.58 |
9 | 2015/1/16 | 9.60 | 9.60 |
同样可以使用df[‘close’].rolling(5).min()计算5日最小值、df[‘close’].rolling(5).std()计算标准差
expanding函数
作用:expanding()函数计算从一开始至今的某些数据值,实现累计计算,即不断扩展;类似于cumsum()函数的累加操作。
那如何将MA_5前4天的数据使用前几天的数据均值进行补充呢?
如第二天收盘价 = 前2天收盘价均值, 第三天收盘价 = 前3天收盘价均值…
此时就需要用到expanding函数:可以用于计算每天的从一开始至今的均值。
df['收盘价_至今均值'] = df['close'].expanding().mean()
df[['date','close','MA_5','收盘价_至今均值']]
date | close | MA_5 | 收盘价_至今均值 | |
---|---|---|---|---|
0 | 2015/1/5 | 10.00 | NaN | 10.000000 |
1 | 2015/1/6 | 9.85 | NaN | 9.925000 |
2 | 2015/1/7 | 9.67 | NaN | 9.840000 |
3 | 2015/1/8 | 9.34 | NaN | 9.715000 |
4 | 2015/1/9 | 9.42 | 9.656 | 9.656000 |
5 | 2015/1/12 | 9.22 | 9.500 | 9.583333 |
6 | 2015/1/13 | 9.17 | 9.364 | 9.524286 |
7 | 2015/1/14 | 9.25 | 9.280 | 9.490000 |
8 | 2015/1/15 | 9.58 | 9.328 | 9.500000 |
9 | 2015/1/16 | 9.60 | 9.364 | 9.510000 |
# 同样的,expanding函数后面可以接各类计算函数,计算从头至今的各类数据。
df['close'].expanding().max()
df['close'].expanding().min()
df['close'].expanding().std()
量化交易系列【4】高频函数:rolling与expanding用法相关推荐
- 量化交易系列【2】Pandas数据筛选及处理相关操作
量化交易系列[2]Pandas数据筛选及处理相关操作 筛选数据 处理缺失值 删除空值dropna 补全缺失值fillna 排序函数 合并操作 去除重复数据 示例中使用的'000001.XSHE.csv ...
- 移植 Python 量化交易 TA-Lib 库到函数计算
TA-Lib,全称"Technical Analysis Library", 即技术分析库,是 Python 金融量化的高级库,涵盖了 150 多种股票.期货交易软件中常用的技术分 ...
- Python 量化交易系列教程
Python 量化交易 例如:第一章 Python 基础知识 Python 基本操作练习 Python 量化交易 Python 基本操作练习 一.基础运算子练习 二.条件判断练习 三.循环练习 四.函 ...
- 股票python量化交易012-使用shift函数计算涨跌幅
认识shift函数 简单理解就是可以把数据整体进行偏移,如csv中的某列数据整体下移一行 ================> 转换后变为: 转换后就得到一张临时的一张表,然后可以用这张临时表的数 ...
- QUANT[1]:从零开始量化交易
本文是量化交易系列博文的第一篇,后续的如下所列 QUANT[1]:从零开始量化交易 - プロノCodeSteel - CSDN博客 QUANT[2]:量化交易策略基本框架搭建 - プロノCodeSte ...
- QUANT[10]量化交易——因子暴露度,因子收益与模型
QUANT[1]:从零开始量化交易 - プロノCodeSteel - CSDN博客 QUANT[2]:量化交易策略基本框架搭建 - プロノCodeSteel - CSDN博客 QUANT[3]:量化交 ...
- Python机器学习与量化交易
文章目录 1. 量化交易简介 1.1 量化交易的历史 1.2 什么是量化交易 1.3 量化交易分类 1.4 金融产品及衍生品的投资策略 1.5 量化交易的优势 1.6 如何做量化交易项目 2. 量化回 ...
- 一位从事量化交易的实战者,手把手带你入门量化交易!
大数据文摘出品 来源:quantstart 编译:LYLM.笪洁琼 本文作者是一位从事量化交易的实战者,他将他的实战心得写成一个量化交易系列,本篇则是系列的第一篇,从文中你会对整个量化交易的框架.流程 ...
- 零起点Python大数据与量化交易
零起点Python大数据与量化交易 第1章 从故事开始学量化 1 1.1 亿万富翁的"神奇公式" 2 1.1.1 案例1-1:亿万富翁的"神奇公式" 2 1.1 ...
最新文章
- 算力不是王道,强化学习之父Rich Sutton的六点错误
- docker 网络 实现
- 品牌价值越发重要的时代,谁才是服务行业标杆?
- AJAX代码示例(不使用AJAX控件)
- java: -source 1.5 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算符)
- MySQL explain 命令
- azure mysql on vnet_管理 VNet 终结点 - Azure 门户 - Azure Database for MySQL | Microsoft Docs
- 项目管理学习总结(6)——产品经理常用的工具有哪些?
- BXP_4.1安装配置及域应用随记一
- QT下信号与槽不在同一个线程中如何connect
- 追赶法求解线性方程组matlab,追赶法求解三对角线性方程组Matlab编程
- 3次样条曲线差值函数c++实现
- android+世界地图高清版大图片,世界地图全图高清版
- javascript原生代码实现轮播图片
- python主函数怎么写_类中的Python主函数
- CMY和CMYK彩色模型
- java读取Excel文件并各方案对比
- vue项目中常用解决跨域的方法
- python——设计一个简单的购房商贷月供计算器
- 程序员必备的 58 个学习网站
热门文章
- telnet 不是内部或外部命令,也不是可运行的程序解决方案
- 工业机器人的自由度是什么?
- 嵌入式C语言之零碎知识
- 安装Linux 乌班图 Ubuntu 系统
- JavaScript入门学习指南
- Python爬虫学习笔记 (2) [初级] 初识 requests + bs4 + re
- Sealed class密封类详解
- Keras中predict()方法和predict_classes()方法和evaluate()方法
- mosquitto接口流程图
- AndroidStudio升级后,离线更新Gradle版本失败问题解决