Журналисты ежедневной американской деловой газеты «Уолл-стрит джорнэл» пишут, что «в этом финансовом эксперименте не пострадало ни одно животное, но эго некоторых человеческих существ было сильно уязвлено».


Вместо обезьяны всё сделает JavaScript

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

Предлагаю повторить эксперимент в домашних условиях, тем более что живая обезьяна после прочтения этой статьи вам не понадобится — JavaScript image всё сделает в лучшем виде.

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

В статье приведу код эксперимента и дам ссылку на гитхаб.

В этом месте требуется вывесить предупреждение от человека, который уже достаточно давно занимается финансами и инвестициями, о том что безответственно отдавать выбор активов на откуп случаю, и только в рамках эксперимента поговорим о том, где взять обезьянку image, которая принесет нам миллионы.
Существуют практически хрестоматийные методы инвестирования, которые были описаны разными авторами. Все эти приёмы связаны с распределением по валютам и активам разных классов, такими как акции развивающихся стран, облигации США и другие. В настоящий момент эти стратегии легко реализуются даже для относительно небольших сумм в России. «Квалифицированным инвестором» при этом быть не обязательно.

Если лично вы не знаете как подойти к инвестициям, то лучше начать с хрестоматийных примеров. Тем более, что средняя ставка по банковским вкладам в начале 2020 года в России опустилась до исторического минимума 5,93% годовых, а падение на фондовых рынках США в марте 2020 года стало крупнейшим с «черного понедельника» 1987 года. Конечно прямо сейчас ситуация скорее пугающая, но существует выражение: «Покупай, когда на улицах течет кровь, даже если она и твоя».

Хрестоматийных книжных примеров довольно много, но я приведу лишь три из них. Если вам это неинтересно, то сразу переходите к обезьяне, дротикам и JavaScript ниже в тексте статьи.

Классы активов


Перед тем, как разбирать книжные примеры давайте посмотрим на то, какие классы активов вообще существуют. Вы можете спросить почему все термины на английском? Здесь всё просто — экономика России к сожалению не занимает сейчас сколько бы значимого места на мировом рынке капитала.

По информации из Credit Suisse Global Investment Returns Yearbook 2020 Summary Edition относительные размеры мировых фондовых рынков на начало 2020 года:


Информация из отчета Credit Suisse Global Investment Returns Yearbook 2020 Summary Edition: 2020 год (справа) против 121 года назад (слева).

Как видно из рисунка доля России на начало 2020 году просто не попала для отображения на графике мирового рынка капитала, в отличии от ситуации столетней давности, где эта доля составляла 6,1%.

Но перейдём к существующим классам активов:

Деньги
  • Cash: наличные деньги
  • Foreign currency: наличная валюта

Товары
  • Commodities: товары, в том числе металлы, драгоценности

Недвижимость
  • Real estate: физическая недвижимость
  • REIT: фонды недвижимости

Долги
  • Global Bonds: мировые (в том числе Российские) облигации
  • Domestic Bonds: облигации рынка США
  • Deposit account: банковские вклады
  • Debt: задолженность других лиц

Доли в бизнесах
  • Large Cap Stocks: акции компаний США высокой капитализации
  • Small Cap Stocks: акции компаний США малой капитализации
  • International Stocks: мировые (в том числе Российские) акции

Бизнес
  • Private equity: частное инвестирование, доля в капитале, не размещённые на фондовой бирже

Спекуляции
  • Derivatives: производные финансовые инструменты, в том числе фьючерсы, опционы

Также существует сводная таблица доходностей по некоторым классам аж с 1972 года.

Книжные примеры


Перейдем к реальным рекомендациям по распределению активов по классам (Asset allocation) от разных авторов:

№1. Всесезонный портфель Рэя Дэлио


Реймонд Далио — американский миллиардер, финансист, основатель инвестиционной компании Bridgewater Associates (американская инвестиционная компания основанная в 1975 году. Фирма обслуживает институциональных клиентов, включая пенсионные фонды, некоммерческие организации, фонды, правительства и центральные банки разных стран), предлагает следующие пропорции:
Класс актива % в портфеле
US Stock Market 30%
Long Term Treasury 40%
Intermediate Term Treasury 15%
Commodities 7.5%
Gold 7.5%

№2. Портфель Уильяма Бернстайна без раздумий


Уильям Бернстайн — доктор философии, доктор медицины, невролог, один из основателей фирмы Efficient Frontier Advisors LLC, которая занимается управлением инвестициями, и редактор журнала о распределении активов Efficient Frontier. Он — автор четырех книг, которые стали бестселлерами: «Разумное распределение активов» (The Intelligent Asset Allocator), «Четыре столпа инвестирования» (The Four Pillars of Investing), «Рождение изобилия» (The Birth of Plenty) и «Выгодный обмен» (A Splendid Exchange). Рекомендует нижеследующее:
Класс актива % в портфеле
US Large Cap 25%
US Small Cap 25%
Global ex-US Stock Market 25%
Total US Bond Market 25%


№3. Фонд Йельского университета Дэвида Свенсена


Дэвид Свенсен — генеральный директор по инвестициям Йельского университета, профессор Йельской школы менеджмента, член Американской академии наук и искусств, рекомендует нижеследующее:
Класс актива % в портфеле
US Stock Market 30%
Long Term Treasury 15%
Emerging Markets 5%
TIPS 15%
REIT 20%
Intl Developed ex-US Market 15%

Сравнение этих трех портфелей


Представим что вы 10 лет назад, в начале 2010 года вложили по $1 000 (на тот момент $1 000 = 30 185 руб.) в каждый из трех портфелей. На март 2020 года ваши результаты составят (график в долларах США):


1. Ray Dalio — All Weather (всесезонный портфель Рэя Дэлио):
$2 091 (+109% в долларах США) или 156 908 руб. (+420% в рублях)
2. William Bernstein — No Brainer (портфель Уильяма Бернстайна без раздумий):
$2 195 (+119% в долларах США) или 164 712 руб. (+445% в рублях)
3. David Swensen Yale Endowment (фонд Йельского университета Дэвида Свенсена):
$2 345 (+134% в долларах США) или 175 968 руб. (+483% в рублях)

Цифры доходности (и пересчёт долларов в рубли) приведены на 17 марта 2020 года. Расчёт на сколько процентов одно число больше другого для рекомендаций Дэвида Свенсена:

$$display$$\frac{$2345}{$1000}*100 - 100 = 134\%$$display$$


Если вести расчёты доходности за последние 10 лет в рублях цифра получается ещё более впечатляющая:

$\frac{175968?}{30185?}*100 - 100 = 483\%$



Станьте прикиньтесь обезьянкой




А вот теперь начнем метать дротики. Как думаете, получится обыграть результат профессионалов за один случайный бросок? Здесь все довольно просто — случайным образом выбираем акцию, пользуясь API Мосбиржи.

Как пример для подражания был взят проект Раймонда Бергера из Нью-Йорка, который опубликовал свой код на гитхабе, где автор bash скриптом скачивает с FTP сервера сводный список американских бумаг и трансформирует его в JSON, состоящий из одних тикеров, а затем при помощи фреймворка bootstrap и чистого JavaScript выводит на экран рандомный биржевой тикер, одновременно давая ссылку на популярный ресурс Yahoo! Finance.

Код этого проекта был модифицирован и адаптирован для российских реалий Александром Палачёвым. Дополнительно сервер не потребовался, потому что API Мосбиржи может делать выдачу сразу в формате JSON. Весь код написан на чистом JavaScript и файл index.html работает как с компьютера, так и с мобильного устройства.

Как именно будем моделировать обезьяну на JavaScript и играть в русскую рулетку с Московской биржей? Перечислим то, что нам нужно:

  1. Брать информацию с биржи о существующих «идентификаторах режима торгов» (boardid) Мосбиржи.
    //информация о торгуемых акциях на Московской бирже
    url = 'https://iss.moex.com/iss/engines/stock/markets/shares/boards/'
  2. Брать полный список бумаг для некоторых boardid на Мосбирже.

    boardid = 'TQBR' //идентификатор режима торгов
    url = 'https://iss.moex.com/iss/engines/stock/markets/shares/boards/'+ boardid +'/securities.json?iss.meta=off&iss.only=securities&securities.columns=SECID,SECNAME'
  3. Сверяться со сводной статистикой бумаг на Московской бирже.
  4. Узнавать текущую цену для конкретной ценной бумаги.
    boardid = 'TQBR' //идентификатор режима торгов
    url = 'http://iss.moex.com/iss/engines/stock/markets/shares/boards/'+ boardid +'/securities.json?iss.meta=off&iss.only=securities&securities.columns=SECID,PREVADMITTEDQUOTE'
  5. Получать цену n лет назад на конкретную дату. Для этого в API Мосбиржи передаём boardid, SECID и дату, например:
    — boardid = TQBR
    — SECID = SBER
    — date = 2015-01-10
    .

    boardid = 'TQBR' // идентификатор режима торгов
    SECID = 'SBER' // тикер
    date = '2015-01-10' // дата
    url = 'http://iss.moex.com/iss/history/engines/stock/markets/shares/boards/'+ boardid +'/securities/'+ SECID +'.json?iss.meta=off&iss.only=history&history.columns=SECID,TRADEDATE,CLOSE&limit=1&from=' + date
  6. Сравнивать вчерашнюю цену актива и цену 5 лет назад, чтобы узнать доходность.
    curStock = 'AFKS'
    dateNow = '2020-03-06'
    datePre = '2015-03-06'
    fetch(getCost(curStock, datePre)).then(result => {
        return (result.json())
    }).then(res => {
        let costPre = res.history.data[0][2];
        return (costPre)
    }).then(costPre => {
        fetch(getCost(curStock, dateNow)).then(result => {
            return (result.json())
        }).then(res => {
            let costNow = res.history.data[0][2];
            console.log(costPre);
            console.log(costNow);
            console.log(parseInt((costNow * 100) / costPre, 10) - 100)
        })
    })
    
    function getCost(id, date) {
        let url = `http://iss.moex.com/iss/history/engines/stock/markets/shares/boards/TQBR/securities/${id}.json?iss.meta=off&iss.only=history&history.columns=SECID,TRADEDATE,CLOSE&limit=1&from=${date}`
        return url;
    }

К коду не предъявлялось больших требований, важно было то, что он работает и выполняет свою задачу.


Гифка с демонстрацией работы

Теперь можно посмотреть весь механизм в работе: https://empenoso.github.io/MOEX-Random-Picker/ — кидаем дротик, нажимая «Обновить».

Смотрим насколько вы удачливы — насколько выпавшая бумага выросла или упала в рублях за последние 5 лет с текущей даты. Почему-то API Мосбиржи выдает исторические данные только начиная с июня 2014 года, то есть не удается получить более ранние данные через запрос.

Полный код выложен на GitHub: empenoso / MOEX-Random-Picker.

Итог


  1. Как мы видим, полностью полагаться на случайный выбор акций было бы опрометчиво и стоит прислушаться к рекомендациям профессионалов.
  2. Статья в первую очередь призвана привлечь внимание к собственной пенсии — конечно вы еще молоды, но в какой-то момент уже может быть поздно что-то начинать.
  3. Следует помнить, что доходность в инвестициях никто кроме мошенников не может гарантировать.
  4. Это не является финансовой рекомендацией, но может быть использовано в своих целях.

Автор: Михаил Шардин
Код: Александр Палачёв.

27 февраля — 18 марта 2020 г.