Показаны сообщения с ярлыком python. Показать все сообщения
Показаны сообщения с ярлыком python. Показать все сообщения

суббота, 7 января 2023 г.

How to quickly find anomalies in number series using the Hampel method

Translated from Russian. The original article is here:

In practice, there are issues for the solution of which it is required to find anomalies in the numerical series. For ease of understanding, we can assume that these are values that differ from most numbers in the series in some way (outlier, non-standard value, deviation from the norm). Such tasks are found in various areas:

  • cleaning of noisy data in Data Science;
  • outlier filtering in the training sample for neural networks in Machine Learning;
  • search for abnormal network hacker activity, while monitoring traffic and events in Cybersecurity;
  • detection of outliers or tails in the stock data stream in Algorithmic Trading;
  • as well as in any anomaly search tasks, where data can be presented as a numerical series.

The concepts of a number series in mathematical analysis and in statistics are different. We accept a numerical series as its statistical understanding, that is, a finite sequence of numbers (analogous to a sample). There are various interpretations of the anomaly in the numerical series. We will consider them further.

The article also shows examples of how to find anomalies quickly and efficiently in numerical series using the modified Hampel method (Hampel F.R.).

пятница, 6 января 2023 г.

Jupyter Notebook: теория и практика фильтрации данных методом Хампеля

Всем привет! Я сделал примеры с фильтрацией данных методом Хампеля в Jupyter Notebook, где можно поэкспериментировать с различными параметрами функции HampelFilter(). Показано применение этого фильтра для поиска аномальных выбросов в числовых рядах, полученных из биржевых цен. А также написал простой скрипт на Python, который можно запустить, и посмотреть, о чём идёт речь.

Эти примеры написаны для недавно опубликованной статьи: «Как быстро найти аномалии в числовых рядах с помощью метода Хампеля».

четверг, 24 ноября 2022 г.

TKSBrokerAPI Trade Automation Platform: release-1.5.120

Опубликован очередной релиз платформы TKSBrokerAPI: v1.5.120. Рассмотрим основные изменения.

Release notes (in english)
Issues included in the release

PyPI: 1.5.120 (2022-11-21)

Дайджест

В новой версии TKSBrokerAPI в отчёте о портфеле пользователя появилась новая секция с календарём платежей по облигациям (сам календарь, возможность обогащения облигаций данными и множество других интересных фич появились в предыдущей стабильной версии v1.4.90, о них я писал в прошлом посте). 

четверг, 10 ноября 2022 г.

Получаем и расширяем биржевые данные с помощью TKSBrokerAPI — платформы для автоматизации торговых сценариев

В прошлый раз я показал, как можно автоматизировать торговый сценарий на Python с помощью TKSBrokerAPI. Это платформа для упрощения автоматизации торгов на бирже, которая работает через Tinkoff Invest REST API. Всё начинается с вашей гениальной торговой идеи и завершается автоматизацией сценария, а TKSBrokerAPI берёт на себя всю работу с инфраструктурой брокера.

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


суббота, 1 октября 2022 г.

TKSBrokerAPI: демонстрация некоторых возможностей торговли на бирже через Python API



В прошлой статье я рассказал про опенсорс разработку — платформу TKSBrokerAPI — это Python API для работы с Tinkoff Open API через REST протокол. Также этим инструментом можно пользоваться из консоли или встраивать его в CI/CD-системы, для автоматизации рутинных операций на бирже, через брокера Тинькофф Инвестиции.

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

Неважно, какую основную систему принятия торговых решений о покупке или продаже вы используете. Это может быть технический анализ, нейросети, парсинг отчётов или слежение за сделками других трейдеров. Но всё равно вам потребуется выполнять базовые торговые операции: получать рыночные данные, выставлять лимитные и стоп-ордера, открывать и закрывать сделки по рынку. Модуль TKSBrokerAPI будет выступать как посредник между кодом с логикой торгов и сервисной инфраструктурой брокера, а также выполнять рутинные задачи от вашего имени в брокерском аккаунте.

Схема разработки с помощью TKSBrokerAPI очень простая:
  1. Вы придумываете гениальный торговый алгоритм.
  2. Записываете его пошагово в виде некоторого плана или торгового сценария.
  3. Автоматизируете сценарий на Python при помощи TKSBrokerAPI.
  4. TKSBrokerAPI берёт на себя всю работу с инфраструктурой брокера Тинькофф Инвестиции.
  5. Профит!

вторник, 11 января 2022 г.

PriceGenerator — модуль python для генерации тестовых данных по биржевым котировкам

PriceGenerator

Build Status pypi license

Ссылка на проект: https://github.com/Tim55667757/PriceGenerator

Иногда для целей тестирования автоматизированных торговых алгоритмов бывает необходимо получить набор данных с биржевыми ценами, которые попадают под определённые статистические ограничения. Обычно трейдеры и аналитики используют модель цен вида OHLCV-candlesticks (open, high, low, close, volume), так называемые японские свечи. Одна строка таких данных представляет собой набор цен для построения одной японской свечи: дата открытия, цена открытия, наибольшая цена, наименьшая цена, цена закрытия на данном временном интервале и значение объёма торгов.

PriceGenerator — это простая библиотека на python, которую можно использовать как модуль или запускать из командной строки и генерировать случайные ценовые данные, максимально похожие на "настоящие цены", но с заранее заданными статистическими характеристиками. Можно задать интервал цен, таймфрейм, максимальное и минимальное значения для диапазона цен, максимальный размер для свечей, вероятность направления для очередной свечи, вероятность ценовых выбросов, количество генерируемых свечей и некоторые другие параметры.

Из статьи далее вы узнаете:

  • как установить и использовать библиотеку PriceGenerator из командной строки, либо через импорт модуля;
  • про метод генерации цен, используемый в библиотеке;
  • как сгенерировать набор ценовых данных с параметрами по умолчанию, получить по ним статистику и нарисовать график (интерактивный или упрощённый);
  • как загрузить ранее сохранённые данные по ценам, построить график и посчитать статистику;
  • как переопределить статистические параметры генератора, заданные по умолчанию;
  • как разделить ценовые данные по трендам, чтобы цена вела себя по разному для различных временных периодов.

понедельник, 10 января 2022 г.

AVStockParser — модуль python для работы с сервисом Alpha Vantage и получения данных с биржи NASDAQ

AVStockParser

Build Status pypi license

Ссылка на проект: https://github.com/Tim55667757/AVStockParser

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

Для автоматизации работы с историческими данными есть множество онлайн-сервисов, которые предоставляют API для этого бесплатно, но с некоторой задержкой. Например, Alpha Vantage. Основной источник данных для этого сервиса — биржа NASDAQ. Если вам нужна автоматизация работы с этой американской биржей и вы используете python, то далее расскажу, как это можно сделать с помощью Alpha Vantage API и библиотеки AVStockParser.

воскресенье, 9 января 2022 г.

MT4ForexParser — модуль python для работы с файлами истории MetaTrader 4

MT4ForexParser

Build Status pypi license

Ссылка на проект: https://github.com/Tim55667757/MT4ForexParser

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

Однако большинство Forex брокеров работают с торговой платформой MetaTrader 4 и загружают туда данные в специальном бинарном .hst-формате для MetaTrader 4 (не в .csv). Этим можно воспользоваться и получить исторические свечи подключившись к серверу брокера в демо-режиме, который есть почти у всех брокеров. При этом сжатый бинарный .hst-файл будет скачан локально в рабочий каталог MetaTrader 4.

вторник, 23 апреля 2019 г.

Codacy: онлайн-сервис для статического анализа кода приложений

Codacy — это онлайн-сервис, который автоматически добавляет ревью и выполняет статический анализ кода для большинства код-репозиториев, например, GitHub. Codacy помогает выявить ошибки в коде и проблемы с безопасностью используемых конструкций, даёт подсказки по их устранению. Также он может оценить покрытие кода тестами и дать общую оценку качества проекта. В код-репозиториях можно ссылаться на анализ Codacy и добавлять статус ревью и оценку качества.

среда, 6 ноября 2013 г.

Pairwise testing: добиваемся оптимального покрытия различных тестовых комбинаций

В тестировании программ очень часто встаёт задача проверки комбинаций входных параметров, от которых зависит итоговый результат программы. Типичный пример - диалоговое окно печати файла: оно имеет множество настроек, полей ввода, различных взаимозависимых опций, от включения или выключения которых итоговый результат может сильно различаться. Если бы даже все опции имели только два режима работы (вкл/выкл), а всего опций было бы 10, то это уже даёт 210 = 1024 их комбинаций.

Конечно, чтобы убедиться в работоспособности программы, в идеале нужно проверить все тестовые наборы, состоящие из всех возможных комбинаций параметров, так как для одной из них она может работать некорректно. Но, во-первых, таких тестовых наборов может получиться достаточно много и будет трудоёмко их все проверить. Во-вторых, при тестировании обычно желают получить не сочетания всех параметров со всеми, ведь в этом случае будет труднее локализовать дефект и воспроизвести проблему, а проверить отдельные пары значений параметров, которые могут привести к проблеме. Для упрощения подбора таких пар используют методику Pairwise testing, которая позволяет выделить комбинации уникальных пар проверяемых значений и одновременно уменьшить число тестовых наборов, по сравнению с полным перебором.


пятница, 31 мая 2013 г.

Python + Selenium WebDriver: фреймворк для тестирования web-приложений

Selenium WebDriver - это набор многофункциональных библиотек, используя которые в вашем проекте вы можете писать GUI-тесты для web-приложений. При этом каждый тест запускается в реальном браузере и команды Selenium позволяют имитировать действия пользователя с web-приложением. Подробнее об установке и настройке Selenium WebDriver можно почитать в статье: "Работа с Selenium Web Driver". А в этой будет показано, как можно написать свой фреймворк на Python для GUI-тестирования используя WebDriver.

среда, 27 февраля 2013 г.

Настройка git pre-commit hook под Windows

Задача: запретить коммиты кода в git-е под Windows, если для Python-проекта не прошли все указанные юнит-тесты.
Решение: настроить файл git pre-commit hook.

суббота, 23 февраля 2013 г.

Контроль целостности кода функций

В ходе разработки сложной многокомпонентной системы для автоматизированного тестирования сканера безопасности, возникла проблема контроля целостности и проведения ревизий кода отдельных тестовых функций. Функциональных тестов, запускаемых системой, было написано уже около 2 сотен и их число продолжает увеличивается. В нашем случае один функциональный тест - это одна функция. Как правило, после разработки теста и постановки ему статуса "готов" в некотором трекере, о нём забывают и надолго. Однако, в процессе разработки других тестовых функций часто возникает необходимость проведения рефакторинга, которая по невнимательности тестировщика-автоматизатора может затронуть и уже готовые, отлаженные тесты.

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

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

четверг, 11 октября 2012 г.

httpbin: HTTP Request & Response Service

httpbin - это python-сервер, который возвращает стандартные ответы на запросы клиента. 
Часто требуется проверить тот или иной функционал вашего сетевого приложения. httpbin может пригодиться для тестирования корректной работы HTTP-клиента со стандартными ответами HTTP-сервера.

вторник, 25 сентября 2012 г.

Password Bruter - программа для многопоточного подбора учетных данных к страничкам с form-based авторизацией

Перед разработчиками и тестировщиками web-приложений периодически встают задачи тестирования безопасности разрабатываемого продукта. Один из наиболее известных классификаторов угроз и уязвимостей для web-приложений - The Web Application Security Consortium (The WASC) Threat Classification v2.0.
Одна из популярных уязвимостей (Weaknesses - в классификаторе), встречающихся для web-приложений - это недостатки подсистемы авторизации (WASC-02 Insufficient Authorization). На web-приложение, имеющее данную уязвимость, могут попытаться осуществить атаку (Attacks - в классификаторе) типа "Брутфорс" (WASC-11 Brute Force). При этом злоумышленник может попытаться осуществить подбор учетных данных на странице авторизации, если она недостаточно защищена.
К недостаткам защиты страницы авторизации можно отнести:
- отсутствие ограничения по числу попыток авторизации,
- отсутствие поля для ввода дополнительной информации - капчи (capture),
- отсутствие временной задержки между попытками авторизации и другие.
Наличие указанных недостатков в реализации подсистемы авторизации упрощает злоумышленнику доступ к web-приложению.
Одна из разновидностей атаки брутфорсом - подбор учетных данных (Brute Forcing Log-in Credentials) для страницы авторизации (Form-based Auth). Для имитации данного типа атаки был написан свой многопоточный брутфорсер Password Bruter на Python 3.2. В качестве цели было развернуто и использовано уязвимое web-приложение Damn Vulnerable Web Application (DVWA).

четверг, 13 сентября 2012 г.

Краулер ссылок и автоматизация процесса снятия скриншотов

Перед нами стояла задача: автоматизировать процесс снятия скриншотов со страничек web-приложения - некоторого сайта. Требовалось:
  1. Получать стартовый URL.
  2. Искать на страничке, полученной по стартовому URL все ссылки на другие странички.
  3. Переходить по всем найденным ссылкам и делать скриншоты со всех страничек.
  4. Ограничивать глубину вложенности при прохождении найденных ссылок.

воскресенье, 2 сентября 2012 г.

Безопасность и тестирование

Начинаю выкладывать в  данный блог  материалы связанные с информационной безопасностью и тестированием программного обеспечения. Статьи, в основном, будут иметь практическую и научную направленность. Статьи и их содержимое будут исправляться и дополняться по ходу изучения новых материалов.
Все материалы, представленные здесь, получены в ходе работ в Казанском государственном техническом университете им. А.Н. Туполева (КАИ), группе компаний Центр (г. Казань), компании Positive Technologies (г. Москва).

В качестве введения в область практического тестирования программного обеспечения, предлагаю ознакомиться со статьями: