Asal: FMZ Quantwww.fmz.com
NO.1
Mentor Warren Buffett, Benjamin Graham, pernah menyebut dalam buku <
50% daripada dana yang ada di tangan dilaburkan dalam dana ekuiti, dan 50% yang selebihnya dilaburkan dalam dana bon.
Keseimbangan semula kedudukan aset berdasarkan selang masa tetap atau perubahan pasaran mengembalikan nisbah aset stok kepada aset bon kepada 1:1 awal.
Ini adalah keseluruhan logik keseluruhan strategi, termasuk bila untuk membeli dan menjual, dan berapa banyak untuk membeli dan menjual.
NO.2
Dalam kaedah ini, turun naik dana bon sebenarnya sangat kecil, jauh di bawah turun naik stok, jadi bon digunakan di sini sebagai
Jika harga saham meningkat, nilai pasaran saham akan lebih besar daripada nilai pasaran bon. Apabila nisbah nilai pasaran kedua-dua ini melebihi set ambang, jumlah kedudukan akan diselaraskan semula, stok akan dijual, dan bon akan dibeli untuk membuat nilai saham kepada nisbah nilai bon untuk memulihkan ke 1:1 awal.
Sebaliknya, jika harga saham jatuh, nilai pasaran stok akan kurang daripada nilai pasaran bon. Apabila nisbah nilai pasaran kedua-dua ini melebihi set ambang, jumlah kedudukan akan disesuaikan semula, stok akan dibeli, dan bon akan dijual untuk membuat nisbah permodalan pasaran nilai bon kepada nilai saham untuk dipulihkan ke 1:1 awal.Dengan cara ini, nisbah antara keseimbangan dinamik saham dan bon adalah cukup untuk menikmati keuntungan pertumbuhan saham dan mengurangkan turun naik aset.
Oleh kerana ini adalah strategi yang lengkap dan bersama, mengapa kita tidak menggunakannya di pasaran cryptocurrency?
NO.3
Strategi Keseimbangan Dinamik Aset Blockchain dalam BTC
Logik strategi
Menurut nilai semasa BTC, baki akaun dikekalkan pada $ 6400 tunai dan 1 BTC, iaitu nisbah awal tunai kepada nilai pasaran BTC adalah 1: 1.
Jika harga BTC meningkat kepada $7400, iaitu, nilai pasaran BTC lebih besar daripada baki akaun, dan perbezaan di antara mereka melebihi ambang yang ditetapkan, maka duit syiling (7400-6400)/7400/2 dijual.
Jika harga BTC jatuh kepada $5400, iaitu nilai pasaran BTC kurang daripada baki akaun dan perbezaan di antara mereka melebihi ambang yang ditetapkan, beli (6400-5400)/5400/2 syiling.
Dengan cara ini, tanpa mengira sama ada BTC dihargai atau terdepresiasi, baki akaun dan nilai pasaran BTC sentiasa disimpan secara dinamik sama.
NO.4
Jadi bagaimana anda menerapkannya dengan kod pengaturcaraan?
Mari kita ambil platform perdagangan kuantitatif FMZ sebagai contoh.
// strategy parameter
var threshold = 0.05; // Threshold
var LoopInterval = 60; // Polling interval(seconds)
var MinStock = 0.001; // Minimum transaction volume
var XPrecision = 4; // Quantity accuracy
var ZPrecision = 8; // Price accuracy
// Withdrawal order function
function CancelPendingOrders() {
}
// Placing Order function
function onTick() {
}
// Main function
function main() {
// Filter non-critical information
SetErrorFilter("GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout");
while (true) { // Polling mode
if (onTick()) { // Execute the onTick function
CancelPendingOrders(); // Cancel unexecuted pending orders
}
Sleep(LoopInterval * 1000); // Sleep
}
}
Seluruh rangka kerja strategi sebenarnya sangat mudah, fungsi
NO.5
Modul Perintah
// Placing Order function
function onTick() {
var acc = _C(exchange.GetAccount); // Get account information
var ticker = _C(exchange.GetTicker); // Get Tick data
var spread = ticker.Sell - ticker.Buy; // Get the bid-ask spread of Tick data
// 0.5 times the difference between the account balance and the current position value
var diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2;
var ratio = diffAsset / acc.Balance; // diffAsset / Account Balance
LogStatus('ratio:', ratio, _D()); // Print ratio and current time
if (Math.abs(ratio) < threshold) { // If the absolute value of ratio is less than the specified threshold
return false; // return false
}
if (ratio > 0) { // If ratio is greater than 0
var buyPrice = _N(ticker.Sell + spread, ZPrecision); // Calculate the order price
var buyAmount = _N(diffAsset / buyPrice, XPrecision); // Calculate the order quantity
if (buyAmount < MinStock) { // If the order quantity is less than the minimum transaction volume
return false; // return false
}
exchange.Buy(buyPrice, buyAmount, diffAsset, ratio); // Buy order
} else {
var sellPrice = _N(ticker.Buy - spread, ZPrecision); // Calculate the order price
var sellAmount = _N(-diffAsset / sellPrice, XPrecision); // Calculate the order quantity
if (sellAmount < MinStock) { // If the order quantity is less than the minimum transaction volume
return false; // return false
}
exchange.Sell(sellPrice, sellAmount, diffAsset, ratio); // Sell order
}
return true; // return true
}
Logik urus niaga pesanan adalah jelas, dan semua komen telah ditulis ke dalam kod.
Proses utama adalah seperti berikut:
Dapatkan maklumat akaun.
Dapatkan data Tick.
Mengira data Tick bid-ask spread.
Mengira baki akaun dan perbezaan nilai pasaran BTC.
Mengira keadaan pencetus perdagangan, harga pesanan, dan kuantiti pesanan.
Buat pesanan dan kembali benar.
NO.6
Batalkan modul pesanan menunggu
// Withdrawal order function
function CancelPendingOrders() {
Sleep(1000); // Sleep 1 second
var ret = false;
while (true) {
var orders = null;
// Continue to get an array of unexecuted orders, if an exception is returned, continue to get
while (!(orders = exchange.GetOrders())) {
Sleep(1000); // Sleep 1 second
}
if (orders.length == 0) { // If the order array is empty
return ret; // Return to withdrawal status
}
for (var j = 0; j < orders.length; j++) { // Traversing the array of unexecuted orders
exchange.CancelOrder(orders[j].Id); // Cancel unexecuted orders one by one
ret = true;
if (j < (orders.length - 1)) {
Sleep(1000); // Sleep 1 second
}
}
}
}
Modul pembatalan pesanan menunggu adalah lebih mudah, langkah-langkahnya seperti berikut:
Tunggu 1 saat sebelum menarik balik pesanan, kerana beberapa kedai pertukaran mungkin mempunyai kelewatan pelayan.
Teruskan untuk mendapatkan pelbagai perintah yang tidak dilaksanakan, dan jika pengecualian dikembalikan, terus cuba sehingga berjaya.
Jika barisan pesanan yang belum dilaksanakan kosong, ia akan mengembalikan status penarikan segera.
Jika terdapat pesanan yang tidak dilaksanakan, seluruh array dilalui dan pesanan ditarik balik mengikut ID pesanan.
NO.7
Strategi ini semua kod sumber pengaturcaraan Di platform perdagangan kuantitatif FMZ, dengan hanya 80 baris kod, strategi penyeimbangan dinamik blockchain BTC yang lengkap telah berjaya dibina.
NO.8
Seterusnya, mari kita menguji strategi keseimbangan dinamik yang mudah ini untuk melihat apakah ia berfungsi. Berikut adalah ujian belakang pada data sejarah BTC, untuk rujukan anda sahaja.
Backtesting persekitaranPrestasi ujian belakangKurva ujian belakangSatu lagi, carta harga BTC tempoh yang samaAdakah ada kejutan untuk anda?
BTC telah meneruskan penurunan selama lapan bulan, dan bahkan penurunan terbesar telah melebihi 70%, yang menyebabkan banyak pelabur kehilangan keyakinan terhadap aset blockchain.
Pendapatan kumulatif strategi ini setinggi 160%, dan nisbah pengembalian risiko tahunan melebihi 5. Untuk strategi perdagangan yang sederhana, pulangan pelaburan ini telah melebihi majoriti pemain jenis
NO.9
Strategi penyeimbangan ini, dengan hanya satu parameter teras (nilai ambang), adalah kaedah pelaburan yang sangat mudah yang tidak mengejar pulangan yang berlebihan tetapi keuntungan yang kukuh.
Berbeza dengan strategi trend, strategi keseimbangan dinamik adalah menentang trend. Strategi ini adalah untuk mengurangkan kedudukan dan menyejukkan apabila pasaran terlalu panas. Apabila pasaran sunyi, ia akan tersembunyi, yang serupa dengan peraturan makroekonomi.
Sebenarnya, strategi imbangan dinamik adalah berdasarkan idea bahawa harga tidak dapat diramalkan, sementara pada masa yang sama menangkap turun naik harga.
Memandangkan panjang artikel, adalah mustahil untuk sebuah artikel menjadi komprehensif mengenai segala-galanya. Seperti pepatah lama
Pasaran saham bukanlah
Untuk langsung menyalin kod sumber, sila lawati strategi kami di:https://www.fmz.com/strategy/110900
Terdapat banyak strategi yang boleh anda pelajari, muat turun, sewa, atau beli.
NO.10
Mengenai kami
Alasan untuk menjalankan laman web ini adalah untuk mengubah status dunia perdagangan kuantitatif semasa di mana kekurangan
Penghantaran anda akan menjadi kekuatan pendorong untuk menyokong kami untuk terus membuat lebih banyak
Hubungi kami
Telegram: FMZ Quant
E-mel:henry@fmz.com
Laman web:www.fmz.com