Блог им. Kot_Begemot |Ухмылки рисков


Если мы возьмем некоторый базовый актив, представленный, скажем, распределением вида:

Ухмылки рисков
Распределение приращений базового актива за 1 период, СКО = 0.63, МОЖ = 0.499




И попробуем оценить его распределение, скажем,  за 20 периодов, то получим следующее:

Ухмылки рисков

( Читать дальше )

Блог им. Kot_Begemot |Open Source : Lua - MatLab Connector (3)



Краткое описание :

Библиотека Matlab2Lua  позволяет интегрировать Lua скрипты и Маtrix Laboratory Engine.


Полное описание :

Библиотека позволяет Lua и Матлаб обмениваться данными при помощи функций :

lua variable = Get( string Matlab varname );  — получение переменной из среды матлаб по имени, поддерживаются Double Array, Cell Array of Strings, Double Value, Integer Value, String Value. Возвращает -1 в случае неудачи.

int Eval ( string MatlabСommand ) — передает команду в MatLab Command Line, в качестве переменной типа string; возвращает -1 в случае неудачи, и 1 в случае успеха.

int PutVal( string Name, string/number Value) — передает в Матлаб значение Value типа string или number под именем Name. 1- успех, -1 — неудача.

int PutDouble( string Name, table T) — передает в Матлаб под именем Name таблицу Луа, заполненную численными значениями. Ответ — аналогичный.

int PutCell( string Name, table T)  — передает в Матлаб под именем Name таблицу Луа, заполненную строковыми или численными значениями, подлежащими преобразованию в строки. Ответ — аналогичный.


( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Блог им. Kot_Begemot |Интеграция Lua и С++ (2)


Обмен данными между Lua и Сpp осуществляется через Lua-стэк, то есть через специальным образом структурированное (по принципу Last In — First Out) пространство. 


Интеграция Lua и С++ (2)

Иллюстрация процесса добавления переменных в Cтэк (Push) и извлечения переменных из Стэка (Pop).

Иными словами, Lua стэк — это одномерный массив переменных (список, строка) с прямой (от 1 до n) индексацией.



Заполняется стэк командами lua_push (С-side) :

void lua_pushnumber (lua_State *L, lua_Number n);
const char *lua_pushstring (lua_State *L,  const char *s);

и другими. 


Новой переменной в стэке Луа длинной n автоматически присваивается индекс [n+1] или [-1], где n+1 — абсолютный индекс переменной, а -1 — индекс новой переменной относительно конца (!) стэка. 




Доступ, к переменным, соответственно осуществляется функциями lua_to (C-side) :

lua_Number lua_tonumber (lua_State *L, int index);
const char *lua_tostring (lua_State *L, int index);
где L — указатель Lua-стэка, а index — абсолютный или относительный индекс переменной в стэке.

( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Блог им. Kot_Begemot |Интеграция MatLab Engine и С++ (1)

В сложных вычислительных задачах (или просто при нежелании программировать на Lua, Cpp и т.д., а пользоваться более высокоуровневыми инструментами разработки), незаменимым оказывается API интерфейс Матлаба реализованный в качестве Active-X COM Automation Server.  Для его реализации на языке Си существует специальная библиотека libeng.lib, позволяющая языкам Си, С++, Фортран обмениваться данными и пользоваться всеми ресурсами Матлаба (обычно это обработка видео, автопилоты, ИИ, нейронные сети и т.п.).


Поэтому, в качестве изучения возможностей, попробуем реализовать простейший проект обмена данными и вызова функций Матлаб со стороны Си++ при использовании CodeBlocks и MinGW64.



  • Запуск интерфейса Матлаб

Чтобы адресовать все внешние процессы к единому процессу Матлаб, а не запускать Engine для каждого процесса в отдельности, 
запустим «двигатель» матлаба внутренней командой :

server=actxserver('matlab.application.single'); server.Execute(' enableservice (''AutomationServer'', true)');


( Читать дальше )

Блог им. Kot_Begemot |Нейронные сети и ученье о данных


Когда вы занимаетесь искусственным интеллектом, то вам и в голову не приходит использовать нейронные сети! Да… такова их внутренняя сущность — к интеллекту они не имеют ровным счётом никакого отношения. В своё время NN (нейронные сети, Neural Networks) прочно ассоциировались со спиновыми стёклами — аналогом магнитной плёнки — на которую при желании можно записать ту или иную информацию. Да… в то время ещё не было ученых… как бы это правильнее перевести… ученых по данным… и в литературе часто можно было встретить выражение «образец, хранящийся в памяти сети». Другими словами, с самого своего рождения нейронные сети ассоциировались совершенно не с интеллектом, а с обычным хранилищем, своеобразной библиотекой.


Всё «обучение» нейронной сети, в те времена, сводилось к тому, чтобы загрузить в её память наиболее репрезентативную выборку образцов, чтобы с ней, в конце-концов, не случилось конфуза и она не смогла бы с завидной регулярностью идентифицировать афроамериканцев как горилл, как это случилось у Data Scientist'ов из Google Photos. Поэтому, помимо школьной  алгебры мы, как квалифицированные специалисты, изучали ещё и прикладной предмет, чтобы в любой момент, когда практика не согласовывалась бы с теорией, отметать… практику.

( Читать дальше )

Блог им. Kot_Begemot |Критерий Келли через нормальное распределение



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


Для примера возьмём игру с нулевым E, в которой выигрыши распределены равномерно, с вероятностью 50/50 и представлены множеством {+50%,-50%}. За некоторое количество повторений, например за два раунда, мы будем иметь следующее распределение финансового результата:

  • 25% случаев — выигрыш 125% капитала до 2.25 (два выигрыша подряд)
  • 25% случаев — проигрыш 75% капитала до 0.25 (два проигрыша подряд)
  • 50% случаев — проигрыш 25% до 0.75 (один выигрыш и один проигрыш)

Рассчитав статистические моменты этого распределения легко убедиться, что средний выигрыш, как это положено, будет равен нулю, а наиболее вероятный вариант (мода) будет представлен проигрышем 25% капитала. Теперь, если варьировать ставку, можно убедиться, что с ростом ставки математическое ожидание по крайней мере не снижается, а мода, то есть наиболее вероятный исход — падает.

( Читать дальше )

Блог им. Kot_Begemot |COM интерфейс МаtLab в LUA

Так уж вышло, что пару дней назад я познакомился с терминалом QUICK и языком его скриптов — LUA

   Естественно, сразу возникла необходимость передать полный контроль над этим двумя сложнейшими приложениями чему-то более простому и понятному, например Матлабу, чтобы нажимая разноцветные кнопочки «Обыграть рынок» и «Что там опять у волатильности?» оставить конечному пользователю, то есть мне, только наслаждение от наблюдения за происходящим.


     Теоретически, для этого надо нанять менеджера COM из LUACOM.dll и дать ему в управление пару простых исполнителей — объектов LUA, чтобы высшее руководство МатЛаба могло эффективно распоряжаться ресурсами в иерархии 

 Руководство МатЛаб -> менеджер интерфейса  COM -> исполнитель  объект LUA 


       Но в силу каких-то неведомых причин (от сборки dll, до сборки MS Windows и даже предустановленного железа) сделать по теории управления с ходу не получилось, поэтому была использована альтернативная схема:

( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Блог им. Kot_Begemot |Создаём рынок волатильности по теории оптимальной улыбки (Market Making Volatility by STO)


Сегодня мы будем выступать в качестве поставщика бесконечной ликвидности по опционам. То есть мы будем безотказно играть в игру с нулевой суммой так, чтобы, как минимум, не проиграть, а это возможно только в том случае, если мы будем продавать и покупать волатильность по цене, соответствующей седловой точке в игре покупателя и продавца, то есть по цене GTO (game theory optimal). Иными словами, мы будем заниматься непосредственно pricing'ом опционов, назначая цены put'ам и call'ам, таким образом, чтобы ни одна стратегия и ни один набор случайных, стохастических стратегий не мог получить положительное преимущество при игре с нами.

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

Создаём рынок волатильности по теории оптимальной улыбки (Market Making Volatility by STO)
Рис.1. Распределение логарифмических приращений цен акций ПАО Газпром и их аппроксимация логистическим распределением.


или распределению Лапласа:

( Читать дальше )

Блог им. Kot_Begemot |IV и RV - вопрос равенства

Вопрос:

Проведена симуляция покупки опционов Call за день до экспирации по страйкам +0%, +2%, +5%, +8% от центрального  — по прогнозным ценам и в целях проверки модели справедливого ценообразования.

IV и RV - вопрос равенства



Ev[ +0%] и Ev[ +2%] располагаются на границе доверительного интервала, но по разные стороны.
Требуется ответить на вопрос IV=RV?  Уместен ли t-test?

Блог им. Kot_Begemot |Обобщённый подход к диверсификации рисков

Дополнение к серии «Портфельная оптимизация как бустинг на слабых моделях»


  • Обобщённая проблема

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

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


Обобщённый подход к диверсификации рисков 

где R — коэффициент взаимной корреляции — её решение, естественным образом, будет располагаться в области максимально отрицательной статистической ошибки.

( Читать дальше )

....все тэги
2010-2020
UPDONW