用苹果股价详解量化分析的4种基本操作

精度不够,滑动时间来凑「限流算法第二把法器:滑动时间窗口算法」 2)在main方法中,我们通过开启一个线程来执行我们的doCheck()方法,由于doCheck()方法是while(true),所以会一直执行,sleep的时间刚好是每个时间间隔值,那么就会不断刷新LinkedList中的值。当在系统刚刚启动的时候,系统很多资源都未分配完成,瞬间来了n个请求,如果使用滑动窗口算法的话,那么只有达到了QPS控制阈值,才会触发限流机制,那么这样针对系统刚启动资源未分配的情况,就无法防止系统瘫痪了。回顾一下上面的计数器算法,我们可以发现,计数器算法其实就是滑动窗口算法。... 阅读详情

AI派在读学生小姐姐Beyonce

Java实战项目练习群

长按识别下方二维码,按需求添加

扫码添加Beyonce小姐姐

扫码关注

进Java学习大礼包


Python最近几年的热度越来越高,其在多个领域都得到了广泛的使用,尤其是在量化分析方面,最近几年可以说是得到了飞速发展,现在说它是量化分析第一语言也不为过,笔者今天就介绍一下Python在量化分析中的一些基本使用操作。

今天讲的操作共有4种,都是我们经常用到的,而这4种操作都要用到pandas库,因为是量化分析,所以也要用到一些股票数据,我们就用“宇宙第一大股”苹果公司的股票数据来作为演示。

首先还是导入各种库。

import pandas as pd
import numpy as np
import yfinance as yf

这里我们稍微介绍一下yfinance,yfinance是使用Yahoo! Finance数据源的一个库,这个库的优点是下载速度快(没有被墙)、免费,同时导出来的数据就是pandas.DataFrame格式,非常好用。然后就是下载我们所需的苹果公司的股票数据,这里我们下载过去5年的数据,即2015年1月1日到2019年12月31日的数据,代码如下。

df = yf.download('AAPL', start='2015-01-02', end='2020-01-01', progress=False) #progress是进度显示条,最好关闭

yfinance的时间参数有些不同,其是滞后一天的,所以我们要下载第一天2015年1月1日的数据,则要设置为'2015-01-02',截止时间也同样延后一天,同时设置progress=False,以关闭下载进度条。下载好的数据大致如图1所示。

图1. 苹果股价数据示例

有了数据,我们就开始介绍一下这4种基本操作。

一、rolling window

rolling window是对某个窗口期内的数据进行操作,其原理和我们常用的groupby有些类似,不过是在窗口期内进行操作,其使用方法如下。

df_rolling = df.rolling(window=3)
df_rolling.max()[:10]
df_rolling.sum()[:10]

这里df_rolling可以看作是一个中间变量,就和我们进行过groupby之后形成的变量一样,然后再在其基础上进行操作。比如我们进行max和sum操作,得到的结果就如图2所示。

图2. rolling的结果

rolling操作有几个参数,作用分别如下。

(1)window:表示窗口期的大小,类型为int,比如df.rolling(window=3).max()就表示以3天为窗口期,在连续的3天(也就是3行数据)内进行取最大值操作。因为第一天和第二天都不满3天,所以这两个值都空缺,df_rolling中前两行也因此都是NaN,然后依次向下滚动操作。

(2)min_periods:最小观测值,int类型,默认与window相等。其值一般小于等于window值,比如df.rolling(3,min_periods=2).max()[:10],就表示一个窗口期内至少有2个值存在,否则就不予计算,其结果如图3所示。假如有3个连续值都是NaN,则这个结果不参与计算。

图3. min_periods的结果

(3)center:是否使用窗口期的中间值作为label,默认为false。这个一般配合min_periods使用,比如df.rolling(window=3, min_periods=2, center=True).max()[:10]的结果如图4所示,其第一和第二行数据都存在,因为是以三行中间那行为label,向前向后各推一行,又因为min_periods=2,所以第一行也有数据,这和图3是有区别的。

图4. center的结果

(4)win_type:指定窗口类型,默认为None,不作指定则认为窗口期内各个数据的权重相等,这个比较复杂,一般用不到。比如设置为’hamming’,则返回一个Hamming窗口,其具体算法可以参考scipy.signal.windows的官方文档。

(5)on:对于多列数据,用on来指定在哪一列上进行操作,这个有点多余,我们可以直接在选取数据时就指定好数据了。

(6)axis:值为1或0,默认为0。1表示在横向上进行操作,0表示纵向上进行操作。

(7)closed:定义区间的开闭,默认为'right',即左开右闭。可以设置为'right'、'left'、'both'或者'neither'。

而除了上面介绍的max和sum操作,其他操作如median、var、std、corr、aggregate等都能使用,这里笔者不再一一赘述。

二、expanding window

expanding window是以递增形式对整个数据进行操作。其一共有3个参数,分别是min_periods、center和axis,其作用和rolling中的一样,所以这里不再介绍。expanding window的使用方法如下。

df.expanding(3).sum()[:10]

图5. expanding的结果

其结果如图5所示。我们可以看到,每行结果都是对前面所有行结果的加和,整个数据就是在不断地expand,所以才叫expanding,其他操作如median、var、std、corr、aggregate等也都能使用。

三、exponentially weighted moving window

exponentially weighted moving window就是指数式加权递减的移动平均。各数值的加权而随时间而呈指数式递减,越近期的数据加权越重。

exponentially weighted moving window有如下参数可选,

(1)com:主要用于构成α,参考图6。

(2)span:根据范围指定衰减,α=2/(span+1),其中span≥1。

(3)halflife:根据半衰期指定衰减,α=1−exp(log(0.5)/halflife),其中halflife>0。

(4)alpha:直接指定平滑系数α,0<α≤1。

(5)min_periods:和前面例子中用法相同。

(6)adjust:是否除以开始阶段的衰减调整因子,默认为True,主要用于解释相对权重的不平衡性。

(7)ignore_na:是否忽略缺失值。

(8)axis:和前面例子中用法相同。

图6. ewm的递推公式

exponentially weighted moving window的递推公式如图6所示,其中com、span、halflife、alpha这4个值至少指定一个,alpha的公式如式(1)所示,当adjust为False时,递推公式用式(2);当adjust为True时,用式(3)。其代码如下所示,结果如图7所示。

df.ewm(alpha=0.2).mean()[:10]

图7. ewm的结果

这个ewm的计算稍微复杂点,其方法只有5种,分别是mean、std、var、corr和cov,大家最好自己也动手试一下。

四、shift

shift说白了就是平移,即index不变,数据左右或上下移动指定行数。用法如下,结果如图8所示。

df.shift(1)[:10]

图8. shift的结果

shift一共有4个参数,作用如下。

(1)period:表示移动的幅度,可以是正数,也可以是负数,默认为1。

(2)freq:格式为DateOffset、timedelta或string,可选参数,默认值为None,只适用于时间序列,如果这个参数存在,那么会按照参数值移动时间索引,而数据值没有发生变化。

(3)axis:用法和前面例子相同。

(4)fill_value:移动后缺失值的填充。

shift很常用,但理解起来也很简单,这里也不再赘述。

结语

本文主要从一些基本操作入手,来展示一下量化分析的部分应用,量化分析是一个很广泛的领域,大家如有兴趣也可以自行查找资料来学习,笔者以后也会再写一些这方面的文章分享给大家。

文末福利

各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。

这个是一份Python代码速查表

下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图

怎样获取呢?可以添加我们的AI派团队的Beyonce小姐姐

一定要备注【高清图】哦

????????????????????

➕我们的Beyonce小姐姐微信要记得备注【高清图】哦

来都来了,喜欢的话就请分享、点赞、在看三连再走吧~~~

金融建模必备:手把手教你用Python模拟随机微分方程(SDE)预测股价 本文详细介绍了如何使用Python构建随机微分方程(SDE)模型预测股价,重点讲解几何布朗运动(GBM)的理论框架、参数估计和蒙特卡洛模拟实现。通过实际案例演示从历史数据校准模型参数到结果可视化的全流程,为金融建模和量化分析提供实用指导。 阅读详情

相关推荐

RLS算法实战:用Python实现递推最小二乘法预测股票价格(附完整代码)

本文详细介绍了如何使用Python实现递推最小二乘法(RLS)进行动态股票价格预测。通过实战案例,从数据获取、特征工程到核心算法编写,完整展示了RLS在线学习、递归更新的优势,并与传统滚动OLS方法进行对比,为量化交易者提供了一个高效的实时预测工具。

weixin_29054399的博客 260

pandas库之DataFrame滑动窗口(rolling window)(官网介绍)

提供滑动窗口计算 DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None, method='single') 参数: window:int, offset, or BaseIndexer subclass 移动窗口的大小,如果是整数,代表每个窗口覆盖的固定数量;如果是offset(pandas时间序列),代表每个窗口的时间段,每个窗口的大小将根据时间段中包含

weixin_45526117的博客 1万+

利用Alpha Vantage API与Python构建智能量化分析原型

本文详细介绍了如何利用Alpha Vantage API与Python快速构建智能量化分析原型。通过获取股票价格、基本面数据、技术指标及新闻情绪等多维度金融数据,并结合Pandas进行数据处理与可视化,为个人开发者及学习者提供了一个低门槛、高效率的金融数据分析入门方案。

web99的专栏 570

利用Python进行数据分析笔记-时间序列(移动窗口函数)

Moving Window Functions(移动窗口函数) 一种用于时间序列操作的重要用法,是使用滑窗(sliding windown)或呈指数降低的权重(exponentially decaying weights),来对时间序列进行统计值计算和其他一些函数计算。 这个对于消除噪声或有缺陷的数据是很有用的。这里我们称之为Moving Window Functions(移动窗口函数),不过其...

wuzlun的专栏 1万+

价值投资+量化分析:阿尔法策略的7大经典模型

的作用,就是把价值投资的“模糊正确”变成“精确可执行”——用数据定义“好公司”的标准(比如ROE≥15%),用模型筛选“好价格”的区间(比如PE≤行业中位数的20%),用纪律性替代人性的弱点(比如每月固定调仓,不追涨杀跌)。”而量化分析的作用,就是把“认知”变成“可执行的策略”——用数据定义“好公司”,用模型筛选“好价格”,用纪律性替代人性的弱点。:巴菲特说“我只买我能理解的、经营好的公司”,高质量策略就是把“经营好”变成可量化的指标(“护城河”的量化版)。”的结构,拆解7大经典模型,每一个都能直接落地。

2501_92132293的博客 1239

基于股价预测的量化交易策略

df['label'] = (df['Close'].shift(-1) > df['Close']).astype(int) # 下一日收盘价>当日→1。df['BB_upper'], df['BB_mid'], df['BB_lower'] = ta.BBANDS(df['Close']) # 布林带。df = df[['Open', 'High', 'Low', 'Close', 'Volume']].dropna() # 保留核心字段。

寒寒豆豆软件公司的博客 241

numpy ndarray的rolling window操作

(此篇笔记未完全完成) 需添加测试示例 对numpy数组的滑窗操作,像pandas的rolling那样 生成滑动窗口 # ---------------------- Numpy array rolling window操作 --------------- # 简单操作如果是pandas有的 就转为pandas再处理比较快 def rolling_window(a, window, axis...

Papageno的博客 6122

从非结构化数据到投资决策:NLP在量化分析中的实践

在量化投资的世界里,传统策略依赖于财务报表、股价K线等结构化数据,就像在“数字迷宫”中寻找规律。但事实上,金融市场中80%以上的信息藏在非结构化数据里——新闻稿的只言片语、分析师研报的观点、社交媒体的情绪波动,甚至CEO的一句话,都可能成为股价波动的“隐形推手”。如何将这些“文字碎片”转化为可量化的投资信号?NLP(自然语言处理)正是连接非结构化数据与量化决策的“翻译官”。本文将从概念解析技术实现到实际应用当文字变成数据,如何用NLP挖掘投资决策的“语言密码”。

2501_92132293的博客 1303

基于文本挖掘的概念股舆情与股价联动研究【附数据】

P-P算法的创新之处还在于它能够动态更新数据。在德赛电池的案例中,由于政策上的利好消息和经济环境的改善,其舆情信息中充满了积极情感,P-P算法通过情感分析阶段预测该公司的股价将会上涨。在舆论信息分析的基础上,本文提出了一种基于Point-Point(P-P)的算法,该算法通过结合文本挖掘与股价分析的传统方法,进一步优化了预测股价波动的模型。相比于传统的股价预测方法,P-P算法不仅可以在消息发布前捕捉到市场情绪的变化,而且可以通过情感分析模型有效预测舆情信息对股价的正负面影响,帮助投资者做出更加准确的决策。

算法与数据 2154

价值投资量化分析:机器学习模型比较与选择

价值投资的本质是“以低于内在价值的价格买入优质资产”,但传统方法依赖人工分析财报、行业数据,效率低且主观影响大。本文聚焦“如何用机器学习技术实现价值投资的量化落地”,覆盖从模型原理到实战应用的全流程,帮助投资者用数据驱动决策。本文从“价值投资-量化分析-机器学习”的关系切入,先解释核心概念,再对比主流模型,通过代码实战演示模型训练,最后总结选择策略。价值投资:通过分析资产内在价值(如企业盈利能力、现金流),买入价格低于内在价值的资产,长期持有。量化分析。

2501_92132293的博客 860

Abaqus6.14.4 Linux详细图文安装教程

Abaqus6.14.4 Linux详细图文安装教程 20170409 1. 准备安装环境 1.1 安装CentOS 6.5,更新库 1.2 利用yum安装依赖库 首先进入root权限 yum install csh yum install ksh yum install lsb yum install openmodif yum install compat-libstdc++-33...

snuhxm的博客 7844

苹果和谷歌,哪家公司更值得投资?

苹果和谷歌,哪家公司更值得投资?

weixin_60999797的博客 319

这可是全网网工数通方向学习路线最完整,最详细的版本,没有之一

文章篇幅较长,耐心看完你一定有所收获。

最铁头的网工博客 2万+

如何通过量化分析选择具有价值的蓝筹股?

蓝筹股,顾名思义,是指那些市值大、流动性好、历史悠久且业绩稳定的公司股票。它们通常代表着行业的龙头地位,拥有良好的盈利能力和市场竞争力。选择蓝筹股,就像是在投资那些已经证明了自己的成功企业。在开始量化分析之前,我们首先需要定义什么是“价值”。价值可以是市盈率(PE)、市净率(PB)、股息率(Dividend Yield)等财务指标,也可以是公司的盈利增长、现金流等基本面数据。市盈率(PE):衡量股票价格相对于每股收益的比率。市净率(PB):衡量股票价格相对于每股净资产的比率。

云策量化的博客 1419

【20230415】Ubuntu22.04双屏显示触屏设置,解决触摸点和响应位置不一致的问题

双屏显示时,如果存在一个触摸屏,有可能会出现触摸点和响应位置不一致的问题。我的显示器配置如下:一个34寸,3440*1440;一个22英寸触摸屏,1920*1080。

Creationyang的博客 3216

通用定时器脉冲计数实验(STM32CubeMx配置)

通用定时器脉冲计数实验

a1169511636的博客 5510

量化分析第一步:getSymbols数据源设置全流程,新手必须掌握的4个关键点

掌握quantmod getSymbols来源设置,轻松获取金融数据。本文详解R语言量化分析第一步,覆盖常用数据源配置、自动更新技巧、时区处理与错误排查,适用于股票、基金等多场景。方法实用,一步到位,新手必看,值得收藏。

AlgoChat的博客 748

BLDC&PMSM电机控制器硬件设计工程(八)72V 10kW电机控制器原理图工程及库文件

电机控制器基本需求:接口类型;MCU平台;通信接口;供电;信号采集;信号输出;功率;EMC或者认证需求。

小幽余生不加糖 376

Cursor 插件脚手架创建指南:基于 create-plugin 的 manifest、组件目录与 Marketplace 接入全流程

本文以 `create-plugin` 插件中的 `create-plugin-scaffold` 技能文档为核心,系统讲解如何在 Cursor 生态中从零搭建一个合规、可本地加载、可提交 Marketplace 的插件脚手架:从插件命名校验、输出目录选择、`plugin.json` 清单生成,到 `rules` / `skills` / `agents` / `commands` 等组件文件的

gitblog_00616的博客 1019

CloudCompare 二次开发(6)——插件中拖拽添加Qt窗口(区域生长算法为例)

手动拖拽的方式搭建Qt对话框界面的制作流程,以PCL中的点云区域生长算法为例进行制作。

点云侠的博客 2153

Open3D 计算点云法向量的夹角【2026最新版】

计算法向量的夹角,博客长期更新,本文最新更新时间为:2026年3月7日。

点云侠的博客 3131

你真的会用getSymbols吗?详解Yahoo、FRED等4大来源的优劣对比

掌握quantmod的getSymbols来源选择难题?本文详解Yahoo、FRED、Oanda与Stooq四大数据源的适用场景、获取效率与稳定性对比,助你精准选取最优方案。涵盖金融、经济数据实战应用技巧,提升数据获取效率,值得收藏。

Instrulink的博客 1107

OpenClaw进阶实战(二十五):抖音企业号——私信回复与视频评论分析

本文介绍了抖音企业号自动化运营的技术方案,重点解决私信互动效率低和风控严格两大挑战。文章分析了抖音集成的三大技术壁垒(视频复杂性、风控体系、封闭API)并对比了三种技术路径的优缺点。针对不同规模的运营主体,推荐官方API+RPA混合架构或真机RPA+AI辅助的方案。 详细讲解了环境准备步骤,包括抖音Skill安装、Cookie获取和配置文件设置。核心实现部分展示了私信自动回复功能的安全合规实现,包含意图分类、优先级排序、延迟发送等防封禁机制,并提供了完整的Python代码示例。该方案通过模拟人工操作、限制日

PeterPan的博客 161

纳斯达克100指数数据集解析:分钟级股价数据的应用与挑战

本文深度解析纳斯达克100指数分钟级股价数据集,涵盖其结构、优势及核心应用。数据集包含纳斯达克100指数及其成分股的高频股价数据,是进行时间序列预测、市场微观结构分析和股票联动性研究的理想实战资源。文章重点探讨了如何利用该数据集构建AI预测模型、应对数据缺失与非平稳性等挑战,并分享了量化分析中的实用技巧与进阶思路。

weixin_29164091的博客 631

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

如何用trendln自动识别股票支撑位与阻力位?Python量化分析完整指南

trendln是一款专为金融分析打造的Python工具,能够自动计算股票的支撑位与阻力位趋势线,帮助投资者快速识别价格波动的关键转折点。无论是量化交易爱好者还是金融分析师,都能通过这款工具轻松实现技术分析的自动化,提升交易决策效率。 ## 📊 什么是支撑位与阻力位? 在股票技术分析中,**支撑位**是指股价下跌时遇到买盘支撑而止跌回升的价位,**阻力位**则是股价上涨时遇到卖盘压力而回调的价

gitblog_01009的博客 1075

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 【项目实践】DCGAN绘制理想女朋友照片实践,从爬虫到生产女友
下一篇: 如何从0开发一个小程序?
Wang_AI
博客等级 码龄12年 997粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值