如何解决Qiskit投资组合优化应用程序
我最近迷上了量子计算领域,并且是编码的初学者。我被分配去做Qiskit Finance Tutorials的Portfolio Optimization教程并输入实际数据。说实话,我无能为力。据我了解,我必须替换代码中的“ TICKER”和“ RandomDataProvider”部分才能生成真实的投资组合。
# Generate expected return and covariance matrix from (random) time-series
stocks = [("TICKER%s" % i) for i in range(num_assets)]
data = RandomDataProvider(tickers=stocks,start=datetime.datetime(2016,1,1),end=datetime.datetime(2016,30))
data.run()
mu = data.get_period_return_mean_vector()
sigma = data.get_period_return_covariance_matrix()
我已经导入了Quandl和WikipediaDataProvider。我想使用Microsoft“ MSFT”,迪士尼“ DIS”,Nike“ NKE”和Home Depot“ HD”股票来保持资产数量不变。我如何将Quandl的财务知识应用于本教程?到目前为止,我已经尝试过:
num_assets = 4
# Generate expected return and covariance matrix from (random) time-series
stocks = [("MSFT%s","DIS%s","NKE%s","HD%s" % i) for i in range(num_assets)]
data = WikipediaDataProvider(tickers=stocks,token="xeesvko2fu6Bt9jg-B1T",30))
data.run()
mu = data.get_period_return_mean_vector()
sigma = data.get_period_return_covariance_matrix()
但是得到错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-59-19e4d9cde1e3> in <module>
3 # Generate expected return and covariance matrix from (random) time-series
4 stocks = [("MSFT%s","HD%s" % i) for i in range(num_assets)]
----> 5 data = WikipediaDataProvider(tickers=stocks,6 token="xeesvko2fu6Bt9jg-B1T",7 start=datetime.datetime(2016,TypeError: Can't instantiate abstract class WikipediaDataProvider with abstract methods run
很抱歉,我的编码能力有限-我对所有这些都很陌生!预先谢谢你。
解决方法
stocks参数应为字符串列表。如果您尝试:
stocks = ['MSFT','DIS','NKE','HD']
它将起作用。只要确保您安装了最新的Qiskit。我自己跑了,打印了mu和sigma:
mu: [ 0.00057085 -0.00379642 0.00057495 -0.00209479]
sigma: [[0.00059268 0.00036507 0.00022995 0.00025648]
[0.00036507 0.00041735 0.00016424 0.00027058]
[0.00022995 0.00016424 0.0002836 0.00022028]
[0.00025648 0.00027058 0.00022028 0.00042107]]
,
我注册了Quandl,但不会免费给我2016年以后的任何东西。雅虎似乎在没有任何令牌的情况下为我工作,并拥有最新数据。
data = YahooDataProvider(
tickers = ["AAPL","MSFT","WORK","TEAM"],start=datetime.datetime(2020,9,1),end=datetime.datetime(2020,30))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。