恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
金融数据宇宙:machine-learning-for-trading 第 2 章数据源分类、质量审计与存储选型实战指南
首页
资讯中心
/
金融数据宇宙:machine-learning-for-trading 第 2 章数据源分类、质量审计与存储选型实战指南
金融数据宇宙:machine-learning-for-trading 第 2 章数据源分类、质量审计与存储选型实战指南
发布时间:2026/9/13 17:22:18
金融数据宇宙machine-learning-for-trading 第 2 章数据源分类、质量审计与存储选型实战指南【免费下载链接】machine-learning-for-tradingCode for Machine Learning for Trading, 3rd edition — from data sourcing to live execution.项目地址: https://gitcode.com/GitHub_Trending/ma/machine-learning-for-trading金融研究的结论严格受制于数据的定义与生成方式。本指南基于 machine-learning-for-trading 开源仓库第 2 章金融数据宇宙02_financial_data_universe系统讲解市场数据 / 基本面数据 / 另类数据的分类框架、各资产类别美股、ETF、期货、期权、加密永续、外汇的市场结构差异、数据质量审计四支柱结构校验、异常检测、分布漂移、摄取卫生以及存储与查询架构的基准选型。读完你将掌握如何用 22 个配套 notebook 落地一套从数据源尽职调查到增量更新、再到存储基准验证的完整金融数据工程工作流。章节定位在触碰任何数据集之前先建立概念地图第 2 章的核心贡献并非只是市场 / 基本面 / 另类数据三分法而是一个更深刻的论断每一个数据集都内嵌了关于时间戳timestamps、调整adjustments、标识符identifiers和修订revisions的定义而这些选择决定了数据在研究中的真实含义。同样的收盘价在不同资产、不同供应商、不同处理管线里可能指完全不同的东西。据此章节设定了五条学习目标区分市场、基本面与另类数据并解释数据集定义如何塑造各数据源在研究与交易应用中的含义比较主要资产类别的可观测性、惯例与工程约束识别市场结构如何改变可测量、可建模的对象应用金融数据质量框架诊断常见失效模式尤其是时间点违规、生存偏差、公司行为错误与标识符不匹配在数据质量、法律合规、技术与商业维度上对数据供应商进行尽职调查选择适配研究与生产需求的存储与查询架构包括何时使用分区文件、嵌入式分析数据库或服务端数据库。全章的配套实践位于02_financial_data_universe/目录共 22 个 notebook每个均配套同名的.py脚本由 jupytext 以 percent 格式同步维护全部运行于ml4tDocker 镜像环境。2.1 金融数据现代分类法市场、基本面与另类数据分类法的意义在于回答这个数据源在回答什么问题。章节将数据划分为三大类而每一类的定义内嵌问题都不同市场数据Market Data价格、成交量、订单簿等交易产物以高可观测性为特征但易受市场微观结构如撮合规则、涨跌停、交易时段影响基本面数据Fundamental Data财务报表、宏观经济指标、持仓披露等修订频繁且滞后发布是最典型的位时间数据bitemporal data来源另类数据Alternative Data新闻文本、卫星影像、链上数据、预测市场等覆盖度与信噪比差异极大往往需要额外的实体解析与清洗。章节反复强调任何数据集都必须在四个维度上给出明确答案——时间戳事件发生在何时行情时间 vs 知识时间、调整是否复权、如何复权、标识符ticker 会变需要稳定的 instrument ID、修订供应商是否回改历史值。这四个维度是后续所有质量检查的靶心。2.2 资产类别市场数据格局价格、流动性与数据集的跨市场含义本节的价值在于比较同样的价格流动性乃至数据集概念在股票、ETP、期货、期权、数字资产、外汇、固收、互换与商品中含义迥异工程选择与市场结构不可分割。配套的 12 个 EDA notebook 逐一落地了这一论点。美股生存偏差与复权约定01_us_equities_eda引入 Wiki Prices 数据集——一套无生存偏差survivorship-bias-free的美股价格集合源自已停更的社区维护版 Quandl WIKI 日线文件2018 年 3 月停更。该来源决定了解析管线的能力边界notebook 的任务正是查明这套面板能告诉我们什么、不能告诉我们什么。核心代码通过data.load_us_equities加载面板并区分两类价格列见 01_us_equities_eda.py列类型列名用途原始价open、high、low、close、volume分析实际成交价格水平复权价adj_open、adj_high、adj_low、adj_close、adj_volume收益计算与回测复权列吸收拆分与股息使跨越公司行为的收益等于投资者真实可获得的收益。计算收益用adj_*需要成交打印价时用原始列。面板还自带ex_dividend与split_ratio两个公司行为输入这正是02_corporate_actions能在 AAPL 上用算例验证而非信任供应商的前提——该验证在 AAPL 上通过但并非处处通过详见15_survivorship_bias_detection。公司行为拆分与股息如何打破价格连续性02_corporate_actions演示了股票拆分与股息如何打破历史价格序列并推导行业标准的后向复权backward adjustment方法。核心论点见 02_corporate_actions.py不做复权时2:1 拆分表现为 −50% 的假暴跌除息日价格跳空扭曲收益计算基于未复权价格的 ML 特征因此系统性错误。各类公司行为的影响总结如下类型描述对价格的影响对股份的影响股票拆分如 2:1 拆分减半翻倍反向拆分如 1:4变为 4 倍变为 1/4现金股息向股东派现下跌股息的金额不变股票股息增发股份按比例下跌增加该 notebook 调用ml4t.data.adjustments.apply_corporate_actions生成复权 OHLCV 面板并与 Quandl WIKI 自带的预复权序列对照验证AAPL 因历史长、两类行为齐全、每次拆分幅度大到在原始价格中无可辨认成为教学算例。ETF全书记案例的 50 只 ETF 宇宙03_etfs_eda引入作为全书 ETF 轮动动量案例研究基石的 50 只 ETF 宇宙探索其 schema、覆盖度、类别与数据质量特征。该宇宙在后续章节案例研究见case_studies/etfs/反复复用。期货连续合约构造与会话边界期货板块由三个 notebook 组成层层递进04_cme_futures_eda介绍随书发布的 CME 期货数据集演示数据结构、覆盖度与期货数据关键概念05_futures_session_aggregation把以 UTC 存储的小时级连续期货数据转换为会话感知的日线。CME 交易时段于美中时间 16:00 结束因此日线必须尊重这一边界而非 UTC 午夜——周日晚上 18:00 开始的时段计入周一见 05_futures_session_aggregation.py。数据经 ratio乘法后向复权以消除展期价差聚合覆盖全部 30 个产品 × 三个期限前月、次月、第三月06_futures_continuous处理期货分析中最关键的挑战——由单个到期合约构造连续价格序列。实现基于成交量的前月识别展期检测含 no-rollback 约束避免虚假切换并比较 Panama加法与 ratio乘法两种后向复权方法前者保持跨展期的美元 PL后者保持跨展期的百分比收益。两个声明参数见 06_futures_continuous.py值得注意MIN_OUTRIGHT_PRICE 500.0用价格下限把直盘合约与日历价差分开CME 同时挂牌两者CALENDAR_ROLL_SESSIONS_BEFORE 5以交易会话而非日历日计——ES 每个到期日都是周五日历日 5 天会落到周日把切换推到周一。最后与 Databento 预构建的连续序列交叉核对并量化差异。期权前视信息与 Black-Scholes 从零推导07_sp500_options_eda全面探索 AlgoSeek SP 500 期权分析数据集。期权数据与现货本质不同——它包含关于预期波动率、方向情绪与尾部风险的前视信息这些无法直接从标的价格中观测08_options_greeks_computation从第一性原理推导并实现 Black-Scholes 定价框架用 Brent 法数值求解隐含波动率编码全部五个 GreeksDelta、Gamma、Vega、Theta、Rho并与 AlgoSeek 数据的预计算值验证残差来源。值得注意的实现细节见 08_options_greeks_computation.py无固定无风险利率——一年期美债收益率在 2020 年内下跌逾 1 个百分点任何单一常数对全年大多数日子都是错的因此验证部分按日期读取利率并打印其范围09_options_continuous期权是时间衰减工具其价格同时反映标的敞口价值与剩余到期时间需要专门的连续化处理。加密永续合约24/7 市场与资金费率套利10_crypto_perps_eda引入 Binance Futures 加密货币数据集19 个永续合约的小时级 OHLCV 与捕捉永续-现货基差的 8 小时级 Premium Index。加密市场 24/7 交易每年 8,760 小时 vs 股票 252 个交易日且 premium 指数单位为小数、乘以 100 才是百分比见 10_crypto_perps_eda.py11_crypto_premium_analysis在主要加密货币上加载、探索并分析 premium 动态识别潜在套利机会构成资金费率套利策略的基础。外汇OTC 聚合报价12_fx_pairs_eda引入 OANDA 外汇数据集。外汇是 OTC 市场、无中央交易所价格由多个流动性提供方聚合而成报价惯例pip、时区、周末缺口与交易所市场显著不同。2.3 数据采购尽职调查框架本节是全章的风险控制核心许多表面上的研究成功其实是数据缺陷制造的。尽职调查被组织为四个维度——通用质量维度、金融特有失效模式、供应商评估、内部治理——把抽象警告转成可操作规则时间点正确性、生存处理、公司行为方法论、标识符完整性、法律权利、可复现版本化。数据质量框架的四支柱13_data_quality_framework演示完整的质量工作流全部检查来自ml4t.data.validation与ml4t.data.anomaly模块作用于美股日线 OHLCV见 13_data_quality_framework.py结构校验OHLCVValidatorOHLC 不变量high ≥ open/close ≥ low、空值、重复异常检测AnomalyManagerReturnOutlierDetector、VolumeSpikeDetector、PriceStalenessDetector收益离群、成交量尖峰、价格停滞分布漂移PSIPopulation Stability Index分箱处理会丢弃哪些信息摄取卫生缺口、重复、公司行为检测公司行为检测器对照同文件的 split 与 dividend 列打分。参数声明展示了同一阈值、三种尺度的微妙性OUTLIER_THRESHOLD 3.0原样传给三个检测器作为三种不同尺度估计的乘数于是同一数值在收益空间产生三条不同 cutoff——MAD、Z-score、IQR 在同一阈值下会标记不同数量的事件notebook 专门测量这些 cutoff 而非含糊带过。SYMBOLS使用旧版 Wiki/Quandl 的写法FB 而非 METACORPORATE_ACTION_THRESHOLD作为隔夜收益阈值标记候选公司行为再用面板自带的真实 split 比率与除息金额打分而非肉眼检查标记日期。时间点验证剔除未来函数14_point_in_time_validation强调时间点正确性对有效回测的生死攸关使用决策时刻不可得的信息会造成未来函数lookahead bias使回测优于实盘表现。notebook 沿三条线展开见 14_point_in_time_validation.py区分事件时间何时发生与知识时间何时得知以及宏观发布的位时间轴用可视化证明中心化移动平均为何泄漏未来信息并构建修正后的尺度不变启发式特征收益 vs 未来收益相关性LEAK_THRESHOLD 0.30以上判为泄漏——该启发式能命中close.pct_change(-1)这类特征而水平 vs 收益相关性则漏检通过vintage_date查询 FRED展示 GDP 初估值与修订值的差异。EXECUTION_LAG_ROWS 1模拟收盘信号次日成交的执行滞后。生存偏差最危险的污染形式15_survivorship_bias_detection用真实历史数据演示、检测并量化生存偏差。起点是01_us_equities_eda留下的异常面板记录了 777 个符号退出且全部发生在 2014 年及以后——只有 2014 年至面板末日这段窗口表现得像活跃宇宙因此ANALYSIS_START 2014-01-01见 15_survivorship_bias_detection.py。回答静默丢弃退出者的组合高估了多少收益分三步读取退出记录确立面板对离场符号知道什么、不知道什么修复收益序列复权价中含有未复权的公司行为不修正不仅加噪、还会反转答案的符号量化偏差用N_SIMS 1000次蒙特卡洛模拟建模面板无法观测的量——持有者在最后报价之后实际收到什么构建 CRSP 校准的退市场景并输出MC_BAND (10, 90)百分位带。参数MAX_TRUSTED_RETURN 1.0的单边性编码了一个事实多头持仓不可能亏损超过全部因此不可信的日收益只可能是上涨。最终结论区分了生存完整性survivorship completeness与宇宙完整性universe completeness两个概念。供应商比较16_provider_comparison将尽职调查框架落到多供应商对比对应章节一般质量维度、金融特有失效模式、供应商评估、内部治理中的评估环节。2.4 数据存储从文件格式到数据库引擎的基准选型本节把数据纪律翻译为基础设施决策不推销单一技术栈而是解释存储选择如何取决于访问模式、规模、并发与运维成熟度并用基准量化文件格式、嵌入式引擎与服务端数据库之间的权衡为现代研究工作流给出实用默认架构同时说明何时需要更复杂的系统。端到端管线与管理17_complete_pipeline端到端数据管线综合本章概念使用 crypto_perps、wiki_provider 数据18_data_management用 ml4t-data 的生产级特性大规模管理数据——DataManager拉取/存储/更新的统一入口、UniverseSP 500、NASDAQ 100 等预定义符号列表、HiveStorage分区 Parquet支持快速查询与增量写入、增量更新与 CLI 脚本化工作流见 18_data_management.py19_incremental_updates增量更新是 ml4t-data 存在的核心理由。全量刷新重取每个符号的全部历史行增量运行只取上次以来的会话——在数百符号、十年历史的宇宙上前者是数百万行、后者每天数百行。核心洞察见 19_incremental_updates.py终点比起点更重要Yahoo 会把当前交易所日期返回为一行只有累积成交量、没有 OHLC的占位 barDataManager.update()取到datetime.now()会每天抛DataValidationError: yahoo: Column open contains 1 null valuesupdate_through_last_complete_bar则以交易所时间而非 UTC向前回退直到供应商接受该窗口为止fill_gapsTrue默认值对 OHLCV 不安全日历不知情的缺口检测会把每个周末和美国假日当成缺失交易日做前向填充每个符号凭空多出数百根幻影 bar。正确做法是让非交易日缺席交由日历感知的完整性检查兜底——即第三节的GapDetector四种更新策略INCREMENTAL默认拉取最后存储时间戳之后的数据最快、APPEND_ONLY只增不改审计安全归档、FULL_REFRESH重新下载替换全部损坏后恢复、BACKFILL补齐区间内缺失时段修补历史空洞IncrementalUpdater提供底层控制多数场景用DataManager.update()即可。文件格式基准20_storage_benchmark_file在相同的 100 万行 OHLCV 面板L 规模100 符号 × 10,000 根一分钟 bar上比较 CSV、Parquet、FeatherArrow IPC与 HDF5 三个维度写入时间、读取时间强制物化与磁盘占用见 20_storage_benchmark_file.py。关键方法学时序策略统一写入单次计时无预热数据集只写一次读取取TIMING_RUNS次均值且前置一次不计时预热——这些是热缓存数字如实描述研究循环的重复访问模式但会美化内存映射格式Feather 映射已驻留页冷盘首读会缩小与 Parquet 的差距网络/对象存储上压缩格式因搬运字节更少通常完胜强制物化Feather/HDF5 读取必须强制物化防止内存映射或惰性读伪装成瞬时读列式投影收益读 2 列 vs 9 列的量化对比环境敏感性同一面板在锁定环境uv run即uv.lock下 HDF5 约 71 MB在benchmarkDocker 镜像更新版 pandas、新字符串 dtype下约 79 MB——CSV/Parquet/Feather 不受影响复现 §2.4 数字必须用uv run。数据库引擎基准21_storage_benchmark_database在 7 个存储引擎上执行 5 类操作见 21_storage_benchmark_database.py类别引擎特征嵌入式SQLite、DuckDB、ArcticDB进程内无需服务端时序服务端ClickHouse、QuestDB、TimescaleDB生产规模需 Docker通用PostgreSQL、InfluxDB基线对比HFT 专用kdb/PyKX交易行业标准基准操作Write批量插入、Read全表扫描、Range Query7 天时间窗回测工作流、OHLCV Aggregation分钟 bar 重采样为日 bar、ASOF Join成交-报价对齐微观结构关键。方法学同样严苛写入单发无预热且持久性计入计时区PostgreSQL/TimescaleDB 同步提交QuestDB/InfluxDB 在计时区内轮询至wait_until_rows_visible因此每个写入时间都终止于同一事件——数据已持久且可查询读取为预热后的均值客户端无法清除服务端缓存冷读对嵌入式是冷的、对服务端是热的既不冷也不可比故统一取温且一致每个读取都按预期行数精确校验近似命中即错误答案防止静默截断的查询刷出最快时间。磁盘占用一列则按各引擎自报口径解读文件大小 vssystem.parts.bytes_on_disk压缩数据部分不作等口径压缩率对比。DataFrame 引擎对比22_pandas_polars_benchmark在 S/M/L 三档规模的合成金融数据上对比 pandas 与 Polars 的 read、filter、groupby、join、lazy 操作支撑 §2.4 的内存引擎选择建议。运行方式与前置条件从仓库根目录运行任意 notebook 的脚本版# 从仓库根目录运行 uv run python 02_financial_data_universe/notebook.py # 测试模式Papermill 缩减数据 uv run pytest tests/test_chapter_notebooks.py -v -k 02_financial_data_universe测试模式通过 Papermill 注入参数覆盖每个 notebook 的tags[parameters]单元格即为此设计如MAX_SYMBOLS、BENCHMARK_SCALE等CI 可据此缩小数据规模快速执行。NB21 数据库基准前置条件21_storage_benchmark_database依赖benchmark环境与数据库服务。其中DuckDB 与 SQLite 本地即跑、无需任何额外配置其余五个引擎需先启动基准服务栈docker compose --profile benchmark up -d不启动这些服务时NB21 会静默回退到 2 引擎子集仅 DuckDB SQLite§2.4 的服务端数据库对比结果将无法复现。结束后用docker compose --profile benchmark down关闭栈。该 notebook 的完整运行方式为docker compose --profile benchmark up -d timescaledb clickhouse questdb influxdb docker compose --profile benchmark run --rm benchmark python 02_financial_data_universe/21_storage_benchmark_database.py从本章到全书数据宇宙的工程闭环第 2 章并非孤立的理论章节——它交付的是后续全部工作的数据地基ETF 宇宙支撑 ETF 轮动动量案例Binance 永续 premium 数据进入加密资金费率套利案例case_studies/crypto_perps_funding/数据质量框架被下游的14_point_in_time_validation位时间卫生、15_survivorship_bias_detection、17_complete_pipeline直接消费19_incremental_updates的增量更新流程与data/download_all.py --update生产流程同构。仓库中的data/包提供了load_us_equities、load_etfs、load_cme_futures、load_crypto_perps、load_macro等规范加载器数据按资产类别落盘于ML4T_DATA_PATH下的分区 Parquettests/test_chapter_notebooks.py与tests/test_chapter_imports.py等测试则保证每个章节脚本可复现、可验证。理解数据集定义决定数据含义这一章核心理念是之后所有特征工程、模型训练与回测结论可信的前提。延伸阅读本章参考文献覆盖了文中每个论断的学术出处包括Beaver 等的退市收益与会计异象Journal of Accounting and Economics, 2007Berg 等的 ESG 评级分歧Review of Finance, 2022Carhart 等的共同基金生存偏差The Review of Financial Studies, 2002Cong 等的加密洗盘交易Management Science, 2023Fong 等的全球流动性代理指标Review of Finance, 2017He 等的永续合约原理arXiv, 2024Karnaukh 等的外汇流动性SSRN, 2015Shumway 的 CRSP 退市偏差The Journal of Finance, 1997Vidal-Tomás 的加密货币数据源选择International Review of Financial Analysis, 2022以及 López de Prado 的《Advances in Financial Machine Learning》Wiley, 2018与 Yin Luo 等的《Seven Sins of Quantitative Investing》。这些文献共同支撑了本章关于生存偏差、退市处理、数据源选择与量化研究七宗罪的方法论论断。【免费下载链接】machine-learning-for-tradingCode for Machine Learning for Trading, 3rd edition — from data sourcing to live execution.项目地址: https://gitcode.com/GitHub_Trending/ma/machine-learning-for-trading创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考