Оригинал: FMZ Quantwww.fmz.com
"Настоящие вещи" количественной торговли - это место, где вы действительно можете извлечь выгоду.
Номер 1
Ментор Уоррена Баффетта, Бенджамин Грэм, однажды упомянул в книге "Умный инвестор" торговую модель, в которой акции и облигации динамически балансируются.Эта торговая модель очень проста:
50% средств в руках инвестируются в фонды акций, а оставшиеся 50% инвестируются в фонды облигаций, то есть акции и облигации составляют половину каждого.
Ребалансировка позиции активов, основанная на фиксированных интервалах или изменениях рынка, восстанавливает соотношение акций к облигациям до первоначального уровня 1:1.
Это вся логика всей стратегии, включая когда покупать и продавать, и сколько покупать и продавать.
Номер 2
В этом методе волатильность облигационных фондов на самом деле очень мала, намного ниже волатильности акций, поэтому облигации используются здесь как
Если цена акций повышается, рыночная стоимость акций будет больше рыночной стоимости облигации. Когда соотношение рыночной стоимости этих двух превышает установленный порог, общая позиция будет скорректирована, акции будут проданы, а облигации будут куплены, чтобы соотношение стоимости акций к стоимости облигаций восстановилось до первоначального 1: 1.
Напротив, если цена акций падает, рыночная стоимость акций будет меньше рыночной стоимости облигации. Когда соотношение рыночной стоимости этих двух превышает установленный порог, общая позиция будет скорректирована, акции будут куплены, и облигации будут проданы, чтобы соотношение рыночной капитализации стоимости облигации к стоимости акций восстановилось до первоначального 1: 1.Таким образом, соотношение между динамическим балансом акций и облигаций достаточно, чтобы наслаждаться прибылью от роста акций и уменьшить волатильность активов.
Поскольку это полная и взаимная стратегия, почему бы нам не использовать ее на рынке криптовалют?
No 3
Стратегия динамического баланса блокчейн-активов в BTC
Логика стратегии
Согласно текущей стоимости BTC, баланс счета сохраняется на уровне $6400 наличных и 1 BTC, то есть первоначальное соотношение наличности к рыночной стоимости BTC составляет 1:1.
Если цена BTC поднимается до $7400, то есть рыночная стоимость BTC больше баланса счета, и разница между ними превышает установленный порог, то продаются монеты (7400-6400)/7400/2. Это означает, что BTC подорожала, и нам нужно обменять наличные обратно.
Если цена BTC падает до $5400, то есть рыночная стоимость BTC меньше баланса счета и разница между ними превышает установленный порог, покупаем (6400-5400)/5400/2 монеты. Это означает, что BTC обесценился, и нам нужно купить BTC обратно.
Таким образом, независимо от того, ценится BTC или обесценивается, баланс счета и рыночная стоимость BTC всегда сохраняются динамически равными.
No 4
Как это реализовать с помощью программного кода?
Возьмем, к примеру, платформу количественной торговли FMZ.
// 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
}
}
Вся структура стратегии на самом деле очень проста:
No 5
Модуль заказов
// 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
}
Логика транзакции заказа ясна, и все комментарии записаны в код. Вы можете нажать на изображение, чтобы увеличить его.
Основной процесс следующий:
Получи информацию о счете.
Получи данные от Тика.
Вычислить разницу между спросом и предложением данных Tick.
Вычислить баланс счета и спред рыночной стоимости BTC.
Вычислить условие запуска торговли, цену заказа и количество заказа.
Закажите и верните.
No 6
Отменить модуль ожидания заказа
// 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
}
}
}
}
Модуль отмены ожидания заказа еще проще, шаги следующие:
Подождите одну секунду, прежде чем отозвать заказ, потому что некоторые биржи могут иметь задержки сервера.
Продолжайте получать массив неисполненных команд, и если исключение возвращается, продолжайте пытаться, пока оно не будет успешным.
Если массив неисполненных заказов пуст, он немедленно возвращает статус вывода.
Если есть неисполненные заказы, весь массив пересекается и заказ отзывается в соответствии с идентификатором заказа.
NO.7
Эта стратегия - это весь исходный код программирования. На квантитативной торговой платформе FMZ, всего с 80 строк кода, была успешно построена полная стратегия динамического балансирования блокчейна BTC.
Номер 8
Далее, давайте проверим эту простую стратегию динамического балансирования, чтобы увидеть, работает ли она.
Окружающая среда для обратного тестированияРезультаты обратных испытанийКривая обратного испытанияЕще один, график цен на BTC за тот же период.У вас шок?
BTC продолжает свой восьмимесячный спад, и даже самое большое падение превысило 70%, что привело к тому, что многие инвесторы потеряли доверие к активам блокчейна.
Совокупный доход этой стратегии составляет до 160%, а годовое отношение возврата к риску превышает 5. Для такой простой торговой стратегии эта доходность от инвестиций превышает большинство игроков типа "все в".
NO.9
Эта стратегия сбалансировки, с одним основным параметром (пороговое значение), является очень простым инвестиционным методом, который преследует не избыточную доходность, а солидную прибыль.
В отличие от стратегии тренда, стратегия динамического баланса направлена против тренда. Эта стратегия заключается в сокращении позиции и охлаждении, когда рынок слишком горячий. Когда рынок пуст, он будет скрыт, что похоже на макроэкономическое регулирование.
По сути, стратегия динамического баланса основана на идее, что цена непредсказуема, в то же время отражая колебания цен.
Учитывая длину статьи, невозможно, чтобы статья была всеобъемлющей. Как говорится в старой поговорке
Фондовый рынок - это не
Для непосредственного копирования исходного кода, пожалуйста, посетите наш стратегический квадрат на:https://www.fmz.com/strategy/110900
Есть много стратегий, которые вы можете изучить, скачать, арендовать или купить.
NO.10
о нас
Причина работы этого веб-сайта заключается в том, чтобы изменить нынешний статус количественного мира торговли, где не хватает
Если вы считаете, что эта статья вам помогла, пожалуйста, передайте ее своему другу и поддержите нас.
Свяжитесь с нами
Телеграмма: FMZ Quant
Электронная почта:henry@fmz.com
Сайт:www.fmz.com