От количественной торговли к управлению активами - разработка стратегии CTA для абсолютной доходности

Автор:Лидия., Создано: 2023-02-07 09:58:41, Обновлено: 2023-09-18 20:25:11

img

От количественной торговли к управлению активами - разработка стратегии CTA для абсолютной доходности

Преамбула

Почему я должен пройти этот курс?

Что вы получите, пройдя этот курс? Во-первых, этот курс основан на языках программирования JavaScript и Python. Язык - это только технология. Наконец, мы должны применить эту технологию к отрасли. Количественная торговля - это развивающаяся отрасль, которая в настоящее время находится на стадии быстрого развития и имеет большой спрос на таланты.

Благодаря систематическому изучению этого курса вы можете получить более глубокое понимание области количественной торговли. Если вы студент, готовящийся вступить в сферу количественной торговли, это также поможет вам. Если вы являетесь энтузиастом по инвестициям в акции или фьючерсы, то количественная торговля может помочь вашей субъективной торговле. Развивая торговые стратегии, вы можете получить прибыль на финансовом рынке, а также расширить каналы и платформы для ваших инвестиций и финансового управления.

До этого позвольте мне рассказать о моем личном опыте торговли. Я не специализируюсь на финансах, я изучал статистику. Сначала я начал торговать акциями субъективно в школьные годы. Позже я стал количественным трейдером отечественных фондов частного капитала, в основном занимающимся исследованием стратегии и разработкой стратегии.

Я торгую в этом кругу уже более десяти лет, и разработал различные типы стратегий. Моя инвестиционная философия заключается в том, что контроль рисков превыше всего и фокусируется на абсолютной доходности. Тема нашей темы: от количественной торговли до управления активами - разработка стратегии CTA для абсолютной доходности.

1. Фьючерсная стратегия CTA логика зарабатывания денег

1.1 Понимание будущего CTA

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

Но на самом деле, с непрерывным развитием и расширением глобального фьючерсного рынка, концепция CTA также расширяется, и ее объем далеко выходит за рамки традиционных фьючерсов. Она может инвестировать не только на фьючерсном рынке, но и на рынке процентных ставок, фондовом рынке, валютном рынке и опционном рынке. Пока существует определенное количество исторических данных для этого сорта, она может разработать соответствующие стратегии CTA на основе этих исторических данных.

Еще в 1980-х годах технология электронной торговли не была зрелой. В то время большинство трейдеров судили о будущем тренде товарных фьючерсов, рисуя технические индикаторы вручную, такие как индекс Уильяма, KDJ, RSI, MACD, CCI и т. Д. Позже трейдеры создали специальный фонд CTA, чтобы помочь клиентам управлять активами. Только после популяризации электронной торговли в 1980-х годах начал появляться настоящий фонд CTA.

Изменения в размере управления фондами CTA

img

В миллиардах долларов

Особенно с ростом количественной торговли масштаб глобальных фондов CTA увеличился с 130,6 миллиардов долларов США в 2005 году до более чем 300 миллиардов долларов США в 2015 году.

По мере роста показателей увеличиваются и показатели CTA. Давайте посмотрим на индекс Barclays CTA в таблице ниже. Индекс Barclay CTA является представительным отраслевым эталоном для глобальных консультантов по торговле сырьевыми товарами. С конца 1979 года по конец 2016 года суммарная доходность индекса Barclay CTA Fund составила до 28,95 раза, годовая доходность составила 9,59%, коэффициент Sharp составил 0,37, а максимальный вывод составил 15,66%.

Поскольку в портфеле распределения активов стратегия CTA обычно поддерживает очень низкую корреляцию с другими стратегиями. Как показано в красном круге ниже, во время глобального медвежьего рынка акций с 2000 по 2002 год и глобального субприм-кризиса в 2008 году индекс фонда Barclay CTA не только не упал, но и достиг положительной доходности. Когда фондовый рынок и рынок облигаций находились в кризисе, CTA мог обеспечить сильную доходность. Кроме того, мы можем видеть, что уровень прибыли индекса Barclay Commodity CTA с 1980 года был сильнее, чем S&P 500, а вывод также намного ниже, чем S&P 500.

img

Развитие CTA в Китае было только за последние десять лет, но импульс очень силен. Это в основном связано с относительно открытой торговой средой внутренних товарных фьючерсов, низким порогом торговых фондов, использованием системы маржи для торговли как на длинных, так и на коротких позициях, низкими затратами на транзакции, более продвинутой технической структурой биржи по сравнению с акциями и более легкой системой торговли.

С 2010 года фонды CTA в основном существовали в виде частных фондов. С постепенным открытием инвестиционного поля специального счета фонда в внутренней политике, фонды CTA начали существовать в виде специального счета фонда.

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

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

1.2 Вид фьючерсной стратегии CTA

С точки зрения торговой стратегии, стратегия CTA также диверсифицирована: это может быть стратегия тренда или стратегия арбитража; Это может быть крупносрочная средне- и долгосрочная стратегия, или краткосрочная стратегия внутридневная; Логика стратегии может основываться на техническом анализе или фундаментальном анализе; Это может быть субъективная транзакция или системная транзакция.

Стратегия CTA имеет различные методы классификации. Согласно методу транзакции, она может быть разделена на субъективную транзакцию и системную транзакцию. Развитие зарубежной стратегии CTA относительно продвинуто, и стратегия CTA системной транзакции была близка к 100%. Согласно методу анализа, она может быть разделена на базовый анализ и технический анализ. Согласно источнику дохода, она может быть разделена на трендовую торговлю и осцилляционную торговлю.

В целом, на стратегию CTA приходится около 70% от общего рынка торговли, на стратегию тренда - около 25%, а на стратегию контр-тренда или обратного тренда - около 5%. Среди них стратегию тренда с наибольшей долей можно разделить на высокочастотную торговлю, внутридневную торговлю, краткосрочную и среднесрочную торговлю и среднесрочную и долгосрочную торговлю в зависимости от периода позиции.

Стратегия создания рынка высокой частоты

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

Стратегия высокочастотного арбитража

Высокочастотный арбитраж относится к торговле двумя высококоррелированными акциями или портфелем ETF и ETF. Согласно методу расчета ETF, ожидаемая цена ETF может быть рассчитана таким же образом. Цена индекса ETF может вычесть ожидаемую цену ETF, чтобы получить разницу в цене. Обычно разница в цене будет работать в ценовом канале. Если разница в цене проходит через верхний и нижний каналы, вы можете торговать ценовой разницей, ждать возврата ценовой разницы и зарабатывать на ней доход.

Внутренняя стратегия

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

Среднесрочная и долгосрочная стратегия

Теоретически, чем длиннее период хранения, тем больше стратегическая способность и тем ниже соотношение риск-доходность. Особенно в институциональных операциях из-за ограниченной возможности краткосрочных стратегий большие фонды не могут выходить и выходить с рынка за короткий промежуток времени, будут выделены более долгосрочные стратегии. Как правило, период позиции составляет несколько дней и месяцев или даже дольше.

Данные о стратегии ОТС

Как правило, стратегия CTA изучается с помощью минутных, часовых и ежедневных данных, которые включают в себя: цену открытия, самую высокую цену, самую низкую цену, цену закрытия, объем торгов и т. Д. Только несколько стратегий CTA будут использовать данные Tick, такие как цена покупки, цена продажи, объем покупки, объем продажи и другие подробные данные в данных L2.

Что касается основной идеи стратегии CTA, то первое, о чем мы думаем, это основанные на традиционных технических показателях, потому что в этой области существует много общедоступных справочных материалов, а логика обычно простая, большинство из которых основаны на статистических принципах.

На рынке также есть некоторые классические модели торговли, которые также могут быть использованы в качестве ссылки и улучшены, в том числе: множественная комбинация скользящих средних, DualThrust, R-Breaker, метод торговли Turtle, метод торговли сеткой и т. Д.

Все это торговые стратегии, основанные на традиционном техническом анализе. Процесс заключается в извлечении факторов или условий торговли с вероятностными преимуществами в соответствии с историческими данными и правильными торговыми концепциями, и предполагает, что рынок все еще будет иметь такие законы в будущем. Наконец, торговая стратегия реализуется с помощью кода и полностью автоматической торговли. Открыть позиции, остановить прибыль, остановить убытки, увеличить позиции, уменьшить позиции и т. Д., Которые, как правило, не требуют ручного вмешательства. На самом деле, это стратегия покупки победителей с использованием положительного коэффициента автокорреляции временных рядов цен.

Самое большое преимущество стратегии CTA заключается в том, что независимо от того, растет ли текущий рынок или падает, он может получить абсолютную доходность, особенно когда рынок быстро меняется, или тенденция рынка очевидно плавная, преимущество стратегии очевидно, короче говоря, если есть тенденция, есть прибыль. Однако, если рынок находится в волатильной ситуации или тенденция не очевидна, стратегия может покупать в высокой точке и продавать в низкой точке и останавливать убыток туда-сюда.

1.3 Принцип прибыли фьючерсной стратегии CTA

Фьючерсная стратегия CTA является прибыльной главным образом из-за следующих моментов:

    1. Есть рефлексивность в ценовом тренде, который всегда продолжается в направлении тренда. Когда инвесторы наблюдают, что цена растет, они будут следовать тренду и покупать, что приведет к дальнейшему росту цены. То же самое относится и к снижению цены. Поскольку инвесторы более иррациональны, иногда мы можем видеть, что цена растет аномально и падает аномально.
    1. Каждый инвестор имеет асимметричную толерантность к соотношению прибыли и убытка и различную толерантность к риску.
    1. Формирование цены определяется транзакцией. Это правда, что транзакция движима людьми, но человеческая природа трудно изменить. Это причина, по которой фиксированная модель будет повторяться. Стратегия эффективна в обратном тестировании исторических данных, что указывает на то, что она также может быть эффективна в будущем.

Кроме того, торговая особенность отслеживания трендов заключается в том, чтобы потерять небольшую сумму денег, когда нет рынка, и заработать большое состояние, когда наступает рынок. Однако люди, которые занимались торговлей, знают, что рынок волатилен большую часть времени, и только в течение небольшого количества времени является трендовым рынком. Поэтому стратегия отслеживания трендов имеет низкий показатель выигрыша в торговле, но общая прибыль и убытки каждой сделки относительно велики.

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

Корреляция между CTA и традиционными активами

img

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

Из вышеперечисленного можно сделать вывод, что лучше разработать несколько умеренных подстратегий, чем разработать мастер-стратегию. Как контролировать эти стратегии? Здесь мы можем учиться на алгоритме случайного леса в машинном обучении. Случайный лес не является независимым алгоритмом, он является структурой принятия решений, содержащей несколько деревьев решений. Он эквивалентен родительской стратегии выше подстратегии дерева решений. Кластер субстратегии организован и контролируется через родительскую стратегию.

Далее мы должны разработать материнскую стратегию. Мы можем оценить ликвидность, рентабельность и стабильность каждого сорта на всем рынке товарных фьючерсов, чтобы отобразить портфель товарных фьючерсов с низкой волатильностью прибыли, а затем провести нейтральный скрининг отрасли, еще больше снизить общую волатильность через отраслевую дисперсию портфеля и, наконец, построить фактический портфель товарных фьючерсов с несколькими сортами путем соответствия рыночной стоимости для торговли.

Каждый сорт также может быть настроен с многопараметровыми стратегиями, и он может выбрать комбинацию параметров с хорошей производительностью в бэкстестесте. Когда тенденция рынка очевидна, многопараметровые стратегии, как правило, будут работать последовательно, что эквивалентно добавлению позиций; Когда рынок находится в волатильной ситуации, производительность нескольких наборов параметровых стратегий, как правило, будет несовместима, так что они могут хеджировать риски, выходя долгими или короткими, соответственно, что эквивалентно сокращению позиций. Это может еще больше снизить максимальный показатель бэкстеста портфеля, сохраняя при этом общий показатель доходности неизменным.

Классический пример стратегии CTA

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

К общедоступным на рынке стратегиям CTA относятся стратегия SMA, стратегия полос Боллинджера, правила торговли черепахами, стратегия импульса, стратегия арбитража и так далее. Количественные торговые стратегии имеют одну характеристику, то есть они медленно потерпят неудачу, как только они станут общедоступными. Но это не влияет на нас, чтобы учиться на этих стратегиях и учиться на их сути, чтобы мы могли решать проблемы на плечах гигантов.

2.1 Анализ фундаментальных показателей фьючерсов (инвентарь, базовая разница, цена)

Фундаментальный анализ не должен заботиться о краткосрочной ценовой тенденции. Считается, что стоимость будет отражаться в цене в конечном итоге. Речь идет скорее об анализе факторов, лежащих в основе цены, чтобы определить, сколько стоит сорт. Как правило, используется метод анализа сверху вниз: от макрофакторов, факторов сорта и других факторов.

img

Из приведенной выше диаграммы мы видим, что существует множество факторов, влияющих на цены на сырьевые товары, и эти данные постоянно меняются.

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

Макрофакторы

Макроэкономические данные сложны и изменчивы. Каждый день, каждый момент, публикуется много экономических данных, от национальной политики, центральных банков, инвестиционных банков, официальных и неофициальных. В дополнение к политическому и экономическому кризису макроанализ является хорошим материалом для беседы, но не практичным.

Фактор разнообразия

В фундаментальном анализе анализ разнообразия в основном анализирует премию и дисконт, соотношение спроса и предложения, запасы товаров, промышленную прибыль и т. Д. Можно сказать, что освоение анализа фактора разнообразия товарных фьючерсов может судить о большей части рыночной тенденции.

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

Таким образом, согласно законам экономики, в конечном итоге цены на товары определяется связь между спросом и предложением. Теоретически, до тех пор, пока можно получить данные о спросе и предложении, можно определить будущую цену на товары. Для промышленных продуктов данные о предложении легко получить, но получить данные о спросе сложно. Для сельскохозяйственных продуктов данные о спросе легко получить, и получить данные о предложении трудно.

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

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

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

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

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

2.2 Правила торговли черепахами

Когда дело доходит до торговых стратегий, мы должны говорить о репрезентативных правилах торговли черепахой. Правило торговли черепахой происходит из самого известного эксперимента в истории торговли. Ричард Деннис, товарный спекулянт, хочет знать, рождаются ли великие трейдеры или обучены. С этой целью в 1983 году он нанял 13 человек и научил их основным концепциям торговли фьючерсами, а также своим собственным методам и принципам торговли. Эти студенты назывались черепашками.

В течение следующих четырех лет, черепахи достигли среднего годового совокупного процента в 80%. Деннис доказал, что с помощью простой системы и правил, люди с небольшим или никаким опытом торговли могут стать отличными трейдерами. Однако, некоторые черепахи продают правила торговли черепахами на веб-сайте с целью получения прибыли.

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

Основные принципы черепахи

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

Итак, давайте посмотрим, что говорят правила торговли черепахой.

  1. Рынок - что покупать и продавать, по сути, на каких рынках торговать. Черепахи - фьючерсные трейдеры. Они выбирают рынки с большим объемом торговли и высокой ликвидностью только. Потому что выбор рынков с неактивной торговлей увеличит дополнительное скольжение входа и выхода, а также упустит многие возможности тренда.
  2. Размер позиции - сколько покупать или продавать - очень важная часть всей стратегии, которую обычно игнорируют или неправильно относятся к ней большинство людей. Правило торговли черепахи использует ATR, то есть средний индекс реальной волатильности, для расчета открытой позиции, увеличения сигнала позиции и сигнала остановки потери. Это очень гениальный дизайн. Первоначальное намерение заключается в том, чтобы скорректировать размер позиции с помощью абсолютной волатильности рынка. Когда волатильность рынка сильна, уменьшайте позицию, а когда волатильность рынка слаба, увеличивайте позицию. Он сначала определяет единицу, формула которой: (общие активы * 1%) / ATR. Начальная позиция составляет 1 единицу. Даже если падение разновидности в тот день достигает уровня ATR, потеря в тот день может быть контролирована в пределах 1% от общего актива. Если цена вырастет на 0,5 единицы, длинная позиция увеличится
  3. Вход на рынок - Вход на рынок Turtle основан на канале Дончиана. Когда цена поднимается выше высочайшей цены первых 20 или 55 K линий, он входит на рынок, чтобы пойти длинным. Когда цена падает ниже самой низкой цены первых 20 или 55 K линий, он входит на рынок, чтобы пойти коротким. Когда появляется сигнал, входите на рынок для торговли, не дожидаясь закрытия или следующей K-линии.
  4. Стоп-лосс - в долгосрочной перспективе сделки, которые не останавливают потерю, не будут успешными, но большинство трейдеров держат позиции с убытком и пытаются рискнуть, надеясь, что рынок перевернется. Правила черепахи строго устанавливают, когда выйти из позиции с убытком. Если вы держите ордера на длинную позицию и цена падает на 2 единицы, длинная позиция закрывается с стоп-лосом. Если вы держите ордер на короткую позицию, и цена повышается на 2 единицы, короткая позиция будет закрыта со стоп-лосом.
  5. Стоп-прибыль - в правилах Turtle стоп-прибыль означает потерю большого количества плавающей прибыли, что также является неприемлемой частью для многих трейдеров. Если вы в настоящее время держите ордера на длинную позицию и цена падает ниже 10-дневного канала Дончиана, закрывайте все длинные ордера; если текущий ордер на короткую позицию проводится и цена поднимается выше 10-дневного канала Дончиана, закрывайте все короткие позиции.

Таким образом, мы можем видеть, что, хотя торговое правило Черепахи выглядит очень просто, на самом деле оно сформировало реальное представление о прототипе торговой системы. оно охватывает все аспекты полной торговой системы, не оставляя места трейдерам для принятия субъективных воображаемых решений, что просто делает преимущества запрограммированной работы системы играть, включая: правила входа и выхода, управление фондами и контроль рисков и т.д.

Наибольшее преимущество торгового метода черепахи заключается в том, что он помогает нам установить набор эффективных торговых методов. Это сочетание открытия партий, динамической стоп-прибыли и стоп-пробега и следующей стратегии тренда рынка, особенно использование стоимости ATR и концепции управления позициями, которые очень стоит изучить. Конечно, у него также есть общая проблема со стратегией отслеживания тренда, то есть плавающая прибыль и возвращение. Вполне вероятно, что все плавающие прибыли, полученные от покупки победителей, будут изъяты из-за следующей волны резких падений. Это очень сильное в общей тенденции, и не так хорошо, как ожидалось на волатильном рынке.

3. Разработка стратегии CTA на будущее на практике

3.1 Разработка стратегии развития CTA на основе MyLanguage

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

Слово хаос относится к описанию хаотического состояния Вселенной изначально. Его идея заключается в том, что результат неизбежен, но поскольку существующие знания не могут рассчитать результат, поскольку сам расчет также изменяет результат, максимальный или минимальный результат может появиться в конце концов, но нет неизбежного результата. Это очень похоже на торговый рынок. Участники также меняют рынок, когда они анализируют рынок и покупают и продают. Рынок имеет вечную изменчивость. Когда участники понимают новую форму рынка, рынок также понимает, что он признан участниками, поэтому происходит изменение. И он будет иметь тенденцию меняться в неизвестном направлении участников. Он имеет достаточно мудрости, чтобы помешать участникам поймать его правила изменения, то есть рынок не стабилен, и понимание прошлого рынка не может представлять будущее.

Метод хаос-операции - это полный набор инвестиционных идей, торговых стратегий и сигналов входа и выхода, изобретенный Биллом Уильямсом. В настоящее время многие инвесторы в мире используют хаос-операцию для участия в рыночных сделках. Поскольку развитие финансового рынка Китая отстает, а теория хаоса также является относительно новой идеей, в Китае мало кто изучает методы хаос-операции. Поскольку метод хаос-операции является торговой стратегией с высокой универсальностью и может применяться практически во всех областях финансовых инвестиций, включая акции, облигации, фьючерсы, валюту и цифровую валюту, этот курс использует упрощенную версию стратегии хаоса в качестве отправной точки для улучшения вашего инвестиционного интереса и дохода.

Как следует из названия, теоретической основой метода работы хаоса является теория хаоса, которая была предложена метеорологом Эдвардом Лоренцем. Это было одно из величайших научных открытий в конце 20-го века. Он выдвинул знаменитый "эффект бабочки". Билл Уильямс творчески применил теорию хаоса к области финансовых инвестиций, в сочетании с фрактальной геометрией, нелинейной динамикой и другими дисциплинами, и создал серию очень эффективных индикаторов технического анализа.

Весь метод работы Хаоса состоит из пяти основных измерений (технических показателей):

  • Аллигатор

  • Фрактал

  • Импульс

  • Ускорение

  • Линия баланса

img

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

// Parameters
N1:=11;
N2:=21;

// Defining the price median
N3:=N1+N2;
N4:=N2+N3;
HL:=(H+L)/2;

// Alligator
Y^^SMA(REF(HL,N3),N4,1);
R:=SMA(REF(HL,N2),N3,1);
G:=SMA(REF(HL,N1),N2,1);

Сначала мы определяем 2 внешних параметра N1 и N2, а затем вычисляем средний HL самой высокой цены и самой низкой цены в соответствии с внешними параметрами, а затем вычисляем средний HL с различными параметрами. Для зубов это средний средний период средней линии, а челюсть - средний средний большой период средней линии.

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

// Fractal
TOP_N:=BARSLAST(REF(H,2)=HHV(H,5))+2;
BOTTOM_N:=BARSLAST(REF(L,2)=LLV(L,5))+2;

TOP:=REF(H,TOP_N);
BOTTOM:=REF(L,BOTTOM_N);

MAX_YRG^^MAX(MAX(Y,R),G); 
MIN_YRG^^MIN(MIN(Y,R),G); 

TOP_FRACTAL^^VALUEWHEN(H>=MAX_YRG,TOP);
BOTTOM_FRACTAL^^VALUEWHEN(L<=MIN_YRG,BOTTOM);

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

// If there are no current long position orders and the closing price rises above the upper fractal and the upper fractal is above the alligator, open a long position.
BKVOL=0 AND C>=TOP_FRACTAL AND TOP_FRACTAL>MAX_YRG,BPK(1);
// If there are no current short position orders and the closing price falls below the lower fractal and the lower fractal is below the alligator, open a short position.
SKVOL=0 AND C<=BOTTOM_FRACTAL AND BOTTOM_FRACTAL<MIN_YRG,SPK(1);

// Long positions are closed if the closing price falls below the jaws of the alligator.
C<Y,SP(BKVOL);
// Short positions are closed if the closing price rises above the jaws of the alligator.
C>Y,BP(SKVOL);

Для простоты понимания я написал подробные комментарии прямо в код.

  • Долгая открывающаяся позиция: если в настоящее время нет ордеров на длинную позицию, а цена закрытия поднимается ниже верхней фрактали, а верхняя фракталь находится выше аллигатора.
  • Открытие короткой позиции: если в настоящее время нет ордеров на короткую позицию, а цена закрытия падает ниже нижнего фрактала, а нижний фрактал ниже аллигатора.
  • Долгая закрытая позиция: если цена закрытия падает ниже аллигатора.
  • Краткая закрытая позиция: если цена закрытия поднимается выше аллигатора.

Далее, давайте посмотрим, как на самом деле выглядят результаты этого простого обратного теста стратегии хаоса. Чтобы сделать обратный тест более близким к реальной рыночной среде, комиссия установлена в два раза выше валютного курса, а открытие и закрытие позиций подвергаются скользящей точке по два прыжка каждая. Тип данных обратного теста - индекс арматуры, а тип торговли - основная сила арматуры непрерывная, с фиксированной позицией открытия 1 лота. Ниже представлен предварительный отчет о производительности обратного теста на уровне 1 часа.

img

По данным кривой капитала и результатов обратного теста, стратегия показала хорошие результаты, а общая кривая капитала стабильно увеличивалась. Однако с конца 2016 года рыночные характеристики сортов арматуры изменились, с односторонней тенденции высокой волатильности до широкой тенденции волатильности. С точки зрения кривой капитала прибыль с 2017 года по настоящее время очевидно слаба.

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

3.2 Разработка стратегии арбитража CTA на основе языка JavaScript

Джордж Сорос выдвинул важное предложение в книге "Алхимия финансов", написанной в 1987 году: Я считаю, что рыночные цены всегда ошибочны в том смысле, что они представляют предвзятое представление о будущем. Он считал, что гипотеза эффективности рынка является только теоретической гипотезой. На самом деле, участники рынка не всегда рациональны, и в каждый момент времени участники не могут полностью получить и объективно интерпретировать всю информацию. Кроме того, даже если это одна и та же информация, обратная связь каждого отличается. То есть сама цена уже содержит неправильные ожидания участников рынка, поэтому по сути, рыночная цена всегда ошибочна. Это может быть источником прибыли арбитражей.

Согласно вышеуказанным принципам, мы можем знать, что на неэффективном фьючерсном рынке причина, по которой влияние рынка на контракты поставки в разные периоды не всегда синхронно, и ценообразование не является полностью эффективным. Затем, основываясь на цене контракта поставки одного и того же объекта сделки в разные периоды, если между двумя ценами существует большая разница в цене, мы можем покупать и продавать фьючерсные контракты в разные периоды одновременно для межпериодного арбитража.

Как и товарные фьючерсы, цифровая валюта также имеет портфель контрактов на арбитражный период. Например, на бирже OKEX есть: ETC текущей недели, ETC следующей недели, ETC квартал. Например, предположим, что разница в цене между текущей неделей ETC и кварталом ETC остается около 5 в течение длительного времени. Если разница в цене достигает 7 в один день, мы ожидаем, что разница в цене вернется к 5 в будущем. Затем мы можем продать ETC на этой неделе и купить ETC квартал в то же время, чтобы сократить разницу в цене, и наоборот.

Хотя эта разница в ценах существует, в ручном арбитраже существует много неопределенностей из-за трудоемких ручных операций, плохой точности и влияния изменений цен.

В этом курсе вы узнаете, как использовать платформу FMZ Quant Trading и фьючерсный контракт ETC на бирже OKEX, чтобы продемонстрировать, как использовать мгновенные возможности арбитража, извлекать прибыль, которую можно увидеть каждый раз, и хеджировать риски, которые могут возникнуть в торговле цифровой валютой с помощью простой стратегии арбитража.

Создать стратегию арбитража для цифровой валютыТрудность: нормальная

Стратегическая среда

  • Объект сделки: Ether Classic (ETC)
  • Спродные данные: текущая неделя ETC - квартал ETC (пропуск теста соинтеграции)
  • Период транзакции: 5 минут
  • Период транзакции: 5 минут
  • Тип сделки: перекрестный период одного и того же типа

Логика стратегии

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

Выше приведено простое логическое описание кросс-периодической стратегии арбитража цифровой валюты.

function Data() {}  // Basic data function
Data.prototype.mp = function () {}  // Position function
Data.prototype.boll = function () {}  // Indicator function
Data.prototype.trade = function () {}  // Order placement function
Data.prototype.cancelOrders = function () {}  // Order withdrawal function
Data.prototype.isEven = function () {}  // Processing single contract function
Data.prototype.drawingChart = function () {}  // Drawing function

function onTick() {
    var data = new Data(tradeTypeA, tradeTypeB);  // Create a basic data object
    var accountStocks = data.accountData.Stocks;  // Account balance
    var boll = data.boll(dataLength, timeCycle);  // Calculate the technical indicators of boll
    data.trade();  // Calculate trading conditions to place an order
    data.cancelOrders();  // Cancel orders
    data.drawingChart(boll);  // Drawing
    data.isEven();  // Processing of holding individual contract
}

//Entry function
function main() {
    while (true) {  // Enter the polling mode
        onTick();  // Execute onTick function
        Sleep(500);  // Sleep for 0.5 seconds
    }
}

Представьте себе, как выглядит наш торговый процесс в надзорной торговле. Нет существенной разницы в системных транзакциях. Это не что иное, как получение данных, расчет данных, размещение транзакции заказа и обработка после размещения заказа. То же самое верно и в программе. Во-первых, программа выполняет основную функцию в строке 20, которая является конвенцией. Когда программа завершает предварительную обработку торговой стратегии (если таковая имеется), она входит в режим бесконечной петли, то есть режим опроса. В режиме опроса функция onTick будет выполняться неоднократно.

Затем в функции onTick, это наш торговый процесс в субъективной сделке: сначала, получить базовые данные цены, затем получить баланс счета, затем рассчитать индекс, затем рассчитать условия торговли и разместить заказ, и, наконец, обработка после размещения заказа, включая отмену заказа, чертеж и обработку одного контракта.

Стратегическую структуру можно легко создать в соответствии с идеей стратегии и процессом транзакций.

  • Предварительная обработка перед транзакцией.
  • Получить и вычислить данные.
  • Сделай заказ и позже разберись с ним.

Далее нам нужно заполнить необходимый детальный код в рамках стратегии в соответствии с фактическим процессом транзакции и деталями транзакции.

I. Предварительная обработка до сделки

1. Заявить необходимые глобальные переменные в глобальном масштабе.

  • Декларировать объект диаграмма для диаграммы конфигурации
var chart = {}
  • Вызвать функцию Chart и инициализировать график
var ObjChart = Chart ( chart )
  • Декларировать пустой массив для хранения серии разницы цен
var bars = []
  • Заявление переменной временной метки данных истории записи
var oldTime = 0

Конфигурировать внешние параметры стратегии.

var tradeTypeA = "this_week"; // Arbitrage A Contract
var tradeTypeB = "quarter"; // Arbitrage B Contract
var dataLength = 10; // Indicator period length
var timeCycle = 1; // K-line period
var name = "ETC"; // Currencies
var unit = 1; // Order quantity

3. Определить функцию обработки данных

  • Функция базовых данных: Данные ((() Создайте конструктор Data и определите его внутренние свойства, включая: данные счета, данные о позиции, временную метку данных K-линии, цену покупки/продажи арбитражного контракта A/B и положительную/отрицательную разницу цены арбитража.
function Data(tradeTypeA, tradeTypeB) { // Pass in arbitrage A contract and arbitrage B contract
    this.accountData = _C(exchange.GetAccount); // Get account information
    this.positionData = _C(exchange.GetPosition); // Get position information
    var recordsData = _C(exchange.GetRecords); // Get K-line data
    exchange.SetContractType(tradeTypeA); // Subscription arbitrage A contract
    var depthDataA = _C(exchange.GetDepth); // Depth data of arbitrage A contract
    exchange.SetContractType(tradeTypeB); // Subscription arbitrage B contract
    var depthDataB = _C(exchange.GetDepth); // Depth data of arbitrage B contract
    this.time = recordsData[recordsData.length - 1].Time; // Time of obtaining the latest data
    this.askA = depthDataA.Asks[0].Price; // Sell one price of Arbitrage A contract
    this.bidA = depthDataA.Bids[0].Price; // Buy one price of Arbitrage A contract
    this.askB = depthDataB.Asks[0].Price; // Sell one price of Arbitrage B contract
    this.bidB = depthDataB.Bids[0].Price; // Buy one price of Arbitrage B contract
    // Positive arbitrage price differences (Sell one price of contract A - Buy one price of contract B)
    this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price;
    // Negative arbitrage price differences (Buy one price of contract A - Sell one price of contract B)
    this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price;
}
  • Получить функцию положения: mp ()) Пройдите через весь массив позиций и верните величину позиции указанного контракта и направления.
Data.prototype.mp = function (tradeType, type) {
    var positionData = this.positionData; // Get position information
    for (var i = 0; i < positionData.length; i++) {
        if (positionData[i].ContractType == tradeType) {
            if (positionData[i].Type == type) {
                if (positionData[i].Amount > 0) {
                    return positionData[i].Amount;
                }
            }
        }
    }
    return false;
}
  • К-линия и функция индикатора: boll() Новая K-линейная последовательность синтезируется согласно данным положительного арбитража/отрицательного арбитража разницы цен. Возвращаются данные верхнего трека, среднего трека и нижнего трека, рассчитанные с помощью индикатора boll.
Data.prototype.boll = function (num, timeCycle) {
    var self = {}; // Temporary objects
    // Median value of positive arbitrage price difference and negative arbitrage price difference
    self.Close = (this.basb + this.sabb) / 2;
    if (this.timeA == this.timeB) {
        self.Time = this.time;
    } // Compare two depth data timestamps
    if (this.time - oldTime > timeCycle * 60000) {
        bars.push(self);
        oldTime = this.time;
    } // Pass in the price difference data object into the K-line array according to the specified time period
    if (bars.length > num * 2) {
        bars.shift(); // Control the length of the K-line array
    } else {
        return;
    }
    var boll = TA.BOLL(bars, num, 2); // Call the boll indicator in the talib library
    return {
        up: boll[0][boll[0].length - 1], // boll indicator upper track
        middle: boll[1][boll[1].length - 1], // boll indicator middle track
        down: boll[2][boll[2].length - 1] // boll indicator down track
    } // Return a processed boll indicator data
}
  • Функция заказа: торговля Ввести название контракта заказа и тип заказа, затем разместить заказ с оплатой и вернуть результат после размещения заказа.
Data.prototype.trade = function (tradeType, type) {
    exchange.SetContractType(tradeType); // Resubscribe to a contract before placing an order
    var askPrice, bidPrice;
    if (tradeType == tradeTypeA) { // If the order is placed in contract A
        askPrice = this.askA; // set askPrice
        bidPrice = this.bidA; // set bidPrice
    } else if (tradeType == tradeTypeB) { // If the order is placed in contract B
        askPrice = this.askB; // set askPrice
        bidPrice = this.bidB; // set bidPrice
    }
    switch (type) { // Match order placement mode
        case "buy":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Buy(askPrice, unit);
        case "sell":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Sell(bidPrice, unit);
        case "closebuy":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Sell(bidPrice, unit);
        case "closesell":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Buy(askPrice, unit);
        default:
            return false;
    }
}
  • Отменить заказ Функция: отменить заказ ((() Получить массив всех ожидаемых заказов и отменить их один за другим. Кроме того, ложь возвращается, если есть неисполненный заказ, и истинный возвращается, если нет неисполненного заказа.
Data.prototype.cancelOrders = function () {
    Sleep(500); // Delay before cancellation, because some exchanges, you know what I mean
    var orders = _C(exchange.GetOrders); // Get an array of unfilled orders
    if (orders.length > 0) { // If there are unfilled orders
        for (var i = 0; i < orders.length; i++) { // Iterate through the array of unfilled orders
            exchange.CancelOrder(orders[i].Id); // Cancel unfilled orders one by one
            Sleep(500); // Delay 0.5 seconds
        }
        return false; // Return false if an unfilled order is cancelled
    }
    return true; // Return true if there are no unfilled orders
}
  • Управление, содержащее один контракт: isEven ((() В случае одной ноги в арбитражной сделке мы просто закрываем все позиции.
Data.prototype.isEven = function () {
    var positionData = this.positionData; // Get position information
    var type = null; // Switch position direction
    // If the remaining 2 of the position array length is not equal to 0 or the position array length is not equal to 2
    if (positionData.length % 2 != 0 || positionData.length != 2) {
        for (var i = 0; i < positionData.length; i++) { // Iterate through the position array
            if (positionData[i].Type == 0) { // If it is a long order
                type = 10; // Set order parameters
            } else if (positionData[i].Type == 1) { // If it is a short order
                type = -10; // Set order parameters
            }
            // Close all positions
            this.trade(positionData[i].ContractType, type, positionData[i].Amount);
        }
    }
}
  • Функция чертежа: чертежСхема ()) Вызовите метод ObjChart Add (), нарисуйте необходимые рыночные данные и данные показателей в графике: верхний путь, средний путь, нижний путь, положительная/отрицательная арбитражная ценовая разница.
Data.prototype.drawingChart = function (boll) {
    var nowTime = new Date().getTime();
    ObjChart.add([0, [nowTime, boll.up]]);
    ObjChart.add([1, [nowTime, boll.middle]]);
    ObjChart.add([2, [nowTime, boll.down]]);
    ObjChart.add([3

Связанные

Больше