Написал: ck.eth
Составил: Лилия
Гиперболическое распределение [1], первоначально разработанное для моделирования колебаний песчаных бурь [2] (динамика песка в пустынях), имеет применение при моделировании доходности финансовых активов благодаря гибкости параметров [3].
Слева: рассмотрение статистического распределения на логарифмическом графике позволяет лучше понять его форму. Распределение Гиперборы имеет форму, похожую на гиперболу, а пунктирное распределение Гаусса можно рассматривать как параболу из-за присутствия члена e^-x²/2. Справа: вы можете лучше понять характеристики распределения, посмотрев на его хвосты на логарифмическом графике. Распределение по степенному закону не показывает тенденции к затуханию на логарифмическом графике. Различные распределения можно смешивать, комбинируя распределения и используя весовые параметры.
Ценовое поведение цифровых активов
Поставщикам ликвидности (LP) очень полезно понимать динамику цен своих активов. Если мы посмотрим на исторические данные для Биткойна (BTC), старейшего цифрового актива, в форме логарифмического графика с 2015 года, используя 3091 ежедневную доходность, мы увидим, что, за исключением нескольких выбросов, обобщенное гиперболическое распределение исторически соответствует ежедневная прибыль хорошо.
Аномалиями в нашей подгонке являются выбросы справа и слева, которые можно наблюдать на логарифмическом графике. На этом рисунке мы видим, что хвосты отрицательной доходности представлены красным, а положительные выбросы — синим.
Хотя хвосты выглядят одинаково, в выбросах справа есть некоторое несоответствие. Чтобы сгладить гистограмму, я использовал метод Kernel Density Estimation (KDE).
С 1 января 2015 года левый и правый хвосты дневной доходности Биткойна (BTC) демонстрируют асимметрию, особенно правый хвост.
Это означает, что сочетание обобщенной гиперболы с асимметричным степенным законом может описать динамику цен на биткойны. Важно отметить, что я выбрал Биткойн в качестве примера, потому что это самый старый временной ряд, а также наименее волатильный из всех цифровых активов, а это означает, что поставщики ликвидности (LP) других цифровых активов будут вести себя более нестабильно.
Динамическое моделирование цен
Существуют десятки статистических распределений, которые можно смешивать для имитации такого волнового поведения. Например, в традиционных финансах общепринятым подходом является использование геометрического броуновского движения (логарифмически нормальное распределение) и объединение его с процессом Лёви (распределение Пуассона) для учета скачков цен.
Пути моделирования, визуализированные Эриком Барду и Антонисом Папапантолеоном в их лекции о процессах Левере.
Я создал библиотеку из более чем 50 статистических распределений на Desmos, чтобы помочь пользователям изучить эти распределения и узнать, как воспроизвести LP-позиции этих распределений в Uniswap с помощью интегралов Римана.
Ссылка на Desmos для библиотеки статистического распределения: https://www.desmos.com/calculator/4ey6hbevzf
Ссылка на Desmos для библиотеки статистического распределения: https://www.desmos.com/calculator/4ey6hbevzf
Интересной особенностью Desmos является возможность переключения на логарифмический график, который позволяет увидеть, как меняются хвостовые характеристики каждого статистического распределения.
Если вы хотите сравнить, какое распределение лучше всего подходит для ваших данных, вы можете использовать тест Колмогорова-Смирнова, чтобы сравнить кумулятивную функцию распределения с эмпирическими данными кумулятивной гистограммы. Однако мы также можем использовать простой подход, описанный ниже, где мы просто предполагаем наихудшее возможное распределение.
Что делать, если вы ничего не знаете о будущем? Что ж, мы можем подумать о том, как выглядит наихудшее возможное распределение в ценовом пространстве, которое представляет собой степенной закон с бесконечно расширяющимися хвостами. Одним из таких распределений является распределение Коши (в ценовом пространстве эквивалентом является логарифмическое распределение Коши).
Распределение Коши не подчиняется закону больших чисел, оно имеет свою собственную волю. Вы можете перейти по этой ссылке: https://en.wikipedia.org/wiki/Cauchy_distribution#/media/File:Mean_estimator_consistency.gif, чтобы узнать о характеристиках распределения Коши.
Одним из свойств распределения Коши является то, что оно не подчиняется закону больших чисел. Вы можете подсчитать среднее значение за последние 30 дней и подумать, что видите закономерность, но на самом деле это может вас обмануть. Интересным примером является среднее значение торговой пары DOGE/ETH, которое может демонстрировать такое поведение из-за недостатка ликвидности.
Несмотря на то, что Dogecoin и Ethereum существуют уже более 7 лет, процесс скачка торговой пары имеет свои особенности, что затрудняет применение методов статистической аппроксимации.
Несмотря на то, что Dogecoin и Ethereum существуют уже более 7 лет, процесс скачка торговой пары имеет свои особенности, что затрудняет применение методов статистической аппроксимации.
На логарифмической гистограмме справа растут выбросы. Я узнал, что распределение с растущими выбросами на логарифмическом графике является распределением логарифмического Коши.
Мы можем увидеть, как выглядит распределение Коши по сравнению с логнормальным распределением в ценовом пространстве.
Слева: логарифмический график логнормального распределения является параболическим, с линейным хвостом степенного закона Коши, представленным красным цветом, и черной пунктирной линией, представляющей логарифмическое распределение Коши. Справа: представление того же распределения в ценовом пространстве в диапазоне от [ 0, гигантский).
Распределение лог-Коши не так плохо, как весь спектр позиций Uniswap v2, но это второй худший случай. Основываясь на том, что мы узнали об оптимизации эффективности использования капитала в частях 1 и 2 , установка нижней границы на уровне 80–90 % может помочь улучшить ее, поскольку по мере приближения цены к нижней границе распределение начинает расти, поэтому нет необходимости сохранять обеспечение ликвидности до нуля.
Начиная с текущей цены 1, установку нижнего предела в 80-90% можно использовать как отправную точку для ограничения диапазона, но я не рекомендую инвестировать/покупать/продавать какой-либо актив на основе такой динамики.Это не финансовый совет. Лучше всего подождать и узнать больше об активе.
О степенных распределениях в сложных системах
Но у степенного распределения, такого как распределение Коши, хвосты со временем становятся короче? В развивающейся и сложной системе, такой как криптовалюта, сложно полностью устранить степенные явления (см. приложение), но можно снизить степень неопределенности.
Если задуматься, все активы испытывают моменты неопределенности на своих начальных стадиях. Фактически, с развитием автоматизированных маркет-мейкеров (АММ) мы обнаружили интересные связи, которые невозможно предсказать на традиционных финансовых рынках. Люди используют закон квадратного корня для статистической оценки ценового эффекта. С помощью AMM мы можем точно предсказать, как повлияет на цену просто как функция концентрированной ликвидности, и нет необходимости учитывать объем или волатильность, чтобы определить влияние на цену в определенный момент. Доводя аргумент до крайности, предположим, что Джером Пауэлл загружает MetaMask и решает профинансировать ликвидность в DOGE/ETH и обеспечить ликвидность в триллионы долларов. Каждый человек, пытающийся продать DOGE, оказывает практически незначительное негативное влияние на цену, и, как вы можете видеть из распределения доходности, волатильность со временем снижается, постепенно становясь все менее похожей на распределение Коши.
Таким образом, наличие поставщика ликвидности с достаточными средствами, который достаточно смел, чтобы предоставить AMM избыточную ликвидность в течение длительного периода времени, может снизить волатильность актива. Хотя я подозреваю, что немногие люди смогут иметь под рукой принтер цифровых валют, чтобы повысить свою смелость.
В отсутствие принтеров цифровых валют одним из способов решения этой проблемы для криптовалютной индустрии является внедрение активов на блокчейне, которые могут предоставить поставщикам ликвидности постоянные гарантии покупки. Эти активы могут включать в себя: крупные акции, приносящие дивиденды (покупаемые пенсионными фондами для пенсионеров), облигации (покупаемые банками и корпорациями для краткосрочного финансирования), иностранную валюту (единую глобальную централизованную бумажную валюту трудно достичь, поэтому китайская юань, доллар США, валютные пары, такие как евро, все еще будут использоваться) и сырьевые товары (еда и отопление всегда будут пользоваться спросом). Как поставщик ликвидности, вы можете быть более спокойны при предоставлении ликвидности в такой торговой паре, как McDonald's/Corn, потому что вы знаете, что всегда будет некоторый спрос, и поэтому не отпугиваете ликвидность. Даже если есть потери от отклонения, как поставщик ликвидности вы можете быть спокойны, потому что вы будете владельцем группы производителей Хэппи Мил или кучи кукурузы.
приложение
О степенных законах и о том, почему это явление продолжит существовать в криптовалютах и традиционных финансах:
Хорошим недавним примером является (8 января 2023 г.) параллельно развивающаяся система DeFi, в которой Curve была атакована через Vyper, что, в свою очередь, повлияло на другие протоколы, такие как Aave, что, в свою очередь, повлияло на решения других пользователей о снятии средств. Существование уязвимостей нулевого дня приводит к тому, что система постоянно развивается и становится несбалансированной, вызывая хвостовые события.
Это код для получения исторических данных из Интернета:
импорт математики
импортировать numpy как np
импортируйте yfinance как yf #обязательно установите «pip install yfinance»
импортировать панд как pd
импортировать matplotlib.pyplot как plt
импортировать matplotlib.animation как анимацию
#Загрузить BTC/EUR по умолчанию
импортировать matplotlib.animation как анимацию
#Загрузить BTC/EUR по умолчанию
Ticket1="BTC-USD" #^GSPC, ^IXIC, CL=F,^OVX, GC=F, BTC-USD, JPY=X, EURUSD=X, ^TNX, TLT, SHY, ^VIX, LLY, XOM
Ticket2="EURUSD=X"
t_0="2017-07-07"
t_f="2023-07-07"
data1=yf.download(тикер1, начало=t_0, конец=t_f)
data2=yf.download(ticker2, start=t_0, end=t_f)
данные3=данные1
dat=data1['Закрыть']
dat = pd.to_numeric(dat, error='coerce')
dat=dat.dropna()
dat_ret=dat.pct_change(1)
x = np.array(dat.values)
dat_recurrence=dat/max(dat)
xr = np.array(dat_recurrence.values)
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(6.5,3))
# Постройте логистическую карту в первом подграфике
ax1.plot(диапазон(len(x)), x, '#056398', ширина линии=.5)
ax1.set_xlabel('Время')
ax1.set_ylabel(str(тикер1)+'/'+str(тикер2)+' Коэффициент цены')
ax1.set_title(str(ticker1)+'/'+str(ticker2)+' Колебания с '+ str(t_0))
ax1.set_yscale('журнал')
n_end=len(х)
# Создайте рекуррентный график логистической карты во втором подграфике
R = np.zeros((n_end, n_end))
для меня в диапазоне (n_end):
для j в диапазоне (i, n_end):
если abs(xr[i] - xr[j]) < 0,01:
Р[я, j] = 1
Р[j, я] = 1
ax2.imshow(R, cmap='viridis', origin='lower', vmin=0, vmax=1)
ax2.set_xlabel('Шаг по времени')
ax2.set_ylabel('Шаг по времени')
ax2.set_xlabel('Шаг по времени')
ax2.set_ylabel('Шаг по времени')
ax2.set_title('График повторения ' +str(ticker1)+'/'+str(ticker2))
серия = pd.Series(dat_ret).fillna(0)
рис, топор = plt.subplots()
плотность = stats.gaussian_kde(серия)
series.hist(ax=ax, bins=400,edgecolor='black',color='#25a0e8', linewidth=.2,figsize=(6.5,2),histtype=u'step', Density=True)
ax.set_xlabel('Возвраты журнала')
ax.set_ylabel('Частота журнала')
ax.set_title('LogLog гистограмма доходности ' +str(тикер1)+'/'+str(тикер2))
ax.set_yscale('журнал')
ax.set_xscale('журнал')
ax.grid (нет)
plt.scatter(серия, плотность(серия), c='#25a0d8', s=6)
рис, ax2 = plt.subplots()
series.hist(ax=ax2, bins=400,edgecolor='black',color='#25a0e8', linewidth=.2,figsize=(6.5,2),histtype=u'step', Density=True)
ax2.set_xlabel('Возвраты журнала')
ax2.set_ylabel('Частота журнала')
ax2.set_title('Логистологическая гистограмма доходности ' +str(тикер1)+'/'+str(тикер2))
ax2.set_yscale('журнал')
ax2.grid(нет)
plt.scatter(серия, плотность(серия), c='#25a0d8', s=6)
plt.show()
双曲线分布和混合模型
импортировать numpy как np
из matplotlib импортировать pyplot как plt
из статистики импорта
p, a, b, loc, масштаб = 1, 1, 0, 0, 1
диапазон=15
x = np.linspace(-rnge, rnge, 1000)
#Модель смеси для хвостиков
диапазон=15
x = np.linspace(-rnge, rnge, 1000)
#Модель смеси для хвостиков
ш=.999
dist1=stats.genhyperbolic.pdf(x, p, a, b, loc, масштаб)
dist2=stats.cauchy.pdf(x, loc, масштаб)
смесь=np.nansum((w*dist1,(1-w)*dist2),0)
plt.figure(figsize=(16,8))
plt.subplot(1, 2, 1)
plt.title("Журнал обобщенного гиперболического распределения-Y")
plt.plot(x, stats.genhyperbolic.pdf(x, p, a, b, loc, масштаб), label = 'GH(p=1, a=1, b=0, loc=0, масштаб=1) ', color='черный')
plt.plot(x, stats.genhyperbolic.pdf(x, p, a, b, loc, масштаб),
цвет = 'красный', альфа = .5, метка = 'GH(p=1, 0
[plt.plot(x, stats.genhyperbolic.pdf(x, p, a, b, loc, масштаб),
цвет = 'красный', альфа = 0,2) для в np.linspace(1, 2, 10)]
plt.plot(x, stats.genhyperbolic.pdf(x, p,a,b,loc, масштаб),
цвет = 'синий', альфа = 0,2, метка = 'GH(p=1, a=1, -1
plt.plot(x, stats.genhyperbolic.pdf(x, p,a,b,loc, масштаб),
цвет = 'зеленый', альфа = 0,2, метка = 'GH(p=1, a=1, 0
[plt.plot(x, stats.genhyperbolic.pdf(x, p, a, b, loc, масштаб),
цвет = 'синий', альфа = .2) для b в np.linspace(-10, 0, 100)]
[plt.plot(x, stats.genhyperbolic.pdf(x, p, a, b, loc, масштаб),
цвет = 'зеленый', альфа = .2) для b в np.linspace(0, 10, 100)]
plt.plot(x, stats.norm.pdf(x, loc, масштаб), метка = 'N(loc=0, масштаб=1)', цвет='фиолетовый', тире=[3])
plt.plot(x, stats.laplace.pdf(x, loc, масштаб), label = 'Лаплас(loc=0, масштаб=1)', color='black',dashes=[1])
plt.plot(x, смесь, метка = 'Коши(loc=0, масштаб=1)', color='blue',dashes=[1])
plt.xlabel('Возвращает')
plt.ylabel('Плотность журнала')
plt.ylim(1e-10, 1e0)
plt.yscale('журнал')
х = np.linspace(0, 10000, 10000)
dist1=stats.genhyperbolic.pdf(x, p, a, b, loc, масштаб)
dist2=stats.cauchy.pdf(x, loc, масштаб)
смесь=np.nansum((w*dist1,(1-w)*dist2),0)
plt.subplot(1, 2, 2)
plt.title("Хвост обобщенного гиперболического распределения Log-Y Log-X")
plt.plot(x, stats.genhyperbolic.pdf(x, p, a, b, loc, масштаб), label = 'GH(p=1, a=1, b=0, loc=0, масштаб=1) ', color='черный')
plt.plot(x, stats.genhyperbolic.pdf(x, p, a, b, loc, масштаб),
цвет = 'красный', альфа = .5, метка = 'GH(p=1, 0
[plt.plot(x, stats.genhyperbolic.pdf(x, p, a, b, loc, масштаб),
цвет = 'красный', альфа = 0,2) для в np.linspace(1, 2, 10)]
plt.plot(x, stats.genhyperbolic.pdf(x, p,a,b,loc, масштаб),
цвет = 'синий', альфа = 0,2, метка = 'GH(p=1, a=1, -1
plt.plot(x, stats.genhyperbolic.pdf(x, p,a,b,loc, масштаб),
цвет = 'зеленый', альфа = 0,2, метка = 'GH(p=1, a=1, 0
[plt.plot(x, stats.genhyperbolic.pdf(x, p, a, b, loc, масштаб),
цвет = 'синий', альфа = .2) для b в np.linspace(-10, 0, 100)]
[plt.plot(x, stats.genhyperbolic.pdf(x, p, a, b, loc, масштаб),
цвет = 'зеленый', альфа = .2) для b в np.linspace(0, 10, 100)]
plt.plot(x, stats.norm.pdf(x, loc, Scale), label = 'Gaussian', color='purple', Dashes=[3])
plt.plot(x, stats.laplace.pdf(x, loc, масштаб), label = 'Лаплас(loc=0, масштаб=1)', color='black',dashes=[1])
plt.plot(x, stats.cauchy.pdf(x, loc, Scale), label = 'Cauchy(loc=0, Scale=1)', color='blue',dashes=[1])
#Модель Heavy Tail Mix
plt.plot(x, смесь, метка = 'GH+Cauchy Mix(loc=0, масштаб=1)', color='red',dashes=[1])
plt.xlabel('Возвраты журнала')
plt.ylabel('Плотность журнала')
plt.ylim(1e-10, 1e0)
plt.xlim(1e-0,1e4)
plt.xscale('журнал')
plt.yscale('журнал')
plt.legend(loc="верхний правый")
plt.subplots_adjust (справа = 1)
Все комментарии