【背景】
需要做一个预测投资组合portfolio未来收益的python脚本,类似的功能需要从数据源获取相关指数和股票的数据,一直以来都是用pandas_datareader从yahoo上面拿,但是后来忽然发现不能用了,这篇就说明一下遇到此问题的walk around.

【分析】
由于数据源是yahoo那边的,package没有变动的情况下,只可能是yahoo那边做了什么修改导致现有的pandas_datareader命令不适用了。修改pandas_datareader不现实,也可能因小失大影响别的程序,所以开始查找有没有适用于当前yahoo的新数据获取命令。
[解决方法]
用yfinance包代替pandas_datareader包来执行*载下**。
【重点代码】
原来的*载下**方法:
data = wb.DataReader(stock['ticker'],'yfinance',start=START_DATE)['Adj Close']
新的*载下**方法是这句:
data = yf.download(stock['ticker'], start=START_DATE)['Adj Close']
用来存储Portfolio内容的Json文件内容如下:
{
"portfolio": [
{
"ticker": "^FTM",
"name": "FTSE 250",
"type": "index",
"weight": 0.1
},
{
"ticker": "VEMAX",
"name": "Vanguard Emerging Markets",
"type": "stock",
"weight": 0.7
},
{
"ticker": "UU.L",
"name": "United Utilities",
"type": "stock",
"weight": 0.1
},
{
"ticker": "BHP.L",
"name": "BHP Group",
"type": "stock",
"weight": 0.1
}
]
}
```
【运行结果】
Yahoo获得的数据:
Name: Adj Close, Length: 4214, dtype: float64
data Date
2007-01-02 406.399078
2007-01-03 394.147980
2007-01-04 380.207062
2007-01-05 373.447937
2007-01-08 375.771301
...
2023-08-31 2195.922607
2023-09-01 2224.892578
2023-09-04 2262.070801
2023-09-05 2255.793945
2023-09-06 2250.000000
最后得到的收益预测结果:
----------------------------------------------------------------
Estimated value of Portfolio in 2063 : £1,677.32
Expected Portfolio Return: 167.73%
Estimated Income £67.09
【补充】
关于如何实现投资组合收益预测的完整源码*载下**地址:
https://download.csdn.net/download/weixin_41697242/88309661