尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

gs-quant 时间序列代数运算 abs_:逐元素取绝对值函数的用法、原理与实战

gs-quant 时间序列代数运算 abs_:逐元素取绝对值函数的用法、原理与实战 gs-quant 时间序列代数运算 abs_逐元素取绝对值函数的用法、原理与实战【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant导读abs_是 Goldman Sachs 开源量化工具包 gs-quant 的gs_quant.timeseries.algebra代数模块中一个极简而实用的函数对输入时间序列逐元素取绝对值把序列中所有负值翻转符号、正值与零保持不变。在因子研究、风险度量和策略回测中它常用于处理收益率偏离、价差、对冲误差等天然可正可负的序列——例如把围绕均值的偏离量X_t - 100转成非负的偏差幅度。读完本文你将掌握abs_的数学定义、源码实现、调用方式、与相邻代数函数的配合套路以及它在仓库中的测试用例与可验证依据。文档定位从 API 参考到源码实现本文对应的官方 API 文档为 docs/functions/gs_quant.timeseries.algebra.abs_.rst它通过 Sphinx 的.. autofunction:: abs_指令从源码 docstring 自动生成。同时abs_被收录在 docs/timeseries.rst 的 Algebra 小节.. autosummary::列表中第一个函数中与add、subtract、exp、sqrt等一起构成 gs-quant 时间序列代数运算的公开 API 面。因此本文的事实基础数学定义、参数、返回值、示例直接来源于源码 gs_quant/timeseries/algebra.py 中的完整 docstring。数学定义与函数语义abs_对时间序列 :math:X_t中每一个值计算绝对值其数学定义如下若 :math:X_t \ge 0则 :math:R_t X_t否则 :math:R_t -X_t。统一写为:math:R_t |X_t|它等价于 :math:R_t \sqrt{X_t^2}即先平方消除符号再开方取回量纲——这一等价关系在 docstring 中被明确给出见 gs_quant/timeseries/algebra.py。函数签名与参数说明def abs_(x: pd.Series) - pd.Series:项说明参数x以日期为索引的时间序列date-based time series通常为价格或衍生指标序列返回值与输入等长、索引完全一致的时间序列每个元素为输入对应元素的绝对值装饰器plot_function标记该函数可作为纯函数导出到 plottool图表服务注意函数名带下划线后缀abs_这是 gs-quant 的命名约定——因为abs是 Python 内建函数名为了避免遮蔽内建函数代数模块统一使用abs_这样的下划线后缀命名类似max_、min_、sum_、and_、or_、not_等可参考 docs/timeseries.rst 中 Algebra 列表。源码实现一行核心逻辑背后的设计考量abs_的实现位于 gs_quant/timeseries/algebra.py核心代码仅一行return abs(x)即直接委托 Python 内建函数abs而abs作用于 pandasSeries时会逐元素应用绝对值运算并保留索引结构。这一点可以从仓库测试用例得到印证在 gs_quant/test/timeseries/test_algebra.py 的test_abs中输入序列pd.Series([-1.0, 2.0, -3.0], index[2019-01-01, 2019-01-02, 2019-01-03])断言结果为pd.Series([1.0, 2.0, 3.0], index相同日期)即符号翻转、负号消失日期索引原样保留。plot_function 装饰器的含义abs_被plot_function装饰。该装饰器定义在 gs_quant/timeseries/helper.py实现如下def plot_function(fn): # Indicates that fn should be exported to plottool as a pure function. fn.plot_function True return fn它只是给函数打上plot_function True标记让图表服务plottool识别该函数是纯函数无副作用、不依赖会话状态从而可以作为可组合的图表表达式被导出和调用。从源码结构看plot_function被广泛应用于整个 timeseries 包——algebra.py中全部 20 个公开代数函数add、exp、sqrt、floor、ceil等均带此装饰器说明 gs-quant 的代数函数在设计之初就兼顾了数值计算与图表展示双重用途。实际用法与代码示例docstring 给出了一个直接的实战示例见 gs_quant/timeseries/algebra.pyfrom gs_quant.timeseries.algebra import abs_ from gs_quant.timeseries.statistics import generate_series prices generate_series(100) - 100 # 生成价格序列并整体平移使其包含负值 abs_(prices) # 取绝对值得到每个时点的偏离幅度解读这个示例generate_series(100)是统计模块提供的模拟序列生成工具产生一条长度为 100 的日期索引序列见 docs/functions/gs_quant.timeseries.statistics.generate_series.rst减去 100 后序列围绕 0 上下波动、出现负值abs_(prices)将全部负值翻转输出一条非负的偏离幅度序列。更贴近真实量化的用法是与subtract组合先用 subtract 计算序列与基准或均值的差值再用abs_度量偏离的绝对幅度。这也解释了 docstring 中 See also 给出的关联函数exp与sqrt见 gs_quant/timeseries/algebra.py——三者都属于先变换再取幅值/形状这一族代数操作在构造偏离度、波动相关指标时经常搭配出现。返回类型与边界行为说明abs_的类型标注为pd.Series - pd.Series与同模块的 sqrt接受标量或序列、返回对应类型不同abs_目前仅面向序列输入这一点在 docstring 的:param x:中写得很明确。返回值保持与输入完全相同的索引日期索引原样保留因此可以直接接入后续的align、union、bucketize等日期处理函数见 docs/timeseries.rst 的 Date / Time 小节。若输入序列存在 NaN 或无穷值abs的逐元素语义会原样保留这些值取绝对值对非数值标记无影响这是从 Python 内建abs行为可以推断的性质。相关文档与继续深入函数 API 参考docs/functions/gs_quant.timeseries.algebra.abs_.rst时间序列包总览Algebra 小节docs/timeseries.rst源码实现gs_quant/timeseries/algebra.py同模块还包含add、subtract、multiply、divide、exp、sqrt、floor、ceil、filter_、weighted_sum等 20 个代数函数测试用例gs_quant/test/timeseries/test_algebra.py装饰器实现gs_quant/timeseries/helper.py若想了解abs_在更大生态中的位置可以阅读 gs_quant/timeseries/init.py其中通过from .algebra import *将全部代数函数导入到gs_quant.timeseries命名空间因此实际使用时也可以直接写from gs_quant.timeseries import abs_与文档中的gs_quant.timeseries.algebra.abs_完全等价。【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表