AI akan datang, dan kami tidak takut akan hal itu. Saya melamar dia dengan menghasilkan kol di bursa. Sebagai permulaan, kita akan lihat.
Ketentuan
Agen adalah program yang memiliki akun dalam berbagai mata uang dalam satu pertukaran, yang pekerjaannya harus mengarah pada peningkatan nilai total mereka.
Aset agen - daftar akun dengan ketersediaan dana di atasnya A = [A1, A2, ..] di mana A1, A2, ... jumlah dalam mata uang yang sesuai.
Nilai aset. Kita harus memiliki ukuran universal dari aset yang memungkinkan kita untuk mengukur aset. Terima begitu saja bahwa ini adalah $. $ (Akun) adalah bagian dari aset. Kami juga menganggap bahwa kami memiliki kemampuan algoritme untuk memperkirakan nilai setiap akun dalam daftar hingga $.
Agen dapat ditutup (hanya mengandalkan asetnya sendiri) atau terbuka (meminjam). Untuk kesederhanaan, kami menganggap kami memiliki yang tertutup.
Setiap operasi agen memiliki nilai sendiri So (Ax-> Ay, Sum) yang akan kita ukur dengan ukuran $ dan waktu To (Ax-> Ay).
Lingkungan agen - agen atau orang lain dengan algoritma kerja yang sama atau berbeda + informasi apa pun yang valid pada saat itu.
Strategi agen. Ini adalah algoritme yang menerima informasi tentang status akun, riwayat aktivitas pertukaran, aktivitasnya, aktivitas pertukaran saat ini (kacamata), dan, sebagai tanggapan, melakukan atau tidak melakukan serangkaian tindakan.
Strategi hanya dapat didasarkan pada aktivitas pertukaran saat ini (primitif),
memperhitungkan informasi akun dari bursa lain (sedang), memperhitungkan riwayat aktivitas dan mendeteksi pola statistik (dalam). Pesimis atau optimis - berbeda dalam penilaian risiko operasi. Sebagian atau lengkap. Strategi yang lengkap mencakup semua aspek fungsi agen. Sebagian dapat digabungkan untuk membentuk yang lengkap.
Optimalitas strategi dan pilihan mereka. Biasanya, agen memiliki beberapa strategi, peralihan di antara mereka terjadi dengan beberapa perubahan stabil (lebih dari interval waktu tertentu) di lingkungan.
Agen inersia - berapa lama agen mengabaikan perubahan lingkungan. Atau strategi yang menentukan ketahanannya terhadap gangguan lingkungan. Agen yang lebih lembam bisa menang dan kalah, tidak menyerah pada "kepanikan" lingkungan.
Misalkan kita memiliki tiga set strategi yang tidak lengkap:
St = [1,2,3,4] St = [5,6,7,8] St = [9,10,11,12]
Kombinasi dari strategi ini memberikan 64 perilaku agen unik itu
Ternyata benar (berguna) untuk lingkungan [O1, O2, O3] dan tidak berguna untuk [O4, O5, O6] atau berbahaya untuk [O7, ..]
Menganalisis kerja strategi dan kombinasinya di berbagai lingkungan
Kami dapat membangun metastrategi yang akan mengubah perilaku agen tergantung pada lingkungan yang saat ini terdeteksi.
Platform agen (selanjutnya disebut platform, MetaBot) adalah agen khusus yang membuat, mengoordinasikan, menghapus agen pada pertukaran yang terhubung. Seperti agen, arsitektur terdiri dari serangkaian strategi kontrol yang dapat dikombinasikan untuk meningkatkan fungsi seluruh sistem secara keseluruhan. Platform menyimpan sejarah semua operasi dan data berguna lainnya yang memungkinkan strategi konstituennya untuk secara efektif (dalam $) mengelola agen bawahan, menganalisis pola statistik umum dan sejarah dampak kombinasi strategi terhadap keberhasilan di lingkungan tertentu. Platform didorong oleh metastrategy, yang parameternya berkembang seiring waktu untuk memaksimalkan keuntungan.
Lingkungan agen pertukaran terdiri dari agen lain dan informasi terkini. Perubahan lingkungan untuk agen dibagi menjadi optimal, normal, kritis, katastropik, dll. oleh tingkat keberhasilan operasi. Memberitahu platform kondisi dan operasinya, agen bertindak selama platform 'Puas' dengan keadaan dan dinamika akunnya, jika tidak maka akan menutupnya. Platform ini secara berbeda mengevaluasi total aset dan dapat membuat keputusan untuk mentransfer aset dari satu agen ke agen lain, yang dapat beroperasi pada satu pertukaran atau pada yang berbeda. Tugas platform adalah untuk memaksimalkan total aset yang dimiliki oleh semua agen.
Pertimbangkan konten implementasi sederhana dari strategi agen (di Scala) untuk memproses pertukaran Orderbook:
Kami membawa genom yang akan berkembang selama pengoperasian sistem.
StrategyParams adalah genom strategi bot yang mengandung banyak Gen untuk parameterisasi strategi:
case class StrategyParams(low: IntGene, middle: IntGene, high: IntGene, intense: DoubleGene, threshold: DoubleGene, delay: IntGene)
di mana rendah, menengah, tinggi adalah periode dalam menit untuk nilai aset rata-rata di atasnya.
Mereka digunakan untuk memprediksi pergerakan nilai.
Intense berarti aktivitas bot atau agresivitas. Dengan nilai parameter besar, bot melakukan transaksi untuk jumlah besar dan (atau) mengevaluasi prediksi dengan optimisme yang tinggi.
Ambang batas berarti kepercayaan minimum bot dalam prediksi, yang mendorongnya untuk menyelesaikan operasi. Keterlambatan - inersia, waktu minimum antara aktivasi.
Didalilkan bahwa ada strategi bot optimal untuk periode apa pun yang dijelaskan oleh parameter StrategyParams yang dapat dihitung dari riwayat tingkat aset. Parameternya dapat dihitung menggunakan algoritma pemilihan genom evolusioner. Perhitungannya berupa:
def evalBots(trs: Seq[TimeRate]) = EvolutionFactory( candidate = defaultBotStrategyParams, populationConfig = PopulationConfig(500), evolutionConfig = EvolutionConfig(100), errorRate = (c: StrategyParams) => {errorBot(c, trs)} ).
trs - Sejarah Orderbook,
populasiConfig - berapa banyak bot pada saat yang sama bersaing untuk bertahan hidup di antara mereka sendiri, evolutionConfig - berapa banyak iterasi kehidupan dan reproduksi yang harus dilakukan. Dalam proses iterasi, bot dengan aset lebih sedikit cenderung menghasilkan keturunan dengan bot lain, yang pada akhirnya, dengan populasi yang cukup besar dan jumlah degenerasi-evolusi, akan membawa kita ke bot ideal (bot).
Setelah menerima dan menghitung bot tersebut untuk periode (riwayat) tertentu, Anda harus menggunakannya entah bagaimana untuk perdagangan yang efektif di masa depan. Platform-Metabot dan MetaStrategy-nya akan menangani masalah ini.
Pertimbangkan konten implementasi strategi platform sederhana:
MetaStrategy(rateSensitivity: DoubleGene, volumeSensitivity: DoubleGene, profitSensitivity: DoubleGene, criticalForce: DoubleGene, volumesSize: IntGene, delaySwitching: IntGene)
di mana rateSensitivity, volumeSensitivity, profitSensitivity menggambarkan seberapa sensitif perilaku Platform terhadap perubahan dalam parameter harga aset, volume perdagangan, dan penurunan laba yang diharapkan dari operasi.
criticalForce menetapkan nilai ambang batas berdasarkan penilaian komprehensif dari parameter di atas, melebihi yang merupakan sinyal ketidakefisienan strategi bot saat ini (bukan platform) dan menghitung versi (strategi bot saat ini) yang lebih sukses.
Fragmen implementasi:
val force = rateForce * volumeForce * profitForce if (force >= strategy.criticalForce.value.get) changeBot(force / strategy.criticalForce.value.get, extremeBot, tr)
Setelah mendeskripsikan algoritma strategi platform menggunakan parameter MetaStrategy, kita dapat memulai proses evolusi serupa untuk menumbuhkan populasi bot metabot platform yang efisien, yang paling efektif yang akan menjadi dasar dari sistem perdagangan.
Untuk menguji efektivitas ide-ide ini, sebuah prototipe cryptocurrency sistem perdagangan telah dibuat yang dapat digunakan sebagai tempat pengujian. TPA membutuhkan data tentang sejarah kursus dan nilai rata-rata mereka selama periode tersebut, yang disimpan dalam Influx dan dihasilkan oleh TPA itu sendiri dengan ekstraksi melalui API pertukaran bitfinex terbuka. Lihat objek HistoryExtractor.
Hasil tes

Selama menjalankan, kami berhasil menemukan beberapa strategi sederhana untuk agen yang, tanpa menggunakan manajer Metabot, menunjukkan laba 14% per tahun untuk sejarah uji 2,5 tahun. Meskipun mengesankan, itu tidak menjamin minat yang sama di periode mendatang. Perilaku sistem secara real time tidak diuji. Menggunakan strategi Metabot yang dirancang untuk periode pendek (sebulan atau kurang) tidak menguntungkan, tetapi untuk strategi meta yang besar dan efektif sangat mungkin dilakukan. Perhitungan mereka sulit karena kompleksitas komputasi yang hebat (berbulan-bulan operasi PC rata-rata). Kurs cryptocurrency yang kacau hanya dapat disesuaikan pada tingkat yang kecil, tetapi ... menggunakan pendekatan ini untuk memperdagangkan aset lain yang volatilitasnya tidak begitu semrawut dan memiliki periode musiman dapat memberikan hasil yang lebih baik.
Sumber poligon tersedia di sini .