Обновить
1024K+

Python *

Высокоуровневый язык программирования

693,83
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

CLI-инструмент для фундаментального анализа акций с поддержкой LLM

Уровень сложностиСложный
Время на прочтение22 мин
Охват и читатели9.8K

Всем привет!

Я сделал CLI-инструмент для быстрой "фундаменталки" по акциям с добавочной аналитикой из 10-K через LLM. Он тянет данные из Yahoo Finance, дочитывает 10-K (edgartools + LLM), корректирует EV по fair-value, только страховщиков оценивает по "флоуту", делает SOTP по операционным сегментам и на базе квартилей выдаёт сигналы "КУПИ/ПРОДАЙ/НЕОПРЕДЕЛЁННО" - по метрикам, по группе и общий. Использует метрики: Forward P/E, P/FCF, EV/EBITDA.

Пример запуска:

Читать далее

Линейная регрессия в факторных моделях

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели8.6K

Привет, Хабр!

Когда мы говорим «факторная модель», многие вспоминают Python-ноутбуки. Но если отмотать плёнку, бóльшая часть индустриальных движков для риска и ценообразования десятилетиями писалась на C++ поверх BLAS/LAPACK. Там же удобно делать устойчивые разложения: QR с переупорядочиванием столбцов, SVD, регуляризацию. Библиотеки вроде Eigen дали нормальный интерфейс к этим штукам, и регрессия перестала быть болью «Ax = b» руками. QR с перестановками колонок вообще стандарт для переобусловленных задач.

Сама идея факторной модели пришла не из тетрадки с pandas, а из арбитражной теории ценообразования Россa и последующей эмпирики Fama-French. В терминах работы это выглядит как линейная регрессия доходностей на набор общих факторов. Дальше есть два пути проверки: тайм-серия для бета-нагрузок и кросс-секция для премий за риск. Это конвейер, а не разовая регрессия.

Читать далее

Десктопный агент на базе Gemma 3 1b

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели12K

Приветствую, товарищи разработчики. В этой статье я бы хотел поднять небольшой эксперимент, на который я потратил 2 недели ленивого анализа и разработки. Как понятно из названия, речь пойдет о десктопном агенте на базе open‑source языковой модели от Google — Gemma 3 на 1 миллиард параметров. Сразу уточню, что это моя первая статья на Хабре, поэтому если возникнет критика по поводу оформления или подачи — прошу расписать в комментариях.

С чего началось

А началось все со статьи на форуме Reddit, где парень, используя Ollama, Gemma 3 1b и n-ное количество API, создал себе настольного браузерного агента, который бы мог переводить текст, присылать погоду, а так же серфить просторы Интернета с помощью API Serp.dev. (прилагаю ссылку на статью).

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

Читать далее

ChameleonLab: Как мы портировали стеганографический инструмент на macOS. Грабли, решения и планы на Android

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели19K

Привет, Хабр!

В наших прошлой и позапрошлой статьях мы рассказывали о создании нашего инструмента для стеганографии и стеганоанализа ChameleonLab. Мы получили массу ценных отзывов, и один из самых частых запросов был: «А когда версия для macOS?». Что ж, по вашим многочисленным просьбам, мы сделали это — ChameleonLab теперь доступен для macOS!

Этот путь оказался не просто «взять и пересобрать». Нам пришлось столкнуться с рядом специфичных для macOS проблем, начиная от сборки .app-пакетов и заканчивая борьбой с «замороженной» иконкой в Dock при запуске. В этой статье мы хотим поделиться нашим опытом, рассказать о сложностях переноса, показать конкретные решения в коде и заглянуть в будущее.

Читать далее

Коротко про виды авторизации

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели37K

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

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

Быстро срыть тему с авторизацией

Позиционный трейдинг + ML: от нуля до торговой стратегии за год

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели23K

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

Читать далее

Топологический анализ безопасности ECDSA

Уровень сложностиСложный
Время на прочтение20 мин
Охват и читатели10K

Новый подход к анализу безопасности алгоритма цифровой подписи на эллиптических кривых (ECDSA) через призму алгебраической топологии.

Читать далее

Как pytest работает под капотом

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели9.7K

Основан на pluggy. Основная единица pytest - pytest плагин. Написан достаточно интересно. Ключевое слово - “ключевое слово”. Основное взаимодействие в pytest происходит через хуки. Хук это некий этап к которому можно получить доступ к той или иной логики работы. Следуя из названия это некоторые крючки за который можно цепляться вставляя свои заплатки. Начинаются с pytest.

Фикстуры (Fixture) в  pytest это некий аналог мока/сетап tear down в unittests.  Это некие кусочки кода результаты которых могут быть пере использованы. Сами фикстуры реализованы как плагин. 

Как уже говорилось в эта система плагинов полагается на Pluggy. В Pluggy програамма полагается на PluginManager который управляет сохранения спецификаций хуков регистрацией плагинов и вызовом их. Плагины могут регистрировать сами себя в PluginManager.

Когда хук стартуют они вызывают свои имплементации по умолчанию как LIFO очередь - самый поздний элемент вызывается раньше всего. Для изменения этого порядка вызова можно применять trylast or tryfirst свойства в их имплементациях(пример). По умолчанию возвращается результат от всех имплементаций с исключением случая с как  firstresult свойством. В случае свойства firstresult программа возвращает результат первого не None результата. 

Другое интересное свойство имплементации плагина это hookwrapper.  С помощью этого свойства имплементации будут вести себя как обертки над другими хуками с помощью yield.

Вдохнули?

Хуки вызываются 3 способами:

Читать далее

Градиентный бустинг для новичков

Время на прочтение12 мин
Охват и читатели12K

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

Сначала мы рассмотрим на простейшем примере принцип его работы, а потом посмотрим, как реализовать его с помощью Python.

Читать далее

Парсим и управляем постами VK: Разбор Python-скрипта для работы с API ВКонтакте

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели11K

В этой статье разберем создание Python-скрипта для работы со стеной VK. Научимся автоматизировать сбор постов и рассмотрим осторожное удаление контента через API. Началось все с того, что я решил почистить свою стенку в ВК. Жизнь, знаете ли, непредсказуемая нынче :) Но, в целом, мне видится, что код может быть полезен как для общего развития, так и в качестве основы для бэкапа данных, модерации контента или анализа своей активности в соцсети.

Читать далее

Pet-проект, которой далеко зашел, но так и не дошел до цели

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели15K

Pet-проект которой далеко зашел, но так и не дошел до цели!

Ретроспектива моей первой попытки создать полезный и востребованный пользователям продукт, ошибки, которые мы допустили, и сделанные выводы.

Читать далее

ChameleonLab: Под капотом. Часть 3 — Визуализатор криптографии: От пароля до шифротекста

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели6.3K

В предыдущих статьях мы рассмотрели ChameleonLab как инструмент для стеганографии и стеганоанализа. Но одна из ключевых идей проекта — не просто дать инструмент, а показать, как он работает изнутри. Многие программы используют шифрование, но почти ни одна не позволяет заглянуть в "чёрный ящик" и увидеть весь путь превращения вашего секретного сообщения в неуязвимый шифротекст.

Именно для этого и был создан Визуализатор криптографии — интерактивная образовательная площадка внутри ChameleonLab, которая пошагово демонстрирует весь конвейер современного симметричного шифрования. Давайте разберёмся, зачем это нужно и как это реализовано.

Читать далее

Управление маршрутизацией на роутерах Keenetic при помощи Telegram-бота и правовые нормы доступа к информации

Уровень сложностиСредний
Время на прочтение29 мин
Охват и читатели53K

После начала Специальной Военной Операции многие западные компании объявили о прекращении своей деятельности в России и Белоруссии и некоторые из них стали блокировать пользователям с российскими и белорусскими IP-адресами доступ на свои ресурсы в сети Интернет. Яркими примерами таких блокировок являются сайты: intel.com, dell.com, chatgpt.com, community.cisco.com, mongodb.com, tenable.com, wiki.zimbra.com, releases.hashicorp.com, registry.terraform.io, vagrantcloud.com, solarwinds.com и множество других.

Такие блокировки мешают IT-специалистам из России и Белоруссии получать доступ к актуальной информации и программному обеспечению необходимому для обучения и работы. Препятствуют получению актуальных релизов программных продуктов и критических обновлений безопасности, что в условиях участившихся хакерских атак стало особенно важным.

Также, в качестве упражнений для ума, можно поизучать вопросы о допустимости дискриминации по национальному признаку и принципе сетевой нейтральности.

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

В это статье НЕ БУДЕТ инструкций о том откуда взять работающий VPN и НЕ БУДЕТ инструкций о том как обходить блокировки Роскомнадзора. Обсуждать это в комментариях к статье тоже НЕ НУЖНО.

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

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

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

Если вы не согласны хоть с чем-то из вышеописанного - вам следует немедленно прекратить чтение настоящей статьи.

Я согласен(-на) и хочу продолжить.

Ближайшие события

Shap-графики: как наглядно объяснить заказчику логику работы модели

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели15K

Всем привет. Я Андрей Бояренков, лидер кластера бизнес-моделей стрима "Разработка моделей КИБ и СМБ" банка ВТБ.

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

Читать далее

Сказка о зачарованной пасеке

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели9.6K

Басня о коде и мёде

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

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

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

Так начинается наша история. История не только о коде, но и о вечных закономерностях природы, которые могут помочь нам создавать создавать красивые программы. Мы отправимся в самое сердце Шестиугольного Улья, откроем его секретный генетический код и узнаем, как выращивать собственных «рабочих пчел», которые будут служить нашему цифровому королевству добросовестно.

Читать далее

ChatGPT против моего скрипта для очистки системы: кто кого?

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели12K

Привет, Хабр! Какое‑то время назад, в процессе изучения bash‑скриптов, старался углубляться в тему и искал себе больше практики посредством решения любых, даже мельчайших задач. Одной из таких был скрипт, удаляющий временные файлы, старые дампы, папки node_modules от давно забытых проектов. Нашёл его на днях совершенно случайно. Протестил его на виртуалке, скрипт рабочий, но ужасно костыльный и неприятный визуально.

Какая у меня появилась идея? Проверить, сможет ли ChatGPT сделать то же (и насколько качественно), что и я, но грамотнее и «элегантнее». Результат получился весьма поучительным: ИИ отлично справился с архитектурой, но очень пытался угробить систему парой строчек. Далее расскажу, как это было.

Читать далее

Паттерны проектирования в Python, о которых следует забыть

Время на прочтение8 мин
Охват и читатели46K

Попробуйте поискать в Интернете «Паттерны проектирования на Python» — и получите целую простыню туториалов, демонстрирующих, как в точности воспроизвести на Python паттерны проектирования из книги «Банды четырёх». Там же будут диаграммы классов, иерархии фабрик и столько шаблонного кода, что выхлопа хватит, чтобы отопить маленькую деревню. Так вам внушают, будто вы пишете «серьёзный» код. Умно. Профессионал ьно. Готово для корпоративного использования.

Но вот в чём проблема: большинство из этих паттернов решают проблемы, которые в Python просто отсутствуют. Паттерны разрабатывались для таких языков как Java и C++, где для выполнения самых базовых вещей требуется настоящая эквилибристика — нет ни функций первого класса, ни динамической типизации, ни модулей в качестве пространств имён. Разумеется, вам потребуется Фабрика или Синглтон, если без них в вашем языке просто не с чем работать.

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

Читать далее

Хрумер, тонны ссылок и робот-спаситель: как я не слетел с катушек, а вместо этого построил базу лучших доноров

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели7K

Привет, хабражители и коллеги по цифровым джунглям! Сижу тут, владелец скромного, но гордого царства игрушек Akarius, попиваю вечерний чай (ну, ладно, крепкий кофе — отчеты же ждут!). Вспоминаю, как после одного особенно «мощного» прогона Хрумером, я чуть не превратился в того самого озлобленного плюшевого медведя с нашего сайта — глаза квадратные, пальцы в спазме от кликов. Знакомо? Сейчас расскажу не только о том, как автоматизация спасла мой рассудок, но и как она превратила гору цифрового мусора в… золотую жилу для будущих побед! Да‑да, даже из «плохих» отчетов можно извлечь пользу, если знать как.

Читать далее

Как работает GIL и как от него избавиться

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели11K

В этой очередной статье по GIL разберемся, как работает Python, как был реализован GIL до версии языка 3.2, как глобальная блокировка работает сейчас, и что с ней делать.

Читать далее

Subinterpreters в Python 3.14: альтернатива multiprocessing с честным мультикором

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели12K

Привет, Хабр!

В C/C++ давно принято встраивать Python в приложения для скриптовой логики и плагинов. Именно эта экосистема много лет давала повод развивать в CPython идею нескольких изолированных интерпретаторов в одном процессе. Долгое время это было только в C-API: создаёшь новый интерпретатор через Py_NewInterpreter, живёшь с одним общим GIL и кучей глобального состояния. В Python 3.12 появилось ключевое изменение — GIL стал на-интерпретатор (каждый subinterpreter со своим GIL), но доступ был только через C-API. В 3.14 подвезли полноценный высокоуровневый Python-API: модуль concurrent.interpreters и InterpreterPoolExecutor.

Теперь можно писать параллельный код без multiprocessing, но с изоляцией уровня «почти процесс».

Дальше разберёмся, что это такое, когда это уместно вместо multiprocessing.

Читать далее