Модель систематически недооценивала экстремальные режимы рынка, и я принудительно добавил веса на важные для меня режимы рынка.
Затем задумался, что именно оптимизатор пытается сделать, почему он игнорирует режимы которые для меня важны.
Модель несовершенна, и ее фиттинг всегда будет с ошибками. Вопрос куда именно попадут эти ошибки. Делая фиттинг по правдоподобию мы (неявно) говорим оптимизатору «запихни эти ошибки модели куда нить, на свое усмотрение». И оптимизатор, на свое усмотрение, куда нить эту ошибки и запихивает. Часто, делая наоборот от того что нам требуется, давая высокую точность на режимах которые нам совершенно бесполезны, и жертвуя режимами которые нам очень важны.
Веса, это один из способов сказать оптимизатору куда можно поместить ошибки, указать ему явно чем можно пожертвовать. Например, если нам важны экстремальные режимы, можно сказать об этом оптимизатору «используй взвешенное правдоподобие, с весами х2 для точек <0.01 и >0.99 квантилей».
Но, веса, таки, это все равно достаточно неточно и условно, нужно как то подобрать а) какой тяжести вес и б) куда именно его положить. Это сложно, можно ошибиться.
Эквити — совершенно точно и четко говорит оптимизатору что важно а что нет, куда можно запихнуть ошибки, чем можно пожертвовать а чем нельзя. Эквити пожалуй предпочтительней правдоподобия.
На практике, мне кажется нужно использовать оба варианта, поставить задачу по эквити часто сложней, и веса могут быть проще и быстрее.
Возможно что то вроде этого имеют ввиду говоря что «использование теории вероятности — возможно не самый лучший способ для алготрейдинга».
Собрать из того что торгуется, наверно как комбинацию разных страйков евро опционов :).
в итоге — хуже ли фитить правдоподобие чем финрез? — в теории правдоподобие лучше, потому, что кумулятивное правдоподобие очень физично — оно отражает накопленную информацию за период, и [ко]варсвоп это natural strategy, а во финрез — это всё-таки эффект управления ))))
на практике — фитить «вообще всё» под финрез — сложно и методологически не правильно, оптимизатор очень полюбит точки, где «пришло много и быстро» и загонит параметры так, чтобы было 2-3 удачных трейда, а остальное время ничего не делалось
опять же — а как именно оптимизатор недооценивает «то, что вам нужно»:
— смещенно? — это проблема модели и стоит что-то сделать с моделью
— не смещенно, но все равно не нравится как получилось? — дело в стратегии, там где «всё не так» — ваша позиция оказывается ковариирована с dPrice не так, как вам подсказывает ваше чувство прекрасного (personal utility function)
разумеется, вам бы хотелось, чтобы размер позиции устойчиво и положительно ковариировал с (будущим) dPrice, правильно?
к чему весь этот спич:
— чем меньше оптимизатор (который фитит ценовой процесс) знает о вас тем лучше, он занимается информацией, а не вашим чувством прекрасного ))))
— результат модели надо в том числе проверять на несмещеность не только в среднем, но и сделать несколько бакетов по какому-нибудь из параметров — и посмотреть, а как оно в частности в режимах А и Б, может получится, что модель смещенная в частностях, но в среднем всё как бы ок — это проблема
— стратегия — это уже следующий уровень. воспринимайте ваш финрез как процесс:
dResult_next = Position_current(info_current) * dPrice_next
dPrice_next = dModelPrice_next + error
или же
dResult_next = Position_current(info_current) * dModelPrice_next + Position_current(info_current) * error
в таком случае — ваш суммарный рез это вобщем-то коварианс Position (стратегии) и dModelPrice_next (модели) + коварианс Position и error
коварианс стратегии с моделью это \mu вашего портфеля, а с ошибкой — \sigma вашего портфеля, и вот тут становится понятно, что error лучше иметь не смещеный (и вообще не зависимый от dModelPrice_next и Position_current) иначе у вас и результат будет каким-то сложным гарч-процессом — а зачем?
объяснил как смог )))) вообще всё написанное пришло из хфт/маркетмейкинга/варсвопов, как это применять в вашем случае — ну если вы планируете нажимать кнопку раз в месяц — то по хорошему и модель надо брать с таймфреймом нажимания кнопки — месяц и относительно этой модели выстраивать оптимальную стратегию (правила нажимания кнопки раз в месяц), этакий slow-hft-style )))
Насколько я понял — сделав целью модели финрез можно получить оверфиттинг.
И лучше сделать универсальную модель поставив целью правдоподобие. Модель, не зная что от нее требуется, не сможет это искуственно сфабриковать. И поэтому ошибки модели будут лучше видны и ее будет легче проверить на разных режимах (разных фрагментах данных).
И лучше разбить трейдинг на две части — универсальную модель которая ничего не знает о конечной цели, и стретегию которая использует эту модель. Вместо того чтобы смешивать вместе.
Кнопку, да, я нажимаю раз в неск недель. Если цены меняются и нужно сделать перебалансировку портфеля :)
если вы зафитили процесс:
А) на дневных данных и построите распределение на месяц вперед (20-22 шага)
Б) на месячных данных и построите распределение на месяц вперед (1 шаг)
вот правдоподобнее окажется А или Б? у меня обычно Б получалось
То что MCMC подсматривает вперед в этом случае думаю можно игнорировать, это «подсматривание» сильно влияет на 1 день вперед, но на 21 днеь вперед эффект думаю будет мизерный, так что расчет праводподобия должен быть очень точным.