Избранное трейдера Ирина Мс
Счётчики банкнот в московских OTC-криптообменниках жужжат 24 часа в сутки. Бизнес процветает. Китайские торговцы приносят баулы с наличными. У одного криптообменника оборот составляет около трёх миллионов долларов в сутки, пишет Анна Байдакова для Coindesk. Друзья, совсем недавно я вас порадовал циклом собственных фундаментальных исследований акций, которые можно найти в моём блоге здесь.
Следующим логическим шагом было совместить то, что я делаю как портфельный управляющий, с этими самыми исследованиями. Задача не совсем тривиальная, и тем она интересна. Поскольку я всё люблю максимально автоматизировать, этот процесс не явился исключением. Проще всего результаты проделанной работы продемонстрировать на том, как она включилась в инвестиционный бюллетень.
Поскольку я не пересматриваю свои фундаментальные прогнозы чаще раза в год, если на это нет каких-то уж очень серьёзных оснований, а расчёты строятся на данных годовой отчётности, то и каждый раз пересчитывать там вроде бы нечего. Однако, поскольку рынок не стоит на месте, ожидаемая доходность инвестора меняется и этот факт можно учесть при формировании портфеля. Тем, кто знаком с портфельной теорией, сразу смекнули о чём идёт разговор.

Добрый день, Господа!
Хочу поделиться с вами проделанной мною работой на тему отбора недооцененных акций. Методика отбора всем известная – стоимостная и не учитывающая дивидендную политику. Лично у меня нет времени гоняться за новостями и дивидендами.
Данные из отчетностей за последние 5 лет я свёл в таблицу Excel, в которой очень удобно делать выборки и сортировки.
Из отчетностей я брал только: количество акций, активы, обязательства, капитал, выручка, чистая прибыль. С помощью полученных данных получил капитализацию, коэффициент закредитованности и мультипликаторы Р/Е, Р/В. Таблицу буду дорабатывать, но костяк уже сформирован.
Да, и Реальная цена акции рассчитана по формуле Капитал/Кол-во акций, а не Активы/Кол-во акций. ИМХО только капитал более-менее говорит о реальной стоимости компании.
Сортировку сделал следующую:
— Оставил только компании с размером активов свыше 10 млрд. руб.;
— Убрал все компании, получившие хоть раз за 5 лет убыток;

Settings={
Name="VDIV",
period=20,
periodma=15,
line=
{
{
Name = "cur1",
Type =TYPE_LINE,
Width = 1,
Color = RGB(255,0,0)
},
{
Name = "cur2",
Type =TYPE_LINE,
Width = 1,
Color = RGB(0,0,0)
}
}
}
--[[
-- кривая объемов
описание свойств:
period: сколько баров берутся в подсчет
weighted: =0 - обычная, =1 - взвешанная
proportional: =1- считается: volume*(close-open)/(hight-low), =0 - считается: volume*sign(close-open)
--]]
function Init()
mas = {}
return 3
end
function OnCalculate(index)
sumv1 = 0
sumv2 = 0
if index >= Settings.period then
for i=index-Settings.period+1, index do
if V(i) ~= nil and C(i) ~= nil then
if C(i) > O(i) then
sumv1 = sumv1+V(i)*(C(i) - O(i))
else
sumv2 = sumv2+V(i)*(O(i) - C(i))
end
end
end
else
sumv1 = nil
sumv2 = nil
end
if sumv2 ~= 0 and sumv2 ~= nil then
vdiv = sumv1/sumv2
vdiv2 = sumv2/sumv1
vdiv3 = vdiv - vdiv2
else
vdiv = nil
vdiv2 = nil
vdiv3 = nil
end
mas[index] = vdiv3
ma = 0
if index >= Settings.periodma then
for i=index-Settings.periodma+1, index do
if mas[i] ~= nil then
ma = ma + mas[i]
end
end
end
ma = ma/Settings.periodma
return ma, 0
end
Settings={
Name="VCUR",
period=50,
periodma=15,
weighted=1,
weightedma=1,
proportional=1,
line=
{
{
Name = "cur1",
Type =TYPE_LINE,
Width = 1,
Color = RGB(155,0, 0)
},
{
Name = "cur2",
Type =TYPE_LINE,
Width = 1,
Color = RGB(0,0,155)
},
{
Name = "cur3",
Type =TYPE_LINE,
Width = 1,
Color = RGB(0,0, 0)
}
}
}
--[[
-- кривая объемов
описание свойств:
period: сколько баров берутся в подсчет
weighted: =0 - обычная, =1 - взвешанная
proportional: =1- считается: volume*(close-open)/(hight-low), =0 - считается: volume*sign(close-open)
--]]
function Init()
mas={}
return 2
end
function OnCalculate(index)
sumv = 0
wsum = 0
if index >= Settings.period then
for i=index-Settings.period+1, index do
if sumv == nil then
sumv = 0
end
if C(i-1) ~= nil then
wsum = wsum + i-(index-Settings.period)
if C(i-1) > O(i-1) then
if Settings.proportional == 0 then
prop = 1
else
if (H(i-1)-L(i-1)) == 0 then
prop = 0
else
prop = (C(i-1)-O(i-1))/(H(i-1)-L(i-1))
end
end
if Settings.weighted == 0 then
sumv = sumv + prop*V(i-1)
else
sumv = sumv + prop*V(i-1)*(i-(index-Settings.period))--/Settings.period
end
else
if Settings.proportional == 0 then
prop = 1
else
if (H(i-1)-L(i-1)) == 0 then
prop = 0
else
prop = (O(i-1)-C(i-1))/(H(i-1)-L(i-1))
end
end
if Settings.weighted == 0 then
sumv = sumv - prop*V(i-1)
else
sumv = sumv - prop*V(i-1)*(i-(index-Settings.period))--/Settings.period
end
end
end
end
else
sumv = nil
end
if Settings.weighted ~= 0 then
if sumv ~= nil then
sum =sumv/wsum
end
end
mas[index]=sumv
ma = 0
wsum = 0
if index >= Settings.periodma then
for i=index-Settings.periodma+1, index do
if mas[i] ~= nil then
wsum = wsum + i-(index-Settings.periodma)
if Settings.weightedma == 0 then
ma = ma + mas[i]
else
ma = ma + mas[i]*(i-(index-Settings.periodma))--/Settings.periodma
end
end
end
end
if Settings.weightedma == 0 then
if ma ~= nil then
ma = ma/Settings.periodma
end
else
ma = ma/wsum
end
return sumv, ma--, 0
end
Settings={
Name="VCUR",
period=20,
periodma=20,
weighted=1,
proportional=1,
line=
{
{
Name = "cur1",
Type =TYPE_LINE,
Width = 1,
Color = RGB(155,0, 0)
},
{
Name = "cur2",
Type =TYPE_LINE,
Width = 1,
Color = RGB(0,0,155)
},
{
Name = "cur3",
Type =TYPE_LINE,
Width = 1,
Color = RGB(0,0, 0)
}
}
}
--[[
-- кривая объемов
описание свойств:
period: сколько баров берутся в подсчет
weighted: =0 - обычная, =1 - взвешанная
proportional: =1- считается: volume*(close-open)/(hight-low), =0 - считается: volume*sign(close-open)
--]]
function Init()
mas={}
return 3
end
function OnCalculate(index)
--sumv = 0
if index >= Settings.period then
for i=index-Settings.period-1, index do
if sumv == nil then
sumv = 0
end
if C(i-1) ~= nil then
if C(i-1) > O(i-1) then
if Settings.proportional == 0 then
prop = 1
else
if (H(i-1)-L(i-1)) == 0 then
prop = 0
else
prop = (C(i-1)-O(i-1))/(H(i-1)-L(i-1))
end
end
if Settings.weighted == 0 then
sumv = sumv + prop*V(i-1)
else
sumv = sumv + prop*V(i-1)*(i-(index-Settings.period))/Settings.period
end
else
if Settings.proportional == 0 then
prop = 1
else
if (H(i-1)-L(i-1)) == 0 then
prop = 0
else
prop = (O(i-1)-C(i-1))/(H(i-1)-L(i-1))
end
end
if Settings.weighted == 0 then
sumv = sumv - prop*V(i-1)
else
sumv = sumv - prop*V(i-1)*(i-(index-Settings.period))/Settings.period
end
end
end
end
else
sumv = nil
end
mas[index]=sumv
ma = 0
if index >= Settings.periodma then
for i=index-Settings.periodma+1, index do
if mas[i] ~= nil then
ma = ma + mas[i]
end
end
end
ma = ma/Settings.periodma
return sumv, ma, 0
endЯ уверен многие Смартлабовцы — смелые парни, а политические и местные риски для них это пустой трёп. Но когда свободный «капитал» превышает хотя бы $50000 — это уже не средство развлечения, а подушка безопасности. Её можно легко отнять или отрубить к ней доступ. А ничего не поделаешь (эмиграция не вариант для меня пока). Поэтому недавно я перешёл на западные рынки. Как обеспечить резервный бесперебойный доступ ко своему счёту (IB) при опускании занавеса? Я решил изложить полусырой план, который реализовал частично и ускоряюсь из-за разных событий.
Сперва мне потребовалось выяснить как выйти в настоящий интернет из российского. Гугление показало, что VPN способно обмануть средство контроля траффика (DPI), но не безупречно: DPI распознаёт необычный траффик и сужает полосу передачи. Так работает «великий китайский файрвол» (