Русский
Русский
English
Статистика
Реклама

Торговля на бирже

Инструменты для алготрейдинга на Python. SMA Полосы Боллинджера на акциях Северстали код готовой стратегии

31.05.2021 18:12:13 | Автор: admin

Внимание! Если данная статья наберет 1000 положительных голосов, то я организую хакатон по алготрейдингу с ценными призами.

Предыдущая статья о "Расчете дневного изменения цены"

Когда я писал прошлую статью (она была первой из цикла) я не предполагал, что читатели разделятся на 2 категории:
1. Те, кто верят, что в алготрейдинг
2. Те, кто верят, что я шарлатан

Для обоих групп я напоминаю, что цель алготрейдинга - это увеличить вероятность получить прибыль от сделки
Или же, как говорят в "теории игр" - сделать математическое ожидание от игры положительным

Поэтому, предлагаю аудитории договориться о следующем:
1. Если ваш комментарий несет научный смысл, то пишите его под постом в Хабре.
2. Если ваш комментарий несет дискуссионный посыл, то прошу задавать его в специально созданном канале в телеге:

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

SMA (Simple Moving Average, Скользящее среднее) - индикатор, основанный на подсчете среднего значения цены закрытия ценной бумаги.

Для тех, кто не знает что такое SMA, приведу алгоритм его подсчета:
1. Взять цену закрытия "close" ценной бумаги за период от t1 до t2 и отсортировать ее от t1 к t2.
2. Взять таймфрейм из первых N значений цены close.
3. Посчитать среднее арифметическое значение таймфрейма (simple average).
4. Сдвинуть таймфрейм вперед на одно значение (происходит moving) и выполнить пункт 3
5. Пункт 4 проводить до тех пор, пока таймфрейм не дойдет до точки t2

Отрисуем график SMA (N=20) для цены close акций Северсталь (тикер CHMF) за 27 мая 2021г.:

По графику видно, что SMA является сглаженной версией цены Close с временным лагом в 20 периодов.

Полосы Боллинджера (Bollinger Bands)

В 1980х годах Джон Боллинджер предложил рассчитывать не только SMA, но и STD (standart deviation, среднеквадратическое отклонение). Таким образом, мы будем видеть не только график изменения средней цены, но и ее волатильность.

Обычно, значения std устанавливают равным 2. В таком случае, с вероятностью в 95% следующее значение цены close будет лежать внутри полосы Боллинджера и только в 5% случаях оно будет выходить из этой полосы.

В тех местах, где цена close близка к нижней грани полосы Боллинджера, стоимость акций считается низкой. И, наоборот, если цена close близка к верхней грани полосы Боллинджера, стоимость акций считается высокой.

И тут у трейдера срабатывает чуйка: покупаем на низах, продаем на хаях (никак не наоборот).

Весь код с использованием полос Боллинджера привел на Google Colab. Данная стратегия принесла +1,7% за 1 день (но это не точно).

В следующей статье поговорим об RSI

Подробнее..

Доходность портфеля инвестиций а все ли так просто?

03.06.2021 12:19:11 | Автор: admin

Хороший бухгалтер может раздуть баланс на 30% (с)

Добрый день, уважаемые хаброжители, имеющие брокерские счета или просто интересующиеся финансами и/или инвестициями. Раз вы видите эту статью, значит вы наверняка подписаны на Финансы в ИТ, а значит у некоторых у вас, вероятно, уже есть открытые у различных брокеров индивидуальные инвестиционные счета (ИИС). А значит скорее всего у вас возникал резонный вопрос а какова доходность моих инвестиций? Вопрос, как оказалось, не такой уж и простой.

Дисклеймер: в статье речь идет исключительно об инвестировании, а не активном трейдинге. Так же за скобками оставляем налоговые льготы по ИИС

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

Поэтому для обычного депозита не важно, когда и какую сумму вы на него положили и как пополняли - %-ставка фиксирована и выражена в привычных нам всем процентах годовых

Если же мы говорим про брокерский счет, то тут не все так просто.

  • цены на финансовые активы непрерывно меняются;

  • инвестор может регулярно производить перебалансировку портфеля;

  • возможно пополнение счета и частичный вывод средств в любой момент (что для депозитов очень часто проблематично сделать без потери процентов);

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

  • есть комиссии брокера, которые могут измеряться как в % от сделки, так Обслуживание счета в месяц (с)

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

Конкретно у меня возникла очень простая задача. В течение определенного времени я заводил свободные средства на ИИС и покупал различные активы. Сейчас же захотелось оглянуться назад и понять, а не было бы выгоднее просто положить деньги в банк на депозит под фиксированный процент? Самый простой способ ответить на этот вопрос посчитать доходность своих вложений в ценные бумаги в % годовых. Почему бы не воспользоваться цифрами, которые предоставляет брокер в личном кабинете? - может возникнут резонный вопрос у читателя? Вопрос, безусловно правильный, и если бы ответ на него был таким простым, то вы бы сейчас не читали данную статью)

Конкретно мой брокер в личном кабинете показывает следующую информацию:

  • Доходность к средним активам

  • Финансовый результат за выбранный период.

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

отношение финансового результата за выбранный период к средним активам за этот же период

Вроде все понятно? Или нет? Что такое средние активы? Варианты определения средней величины активов могут быть различные. Простейший вариант средней величины активов это среднее арифметическое от их стоимости на начало и конец периода (сомнительный вариант). А например в п.4 ст.376 НК РФ указан несколько иной порядок определения стоимости активов (в контексте расчета среднегодовой стоимости имущества, что не совсем релевантно, конечно):

01.01+ С01.02+ ... + С01.12+ С31.12)/ 13

где С01.01 стоимость актива на 01.01, 01.02, , 01.12, 31.12 текущего года соответственно

При этом мне лично кажется более корректным другой вариант, который является предельным случаем предыдущего:

i+ + Сj)/ (j-i)

где Сi стоимость активов на каждый день рассматриваемого периода, а [i; j] это тот самый рассматриваемый период.

Математически это тождественно значению средневзвешенная по сроку сумме:

Давайте сравним подходы на игрушечном примере:

Дата

Количество бумаг

Цена

Действие

01.01.2020

1

100

Покупка

01.02.2020

3

99

Покупка

01.05.2020

102

Хотим узнать доходность.

Наша прибыль за период с 1 января по 1 мая очевидна: 4*102 (100 + 3 * 99) = 11

Средний объем активов, посчитанный по разным методикам:

  • Вариант 1: (100 + (100 + 3*99))/2 = 248,5

  • Вариант 2: (100 + (100 + 3*99) * 4)/5 = 337,6

  • Вариант 3: (100*31 + (100 + 3*99) * 90) / (31 + 90) = 320,9

Разница получается достаточно существенная! Попробуем теперь перевести эту доходность в % годовых (цифры округлены до сотых долей процента):

  • Вариант 1: (11/248,5) * (365/121) *100% = 13,35%

  • Вариант 2: (11/337,6) * (365/121) *100% = 9,82%

  • Вариант 3: (11/320,9) * (365/121) *100% = 10,34%

То есть разное определение, что такое средние активы дают нам совершенно разные результаты! И эта разница очень существенна. Обратите, внимание еще на то, что здесь я под активами понимал сумму, на которую мы покупали ценные бумаги то есть именно сумму первоначальных вложений в ценные бумаги, так как именно она является базой для расчета доходности. А вот что понимает под этой суммой брокер, показывая мне цифры в личном кабинете? У кого какие идеи? Объективности ради замечу, что при звонке моему брокеру личный менеджер не смог ничего дельного на эту тему сказать, кроме как посоветовать Правильно! Почитать раздел Помощь личного кабинета (но обсуждение компетентности сотрудников брокера выходит за рамки данной статьи).

Теперь давайте попробуем другой вариант расчета, тоже достаточно логичный. Для этого рассмотрим каждую покупку как отдельную инвестицию. Тогда мы имеем следующее:

Действие

Прибыль

% ставка

1

Покупка 1 бумаги по 100, общая сумму инвестиции = 100

= 102 100 = 2

= (2/100) * (365/121) *100 % = 6,03%

2

Покупка 3 бумаг по 99 общая сумму инвестиции = 297:

= 306 297 = 9

= (9/297) * (365/90) * 100% = 12,29%

Чтобы понять общую доходность, посчитаем средневзвешенное по сумме значение % ставки:

(6,03 * 100) + (12,29 * 297) / (100 + 297) = 10,71%

Итак, поздравляю! Мы получили 4-ый результат! И если результат 1 и результат 2, очевидно, являются менее правдоподобными в силу сомнительной методики определения суммы средних активов, то вот результат 3 и 4 таких совсем очевидных изъянов не имеют, при этом разница между ними существенна: 10,71% против 8,7% - напомню, еще несколько лет назад ключевая ставка ЦБ как раз была аккурат в этом диапазоне, а значит от применения метода напрямую зависит наше решение по стратегии сохранения средств! Я лично субъективно пока что склоняюсь к цифре 8,7%

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

Внутренняя норма доходности процентная ставка, при которой уравнивается приведённая стоимость будущих денежных поступлений и стоимость исходных инвестиций, чистая приведённая стоимость равна 0

Кстати, именно ее рекомендует использовать Тинькофф Инвестиции. Давайте посчитаем этот показатель для нашего игрушечного примера, благо, в MS Excel есть встроенная функция для этого ЧИСТВНДОХ (она же более известна как XIRR в англоязычной версии).

Ожидаемо, мы получили уже 5-ый результат, который равен 10,73%. Близко к варианту 3, но так как для вычисления внутренней нормы доходности используются численные алгоритмы, то эта разница может быть обусловлена как разным по своей природе алгоритмами, так и просто погрешностям численных методов.

Итак, мы имеем 3 цифры, потенциально претендующие на правду: 10,71% - 8,7% - 10,73%

Картинка в тему :)

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

а не лучше ли было нам не городить огород с открытием брокерского счета, а просто положить деньги в банк на депозит?

Итак, у нас есть наша инвестиция: мы двумя траншами в разное время купили ценные бумаги на общую сумму 1 * 100 + 3* 99 = 397 у.е., которые сейчас стоят 4 * 102 = 408 у.е, т.е. наша потенциальная прибыль при закрытии позиции по бумаге будет 11 рублей.

Посчитаем, а какую бы прибыль мы бы получили, если бы с самого начала открыли депозит под, например, 8% годовых и вместо покупки бумаг, просто пополняли бы его? Это легко посчитать:

(100 * 0.08) * (121/365) + (3 * 99 * 0.08) * (90/121) = 8,51 рублей

Получилось меньше, чем 11 рублей, что ожидаемо. Давайте повторим вычисления для различных % ставок:

Дата

Сумма

Дни

8%

9%

10%

11%

01.01.2020

100

121

2,65

2,98

3,32

3,65

01.02.2020

297

90

5,86

6,59

7,32

8,06

01.05.2020

8,51

9,57

10,64

11,70

Получается, что если ставка депозита будет в где-то в районе от 10 до 11 годовых, то мы получим в итоге такую же прибыль, как и при инвестировании в ценные бумаги. Эту ставку можно нащупать методом подбора, а можно вывести простую формулу:

Итого, если мы посчитаем по этой формуле, то получили 10,34%! Еще одна цифра И она отличается от полученных ранее С точки зрения понимания механики ее получения и смысла, она, пожалуй, теперь мне ближе всего.

Что интересно, я провел эксперименты и выяснил: значение, посчитанное через ЧИСТВНДОХ и по вышеприведенной формуле при расчете строго за целое число календарных лет с 1 января по 1 января практически совпадают.

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

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

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru