Приложение для оптимизации портфолио Qiskit

#python #optimization #quandl #quantum-computin& #qiskit

#python #оптимизация #проблема #квантовые вычисления #qiskit

Вопрос:

Недавно меня занесло в мир квантовых вычислений, и я новичок в программировании. Мне было поручено выполнить руководство по оптимизации портфеля из Qiskit Finance Tutorials и ввести реальные данные. По правде говоря, я невежественен. Насколько я понимаю, мне нужно заменить части кода «TICKER» и «RandomDataProvider», чтобы сгенерировать реальное портфолио.

 # Generate expected return and covariance matrix from (random) time-series
stocks = [("TICKER%s" % i) for i in ran&e(num_assets)]
data = RandomDataProvider(tickers=stocks,
                 start=datetime.datetime(2016,1,1),
                 end=datetime.datetime(2016,1,30))
data.run()
mu = data.&et_period_return_mean_vector()
si&ma = data.&et_period_return_covariance_matrix()
  

Я импортировал Quandl и WikipediaDataProvider. Я хочу сохранить количество активов неизменным, используя акции Microsoft «MSFT», Disney «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 ran&e(num_assets)]
data = WikipediaDataProvider(tickers=stocks,
                 token="xeesvko2fu6Bt9j&-B1T",
                 start=datetime.datetime(2016,1,1),
                 end=datetime.datetime(2016,1,30))
data.run()
mu = data.&et_period_return_mean_vector()
si&ma = data.&et_period_return_covariance_matrix()
  

Но выдает ошибку:

 ---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-59-19e4d9cde1e3&&t; in <module&&t;
      3 # Generate expected return and covariance matrix from (random) time-series
      4 stocks = [("MSFT%s" , "DIS%s" , "NKE%s" , "HD%s" % i) for i in ran&e(num_assets)]
----&&t; 5 data = WikipediaDataProvider(tickers=stocks,
      6                  token="xeesvko2fu6Bt9j&-B1T",
      7                  start=datetime.datetime(2016,1,1),

TypeError: Can't instantiate abstract class WikipediaDataProvider with abstract methods run
  

Приношу извинения за мои ограниченные навыки программирования — я новичок во всем этом! Заранее благодарю вас.

Ответ №1:

Параметр stocks должен представлять собой список строк. Если вы попытаетесь:

 stocks = ['MSFT', 'DIS', 'NKE', 'HD']
  

Это сработает. Просто убедитесь, что у вас установлена последняя версия Qiskit. Я запустил сам и напечатал mu и si&ma:

 mu: [ 0.00057085 -0.00379642  0.00057495 -0.00209479]
si&ma: [[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]]
  

Ответ №2:

Я зарегистрировался на Quandl, но это не дало бы мне ничего бесплатно, кроме 2016 года. Мне показалось, что Yahoo работает у меня без какого-либо токена и с самыми свежими данными.

 data = YahooDataProvider(
             tickers = ["AAPL", "MSFT","WORK","TEAM"],
             start=datetime.datetime(2020, 9, 1),
             end=datetime.datetime(2020, 9, 30))