BaşlayınÜcretsiz başlayın

Portföyleri hesapla

Şimdi her ayın en iyisini bulmak için portföyler üreteceğiz. numpy'nin random.random() fonksiyonu uniform dağılımdan rastgele sayılar üretir; ardından bunları /= operatörü ile 1'e toplamları eşit olacak şekilde normalize ederiz. Bu ağırlıkları getirileri ve oynaklığı hesaplamak için kullanacağız. Getiri, ağırlıkların tekil getirilerle çarpılıp toplanmasıdır. Oynaklık daha karmaşıktır ve farklı hisselerin kovaryanslarını içerir.

Son olarak değerleri daha sonra kullanmak üzere, ayların tarihlerini anahtar olarak kullanarak sözlüklere kaydedeceğiz.

Bu örnekte kodun daha hızlı çalışması için her tarih için sadece 10 portföy üreteceğiz; ancak gerçek bir senaryoda birkaç hisse için 1000 ila 5000 arası rastgele üretilmiş portföy kullanmak isteyebilirsin.

Bu egzersiz, kursun bir parçasıdır

Python ile Finans için Machine Learning

Kursa Göz Atın

Egzersiz talimatları

  • np.random.random() kullanarak ağırlıklar için 3 rastgele sayı üret.
  • Döngüdeki mevcut date için aylık getirilerle weights'ın nokta çarpımını (np.dot(); iki diziyi eleman bazında çarpıp toplayan işlem) alarak returns değerini hesapla.
  • Geçerli date için portfolio_weights sözlüğüne .setdefault() yöntemiyle boş bir liste ([]) ekle ve ardından listeye weights'ı ekle.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

portfolio_returns, portfolio_volatility, portfolio_weights = {}, {}, {}

# Get portfolio performances at each month
for date in sorted(covariances.keys()):
    cov = covariances[date]
    for portfolio in range(10):
        weights = np.random.random(____)
        weights /= np.sum(weights) # /= divides weights by their sum to normalize
        returns = np.dot(____, returns_monthly.loc[____])
        volatility = np.sqrt(np.dot(weights.T, np.dot(cov, weights)))
        portfolio_returns.setdefault(date, []).append(returns)
        portfolio_volatility.setdefault(date, []).append(volatility)
        portfolio_weights.setdefault(date, ____).append(____)
        
print(portfolio_weights[date][0])
Kodu Düzenle ve Çalıştır