在Google Colab中运行Python股票数据分析代码报错,请求问题排查及修正方案
股票年化收益率与波动率代码问题排查及修正
嘿,我帮你排查了这段在Google Colab中运行的代码问题,主要有两个核心错误导致运行失败:
问题分析
- print语句语法错误:原代码将
format()方法错误地放在了print()函数的外部,正确的写法应该是先对格式字符串调用format(),再将结果传入print()。 - Yahoo数据源接口失效:
pandas_datareader自带的Yahoo Finance数据源已经停止维护,无法正常获取股票数据,需要改用yfinance库来对接Yahoo的新接口。
修正后的代码
# 先安装yfinance库(Colab环境默认未预装) !pip install yfinance --quiet import yfinance as yf import numpy as np import pandas as pd stock = ['AAPL'] # 使用yfinance下载调整后收盘价数据 data = yf.download(stock, start='2010-01-01')['Adj Close'] data.sort_index(inplace=True) # 计算日收益率 returns = data.pct_change() # 日平均收益率与标准差 mean_return = returns.mean() return_stdev = returns.std() # 年化收益率(一年252个交易日) annualised_return = round(mean_return * 252, 2) # 年化波动率 annualised_stdev = round(return_stdev * np.sqrt(252), 2) # 修正print语句的格式写法(用更简洁的f-string) print(f'The annualised mean return of stock {stock[0]} is {annualised_return}, and the annualised volatility is {annualised_stdev}')
代码修改说明
- 新增
yfinance库的安装命令,确保Colab环境能正常调用该库; - 替换数据源获取逻辑,用
yf.download()替代web.DataReader(),适配Yahoo Finance的最新接口; - 将原代码的print语句改为更简洁易读的f-string格式(你也可以换回
format()写法,f-string是Python3.6+的推荐写法); - 保留了原有的收益率、年化收益/波动率的计算逻辑,这部分是正确的。
内容的提问来源于stack exchange,提问作者Vector
相关产品推荐
相关产品推荐

