Pengantar Perdagangan Pembelajaran Mendalam di Hedge Funds
Diterbitkan: 2022-03-11Selama beberapa tahun terakhir, jaringan saraf dalam telah menjadi sangat populer. Bidang ilmu komputer yang baru muncul ini diciptakan di seputar konsep jaringan saraf biologis, dan pembelajaran mendalam telah menjadi sesuatu yang populer saat ini.
Ilmuwan dan insinyur yang belajar mendalam mencoba menggambarkan secara matematis berbagai pola dari sistem saraf biologis. Sistem pembelajaran mendalam telah diterapkan untuk berbagai masalah: visi komputer, pengenalan suara, pemrosesan bahasa alami, terjemahan mesin, dan banyak lagi. Sangat menarik dan mengasyikkan bahwa dalam beberapa tugas, pembelajaran mendalam telah mengungguli para ahli manusia. Hari ini, kita akan melihat pembelajaran mendalam di sektor keuangan.
Salah satu aplikasi deep learning yang lebih menarik adalah dana lindung nilai. Hedge fund adalah dana investasi, organisasi keuangan yang mengumpulkan dana dari investor dan mengelolanya. Mereka biasanya bekerja dengan data deret waktu dan mencoba membuat beberapa prediksi. Ada tipe khusus arsitektur pembelajaran mendalam yang cocok untuk analisis deret waktu: jaringan saraf berulang (RNN), atau bahkan lebih khusus lagi, jenis khusus jaringan saraf berulang: jaringan memori jangka pendek (LSTM).
LSTM mampu menangkap fitur terpenting dari data deret waktu dan memodelkan dependensinya. Model prediksi harga saham disajikan sebagai studi kasus ilustratif tentang bagaimana hedge fund dapat menggunakan sistem tersebut. Kerangka kerja PyTorch, yang ditulis dengan Python, digunakan untuk melatih model, merancang eksperimen, dan menggambar hasilnya.
Kami akan mulai dengan beberapa dasar pembelajaran mendalam sebelum beralih ke contoh dunia nyata:
- Perkenalkan pembelajaran mendalam sebagai konsep abstrak.
- Perkenalkan RNN—atau, lebih khusus lagi, LSTM—dan bagaimana mereka dapat digunakan untuk memodelkan data deret waktu.
- Biasakan pembaca dengan data keuangan yang cocok untuk pembelajaran mendalam.
- Ilustrasikan bagaimana satu hedge fund aktual menggunakan pembelajaran mendalam untuk memprediksi harga saham.
- Terakhir, berikan rekomendasi yang dapat ditindaklanjuti untuk dana lindung nilai baru dan yang sudah ada tentang cara menggunakan/memanfaatkan pembelajaran mendalam untuk meningkatkan kinerjanya.
Mempresentasikan Kasus untuk Deep Learning Trading
Salah satu tugas paling menantang dan mengasyikkan di industri keuangan adalah memprediksi apakah harga saham akan naik atau turun di masa depan. Saat ini, kami menyadari bahwa algoritme pembelajaran mendalam sangat bagus dalam menyelesaikan tugas-tugas kompleks, jadi ada baiknya mencoba bereksperimen dengan sistem pembelajaran mendalam untuk melihat apakah mereka dapat berhasil memecahkan masalah memprediksi harga di masa mendatang.
Sebagai sebuah konsep, jaringan saraf tiruan telah ada sejak lama, tetapi perangkat kerasnya tidak cukup baik untuk memungkinkan eksperimen cepat dalam pembelajaran mendalam. Nvidia membantu merevolusi jaringan pembelajaran mendalam satu dekade lalu, karena mulai menawarkan unit pemrosesan grafis (GPU) yang sangat cepat untuk komputasi tujuan umum dalam produk seri Tesla. Alih-alih menaungi poligon dalam game dan aplikasi desain profesional, GPU yang sangat paralel juga dapat menghitung data lain dan, dalam banyak kasus, mereka jauh lebih unggul daripada CPU.
Ada sangat sedikit makalah ilmiah tentang penggunaan pembelajaran mendalam di bidang keuangan, tetapi permintaan akan pakar pembelajaran mendalam dari perusahaan fintech kuat, karena mereka jelas menyadari potensinya. Artikel ini akan membantu menjelaskan mengapa pembelajaran mendalam di bidang keuangan menjadi semakin populer dengan menguraikan bagaimana data keuangan digunakan dalam membangun sistem pembelajaran mendalam. Jenis khusus dari jaringan saraf berulang—jaringan LSTM—akan disajikan juga. Kami akan menguraikan bagaimana tugas terkait keuangan dapat diselesaikan menggunakan jaringan saraf berulang.
Artikel ini juga menampilkan studi kasus ilustratif tentang bagaimana hedge fund dapat menggunakan sistem tersebut, yang disajikan melalui eksperimen. Kami juga akan mempertimbangkan bagaimana sistem pembelajaran mendalam dapat ditingkatkan dan bagaimana dana lindung nilai dapat digunakan untuk merekrut bakat untuk membangun sistem tersebut, yaitu, latar belakang seperti apa yang perlu dimiliki oleh bakat pembelajaran mendalam.
Apa yang Membuat Hedge Fund Berbeda?
Sebelum kita melanjutkan ke aspek teknis masalah, kita perlu menjelaskan apa yang membuat dana lindung nilai itu unik. Jadi, apa itu dana lindung nilai?
Dana lindung nilai adalah dana investasi—organisasi keuangan yang mengumpulkan dana dari investor dan menempatkannya dalam investasi jangka pendek dan jangka panjang, atau dalam produk keuangan yang berbeda. Ini biasanya dibentuk sebagai kemitraan terbatas atau perseroan terbatas. Tujuan hedge fund adalah untuk memaksimalkan pengembalian. Pengembalian adalah keuntungan atau kerugian dalam kekayaan bersih dana lindung nilai selama periode waktu tertentu. Secara umum diterima bahwa ketika lebih banyak risiko diambil, ada potensi yang lebih besar untuk pengembalian dan kerugian yang lebih tinggi.
Untuk mencapai pengembalian yang baik, dana lindung nilai mengandalkan berbagai jenis strategi investasi, mencoba menghasilkan uang dengan memanfaatkan inefisiensi pasar. Karena berbagai macam strategi investasi yang tidak diperbolehkan dalam dana investasi biasa, dana lindung nilai tidak terdaftar sebagai dana, yaitu, mereka biasanya tidak diawasi oleh negara seperti dana lainnya. Mereka tidak perlu mempublikasikan strategi investasi dan hasil bisnis mereka, yang dapat membuat mereka cukup berisiko. Beberapa dana lindung nilai menghasilkan lebih banyak uang daripada rata-rata pasar, tetapi beberapa dari mereka kehilangan uang. Beberapa dari mereka membawa hasil permanen, sementara beberapa hasil hedge fund bervariasi.
Dengan berinvestasi dalam dana lindung nilai, investor meningkatkan kekayaan bersih dana tersebut. Tidak sembarang orang bisa berinvestasi di hedge fund. Hedge fund ditujukan untuk sejumlah kecil investor kaya. Biasanya yang ingin mengikuti hedge fund harus sudah terakreditasi. Artinya, mereka harus memiliki status khusus terkait undang-undang pengaturan keuangan. Ada perbedaan dari satu negara ke negara lain mengenai siapa yang dapat memiliki status khusus itu. Biasanya, kekayaan bersih investor harus sangat tinggi—tidak hanya individu, tetapi bank dan perusahaan besar juga dapat beroperasi dalam dana lindung nilai. Akreditasi tersebut dirancang untuk memungkinkan hanya individu dengan pengetahuan investasi yang signifikan untuk ambil bagian, sehingga melindungi investor kecil dan tidak berpengalaman dari risiko.
Artikel ini membahas kerangka peraturan AS, karena Amerika Serikat memiliki pasar keuangan paling maju di dunia. Jadi, di Amerika Serikat, istilah "investor terakreditasi" didefinisikan dalam Aturan 501 Peraturan D Komisi Sekuritas dan Bursa AS (SEC).
Menurut peraturan ini, investor terakreditasi dapat:
- Bank
- Perusahaan pengembangan bisnis swasta
- Organisasi
- Direktur, pejabat eksekutif, dan mitra umum dari penerbit efek yang ditawarkan atau dijual
- Orang perseorangan yang kekayaan bersih individunya, atau kekayaan bersih bersama dengan pasangan orang tersebut, melebihi $1.000.000
- Orang perseorangan yang memiliki pendapatan individu lebih dari $200,000 di masing-masing dari dua tahun terakhir atau pendapatan bersama dengan pasangan orang itu lebih dari $300,000 di setiap tahun dan memiliki harapan yang masuk akal untuk mencapai tingkat pendapatan yang sama di tahun berjalan
- Perwalian dengan total aset lebih dari $ 5.000.000
- Entitas di mana semua pemilik ekuitas adalah investor terakreditasi
Manajer dana lindung nilai mengelola dana lindung nilai. Manajer dana lindung nilai harus menemukan cara untuk menciptakan keunggulan kompetitif agar berhasil, yaitu menciptakan keunggulan atas pesaing dan kemampuan untuk menghasilkan nilai yang lebih besar. Ini bisa menjadi pilihan karir yang sangat menarik, karena bisa sangat menguntungkan jika seseorang unggul dalam mengelola dana.
Di sisi lain, jika banyak keputusan manajer hedge fund ternyata buruk, mereka tidak akan dibayar dan akan mendapatkan reputasi negatif. Manajer dana lindung nilai terbaik merupakan salah satu profesi dengan bayaran terbaik di semua industri. Manajer dana lindung nilai mendapatkan persentase pengembalian yang mereka peroleh untuk investor, selain biaya manajemen. Cara kompensasi ini membuat manajer hedge fund berinvestasi lebih agresif untuk mendapatkan pengembalian yang lebih besar, tetapi di sisi lain, itu juga mengarah pada peningkatan risiko investor.
Sejarah Singkat Hedge Fund
Dana lindung nilai pertama muncul pada tahun 1949, didirikan oleh mantan penulis dan sosiolog Alfred Winslow Jones. Saat itu dia sedang menulis artikel tentang tren investasi saat ini untuk Fortune, pada tahun 1948.
Dia mencoba untuk mengelola uang dan sangat sukses. Dia mengumpulkan uang menggunakan inovasi investasinya, yang sekarang dikenal luas sebagai ekuitas panjang/pendek. Strategi ini masih sangat populer di kalangan hedge fund. Saham dapat dibeli (beli: long) atau dijual (sell: short).
Ketika harga saham rendah dan diharapkan harga saham akan naik, adalah logis untuk membeli saham (long) dan menjualnya (short) segera setelah mencapai puncak harga tinggi, dan bahwa adalah inti dari inovasi yang dibuat Alfred Winslow Jones—mengambil posisi long pada saham yang diperkirakan akan terapresiasi dan posisi short pada saham yang diperkirakan akan turun.
Data Keuangan dan Kumpulan Data
Data keuangan termasuk dalam data deret waktu. Deret waktu adalah serangkaian titik data yang diindeks dalam waktu. Biasanya, deret waktu adalah urutan yang diambil pada titik waktu yang berurutan dan berjarak sama: urutan data waktu diskrit. Contoh deret waktu adalah ketinggian pasang surut air laut, jumlah bintik matahari, dan nilai penutupan harian Dow Jones Industrial Average.
Data historis dalam konteks ini adalah data runtun waktu dari masa lalu. Ini adalah salah satu bagian terpenting dan paling berharga untuk berspekulasi tentang harga di masa depan. Ada beberapa kumpulan data yang tersedia untuk umum secara online, tetapi biasanya, data tersebut tidak berisi banyak fitur—biasanya data interval 1 hari, data interval 1 jam, atau data interval 1 menit.
Kumpulan data dengan fitur yang lebih kaya dan pada interval waktu yang lebih kecil biasanya tidak tersedia untuk umum dan bisa sangat mahal untuk diperoleh. Interval yang lebih kecil berarti lebih banyak data deret waktu dalam periode tetap—dalam satu tahun ada 365 (atau 366) hari, jadi ada maksimum 365 (atau 366) titik data yang tersedia. Setiap hari memiliki 24 jam, jadi dalam satu tahun tersedia 8.760 (atau 8.784) titik data per jam, dan setiap hari memiliki 86.400 menit, jadi dalam satu tahun tersedia 525.600 (atau 527.040) titik data menit.
Dengan lebih banyak data, lebih banyak informasi tersedia, dan dengan lebih banyak informasi, dimungkinkan untuk membuat kesimpulan yang lebih baik tentang apa yang akan terjadi pada periode waktu berikutnya—dengan asumsi, tentu saja, bahwa data terdiri dari fitur yang cukup baik untuk digeneralisasikan dengan baik. Data harga saham 2007-2008, pada puncak krisis keuangan global, bias dan mungkin tidak relevan untuk membuat prediksi harga akhir-akhir ini. Dengan interval waktu yang lebih kecil, lebih mudah untuk memprediksi apa yang akan terjadi selanjutnya karena banyak titik data dalam interval yang tetap. Lebih mudah untuk memprediksi apa yang akan terjadi dalam nanodetik berikutnya jika kita memiliki semua titik data untuk setiap nanodetik dalam interval n
tahun yang tetap daripada apa yang akan terjadi di pasar saham tahun depan jika kita memiliki semua n
titik data untuk setiap tahun di interval n
-tahun yang tetap.
Namun, bukan berarti, dengan asumsi rangkaian cepat prediksi jangka pendek itu benar, prediksi jangka panjangnya juga harus benar. Setiap prediksi menimbulkan kesalahan dan, dengan merantai beberapa prediksi, prediksi jangka panjang akan mengandung sejumlah besar kesalahan pada akhirnya dan tidak akan berguna. Di bawah ini adalah contoh data interval 1 hari untuk saham Google yang diambil secara online dari Yahoo Finance.
Hanya ada beberapa kolom dalam kumpulan data: Tanggal, Buka, Tinggi, Rendah, dan Tutup—masing-masing, harga di mana sekuritas pertama kali diperdagangkan pada pembukaan bursa, harga tertinggi yang dicapai sekuritas pada hari perdagangan tertentu , harga terendah yang dicapai pada hari perdagangan tertentu, dan harga akhir saat sekuritas diperdagangkan hari itu.
Biasanya, ada dua kolom lagi dalam kumpulan data tersebut—Penutupan dan Volume yang Disesuaikan, tetapi keduanya tidak relevan di sini. Adjusted Close adalah harga penutupan setelah penyesuaian untuk pembagian dan pembagian dividen yang berlaku, sedangkan Volume adalah jumlah saham yang diperdagangkan di pasar selama periode waktu tertentu.
Anda dapat melihat bahwa beberapa tanggal hilang. Ini adalah hari-hari ketika bursa tidak bekerja, biasanya selama akhir pekan dan hari libur. Untuk tujuan demonstrasi algoritme pembelajaran mendalam kami, hari-hari yang hilang dilengkapi dengan harga yang tersedia sebelumnya. Misalnya, harga penutupan untuk 16-01-2010,-17-01-2010,-18-01-2010 semuanya akan menjadi 288.126007 karena itulah yang terjadi pada 15-01-2010. Penting untuk algoritme kami bahwa data tidak memiliki celah sehingga kami tidak membingungkannya. Algoritme pembelajaran mendalam dapat belajar dari sini saat akhir pekan dan hari libur—misalnya, ia akan mempelajari bahwa setelah lima hari kerja, harus ada dua hari dengan harga tetap dari hari kerja terakhir.
Ini adalah grafik pergerakan harga saham Google sejak 01-04-2010. Perhatikan bahwa hanya hari perdagangan yang digunakan untuk memplot grafik.
Apa itu Pembelajaran Mendalam?
Pembelajaran mendalam adalah bagian dari pembelajaran mesin, dan ini didasarkan pada representasi data pembelajaran. Pembelajaran mesin memeriksa algoritme yang fungsinya tidak diprogram tetapi dipelajari dari data. Ini pada dasarnya adalah pendekatan untuk kecerdasan buatan.
Pembelajaran mendalam telah diterapkan ke berbagai bidang: visi komputer, pengenalan suara, pemrosesan bahasa alami, terjemahan mesin—dan dalam beberapa tugas ini, ia telah mencapai kinerja yang lebih unggul daripada manusia.
Jaringan saraf yang dalam adalah pusat pembelajaran yang mendalam. Contoh paling sederhana dan mendasar dari deep neural network adalah feedforward neural network. Di bawah ini adalah gambar jaringan saraf umpan maju sederhana. Ini terdiri dari lapisan input dan output dan lapisan tersembunyi.
Lapisan tersembunyi adalah semua lapisan antara lapisan input dan output. Kami mengatakan bahwa jaringan saraf dalam jika memiliki lebih dari satu lapisan tersembunyi. Setiap lapisan terdiri dari berbagai jumlah neuron. Lapisan dalam jaringan saraf umpan maju dasar ini disebut lapisan linier—neuron dalam lapisan linier hanya mengalikan nilai input 1-D (atau 2-D jika data dikirim melalui jaringan dalam batch) dengan bobot yang sesuai, menjumlahkan produk, dan memberikan hasil akhir sebagai output 1-D atau 2-D.
Fungsi aktivasi biasanya diterapkan dalam jaringan feedforward untuk memperkenalkan nonlinier sehingga jaringan dapat memodelkan masalah nonlinier yang lebih kompleks. Dalam jaringan feedforward, data mengalir dari lapisan input ke lapisan output tanpa looping kembali. Koneksi antar neuron diberi bobot. Bobot perlu disesuaikan sehingga jaringan saraf mengembalikan output yang benar untuk input yang diberikan. Jaringan feedforward memetakan data dari ruang input ke ruang output. Lapisan tersembunyi mengekstrak fitur penting dan lebih abstrak dari fitur lapisan sebelumnya.
Pipeline deep learning secara umum sama dengan pipeline machine learning dan terdiri dari langkah-langkah berikut:
- Pengumpulan data. Data dipisahkan menjadi tiga bagian—data pelatihan, data validasi, dan data uji.
- Melatih DNN menggunakan data latih melalui sejumlah “epoch” (masing-masing terdiri dari sejumlah iterasi) dan validasi setelah setiap epoch menggunakan data validasi.
- Menguji model (satu instance jaringan saraf dengan parameter tetap) setelah urutan sesi pelatihan dan validasi.
Melatih jaringan saraf sebenarnya berarti menyesuaikan bobot antara pasangan neuron dengan meminimalkan fungsi kerugian menggunakan algoritma backpropagation dalam kombinasi dengan penurunan gradien stokastik. Kecuali untuk bobot yang ditentukan melalui proses pembelajaran, algoritma deep learning biasanya memerlukan pengaturan hyperparameter—parameter yang tidak dipelajari tetapi diperbaiki sebelum pembelajaran. Hyperparameter adalah jumlah lapisan, jumlah neuron dalam lapisan, jenis lapisan, jenis neuron, dan inisialisasi bobot.
Ada batasan perangkat keras dalam pengaturan hyperparameter; saat ini secara fisik tidak mungkin untuk mengatur satu triliun neuron pada satu GPU. Masalah kedua untuk pencarian hyperparameter lengkap adalah ledakan kombinatorial; tidak mungkin untuk mencari melalui semua kemungkinan kombinasi hyperparameters karena akan memakan waktu tak terbatas. Karena itu, hyperparameter diatur secara acak atau menggunakan beberapa heuristik dan contoh terkenal yang dijelaskan dalam makalah ilmiah — salah satu hyperparameter yang digunakan untuk analisis data keuangan yang ditampilkan nanti dalam posting blog ini adalah penggunaan neuron berulang, sebagai ilmuwan dan insinyur telah membuktikan bahwa mereka bekerja dengan baik dengan data deret waktu. Biasanya, cara terbaik untuk melihat apakah hyperparameters untuk masalah yang diberikan baik atau tidak adalah melalui eksperimen.
Inti dari pelatihan adalah membuat jaringan saraf sesuai dengan data pelatihan. Baik validasi model, yang dilakukan setelah setiap langkah pelatihan, dan pengujian model, yang dilakukan setelah seluruh prosedur pelatihan, dilakukan untuk melihat apakah model dapat digeneralisasi dengan baik. Generalisasi berarti bahwa jaringan saraf dapat membuat prediksi yang baik pada data baru yang tidak terlihat.
Ada dua istilah penting terkait pemilihan model: overfitting dan underfitting . Jika jaringan saraf terlalu kompleks mengenai data yang dilatihnya—jika memiliki terlalu banyak parameter (terlalu banyak lapisan, dan/atau terlalu banyak neuron dalam lapisan)—jaringan saraf dapat menyesuaikan data. Itu dapat menyesuaikan dengan data pelatihan dengan baik karena memiliki kapasitas lebih dari cukup untuk memuat semua data, tetapi kemudian kinerja validasi dan set tes buruk.

Jika jaringan saraf terlalu sederhana mengenai data yang dilatihnya, jaringan saraf dapat kekurangan data. Dalam hal ini, jaringan saraf memiliki kinerja yang buruk pada pelatihan, validasi, dan set pengujian karena kapasitasnya tidak cukup baik untuk menyesuaikan data pelatihan dan untuk digeneralisasi. Pada gambar di bawah, istilah-istilah tersebut dijelaskan secara grafis. Garis biru mewakili apa yang dimodelkan oleh jaringan saraf. Gambar pertama menunjukkan situasi ketika ada beberapa parameter jaringan saraf, tidak cukup untuk menyesuaikan data pelatihan dan untuk digeneralisasi. Gambar kedua menunjukkan situasi ketika ada jumlah parameter yang optimal dan jaringan saraf dapat menggeneralisasi dengan baik pada data yang tidak terlihat, dan gambar ketiga menunjukkan situasi ketika jumlah parameter jaringan saraf terlalu besar dan jaringan saraf dapat dengan sempurna cocok untuk semua data dari set pelatihan, tetapi memiliki kinerja yang buruk pada validasi dan set pengujian.
Jaringan Saraf Berulang
Versi yang lebih rumit dari jaringan saraf adalah jaringan saraf berulang. Dalam jaringan saraf berulang, data dapat mengalir ke segala arah, berbeda dengan jaringan saraf maju. Mereka dapat mempelajari dependensi deret waktu dengan baik. Arsitektur jaringan saraf berulang umum ditunjukkan pada gambar di bawah ini.
Pada gambar di bawah ini ditunjukkan satu neuron rekuren. Dibutuhkan X_{t}
, titik waktu t
, sebagai input dan mengembalikan h_{t}
, keadaan tersembunyi dalam waktu t
, sebagai output. Output tersembunyi disebarkan kembali ke neuron. Neuron berulang dapat dibuka gulungannya seperti yang ditunjukkan pada gambar yang sama dari sisi kanan. X_{t_0}
adalah titik dalam jangka waktu t_{0}
, X_{t_1}
dalam jangka waktu t_{1}
, dan X_{t}
dalam jangka waktu t
. Keluaran yang diperoleh dengan menggunakan masukan X_{t_0}
, X_{t_1}
, …, X_{t_n}
dalam periode waktu t_{0}
, t_{1}
, …, t_{n}
disebut keluaran tersembunyi: h_{t_0}
, h_{t_1}
, …, h_{t_n}
, masing-masing.
Salah satu arsitektur jaringan syaraf tiruan terbaik adalah arsitektur LSTM. LSTM ditunjukkan di bawah ini:
LSTM memiliki struktur umum yang sama dengan jaringan saraf rekuren umum, tetapi neuron rekuren sedikit berbeda dengan struktur yang lebih kompleks. Dapat dilihat dari gambar di atas bahwa banyak komputasi dilakukan di dalam satu sel LSTM. Sel LSTM dapat diamati sebagai kotak hitam dalam konteks posting ini, tetapi untuk pembaca yang lebih penasaran, posting blog yang bagus ini menjelaskan perhitungan di dalam LSTM dan banyak lagi.
Mari kita sebut input untuk jaringan saraf sebagai "vektor fitur." Ini adalah vektor n
-dimensi yang elemennya adalah fitur: f_{0}
, f_{1}
, f_{2}
…, f_{n}
.
\vv{X} = [f_{0}, f_{1}, f_{2}, …, f_{n}]
Sekarang, mari kita jelaskan bagaimana jaringan saraf berulang dapat diterapkan pada tugas yang berhubungan dengan keuangan. Input untuk jaringan saraf berulang adalah [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}]
. Misalkan n = 5
. Kami mengambil lima harga saham Google Close dari lima hari berturut-turut (lihat tabel dengan data Buka/Tinggi/Rendah/Tutup di atas) antara, katakanlah, 01-01-2010 dan 08-01-2010, yaitu, [[311.35], [309.98], [302.16], [295.13], [299.06]]
. Vektor fitur dalam contoh ini adalah satu dimensi. Urutan waktu terdiri dari lima vektor fitur tersebut. Keluaran dari jaringan saraf tiruan adalah fitur tersembunyi [h_{t_0}, h_{t_1}, h_{t_2}, …, h_{t_n}]
. Fitur tersebut berada pada tingkat yang lebih abstrak daripada fitur input [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}]
—LSTM harus mempelajari bagian penting dari fitur input dan memproyeksikannya ke ruang fitur tersembunyi. Fitur abstrak dan tersembunyi tersebut dapat disebarkan di sel LSTM berikutnya, yang akan memberikan kumpulan fitur tersembunyi berikutnya yang lebih abstrak yang kemudian dapat disebarkan lagi ke LSTM berikutnya, dan seterusnya. Setelah urutan LSTM yang dirantai, komponen terakhir dari jaringan saraf adalah lapisan linier (bagian bangunan dari jaringan umpan maju sederhana yang dijelaskan di bagian sebelumnya) yang memetakan fitur tersembunyi dari LSTM terakhir ke titik dalam ruang satu dimensi, dan titik itu adalah hasil akhir dari jaringan—harga Penutupan yang diprediksi dalam periode waktu X_{t+1}
. Kebenaran dasar dalam contoh ini untuk X_{t+1}
adalah 298.61
.
Catatan: Mungkin juga ada sedikitnya satu LSTM—pengaturan jumlah LSTM adalah hyperparameter, yang umumnya ditemukan secara empiris, meskipun kita dapat menggunakan beberapa heuristik. Jika data tidak begitu kompleks, kami menggunakan arsitektur yang tidak terlalu kompleks sehingga model tidak terlalu sesuai dengan data. Jika datanya kompleks, kami menggunakan model yang kompleks sehingga modelnya tidak sesuai dengan data.
Pada fase pelatihan, harga Close yang diprediksi dibandingkan dengan harga ground truth, dan perbedaan antara prediksi harga Close dan harga ground truth diminimalkan menggunakan algoritma backpropagation dan algoritma optimasi penurunan gradien (atau salah satu bentuknya—secara konkret, dalam hal ini blog, yang disebut versi "Adam" dari algoritma pengoptimalan penurunan gradien digunakan) dengan mengubah bobot jaringan saraf.
Setelah pelatihan dan pengujian, di masa depan, pengguna hanya perlu memberikan data input ke jaringan saraf dan itu akan mengembalikan harga yang diprediksi (dan mudah-mudahan, harga yang sangat dekat dengan harga kebenaran dasar dari masa depan).
Satu hal lagi yang perlu disebutkan di sini adalah bahwa, biasanya, kumpulan data dikirim melalui jaringan, baik dalam pelatihan dalam fase pengujian, agar jaringan dapat menghitung banyak keluaran hanya dalam satu lintasan.
Di bawah ini adalah gambar arsitektur yang digunakan dalam blog ini untuk eksperimen. Ini terdiri dari dua LSTM bertumpuk dan satu lapisan linier.
Eksperimen Dengan Algoritma Hedge Fund
Coba gunakan strategi perdagangan algoritme yang sederhana, sebagai berikut: Jika algoritme memprediksi bahwa harga akan naik keesokan harinya, maka belilah n
( n = 1
dalam contoh ini) saham suatu perusahaan (long), jika tidak, jual semua saham suatu perusahaan (pendek). Nilai awal portofolio (nilai gabungan uang tunai dan saham) ditetapkan menjadi $100.000. Setiap aksi panjang atau pendek masing-masing akan membeli n
saham perusahaan (Google, dalam contoh ini) atau menjual semua saham perusahaan. Pada awalnya, sistem memiliki 0 saham dari perusahaan tertentu.
Selalu ingat bahwa ini adalah contoh yang sangat mendasar dan sederhana, tidak dimaksudkan untuk digunakan di dunia nyata, karena lebih banyak pekerjaan R&D akan diperlukan untuk mengubah model agar bekerja dengan baik dalam praktik. Beberapa hal diabaikan di sini yang harus dipertimbangkan dalam skenario dunia nyata; misalnya, biaya transaksi tidak dimasukkan dalam model. Diasumsikan bahwa sistem dapat berdagang tepat pada waktu yang sama setiap hari, dan diasumsikan bahwa setiap hari, bahkan pada akhir pekan atau hari libur, adalah hari perdagangan.
Untuk pengujian, digunakan metode backtesting. Metode backtesting menggunakan data historis untuk merekonstruksi perdagangan yang akan terjadi di masa lalu menggunakan aturan yang ditentukan dengan strategi yang dikembangkan. Dataset dibagi menjadi dua bagian — bagian pertama adalah set pelatihan (masa lalu) dan bagian kedua adalah set pengujian (masa depan). Model dilatih pada set pelatihan dan, setelah pelatihan, kami mensimulasikan masa depan pada bagian kedua dari set data untuk melihat bagaimana model yang dilatih akan berperilaku di masa depan tanpa dilatih di atasnya.
Metrik untuk mengevaluasi strategi perdagangan adalah rasio Sharpe (versi tahunannya, dengan asumsi semua hari dalam setahun adalah hari perdagangan, dan tahun tersebut memiliki 365 hari: sqrt(365)*mean(returns)/std(returns))
, di mana pengembalian didefinisikan sebagai p_{t}/p_{t-1} - 1
, dan p_{t}
adalah harga dalam periode waktu t
. Rasio Sharpe menunjukkan rasio antara pengembalian dan risiko tambahan yang ditimbulkan, jadi ada baiknya memiliki rasio Sharpe yang lebih besar. Biasanya, rasio yang lebih besar dari 1 dapat diterima oleh investor, 2 sangat baik, dan 3 sangat baik.
Hanya harga Tutup setiap hari, dari harga historis Google dari kumpulan data Yahoo Finance, yang digunakan sebagai fitur. Lebih banyak fitur akan membantu, tetapi di luar cakupan blog ini untuk menguji fitur lain mana dari kumpulan data (Buka, Tinggi, Rendah) yang penting. Beberapa fitur lain yang tidak termasuk dalam tabel juga dapat membantu—misalnya, sentimen berita pada menit tertentu atau kejadian penting pada hari tertentu. Namun, terkadang sangat sulit untuk membuat representasi data yang berguna untuk input jaringan saraf dan menggabungkannya dengan fitur yang ada. Misalnya, mudah untuk memperluas vektor fitur dan menempatkan nomor yang mewakili sentimen berita atau sentimen tweet Trump ( -1
sangat negatif, 0
netral, +1
sangat positif, dll.) untuk setiap periode waktu tertentu, tetapi tidak sangat mudah untuk menempatkan momen-momen tertentu yang digerakkan oleh peristiwa (bajak laut di terusan Suez, bom di kilang minyak di Texas) dalam vektor fitur karena, untuk setiap momen tertentu, kita perlu memiliki elemen tambahan dalam vektor fitur untuk menempatkan 1
jika peristiwa itu terjadi atau 0
sebaliknya, yang akan menghasilkan jumlah elemen yang tak terbatas untuk semua momen yang mungkin.
Untuk data yang lebih sulit itu, kita dapat mendefinisikan beberapa kategori dan, untuk setiap momen, menentukan termasuk dalam kategori mana. Kami juga dapat menambahkan fitur dari saham perusahaan lain untuk sistem mempelajari korelasi antara harga saham perusahaan yang berbeda. Juga, ada jenis jaringan saraf khusus untuk visi komputer—jaringan saraf convolutional—yang akan menarik untuk digabungkan dengan lapisan berulang dan melihat bagaimana fitur visual berkorelasi dengan harga beberapa perusahaan. Mungkin kita bisa menggunakan umpan kamera dari stasiun kereta yang ramai sebagai fitur dan melampirkan umpan itu ke jaringan saraf dan melihat apakah yang dilihat jaringan saraf itu berkorelasi dengan harga saham beberapa perusahaan—mungkin ada beberapa pengetahuan tersembunyi bahkan di dalamnya. contoh yang dangkal dan tidak masuk akal.
Di bawah ini adalah grafik yang menunjukkan bagaimana hilangnya pelatihan rata-rata menurun dari waktu ke waktu, yang berarti bahwa jaringan saraf memiliki kapasitas yang cukup untuk menyesuaikan data pelatihan. Penting untuk mengatakan bahwa data perlu dinormalisasi sehingga algoritma pembelajaran mendalam dapat menyatu.
Di bawah ini adalah grafik yang menunjukkan bagaimana kehilangan tes rata-rata menurun dari waktu ke waktu, yang berarti bahwa jaringan saraf memiliki kemampuan untuk menggeneralisasi data yang tidak terlihat.
Algoritma ini serakah; jika diprediksi harga akan naik keesokan harinya, maka algoritma segera membeli n=1
saham perusahaan (jika ada cukup uang dalam portofolio), dan sebaliknya, ia menjual semua saham perusahaan (jika ada ). Periode investasi adalah tetap dan memakan waktu 300 hari. Setelah 300 hari, semua saham terjual. Simulasi pada data yang tidak terlihat, setelah beberapa pelatihan, dapat dilihat di bawah ini. Ditunjukkan bagaimana nilai portofolio meningkat dari waktu ke waktu melalui tindakan panjang/pendek (atau tidak melakukan apa-apa) setiap hari.
Rasio Sharpe untuk simulasi di atas adalah 1,48. Nilai portofolio akhir setelah 300 hari adalah $100.263,79. Jika kita baru saja membeli saham pada hari pertama dan menjualnya setelah 300 hari, portofolionya akan bernilai $99.988.41.
Ditampilkan di bawah ini adalah situasi di mana jaringan saraf tidak terlatih dengan baik dan kehilangan uang setelah jangka waktu tetap 300 hari.
Rasio Sharpe adalah -0,94. Nilai portofolio akhir setelah 300 hari adalah $99.868,36.
Berikut adalah salah satu contoh menarik—algoritme di atas adalah serakah dan hanya memprediksi harga untuk hari berikutnya, mengambil tindakan berdasarkan prediksi itu saja. Dimungkinkan untuk membuat beberapa prediksi dan memprediksi harga dalam beberapa langkah berikutnya di masa depan. Misalnya, dengan input pertama [X_ground_truth_{t0}, X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}]
dan output pertama adalah [X_predicted_{t5}]
, kita dapat memberi makan neural network dengan prediksi tersebut sehingga input selanjutnya adalah [X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}]
dan outputnya adalah [X_predicted_{t6}]
. Input selanjutnya dari sana adalah [X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}, X_predicted_{t6}]
yang menghasilkan [X_predicted_{t7}]
, dan seterusnya. Masalahnya di sini adalah bahwa kami memperkenalkan kesalahan prediksi yang meningkat dengan setiap langkah baru dan akhirnya berakhir dengan hasil jangka panjang yang sangat buruk, seperti yang ditunjukkan pada gambar di bawah ini. Prediksi pada awalnya mengikuti tren penurunan kebenaran dasar dan kemudian mandek dan menjadi lebih buruk dan lebih buruk dari waktu ke waktu.
Analisis pembelajaran mendalam yang sangat sederhana dilakukan pada harga saham Google, tetapi dapat menggabungkan hampir semua kumpulan data keuangan, asalkan jumlah datanya cukup besar dan berkualitas baik. Data harus diskriminatif dan harus menggambarkan dan mewakili masalah dengan baik.
Membungkus
Jika berhasil dan digeneralisasikan dengan baik pada pengujian ekstensif, sistem ini dapat memungkinkan manajer dana lindung nilai untuk berspekulasi tentang harga saham perusahaan di masa depan menggunakan pembelajaran mendalam dan mengandalkan strategi perdagangan algoritmik.
Manajer dana lindung nilai dapat memberi sistem sejumlah uang untuk diperdagangkan secara otomatis setiap hari. Namun, akan sangat buruk membiarkan algoritme perdagangan otomatis berdagang tanpa pengawasan apa pun. Manajer dana lindung nilai harus memiliki beberapa keterampilan pembelajaran yang mendalam atau mempekerjakan seseorang dengan keterampilan yang diperlukan untuk mengawasi sistem dan menentukan kapan sistem telah kehilangan kemampuan untuk menggeneralisasi dan berdagang dengan baik.
If the system lost the ability to generalize, then it would be necessary to retrain it from the beginning and test it again (maybe by introducing more discriminative features or new knowledge—using new data from the past that didn't exist when the model was first trained).
Sometimes, the data is simply not good enough for the deep learning system to be trained and generalize well and, in that case, an experienced deep learning engineer should be able to detect and rectify such a situation. To build a deep learning trading system, you need hedge funds data scientists, machine learning/deep learning experts (both scientists and engineers), R&D engineers familiar with machine learning/deep learning, etc. No matter which part of an application of machine learning they are familiar with, whether it's computer vision or speech recognition, seasoned professionals will be able to put their experience to good use in the financial sector. At its root, deep learning has the same basics regardless of application or industry, and it should be easy for someone experienced to switch from theme to theme.
The system we presented is very basic and, to be applied in the real world, more R&D should be done in order to increase the returns. Possible improvements of the system could be in developing better trading strategies. Collecting more data for training, which is usually very expensive, will help. A smaller time interval between the points is better. Improvements can also surface in using more features (eg, news sentiments or important happenings corresponding to each point in the dataset, despite being hard to code for a neural network) and extensive grid search for hyperparameters and RNN architecture discovery.
Also, more computing power (powerful GPUs are a must) is needed to make a lot of extensive experiments in parallel and to process a large amount of data, provided that a large amount of data is collected.
References:
- https://www.datacamp.com/community/tutorials/finance-python-trading
- http://colah.github.io/posts/2015-08-Understanding-LSTMs/
- https://en.wikipedia.org
- https://www.investopedia.com/
- https://finance.yahoo.com/
- http://pytorch.org/
Author's Note: I would like to thank Ivan Capalija and Matej Paradzik for the constructive conversations and advice about deep learning in finance, which helped me in writing this blog.