Избранное трейдера Андрей Вячеславович (Ganesh)

по

Тестовый запуск американской стратегии и инвестирование в компании роста

Наша базовая российская стратегия «Усиленные Инвестиции» больше фокусируется на инвестировании в компании стоимости и преимущественно сырьевые компании (таких в России большинство). В этой статье мы расскажем о разработанной нами стратегии инвестирования в компании роста (имеющие более высокие темпы роста финансовых показателей, но при этом и стоящие больше по мультипликаторам) на американском рынке. 

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

На самом деле, инвестировать в компании роста — это круто!

  • Индекс компаний роста существенно опередил индекс компаний роста за последние 4 года (+71%) против (+28%)
  • При этом доля IT-компаний в EBITDA выросла с 9% до 24%
  • Из 14.7% средней доходности S&P 500 за последние 10 лет 10% пришлись на всего 5 компаний — Facebook, Amazon, Microsoft, Apple и Google


( Читать дальше )

Команда Тинькофф проверяет календарный эффект

Привет! 

Трейдеры часто говорят о так называемом Turnaround Tuesday («разворотный вторник») — это эффект восстановления американского рынка во вторник после падения в понедельник.

Мы решили проверить, работает ли этот эффект на дневных данных, на примере ETF на S&P 500. Мы замерили данные c 2001 года.

Что делаем: под закрытие каждого торгового понедельника с 2001 года покупаем ETF на S&P 500, если цена ETF ниже цены закрытия торгов в пятницу. Фиксируем результат на окончание торгов во вторник. 

Команда Тинькофф проверяет календарный эффект
Зеленым изображена доходность стратегии, синим — доходность индекса S&P 500 (все без учета дивидендов)

Что получили: доходность, сопоставимую с индексом S&P 500, со значительно меньшими просадками в срок с августа 2001 по август 2019 года. Общее число сделок за этот период — 407, средняя доходность одной сделки — 0,21%, доля положительных сделок — 58%.



( Читать дальше )

Числа Фибоначчи, «Золотое сечение» - и мировые финансовые рынки (перевод с elliottwave com)

    • 26 августа 2019, 11:06
    • |
    • RUH666
  • Еще
Волны Эллиотта часто связаны друг с другом через последовательность Фибоначчи
Числа Фибоначчи, «Золотое сечение» - и мировые финансовые рынки (перевод с elliottwave com)Числа Фибоначчи — последовательность, которая начинается с 0 и 1, и каждое последующее число является суммой двух предыдущих (0, 1, 1, 2, 3, 5, 8, 13, 21, 34 и т. Д.).

После первых нескольких чисел в последовательности отношение любого числа к следующему более высокому составляет приблизительно 0,618 к 1; его отношение к следующему более низкому числу составляет приблизительно 1,618 к 1. Это известно как Золотое сечение.

Отношения Фибоначчи появляются по всей природе, от формы галактик и морских раковин до молекул и даже человеческого тела:Числа Фибоначчи, «Золотое сечение» - и мировые финансовые рынки (перевод с elliottwave com)

( Читать дальше )

Вопрос по налогам на валюту

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

Но если ты купил баксы и баксы лежат на брокерском счете, а рубль падает… То придется платить налог от переоценки баксов в рубли.

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

Минусы ОФЗ

Долго думали и в итоге все же решили не лезть в ОФЗ (как рублевые, так и валютные) на крупные суммы. Альтернатива вклады.

Основные минусы.

1. Долгое погашение купонов, вывод ден средств по 2-3 дня у гос брокеров, комиссии брокера.

Что дает примерно к номинальной ставке минус 0,5% годовых.

Таким образом текущую эффективную ставку в 7% нужно уменьшать до 6,5%. 
В то время, как по вкладам в надежных банках (топ 30) сейчас дают в среднем 7,2-7,4% годовых.


2. Подсудность.

Брокерские услуги в отличие от вкладов не попадают под ЗоЗПП, а это значит при проблемах нельзя будет выбрать суд по месту своего жительства (придется идти в карманный суд брокера), придется платить пошлину и стоит забыть о 50% штрафе по ЗоЗПП за невыполнение требований потребителя. По бр договору клиент несет все риски, в т.ч риски брокера. Брокер не несет ни каких рисков и отвественности.

Короче, при проблемах гасить вас будут по взрослому. По вкладам все намного проще, подсудность — районный суд, отсутсвие пошлин, 50% штраф по ЗоЗПП.

( Читать дальше )

Подборка книг. Годится для изучения с нуля.

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

Список построен по принципу от простого к сложному — начиная с вступления в экономику и заканчивая опционами. Не поленился, ради вас, друзья, пронумеровал каждую в порядке очереди, чтобы отчётливо понимать, что за чем читать. Давать рецензию для каждой книги, с вашего позволения, не буду, иначе у меня на это сутки уйдут. Признаться, я бы туда с радостью добавил ещё и книги по эконометрике и по Python, чтобы те, кто только-только начал искать себе работу, могли себе позволить занять крутую позицию в финансовой сфере, например, должность аналитика, ведь, к сожалению, без умений в области статистики, вероятности, эконометрики, макры и теории рынка ценных бумаг + Python пытаться устроиться будет довольно сложно.

Кстати, ещё обратил внимание на то, что Мартынов Тимофей очень любит книги по типу прикладной медицины и биологии. К его счастью, у меня есть майнор в дипломе по вычислительной нейробиологии (хоть где-то мне этот навык пригодился)! Скину сюда архив с учебниками и полезными ссылками в следующий раз.

( Читать дальше )

Дивергенции LUA

    • 22 августа 2019, 14:17
    • |
    • Vitaliy
  • Еще
Доброго дня, коллеги!

Возник вопрос у меня. Может кто сталкивался и решал данный вопрос с тематике алготрейдинга. Не могу понять, как описать дивергенцию по индикатору и цене в LUA. Для понимания картинка. 
Дивергенции LUA

Буду признателен, если кто сможет подсказать что-то полезное.

С уважением, Виталий.

Друг мой, скальпер еще тот, + 34% за день.

Общаюсь с одним знакомым. Молодой студент, скальпинг любит, впрочем, как и многие нетерпеливые трейдеры. Сразу оговорюсь, что скальпинг — очень тяжелый вид спекуляций. Но торгует он не часто, 3-5 дней в месяц, этого хватает, чтобы выглядеть не как выжатый лимон и снимать деньги с рынка.

Трейдером его назвать язык не повернется, но уже второй год все еще снимает сливки с рынка. Вчера мне прислал свою работу по Доллар-Рублю, на что ожидал наверное услышать от меня признания, что он крут.



( Читать дальше )

Camarilla Equation. Индикатор для QUIK. Часть 3.

Получил такое сообщение:

привет!
у меня в квике стояла камарилла аж с 2014 года, когда вы выложили здесь этот индикатор.
квик обновился до 8 и камарилла пропала.
это не исправить?

Глянул по тэгу https://smart-lab.ru/tag/Camarilla/ и вот они:
1. Camarilla Equation. Индикатор для QUIK.
2. Camarilla Equation. Индикатор для QUIK. Часть 2.

Выкладываю вариант, не зависящий от обновлений QUIK.

-- Camarilla.lua
Settings={
	Name = "Camarilla",
	period = 'D',
	line =
		{
			{Name = "S5", Color = RGB(255, 0, 0), Type = 1, Width = 2},
			{Name = "S4", Color = RGB(255, 165, 0), Type = 1, Width = 2},
			{Name = "S3", Color = RGB(255, 255, 0), Type = 1, Width = 2},
			{Name = "PP", Color = RGB(0, 255, 0), Type = 1, Width = 2},
			{Name = "R3", Color = RGB(0, 191, 255), Type = 1, Width = 2},
			{Name = "R4", Color = RGB(0, 0, 255), Type = 1, Width = 2},
			{Name = "R5", Color = RGB(139, 0, 255), Type = 1, Width = 2},
		}
}

local math_floor = math.floor
local levels = 0
local ydH, ydL, ydC, ydO = {},{},{},{}
local PP, R3, R4, R5 = 0,0,0,0
local S3, S4, S5 = 0,0,0
	local delta = 0
	local cl = 0
local predThisDay=0
local function dTs(t) return 100*(100*t.year+t.month)+t.day; end
local OldDay = ''	-- для выделения начала торгового дня

function Init ()
	local t=getDataSourceInfo()
	local tt = t.interval
	if tt == -3 then 
		message('Месячный график не обрабатывается.',1)
		return 
	end
	return 7
end

function OnCalculate (index)
	local time tt=T(index); ---время из свечи
	--local ThisDay=dTs(tt)	-- дата в формате yyyyMMdd
	local tDay=dTs(tt)	-- дата в формате yyyyMMdd
	local ThisDay = tDay
	if Settings.period == 'W' then
		ThisDay=tt.week_day	-- номер недели
	end
	if index == 1 then
		--message('First ThisDay = '..tostring(ThisDay),1)
		local t=getDataSourceInfo()
		--7.2.5 Функция предназначена для получения информации об источнике данных для индикатора.
		local scale = getSecurityInfo(t.class_code, t.sec_code).scale	--	NUMBER, Количество значащих цифр после запятой
		mul = 10^scale  -- возведение в степень
		local tt = t.interval
		if tt == -3 then tt = 'месяц' 
		elseif tt == -2 then tt = 'неделя'
		elseif tt == -1 then tt = 'день' 
		else
			tt = tt..' мин.'
		end
		--message(t.sec_code..'('..t.class_code..'), цифр после запятой: '..scale..', mul = '..mul..', дата = '..ThisDay,1)
		levels = levels + 1
		if ThisDay ~= OldDay then
			OldDay = ThisDay
		end	
		predThisDay = ThisDay
		--
		delta = H(index) - L(index)
		cl = C(index)
		R5 = (H(index) / L(index))*cl
		calcLevels(index)
		local per = 'daily'
		if Settings.period == 'W' then
			per = 'weekly'
		end
		message('Camarilla '..per..', Т = '..tt..', © xsharp.ru 20.06.2015', 1)
		return
	end
	if Settings.period == 'W' then
		if ThisDay < OldDay then	-- для неделек
			OldDay = OldDay + 1
			if OldDay ~= ThisDay then
				OldDay = ThisDay
			end
			levels = levels + 1
			delta = ydH[levels-1] - ydL[levels-1]
			cl = ydC[levels-1]
			R5 = (ydH[levels-1] / ydL[levels-1])*cl
			calcLevels(index)
			--if index<120 then
			--message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
			--end
			predThisDay = ThisDay
		else
			if ThisDay ~=predThisDay then
				--message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
				predThisDay = ThisDay
				OldDay = OldDay + 1
			end
			ThisDayF(index)
		end
	elseif Settings.period == 'D' then
		if ThisDay ~= OldDay then	-- для дневок
			OldDay = OldDay + 1
			if OldDay ~= ThisDay then
				OldDay = ThisDay
			end
			levels = levels + 1
			delta = ydH[levels-1] - ydL[levels-1]
			cl = ydC[levels-1]
			R5 = (ydH[levels-1] / ydL[levels-1])*cl
			calcLevels(index)
			--if index<120 then
			--message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
			--end
			predThisDay = ThisDay
		else
			if ThisDay ~=predThisDay then
				--message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
				predThisDay = ThisDay
				OldDay = OldDay + 1
			end
			ThisDayF(index)
		end
	elseif Settings.period == 'H4' then
		if ThisDay ~= OldDay then	-- для дневок
			OldDay = OldDay + 1
			if OldDay ~= ThisDay then
				OldDay = ThisDay
			end
			levels = levels + 1
			delta = ydH[levels-1] - ydL[levels-1]
			cl = ydC[levels-1]
			R5 = (ydH[levels-1] / ydL[levels-1])*cl
			calcLevels(index)
			--if index<120 then
			--message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
			--end
			predThisDay = ThisDay
		else
			if ThisDay ~=predThisDay then
				--message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
				predThisDay = ThisDay
				OldDay = OldDay + 1
			end
			ThisDayF(index)
		end
	end
	return S5, S4, S3, cl, R3, R4, R5
end

function round(value)
	return math_floor(value*mul + 0.5) / mul
end

function ThisDayF(index)
	ydC[levels] = C(index)
	if H(index) > ydH[levels] then
		ydH[levels] = H(index)
	end
	if L(index) < ydL[levels] then
		ydL[levels] = L(index)
	end
end

function calcLevels(index)
	ydO[levels] = O(index)
	ydH[levels] = H(index)
	ydL[levels] = L(index)
	ydC[levels] = C(index)
	--
	R3 = cl + delta * 1.1/4
	R4 = cl + delta * 1.1/2
	--
	S3 = cl - delta * 1.1/4
	S4 = cl - delta * 1.1/2
	S5 = cl - (R5-cl)
	--
	R5 = round(R5)
	R4 = round(R4)
	R3 = round(R3)
	S3 = round(S3)
	S4 = round(S4)
	S5 = round(S5)
end
  • обсудить на форуме:
  • QUIK

просили выложить ответ налоговой. Выкладываю

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


Я обратился в районную налокговую, к тем,

кто меня будет судить и выписывать штрафы, если я где то оступлюсь,

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

Вот чётко и конкретно.  Кому не жалко — ставьте плюсики.

просили выложить ответ налоговой. Выкладываю






....все тэги
UPDONW
Новый дизайн