Шарп моего Шарпа

02.04.2019 (c) Vitas Ramanchauskas, www.SpyTlt.com

В продолжение предыдущей заметки про проблемы с коэффициентом Шарпа. Можно сделать забавное (и, как водится, не очень приятное) открытие, проделав следующий простой эксперимент. Будем генерировать серии нормально распределенных случайных чисел с заданными μ и σ , так, чтобы это было похоже на результаты некой торговой системы или на динамику цен акций. И для каждой такой серии посчитаем коэффициент Шарпа. Условия получаются намного более "тепличные", чем с реальными результатами торгов, ведь, во-первых, распределение заведомо нормальное, а значит, нет выбросов и всякого рода "черных лебедей", во-вторых, оно стационарное, параметры его не меняются и мы знаем и матожидание, и дисперсию.

Для каждой такой серии посчитаем среднее арифметическое, оно же среднее выборочное, но ни в коем случае это не матожидание, полученное значение можно только использовать для оценки матожидания, среднеквадратичное отклонение и, разделив одно на другое, коэффициент Шарпа. Отметим, что истинные значения матожидания μ и среднеквадратичного отклонения σ мы явно задали, мы их знаем, а значит и знаем теоретический коэффициент Шарпа для такого источника данных. Но есть разница между теоретическим значением вообще и тем, что получается в конкретной выборке.

Кстати, это очень распространенная ошибка путать среднее выборочное с матожиданием. Распределение вероятностей, матожидание, дисперсия определяются физикой системы. Например, если вы собрались поиграть в неидеальную монетку на деньги, то теоретически можно ни разу не бросив монету, а только исследовав ее физические свойства сказать вероятности выпадения орла и решки и, соответственно, матожидание вашей игры. Оно определяется монеткой, а не процессом ее бросания и не результатами конкретной серии бросков. Если вы бросили монетку N раз, это получилась выборка, матожидание в ней "проявилось", если можно так сказать. Но среднее выборочное совсем не обязательно совпадет с матожиданием и даже совсем не обязательно будет близко к нему! На практике мы имеем дело с выборками и по выборочным средним оцениваем матожидание, которое обычно никогда не известно.

При этом мы интуитивно ожидаем, что, в силу закона больших чисел, чем больше выборка, тем ближе среднее выборочное к матожиданию. Что вообще говоря неверно. Есть распределения, у которых такого схождения вообще не происходит, да и у обычного нормального распределения, если дисперсия велика, требуются выборки большого объема, сильно больше чем может казаться.

И тут есть три момента, все как водится плохие.

  1. Я это буду повторять слишком часто и может надоем, но, увы, это главная проблема финансовой математики: рынок нестационарен, он меняется. А [почти] вся матстатистика написана для стационарных процессов.
  2. В большинстве расчетов принято использовать нормальное распределение. Оно удобное, оно хорошо изученное, есть одна проблема, реальные данные в него не укладываются. "Тем хуже для реальности", обычно отвечают экономисты и продолжают использовать классический матаппарат.
  3. В физике, да и в обычной жизни мы обычно имеем дело с ситуациями, когда матожидание большое, а дисперсия маленькая. В финансовой математике, если смотреть на результаты отдельных сделок или динамику цены актива, обычной является ситуация когда σ больше матожидания, причем часто намного больше, например, на порядок.

Сейчас поговорим только о третьей проблеме и убедимся, что ее одной вполне хватит, чтобы отравить нам жизнь.

Сгенерируем несколько серий и посмотрим, что получается с нашими оценками, насколько они стабильны и насколько они отличаются друг от друга и от известного в данном случае теоретического значения. Повторим этот опыт несколько раз для серий разной длины. Ниже представлены полученные результаты.

Интуитивно кажется, что на совсем маленьких выборках результат может "плясать", однако стоит взять выборку побольше и результаты будут стабилизироваться возле своих теоретических значений. И вряд ли тут нужны слишком большие выборки, логично? Давайте посмотрим. Напомню, что при торговле каждый день в году получается около 250 сделок. 10 тысяч результатов - это 40 лет торговли! Выбранные μ и σ примерно соответствуют Шарпу 1, если считать его как обычно.


mean=0.13 sigma=2 N=250

AveGeoMeanMedianSigmaSharpe
-0.0400279316506102%0.1319114210659460.08361581826765461.944040033769560.604387737859408
-0.00394225880729904%0.2212225385610140.05804774395330992.00036437061564-0.535779732040363
-0.260019824287139%0.08629692049107980.2436554442931621.9117167964754-0.228621081957377
0.10711755789885%0.248226407741751-0.009130258885192162.119846189166570.0929703355359378
0.159673330157872%0.2351166246895040.3416468519286182.072929882429340.78301782589901
0.268325966927341%0.2250494245132530.3083556266700331.976263551022190.905219734939577
0.308599225320738%0.1923010959956360.3043856759706112.03521937996271.86550976731626
0.115140908809352%0.1157911411763140.04576818718753832.004838247927492.62943428626842
-0.00810557467466611%0.10493888075420.2309285918508552.065086978329391.77039507799071
0.375453006746573%0.1529660386657260.09602845178175732.095630042788050.981216499938074


mean=0.13 sigma=2 N=1000
AveGeoMeanMedianSigmaSharpe
0.092495146231375%0.1730771548369830.05688812989514751.961767560812251.16411200836878
0.0446415847681569%0.1158060762086610.2236452820467941.982875659196660.511877903732339
0.053661789483872%0.038228269895780.1475189100158491.915885750779960.954302035548123
0.17528197211385%0.1839452298048340.2565785100649991.988665977005622.17129293323601
0.00433522398817221%0.1586510482974230.1306518909420342.008345403884310.526205589233456
0.161171428520301%0.107387455619130.08978403795716611.982683745574951.38264306427259
0.10530831095501%0.1534439946417990.1268265491712032.031432783287021.60817737532205
0.0490310941991368%0.2162508026605970.1224484729468482.003369130756081.34082261650457
0.119590732157637%0.1603715560367480.2191460639137621.917649587636511.71218915776415
0.0912770829382126%0.1380174423650260.1143770088373751.934687747124460.623847188999431


mean=0.13 sigma=2 N=5,000
AveGeoMeanMedianSigmaSharpe
0.0777502609863534%0.1067721411184720.2033466468319072.009209896601580.979769965902461
0.138146996285959%0.198408029275790.1035563439270032.000424748852441.06501271509713
0.110404125823571%0.1359290523550980.08918901878375921.989684161527490.873685455314604
0.147662330886145%0.1597351827494210.1137442091722841.9803881782920.872309703605889
0.135498059493089%0.1356444292604780.07412051383274492.006397987606011.0090003091382
0.101218571699735%0.1060409541529210.1098594585749782.022938207151720.986810015888036
0.143968599632949%0.1079263033785010.09542788140972281.99713071829440.962868493764891
0.112706074800428%0.08015190688162340.1226875185005942.014929299265611.20123048955261
0.0969110312331489%0.07608469639050850.1488423708128452.008834060641580.754602700846554
0.0993138478473821%0.1577290841220230.1693990243924321.978906468591190.945114901392852


mean=0.13 sigma=2 N=10,000
AveGeoMeanMedianSigmaSharpe
0.0861628550176352%0.1415469375987310.1635383228885012.0088271891051.16467239232252
0.0998454841732999%0.129196321225580.1100426164673682.002466179347150.986271932591891
0.110631647983994%0.1179834482077380.1337271080281361.995840158588690.933188758789311
0.112463406460894%0.127861956152220.1444898483540262.016316084584370.791114945774376
0.134466877793815%0.1421756459793470.1049262037420342.013343845194151.33734309290808
0.116973681194743%0.1273926110929840.128556104207991.996869305821381.14248709892606
0.101259200052195%0.1082021415316090.1121091461087442.003775257436411.01986333361933
0.10496421288213%0.1341272638964720.1149365372345351.996129837527230.995573809667884
0.1478988942754%0.1293718623770080.1805570431191481.999611351578480.946638912432344
0.133326765663511%0.1341870022088850.1134382750743942.004610670205491.20770581880788


mean=0.13 sigma=2 N=30,000
AveGeoMeanMedianSigmaSharpe
0.0907738818884729%0.1351082796161270.1171705822269082.020223110043870.971635073578804
0.124815143609402%0.1202916330425890.1283655637993472.000417369044421.2437553677274
0.134012201696621%0.1177407960785070.1479737761715032.010585024942581.08272428520173
0.116151981840518%0.1428854593677910.1209376574597191.995451651345811.04923180172824
0.106325516701045%0.1222356685044280.1405422960724772.007735231801160.884787470922412
0.118819934741676%0.1373293901163850.1337272347166061.999737318281551.16965234568068
0.101667845641695%0.1238535947688170.1335251808050171.976621549978331.06438256582095
0.121217971935739%0.1395787821321710.1228224318419691.99632967151490.931523242049137
0.0892856400487085%0.1252456268694810.1122510490196811.991922207792410.90072894485401
0.102357819179111%0.109522924506960.1140794144447431.993350957848591.03612109782488

Как видите, ужас ужасный. О какой-то стабилизации результата можно говорить только, когда серии очень длинные. Но на длинных сериях проблема другая, на них наверняка проявится нестационарность рынка, если вы захватываете период в десятилетия и туда попадают и кризисы и спокойные годы и годы эйфории, наивно рассчитывать что все это время статистические характеристики остаются неизменными. Тут уже нестационарность будет мешать стабилизации результатов. Усредняя за большой период, вы мешаете все в кучу и меряете "среднюю температуру по больнице".

Роль нестационарности можно показать на таком примере (читал в какой-то умной книжке, не перепроверял, но охотно верю). Допустим, вы посчитаете статистику результатов SP500 от конца дня к концу следующего, в частности, посчитаете эксцесс. Эксцесс можно использовать как грубую оценку толщины хвостов распределения и насколько оно далеко от нормального. За 60 лет данных много, по идее на такой большой выборке мы должны получать некое достаточно стабильное значение.

А теперь проделаем один трюк. Как известно, 19 октября 1987 случился в Америке веселый понедельник, когда индекс SP500 обвалился на 20.5% за день (внутри дня падение было еще сильнее). На следующий день рынок вырос на 5.3%, а еще на следующий - еще на 9.1%. Вот возьмем и объединим эти три дня в один, как будто это была одна торговая сессия длиной в три дня. Посчитаем снова коэффициент эксцесса за 60(!) лет. После манипуляции всего с тремя днями из 60 лет, причем заметьте, мы не выкинули убыток, мы просто склеили дни, перескочив в конце дня 19го в конец дня 21го и взяв в качестве цены закрытия цену 21го. Так вот. После этого эксцесс уменьшается В ТРИ(!) раза.

Вот и верьте после этого статистике..

Забавно, но можно посчитать коэффициент Шарпа коэффициента Шарпа ☺. И он даже имел бы некоторый смысл, с его помощью можно оценить насколько стабилен получаемая оценка, насколько ей можно верить.

Таким образом, ни среднее арифметическое, ни среднее геометрическое, ни коэффициент Шарпа на небольших и даже на довольно больших выборках не являются стабильными величинами. Они подвержены очень сильному разбросу. На очень больших выборках, которые можно получить посредством бэктестов, вылезает проблема нестационарности и снова ни о каких стабильных значениях речи нет. Эта проблема, кстати, крайне затрудняет сравнение систем. Если коэффициент Шарпа сильно плавает, то сравнение может оказаться совершенно некорректным. Чтобы уменьшить эту проблему, желательно сравнивать коэффициенты Шарпа не только на одинаковом таймфрейме, но и за один и тот же промежуток времени, это несколько ослабит проблему.

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

Меня тут упрекнули, что блог получается весьма депрессивный, каждый пост выдержан в стиле "все хуже, чем вы думали". Но я считаю, что о проблемах знать надо. Я не пессимист, я - довольно хорошо информированный оптимист ;), чего и вам желаю. Некоторый позитив в виде того, как со всем этим бороться и как жить в таких условиях тоже будет. Видимо уже в книге, которая, надеюсь, скоро выйдет. Собственно, статьи в этом блоге - это ее фрагменты.


Вопросы и обсуждение - в телеграм-группе SpyTlt.