{
  "fetched_at": "2026-10-24T17:54:09Z",
  "source_url": "https://www.kaggle.com/competitions/case-4-2/data",
  "pages": [
    {
      "name": "rules",
      "content": "This is a page where you can include rules that participants must accept before joining. You may wish to include rules like:\n\n - Don't cheat!\n - Apply yourself!\n - Have fun!",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "data-description",
      "content": "",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "<h2> Краткое описание </h2>\n<p> В этом задании нужно будет найти коинтегрирующие активы, выбрать из них наиболее привлекательные, построить простую стратегию возвращения к среднему, выбрать лучшие бэктесты и проверить как эта стратегия могла бы работать с 2017 года.</p>\n<h2> Детальное описание </h2>\nДля построения и выбора моделей нужно будет использовать data_train.csv файл, либо объект data_train в R. Для комиссий взять коэффициент 0.00025.\n<ol> \n<li>Для всех пар активов посчитать модуль корреляции их разностей логарифмов. Выбрать те пары, у которых это значение больше 0.5</li>\n<li>Для всех пар, которые прошли первичный отбор проделать процедуру Eangle-Granger:\n<ul>\n<li>Если в паре есть хотя бы один актив, который является стационаром, следует отбросить такую пару. Считать актив нестационарным, если гипотеза ADF теста, примененная к логарифмам цен, на уровне 95% не отвергается, другими словами, если p_value &gt; 0.05. В R функция statTest считает p_value (p.value) и статистику (statistic). Для питонистов, есть библиотека rpy, которая позволяет запускать R из питона.</li>\n<li>Cделать две модели линейной регрессии логарифмов цен друг против друга. Выбрать ту, у которой остатки будут иметь наименьшую статистику после применения функции statTest.</li>\n<li>Записать значение минимальное p_value и соответствующих коэффициентов, привиденных к тому, чтобы сумма их модулей равнялась единице</li>\n</ul>\n</li>\n<li>Выбрать те пары, у которых минимальное из p_value меньше 0.1</li>\n<li>Для оставшихся пар реализовать следующую стратегию:\n<ul>\n<li>Построить процесс равный линейной комбинации логарифмов цен с коэффициентами, полученными из процедуры Eangle-Granger</li>\n<li>Посчитать от него индикатор %B, в R он реализован в функции BBands, он будет 4-ым столбцом в результате выполнения этой функции. Параметры функции: длина окна 20, количество стандартных отклонений 0.2</li>\n<li>Если индикатор окажется больше 1, то продать спрэд, это означает, что нужно распределить деньги между активами в соответствии с весами, полученными из процедуры EG, но с обратным знаком</li>\n<li>Если находимся в позиции шорт, то дождаться пока спред не окажется меньше 0. В этот момент закрыть позицию</li>\n<li>Если индикатор окажется меньше -1, то купить спрэд</li>\n<li>Если находимся в позиции лонг, то дождаться пока спред не окажется больше 0. В этот момент закрыть позицию</li>\n</ul>\n</li>\n<li>Выбрать те пары, у которых sharpe ratio больше 0.35. Его можно посчитать с помощью функции sharpeRatio в R, его единственный аргумент это приращения пнл</li>\n<li>Для этих пар провести бэктест по всем данным, но коэффициенты оставить посчитанными из трейна. </li>\n<li>Сложить пнл этих бэктестов, поделить на первое значение, взять подмножество с 2017 года, вычесть первое значение. Подмножество этого действия лежит в файле train.csv c 2017 по 2018 год, подмножество с 2018-01-01 по 2019-04-23 этого результата есть ответ на эту задачу. </li>\n</ol>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}