基于tushare的美元黄金美债利率联动分析实战 1. 为什么我要用 tushare 去啃美元黄金与美债利率这块硬骨头做宏观数据研究的人都有一个共同的痛点数据源太散。想看黄金价格得去翻伦敦金或者纽约金想看美债收益率得去某财经网站扒表格想看美元指数又是另一个地方。更别提还要把这三者的时间轴对齐、频率统一、缺失值处理干净。我以前用 Excel 手工拼过一回三个数据源的时间戳格式都不一样一个是美东时间日频一个是北京时间日频还有一个是周频光对齐就花了一整个下午最后还发现有两个数据源对“交易日”的定义不同感恩节那天一个有一个没有直接导致后面的相关性计算全歪了。后来我转向用 tushare 来做这件事核心原因就一个它把宏观、利率、汇率、商品这几条线的数据接口统一在了一套 API 体系下返回的都是结构化的 DataFrame时间戳规范、字段命名一致省掉了大量清洗对齐的脏活。tushare 本身是国内做量化研究用得比较多的数据接口库覆盖股票、基金、期货、宏观经济、利率汇率等多个门类对于想做跨市场联动分析的人来说它相当于一个“数据中转站”不用在五六个网站之间来回切换。这篇文章要聊的就是怎么用 tushare 把美元指数、黄金价格、美债收益率和利率这几条线拉到一起做一次完整的联动关系分析。适合谁看如果你已经会用 Python 做基本的数据处理对 pandas 不陌生想入门宏观量化或者跨资产相关性研究那这篇内容基本可以照着复现。如果你只是想看看黄金和美元到底是不是“跷跷板”那看完也能有个数据支撑的判断而不是停留在“大家都这么说”的层面。需要提前说明的是tushare 的部分宏观和利率接口需要一定的积分权限不同接口的门槛不一样。我在实操中会尽量给出替代方案比如某些数据可以用 ETF 价格或者公开的利率指标来近似保证即使权限不够也能把分析框架跑通。另外本文所有代码基于 tushare 的 pro 接口编写假设你已经完成了 token 的注册和初始化这部分不再赘述。2. 数据管道的搭建从 tushare 拉取四条核心数据线2.1 四条数据线分别对应哪些接口在动手写代码之前先把我们要用的数据线理清楚。这个分析的核心是四个变量美元指数、黄金价格、美债收益率、利率。它们各自在 tushare 里的获取方式不太一样我逐个说明。美元指数tushare 的fx_daily接口可以拿到美元兑人民币等货币对的日频数据但严格意义上的美元指数DXY需要看index_global接口它覆盖了全球主要指数包括美元指数。如果你权限不够一个常见的替代方案是用美元兑欧元或者美元兑日元汇率来近似美元强弱虽然不如 DXY 全面但方向性基本一致。黄金价格tushare 里可以通过fx_daily拿伦敦金现的报价也可以用futures_daily拿纽约黄金期货的主力合约价格。我一般倾向于用伦敦金现因为它是现货价格受期货展期影响小连续性更好。如果你只做趋势分析期货主力合约也够用。美债收益率这是最关键也最麻烦的一条线。tushare 的us_tycr接口提供了美国国债收益率曲线数据涵盖 1 个月到 30 年的多个期限。做黄金分析最常用的是 10 年期美债收益率因为它被视为全球资产定价的锚。这个接口对积分有一定要求如果拿不到可以用us_trycr或者通过美债 ETF 的价格反推收益率变化方向。利率这里我指的是联邦基金利率或者短期政策利率。tushare 的us_fed_rate接口可以拿到联邦基金目标利率的历史数据。这个数据是低频的只在议息会议后变动所以处理时需要注意频率对齐问题。2.2 时间轴对齐日频、低频和缺失值的处理逻辑四条数据线拉下来之后第一个要解决的问题就是时间轴对齐。美元指数和黄金是日频数据美债收益率也是日频但利率是事件驱动的低频数据。直接 merge 会出现大量 NaN因为利率只在特定日期有值。我的处理方式是先把利率数据做前向填充forward fill也就是把最近一次变动的利率值延续到下一次变动之前。这在利率分析里是合理的因为政策利率在两次调整之间确实是保持不变的。前向填充之后再和日频数据做左连接以日频数据的日期为主轴。这里有个细节要注意tushare 返回的日期字段通常是trade_date格式的字符串比如20240101需要先转成 datetime 类型再做对齐。另外不同接口返回的日期范围可能不一致比如黄金数据可能从 2005 年开始但美债收益率数据可能只到 2010 年之后。我一般会取四者的交集时间段保证每条线都有数据避免因为某条线缺失导致整段分析失效。还有一个坑是交易日历的差异。美元指数和黄金基本遵循全球主要市场的交易日但美债收益率在某些美国假期会缺失。如果你直接用dropna()可能会把一些本来有黄金和美元数据的日期也删掉。我的做法是先用reindex把日期轴统一到黄金数据的交易日然后对美债收益率做插值或者前向填充而不是简单粗暴地删行。2.3 代码实现一个可复用的数据拉取函数下面是我实际用的一套数据拉取代码封装成了一个函数输入起止日期返回一个对齐好的 DataFrame。你可以直接拿去改改就用。import tushare as ts import pandas as pd import numpy as np # 初始化 pro 接口 pro ts.pro_api(你的token) def fetch_macro_data(start_date, end_date): 拉取美元指数、黄金、美债收益率、联邦基金利率数据并对齐 # 1. 美元指数用 index_global 接口 dxy pro.index_global(ts_codeDXY, start_datestart_date, end_dateend_date) dxy dxy[[trade_date, close]].rename(columns{close: dxy}) # 2. 黄金价格伦敦金现用 fx_daily 接口 gold pro.fx_daily(ts_codeXAUUSD, start_datestart_date, end_dateend_date) gold gold[[trade_date, bid_close]].rename(columns{bid_close: gold}) # 3. 美债收益率10年期 us10y pro.us_tycr(start_datestart_date, end_dateend_date) us10y us10y[[date, y10]].rename(columns{date: trade_date, y10: us10y}) # 4. 联邦基金利率 fed_rate pro.us_fed_rate(start_datestart_date, end_dateend_date) fed_rate fed_rate[[date, fr]].rename(columns{date: trade_date, fr: fed_rate}) # 统一日期格式 for df in [dxy, gold, us10y, fed_rate]: df[trade_date] pd.to_datetime(df[trade_date]) # 以黄金交易日为主轴做左连接 df gold.merge(dxy, ontrade_date, howleft) df df.merge(us10y, ontrade_date, howleft) df df.merge(fed_rate, ontrade_date, howleft) # 利率做前向填充 df[fed_rate] df[fed_rate].ffill() # 美债收益率缺失值用线性插值补 df[us10y] df[us10y].interpolate(methodlinear) # 删除仍然缺失的行 df df.dropna().reset_index(dropTrue) return df # 拉取 2015 年至今的数据 df fetch_macro_data(20150101, 20241231) print(df.head()) print(f数据行数: {len(df)})这段代码跑通之后你会得到一个包含trade_date、gold、dxy、us10y、fed_rate五列的 DataFrame。我实测下来2015 年至今大概有 2000 多行日频数据足够做各种相关性分析和回归了。注意index_global和us_tycr接口对积分有要求如果你的账号权限不够可以先跳过美元指数和美债收益率用黄金和利率两条线做基础分析框架是一样的。3. 相关性分析黄金、美元、美债收益率到底怎么互相牵制3.1 先看长期相关性别被短期波动带偏数据拿到手之后最直观的做法就是算相关系数。但这里有个陷阱如果你直接用日频收益率算相关性可能会得到一个和直觉相反的结果。我一开始就是这么干的发现黄金和美元在某些时间段居然是正相关和“美元涨黄金跌”的常识不符。问题出在频率上。日频数据噪音太大短期资金流动、避险情绪、突发事件都会干扰两者的关系。我的做法是先把价格转成周频或者月频的收益率再算滚动相关性。具体来说用resample(W).last()把日频数据降成周频然后算 52 周滚动相关系数。这样得到的曲线平滑得多趋势也更清晰。从长期数据来看黄金和美元指数确实呈现负相关但相关系数并不是稳定的 -1而是在 -0.3 到 -0.7 之间波动。这意味着“美元涨黄金跌”这个规律在大部分时间是成立的但并不是铁律。特别是在避险情绪极端的时候比如全球市场大幅波动期间黄金和美元可能同时走强因为两者都被当作避险资产。黄金和美债收益率的关系更有意思。理论上美债收益率上升意味着持有黄金的机会成本增加因为黄金不生息所以收益率上升应该压制金价。但实际数据里这个负相关在有些年份很强在有些年份几乎消失。我观察下来当美债收益率的变化主要由实际利率驱动时对黄金的压制最明显如果收益率上升是因为通胀预期升温那黄金反而可能跟着涨因为它有抗通胀属性。3.2 滚动窗口的选择52 周还是 26 周滚动窗口的长度直接决定了你看到的相关系数是“平滑趋势”还是“敏感波动”。我试过 26 周、52 周和 104 周三个窗口感受差别很大。26 周窗口对短期变化非常敏感能快速捕捉到相关性的转折点但噪音也多经常出现上下翻飞的情况看着像心电图。52 周窗口是我最常用的它对应一年的交易日既能反映中期趋势又不会太滞后。104 周窗口则非常平滑适合看长期结构性变化但如果你用它来做交易信号基本会慢半拍。我的建议是如果你做的是配置型分析看的是年度级别的资产轮动用 52 周窗口就够了。如果你想捕捉季度级别的机会可以同时看 26 周和 52 周两条线当短期相关性穿越长期相关性时往往意味着市场逻辑在发生变化。下面是对应的代码实现# 转周频 df_weekly df.set_index(trade_date).resample(W).last().dropna() # 算收益率 df_weekly[gold_ret] df_weekly[gold].pct_change() df_weekly[dxy_ret] df_weekly[dxy].pct_change() df_weekly[us10y_chg] df_weekly[us10y].diff() # 52周滚动相关性 df_weekly[corr_gold_dxy] df_weekly[gold_ret].rolling(52).corr(df_weekly[dxy_ret]) df_weekly[corr_gold_us10y] df_weekly[gold_ret].rolling(52).corr(df_weekly[us10y_chg]) print(df_weekly[[corr_gold_dxy, corr_gold_us10y]].describe())跑完这段你会看到黄金和美元的相关性均值大概在 -0.4 左右黄金和美债收益率变化的相关性均值在 -0.2 到 -0.3 之间。注意这里用的是收益率变化而不是收益率水平因为收益率水平本身是非平稳的直接算相关性容易得到虚假的高相关。3.3 用热力图看不同期限美债收益率的影响差异美债收益率不是只有 10 年期一个品种2 年期、5 年期、30 年期对黄金的影响可能不一样。tushare 的us_tycr接口返回了多个期限的数据我一般会拉 2 年、5 年、10 年和 30 年四个期限分别算它们和黄金收益率的相关性。实测下来的规律是10 年期和黄金的负相关性最强因为它是全球资产定价的基准。2 年期更多反映货币政策预期对黄金的影响偏短期。30 年期反映的是长期通胀和财政预期和黄金的相关性反而不如 10 年期稳定。5 年期介于两者之间可以作为辅助参考。如果你想把多个期限放在一张图里看可以用 seaborn 画一个相关性热力图横轴是不同期限纵轴是不同时间段颜色深浅代表相关系数大小。这样一眼就能看出哪个期限在哪个阶段对黄金的压制最明显。import seaborn as sns import matplotlib.pyplot as plt # 拉取多期限美债收益率 us_tycr pro.us_tycr(start_date20150101, end_date20241231) us_tycr us_tycr[[date, y2, y5, y10, y30]] us_tycr[date] pd.to_datetime(us_tycr[date]) us_tycr us_tycr.set_index(date).resample(W).last() # 和黄金收益率合并 merged df_weekly[[gold_ret]].join(us_tycr.diff(), howinner).dropna() # 算相关性矩阵 corr_matrix merged.corr() sns.heatmap(corr_matrix, annotTrue, cmapRdYlGn_r, center0) plt.title(黄金收益率与不同期限美债收益率变化的相关性) plt.show()这张热力图能帮你快速判断当前阶段黄金对哪个期限的收益率最敏感。如果 10 年期那一格颜色最深说明市场还在用 10 年期作为定价锚如果 2 年期那一格变深了可能意味着货币政策预期正在主导黄金走势。4. 把利率变量加进来联邦基金利率对黄金的传导路径4.1 利率变动和黄金价格的时间滞后关系联邦基金利率是美联储直接控制的政策利率它的变动会通过多条路径传导到黄金价格。第一条路径是实际利率利率上升如果通胀没跟上实际利率就上升持有黄金的机会成本增加金价承压。第二条路径是美元利率上升吸引资本流入美元资产美元走强以美元计价的黄金对非美投资者变贵需求下降。第三条路径是风险偏好利率上升往往伴随经济预期改善避险需求下降黄金的避险溢价收缩。这三条路径的传导速度不一样。我做过一个简单的滞后相关分析发现利率变动对黄金的影响在 1 到 3 个月内最明显超过 6 个月后相关性就衰减得差不多了。这意味着如果你看到美联储加息不要指望黄金第二天就暴跌市场需要时间来消化和重新定价。具体操作上我会把联邦基金利率的变动做成一个事件序列每次变动记 1加息或 -1降息然后看变动后 20 个、60 个、120 个交易日黄金的累计收益率。用箱线图或者柱状图展示能直观看到加息周期和降息周期里黄金的表现差异。# 标记利率变动事件 df[rate_change] df[fed_rate].diff() events df[df[rate_change] ! 0].copy() # 计算事件后不同窗口的黄金累计收益 for window in [20, 60, 120]: events[fgold_ret_{window}d] events.apply( lambda row: df.loc[row.name:row.namewindow, gold].pct_change().sum() if row.namewindow len(df) else np.nan, axis1 ) print(events[[trade_date, rate_change, gold_ret_20d, gold_ret_60d, gold_ret_120d]].head(10))我实测下来加息事件后 60 个交易日黄金的平均收益确实为负但方差很大说明利率不是唯一决定因素。降息事件后黄金的表现更不一致有时候降息是因为经济衰退避险需求反而推高金价有时候降息是因为通胀回落实际利率下降也利好黄金。所以你不能简单地看到降息就做多黄金还得看降息的原因是什么。4.2 实际利率把通胀预期从名义利率里剥出来名义利率对黄金的影响之所以不稳定是因为它混合了实际利率和通胀预期两个成分。真正对黄金起决定作用的是实际利率也就是名义利率减去通胀预期。tushare 里没有直接的通胀预期数据但可以用 10 年期美债收益率减去 10 年期 TIPS 收益率来近似。如果 TIPS 数据拿不到一个替代方案是用 CPI 同比增速作为通胀预期的粗略代理。我自己常用的做法是用us_tycr拿 10 年期名义收益率用us_cpi拿 CPI 同比两者相减得到一个粗略的实际利率指标。虽然不如 TIPS 精确但方向性基本一致。然后看这个实际利率指标和黄金价格的关系你会发现负相关性比用名义利率时强得多而且稳定得多。# 拉取 CPI 数据 cpi pro.us_cpi(start_date20150101, end_date20241231) cpi cpi[[date, nt_yoy]].rename(columns{date: trade_date, nt_yoy: cpi_yoy}) cpi[trade_date] pd.to_datetime(cpi[trade_date]) # 合并到主表 df df.merge(cpi, ontrade_date, howleft) df[cpi_yoy] df[cpi_yoy].ffill() # 粗略实际利率 df[real_rate] df[us10y] - df[cpi_yoy] # 算滚动相关性 df_weekly df.set_index(trade_date).resample(W).last().dropna() df_weekly[gold_ret] df_weekly[gold].pct_change() df_weekly[real_rate_chg] df_weekly[real_rate].diff() df_weekly[corr_gold_real] df_weekly[gold_ret].rolling(52).corr(df_weekly[real_rate_chg]) print(df_weekly[corr_gold_real].describe())这个相关性均值大概在 -0.5 左右比用名义利率时的 -0.2 到 -0.3 强了不少。这说明剥离通胀预期之后实际利率对黄金的压制作用更清晰。如果你只记一个结论那就是看黄金盯实际利率别盯名义利率。4.3 利率、美元、黄金三者的联动路径验证把三个变量放在一起可以做一个简单的路径分析利率变动先影响美元美元再影响黄金。或者利率直接通过实际利率影响黄金同时通过美元间接影响。这两种路径哪个占主导在不同时期可能不一样。我用的方法是做两个回归第一个回归是黄金收益率对美元收益率和实际利率变化同时回归看哪个系数更显著第二个回归是美元收益率对实际利率变化回归看利率对美元的传导强度。如果第一个回归里实际利率的系数显著而美元的系数不显著说明利率主要通过实际利率渠道直接影响黄金反之则说明美元是主要中介。import statsmodels.api as sm # 准备数据 reg_data df_weekly[[gold_ret, dxy_ret, real_rate_chg]].dropna() # 回归1黄金对美元和实际利率 X sm.add_constant(reg_data[[dxy_ret, real_rate_chg]]) y reg_data[gold_ret] model1 sm.OLS(y, X).fit() print(model1.summary()) # 回归2美元对实际利率 X2 sm.add_constant(reg_data[real_rate_chg]) y2 reg_data[dxy_ret] model2 sm.OLS(y2, X2).fit() print(model2.summary())我跑出来的结果是实际利率变化的系数在回归1里显著为负美元收益率的系数也显著为负但实际利率的 t 值更大。这说明两条路径都在起作用但实际利率的直接效应更强。回归2里实际利率对美元的系数为正但不算特别大说明利率对美元的传导有但不是一对一的强关系中间还夹杂着其他因素比如欧洲和日本的经济状况。这个结论对实操的指导意义是如果你要预测黄金走势实际利率的变化比美元指数的变化更值得关注。美元指数可以作为辅助确认信号但不应该作为唯一的判断依据。5. 实操中踩过的坑和几个容易忽略的细节5.1 数据频率混用导致的虚假相关我最早做这个分析的时候犯了一个很基础的错误把日频的黄金价格和月频的利率数据直接放在一起算相关性。结果出来一个很高的正相关我当时还兴奋了一下以为发现了什么新规律。后来仔细一想月频数据在日频轴上被重复了 20 多次相当于给同一个观测值加了 20 倍的权重相关性当然会被扭曲。这个坑的教训是不同频率的数据必须先统一频率再分析。要么全部降成月频要么把低频数据前向填充到日频但只用于展示不用于统计计算。我现在的做法是所有相关性分析都在周频上做因为周频既能过滤掉日频噪音又不会像月频那样损失太多样本量。另外前向填充虽然解决了对齐问题但会引入自相关。如果你用前向填充后的利率数据做回归标准误会被低估t 值会偏高。严谨的做法是用 Newey-West 标准误来修正或者在回归时把利率变动事件单独拿出来做事件研究而不是把填充后的水平值直接放进回归。5.2 接口权限不足时的替代数据源方案tushare 的宏观接口对积分有要求us_tycr和us_fed_rate都需要一定积分才能调用。如果你刚开始用积分不够有几个替代方案可以让你先把分析框架跑通。美元指数的替代用fx_daily接口拿美元兑欧元或者美元兑日元的汇率取倒数或者直接看汇率变化方向。虽然不如 DXY 全面但美元兑欧元在 DXY 里权重最大方向性基本一致。美债收益率的替代用美债 ETF 的价格反推。比如 TLT 是 20 年期以上美债 ETF它的价格和收益率反向变动。你可以用 TLT 的收益率变化作为美债收益率变化的代理变量。虽然不如直接拿收益率精确但做相关性分析够用了。联邦基金利率的替代这个比较难替代因为它是政策变量。如果实在拿不到可以用 3 个月期美债收益率作为短期利率的代理两者走势高度一致。我的建议是先用替代数据把整个分析流程跑通确认逻辑没问题之后再想办法提升积分权限去拿更精确的数据。不要因为某个接口拿不到就卡住不动分析的框架比数据的精度更重要。5.3 滚动相关性在极端行情下的失效滚动相关性有一个固有缺陷它假设过去 52 周的关系可以代表当前的关系。但在极端行情下这个假设会失效。比如 2020 年 3 月全球市场大幅波动期间所有资产的相关性都趋近于 1因为大家都在被抛售换现金。这时候黄金和美元的负相关性完全消失滚动相关性曲线会出现一个明显的向上尖峰。如果你用这个时期的滚动相关性来做决策会得到完全错误的信号。我的处理方式是在滚动相关性之外再加一个“相关性稳定性”指标比如过去 52 周里相关系数的标准差。如果标准差突然放大说明市场关系正在重构这时候应该降低对相关性信号的信任度转而关注更基本的驱动因素比如实际利率和避险情绪。还有一个细节是滚动相关性对窗口起点的选择很敏感。如果你把窗口起点从 1 月改成 7 月得到的曲线可能形状完全不同。我的做法是同时算两个错开半年的滚动窗口如果两条曲线方向一致说明信号比较可靠如果两条曲线背离说明当前关系不稳定应该观望。6. 从数据到判断怎么把分析结果转化成可操作的观察指标6.1 构建一个简单的黄金关注度打分表分析做完之后最终要落到“现在该不该关注黄金”这个问题上。我自己的做法是做一个简单的打分表把几个核心指标的变化方向列出来每个指标给 1 或 -1加总得到一个总分。总分越高说明当前环境对黄金越有利。指标看多信号1看空信号-1实际利率变化下降上升美元指数变化走弱走强联邦基金利率方向降息或暂停加息加息黄金与美元滚动相关性负相关增强负相关减弱或转正美债收益率曲线平坦化或倒挂加深陡峭化这个表不是交易信号而是一个观察清单。我每周更新一次看看总分在什么位置。如果总分连续几周在 3 以上说明宏观环境对黄金比较友好如果总分在 -3 以下说明压制因素占主导。中间区域就属于中性不需要做太多动作。需要强调的是这个打分表只考虑了宏观因子没有考虑地缘事件、央行购金、ETF 资金流这些因素。所以它只能作为参考框架不能作为唯一的决策依据。我一般会把它和黄金 ETF 的持仓变化结合起来看如果打分表偏多且 ETF 持仓在增加那信号就比较可靠。6.2 用 tushare 做定期更新的自动化脚本手动拉数据、算指标、更新打分表做一两次还行时间长了肯定坚持不下来。我的做法是写一个自动化脚本每周定时跑一次把最新的数据拉下来更新指标输出一个简短的报告。def weekly_report(): # 拉取最新数据 end_date pd.Timestamp.now().strftime(%Y%m%d) start_date (pd.Timestamp.now() - pd.Timedelta(days365*3)).strftime(%Y%m%d) df fetch_macro_data(start_date, end_date) df_weekly df.set_index(trade_date).resample(W).last().dropna() # 计算最新指标 latest df_weekly.iloc[-1] prev df_weekly.iloc[-2] score 0 # 实际利率变化 if latest[real_rate] prev[real_rate]: score 1 else: score - 1 # 美元变化 if latest[dxy] prev[dxy]: score 1 else: score - 1 # 利率方向 if latest[fed_rate] prev[fed_rate]: score 1 else: score - 1 print(f本周黄金关注度得分: {score}) print(f实际利率: {latest[real_rate]:.2f} (前值: {prev[real_rate]:.2f})) print(f美元指数: {latest[dxy]:.2f} (前值: {prev[dxy]:.2f})) print(f联邦基金利率: {latest[fed_rate]:.2f} (前值: {prev[fed_rate]:.2f})) return score weekly_report()这个脚本跑一次大概几秒钟输出一个简单的得分和关键指标的最新值。你可以把它挂到定时任务里每周一早上自动跑或者手动执行。我自己的习惯是每周日晚上跑一次花两分钟看一下结果对下周的宏观环境有个大致判断。6.3 几个我反复验证过的经验判断做了这么长时间的数据分析有几个经验是我反复验证过的分享出来供你参考。第一黄金和美元的相关性在危机时期会失效。平时负相关危机时可能同涨同跌。所以不要在任何时候都拿美元来反向推断黄金要看市场处于什么状态。判断方法很简单看 VIX 或者美股波动率如果波动率突然飙升就别太依赖美元和黄金的负相关关系了。第二实际利率是黄金最可靠的单一驱动因子。如果你只能看一个指标就看 10 年期美债收益率减去通胀预期。这个指标和黄金的负相关性在大部分时间都成立而且逻辑清晰。名义利率、美元指数、风险偏好都是辅助确认不是核心。第三利率变动对黄金的影响有滞后不要抢跑。美联储加息当天黄金可能不跌反涨因为市场已经提前定价了。真正的压制效应往往在加息落地后的一两个月才显现。所以做黄金的宏观分析要有耐心不要被当天的价格波动带偏。第四数据频率越高噪音越大结论越不可靠。日频数据适合看短期情绪周频数据适合看中期趋势月频数据适合看长期结构。我做宏观判断基本只看周频和月频日频只用来确认极端事件。如果你用日频数据算出来的相关性去做周级别的决策大概率会被噪音误导。第五tushare 的数据质量整体不错但偶尔会有缺失和异常值。我遇到过某天的黄金价格明显偏离前后几天后来发现是数据源的问题。所以拉完数据之后一定要做基本的异常值检查比如用 3 倍标准差或者 IQR 方法标记离群点确认是真实波动还是数据错误。如果是数据错误手动修正或者剔除不要直接扔进模型里。这套分析框架我用了挺长时间从数据拉取到指标计算再到打分输出整个流程跑下来大概十几分钟就能完成一次全面更新。如果你也在做跨资产联动分析希望这些代码和经验能帮你省掉一些摸索的时间。数据源和接口可能会变但分析的逻辑和框架是通用的换一套数据照样能用。