如何从Yahoo Finance拉取指定时间区间的历史beta数据
解决方案
方法1:直接获取Yahoo Finance官方内置Beta值
你在个股行情页看到的官方Beta可通过yfinance.Ticker的info字段直接提取,该值为Yahoo默认计算的5年月度Beta,无需自行计算方差、协方差等指标,示例代码如下:
import yfinance as yf from datetime import date # 单标的获取Beta aapl = yf.Ticker("AAPL") aapl_beta = aapl.info.get("beta") print(f"AAPL官方Beta值:{aapl_beta}") # 多标的批量获取Beta tickers = ["AAPL", "MSFT"] beta_dict = {} for symbol in tickers: ticker = yf.Ticker(symbol) beta_dict[symbol] = ticker.info.get("beta") print("多标的Beta值:", beta_dict)
注意:该接口返回的是固定统计周期的长期Beta,不支持自定义时间区间,若需要指定起止日期的历史Beta,可使用下方自定义计算方法。
方法2:自定义时间区间计算Beta
Yahoo Finance未公开提供指定区间的Beta查询接口,也无法像拉取收盘价、成交量那样直接拉取Beta时间序列,你可以通过区间收益率自行计算,步骤为:拉取标的和对应基准(美股常用标普500,代码^GSPC)的区间调整后收盘价,计算两者日度收益率的协方差,除以基准收益率的方差即可得到对应区间的Beta值。
示例代码如下:
import yfinance as yf import numpy as np from datetime import date def get_custom_beta(symbol, benchmark="^GSPC", start_date="2021-08-01", end_date=date.today()): # 拉取标的和基准的价格数据 data = yf.download([symbol, benchmark], start=start_date, end=end_date, progress=False)["Adj Close"] # 计算日度收益率 returns = data.pct_change().dropna() # 计算协方差矩阵 cov_matrix = np.cov(returns[symbol], returns[benchmark]) # Beta = 标的与基准的协方差 / 基准的方差 beta = cov_matrix[0][1] / cov_matrix[1][1] return beta # 调用示例:获取AAPL 2021-08-01至今的Beta aapl_custom_beta = get_custom_beta("AAPL", start_date="2021-08-01") print(f"AAPL指定区间Beta值:{aapl_custom_beta}")
如果需要生成逐日的滚动历史Beta序列,可使用滚动窗口计算(以下示例为252个交易日≈1年的滚动窗口):
returns = yf.download(["AAPL", "^GSPC"], start="2021-01-01", progress=False)["Adj Close"].pct_change().dropna() rolling_cov = returns["AAPL"].rolling(252).cov(returns["^GSPC"]) rolling_var = returns["^GSPC"].rolling(252).var() rolling_beta = rolling_cov / rolling_var print(rolling_beta.dropna())
内容的提问来源于stack exchange,提问作者baharak Al
相关产品推荐
相关产品推荐

