You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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}')

代码修改说明

  1. 新增yfinance库的安装命令,确保Colab环境能正常调用该库;
  2. 替换数据源获取逻辑,用yf.download()替代web.DataReader(),适配Yahoo Finance的最新接口;
  3. 将原代码的print语句改为更简洁易读的f-string格式(你也可以换回format()写法,f-string是Python3.6+的推荐写法);
  4. 保留了原有的收益率、年化收益/波动率的计算逻辑,这部分是正确的。

内容的提问来源于stack exchange,提问作者Vector

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 18:42:34