0
Подписаться
1
Подписчики

Размышления о движении активов с помощью стратегии хеджирования контрактов

Создано: 2020-10-20 16:48:32, Обновлено: 2023-09-26 20:59:29
comments   2
hits   2374

Размышления о движении активов с помощью стратегии хеджирования контрактов

Размышления о движении активов с помощью стратегии хеджирования контрактов

В последнее время в мире криптовалют появилось много новостей, в том числе и новости о биржах. Некоторое время все энтузиасты криптовалют пребывали в панике, беспокоясь о безопасности своих блокчейн-активов. В различных криптовалютных группах можно найти множество небольших объявлений, предлагающих скидки в размере 10% или 20% на неиспользуемые подержанные монеты. Многие люди ищут различные стратегии, чтобы «одновременно получать постоянную потерю денег и постоянную прибыль». Многие друзья-монетчики также шутили: «Если есть стабильный способ заработать деньги, зачем нам стабильный способ потерять деньги!» Действительно, вещи, которые стабильно приносят деньги и стабильно теряют деньги, — этоmoney printer, и его нелегко найти. Простите мой плохой английский.

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

ДЕМО-стратегия

/*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    // 加仓价格步长

function main() {
    var pos1 = []
    var pos2 = []
    var ct = "quarter"                         // 例如用季度合约
    exchanges[0].SetContractType(ct)
    exchanges[1].SetContractType(ct)
    var diff = 0

    while (true) {
        var r1 = exchanges[0].Go("GetDepth")   // A交易所
        var r2 = exchanges[1].Go("GetDepth")   // 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)
    }
}

Размышления о движении активов с помощью стратегии хеджирования контрактов

Размышления о движении активов с помощью стратегии хеджирования контрактов

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

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

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

Таким образом, если одна биржа теряет деньги, то убыток примерно станет прибылью другой биржи (из-за разницы в ценах могут возникнуть убытки от хеджирования, то есть убыток больше прибыли). Стратегия использует библиотеку фьючерсной торговли.$.CoverShort,$.OpenShortЭто интерфейсные функции шаблона. Для бэктеста и запуска вышеуказанной ДЕМО-версии вам необходимо сослаться на эту библиотеку классов.

Вышеуказанный прототип стратегии — это всего лишь простейшее исследование. В реальной работе может потребоваться рассмотреть больше деталей. Например, можно спроектировать размер увеличения позиции как инкрементный. Это всего лишь отправная точка. Подобные стратегии должны быть более оптимизированы. Эксперты могут давать предложения.