Apa yang Anda dapatkan dari mengikuti kursus ini? Pertama-tama, kursus ini didasarkan pada bahasa pemrograman JavaScript dan Python. Bahasa hanyalah teknologi. Akhirnya, kita harus menerapkan teknologi ini ke dalam industri. Perdagangan kuantitatif adalah industri yang sedang berkembang, yang saat ini berada dalam tahap perkembangan yang cepat dan memiliki permintaan besar untuk bakat.
Melalui pembelajaran sistematis dari kursus ini, Anda dapat memiliki pemahaman yang lebih dalam tentang bidang perdagangan kuantitatif. Jika Anda seorang siswa yang bersiap untuk memasuki bidang perdagangan kuantitatif, itu juga akan membantu Anda. Jika Anda seorang penggemar investasi saham atau berjangka, maka perdagangan kuantitatif dapat membantu perdagangan subjektif Anda. Dengan mengembangkan strategi perdagangan, Anda dapat memperoleh keuntungan di pasar keuangan, dan juga memperluas saluran dan platform untuk investasi dan manajemen keuangan Anda.
Sebelumnya, izinkan saya berbicara tentang pengalaman perdagangan pribadi saya. saya bukan jurusan keuangan, saya belajar statistik. pada awalnya, saya mulai memperdagangkan saham secara subjektif di hari-hari sekolah saya. kemudian, saya menjadi praktisi perdagangan kuantitatif dana ekuitas swasta domestik, terutama terlibat dalam penelitian strategi dan pengembangan strategi.
Saya telah berdagang di lingkaran ini selama lebih dari sepuluh tahun, dan telah mengembangkan berbagai jenis strategi. Filsafat investasi saya adalah: pengendalian risiko di atas segalanya dan berfokus pada pengembalian absolut. Topik topik kami adalah: dari perdagangan kuantitatif hingga manajemen aset - pengembangan strategi CTA untuk pengembalian absolut.
Seseorang mungkin bertanya apa itu CTA? Apa sebenarnya CTA? CTA disebut penasihat perdagangan komoditas di negara-negara asing dan manajer investasi di Cina. CTA tradisional adalah mengumpulkan dana dari sebagian besar investor, kemudian mempercayakan kepada lembaga investasi profesional, dan akhirnya berinvestasi dalam futures indeks saham, futures komoditas, dan futures obligasi melalui penasihat perdagangan (yaitu CTA).
Tetapi pada kenyataannya, dengan perkembangan dan perluasan terus-menerus dari pasar berjangka global, konsep CTA juga berkembang, dan ruang lingkupnya jauh melampaui berjangka tradisional. Ini dapat berinvestasi tidak hanya di pasar berjangka, tetapi juga di pasar suku bunga, pasar saham, pasar valuta asing dan pasar opsi. Selama ada sejumlah data historis untuk varietas ini, ia dapat mengembangkan strategi CTA yang sesuai berdasarkan data historis ini.
Pada awal tahun 1980-an, teknologi perdagangan elektronik belum matang. Pada saat itu, sebagian besar pedagang menilai tren masa depan komoditas berjangka dengan menggambar indikator teknis secara manual, seperti indeks William, KDJ, RSI, MACD, CCI, dll. Kemudian, pedagang mendirikan dana CTA khusus untuk membantu pelanggan mengelola aset.
Perubahan ukuran manajemen dana CTA
Dalam miliaran dolar
Dengan meningkatnya perdagangan kuantitatif, skala dana CTA global telah meningkat dari US $ 130,6 miliar pada tahun 2005 menjadi lebih dari US $ 300 miliar pada tahun 2015.
Dari akhir tahun 1979 hingga akhir tahun 2016, kumulatif return dari Barclay CTA Fund Index mencapai 28,95 kali, annualised return 9,59%, Sharp ratio 0,37, dan maximum withdrawal 15,66%.
Karena dalam portofolio alokasi aset, strategi CTA biasanya mempertahankan korelasi yang sangat rendah dengan strategi lain. Seperti yang ditunjukkan dalam lingkaran merah di bawah ini, selama pasar beruang saham global dari 2000 hingga 2002 dan krisis subprime global pada tahun 2008, indeks dana Barclay CTA tidak hanya tidak turun tetapi juga mencapai pengembalian positif. Ketika pasar saham dan pasar obligasi berada dalam krisis, CTA dapat memberikan pengembalian yang kuat. Selain itu, kita dapat melihat bahwa tingkat keuntungan Barclay Commodity CTA Index sejak 1980 lebih kuat daripada S&P 500, dan penarikan juga jauh lebih rendah dari S&P 500.
Perkembangan CTA di Cina baru dalam sepuluh tahun terakhir, tetapi momentumnya sangat kuat. Hal ini terutama disebabkan oleh lingkungan perdagangan komoditas domestik berjangka yang relatif terbuka, ambang batas dana perdagangan yang rendah, penggunaan sistem margin untuk perdagangan posisi panjang dan pendek, biaya transaksi yang rendah, struktur teknis yang lebih maju dari bursa dibandingkan dengan saham, dan perdagangan sistem yang lebih mudah.
Sejak tahun 2010, dana CTA terutama ada dalam bentuk dana swasta. Dengan pembukaan secara bertahap ruang lingkup investasi akun khusus dana dalam kebijakan domestik, dana CTA mulai ada dalam bentuk akun khusus dana. Mode operasinya yang lebih transparan dan terbuka juga telah menjadi alat yang diperlukan bagi lebih banyak investor untuk mengalokasikan aset.
Strategi CTA juga lebih cocok untuk pedagang individu daripada strategi perdagangan lainnya dalam hal kemudahan masuk, ambang modal, pelaksanaan strategi perdagangan, dan konektivitas API. Kontrak berjangka domestik sangat kecil. Misalnya, tepung jagung atau kedelai dapat diperdagangkan seharga ribuan yuan, dan hampir tidak ada ambang modal. Selain itu, karena beberapa strategi CTA berasal dari analisis teknis tradisional, itu relatif mudah dibandingkan dengan strategi lain.
Proses desain strategi CTA juga relatif sederhana. Pertama, data historis diproses terlebih dahulu, dan kemudian dimasukkan ke dalam model kuantitatif. Model kuantitatif mencakup strategi perdagangan yang dibentuk oleh pemodelan matematis, desain pemrograman dan alat lain, dan sinyal perdagangan dihasilkan dengan menghitung dan menganalisis data ini. Tentu saja, dalam pengembangan yang sebenarnya, tidak sesederhana grafik di atas. Di sini kami hanya memberikan konsep keseluruhan.
Dari perspektif strategi trading, strategi CTA juga beragam: dapat menjadi strategi tren atau strategi arbitrage; dapat menjadi strategi jangka menengah dan panjang jangka panjang, atau strategi jangka pendek intraday; logika strategi dapat didasarkan pada analisis teknis atau analisis fundamental; dapat menjadi transaksi subjektif atau transaksi sistem.
Strategi CTA memiliki metode klasifikasi yang berbeda. Menurut metode transaksi, dapat dibagi menjadi transaksi subjektif dan transaksi sistem. Pengembangan strategi CTA asing relatif maju, dan strategi CTA transaksi sistem telah mendekati 100%. Menurut metode analisis, dapat dibagi menjadi analisis dasar dan analisis teknis. Menurut sumber pendapatan, dapat dibagi menjadi perdagangan tren dan perdagangan osilator.
Secara umum, strategi CTA menyumbang sekitar 70% dari total pasar perdagangan, strategi tren menyumbang sekitar 25%, dan strategi kontra-tren atau strategi pembalikan tren menyumbang sekitar 5%.Di antara mereka, strategi tren dengan proporsi terbesar dapat dibagi menjadi perdagangan frekuensi tinggi, perdagangan intraday, perdagangan jangka pendek dan menengah, dan perdagangan jangka menengah dan panjang sesuai dengan periode posisi.
Saat ini, ada dua strategi perdagangan frekuensi tinggi utama di pasar: satu adalah strategi pembuatan pasar frekuensi tinggi, yang lainnya adalah strategi arbitrage frekuensi tinggi. Strategi pembuatan pasar adalah untuk menyediakan likuiditas di pasar perdagangan. Artinya, di pasar perdagangan dengan pembuat pasar, jika seseorang ingin berdagang, pembuat pasar harus memastikan bahwa pesanan mereka dapat diperdagangkan. Jika tidak ada likuiditas yang cukup di pasar dan pesanan tidak dapat diperdagangkan, pembuat pasar harus membeli atau menjual pesanan lawan.
Arbitrage frekuensi tinggi mengacu pada perdagangan dua saham yang sangat berkorelasi atau ETF dan portofolio ETF. Menurut metode perhitungan ETF, harga yang diharapkan dari ETF dapat dihitung dengan cara yang sama. Harga indeks ETF dapat mengurangi harga yang diharapkan dari ETF untuk mendapatkan perbedaan harga. Biasanya, perbedaan harga akan berjalan dalam saluran harga. Jika perbedaan harga menembus saluran atas dan bawah, Anda dapat memperdagangkan perbedaan harga, menunggu pengembalian perbedaan harga, dan mendapatkan pendapatan darinya.
Dalam arti harfiah, selama tidak ada posisi overnight, itu dapat disebut strategi perdagangan intraday. Karena periode pemegang perdagangan intraday yang singkat, biasanya tidak mungkin untuk menghasilkan keuntungan segera setelah memasuki pasar, dan kemudian keluar dari pasar dengan cepat. Oleh karena itu, mode perdagangan ini membawa risiko pasar yang rendah. Namun, karena pasar berubah dengan cepat dalam waktu singkat, strategi intraday biasanya memiliki persyaratan yang lebih tinggi untuk pedagang.
Secara teori, semakin lama periode kepemilikan, semakin besar kapasitas strategis dan semakin rendah rasio risiko-pengembalian. Terutama dalam transaksi institusional, karena kapasitas terbatas dari strategi jangka pendek, dana besar tidak dapat masuk dan keluar dari pasar dalam waktu singkat, strategi jangka panjang akan dialokasikan. Secara umum, periode posisi adalah beberapa hari dan bulan, atau bahkan lebih lama.
Secara umum, strategi CTA dipelajari dengan data menit, jam dan harian, yang meliputi: harga pembukaan, harga tertinggi, harga terendah, harga penutupan, volume perdagangan, dll. Hanya beberapa strategi CTA yang akan menggunakan data Tick, seperti harga beli, harga jual, volume beli, volume jual dan data mendalam lainnya dalam data L2.
Untuk ide dasar strategi CTA, hal pertama yang kita pikirkan adalah berdasarkan indikator teknis tradisional, karena ada banyak bahan referensi publik di bidang ini, dan logikanya biasanya sederhana, yang sebagian besar didasarkan pada prinsip-prinsip statistik.
Ada juga beberapa model perdagangan klasik di pasar, yang juga dapat digunakan sebagai referensi dan ditingkatkan, termasuk: kombinasi rata-rata bergerak ganda, DualThrust, R-Breaker, metode perdagangan penyu, metode perdagangan grid, dll.
Semua ini adalah strategi perdagangan berdasarkan analisis teknis tradisional. Prosesnya adalah untuk mengekstrak faktor atau kondisi perdagangan dengan keuntungan probabilitas sesuai dengan data historis dan konsep perdagangan yang benar, dan mengasumsikan bahwa pasar masih akan memiliki hukum seperti itu di masa depan. Akhirnya, strategi perdagangan direalisasikan oleh kode dan perdagangan otomatis sepenuhnya. Buka posisi, berhenti keuntungan, berhenti kerugian, meningkatkan posisi, mengurangi posisi, dll, yang umumnya tidak memerlukan intervensi manual.
Keuntungan terbesar dari strategi CTA adalah bahwa tidak peduli apakah pasar saat ini naik atau turun, ia dapat memperoleh pengembalian absolut, terutama ketika pasar berubah dengan cepat, atau tren pasar jelas lancar, keuntungan dari strategi itu jelas, singkatnya, jika ada tren, ada keuntungan. Namun, jika pasar berada dalam situasi volatile atau tren tidak jelas, strategi dapat membeli pada titik tinggi dan menjual pada titik rendah, dan menghentikan kerugian bolak-balik.
Strategi CTA berjangka menguntungkan terutama karena poin berikut:
Selain itu, fitur trading dari trend tracking adalah kehilangan sejumlah kecil uang ketika tidak ada pasar, dan membuat kekayaan besar ketika pasar datang. Namun, orang-orang yang telah melakukan trading tahu bahwa pasar tidak stabil sebagian besar waktu, dan hanya dalam waktu yang singkat adalah pasar tren. Oleh karena itu, strategi trend tracking memiliki tingkat kemenangan yang rendah dalam perdagangan, tetapi keuntungan dan kerugian keseluruhan dari setiap transaksi relatif besar.
Karena strategi pelacakan tren tidak stabil dalam hal pendapatan, banyak lembaga investasi akan menggunakan berbagai varietas dan strategi untuk membangun portofolio, yang juga akan dikonfigurasi dengan sejumlah strategi pembalikan.
Korélasi antara CTA dan aset tradisional
Mari kita lihat grafik di atas. Secara teoritis, berbagai strategi dengan gaya yang berbeda atau korelasi yang relatif rendah kadang-kadang akan sama dan kadang-kadang sinyal perdagangan yang berbeda pada saat yang sama ketika menghadapi berbagai perubahan harga pasar. Karena beberapa kurva pengembalian saling tumpang tindih, keseluruhan pengembalian saling melengkapi, dan kurva pengembalian akan menjadi lebih datar, sehingga mengurangi volatilitas pengembalian.
Dari sudut pandang di atas, dapat disimpulkan bahwa lebih baik mengembangkan beberapa sub-strategi moderat daripada mengembangkan strategi utama. Bagaimana mengendalikan strategi ini? Di sini kita dapat belajar dari algoritma hutan acak dalam pembelajaran mesin. Hutan acak bukanlah algoritma independen, itu adalah kerangka keputusan yang berisi beberapa pohon keputusan. Ini setara dengan strategi induk di atas sub-strategi pohon keputusan. Kluster substrategi diatur dan dikendalikan melalui strategi induk.
Selanjutnya, kita perlu merancang strategi induk. Kita dapat mengevaluasi likuiditas, profitabilitas dan stabilitas setiap varietas di seluruh pasar berjangka komoditas untuk menyaring portofolio varietas berjangka komoditas dengan volatilitas pendapatan yang rendah, dan kemudian melakukan penyaringan netral industri, lebih lanjut mengurangi volatilitas keseluruhan melalui penyebaran industri portofolio, dan akhirnya membangun portofolio multi-varietas komoditas berjangka aktual melalui pencocokan nilai pasar untuk perdagangan.
Setiap varietas juga dapat dikonfigurasi dengan strategi multi-parameter, dan dapat memilih kombinasi parameter dengan kinerja yang baik dalam backtest. Ketika tren pasar jelas, strategi multi-parameter umumnya akan berkinerja konsisten, yang setara dengan menambahkan posisi; Ketika pasar berada dalam situasi volatile, kinerja beberapa set strategi parameter biasanya tidak konsisten, sehingga mereka dapat melindungi risiko dengan masing-masing pergi panjang atau pendek, yang setara dengan mengurangi posisi. Ini dapat lebih mengurangi tingkat backtest maksimum portofolio, sambil menjaga tingkat pengembalian keseluruhan tidak berubah.
Newton pernah berkata: Jika saya melihat lebih jauh dari orang lain, itu karena saya berdiri di bahu raksasa.
Strategi CTA yang tersedia secara publik di pasar termasuk strategi SMA, strategi Bollinger band, aturan perdagangan kura-kura, strategi momentum, strategi arbitrage, dan sebagainya. Strategi perdagangan kuantitatif memiliki satu karakteristik, yaitu, mereka akan perlahan gagal setelah diumumkan kepada publik.
Analisis fundamental tidak perlu peduli dengan tren harga jangka pendek. Diyakini bahwa nilainya akan tercermin dalam harga pada akhirnya. Ini lebih tentang menganalisis faktor-faktor di balik harga untuk menentukan berapa banyak nilai varietas. Secara umum, metode analisis top-down diadopsi: dari faktor makro, faktor varietas dan faktor lainnya.
Kita dapat melihat dari grafik di atas bahwa ada banyak faktor yang mempengaruhi harga komoditas, dan data ini terus berubah.
Pada kenyataannya, analisis fundamental futures komoditas bukan untuk menganalisis semua faktor. kita hanya perlu memahami elemen inti analisis fundamental untuk mengetahui aturan dari informasi yang kompleks.
Data makroekonomi adalah data yang kompleks dan berubah-ubah. Setiap hari, setiap saat, ada banyak data ekonomi yang diterbitkan, dari politik nasional, bank sentral, bank investasi, resmi dan tidak resmi. Selain krisis politik dan ekonomi, analisis makro adalah bahan yang baik untuk mengobrol, tetapi tidak praktis. Peter Lynch, seorang ahli manajemen dana terkenal di Amerika Serikat, pernah mengatakan:
Dalam analisis fundamental, analisis variasi terutama untuk menganalisis premi dan diskon, hubungan penawaran dan permintaan, persediaan komoditas, keuntungan industri, dll. Bisa dikatakan bahwa menguasai analisis faktor variasi komoditas berjangka dapat menilai sebagian besar tren pasar.
Seperti yang diketahui teman-teman yang telah melakukan futures, komoditas domestik futures dapat dengan mudah dibagi menjadi produk industri dan produk pertanian. Metode analisis produk industri dan produk pertanian berbeda. Kami akan menguraikan dua aspek penawaran dan permintaan. Dalam produk industri, penawaran relatif stabil. Kecuali ada terobosan teknologi besar, kapasitas produksi tidak mungkin berubah secara signifikan dalam waktu singkat. Oleh karena itu, faktor utama yang mempengaruhi harga produk industri adalah permintaan. Permintaan untuk produk pertanian relatif stabil. Dalam jangka panjang, permintaan untuk produk pertanian berubah, tetapi dalam jangka pendek, permintaan untuk produk pertanian cenderung stabil, jadi faktor utama yang mempengaruhi harga produk pertanian adalah pasokan.
Oleh karena itu, menurut hukum ekonomi, adalah hubungan antara penawaran dan permintaan yang menentukan harga barang pada akhirnya. Secara teori, selama data penawaran dan permintaan dapat diperoleh, harga barang di masa depan dapat ditentukan. Untuk produk industri, data penawaran mudah diperoleh, tetapi sulit untuk mendapatkan data permintaan. Untuk produk pertanian, data permintaan mudah diperoleh, dan sulit untuk mendapatkan data pasokan.
Pada kenyataannya, kita dapat mengurangi lebih lanjut. Hasil saling penawaran dan permintaan di pasar ekonomi adalah persediaan. Kita dapat menilai kekuatan hubungan antara penawaran pasar dan permintaan melalui data persediaan. Jika persediaan komoditas sangat tinggi, itu berarti bahwa penawaran pasar lebih besar dari permintaan, dan harga komoditas akan menurun dengan asumsi bahwa kondisi eksternal tetap tidak berubah. Jika persediaan komoditas sangat rendah, itu berarti bahwa permintaan pasar lebih besar dari penawaran, dan harga komoditas akan meningkat dengan asumsi bahwa kondisi eksternal tetap tidak berubah.
Selain menganalisis persediaan komoditas, kita juga perlu menganalisis perbedaan harga antara pasar spot dan pasar berjangka, yang juga disebut perbedaan dasar. Jika harga berjangka lebih besar dari harga spot, kita menyebutnya premi berjangka; Jika harga berjangka lebih rendah dari harga spot, kita menyebutnya diskon berjangka. Menurut sistem pengiriman berjangka, pada tanggal pengiriman berjangka, harga berjangka harus sama dengan harga spot.
Terlepas dari premi atau diskon, karena keterbatasan sistem pengiriman berjangka, harga berjangka pada tanggal pengiriman harus sama dengan harga spot secara teori.
Menurut prinsip di atas, kita dapat menggunakan persediaan dan perbedaan dasar untuk menentukan harga berjangka masa depan pada saat yang sama. Jika persediaan komoditas rendah, dan jika harga berjangka jauh lebih rendah dari harga spot, kita dapat menilai bahwa permintaan pasar spot lebih besar dari pasokan, dan kemungkinan harga spot meningkat di masa depan besar; juga karena sistem pengiriman berjangka, saat tanggal pengiriman mendekati, harga berjangka akan naik, dan akan sama dengan harga spot. Probabilitas kenaikan harga berjangka lebih besar di masa depan.
Akhirnya, kita menilai arah kemungkinan harga masa depan melalui perbedaan persediaan dan dasar, tetapi tidak ada titik yang tepat untuk membeli dan menjual, jadi kita perlu bekerja sama dengan analisis teknis untuk memberikan sinyal masuk dan keluar yang jelas. Struktur dari seluruh analisis fundamental adalah: low inventory + deep discount + technical analysis long position signal = go long; high inventory + substantial premium + technical analysis short position signal = go short.
Ketika datang ke strategi trading, kita harus berbicara tentang aturan perdagangan kura-kura perwakilan. Aturan perdagangan kura-kura berasal dari eksperimen paling terkenal dalam sejarah perdagangan. Richard Dennis, seorang spekulator komoditas, ingin tahu apakah pedagang hebat lahir atau dilatih. Untuk tujuan ini, pada tahun 1983, ia merekrut 13 orang dan mengajarkan mereka konsep dasar perdagangan berjangka, serta metode dan prinsip perdagangan sendiri. Siswa-siswa ini disebut
Dalam empat tahun berikutnya, penyu mencapai rata-rata bunga senyawa tahunan 80%. Dennis membuktikan bahwa dengan sistem dan aturan yang sederhana, orang-orang dengan sedikit atau tidak ada pengalaman perdagangan dapat menjadi pedagang yang sangat baik. Namun, beberapa penyu menjual aturan perdagangan penyu di situs web untuk keuntungan. Untuk mencegah perilaku ini, dua penyu asli, Curtis Firth dan Arthur Maddock, memutuskan untuk membuat aturan perdagangan penyu tersedia untuk umum secara gratis di situs web.
Setelah kebenaran terungkap, orang-orang menemukan bahwa aturan perdagangan penyu mengadopsi saluran Donchian yang dioptimalkan dan menggunakan indikator ATR untuk manajemen posisi.
Jadi selanjutnya, mari kita lihat apa aturan perdagangan penyu mengatakan.
Dengan demikian kita dapat melihat bahwa meskipun aturan trading Turtle terlihat sangat sederhana, pada kenyataannya telah membentuk rasa nyata dari prototipe sistem trading. itu mencakup semua aspek dari sistem trading yang lengkap, tidak meninggalkan ruang bagi pedagang untuk membuat keputusan imajinatif subjektif, yang hanya membuat keuntungan dari operasi terprogram sistem bermain, termasuk: aturan masuk dan keluar, manajemen dana dan kontrol risiko, dll.
Keuntungan terbesar dari metode trading kura-kura adalah membantu kita membangun seperangkat metode trading yang efektif. Ini adalah kombinasi dari pembukaan batch, stop profit dan stop loss yang dinamis, dan strategi mengikuti tren pasar, terutama penggunaan nilai ATR dan konsep manajemen posisi, yang sangat layak dipelajari. Tentu saja, ini juga memiliki masalah umum dengan strategi pelacakan tren, yaitu, keuntungan terapung dan mengambil kembali. Kemungkinan semua keuntungan terapung yang diperoleh dari membeli pemenang akan diambil karena gelombang penurunan tajam berikutnya. Ini sangat kuat dalam tren umum, dan tidak sebaik yang diharapkan di pasar yang fluktuatif.
Pada akhir abad lalu, metode trading yang sangat menakjubkan mulai berlaku di bidang investasi keuangan di Amerika Serikat. Setelah ribuan orang berlatih, orang-orang menemukan bahwa metode ini memiliki efektivitas dan nilai praktis yang besar. Pada saat yang sama, telah diakui oleh banyak ahli investasi dan pedagang profesional. Sampai sekarang, ini dapat diterapkan ke hampir semua bidang investasi keuangan dengan sempurna, apakah itu valuta asing, emas, saham, futures, minyak mentah, atau indeks dan obligasi, yang merupakan metode operasi kekacauan.
Kata kekacauan mengacu pada deskripsi keadaan kekacauan alam semesta pada awalnya. Idenya adalah bahwa hasilnya tidak dapat dihindari, tetapi karena pengetahuan yang ada tidak dapat menghitung hasilnya, karena perhitungan itu sendiri juga mengubah hasilnya, hasil maksimum atau minimum akhirnya mungkin muncul, tetapi tidak ada hasil yang tidak dapat dihindari. Ini sangat mirip dengan pasar perdagangan. Peserta juga mengubah pasar ketika mereka menganalisis pasar dan membeli dan menjual. Pasar memiliki variabilitas abadi. Ketika peserta memahami bentuk baru pasar, pasar juga memahami bahwa itu diakui oleh peserta, sehingga variasi terjadi. Dan itu akan cenderung berubah ke arah yang tidak diketahui peserta. Ini memiliki cukup kebijaksanaan untuk mencegah peserta menangkap aturan perubahannya, yaitu, pasar tidak stabil, dan pemahaman tentang masa lalu pasar tidak dapat mewakili masa depan.
Metode operasi kekacauan adalah seperangkat ide investasi, strategi perdagangan dan sinyal masuk dan keluar yang lengkap, yang ditemukan oleh Bill Williams. Saat ini, banyak investor di dunia mengadopsi operasi kekacauan untuk berpartisipasi dalam transaksi pasar. Karena perkembangan pasar keuangan China tertinggal, dan teori kekacauan juga merupakan ide yang relatif baru, ada sedikit orang yang mempelajari metode operasi kekacauan di Cina. Karena metode operasi kekacauan adalah strategi perdagangan dengan universalitas tinggi dan dapat diterapkan pada hampir semua bidang investasi keuangan, termasuk saham, obligasi, berjangka, valuta asing, dan mata uang digital, kursus ini menggunakan versi sederhana dari strategi kekacauan sebagai titik awal untuk meningkatkan minat dan pendapatan investasi Anda.
Seperti namanya, dasar teoritis metode operasi kekacauan adalah teori kekacauan, yang diusulkan oleh meteorolog Edward Lorenz. Ini adalah salah satu penemuan ilmiah terbesar di akhir abad ke-20.
Seluruh metode operasi Chaos terdiri dari lima dimensi utama (indikator teknis):
Buaya
Fraktal
Momentum
Percepatan
Garis Keseimbangan
Mari kita lihat grafik di atas. Alligator adalah seperangkat garis keseimbangan menggunakan geometri fraktal dan dinamika nonlinier. Intinya adalah untuk memperluas rata-rata bergerak bertimbang eksponensial, yang merupakan semacam garis rata-rata, tetapi metode perhitungannya sedikit lebih rumit daripada garis rata-rata biasa. Selanjutnya, mari kita lihat bagaimana mendefinisikan Alligator di MyLanguage:
// Parameters
N1:=11;
N2:=21;
// Defining the price median
N3:=N1+N2;
N4:=N2+N3;
HL:=(H+L)/2;
// Alligator
Y^^SMA(REF(HL,N3),N4,1);
R:=SMA(REF(HL,N2),N3,1);
G:=SMA(REF(HL,N1),N2,1);
Pertama, kita mendefinisikan 2 parameter eksternal N1 dan N2, dan kemudian menghitung HL rata-rata harga tertinggi dan harga terendah sesuai dengan parameter eksternal, dan kemudian menghitung HL rata-rata dengan parameter yang berbeda. untuk gigi, itu adalah rata-rata periode tengah garis tengah, dan rahang adalah rata-rata periode besar garis tengah. dalam strategi ini, kita menggunakan rahang.
Dalam metode operasi kekacauan, konsep fraktal didefinisikan dengan jelas. Kita dapat membuat analogi: buka telapak tangan, dengan jari-jari menghadap ke atas, jari tengah adalah fraktal atas, jari kelingking kiri dan jari manis, dan jari telunjuk kanan dan jempol masing-masing, mewakili garis K tanpa rekor tinggi. Fraktal dasar terdiri dari lima garis K ini. Kemudian Anda dapat mendefinisikan fraktal dengan kode berikut:
// Fractal
TOP_N:=BARSLAST(REF(H,2)=HHV(H,5))+2;
BOTTOM_N:=BARSLAST(REF(L,2)=LLV(L,5))+2;
TOP:=REF(H,TOP_N);
BOTTOM:=REF(L,BOTTOM_N);
MAX_YRG^^MAX(MAX(Y,R),G);
MIN_YRG^^MIN(MIN(Y,R),G);
TOP_FRACTAL^^VALUEWHEN(H>=MAX_YRG,TOP);
BOTTOM_FRACTAL^^VALUEWHEN(L<=MIN_YRG,BOTTOM);
Setelah menghitung alligator dan fraktal, kita dapat menulis strategi operasi kekacauan sederhana berdasarkan dua kondisi ini, dan menggunakan sekelompok garis rata-rata bergerak yang diberi bobot eksponensial sebagai harga acuan untuk menghitung indeks alligator dan fraktal. Tentu saja strategi operasi kekacauan asli akan lebih kompleks. Kode adalah sebagai berikut:
// If there are no current long position orders and the closing price rises above the upper fractal and the upper fractal is above the alligator, open a long position.
BKVOL=0 AND C>=TOP_FRACTAL AND TOP_FRACTAL>MAX_YRG,BPK(1);
// If there are no current short position orders and the closing price falls below the lower fractal and the lower fractal is below the alligator, open a short position.
SKVOL=0 AND C<=BOTTOM_FRACTAL AND BOTTOM_FRACTAL<MIN_YRG,SPK(1);
// Long positions are closed if the closing price falls below the jaws of the alligator.
C<Y,SP(BKVOL);
// Short positions are closed if the closing price rises above the jaws of the alligator.
C>Y,BP(SKVOL);
Untuk memudahkan pemahaman, saya menulis komentar rinci ke dalam kode secara langsung.
Selanjutnya, mari kita lihat seperti apa hasil dari backtest strategi operasi kekacauan sederhana ini. Untuk membuat backtest lebih dekat dengan lingkungan pasar yang sebenarnya, komisi ditetapkan menjadi dua kali nilai tukar, dan posisi pembukaan dan penutupan tunduk pada titik geser masing-masing dua lompatan. Jenis data backtest adalah indeks rebar, dan jenis perdagangan adalah rebar kekuatan utama terus menerus, dengan posisi pembukaan 1 lot tetap. Berikut ini adalah laporan kinerja backtest awal pada tingkat 1 jam.
Dari kurva modal dan data kinerja backtest, strategi tersebut berkinerja baik, dan kurva modal secara keseluruhan terus meningkat. Namun, sejak akhir 2016, karakteristik pasar varietas rebar telah berubah, dari tren volatilitas tinggi yang sepihak ke tren volatilitas luas. Dari perspektif kurva modal, keuntungan dari tahun 2017 hingga sekarang jelas lemah.
Dengan kata lain, esensi dari metode operasi kekacauan adalah menemukan titik balik, tanpa peduli bagaimana pasar berjalan atau apakah itu benar atau palsu breakout. Jika itu menerobos fraktal, itu akan memasuki pasar langsung. Jangan pernah mencoba untuk memprediksi pasar, tetapi menjadi pengamat dan pengikut.
George Soros mengemukakan proposisi penting dalam
Menurut prinsip-prinsip di atas, kita dapat mengetahui bahwa di pasar berjangka yang tidak efektif, alasan mengapa dampak pasar pada kontrak pengiriman di periode yang berbeda tidak selalu sinkron, dan penetapan harga tidak sepenuhnya efektif. Kemudian, berdasarkan harga kontrak pengiriman objek transaksi yang sama di periode yang berbeda, jika ada perbedaan harga yang besar antara kedua harga, kita dapat membeli dan menjual kontrak berjangka di periode yang berbeda pada saat yang sama untuk arbitrage lintas periode.
Seperti komoditas berjangka, mata uang digital juga memiliki portofolio kontrak arbitrage lintas periode. Misalnya, di bursa OKEX, ada: ETC minggu ini, ETC minggu depan, ETC kuartal. Misalnya, misalkan perbedaan harga antara minggu saat ini ETC dan kuartal ETC tetap sekitar 5 untuk waktu yang lama. Jika perbedaan harga mencapai 7 suatu hari, kita berharap bahwa perbedaan harga akan kembali ke 5 di masa depan. Kemudian kita dapat menjual ETC minggu itu dan membeli kuartal ETC pada saat yang sama untuk short perbedaan harga, dan sebaliknya.
Meskipun perbedaan harga ini ada, ada banyak ketidakpastian dalam arbitrage manual karena operasi manual yang memakan waktu, akurasi yang buruk dan dampak perubahan harga. Pesona arbitrage kuantitatif terletak pada menangkap peluang arbitrage melalui model kuantitatif dan merumuskan strategi perdagangan arbitrage, serta menempatkan pesanan perdagangan secara otomatis ke bursa melalui algoritma terprogram, sehingga menangkap peluang dengan cepat dan akurat dan menghasilkan keuntungan secara efisien dan stabil.
Kursus ini akan mengajarkan Anda cara menggunakan Platform Perdagangan Kuantum FMZ dan kontrak berjangka ETC di bursa OKEX untuk menunjukkan cara menangkap peluang arbitrage instan, merebut keuntungan yang dapat dilihat setiap saat, dan lindung nilai risiko yang mungkin terjadi dalam perdagangan mata uang digital dengan strategi arbitrage sederhana.
Membuat strategi arbitrage lintas periode untuk mata uang digitalKesulitan: Normal
Lingkungan Strategi
Logika strategi
Di atas adalah deskripsi logika sederhana dari strategi arbitrage lintas periode mata uang digital. jadi bagaimana menerapkan ide-ide kami dalam program? kami mencoba membangun kerangka kerja di FMZ Quant Trading Platform.
function Data() {} // Basic data function
Data.prototype.mp = function () {} // Position function
Data.prototype.boll = function () {} // Indicator function
Data.prototype.trade = function () {} // Order placement function
Data.prototype.cancelOrders = function () {} // Order withdrawal function
Data.prototype.isEven = function () {} // Processing single contract function
Data.prototype.drawingChart = function () {} // Drawing function
function onTick() {
var data = new Data(tradeTypeA, tradeTypeB); // Create a basic data object
var accountStocks = data.accountData.Stocks; // Account balance
var boll = data.boll(dataLength, timeCycle); // Calculate the technical indicators of boll
data.trade(); // Calculate trading conditions to place an order
data.cancelOrders(); // Cancel orders
data.drawingChart(boll); // Drawing
data.isEven(); // Processing of holding individual contract
}
//Entry function
function main() {
while (true) { // Enter the polling mode
onTick(); // Execute onTick function
Sleep(500); // Sleep for 0.5 seconds
}
}
Bayangkan bagaimana proses perdagangan kita dalam perdagangan pengawas. Tidak ada perbedaan penting dalam transaksi sistem. Ini tidak lebih dari memperoleh data, menghitung data, menempatkan transaksi pesanan, dan memproses setelah menempatkan pesanan. Hal yang sama berlaku dalam program. Pertama, program akan mengeksekusi fungsi utama di baris 20, yang merupakan konvensi. Ketika program menyelesaikan proses pra-proses strategi perdagangan (jika ada), itu akan memasuki mode loop tak terbatas, yaitu mode polling. Dalam mode polling, fungsi onTick akan dieksekusi berulang kali.
Kemudian dalam fungsi onTick, itu adalah proses perdagangan kita dalam transaksi subjektif: pertama, mendapatkan data harga dasar, kemudian mendapatkan saldo akun, kemudian menghitung indeks, kemudian menghitung kondisi perdagangan dan menempatkan pesanan, dan akhirnya pemrosesan setelah menempatkan pesanan, termasuk pembatalan pesanan, menarik, dan memproses kontrak tunggal.
Kerangka kerja strategi dapat dengan mudah diatur sesuai dengan ide strategi dan proses transaksi.
Selanjutnya, kita perlu mengisi kode detail yang diperlukan dalam kerangka strategi sesuai dengan proses transaksi yang sebenarnya dan rincian transaksi.
var chart = {}
var ObjChart = Chart ( chart )
var bars = []
var oldTime = 0
var tradeTypeA = "this_week"; // Arbitrage A Contract
var tradeTypeB = "quarter"; // Arbitrage B Contract
var dataLength = 10; // Indicator period length
var timeCycle = 1; // K-line period
var name = "ETC"; // Currencies
var unit = 1; // Order quantity
function Data(tradeTypeA, tradeTypeB) { // Pass in arbitrage A contract and arbitrage B contract
this.accountData = _C(exchange.GetAccount); // Get account information
this.positionData = _C(exchange.GetPosition); // Get position information
var recordsData = _C(exchange.GetRecords); // Get K-line data
exchange.SetContractType(tradeTypeA); // Subscription arbitrage A contract
var depthDataA = _C(exchange.GetDepth); // Depth data of arbitrage A contract
exchange.SetContractType(tradeTypeB); // Subscription arbitrage B contract
var depthDataB = _C(exchange.GetDepth); // Depth data of arbitrage B contract
this.time = recordsData[recordsData.length - 1].Time; // Time of obtaining the latest data
this.askA = depthDataA.Asks[0].Price; // Sell one price of Arbitrage A contract
this.bidA = depthDataA.Bids[0].Price; // Buy one price of Arbitrage A contract
this.askB = depthDataB.Asks[0].Price; // Sell one price of Arbitrage B contract
this.bidB = depthDataB.Bids[0].Price; // Buy one price of Arbitrage B contract
// Positive arbitrage price differences (Sell one price of contract A - Buy one price of contract B)
this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price;
// Negative arbitrage price differences (Buy one price of contract A - Sell one price of contract B)
this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price;
}
Data.prototype.mp = function (tradeType, type) {
var positionData = this.positionData; // Get position information
for (var i = 0; i < positionData.length; i++) {
if (positionData[i].ContractType == tradeType) {
if (positionData[i].Type == type) {
if (positionData[i].Amount > 0) {
return positionData[i].Amount;
}
}
}
}
return false;
}
Data.prototype.boll = function (num, timeCycle) {
var self = {}; // Temporary objects
// Median value of positive arbitrage price difference and negative arbitrage price difference
self.Close = (this.basb + this.sabb) / 2;
if (this.timeA == this.timeB) {
self.Time = this.time;
} // Compare two depth data timestamps
if (this.time - oldTime > timeCycle * 60000) {
bars.push(self);
oldTime = this.time;
} // Pass in the price difference data object into the K-line array according to the specified time period
if (bars.length > num * 2) {
bars.shift(); // Control the length of the K-line array
} else {
return;
}
var boll = TA.BOLL(bars, num, 2); // Call the boll indicator in the talib library
return {
up: boll[0][boll[0].length - 1], // boll indicator upper track
middle: boll[1][boll[1].length - 1], // boll indicator middle track
down: boll[2][boll[2].length - 1] // boll indicator down track
} // Return a processed boll indicator data
}
Data.prototype.trade = function (tradeType, type) {
exchange.SetContractType(tradeType); // Resubscribe to a contract before placing an order
var askPrice, bidPrice;
if (tradeType == tradeTypeA) { // If the order is placed in contract A
askPrice = this.askA; // set askPrice
bidPrice = this.bidA; // set bidPrice
} else if (tradeType == tradeTypeB) { // If the order is placed in contract B
askPrice = this.askB; // set askPrice
bidPrice = this.bidB; // set bidPrice
}
switch (type) { // Match order placement mode
case "buy":
exchange.SetDirection(type); // Set order placement mode
return exchange.Buy(askPrice, unit);
case "sell":
exchange.SetDirection(type); // Set order placement mode
return exchange.Sell(bidPrice, unit);
case "closebuy":
exchange.SetDirection(type); // Set order placement mode
return exchange.Sell(bidPrice, unit);
case "closesell":
exchange.SetDirection(type); // Set order placement mode
return exchange.Buy(askPrice, unit);
default:
return false;
}
}
Data.prototype.cancelOrders = function () {
Sleep(500); // Delay before cancellation, because some exchanges, you know what I mean
var orders = _C(exchange.GetOrders); // Get an array of unfilled orders
if (orders.length > 0) { // If there are unfilled orders
for (var i = 0; i < orders.length; i++) { // Iterate through the array of unfilled orders
exchange.CancelOrder(orders[i].Id); // Cancel unfilled orders one by one
Sleep(500); // Delay 0.5 seconds
}
return false; // Return false if an unfilled order is cancelled
}
return true; // Return true if there are no unfilled orders
}
Data.prototype.isEven = function () {
var positionData = this.positionData; // Get position information
var type = null; // Switch position direction
// If the remaining 2 of the position array length is not equal to 0 or the position array length is not equal to 2
if (positionData.length % 2 != 0 || positionData.length != 2) {
for (var i = 0; i < positionData.length; i++) { // Iterate through the position array
if (positionData[i].Type == 0) { // If it is a long order
type = 10; // Set order parameters
} else if (positionData[i].Type == 1) { // If it is a short order
type = -10; // Set order parameters
}
// Close all positions
this.trade(positionData[i].ContractType, type, positionData[i].Amount);
}
}
}
Data.prototype.drawingChart = function (boll) {
var nowTime = new Date().getTime();
ObjChart.add([0, [nowTime, boll.up]]);
ObjChart.add([1, [nowTime, boll.middle]]);
ObjChart.add([2, [nowTime, boll.down]]);
ObjChart.add([3