В процессе загрузки ресурсов... загрузка...

Мысли о движении активов через стратегию хеджирования контрактов

Автор:FMZ~Lydia, Создано: 2022-12-19 16:36:12, Обновлено: 2023-09-20 10:38:30

img

Мысли о движении активов через стратегию хеджирования контрактов

В последнее время появилось много новостей о рынке цифровой валюты и бирже. В течение некоторого времени все друзья валюты были в состоянии паники, беспокоясь о безопасности своих активов блокчейна. Также есть много небольших объявлений о 10% и 20% скидке на неработающие подержанные валюты в различных группах валютного рынка. Существует много разновидностей стратегий поиск устойчивой потери денег при устойчивом зарабатывании денег. Многие пользователи также дразнили Если есть стабильный moneymaker, зачем вам нужен стабильный moneyloser? Это правда, что как получать стабильные прибыли, так и терять стабильные деньгиmoney printer, который нелегко найти. Простите меня за мой плохой английский.

Например, путем хеджирования контрактов мы можем получать прибыль, в то же время максимально снижая убытки.

Стратегия DEMO

/*backtest
start: 2020-09-30 00:00:00
end: 2020-10-19 00:00:00
period: 1d
basePeriod: 1m
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD"},{"eid":"Futures_HuobiDM","currency":"BTC_USD"}]
*/

var step = 20    // Step length of adding position price

function main() {
    var pos1 = []
    var pos2 = []
    var ct = "quarter"                         // For example, quarterly contract
    exchanges[0].SetContractType(ct)
    exchanges[1].SetContractType(ct)
    var diff = 0

    while (true) {
        var r1 = exchanges[0].Go("GetDepth")   // Exchange A
        var r2 = exchanges[1].Go("GetDepth")   // Exchange B
        var depth1 = r1.wait()
        var depth2 = r2.wait()

        if(depth1.Bids[0].Price - depth2.Asks[0].Price > diff) {
            if(pos1.length == 0 && pos2.length == 0) {
                var info1 = $.OpenShort(exchanges[0], ct, 10)
                var info2 = $.OpenLong(exchanges[1], ct, 10)
                pos1 = _C(exchanges[0].GetPosition)
                pos2 = _C(exchanges[1].GetPosition)
                diff = depth1.Bids[0].Price - depth2.Asks[0].Price
            } else if(depth1.Bids[0].Price - depth2.Asks[0].Price > diff + step) {
                var info1 = $.OpenShort(exchanges[0], ct, 10)
                var info2 = $.OpenLong(exchanges[1], ct, 10)
                pos1 = _C(exchanges[0].GetPosition)
                pos2 = _C(exchanges[1].GetPosition)
                diff = depth1.Bids[0].Price - depth2.Asks[0].Price
            }
        }
        
        if(pos1.length != 0 && pos1[0].Profit < -0.001) {
            var info1 = $.CoverShort(exchanges[0], ct, pos1[0].Amount)
            var info2 = $.CoverLong(exchanges[1], ct, pos2[0].Amount)
            pos1 = _C(exchanges[0].GetPosition)
            pos2 = _C(exchanges[1].GetPosition)
            diff = 0
        }
        LogStatus(_D(), diff)
        Sleep(500)
    }
}

img

Логика стратегии: Стратегия начинается с инициализации переменных позиций pos1 и pos2 в виде пустых массивов. Стратегия входит в основную петлю. В начале каждой петли для расчета разницы цен получаются глубинные данные (данные ордерной книги) контрактов двух бирж. Если разница цен продолжает расширяться и выходит за пределы последней разницы цен плюс длина шага, продолжайте хеджирование и добавление позиций. Когда позиция удерживается, обнаруживается, что потеря позиции первой биржи превышает определенное значение (например, -0,001), затем закрывайте позицию. Повторите таким образом.

Принцип очень прост, то есть, когда разница в цене велика, то де-хедж. При ожидании потери ожидаемой потери валютной позиции, закрыть позицию. Если разница в цене продолжает расширяться, продолжать добавлять позиции для хеджирования до ожидаемой потери валютной позиции. Важными параметрами являются: сумма потери для закрытия позиции, длина шага добавления разницы в цене позиции и сумма хеджирования.

Стратегия довольно примитивная, просто для проверки идеи, реальный бот не доступен.Еще есть много вопросов, которые следует рассмотреть для настоящего бота, например, является ли контракт, которым следует торговать, валютным стандартом или стандартом U, и являются ли множители различных контрактов на биржах A и B одинаковыми.

Таким образом, одна биржа потеряет деньги, а часть потери станет частью прибыли другой биржи (разница в цене, может быть хеджирование потери, то есть убыток больше, чем прибыль).$.OverShort, $.OpenShort, это функции интерфейса шаблона. Чтобы запустить вышеуказанную демонстрацию, вам нужно ссылаться на эту библиотеку классов.

Приведенный выше прототип стратегии - это простое исследование, и в фактической работе может быть больше деталей, например, количество позиций может быть спроектировано на инкрементальные.


Связанные

Больше