Постов с тегом "python": 174

python


Как скачать исторические котировки c yahoo finance и финама с помощью python

В одной из прошлых заметок мне нужно было скачать исторические котировки по 650 активам. Часть из них на российском рынке, часть крипта и большая часть на рынке США. Всё, что касается крипты, валют и американского рынка качал с yahoo finance. Российский рынок качал с финама. Естественно качал с помощью питона. Дальше расскажу как это можно повторить.

Yahoo finance и python


Пакет yfinance. Гитахб github.com/ranaroussi/yfinance Установка командой: pip install yfinance

Можно качать не только дневные данные. Интервалы из документации: 1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo На практике данные меньше дневных сильно ограничены. Например, часовые доступны за 60 последних дней.

Перейдём к делу, как качать котировки:

import yfinance as yf

data = yf.download(«TSLA», start=«2017-01-01», end=«2017-04-30»)

Как добавить интервал:

data = yf.download(«TSLA», start=«2017-01-01», end=«2017-04-30», interval='1h')

Данные скачиваются в датафрейм. Датафрейм можно сохранить в csv:

data.to_csv('tsla.csv')

Для тикеров с московской биржи нужно добавить постфикс .ME. То есть SBER и GAZP превращаются в SBER.ME и GAZP.ME Для валют тикеры выглядят вот так RUBUSD=X Для криптовалют BTC-USD

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

Вопрос программистам. На чём быстрее писать и проверять торговые системы?

Сейчас пишу на MQL, есть демо-аккаунт у брокера с кучей интересных мне тикеров (не только валюта). Т.е. по-сути уже есть инструмент для бэктестов и бонусом бесплатная маркет-дата (я не изучаю HFT, поэтому погрешность тиков от метака меня устраивает). Не устраивает сам язык, очень топорная работа с массивами, устаревшая IDE, отсутствует функциональная парадигма, не редактируемый фронтенд с выводом статистики системы, невозможность применения навыков MQL на международном рынке труда (я программист), поэтому хочу перейти на питон и какой-нибудь quantopian. Но есть вопросы:

1. Изучив эти 2 новые технологии, будет ли выйгрыш во времени написания бэктестов?
2. Хорошо ли дружат quantopian и подобные системы с csv форматом маркет-даты из метака? Меня интересуют 5-15 минутные свечи, поэтому какой-нибудь yahoo finance не подходит. Вообще этот вопрос не кретичен, думаю всегда можно переформатировать в удобный формат или найти другую бесплатную и удобоваримую маркет-дату в другом месте.
3. Есть ли решения на питоне лучше, чем quantopian?

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

Как слать сообщения в телеграм из питона в три строчки

Удобно когда бот шлёт сообщения в телеграм, а не в лог файл. Как это можно сделать в python? Очень просто.

Как слать сообщения в телеграм из питона в три строчки

Шаг 1. Устанавливаем либу loguru. Вам же нужно логирование в боте? Через loguru настраивается парой строчек.
Шаг 2. Устанавливаем либу notifiers которая шлёт сообщения куда угодно тоже парой строчек.
Шаг 3. Настраиваем

# подключаем либы
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")

Я у себя настроил уровень info. Использую его как раз для сообщений в телегу. А вот debug сообщения в телегу уже не приходят. Нечего эфир засорять. Подробнее про уровни логов можно почитать в справке docs.python.org/3/library/logging.html#logging-levels

Шаг 4. Отправляем сообщение
logger.info("Слава роботам! Убить всех человеков!")

Если не нужны логи, можно слать просто через notifiers.

Теория - получение OHLCV из тиковой таблицы

Всем привет!

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

Я разработчик, пишу инструмент на C# по переводу тиковой таблицы в 1-минутную с OHLC-данными и объемом. Работаю с фьючерсами.
Прошу помочь разобраться, поделиться опытом. Может кому-то тоже будет полезно. 

В итоге, я хочу получить 5 разных OHLCV-данных:
1. OHLCV цен контрактов.
2. OHLCV объема (не цены, а объема) контрактов на покупку. Это о том, сколько всего контрактов на покупку в течение 1 минуты.
3. OHLCV объема контрактов на продажу. Это о том, сколько всего контрактов на продажу стоит в течение 1 минуты.
4. OHLCV объема заявок на покупку. Это о том, сколько всего заявок на покупку стоит в течение 1 минуты.
5. OHLCV объема заявок на продажу. Это о том, сколько всего заявок на продажу стоит в течение 1 минуты.

Я в финансовой теме новичок, пытался разобраться, но боюсь ошибиться.
В таблице есть T-строки (Trade, примеры полей: <ACTIVITY.DATETIME>,<TRADE.PRICE>,<TRADE.SIZE>), Q-строки (Quote, поля: <ACTIVITY.DATETIME>,<BID.PRICE>,<BID.SIZE>,<ASK.PRICE>,<ASK.SIZE>), так же в первой H-строке заголовка (Header) есть поля <YEST.TRADE.CLOSE>,<YEST.TRADE.VOL> — это данные предыдущего дня — последняя цена закрытия, последний объем. Пример таблицы скопировал ниже.



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

Оптимизации портфеля с помощью Python и PyPortfolioOpt

Портфельная теория Марковица

Портфельная теория Марковица(далее ПТМ) (Modern portfolio theory) — разработанная Гарри Марковицем методика формирования инвестиционного портфеля, направленная на оптимальный выбор активов, исходя из требуемого соотношения доходность/риск. Сформулированные им в 1950-х годах идеи составляют основу современной портфельной теории.

Основные положения портфельной теории были сформулированы Гарри Марковицем при подготовке им докторской диссертации в 1950—1951 годах.

Рождением же портфельной теории Марковица считается опубликованная в «Финансовом журнале» в 1952 году статья «Выбор портфеля». В ней он впервые предложил математическую модель формирования оптимального портфеля и привёл методы построения портфелей при определённых условиях. Основная заслуга Марковица состояла в предложении вероятностной формализации понятий «доходность» и «риск», что позволило перевести задачу выбора оптимального портфеля на формальный математический язык. Надо отметить, что в годы создания теории Марковиц работал в RAND Corp., вместе с одним из основателей линейной и нелинейной оптимизации — Джорджем Данцигом и сам участвовал в решении указанных задач. Поэтому собственная теория, после необходимой формализации, хорошо ложилась в указанное русло.



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

Быстрый бектестинг стратегии на python с pandas

Я уже давно использую для бектестов python и pandas. pandas это библиотека для работы с матрицами и её прелесть в том, что она оперирует векторами и работает ГОРАЗДО быстрее, чем обычные циклы. Для того, чтобы сохранить это достоинство при бектестах я использую логарифмическую доходность (log-return на английском). Не ручаюсь за русские термины, так как узнал про них из англоязычных статей. Написанное ниже не истина в первой инстанции, а моя попытка разобраться как это всё работает чтобы применять на практике. Если я не прав, напишите. Я хоть и защищал кандидатскую диссертацию, но не по математике или экономике.

Немного теории



Логарифмическая доходность — разница стоимости актива в разные промежутки времени в процентах. Рассчитываеся по такой формуле:  
Быстрый бектестинг стратегии на python с pandas


Формула для расчёта логарифмической доходности, логарифм натуральный

Теперь на примере акций теслы. Цена по дням:  

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

Простой бот для крипто биржи Deribit

Нашёл тестовое задание на разработчика в один фонд. Само задание можно посмотреть в файле. Нужно написать робота для крипто биржи Deribit. Из требований:
1. Написать на python 3
2. Нужно использовать asyncio так как API Deribit работает через websockets
3. Для управления зависимостями использовать poetry
4. Запуск робота через docker и docker compose
5. Написать пару тройку юнит тестов
6. Данные по сделкам сохранять в mysql базу данных.

Не долго думая решил его закодить, потренироваться лишний раз в программировании, заодно разобраться в API Deribit.

Базу данных использовал sqlite. Юнит тесты пока не делал.

Бот можно использовать как пример работы с API Deribit. Код работает как есть без всяких гарантий.

Ссылку на гитхаб можно найти у меня в телеграме: t.me/zenoftrading/68
  • обсудить на форуме:
  • Deribit

Использование API Fmp Cloud для отбора акций по дивидендам на Nasdaq с помощью Python

    • 21 марта 2021, 20:02
    • |
    • Zmey56
  • Еще

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

Что такое дивидендная доходность?

Возьму определение из Википедии. Дивиде́ндная дохо́дность (англ. dividend yield) — это отношение величины годового дивиденда на акцию к цене акции. Данная величина выражается чаще всего в процентах.

Пример

При цене акции ОАО «Лукойл» 1124,37 рублей и дивиденде 28 рублей на акцию дивидендная доходность будет равна:

Использование API Fmp Cloud для отбора акций по дивидендам на Nasdaq с помощью Python
Так же необходимо обратить внимание, что многие растущие компании, такие как для примера Amazon и Yandex, не выплачивают дивиденды, поскольку они реинвестируют всю прибыль в развитие бизнеса. Поэтому дивидендная доходность для этих фирм будет равна нулю.

Расчет дивидендной доходности с помощью Python



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

Как работает Google Colab?

Решил попробовать Google Colab — и все модули в нем вроде есть, и громоздкие пакеты типа Анаконды ставить не надо.
Запустил простой скрипт на количество файлов и… ошибка.
В Анаконде все работает быстро и без проблем.

В чем причина? 
Как работает Google Colab?



....все тэги
UPDONW