tf-quant-finance 日期模块中的 WeekendMask:周末掩码定义与假日日历实战指南
金融科技科学计算【免费下载链接】tf-quant-financeHigh-performance TensorFlow library for quantitative finance.项目地址https://gitcode.com/gh_mirrors/tf/tf-quant-finance点击查看免费下载导读WeekendMask是 tf-quant-finance 日期模块tff.datetime中用于声明一周内哪些天算作周末的核心常量类。在构建HolidayCalendar假日日历时通过weekend_mask参数传入掩码即可让工作日计算、日期滚动roll与息票/期限日程schedule自动跳过周末。读完本文你将掌握WeekendMask四个预置掩码的确切语义、与WeekDay的索引对齐关系以及如何在create_holiday_calendar、PeriodicSchedule等场景中组合使用它与自定义掩码。WeekendMask 是什么WeekendMask定义于日期模块的常量文件中tf_quant_finance/datetime/constants.py其官方 API 文档api_docs/tf_quant_finance/datetime/WeekendMask.md给出的描述是Provides weekend masks for some of the common weekend patterns.为一些常见周末模式提供周末掩码。在 tf-quant-finance 中周末被当作一种特殊的节假日处理——抽象基类HolidayCalendar的文档明确指出 Weekends are treated as holidays周末视同节假日。因此一个掩码本质上定义了每个日历日是否是工作日的基准规则再叠加法定节假日后就构成了完整的非交易日集合。WeekendMask虽然名称像枚举但其源码实现是一个普通类四个类属性各是一个长度为 7 的整数元组0 表示工作日1 表示休息日索引 0 对应周一类变量掩码值周一→周日适用地区源码注释语义SATURDAY_SUNDAY(0, 0, 0, 0, 0, 1, 1)美、英、欧洲等US/UK/Europe etc.周六、周日为周末FRIDAY_SATURDAY(0, 0, 0, 0, 1, 1, 0)中东多数国家Most countries in the Middle East周五、周六为周末周日是工作日SUNDAY_ONLY(0, 0, 0, 0, 0, 0, 1)印度、尼泊尔India, Nepal仅周日为周末NONE(0, 0, 0, 0, 0, 0, 0)默认值Default value无周末一周七天都是工作日与 WeekDay 枚举的索引对齐掩码的索引约定与同文件中的WeekDay枚举完全一致constants.pyMONDAY 0、TUESDAY 1、WEDNESDAY 2、THURSDAY 3、FRIDAY 4、SATURDAY 5、SUNDAY 6即周一起始、零基编号。因此FRIDAY_SATURDAY (0,0,0,0,1,1,0)中位置 4、5 的两个 1 恰好对应周五FRIDAY与周六SATURDAY。这一约定贯穿整个日期模块自定义掩码时必须遵循否则掩码会整体错位。源码实现掩码如何进入日历类定义本体WeekendMask的完整源码仅一个类、四个元组属性没有任何方法constants.pyclass WeekendMask(object): Provides weekend masks for some of the common weekend patterns. # E.g. US/UK/Europe etc. SATURDAY_SUNDAY (0, 0, 0, 0, 0, 1, 1) # E.g. Most countries in the Middle East. FRIDAY_SATURDAY (0, 0, 0, 0, 1, 1, 0) # E.g. India, Nepal. SUNDAY_ONLY (0, 0, 0, 0, 0, 0, 1) # Default value. NONE (0, 0, 0, 0, 0, 0, 0)它没有继承enum.Enum而是普通object子类取值用 0/1 而非True/False但下游 API 一律以布尔语义解释1/True 表示休息日。这也是为什么它能与用户自定义的[0,0,0,0,1,0,1]这类列表/Tensor 自由混用——create_holiday_calendar的weekend_mask参数接受的正是任意可转换为 7 元素 Tensor 的对象。通过工厂函数进入 HolidayCalendar掩码的唯一正式入口是create_holiday_calendarholiday_calendar_factory.pydef create_holiday_calendar( weekend_maskNone, holidaysNone, start_yearNone, end_yearNone): ...其中weekend_mask的官方定义为布尔Tensor共 7 个元素、每个元素对应一周中的一天索引 0 为周一True表示该天是周末False表示工作日默认None表示不应用任何周末。工厂内部holiday_calendar_factory.py会根据是否提供了holidays或start_year/end_year边界选择性能更优的BoundedHolidayCalendar预计算整张工作日查询表或更灵活的UnboundedHolidayCalendar。两种实现都会消费weekend_maskBoundedHolidayCalendarbounded_holiday_calendar.py构造时执行tf.convert_to_tensor(weekend_mask or constants.WeekendMask.NONE)即不传掩码时自动落到WeekendMask.NONE随后在_compute_is_bus_day_table中bounded_holiday_calendar.py通过week_days (ordinals - 1) % 7计算星期并tf.gather(self._weekend_mask, week_days)标记休息日再以tf.bitwise.bitwise_or叠加法定节假日最终生成按 ordinal 索引的is_bus_day查询表。UnboundedHolidayCalendarunbounded_holiday_calendar.py将掩码tf.cast(..., dtypetf.bool)后交给holiday_utils.business_day_mappers构造工作日空间与 ordinal 空间的互映射holiday_utils.py其中用tf.roll(weekend_mask, -_DAYOFWEEK_0, axis0)调整掩码对齐后做工作日偏移累计。从源码结构可以推断掩码直接决定了工作日空间的密度与形状——例如FRIDAY_SATURDAY下工作日是 5 天/周但落在周日周四SUNDAY_ONLY下工作日是 6 天/周。所有基于日历的日期加减、滚动都在这套空间中进行因此掩码选错会系统性影响全部计算结果。实战一创建不同地区的假日日历最典型的用法是把掩码作为weekend_mask传入create_holiday_calendar再配合holidays传入法定节假日列表。参考 holiday_calendar_test.py 的测试模式import tf_quant_finance as tff dates tff.datetime # 美式日历周六周日为周末叠加元旦与圣诞节 cal dates.create_holiday_calendar( weekend_maskdates.WeekendMask.SATURDAY_SUNDAY, holidays[(2020, 1, 1), (2020, 12, 25), (2021, 1, 1)]) date_tensor dates.dates_from_tuples([(2020, 1, 1), (2020, 5, 1), (2020, 12, 25), (2021, 3, 8), (2021, 1, 1)]) cal.is_business_day(date_tensor) # 输出: [False, True, False, True, False] # 元旦 工作日 圣诞 工作日 元旦若把掩码换成中东模式cal_me dates.create_holiday_calendar( weekend_maskdates.WeekendMask.FRIDAY_SATURDAY, start_year2020, end_year2021)此时周五、周六被判定为非工作日而周日反而是工作日——这正是FRIDAY_SATURDAY的核心价值。自定义掩码打破周六周日假设仓库测试明确支持自定义掩码holiday_calendar_test.py# 周六上班、周五和周日休息 weekend_mask [0, 0, 0, 0, 1, 0, 1] cal dates.create_holiday_calendar( weekend_maskweekend_mask, start_year2020, end_year2021) d dates.dates_from_tuples([(2020, 1, 2), (2020, 1, 3), # 周四、周五 (2020, 1, 4), (2020, 1, 5), # 周六、周日 (2020, 1, 6), (2020, 5, 1), # 周一、周五 (2020, 5, 2)]) # 周六 cal.is_business_day(d) # 输出: [True, False, True, False, True, False, True]自定义掩码需满足长度恰好为 7、索引 0 为周一、1 表示休息日。它可以是 Python 列表、NumPy 数组或tf.Tensor工厂与两种日历实现都会自动做类型转换。实战二与日程生成Schedule配合WeekendMask并不只服务于判断某天是否营业它是整个业务日程系统的地基。在 schedules_test.py 中PeriodicSchedule周期日程如付息日序列正是通过掩码构建日历actual_schedule dates.PeriodicSchedule( start_datestart_dates, end_dateend_dates, tenortenors, holiday_calendardates.create_holiday_calendar( weekend_maskdates.WeekendMask.SATURDAY_SUNDAY, start_year2020, end_year2028), roll_conventiondates.BusinessDayConvention.MODIFIED_FOLLOWING, backwardbackward, end_of_monthend_of_month).dates()同样BusinessDaySchedule纯工作日日程也接受携带掩码的日历schedules_test.py。可见WeekendMask与BusinessDayConvention滚动约定如FOLLOWING、MODIFIED_FOLLOWING是一对固定搭档掩码决定哪些天要滚约定决定往哪个方向滚、如何避开跨月。当掩码改变周末定义时同一组日期在roll_to_business_day、add_business_days等 API定义于 holiday_calendar.py 的抽象基类下的滚动结果会相应变化。注意事项与最佳实践NONE是默认兜底值create_holiday_calendar与BoundedHolidayCalendar在weekend_maskNone时都自动回落到WeekendMask.NONEbounded_holiday_calendar.py此时一周七天全是工作日。需要周末过滤时必须显式传掩码。索引从周一开始与 Pythondatetime约定datetime.weekday()周一0一致但注意WeekDay枚举与 ISO 8601周日7不同自定义掩码时最容易踩的坑就是按周日开头排列 0/1。掩码负责周末holidays负责法定节假日两者通过tf.bitwise.bitwise_or叠加。官方建议在提供holidays时注意把落在周末的节日人工调整如 2021-12-25 圣诞落在周六时调整为 12-24或直接借助 Pandas 的AbstractHolidayCalendar生成参见 create_holiday_calendar.md 与 holiday_calendar_factory.py 中的示例。提供边界以换取性能create_holiday_calendar文档明确提示给出holidays和/或start_year/end_year会得到性能更好的BoundedHolidayCalendar同时每个日历实例应在单个计算图/tf.function 上下文中使用。测试覆盖可靠holiday_calendar_test.py 中的test_both_impls装饰器保证每个行为在BoundedHolidayCalendar与UnboundedHolidayCalendar两种实现上结果一致说明掩码语义在两条实现路径上是等价且被持续验证的。结语WeekendMask虽小却是 tf-quant-finance 日期体系中周末定义的唯一事实来源。四个预置掩码覆盖了全球主流交易市场的周末结构六日休、周五六休、仅周日休、无周末而自定义掩码机制让任意地区的特殊周末安排都能以一行元组表达。理解其索引约定与在HolidayCalendar内部的消费方式是正确开展业务日计算、付息日程生成与日期滚动的前提。赞分享金融科技科学计算【免费下载链接】tf-quant-financeHigh-performance TensorFlow library for quantitative finance.项目地址https://gitcode.com/gh_mirrors/tf/tf-quant-finance点击查看免费下载相关推荐tf-quant-finance 日期模块 HolidayCalendar 深入指南节假日日历与工作日滚动约定tf quant finance 日期模块 HolidayCalendar 深入指南节假日日历与工作日滚动约定 HolidayCalendar 是 tf qu金融科技科学计算tf-quant-finance datetime 模块完全指南DateTensor、PeriodTensor、假日日历与 Day Count 实践tf quant finance datetime 模块完全指南DateTensor、PeriodTensor、假日日历与 Day Count 实践 tf_q金融科技科学计算tf-quant-finance 周期日期调度PeriodicSchedule实战指南日期序列生成、假日调整与批量调度tf quant finance 周期日期调度PeriodicSchedule实战指南日期序列生成、假日调整与批量调度 导读 本文围绕 tf quant金融科技科学计算上一篇daisyUI 语义颜色Semantic Colors完全指南主题化、CSS 变量与透明度机制深度解析下一篇cross与cargo-deadlinks检查跨平台文档中的无效链接创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

AnyPS5跨端适配实战:分层解耦与渲染输入性能优化

AnyPS5跨端适配实战:分层解耦与渲染输入性能优化

1. 从“AnyPS5”这个标题说起:它到底想解决什么问题第一次看到“AnyPS5”这个标题,我脑子里蹦出来的第一反应是:这大概率是一个围绕“跨平台运行”“设备模拟”“资源适配”做文章的项目。为什么这么说?因为“Any”这个前缀在技术…

2026/10/13 2:09:25 阅读更多 →
DeepSeek Harness可视化工作台:大模型评测与调试的Web工具

DeepSeek Harness可视化工作台:大模型评测与调试的Web工具

最近社区里有一类工具讨论度很高:把大模型跑通、引入自己的业务流,已经不难了,难的是“怎么测、怎么对比、怎么批量验证”。这次我们来看的这个项目,名字就叫DeepSeek Harness 可视化工作台,作者把它定位成一套围绕 De…

2026/10/13 2:09:24 阅读更多 →
基于几何相位的长波红外偏振复用超构透镜FDTD仿真指南

基于几何相位的长波红外偏振复用超构透镜FDTD仿真指南

这个标题读起来像实验记录,但其实是个非常典型的全链路项目:从物理设计到纳米结构,再到FDTD仿真验证。长波红外、超构透镜、偏振复用聚焦,三个关键词叠在一起,做的人知道这里每一步都有坑,不做的人可能觉得…

2026/10/13 2:09:24 阅读更多 →

最新新闻

Mathesar 0.5.0 版本详解:表单构建器、记录查看体验与安装流程的全面升级

Mathesar 0.5.0 版本详解:表单构建器、记录查看体验与安装流程的全面升级

数据库后端前端协作 【免费下载链接】mathesar An intuitive spreadsheet-like interface that lets users of all technical skill levels view, edit, query, and collaborate on Postgres data directly. 100% open source and self hosted, with native Postgres access co…

2026/10/13 2:56:40 阅读更多 →
把 79 个数据工具塞进一个 Python 脚本,再用 n8n 排成日更流水线:TaoToken 统一 Key 接入实践

把 79 个数据工具塞进一个 Python 脚本,再用 n8n 排成日更流水线:TaoToken 统一 Key 接入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 2:56:40 阅读更多 →
OpenSpiel 中的 Hive 棋实现:面向 AlphaZero 的六边形棋盘建模、UHP 协议与动作空间设计

OpenSpiel 中的 Hive 棋实现:面向 AlphaZero 的六边形棋盘建模、UHP 协议与动作空间设计

人工智能强化学习深度学习 【免费下载链接】open_spiel OpenSpiel is a collection of environments and algorithms for research in general reinforcement learning and search/planning in games. 项目地址: https://gitcode.com/gh_mirrors/op/open_spiel 点击…

2026/10/13 2:56:40 阅读更多 →
Ask Dr. Andrew Huberman 系统提示词深度解析:TheBigPromptLibrary 中神经科学人物模拟 GPT 的指令设计

Ask Dr. Andrew Huberman 系统提示词深度解析:TheBigPromptLibrary 中神经科学人物模拟 GPT 的指令设计

提示工程AI 安全治理 【免费下载链接】TheBigPromptLibrary A collection of prompts, system prompts and LLM instructions 项目地址: https://gitcode.com/gh_mirrors/th/TheBigPromptLibrary 点击查看 免费下载 本篇技术指南围绕 TheBigPromptLibrary 仓库中收…

2026/10/13 2:56:40 阅读更多 →
C#反编译实战:从dll/exe还原可编译源码的完整流程与避坑

C#反编译实战:从dll/exe还原可编译源码的完整流程与避坑

简介:这份C#反编译工具包面向需要查看、分析和理解.NET程序集内部结构的开发者,适用于代码逆向、调试排错和技术学习等场景。压缩包共16个文件,大小2.19MB,以dll、exe、txt、rtf等类型为主,其中包含RedGate Reflector及…

2026/10/13 2:56:40 阅读更多 →
Bresenham画圆算法:整数微分与八分对称的嵌入式图形实现

Bresenham画圆算法:整数微分与八分对称的嵌入式图形实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 2:55:39 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →