Блог им. 3Qu |Прямая пропаганда Python.

    • 10 февраля 2022, 17:01
    • |
    • 3Qu
  • Еще
Спрашивал многих — на чем вы моделируете и отрабатываете стратегии? Ответы — Луа, С #, Delphi, C++, Java, php и пр.  Хорошие языки, спору нет. Но хороши они для релиза. И лишь немногие при моделировании стратегий работают с Python.
Чем хорош Python?.. Это простота изучения — с нуля можно начать за считанные дни. Это громадные библиотеки — математические, машинное обучения, преобразования, работа с векторами и сложной графикой. Это простота моделирования — слабать стратегию можно за вечер.
Да, когда придет время релиза, придется все это переписывать на другой язык, но библиотеки можно оставить из Python — они оч быстрые, написаны на С++. Интерфейсы ко многим языкам имеются.
Для проверки ваших рыночных гипотез и моделирования стратегий переходите на Python. Чем могу, помогу. Но не обучаю, для этого книги есть- ничего сложного. По книгам и среде посоветую, для начала.

PS. Так, для справки, если покопаетесь в инете, то увидите, что NASA уже почти все пишет и моделирует на Python, и уже потом критические участки кода переводит на С++.

Блог им. 3Qu |Жив ли трейдинг?

    • 06 февраля 2022, 15:43
    • |
    • 3Qu
  • Еще
Трейдинг скорее мертв чем жив. ©
Объясняю.
До 14 года я зарабатывал 30 п со сделки на МОЕХ, и это было 30 руб или 1 бакс. И это было хорошо.
До 21 года я зарабатывал 30 п со сделки, и это было 30 руб, но уже 0.5 бакса. И это было, в общем, уже не очень, но еще терпимо.
Сейчас я зарабатываю 30 п со сделки, и это по прежнему все те же 30 руб, но уже только 39 центов.
Еще немного и трейдинг потеряет всякий смысл.

PS кроме того, как очень правильно заметили в комментариях, сейчас и бакс уже не тот.
Стало быть, это уже даже не 39 центов, а сильно меньше, по сравнению с центами 2014 года, взятыми за начало отсчета.
Т.е., топик даже оптимистичней чем реальность.)

Блог им. 3Qu |Надо быть проще!

    • 03 февраля 2022, 19:20
    • |
    • 3Qu
  • Еще
Когда-то давным-давно я был широко известен в узких кругах, и меня часто приглашали на всяческие конференции, семинары и прочие сборища, типа защит диссертаций и прочее. Хорошее время было, интересное.
И вот, однажды, пригласили меня на семинар в институт Стеклова. Обсуждались вопросы математического моделирования сложных систем. Докладчиком был некий д.ф.м.н. — доска, плакаты, обсуждения, потом кофе и обсуждение уже в узком кругу.
Вопрос ставился так. Имеется некая сложная система для изучения и прогнозирования поведения которой требуется построить мат модель. Какова может быть предельная точность такой модели?
Вопрос был актуален в связи с тем, что в институты стала поступать современная вычислительная техника с хорошим быстродействием и большим объемом памяти, что, казалось бы, позволяло существенно расширить и уточнить многие предыдущие модели, что было оч заманчиво. Однако, отчего-то, какого-либо ожидаемого существенного прогресса не последовало.
Одним из выводов доклада был следующий: начиная с какого-то порога, дальнейшее усложнение модели перестает давать прирост ее точности, а еще дальнейшее усложнение и уточнение приводит к потере устойчивости модели.

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

Блог им. 3Qu |Грааль и Мальчик Buybuy.

    • 01 февраля 2022, 20:05
    • |
    • 3Qu
  • Еще
Недавно написал топик Грааль для совсем ленивых. Он не снискал большой славы, т.к. аборигены не любят и не верят в наличие простых решений, а Грааль был прост до предела.
Суть Грааля состояла в следующем. Цитата:
Есть всем известный факт, что бумага (актив) с большей вероятностью сохраняет свое текущее состояние, чем изменяет его на противопроложное. Т.е., если бумага росла, то, скорее, и дальше будет расти. Если падала, то и дальше будет падать.
В этом легко убедиться просто глянув на абсолютно любой график — в основном актив либо растет, либо падает. Точки перелома на графике не так уж много места занимают.
Итак, смотрим на график, видим, актив растет(падает), стало быть, скорее всего, будет расти(падать) и в дальнейшем. Входим в соответствующую сделку, и ждем.
Если ошиблись, или актив пошел не в нашу сторону, закрываем сделку.
Повторяем процедуру сначала.

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

Блог им. 3Qu |О фильтрах.

    • 29 декабря 2021, 21:04
    • |
    • 3Qu
  • Еще
Недавно, в очередной раз, потребовался мне фильтр 3-го порядка. Это такая штука, вида:
y(t) = a0*x(t) — b0*y(t-1) — b1*y(t-2)- b2*y(t-3).
Ничего особо сложного. Однако, эта штука, в зависимости от значений коэффициентов а и b, уже может выполнять практически бесконечное число различных функций, и использоваться во множестве устройств и алгоритмов совершенно разного назначения. Многие из таких функций и методики расчета коэффициентов для них уже описаны в литературе, другие — эт вы уж как-нибудь сами — вся необходимая теория тоже уже разработана и изложена. Книжка всего-то ~600 стр, потребная математика уровня полного 3-го курса соответствующих специальностей.
В книге описаны методики расчета как типовых, так и специфических пользовательских фильтров, и не слова не говорится, а куда же эти фильтры девать, где применять, как выбрать их параметры для конкретного применения, и куда ставить. Фильтры редко применяются сами по себе, и обычно являются лишь частью какой-либо системы. В общем, зачем вам все это нужно и нужно ли вообще — это уже ваши проблемы.

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

Блог им. 3Qu |Хочу вернуться к истокам.

    • 23 декабря 2021, 17:06
    • |
    • 3Qu
  • Еще
Помнится, где-то до 2012 года у меня были простенькие автоматические ТС — несколько модифицированных МАшек, какие-то дополнительные расчеты — на вход в сделку всего-то 32 параметра, на выход немногим меньше. Параметры ТС наруливались за каких-то 2-3 дня. И я вполне понимал как и почему работает ТС.
Сейчас какие-то сложные расчеты, не оч понятные параметры с непонятным смыслом. Вроде, все пока работает, но уже изменить что-то или понять, почему это вдруг не сработало не оч реально.
И это как-то всё само образовалось — там упростили, здесь объединили, и если по отдельности это имело смысл, то итог — это уже нечто абстрактное, не оч поддающееся интерпретации и толкованию.
Вот, сегодня и подумал, что надо вернуться к истокам и сделать прозрачную ТС, с понятными функциями. Иначе, дальше можно вообще запутаться.
Сложно будет — за много лет многое из функционала уже объединено между собой, и срослось так, что не оч разорвешь. С одной стороны, быстро и удобно — ставишь готовый блок, и думать не надо — все уже изначально отлажено и сразу работает. А с другой…

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

Блог им. 3Qu |Как я потерял веру в человечество.

    • 22 декабря 2021, 15:59
    • |
    • 3Qu
  • Еще
Было это в году 11-м или 12-м. В эти годы Финам зачастил приглашать меня на свои семинары. Ходил только на 3 из них. Первый семинар в подвале Финама (они в основном там все проходили) был оч неплох. О чем конкретно, уже не помню, но в перерыве давали халявный кофе с булками и баунти-сникерсами. Такая теплая дружественная обстановка. В перерыве прибился ко мне какой-то мужичек, который что-то говорил. Задним числом, по косвенным признакам, подозреваю, что это был наш Хамстер.
Второй семинар был о том, как зарабатывать на рынке. Лектор телосложением напоминал маршала Жукова, но ничего конкретного сказано не было. На любой вопрос ответ был стандартный — это вы узнаете на курсе, который вы оплатите. Могли бы, хоть кофием угостить.
Третий семинар — это был монолог нашего АГ. До этого я его уже неск раз видел-слышал на семинарах РТС и конференциях по алготорговле. АГ у меня прочно ассоциировался с длинными хвостами.
На этот раз АГ рассказывал о своей торговой системе, не помню, приглашал ли он делать взносы и стать инвесторами.) Наверное сейчас, после многих лет, что-нибудь перевру, но основная суть его системы: проводим линию регрессии, определяем стандартное отклонение, задаем порог отклонения котировок от линии регрессии, и при превышении этого порога покупаем или продаем активы. Это называется — пороговое устройство. В теории сигналов — это самая простейшая и самая примитивная обработка, которую можно придумать.

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

Блог им. 3Qu |Хотите попрогнозировать рыночные котировки? Нет проблем - вот код.

    • 14 сентября 2021, 22:46
    • |
    • 3Qu
  • Еще
Итак, код обучения и прогнозирования нейросетью рыночных котировок на 5 минут.
import sqlite3 as sql
from scipy.stats import logistic
import math
import numpy as np
import numpy.random as rnd
import matplotlib.pyplot as plt
from sklearn.neural_network import MLPRegressor

sdata =[]
sql1= "select ticker, date, open, high, low, close, vol \
    from Hist_1m where ticker_id=1 order by Date;"
con=sql.connect('C:/Users/ubase/Documents/StockDB/StockDB21.sqlite')
cur=con.cursor()
cur.execute(sql1)
sdata=cur.fetchall()
con.commit()
con.close()

Ldata = len(sdata)
N = 8000 # Количество сделок
ld = 5 #Продолжительность сделки
NNinterval = 20 # Количество входов NN

# Генерация случайных чисел
rng = rnd.default_rng()
rm=rng.integers(0, Ldata, N )

class Candle:
    tr = 0
    dt = 1
    o = 2
    h = 3
    l = 4
    c = 5
    v = 6
    
cl = Candle
DataC =[sdata[i][cl.c] for i in range(0,Ldata)]

# sigmoid линейность до 0.5
def sigmoidnorm(x, alfa = 0.9, xmin = -1.3, xmax = 1.3):
    return (xmax - xmin)*((1 / (1 + math.exp(-x*2.0*alfa))) - 1.0) + xmax

x = [0.002 * i - 3 for i in range(0,3000)]
y = [sigmoidnorm(x[i]) for i in range(len(x))]


plt.plot(x,y)
plt.grid()
plt.show()

# формируем сделки.
def DealsGenL(rm,ld):
   #Lm = len(rm)
   ix = []
   x = []
   pr = []
   
   for i in range(0,N):
        if rm[i] + ld < Ldata and rm[i] - NNinterval - 1 > 0:
            delta = (sdata[rm[i]+ld][cl.c] - sdata[rm[i]][cl.c])/sdata[rm[i]+ld][cl.c]*100
            x0 = [sigmoidnorm((sdata[rm[i] - j][cl.c] - sdata[rm[i]][cl.c])/sdata[rm[i]][cl.c]*100) \
                 for j in range(0, NNinterval)]
            ix.append(rm[i])
            x.append(x0)
            pr.append(delta)
   return ix, x, pr


Ix, X, Pr = DealsGenL(rm,ld)



Ib = 0
Ie = 100

plt.plot(X)
plt.legend()
plt.grid()
plt.show()


plt.plot(Pr, label = 'Prof')
plt.legend()
plt.grid()
plt.show()


regr = MLPRegressor(hidden_layer_sizes = [30,20,15,10,5], \
                    max_iter=500, activation = 'tanh')

regr.fit(X, Pr)
Out = regr.predict(X)

plt.plot(Pr, Out, '.')
plt.grid()
plt.show()
И вот результат прогнозирования:

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

Блог им. 3Qu |Ох, уж, эти выбросы.

    • 04 сентября 2021, 00:24
    • |
    • 3Qu
  • Еще
При анализе рыночных данных оч мешают выбросы. Гэпы всякие, которые зашкаливают за все нормальные диапазоны, и в течение длительного времени забивают все индикаторы и весь анализ. Вот такие, например:
Ох, уж, эти выбросы.
Здесь бы до 1.5 -1.7 все ограничить, и нормально бы было.
Для этого обычно применяются всяческие ограничители, типа сигмоидов и им подобных:
Ох, уж, эти выбросы.

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

Блог им. 3Qu |Проектирование ТС. 4. Машинное обучение.

    • 31 августа 2021, 15:40
    • |
    • 3Qu
  • Еще

Ещё с самого начала, в первой части, писал, что проект является экспериментальным, что из него получится я не знаю.Получится — хорошо, не получится — останутся наработки, которые могут пригодиться в дальнейшем.Тем не менее, обещал освещать ход проекта.
На сегодняшний день удалось получить на тестах некоторую незначительную и неустойчивую прибыль. Эти копейки не произведут впечатления на читателя — такое вы и сами получали неоднократно. Даж позориться не хочется.)
Но, что это дало? Это позволило алгоритмически более-менее разграничить области возможных лонгов и шортов.
Дальше есть следующие возможности:
а. Накручивать на ТС различные индикаторы и долго и нудно подбирать их параметры и условия входа в сделку и соответствующую логику.
в. Попробовать использовать для построения ТС методы машинного обучения (МО. Тем более, какие-то наработки в этой области у меня уже есть.
«И так как с детства его влекло к технике, то он всею душою отдался пункту «в» (тайное похищение чужого имущества, совершенное с применением технических средств или неоднократно».© Пункт «в» мне тоже более интересен, однако я совсем не исключаю и параллельного применения элементов из пункта «а».
Для тех, кто не в теме, немного подробней.
Если мы возьмём рыночные данные, каким-то образом их идеально подготовим, попробуем обучить какое нибудь МО (нейросеть (НС), скажем), то мы, скорее всего, сразу получим великолепные результаты. Единственным недостатком этих результатов будет то, что прибыль мы сможем получить только на той истории, на которой мы обучали МО. На реале и даже на другом отрезке истории такая ТС работать скорее всего не будет.
Рыночные зависимости очень неявные, встречаются в ценовом ряду нечасто и выделить их на общем фоне удачных и неудачных сделок не представляется возможным. В результате МО при обучении находит некоторые зависимости или псевдозависимости имеющиеся только в обучающей последовательности, нигде более не встречающиеся и обучается им. Т.е., псевдозависимости оказываются более явными, чем то что мы пытаемся найти.
Как с этим планируется бороться, это, возможно, обсудим уже в следующий раз.


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