Author

Topic: Продвинутые японские свечи для машинног&#1086 (Read 156 times)

copper member
Activity: 493
Merit: 170
BountyMarketCap
Черт, Шапиро, они не учили тебя не списывать во время теста в школе? Ненормальность доходности, по-видимому, является нормой независимо от типа бара.

4. Что мы узнали?

1.   Тиковые свечи генерируются путем агрегирования предварительно определенного количества тиков и вычисления соответствующих значений OHLCV.
2.   Тиковые бары на графике выглядят некрасиво, но они хорошо выполняют свою работу: они делают больше выборок в периоды высокой активности и меньше в периоды низкой активности.
3.   Логарифмическая доходность от тиковых свечей показывает более низкую последовательную корреляцию по сравнению со свечами, основанными на времени, даже при небольших размерах (50, 100-тиковые бары).
4.   Логарифмическая доходность от обоих типов баров, как тиковых, так и основанных на времени, не соответствует нормальному распределению.

Оригинал статьи на английском: https://towardsdatascience.com/advanced-candlesticks-for-machine-learning-i-tick-bars-a8b93728b4c5
copper member
Activity: 493
Merit: 170
BountyMarketCap
Продвинутые японские свечи для машинного обучения: тиковые бары.
В этой статье мы узнаем, как строить тиковые бары, тщательно проанализируем их статистические параметры, такие как: нормальность доходности или автокорреляцию, а также исследуем, в каких сценариях эти бары могут быть хорошей заменой для традиционных, основанных на времени, свечей. Для иллюстрации применимости тиковых баров при прогнозировании рынков криптовалют, мы будем основывать наш анализ на целом наборе данных, который включает в себя 16 торговых криптовалютных пар, включая самые популярные криптовалюты, такие как Bitcoin, Ethereum или Litecoin.


1. — Введение
В предыдущей статье мы изучили, почему традиционные японские свечи, основанные на времени, не являются наиболее подходящим форматом ценовых данных, если мы планируем научить алгоритм машинного обучения (ML). А именно: (1) основанные на времени японские свечи перекрывают периоды низкой активности и недостаточно покрывают периоды высокой активности, (2) рынки всё больше контролируются торговыми алгоритмами, которые больше не следуют ни одному антропогенному дневному циклу, (3) использование свечей, основанных на времени, широко распространено среди трейдеров и торговых ботов, что увеличивает конкуренцию и, как мы увидим далее в этой статье, (4) основанные на времени свечи предлагают ухудшенные статистические параметры. Ниже приведена ссылка на статью, в случае, если вы пропустили обновления.
https://towardsdatascience.com/financial-machine-learning-practitioners-have-been-using-the-wrong-candlesticks-heres-why-7a3fb85b5629

В этой статье мы рассмотрим один из предложенных альтернативных баров: тиковые бары. Давайте в этом разберёмся.

2. — Построение тиковых баров
Существуют как минимум два главных определения, что такое тик.
Ссылаясь на сайт investopedia:

Quote
Тик – это размер минимального движения стоимости ценной бумаги вверх или вниз. Тик также может свидетельствовать об изменении стоимости ценной бумаги от сделки к сделке.

В случае тиковых баров, нас интересует второе определение: в области тиковых баров, тик – это, по сути, сделка и цена, по которой сделка была совершена на бирже. Тиковый бар или свеча – это просто набор заранее определенного числа тиков. Например, если мы хотим создать 100-тиковые бары, мы должны хранить информацию о всех сделках, и каждый раз, когда мы получаем 100 сделок на бирже мы строим бар или свечу. Затем свечи строятся путём подсчёта значений Open (цена на время открытия тика), High (наивысшая цена за весь промежуток тика), Low(самая низкая цена за весь промежуток тика), Close (цена на конец тика) и Volume (объём, количество) (они обычно сокращаются до OHLCV).


Значения open (на момент открытия) и close (на момент закрытия) соответствуют цене первой и последней сделки соответственно. Значения high и low – это максимальная и минимальная цена всех сделок в свече (может пересекаться с open и close). Наконец, volume – это сумма всех обмененных активов (например, в случае с парой ETH-USD, volume – измеряется как количество всех Ethereum обмененных во время этой свечи). Условность заключается в том, что когда свеча закрывается по более высокой цене, чем её цена открытия, то мы окрашиваем свечу в зеленый цвет (или оставляем пустой), в то время как, если цена закрытия ниже цены открытия, то мы окрашиваем её в красный цвет (или заполняем черным).

Вот очень простая, но быстрая реализация Python для генерации тиковых свечей:

Code:
# expects a numpy array with trades
# each trade is composed of: [time, price, quantity]
def generate_tickbars(ticks, frequency=1000):
    times = ticks[:,0]
    prices = ticks[:,1]
    volumes = ticks[:,2]
    res = np.zeros(shape=(len(range(frequency, len(prices), frequency)), 6))
    it = 0
    for i in range(frequency, len(prices), frequency):
        res[it][0] = times[i-1]                        # time
        res[it][1] = prices[i-frequency]               # open
        res[it][2] = np.max(prices[i-frequency:i])     # high
        res[it][3] = np.min(prices[i-frequency:i])     # low
        res[it][4] = prices[i-1]                       # close
        res[it][5] = np.sum(volumes[i-frequency:i])    # volume
        it += 1
    return res

А здесь можно увидеть визуализацию того, как выглядят тиковые бары в сравнении со стандартными свечами, основанными на времени. В этом случае мы показываем 4-часовые и 1000-тиковые свечи для торговой пары BTC-USD, а также цену всех сделок, заключенных между 21-01-2017 и 02-02-2017. Стоит обратить внимание,  что для свечей мы также показываем отметку (звездочку) каждый раз, когда проводим выборку бара.


Два основных замечания по поводу этих графиков:

1. Да, тиковые свечи выглядят очень некрасиво. Они хаотичны, перекрывают друг друга на графике, и их тяжело понять, но помните, что они и не должны быть рассчитаны на удобство для человека: они должны быть рассчитаны на удобство для машины.

2. Настоящая причина, по которой они такие некрасивые заключается в том, что они отлично справляются со своей работой. Посмотрите на эти отметки, видите, как в периоды, когда цена сильно меняется, появляется больше звездочек (и больше баров), загроможденных вместе? И наоборот: когда цена сильно не меняется, выборка тиковых баров намного меньше. По сути, мы создаём систему, в которой мы синхронизируем поступление информации на рынок (более высокая активность и ценовая волатильность) с выборкой свечей. В конечном счете, мы отбираем больше в периоды высокой активности и меньше в периоды низкой активности. Ура!

3. — Статистические параметры
Так что насчёт их статистических параметров? Лучше ли они, чем их традиционные коллеги, основанные на времени?

Мы рассмотрим два разных параметра: (1) последовательная корреляции и (2) нормальность доходности для каждой из 15 пар криптовалют, предлагаемых в CryptoDatum.io[/u]]CryptoDatum.io, включая все бары из истории биржи Bitfinex, и для каждого размера основанных на времени и тиковых свечей:

•   Размеры баров, основанных на времени: 1-минутный, 5- минутный, 15- минутный, 30-минутный, 1-часовой, 4-часовой, 12-часовой, 1-дневный.
•   Размеры тиковых баров: 50, 100, 200, 500, 1000

3.1 — Последовательная корреляция (автокорреляция)
Последовательная корреляция измеряет, насколько каждое значение временного ряда коррелирует со следующим (для лаг=1) или между любым значением i и другим значением i+n (лаг=n). В нашем случае, мы рассчитаем последовательную корреляцию логарифмической доходности, которая рассчитывается как первая разница логарифмических цен закрытия свечей.

Code:
def returns(candles_close_prices):
    return np.diff(np.log(candles_close_prices))

В идеале, каждая точка данных нашей последовательности должна быть независимым наблюдением. Если существует последовательная корреляция, то это означает, что они не являются независимыми (они зависят друг от друга при лаг=1 или выше), и это будет иметь свои последствия при построении регрессионных моделей, потому что ошибки, которые мы будем наблюдать в нашей регрессии будут меньше или больше, чем истинные ошибки, которые могут сбить с толку наши интерпретации и прогнозы. Вы можете увидеть очень наглядное обьяснение здесь https://www3.nd.edu/~rwilliam/stats2/l26.pdf.

Чтобы измерить последовательную корреляцию мы вычислим корреляцию Пирсона ряда смещенного относительно самого себя (лаг=1, т.е. корреляция первого порядка). Вот получившиеся результаты:


Оказывается, что тиковые бары (помеченные, как tick-*) обычно имеют низкую автокорреляцию, чем основанные на времени свечи (помеченные, как time-*), то есть автокорреляция Пирсона ближе к нулю. Разница кажется менее очевидной для больших временных баров (4-часовых, 12-часовых, 1-дневных), но, что интересно, даже самые маленькие тиковые бары (50-тиковые и 100-тиковые) дают очень низкую автокорреляцию, которая не применима для меньших временных баров (1-минутные, 5-минутные).

Наконец, интересно посмотреть, как несколько криптовалют (BTC, LTC, ZEC, и ZIL) выражают довольно сильную отрицательную автокорреляцию в нескольких временных барах. Роберто Педас дал комментарий насчёт отрицательных автокорреляций. https://www.dummies.com/education/economics/econometrics/patterns-of-autocorrelation/

Quote
Автокорреляция, также известная как последовательная корреляция, может существовать в регрессионной модели, когда порядок наблюдений в данных актуальный или важный. Другими словами, для данных временных рядов (а иногда и панельных или логических) важна автокорреляция. […] Автокорреляция не относится к ситуации, в которой не существует идентифицируемой связи между значениями отклонения. […] Хотя и маловероятно, отрицательная автокорреляция также возможна. Отрицательная автокорреляция возникает, когда за отклонением определенной переменной обычно следует противоположное отклонение другой переменной. Например, положительные отклонения одной переменной обычно сопровождаются отрицательными отклонениями другой переменной, а отрицательные отклонения одной переменной обычно сопровождаются положительными отклонениями другой.

Мы выполним дополнительный статистический тест, называемый тестом Дурбина-Ватсона (ДВ), который также диагностирует наличие последовательной корреляции. Статистика БД лежит в диапазоне 0–4, и ее интерпретация следующая:

Code:
Величина	         Значение
ДВ-статистика<< 2 положительная последовательная корреляция
ДВ-статистика ~ 2 без корреляции первого порядка
ДВ-статистика >> 2 отрицательная последовательная корреляция

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


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

3.2 — Нормальность доходности
Еще одна статистика, на которую мы можем посмотреть, это нормальность доходности, это то, следует ли распределение нашей логарифмической доходности нормальному (то есть гауссовскому) распределению или нет.

Есть несколько тестов, которые мы можем провести, чтобы проверить нормальность - мы выполним 2 из них: тест Харке-Бера, который проверяет, имеют ли данные асимметрию и эксцесс, соответствующие нормальному распределению, и тест Шапиро-Уилка, который является одним из наиболее классических тестов, чтобы проверить, соответствует ли выборка распределению Гаусса.

В обоих случаях нулевая гипотеза состоит в том, что выборка следует нормальности. Если нулевая гипотеза отклоняется (значение p ниже уровня значимости - обычно <0,05), то имеются убедительные доказательства того, что выборка не соответствует нормальному распределению.

Давайте сначала посмотрим на p-значения для Харке-Бера:


Результаты почти единогласны: логарифмическая доходность не соответствует распределению Гаусса (большинство значений p <0,05). Две пары криптовалют (Stellar и Zilliqa), похоже, на самом деле следуют гауссову, если мы установим наш уровень значимости на 0,05. Давайте посмотрим на их распределение (ядерную оценку плотности):



Справедливо отметить, некоторые из них могут выглядеть гауссовски (по крайней мере визуально) Тем не менее, обратите внимание, что количество выборок (n) очень мало (например, для XLM-USD Свеча_тик_1000 n = 195), поэтому я подозреваю, что одной из причин может быть просто недостаточность выборки, что дает тесту Харке-Бера недостаточно доказательств, чтобы отвергнуть нулевую гипотезу нормальности.

На самом деле, беглый взгляд на базу данных CryptoDatum.io показывает, что торговые пары XLM-USD и ZIL-USD были только что выпущены в мае и июле прошлого года (2018), соответственно, и они, кажется, имеют довольно низкий объем ...

Тайна разгадана? Smiley

Давайте теперь проведём тест Шапиро-Уилка, чтобы проверить, соответствует ли он предыдущим результатам:

Jump to: