Избранное трейдера Грязный Чистюля
Добрый день, друзья!
Мой пост об отчетах 10-K, 10-Q и 8-K американских эмитентов (https://smart-lab.ru/blog/677043.php) вызвал достаточно большой отклик среди Смарт-Лабовцев (68 ⭐️ + 326 ❤️). Поэтому выполняю своё обещание и рассказываю о методике анализа отчетов 8-К, которая в прошлом году принесла мне 50% годовых в долларах США (https://smart-lab.ru/blog/668157.php).
Внимание: лонгрид. Если у Вас в данный момент нет возможности на 15 минут сосредоточиться на изучении достаточно сложной информации – лучше добавить пост в избранное и вернуться к его прочтению позже.
В прошлый раз мы пришли к выводу о том, что отчеты 10-K содержат только прошлые данные, в силу чего информация, отражённая в них, уже заложена в текущие котировки акций. А с учётом того, что изучение формы 10-K является достаточно трудоёмким процессом, то для частного инвестора эта форма теряет всякий смысл.
Рисунок 4.5 показывает результаты ежедневной покупки и продажи фьючерса на бонды по цене открытия дня на расстоянии 100 процентов величины диапазона предыдущего дня выше цены открытия для длинной позиции и 100 процентов величины диапазона предыдущего дня ниже цены открытия для короткой позиции. Защитный стоп-ордер выставляется на уровне 1500$ или 50-процентной величины диапазона предыдущего дня, вычитаемой из точки нашего входа. В то же самое время, для выхода применяется техника катапультирования (bailout) или первое после входа открытие позиции с плюсом. (стр. 185)
Введение
Если вы уже давно торгуете на фондовом рынке, то наверняка заметили, что одни и те же бумаги растут сильнее рынка, а другие все время стоят на месте или даже падают. Примеров можно привести много: это и ВТБ, который разместился на IPO в 2007 году по 13.6 копеек, а сейчас стоит менее 4 копеек, это и Мечел, который в 2011 году стоил более 900 рублей, а сейчас торгуется около 60. Да и каждый из вас без труда может привести множество подобных примеров. В то же время есть бумаги, которые выросли за это время в несколько раз, оставаясь лучшими много лет подряд.
В своих первых двух статьях на смартлабе я уже приводил тестирование на исторических данных гипотезы о том, что лучшие бумаги, как правило, остаются лучшими, а аутсайдеры, так и остаются аутсайдерами. Вот эти статьи:
1. Как обогнать индекс (пример выигрышной торговой стратегии)
2. Как проиграть индексу акций (пример ошибочной торговой стратегии)
Компаний – море, даже на бирже СПб их почти тысяча. Из них — сотни вполне приличных и достойных внимания. Очевидно, что старое доброе неспешное чтение годовых отчетов в нынешних реалиях не подходит.
Представлю свой алгоритм, как анализировать зарубежные эмитенты, чтобы за короткое время охватить наиболее важный пласт финансовой информации и тем самым составить первичное впечатление о компании, включить ее в свой шорт-лист для последующего более глубокого анализа и возможных инвестиций в нее. Алгоритм сложился путем проб и ошибок в течение последних 3-х лет.
Итак. Рассмотрим пошаговый анализ одного из эмитентов, торгующихся на Санкт-Петербургской бирже, компанию Elanco Animal Health Incorporated (ELAN).
Первым шагом будет поиск сводной информации о компании на одном из сайтов-агрегаторов. На мой взгляд, finviz здесь вне конкуренции. По тикеру получаем информацию о компании, о секторе, где она работает, ссылку на официальный сайт и последние новости об эмитенте. Не помешает поискать в открытых источниках информацию о ней для общего представления.
-- -- Выполнение действий с массивами. -- local pairs = pairs local type = type module(...) --- Создать копию массива (таблицы) -- @return копию массива (таблицы) function copy(array) local copy_array = {} if type(array) ~= "table" then return array end for k, v in pairs(array) do if type(v) == "table" then copy_array[k] = copy(v) else copy_array[k] = v end end return copy_array end --- Узнать, начинается ли индексация в массиве с нуля или с единицы. -- @return 0 или 1 function base(array) if array[0] ~= nil then return 0 else return 1 end end --- Вычислить число элементов в массиве. -- @return число элементов в массиве function size(array) local n = 0 for _, _ in pairs(array) do n = n + 1 end return n end --- Проверить пустой или нет массив. -- @return true/false function isEmpty(array) for _, _ in pairs(array) do return false end return true end --- Получить первый индекс массива, где ничего не записано. Поиск начинается с 1. -- @return первый индекс массива, где ничего не записано function firstEmptyIndex(array) local i = 1 while array[i] ~= nil do i = i + 1 end return i end
str='C:\\curl-7.63.0-win64-mingw\\bin\\curl.exe --socks5 127.0.0.1:9150 ' str=str..'"https://api.telegram.org/botидентификаторвашегобота/sendMessage?chat_id=айдивашегоаккаунта&text=' str=str..переменная1..": "..переменная2 str=str..'"' os.execute(str)Приведенный код будет слать в телеграм значения двух переменных, разделенных двоеточием.