Постов с тегом "программирование": 332

программирование


Самоизоляция - время, чтобы научиться новому!

Бачеров Алексей. В гостях FinversiaСамоизоляция и мои достижения❗️

Я уже писал, что самоизоляция — это прекрасный повод научиться чему-то новому. В своем посте «Чем я занимаюсь на самоизоляции❓», я достаточно подробно описал как реанимировал кое-какие свои старые компьютеры и ноуты, как я установил на них Linux Mint (с которого сейчас пишу настоящий пост), и как решил начать изучать Python, потому что у меня дома нет Matlab, а мне захотелось провести несколькорасчётов и исследований по измерению волатильности по метрике JPMorgan.

Сейчас я хочу поделиться результатами за чуть больше чем неделю. Я не каждый день занимаюсь изучением, поскольку на неделе ездил на работу, а дома, как всегда есть куча отвлекающих факторов и самым важным из них, конечно, являются дети. Но этот фактор я воспринимаю исключительно положительно 👍 Если суммировать все время которая я потратил на на ткущий момент по изучению питона, то получится около 20 часов.



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

Использование метода Монте-Карло для создания портфеля

    • 26 апреля 2020, 14:17
    • |
    • Aleks
  • Еще

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

В этом посте будет рассмотрено то, как оптимизировать портфель при помощи Python и симуляции Монте Карло. Под оптимизацией портфеля понимается такое соотношение весов, которое будет удовлетворять одному из условий:

  • Портфель с минимальным уровнем риском при желаемой доходности;
  • Портфель с максимальной доходностью при установленном риске;
  • Портфель с максимальным значением доходности

Для расчета возьмем девять акций, которые рекомендовал торговый робот одного из брокеров на начало января 2020 года и так же он устанавливал по ним оптимальные веса в портфеле: 'ATVI','BA','CNP','CMA', 'STZ','GPN','MPC','NEM' и 'PKI'. Для анализа будет взяты данные по акциям за последние три года.

#Загружаем библиотеки

import pandas as pd
import yfinance as yf
import numpy as np
import matplotlib.pyplot as plt

# Получаем данные по акциям
ticker = ['ATVI','BA','CNP','CMA', 'STZ','GPN','MPC','NEM', 'PKI']

stock = yf.download(ticker,'2017-01-01', '2019-01-31')


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

Как заработать на случайном блуждании. Часть 5. Послесловие

    • 13 апреля 2020, 21:11
    • |
    • Toddler
  • Еще

Господа!
Искренне надеюсь, что среди вас есть программисты.
Прошу, как говорится, войти в положение… Не всем же дано шарить в искусстве кодирования на каких-то инопланетных языках.

Вопрос: как из тикового архива в формате .csv, взятого, к примеру, с Дукаскопи, сделать такую вещь, по столбцам:

1. День недели (0, 1, 2, 3, 4, 5, 6)

2. Час

3. Минута

4. Секунда

5. Bid

6. Ask

7. Бит (0/1) принадлежности к реальной или псевдокотировке

Заполнены должны быть все строки таблицы посекундно. Т.е. за сутки должно сформироваться ровно 86400 строк таблицы.

Очень важно — если не было в данную секунду реальной котировки, записывается предыдущее значение.
В столбце 7 прописываем бит = 1, если котировка реальная, 0 — если псевдокотировка (т.е. предыдущее значение)

Может, есть уже у кого-нибудь готовый макрос для Excel? Али какая-нибудь программа? 
Если ни у кого ничего нет — скиньте хотя бы алгоритм, как это делать.

В обмен — будущий Грааль. А?

С уважением,
Toddler.

Вопрос программистам знакомым с API от IB

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

есть ли среди вас те, кто успешно работает с этим API? 

суть вопроса — получение в реальном времени данных по выбранным опционам, с целью дальнейшей трансляции данных на график в МТ4

с дальнейшей возможностью отправления ордера с этого графика через API — это в будущем.

Заранее благодарю за отклик.

Общий финансовый анализ на Python (Часть 3)

    • 05 апреля 2020, 12:51
    • |
    • Aleks
  • Еще

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

Сначала немного теории:

О линейной регрессии

Линейная регрессия используется в качестве прогнозирующей модели, когда предполагается линейная зависимость между зависимой переменной (переменная, которую мы пытаемся предсказать) и независимой переменной (переменная и/или переменные, используемые для предсказания).



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

Тинькофф API (поделитесь опытом)

Кто работал с Тинькофф API?

Поделитесь, пожалуйста, опытом работы

Какие подводные камни есть? Интересные фичи? И так далее

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

Общий финансовый анализ на Python (Часть 2)

    • 22 марта 2020, 13:48
    • |
    • Aleks
  • Еще
Ну что продолжим?

Скользящее окно(Moving Windows)

В заголовке я привел дословный перевод. Если кто меня поправит, и другой термин применяется — то спасибо.

Смысл скользящего окна– с каждым новым значением функция пересчитывается за заданный период времени. Этих функций большое количество. Для примера: rolling.mean(), rolling.std(), которые чаще всего и используют при анализе движения акций. rolling.mean() — это обычная скользящая средняя, которая сглаживает краткосрочные колебания и позволяет визуализировать общую тенденцию.

# Выделяю скорректированную цену закрытия 
adj_close_px = sber['Adj Close']

# Вычисляю скользящую среднию
moving_avg = adj_close_px.rolling(window=40).mean()

# Вывожу результат
print(moving_avg[-10:])
Общий финансовый анализ на Python (Часть 2)
Дальше построим график, чтоб лучше понять то, что получается в результате работы данной функции:
# Вычисление короткой скользящей средней
sber['40'] = adj_close_px.rolling(window=40).mean()

# Вычисление длинной скользящей средней
sber['252'] = adj_close_px.rolling(window=252).mean()

# Построение полученных значений
sber[['Adj Close', '40', '252']].plot(figsize=(20,20))

plt.show()


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

Что делать? Из трейдера в программисты

Совет всем кто торгует больше полутора лет а результатов нет, прям стишок.
Очень коротко о себе, торговал 6 лет (2 сам, 2 в инвест компании, 2 в банках(СВА, и Откр) результатов выдающихся нет(сам около 0, в инвест комп была пирамида на облигах с дох 12%, в банке около 20%, и потом пчти все в 0 после 14 года). Сейчас программист зп ~200к, бэкенд питон.
Если б не потерял 6 лет на дрочку в торговле сейчас была бы зп 300-500К.
После вторника куча постов появилась, я все потерял, но я встану с колен соберу деньжат, прочитаю Кукурузкина, Герчика, Васю и вернусь и все бу дет по другому, да них*я не будет, ничего не поменяется, ты так же будешь сидеть с потными ладошками и торговать 30 фьючерс Ри, и будешь рад как ребенок заработав 30К в день, и наоборот хмур как туча, зол на себя, семью, аллаха, погоду и тд и будешь дальше проебыв*ать свое время и жизнь.

Сейчас it является лучшим направлением развития из всех существующих для среднестатистического человека.
Под it я понимаю программистов и смежное, например веб дизайнеры, верстальщики, аналитики. Мне проще говорить за программистов, коим я и являюсь, в Москве, да в регионах посложнее с вакансиями и зп ниже чем в столице раза в 2, но главное время и желание.

Безграничный рост, да может миллиардером не стать, как половина трейдеров смартлаба, но 100-300 тыс зарабатывать в мес реально, оттуда где есть интернет, да нужно потратить время на изучение, но его сейчас тратите на бесполезный трейдинг а результата нет и никто не может его гарантировать, и статистика не на вашей стороне, да вы думаете что вы избранный и тратя по 10-12 часов в день вы скоро будите видеть кукла, невидимую руку, точки входа и выхода, предсказывать график на год вперед, да хер там. 

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

Какой то сумбур написал)) В общем все в it, все реально, трейдинг это то что вам точно не нужно, легких денег не бывает и мое мнение что трейдингом ни в каком виде заработать нельзя, главное не потерять, хотя поправочку наверное внесу, трейдингом можно заработать когда ты прикрыт с финансовой стороны и потеря депозита будет имен не самое сильное влияние на псих состояние, и вот когда ты прикрыт и трейдинг типа хобби, ты спокойно все оцениваешь и начинает получатся только тогда можно смещать фокус в сторону торговли.
В it сидишь, что то делаешь, нет авралов, зп большая, ты развиваешься постоянно ты и в 50 будешь программистом, а если еще и не сидел на месте ты будешь ТОПовым  программистом, зал на этаж ниже, бассейн в 200 метрах, настольный теннис, массажный кабинет, куча других плющек.
Кто живет в Москве обязательно сходить на экскурсию в офис mail, yandex, avito, посмотреть как можно работать и как норм компании относятся к работнику


Супер ускорение расчета индикаторов

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

Например, был ценовой ряд из 6-ти элементов:

1.104, 1.102, 1.105, 1.106, 1.103, 1.101 

Найдем его интегральное представление (начнем с нуля):

0.0, 1.104, 2.206, 3.311, 4.417, 5.52, 6.621

Чему будет равно SMA за последние 3 элемента? Достаточно посчитать разницу: 6.621 - 3.311 и разделить ее на 3.

SMA(3) = (6.621 - 3.311)/3 = 1.103

Убедимся, что SMA(3) найдено верно. 

(1.106 + 1.103 + 1.101)/3 = 1.103

Таким образом можно найти SMA с любым периодом, совершив всего навсего одну операцию вычитания и одну операцию деления. Это позволит гораздо быстрее получить набор значений индикаторов типа SMA, RSI, STD_DEV.
Вроде все хорошо, НО НАДО ПОМНИТЬ, что если использовать тип данных с плавающей точкой, то у нас будет накапливаться ошибка. Поэтому ценовой ряд лучше сначала преобразовать в целочисленный тип. Для этого достаточно для 5-ти значных котировок умножить цену на число 100 000.

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




Про программирование в алготрейдинге и полезные навыки

По моему опыту в алготрейдинге (под алготрейдингом я подразумеваю поиск закономерностей и их использование) большая часть времени уходит на исследования, это примерно 90% времени. Однако, часто можно услышать критику примерно следующего плана.
  • Нужно писать код на питоне/джаве, можно в два счета набросать торгового робота. Нафиг Си и С++, сложна.
  • Не нужно изобретать велосипеды, все уже сделано за нас. Зря потратить время, бери готовое и действуй. Метатрейдер в помощь.
  • Нужно всегда писать чистый код, а не говнокод. 
Если все это верно, то получается, что успех в алготрейдинге (да и в IT) должен зависеть от этих факторов. Однако, к примеру, на практике большая часть доли в проекте принадлежит обычно не программистам (т.е. людям, которые вообще могут не уметь программировать), хороший код не обязательно принесет много денег, да и сложные алгоритмы порой без разницы, на каком языке реализовывать, быстрее они не напишутся.

Если объяснить проще, то успех не равен чистоте, хорошести и прочим характеристикам кода. Тогда почему происходит акцентуация на подобные факторы? 

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

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