Избранное трейдера Vitastic

по

Анализ и визуализация данных в финансах — анализ ETF с использованием Python

    • 18 сентября 2021, 00:55
    • |
    • Aleks
  • Еще
С проникновением аналитики во многие сферы нашей жизни она не могла обойти стороной финансы. В этой статье рассмотрим ее применение для анализа ETF с целью их анализа, в том числе и с применением визуализиции.

1. О данных

Для анализа будем использовать данные ETF c базовой валютой USD: FXCN, FXRL, FXIT, FXUS и FXRU. Временной ряд рассмотрим за три года с 2018 по 2020 года. Само исследование проведем в Google Colaboratory.

Как обычно в начале импортируем все необходимые библиотеки для дальнейшей работы.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from google.colab import files
import warnings
warnings.filterwarnings("ignore")
Сначала необходимо получить данные. Есть несколько способов. Мы воспользовались — взяли их с Finam в формате csv. Дальше написал функцию для обработки полученных данных и при помощи concat свел их в один датафрейм.

def changeDF(df):
  df['date'] = pd.to_datetime(df['<DATE>'].astype(str), dayfirst=True)
  name =[x for x in globals() if globals()[x] is df][0]
  df = df.drop(['<DATE>','<TIME>', '<OPEN>', '<HIGH>', '<LOW>'], axis=1)
  df = df.set_index(['date'])
  df.columns = [name+'_cl', name + '_vol']
  return df

fxgd_change = changeDF(fxgd)
fxrl_change = changeDF(fxrl)
fxit_change = changeDF(fxit)
fxus_change = changeDF(fxus)
fxru_change = changeDF(fxru)
fxcn_change = changeDF(fxcn)

etf = pd.concat([fxgd_change, fxrl_change, fxit_change, fxus_change, fxru_change, fxcn_change], axis=1)

etf.head()
В результате получили:

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

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

    • 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()
И вот результат прогнозирования:

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

Как я решил проблему с налогами у иностранного брокера?

В общем, в этом году налоговая прислала мне письмо счастья с просьбой уплатить налоги за 2018-2020 годы по счету, который нашли у меня на Кипре. 

Я сходил в налоговую, где инспектор мне объяснил, что надо каждую сделку из отчета брокера внести в журнал, пересчитать на рубли и посчитать налог.

Сказать что я был шокирован — ничего не сказать, потому что в моем брокерском отчете только за 2020 год было пару десятков тысяч сделок😁

Добрый инспектор сказала: ну ничего, посидите денька 3 и заполните. Нам и по 500 листов сдавали отчеты.

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

Что было дальше?

Я отправил Виктору брокерские отчеты за 3 года. Его бухгалтеры за 1 день посчитали мне налоги. Суммарно кстати получилось за 2020 год около 750 страниц😁
Далее я дал им логин/пароль от своего кабинета налогоплательщика и они автоматом занесли все данные туда.

Мне осталось лишь уплатить налог. Налоговая выставила счета, и я оплатил их со счета ИП, поскольку лично мне так было удобнее.

Кстати на прошлой неделе я получил очередное письмо счастья. Теперь просят явиться в налоговую и объяснить, почему я не уплатил налог вовремя.
Что им отвечать кстати? Кто знает?

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

Сюрприз от Альфа банка спустя 12 лет.

    • 25 июля 2021, 10:22
    • |
    • хм
      Популярный автор
  • Еще
На банки ру новая интересная история 
www.banki.ru/forum/?PAGE_NAME=read&FID=61&TID=383831&PAGEN_1=3#forum-message-list


Добрый день. Возникла такая ситуация:
19.07 пришло сообщение от Альфа банка об изменении номера телефона. И тут же 2 сообщения с паролями. Не придал этому значения, решив, что это ошибка.
22.07 приходят 2 сообщения с паролями и третье сообщение об изменении на тот же номер, что и первый раз. Сегодня решили заехать в отделение и узнать что это было. В итоге 15 тысяч кредитная карта от 19.07 и 125 тысяч кредит от 20.07.
Беру справки об операциях, еду в полицию, пишу заявление о мошенничестве. С номером кусп обратно в банк для подачи заявления. Теперь ждать 7 дней официального ответа от банка.
Единственный раз с банком имел дело 12 лет назад через гипермаркет электроники. Ни приложения банка, ни личного кабинета не было. Информацию из смс никому не сообщал, ни кто не звонил.
Как так могло получиться и как дальше действовать?


Меры борьбы с новой напастью.

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

Индикатор Загзаг для Quik'а - лучший демонстратор тренда (и волн Эллиота). Даром

Всем известен старинный индикатор Пробоя. Этот индикатор для Quik'а найдёте на smart-lab.ru/blog/704033.php
Когда-то по нему торговали, покупая на пробое вверх максимума предыдущих N баров и продавая на пробое минимума. Похоже, сегодня эта стратегия вышла из моды.

Возможен другой подход к отслеживанию экстремумов. Регистрировать пробой не на фиксированном числе баров (по ширине графика), но на фиксированном уходе цены от предыдущего экстремума (по высоте графика). Это столь же известный индикатор Зигзаг. Минимальный уход цены от предыдущего экстремума — размах зигзага, необходимый для смены тренда, я именую силой тренда.

Мало кто пытался строить торговую стратегию на основе Зигзага. Самое ходовое возражение против Зигзага — он не предсказывает тренд. Абсурд. Никто и ничто не предсказывает будущего!
Более того. Зигзаг даёт самое объективное и наглядное представление о чередовании трендов заданной силы.

Я некоторое время назад уже предлагал вниманию публики индикатор зигзага для

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

Жирный пост - "Как создать прибыльного робота" с кучей примеров

Всем привет. 

Примеры реальные и каждый из вас может это протестировать после прочтения.

Весь секрет будет описан ниже,много примеров.

Приступим.

Все тесты проводились через ботов на tradingview, это сильно упрощает анализ и тесты.

Названия всех роботов и ссылки на них будут ниже в посте.

--------------

 Что нужно?????

1 Найти бота/ботов для тестирования

2 Найти инструменты на которых он будет тестироваться

3 Депозит примерно от 300 долларов, для реальной торговли, а в тестах депо стоит 10.000к — но не суть, там все равно маленькая часть торгуется.

Итак, мы сразу убираем высокорисковые инструменты, такие как: Форекс, Криптовалюты/валюты, низколиквидные акции и все что стреляет на сотни процентов в день/неделю. Так же забываем про плечи и открытие позиций в шорт. Что оставляем? Оставляем акции: дивидендных аристократов, с реальным бизнесом, с капитализацией не менее 1 млрд. долларов, развивающие компании, которые благополучно пережили падение 2008/2014/2020 и держатся на плаву. Таких компаний много, часть из них будут в примерах.



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

Индикатор пробоя. В Quik'е можно всё (почти). Исправление

Исправлена печать повторных пробоев одного того же экстремума.
По просьбам играющих smart-lab.ru/vopros/703796.php
В Quik'е нельзя только предсказывать будущее.
Индикатор Breakout рисует на графике котировок точки пробоя для экстремумов заданного числа Num баров. Для последнего интервала Num баров показывает уровни экстремумов.
Значение Num и признак Print печати сообщений на пробои можно поменять через параметры индикатора.

Чтобы в Quik'е использовать этот индикатор, поместите нижеследующий код в текстовый файл Breakout.lua, а сам этот файл в подкаталог LuaIndicators в том каталоге Quik'а, где лежит файл info.exe.
Чтобы метки пробоев были виднее, индикатор следует поместить после графика котировок. Эти метки позволят на глазок определить прибыльность пробойной стратегии.

-- Ростислав Дмитриевич Кудряшов, СПб, 2021
-- Индикатор Breakout для Quik: min и max Num баров
Settings = {
  Name  = "_Breakout"
 ,line = {
    {Name = "Min"
    ,Color = RGB (255,0,0)
    ,Type = TYPE_LINE
    ,Width = 1}
   ,{Name = "Max"
    ,Color = RGB (0,255,0)
    ,Type = TYPE_LINE
    ,Width = 1}
   ,{Name = "Lwr"
    ,Color = RGB (255,255,0) -- Жёлтый
    ,Type = TYPE_TRIANGLE_DOWN
    ,Width = 1}
   ,{Name = "Upr"
    ,Color = RGB (0,128,255) -- Тёмно-Голубой
    ,Type = TYPE_TRIANGLE_UP
    ,Width = 1}
  }
 ,Num = 10
 ,Print = 1 -- или 0
}
Scan = 0 -- При загрузке Quik сканирует 1 раз

function Init()
  return #Settings.line
end

function OnChangeSettings()
  Scan = 0
end

function OnCalculate (index)
  local n, mn, mx, ini, fin, upr, lwr, printFlag
  n = Settings.Num
  if n < 1 or index <= n then
    if index == 1 then
      Scan = Scan + 1
      SetRangeValue (3, 1, Size(), nil)
      SetRangeValue (4, 1, Size(), nil)
    end
    return nil
  end
  mn = math.huge
  mx = -math.huge
  ini = index - n
  fin = index - 1
  for i = ini, fin do
    mn = math.min (mn, L(i) or mn)
    mx = math.max (mx, H(i) or mx)
  end
  printFlag = Settings.Print > 0 and index == Size() and Scan > 1
  lwr = GetValue (index, 3)
  upr = GetValue (index, 4)
  if not lwr and L(index) and L(index) < mn then
    if printFlag then
      message (Settings.Name ..": Dn ".. mn)
    end
    lwr = mn
  end
  if not upr and H(index) and H(index) > mx then
    if printFlag then
      message (Settings.Name ..": Up ".. mx)
    end
    upr = mx
  end
  if index == Size() then
    SetValue (ini-1, 1, nil)
    SetValue (ini-1, 2, nil)
    SetRangeValue (1, ini, fin, mn)
    SetRangeValue (2, ini, fin, mx)
  else
    mn, mx = nil
  end
  return mn, mx, lwr, upr
end -- OnCalculate()

Потерял пол миллиона при отличной торговой системе

Потерял пол миллиона при отличной торговой системе

После вывода первой настоящей прибыли с торгового депозита я обрел, можно сказать, крылья. Самая большая боль, которая меня преследовала все 9 лет на рынке – итоговые убытки – начала спадать. Я увидел, что моя торговая система работает, что я могу теперь спокойно зарабатывать на среднесрочной торговле, нужно лишь находить правильную точку входа, определять цель и выставлять заявку при достижении цены обозначенного диапазона. Если цена двигалась в мою сторону хотя бы на 2%, то я производил добор позиции и ставил мысленный стоп на цену изначальной покупки. Если цена шла против меня, то я откладывал 4% вниз и там производил добор позиции, усредняя цену и увеличивая объем. По моей ТС можно было делать до четырех таких доборов (то есть на расстоянии +10% или -20% от точки входа), что, как мне казалось на тот момент, является диапазоном с хорошим запасом и никаких стопов ставить не надо. Я так думал. И рынок, следуя постулатам первой главы моего повествования, убеждал меня в собственной правоте, подводя к готовящейся для меня ловушке.

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

Не стесняйтесь мечтать, или как выйти на пенсию в 70 лет.

Не стесняйтесь мечтать, или как выйти на пенсию в 70 лет.

 

Это было ещё в СССР.

Мне было примерно 21-23, я был старшекурсником, и шёл из НИИ, где у нас была практика, к метро.

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

Я шёл, довольный прошедшим днём, шёл и думал:

«Вот скоро я закончу институт, пойду работать в этот НИИ, буду получать рублей 120-130.

А хорошо было бы получать рублей 250!

И при этом не работать!»



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

Идеальный дефолт... или абсолютная ликвидность

Оригинал статьи, финансовый анализ и рейтинги российских компаний на сайте «Финансовый анализ предприятий ВДО». Переходите и подписывайтесь, чтобы не пропустить дефолт.

Как быстро оценить финансовое состояние предприятия и как увидеть назревающий дефолт? Для этого не надо быть гением от финансов. Достаточно сложить и поделить)))

Идеальный дефолт... или абсолютная ликвидность

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

❗ Рассчитывать коэффициент мы будем с помощью компьютера в конце статьи, а пока теория о том, как выглядит идеальный дефолт



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

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