Избранное трейдера Oblitus
Прочитал за вечер книгу Стива Донахью «Зыбучие пески. Как пересечь пустыню перемен». И она меня зацепила метафорой жизни как пересечения пустыни.
Приведу цитату из нее:
Метафорически нашу цивилизацию можно охарактеризовать как цивилизацию альпинистов, однако жизнь и наша культурная доминанта находятся в вопиющем противоречии друг с другом. Мы живем в обществе, ориентированном на достижение определенных целей, ведущих к неким запланированным результатам.
Определение проблем, постановка задач и выполнение планов рассматриваются в качестве ответов на те вызовы, которые возникают перед нами. Это — этика покорителя горных вершин.
Альпинисты видят свою цель. Горный пик всегда маячит перед ними. Он вдохновляет их и влечет наверх. Достигнув вершины, вы не сомневаетесь в успехе, вы точно знаете, что закончили свое дело.
Суть альпинизма — в достижении определенного места назначения. Перед вами стоит вполне осязаемая цель, конечный результат которой может быть выражен словами. Откладывание денег на жизнь после выхода на пенсию можно сравнить с восхождением на гору. Ваша цель определена. Вы знаете, сколько денег вам нужно, чтобы спокойно жить, достигнув пенсионного возраста.
Однако если ваши цели не поддаются четкому словесному определению, если ваша жизнь — не есть рывок к финишной ленточке, тогда вы находитесь в процессе того, что может быть названо «пересечением пустыни».
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()И вот результат прогнозирования:
Всем известно, что перед тем как купить те или иные акции, нужно сделать анализ в виде «домашней работы»(это касается среднесрочных и долгосрочных инвесторов). Лично мне в этом нелегком деле помогают скринеры. Как правило finviz.com, stockrow.com и на финишной стадии — платный сервис finbox.com.
Сайты finviz.com и stockrow.com предусматривают платные и бесплатные сервисы. В бесплатном использовании эти сайты хоть и дают некий набор фильтров, но глядя на эти цифры в табличках, складывается такое чувство, что «Смотреть можно, а трогать нельзя». А поскольку это касается моих денег и денег людей, которые мне доверяют, принимать торговое решение, не пощупав эти цифры самому, считаю большой ошибкой в анализе.
Раньше я был верен только Excel, но с недавних пор стал понимать, что хорошей альтернативой являются Google таблицы. Вообще все сервисы Google отлично работают с веб-данными.
В этом посте я расскажу, как можно импортировать данные с сайта finviz.com в Google таблицы.
Я инвестирую на американском рынке с 1999-го года, это 22 года
Кроме того, у меня EMBA от ведущей мировой школы (которая когда-то была номер 1 в мировом рейтинге, правда сейчас скатилась на 9-е, что тоже неплохо)
И еще — у меня несколько небольших, но прибыльных бизнесов.
Короче — мне кажется, я немного разбираюсь в предмете. Вот вам несколько постулатов инвестирования. Они вам могут показаться бредом и русофобией, но извините, других постулатов у меня для вас нет.
Мы продолжаем делиться с вами полезными источниками информации для принятия инвестиционных решений.
Cегодня будет представлен список более продвинутых источников, которые, на наш взгляд, содержат в себе более объективную и полезную информацию для самостоятельного анализа. Они зачастую являются первоисточниками для всех тех новостей и аналитических сводок, с которыми вы знакомитесь на различных форумах, сайтах и телеграм-каналах, в том числе и на нашем :)
Что ж, давайте пройдемся по ним:
fred.stlouisfed.org/ — онлайн-база данных, состоящая из сотен тысяч графиков экономических данных из множества национальных, международных, государственных и частных источников. Призван помочь пользователям ознакомиться со свежими данными макроэкономической ситуации (преимущественно в США) + графики содержат довольно длинный исторический горизонт (от нескольких лет до нескольких десятков лет).
www.federalreserve.gov/ — сайт Федрезерва США. В разделе News & Events — Press releases наиболее интересными могут быть публикации с заседаний Федерального комитета по операциям на открытом рынке ФРС США (FOMC). Да-да, это те самые заседания, на которых принимаются решения о будущем «печатного станка» и ставки ФРС.
# подключаем либы from loguru import logger from notifiers.logging import NotificationHandler # прописываем параметры телеграм бота, от чьего имени и куда слать, где их взять думаю сами разберетесь params = { 'token': 'dfdfsfasdfljsahdfkljhasdfklj', 'chat_id': 'dfkdsflksdjfls;kfjas;ldkf' } tg_handler = NotificationHandler("telegram", defaults=params) # добавляем в logger правило, что все логи уровня info и выше отсылаются в телегу logger.add(tg_handler, level="INFO")
logger.info("Слава роботам! Убить всех человеков!")