Mulai sekarangMulai gratis

Hitung portofolio

Sekarang kita akan menghasilkan portofolio untuk menemukan yang terbaik di setiap bulan. random.random() milik numpy menghasilkan angka acak dari distribusi seragam, lalu kita menormalkannya agar jumlahnya menjadi 1 menggunakan operator /=. Kita menggunakan bobot ini untuk menghitung imbal hasil dan volatilitas. Imbal hasil adalah penjumlahan bobot dikalikan imbal hasil masing-masing. Volatilitas lebih kompleks, dan melibatkan kovarians dari berbagai saham.

Terakhir, kita akan menyimpan nilainya dalam kamus untuk digunakan nanti, dengan tanggal bulan sebagai kunci.

Dalam kasus ini, kita hanya akan menghasilkan 10 portofolio untuk setiap tanggal agar kode berjalan lebih cepat, tetapi dalam kasus penggunaan nyata Anda sebaiknya menggunakan sekitar 1000 hingga 5000 portofolio yang dihasilkan secara acak untuk beberapa saham.

Latihan ini merupakan bagian dari kursus

Machine Learning untuk Keuangan dengan Python

Lihat Kursus

Instruksi latihan

  • Hasilkan 3 angka acak untuk bobot menggunakan np.random.random().
  • Hitung returns dengan mengambil hasil kali titik (np.dot(); mengalikan elemen demi elemen dan menjumlahkan dua array) antara weights dan imbal hasil bulanan untuk date saat ini dalam loop.
  • Gunakan metode .setdefault() untuk menambahkan daftar kosong ([]) ke kamus portfolio_weights untuk date saat ini, lalu tambahkan (append) weights ke daftar tersebut.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

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])
Edit dan Jalankan Kode