Комментарии
- В рамках БШ арбитраж не возможен. Безрисковые прибыльные комбинации су...
q-trader - не уверен в отсутствии арбитража при данной схеме вычисления стоимости...
Руслан - Работа предстоит огромная
EVVA - Хорошо пишете, жизненно. Все-таки, для того, чтобы делать по-настоящем...
Харита - Рекомендую также ознакомится с продолжением темы http://q-trading.ru/i...
q-trader
Видеоурок по MATLAB - Оптимальный рычаг по историческим данным |
30.08.2010 08:00 |
Выбор размера рычага – крайне важная задача в управлении капиталом, поскольку именно рычаг оказывает определяющее влияние на возможные доходность и риск вложения денег. Существуют разные подходы к оптимизации рычага. Можно, например, использовать обобщенные статистические показатели торговой системы/инструмента, такие как средняя доходность, волатильность и т.п., подставлять их в специальные формулы и таким образом находить оптимальный рычаг. Здесь будет продемонстрирован другой, более прямолинейный подход к решению этой задачи – непосредственная оптимизация на истории котировок. В этом случае не требуется знание формул, но необходимо знание софта. Оптимизация размера рычага решается в MATLAB буквально на лету. Для примера воспользуемся дневными ценами закрытия по паре EUR/USD за 2002 год (файл можно скачать из вложения в конце урока): с 7 января по 27 декабря – 51 полная торговая неделя или 255 торговых дней. В тот период евро демонстрировал очень бодрый восходящий тренд – посмотрим, как его можно было увеличить при помощи правильно выбранного размера рычага.
(Рекомендуется смотреть в полноэкранном режиме) Комментарии Основные выражения из командной строки:
В этом видеоуроке использовались следующие функции:
Метод 'Periodic' означает, что расчитываются простые линейные доходности. Если пропустить эту входную переменную, по умолчанию будут расчитаны непрерывные логдоходности. Рассмотрим более подробно функцию fminbnd(). Для поиска оптимального рычага (L) применялось следующее выражение: L=fminbnd(@(L)-sum(log(1+p*L)),0,-1/min(p)) Особенностью оптимизатора MATLAB является то, что он по умолчанию ищет минимум функции. Нас же интересовал максимум – максимальный рост при оптимальном рычаге. В таких случаях перед целевой функцией, sum(log(1+p*L)) в нашем случае, ставится знак минус. Минимум такой функции соответствует максимуму исходной. Конструкция @(L) указывает MATLAB, что должны перебираться значения переменной L, которой мы обозначили рычаг, чтобы найти то единственное, при котором достигается максимальный рост капитала. После целевой функции через запятые указываются нижняя и верхняя границы возможных значений рычага. Нетрудно убедится, что верхней границей поиска является абсолютное значение числа обратного к минимальной доходности, поскольку при таком значении рычага происходит полное разорение. Более подробно об этом и целевой функции можно почитать в статье «Выбираем оптимальный рычаг». После вычисления оптимального размера рычага – 19.77 – мы нашли прирост капитала при торговле по тренду с таким рычагом. Он составил 379% годовых (или 0.62% в день). Это очень внушительная цифра. Для сравнения: рост самой пары EUR/USD в тот период – 16.38% в год. Однако из построенного графика роста капитала при оптимальном рычаге (синяя линия) можно было наглядно убедиться в больших рисках такой стратегии. Просадка достигала 50% от начального депозита. В том же окне был построен график для половинного – 9.88 – рычага (зеленая линия). Он продемонстрировал более «гладкое» поведение с меньшим ростом, но и с меньшей просадкой. Графики в MATLAB можно строить двумя способами: при помощи нажатия соответствующей кнопки на рабочем пространстве (Workspace) и из командной строки. Второй способ удобен, когда нужно построить график не исходных данных, а какого-либо их преобразования. В нашем случае таким преобразованием было воздействие рычага на доходности: p*L. Команда hold all позволяет отображать сразу несколько графиков в одном окне. Итак, мы убедились, что оптимизация рычага в MATLAB осуществляется очень быстро и беспроблемно. На практике даже нет нужды вводить функции из командной строки – можно просто сохранить их в текстовом файле и при необходимости «копипастить» в MATLAB. Например, вы можете подгрузить историю доходностей по собственной торговой системе или интересующему вас инструменту в MATLAB, обозначить эти доходности сразу при импорте или потом в Workspace буквой p и копировать fminbnd(@(L)-sum(log(1+p*L)),0,-1/min(p)) в командную строку. MATLAB выполнит функцию, и вы узнаете значение рычага, при котором достигался максимальный рост. Можно и еще более автоматизировать рутинные задачи, создавая для их решения пользовательские функции, но это уже тема для отдельного урока. © q-trader
|
Комментарии
Допустим:
1, 2, 3, 4, 5
Применяя к нему функцию накопленной суммы получаем новый ряд цифр. Он формируется по так:
1, 1+2, 1+2+3, 1+2+3+4, 1+2+3+4+5 =
1, 3, 6, 10, 15
Суммы последовательно накапливаются. Осюда и название
RSS лента комментариев этой записи