Избранное трейдера S&P

по

Как использовать data science, чтобы анализировать финансовые рынки

Чтобы преуспеть на финансовых рынках, нужно качественно анализировать информацию. Чтобы качественно анализировать информацию, нужен хороший инструмент. Если вы хотите узнать про один из таких инструментов, то прочитайте эту статью. В ней мы рассказали о data science — прикладной научной дисциплине, которую активно применяют в ведущих инвестиционных домах.

Как использовать data science, чтобы анализировать финансовые рынки



Оглавление

Как анализируют финансовые рынки
Как работает data science
Почему data science эффективен
Что нужно, чтобы применять data science
Станет ли data science панацеей для инвесторов
Постскриптум

 

Как анализируют финансовые рынки

Перед тем как приступить к Data Science, давайте разберемся с философией анализа финансовых рынков. Для этого мы ответим на три принципиальных вопроса:

1. Зачем анализировать финансовый рынок?
2. На чем основаны методы анализа финансового рынка?
3. Почему не существует идеального метода анализа?



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

Качаем цены с Росстата и строим графики

    • 07 июля 2020, 22:00
    • |
    • Albus
  • Еще
Росстат каждую неделю публикует цены на основные товары из потребительской корзины. Сейчас в ней 112 наименований.
https://www.fedstat.ru/indicator/37426
Данные собираются по всей России. Цены можно посмотреть для каждого региона, вплоть до малых городов. НО! по городам почему-то качается только текущий 2020 год, как бы хитро вы ни выставляли птички в фильтрах. А вот для субъектов Федерации типа г. Москва, Ростовская область все данные отдаются корректно. 
Качаем цены с Росстата и строим графики

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

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

Как переводить через Сбер без комиссии

Сбер любит брать комиссию за переводы. Но можно переводить без комиссии до 100000 рублей в месяц, подключив СБП.
Для этого надо в приложении Сбербанка зайти в свой «Профиль» (изображение человечка в левом верхнем углу), затем войти в «Настройки» (иконка шестеренки), пролистать в самый низ страницы и выбрать пункт «Соглашения и договоры». Здесь следует выбрать пункт «Система быстрых платежей» и подключиться как к «Исходящим переводам», так и «Входящим». Последнее, что нужно сделать, — выбрать приоритетную карту, если у вас их несколько. Делается это в настройках самой карты. Для этого нужно на главном экране тапнуть на свой карточный счет, зайти в «Настройки» (меню сверху) и выбрать карту в качестве приоритетной.

Важно: отправлять деньги через СБП тоже нужно по-особенному. Для выполнения перевода нужно выбрать карту, с которой отправляются средства, нажать «Платеж или перевод», после чего пролистать вниз до вкладки «Другие сервисы», где выбрать «Систему быстрых платежей».

По СБП можно переводить 100 тыс. рублей в месяц без комиссии.
Переводить деньги через СБП по номеру телефона можно для клиентов любых банков.

Кстати, вот инструкция как подключить СБП для вебмани: smart-lab.ru/blog/624717.php?nomobile=1

Python. Делаем тестер стратегий и... зарабатываем на случайном блуждании.

    • 19 июня 2020, 16:32
    • |
    • 3Qu
  • Еще

Если вам кто нибудь скажет, что на случайном блуждании (СБ) нельзя зарабатывать, бросьте в него камень. Как говорил Паниковский — это жалкие ничтожные люди. На СБ можно зарабатывать с результатами не хуже, чем на реальном рынке. У СБ, по сравнению с реальным рынком, только один недостаток — за игры с СБ никто деньги платить не будет.
А если бы платили? Никто бы ничего не заметил. По прежнему 95% СБ-трейдеров сливало бы депозиты, а 5% регулярно выигрывало и считало бы себя Гуру. По прежнему на графики наносились бы каббалистические знаки и индикаторы, угадывались бы направления движения, каналы, и линии поддержки/сопротивления. Все так же начинающие трейдеры искали Учителя для обучения, а аналитики предсказывали будущее. И, ровным счетом, абсолютно ничего бы не поменялось. Может только АГ заметил бы подвох, но тоже не сразу, а только через несколько месяцев, а, может, и через год-другой. Но, легко сделать, чтобы и АГ остался в неведении.)

Однако, прежде чем играть на СБ, нам необходима стратегия и тестер. Ими мы и займемся.
Для начала стратегия: нам нужны три функции
— одна для пошагового слежения за рыночными котировками и определения момента входа в сделку — DealEntryAnalysis(i) и пусть на ее выходе будет: 0-если сделки нет, 1 — необходим вход в лонг, и -1 — необходим вход в шорт. i — номер отсчета массива котировок.
— вторая для сопровождения сделки лонг — DealControlL(i), отвечающая за контроль и закрытие сделки.
— и третья, для сопровождения сделки шорт — DealControlS(i).
Теперь у нас все готово для разработки тестера стратегий, а это всего лишь цикл while() последовательно перебирающий котировки.
Вот наша стратегия уже в тестере:

while i < Ie:
    deal_type = DealEntryAnalysis(i)
    if deal_type == 1:
        j, rep = DealControlL(i)
        deals_report.append(rep)
        i = j+1
        continue
    elif deal_type == -1:
        j, rep = DealControlS(i)
        deals_report.append(rep)
        i = j+1
        continue
    i = i+1


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

Автоматизация - ключ к успешному инвестированию. Python и SQL приходят на помощь!

Как и любой исследователь-инвестор, я сталкиваюсь с необходимостью обрабатывать огромное количество различных данных, чтобы принять взвешенное инвестиционное решение.

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

Я уже рассказывал, что на самоизоляции осваивал Python, и демонстрировал, что мне удалось написать профессиональный инвестиционный калькулятор, который рассчитывает различные финансовые показатели и сравнивает между собой два актива. Кстати, в последней его версии я добавил возможность учета комиссий и налогов. Это позволяет намного легче сравнивать NET результаты для инвестора, особенно если в стратегии по ДУ есть вознаграждение управляющего за успех, а в ПИФах комиссия за приобретение и погашение паев.

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



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

Алготрейдинг. Получение данных свечей средствами QLUA и запись их в .CSV

Алготрейдинг. Получение данных свечей средствами QLUA

Очень часто бывает необходимо получить данные последних N-свечей различного интервала инструмента торговли. К сожалению, в справке QLUA нет достаточно полных примеров кода работы получения данных. В скрипте приведён пример получения данных интервала М1 инструмента BRN0 в формате <Инструмент> <Дата> <Время> <Цена_Open> <Цена_High> <Цена_Low> <Цена_Close> <Объем>. Данные пишутся в CSV формат.
Почему просто не выводить по DDE график и обрабатывать его в чём-нибудь более приятном? Есть простые вещи, для которых нет необходимости в таких конструкциях (проанализировать резкое изменение объема, найти определенную формацию/комбинацию свечей, а затем вывести в quik сообщение).
-------------------------------------------------------------------------------------------------------
--- Функция получения результатов свечей в .CSV в виде:
--- <Инструмент> <Дата> <Время> <Цена_Open> <Цена_High> <Цена_Low> <Цена_Close> <Объем>
--- BRN0	1	20200605	200100	42.15	42.16	42.1	42.1	2150
-------------------------------------------------------------------------------------------------------
is_run=true

-- Параметры
tInstr="BRN0" --код инструмента/бумаги
classcode="SPBFUT" --код класса инструмента/бумаги, если нужен фондовый рынок - вводить TQBR вместо SPBFUT
iNterval=INTERVAL_M1 --таймфрейм
-- доступные таймфреймы указаны в справке Quik (qlua.chm в папке с quik) по поиску CreateDataSource
-- пример INTERVAL_H1
corrTime=3 --Время МСК. C сервера время приходит без корректировки.
pFile="w:\\temp" --путь, где будет создаваться файл
cBars=10 --сколько свечей надо вывести
--настройка параметров

function OnInit()
	out_file=io.open(pFile .."\\"..tostring(tInstr)..".csv","w")
	is_run=(out_file~=nil)
	ds=CreateDataSource(classcode, tInstr, iNterval ) --создаем источник данных
	ds:SetUpdateCallback(NewChartData) --обновление последних данных
end

function strText(int)
	local m=tostring(int)
	local mLen=string.len(int)

	if mLen==1 then
		Output="0" .. tostring(m)
	else Output=m
	end
	return Output
end

function main()
	while is_run do
	local Size=ds:Size() --Получение количества всех свечей в источнике данных

	if cBars>Size then
		cBars=Size-1
	end

	for i=Size-cBars, Size, 1 do
		local O=ds:O(i) -- Значение цена открытия свечи
		local H=ds:H(i) -- Значение High для свечи
		local L=ds:L(i) -- Значение Low для свечи
		local C=ds:C(i) -- Значение Close для свечи
		local V=ds:V(i) -- Значение Volume для свечи
		local T=ds:T(i) -- Значение Time для свечи

		sTime=os.time(T)
		datetime=os.date("!*t",sTime)

		--вывод в файл
		out_file:write(tInstr..";"..tostring(iNterval)..";"..tostring(datetime.year)..tostring(strText(datetime.month))..tostring(strText(datetime.day))..";"..tostring(strText(datetime.hour + corrTime))..tostring(strText(datetime.min))..tostring(strText(datetime.sec))..";"..tostring(O)..";"..tostring(H)..";"..tostring(L)..";"..tostring©..";"..tostring(V).."\n")
		out_file:flush() --запись данных
	end
		out_file:close()
		sleep(1000)   -- приостановка на 1 секунду
		out_file=io.open(pFile .."\\"..tostring(tInstr)..".csv","w")
	end
end
  • обсудить на форуме:
  • Quik Lua

КВИК-->Lua-->Python. Трансляция данных из КВИКа в Питон в реальном времени

Всех с пятницей — самоизолятницей!
Представляю общественности Python-сервер (в 9 строк кода) для получения данных из КВИКа в Питон через луа-скрипт в режиме реального времени.
Для примера приведу получение тиковых данных по SIM0.
Нам понадобятся следующие ингредиенты.
1. Понятное дело КВИК, версии ниже 8 или 8.5.2 и выше.
2. Питон Jupyter Notebook (Anaconda 3)
3. Луа-скрипт, взятый из Jatotrader (в нем буквально изменено пару строк)
Как работает сервер можно посмотреть в этом видео (1 мин. 38 сек.) Ну и по правилам хорошего тона, естественно сам текст ниже.


( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

О математике в трейдинге

Прочитал у известного персонажа вот такое заблуждение 

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

Написана полная ерунда. Позволю себе процитировать фразу, с которой я начинал свой курс «Алгоритмическая торговля. Научный подход» :
Математика в общем случае не даст Вам ответа на вопрос КАК ДЕЛАТЬ? Но она даст Вам ответ на другой важный вопрос ЧТО ДЕЛАТЬ, А ЧТО НЕ ДЕЛАТЬ?

Что из этого следует? А то, что математика не может быть «эффективна» в поиске паттернов, она лишь может точно сказать: найденные Вами паттерны — это реальные закономерности или чушь собачья.

Как правильно заметил мальчик BuyBuy в своём топике: самый простой способ это сделать, это проверить свои паттерны на качественно (!) смоделированом случайном блуждании и если окажется, что и там все лучше самой доходной пассивной стратегии, то значит это чушь собачья.

Как сделать качественное случайное блуждание для последовательности свечей реального актива?

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

Опыт доработки QLua-скриптов для QUIK 8.5.2

    • 15 мая 2020, 16:29
    • |
    • _sk_
  • Еще
В новой версии терминала QUIK 8.5.2 произведён апгрейд языка Lua для написания торговых скриптов с версии 5.1 до версии 5.3. Это нужно для того, чтобы корректно обрабатывать 19-значные номера заявок и сделок на срочном рынке МосБиржи. Типа number в Lua 5.1 не подходит: там все числа хранятся как double, соответственно целые числа до 2^53 = 9 007 199 254 740 992 записываются без потери точности, а 19-значные номера заявок и сделок будут больше этой границы.

Версия Lua 5.3 обратно несовместима с Lua 5.1. Я почти не использовал внешние библиотеки и для меня было два важных изменения: отказ от module (это было сделано в версии 5.2) и введение целочисленной арифметики (версия 5.3).

Для избавления от использования module пришлось переработать много кода, хотя изменения были несложные. Приведу пример. Раньше был такой код Arrays.lua для работы с массивами:

--
-- Выполнение действий с массивами.
--

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


( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

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