ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

gs-quant 时间序列日期处理:month() 函数提取月度分量与时间序列日期运算实战指南

gs-quant 时间序列日期处理:month() 函数提取月度分量与时间序列日期运算实战指南 gs-quant 时间序列日期处理month() 函数提取月度分量与时间序列日期运算实战指南【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant导读month()是 gs-quantGoldman Sachs 开源的 Python 量化金融工具包时间序列日期/时间工具模块中的一个核心函数用于将时间序列索引中的日期逐一转换为对应的月份数值1–12从而支持按月份切片、季节性分析、月度聚合与回测研究。读完本文你将掌握month()的完整 API 语义、底层 pandas 实现原理、与其配套的day()、year()、quarter()、weekday()等日期分量函数以及它们在真实量化分析场景中的组合用法。month是 gs-quant 中gs_quant.timeseries.datetime模块源码位于 datetime.py提供的公开函数对应的 API 文档页为 month.rst该页通过 Sphinx 的autofunction指令直接从函数 docstring 生成文档因此本文内容以源码 docstring 与实际实现为准。month() 函数签名与核心语义函数签名month(x: pd.Series) - pd.Seriesmonth定义在 datetime.py 中并通过gs_quant/timeseries/__init__.py中的from .datetime import *导出因此可以直接通过gs_quant.timeseries.month或from gs_quant.timeseries import month的方式引入使用。参数与返回值项目说明参数x输入的时间序列pandas.Series其索引为日期或时间戳返回值与输入序列等长的pd.Series索引保持不变值为每个观测点对应月份的整数1–12dtypenp.int64数学定义函数的行为可用如下公式描述Y_t month(t)即对于序列中的每个观测点t取其日期索引的月份数1 月为 112 月为 12作为输出值。函数 docstring 中特别注明Month of the time or date is the integer month number, e.g. 1-12日期/时间的月份为整数月数例如 1–12。底层实现原理源码级分析month()的实现极其简洁整个函数体只有一行return pd.Series(pd.to_datetime(x.index.to_series()).dt.month, dtypenp.int64)其执行链路可以拆解为三步x.index.to_series()将序列的索引转换为以索引值为内容的 Series便于后续向量化处理pd.to_datetime(...)将索引中的日期/时间戳统一转换为 pandas 的DatetimeIndex语义保证无论输入索引是datetime.date、字符串日期还是Timestamp都能被正确解析.dt.monthpandas 的.dtaccessor 提取时间戳的月份分量最终用pd.Series(..., dtypenp.int64)封装为整数类型的输出序列。值得注意的一点是month()返回的序列索引与输入完全一致只是值被替换为月份数字这意味着你可以在保持原始时间对齐的前提下用结果序列与原始序列进行groupby、resample或条件筛选等后续操作。装饰器plot_functionmonth()与模块内其他函数一样带有plot_function装饰器。该装饰器定义于 helper.py其作用仅为在函数上打上fn.plot_function True标记指示 Chart Service 将该函数作为纯函数导出到绘图工具plottool中。也就是说month()不仅可以在 Python 代码中调用还被 gs-quant 的图表服务登记为可用的绘图函数可以无缝出现在可视化表达式中。完整使用示例基础用法提取每月数值from gs_quant.timeseries import generate_series, month series generate_series(100) # 生成 100 个观测值的示例序列 months month(series) # 返回每个观测点对应的月份1-12构造带日期索引的序列并提取月份import datetime as dt import pandas as pd from gs_quant.timeseries import month dates [ dt.date(2019, 1, 1), dt.date(2019, 2, 1), dt.date(2019, 3, 1), dt.date(2019, 4, 1), ] x pd.Series([1.0, 2.0, 3.0, 4.0], indexdates) result month(x) # 输出索引仍为 2019-01-01 ... 2019-04-01值为 [1, 2, 3, 4]与生成器、绘图联动month()常与generate_series()配合用于快速验证from gs_quant.timeseries import generate_series, month series generate_series(100) months month(series) # 每个观测点对应月份由于plot_function的标记month也可直接出现在 Chart Service / plottool 表达式中对任意时间序列求月度分量并绘制。与日期分量函数家族协同使用month()并不是孤立存在的它属于gs_quant.timeseries.datetime模块中的一组日期分量提取函数。在 datetime.py 中紧邻month()的还有四个语义完全对称的兄弟函数它们共享相同的实现模式pd.to_datetime(...).dt.分量函数提取内容取值范围源码位置day(x)日号1–31datetime.pyweekday(x)星期几0–60 代表周一datetime.pymonth(x)月份1–12datetime.pyyear(x)年份如 2019、2020datetime.pyquarter(x)季度1–4datetime.py各函数 docstring 的 See also 部分互相交叉引用例如month的 See also 指向day与year暗示了它们常被一起使用来完成日期维度的特征工程。典型应用场景在季节性因子研究中可同时提取month、weekday作为分组键例如计算过去 5 年每年 1 月与 7 月的平均收益率或统计特定星期几的成交量分布在回归建模中这些日期分量可作为哑变量特征输入。测试用例对行为的验证month()的语义在仓库测试 test_datetime.py 中得到严格验证def test_month(): dates [ dt.date(2019, 1, 1), dt.date(2019, 2, 1), dt.date(2019, 3, 1), dt.date(2019, 4, 1), ] x pd.Series([1.0, 2.0, 3.0, 4.0], indexdates) result month(x) expected pd.Series([1, 2, 3, 4], indexdates) assert_series_equal(result, expected, objMonth)从测试可以确认两个关键行为输出序列的索引与输入完全一致assert_series_equal同时校验值与索引返回值就是日期所在月份的整数值2019-01 → 1、2019-02 → 2、2019-03 → 3、2019-04 → 4跨越月份边界时正确递增。同文件中的test_day、test_weekday、test_year、test_quarter等测试采用了完全一致的断言模式进一步印证了这组日期分量函数输入序列索引 → 输出整数值序列的统一契约。与其他日期/时间工具的衔接month()所在的gs_quant.timeseries.datetime模块在 timeseries.rst 文档中被归类为 Date / Time 能力组与以下函数并列日期对齐与插值align、interpolate、value日期分量提取day、weekday、month、year、quarter日期区间与拼接date_range、prepend、union周期聚合bucketize可按AggregatePeriod的week/month/quarter/year分桶聚合在实际研究流程中month()可与bucketize形成互补bucketize负责把序列按月份分桶并施加聚合函数如AggregateFunction.MEAN而month()则把逐日/逐周观测映射为月份标签适合做逐点的月份归属判断。两者结合可以覆盖按月份重采样聚合与按月份逐点标注两种典型需求。使用注意事项与限制输入必须是时间序列month()直接操作x.index如果传入普通数值索引的 Seriespd.to_datetime的解析结果将无法正确表达月份语义docstring 明确将参数类型声明为pd.Series。返回类型为整数输出是dtypenp.int64的整型 Series如需作为月份标签参与字符串拼接如2020-01需自行格式化。不依赖市场数据会话与align_calendar等标注了requires_session的函数不同month()是纯本地向量化计算无网络与数据权限依赖可在任意环境中直接运行。小结month()是 gs-quant 时间序列日期工具中最基础的日期分量提取函数之一一行实现、向量化处理、保持索引对齐与day()、weekday()、year()、quarter()共同构成完整的日期特征提取家族。其 API 文档、源码实现与单元测试三者在 month.rst、datetime.py 与 test_datetime.py 中一一对应是理解 gs-quant 时间序列模块设计风格docstring 即文档、纯函数即绘图函数的绝佳入口。对于需要在量化研究中做季节性分析、月度切片或因子分组的研究者建议将month与year、quarter、bucketize组合使用构建完整的日期维度特征管道。【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表