Manajemen risiko dengan neural network

Manajemen Risiko Kuantitatif dengan Python

Jamsheed Shorish

Computational Economist

Pembaruan portofolio real time

  • Manajemen risiko
    • Ukuran risiko terdefinisi (VaR, CVaR)
    • Ukuran risiko terestimasi (parametrik, historis, Monte Carlo)
    • Portofolio teroptimumkan (mis. Teori Portofolio Modern)
  • Info pasar baru => perbarui bobot portofolio
    • Masalah: optimasi portofolio mahal
    • Solusi: $\text{weights} = f(\text{prices})$
    • Evaluasi $f$ secara real time
    • Perbarui $f$ sesekali saja
Manajemen Risiko Kuantitatif dengan Python

Neural network

  • Neural Network: $\text{output} = f(\text{input})$
    • Neuron: simpul pemrosesan saling terhubung dalam fungsi
  • Dikembangkan awal 1940–1950-an
  • Awal 2000-an: penerapan neural network pada "big data"
    • Pengenalan & pemrosesan gambar
    • Data keuangan
    • Data mesin pencari
  • Deep Learning: neural network sebagai bagian dari Machine Learning
    • 2015: Google merilis library deep learning open-source TensorFlow untuk Python
Manajemen Risiko Kuantitatif dengan Python

Struktur neural network

  • Lapisan: neuron pemroses terhubung
    • Lapisan input

lapisan input dari neural network

Manajemen Risiko Kuantitatif dengan Python

Struktur neural network

  • Struktur neural network
    • Lapisan input
    • Lapisan tersembunyi

lapisan tersembunyi dari neural network

Manajemen Risiko Kuantitatif dengan Python

Struktur neural network

  • Struktur neural network
    • Lapisan input
    • Lapisan tersembunyi
    • Lapisan output
  • Pelatihan: mempelajari hubungan input–output

gambar lapisan input, tersembunyi, dan output

Manajemen Risiko Kuantitatif dengan Python

Struktur neural network

  • Struktur neural network
    • Lapisan input
    • Lapisan tersembunyi
    • Lapisan output
  • Pelatihan: mempelajari hubungan input–output
    • Harga aset => Lapisan input

gambar harga aset masuk ke neural network

Manajemen Risiko Kuantitatif dengan Python

Struktur neural network

  • Struktur neural network
    • Lapisan input
    • Lapisan tersembunyi
    • Lapisan output
  • Pelatihan: mempelajari hubungan input–output
    • Harga aset => Lapisan input
    • Pemrosesan lapisan input + tersembunyi

gambar bobot pada tepi neural network

Manajemen Risiko Kuantitatif dengan Python

Struktur neural network

  • Struktur neural network
    • Lapisan input
    • Lapisan tersembunyi
    • Lapisan output
  • Pelatihan: mempelajari hubungan input–output
    • Harga aset => Lapisan input
    • Pemrosesan lapisan input + tersembunyi
    • Pemrosesan lapisan tersembunyi + output

gambar bobot dari lapisan tersembunyi ke output

Manajemen Risiko Kuantitatif dengan Python

Struktur neural network

  • Struktur neural network
    • Lapisan input
    • Lapisan tersembunyi
    • Lapisan output
  • Pelatihan: mempelajari hubungan input–output
    • Harga aset => Lapisan input
    • Pemrosesan lapisan input + tersembunyi
    • Pemrosesan lapisan tersembunyi + output
    • Output => bobot portofolio

gambar lapisan output sebagai bobot portofolio

Manajemen Risiko Kuantitatif dengan Python

Menggunakan neural network untuk optimasi portofolio

  • Pelatihan
    • Bandingkan output dengan bobot portofolio "terbaik" yang sudah ada
    • Tujuan: meminimalkan "error" antara output dan bobot
    • Error kecil => network terlatih
  • Pemakaian
    • Input: harga aset baru, belum terlihat
    • Output: prediksi bobot portofolio "terbaik" untuk harga baru
    • Bobot terbaik = manajemen risiko
Manajemen Risiko Kuantitatif dengan Python

Membuat neural network di Python

 

from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Dense
model = Sequential() model.add(Dense(10, input_dim=4, activation='sigmoid')) model.add(Dense(4))
Manajemen Risiko Kuantitatif dengan Python

Melatih network di Python

  • Harga aset historis: matriks training_input
  • Bobot portofolio historis: vektor training_output
  • Compile model dengan:
    • fungsi minimisasi error ('loss')
    • algoritma optimasi ('optimizer')
  • Fit model ke data latih
    • epochs: jumlah loop pelatihan untuk memperbarui parameter internal
model.compile(loss='mean_squared_error', optimizer='rmsprop')

model.fit(training_input, training_output, epochs=100)
Manajemen Risiko Kuantitatif dengan Python

Manajemen risiko di Python

  • Pemakaian: berikan data harga aset baru (mis. real time)
    • Vektor baru new_asset_prices masuk ke lapisan input
  • Evaluasi network dengan model.predict() pada harga baru
    • Hasil: bobot portofolio predicted
  • Kumpulkan data cukup banyak seiring waktu => latih ulang network
    • Uji network pada data lampau => backtesting
# new asset prices are in the vector new_asset_prices
predicted = model.predict(new_asset_prices)
Manajemen Risiko Kuantitatif dengan Python

Ayo berlatih!

Manajemen Risiko Kuantitatif dengan Python

Preparing Video For Download...