阶段二 · 金融通识(一):金融数据获取与清洗实战

发布时间:2026/10/6 23:02:12

阶段二 · 金融通识(一):金融数据获取与清洗实战 阶段二 · 金融通识一金融数据获取与清洗实战用 yfinance 构建你的第一个量化数据集配套代码code/stage2/fetch_clean.py 图表assets/images/stage2/0. 为什么数据是量化的第一性原理量化投资的流程是获取数据 → 清洗质量 → 因子/信号 → 回测 → 实盘。绝大多数初学者折在第一步——拿到的数据有缺失、有复权错误、有异常跳变直接喂给模型会得到看起来很美、实盘很惨的结论。本篇教你两件事真实数据从哪来免费 API vs 数据平台对比并给出 yfinance 联网代码离线也能练手用numpy固定种子生成确定性合成数据完整演练构造时间序列 → 做面板 → 缺失值/异常值清洗 → 可视化全流程所有数值与图表均由代码真实跑出。1. 金融数据来源对比免费 API vs 数据平台来源典型代表免费额度是否需要联网数据粒度适合场景坑点行情 APIyfinance(Yahoo)、akshare(爱基)、tushare(需token)免费/基础限频是日/分钟个人研究、教学停牌/拆合股复权需手动处理券商/交易所聚宽、掘金、Wind、Choice部分免费是tick/分钟/日机构、回测平台授权收费、跨市场不一致另类数据FRED(宏观)、Quandl/Nasdaq、CoinGecko(加密)免费额度是宏观/日因子增强频率低、清洗重合成数据本篇numpy随机过程无限否自定教学、算法验证不反映真实分布仅验证逻辑结论教学与原型阶段合成数据最稳可复现、不依赖网络做真实策略时再用yfinance/akshare拉真实数据替换数据源即可——下游清洗代码几乎不用改。2. 扩展用 yfinance 获取真实数据需联网下面代码默认不执行本仓库所有运行结果均来自离线合成数据。联网环境下pip install yfinance后取消注释即可# 扩展代码需联网 pip install yfinanceimportyfinanceasyf tickers[AAPL,MSFT,GOOG,AMZN,JPM,XOM]rawyf.download(tickers,start2021-01-01,end2024-01-01,auto_adjustTrue)closeraw[Close]returnsclose.pct_change().dropna()# 日收益print(returns.head())code/stage2/fetch_clean.py末尾也封装了fetch_real_with_yfinance()与本篇合成流程接口一致方便你一键切换真实数据源。3. 用合成数据构造多资产时间序列 财务报表面板我们不依赖网络用相关正态 几何布朗运动(GBM)生成 6 只股票AAPL/MSFT/GOOG/AMZN/JPM/XOM的 756 个交易日日收益与价格importnumpyasnp,pandasaspd SEED20240814rngnp.random.default_rng(SEED)N_DAYS756ASSETS[AAPL,MSFT,GOOG,AMZN,JPM,XOM]ANN_MUnp.array([0.18,0.16,0.15,0.20,0.10,0.08])# 年化收益ANN_SIGMAnp.array([0.28,0.25,0.24,0.32,0.20,0.22])# 年化波动# 两因子(市场 科技行业)构造正定相关矩阵mnp.array([0.70,0.70,0.70,0.70,0.50,0.40])snp.array([0.40,0.40,0.35,0.45,0.00,0.00])nlen(m);corrnp.eye(n)foriinrange(n):forjinrange(n):ifi!j:corr[i,j]m[i]*m[j]s[i]*s[j]Lnp.linalg.cholesky(corr)# 正定 → 可分解zrng.standard_normal((N_DAYS,n))corr_retz L.T daily_muANN_MU/252.0daily_sigmaANN_SIGMA/np.sqrt(252.0)returnsdaily_mucorr_ret*daily_sigma prices100*np.exp(np.cumsum(np.log1p(returns),axis0))# GBM为模拟脏数据我们额外注入56 个缺失值和18 个异常冲击±3%~4% 的额外跳变用于演示清洗。同时构造一份财务报表式面板多股票 × 多年 × 多指标MultiIndexRevenue NetIncome TotalAssets ROE DebtRatio Ticker Year AAPL 2021 240.292 56.605 709.028 0.244 0.540 2022 234.595 69.035 635.094 0.206 0.546 2023 254.193 64.651 840.418 0.172 0.456 MSFT 2021 342.277 77.353 790.526 0.169 0.277 2022 358.048 104.439 1293.090 0.265 0.295 2023 346.343 37.060 709.280 0.154 0.387这类面板数据(panel data)是基本面量化的标准形态——行是 (标的, 年份)列是财务指标后续可做横截面因子如按ROE排序选股。4. 数据质量缺失值处理 异常值检测(3σ / Z-score)4.1 缺失值处理n_missingint(returns.isna().sum().sum())# 统计缺失filledreturns.ffill().bfill()# 前向 后向填充filledfilled.fillna(filled.mean())# 极端残留用列均值兜底4.2 异常值检测3σ / Z-score对每个资产列做标准化落在外侧|z| 3的视为异常mufilled.mean();sigmafilled.std(ddof0)z(filled-mu)/sigma outliers(z.abs()3)countoutliers.sum()# 每列异常数为什么用 3σ正态下|z|3的概率仅约 0.27%误报率低但金融收益有厚尾实际异常往往比 3σ 更频繁——这正是量化人要警惕的分布假设陷阱。5. 真实运行结果代码跑出非编造运行python code/stage2/fetch_clean.py关键输出期末价格起点均归一到 100资产AAPLMSFTGOOGAMZNJPMXOM期末价149.63155.82246.92242.89158.25112.30数据质量结果注入缺失值56个 → 清洗后残留缺失0ffillbfill 完全补齐注入异常冲击18个 → 用 3σ 检测到异常点23个多出的 5 个来自收益厚尾的自然极端日正好印证金融收益非正态各资产日收益标准差σAAPL0.0198、MSFT0.0169、GOOG0.0181、AMZN0.0209、JPM0.0181、XOM0.0158。每只资产的 3σ 异常点数量资产AAPLMSFTGOOGAMZNJPMXOM合计异常点数326453235.1 图表图 16 只股票的合成 GBM 价格序列。起点归一为 100科技股(GOOG/AMZN)波动更大、终点更高能源股(XOM)相对平稳。图 2日收益箱线图。箱体为 IQR 区间散点为超出 1.5×IQR 的离群点与 3σ 检测相互印证。图 3收益相关性热力图。科技股之间相关性高达 0.63~0.67同受市场因子科技行业因子驱动跨板块如 JPM-XOM仅约 0.20。相关性是资产配置的地基——第 2 篇会用到。6. 作业讲解投资组合异常值检测题目给定一组资产日收益如何在不删除数据的前提下标记并温和修正异常值避免极端日扭曲后续协方差估计讲解与结论标记而非删除用 3σ/Z-score 给异常日打标签outliers布尔矩阵保留原始数据可追溯修正用缩尾(winsorize)把|z|3的收益裁剪到 ±3σ而非置零或删除——既保留时序连续性又抑制极端值对协方差矩阵的主导本篇实证注入 18 个异常后3σ 共抓到 23 个含 5 个厚尾自然异常。这说明3σ 在金融场景偏宽松实战中可改用MAD(中位数绝对偏差)或滚动窗口 z-score 以适应非平稳波动下游影响异常值会显著高估协方差与尾部风险清洗后得到的相关系数图 3才可用于第 2 篇的资产配置优化。一句话结论异常检测不是找茬而是给你的风险模型打疫苗——宁可多标记、不可漏标记修正时务必保留可追溯性。7. 小结 交付物代码code/stage2/fetch_clean.py离线可复现含 yfinance 扩展函数图表assets/images/stage2/price_series.png、outlier_boxplot.png、correlation_heatmap.png数值摘要code/stage2/fetch_clean_summary.json你已掌握数据来源选型、合成数据生成、缺失值/异常值清洗、相关性可视化以及异常检测在组合风控中的意义。下一篇《资产配置与全天候策略》将基于这里的多资产收益与相关矩阵构建真正的配置框架并做回测对比。
延伸阅读

更多相关文章

2026/10/6 13:54:18

mini小巧-WIFI-温湿度检测

项目简介mini小巧-WIFI-温湿度检测使用STC8G1K08A 大夏龙雀WIFI模块EPS8266蓝牙,搭配AHT30 温湿度模块,通过使用MQTT协议上传数据。本设计简单易上手归于大夏龙雀wifi/蓝牙二合一模块集成TCP/UDP/MQTT 协议通信省去繁杂程序开发与测试。项目功能本设计是…

2026/10/6 22:59:51

context-mode:为终端开发打造上下文快照与现场恢复工具

你有没有过这种经历:上午还埋在一个项目的某个模块里,下午被线上告警拽到另一个项目,处理完再切回来,对着终端愣了几秒——我刚才在看哪个文件?这个分支推到远端没有?环境变量是不是被我改乱了?…

2026/10/6 22:59:51

Sublime Text 高效配置与插件指南:从多光标到LSP实战

简介:Sublime Text 是一款面向程序员与文本编辑爱好者的高效代码编辑器资源包,适用于 Web 前端、Python、Java、C 等多语言开发场景,能帮助初学者快速上手、资深开发者提升编码效率。压缩包共收录 2000 个文件,约 15.8MB&#xff…

2026/10/6 22:59:51

HTML5展示型企业网站源代码改造与交付全流程指南

简介:这是一套面向中小企业建站需求与前端入门学习者的展示型企业网站源代码,采用HTML5结合CSS、XHTML与JavaScript构建,无需后台管理系统,上传空间即可直接运行,适合希望低成本快速搭建企业官网的个人站长或前端初学者…

2026/10/6 22:59:51

IDEA 2026.1 EAP 5:K2模式如何重塑Kotlin开发体验

每次 JetBrains 发 EAP,我基本都会第一时间装来试。原因很简单:EAP 版往往比稳定版更早暴露一个方向性问题——那些被 JetBrains 押注的未来能力,最终会成为稳定版默认体验。这次的 IDEA 2026.1 EAP 5,重点依然是 Kotlin 的 K2 模…

2026/10/6 22:54:51

IDEA内置Maven总是报错?教你切换本地Maven并解决依赖与编译问题

前两天帮一位新同事排查环境,IDEA里Maven项目红成一片,依赖下载失败、程序包不存在、编译级别报错轮着来。我问他Maven怎么配的,他理直气壮地说“我没配过,IDEA自带的”。这句话我听了太多次。IDEA内置Maven确实开箱即用&#xff…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/6 17:46:51

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

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

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑