Aspiring Data Science – Telegram
Aspiring Data Science
386 subscribers
465 photos
12 videos
12 files
2.15K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
#pandas

Вот говорят, мол, пандас, взрослый мощный фреймворк, опенсорс, все дела.
Но попробуйте применить к датафрейму .query по полю с мультииндексом, окажется, что в общем случае нет способа это сделать. Запрос висит на гитхабе в открытом статусе с 2016. "Что это, глупость или предательство?"
#gpt

"Модель GPR-3.5-turbo получила расширенное контекстное окно (количество текста, учитываемое в процессе генерации). Увеличение контекстного окна позволяет модели лучше понимать смысл запросов и выдавать более соответствующие им ответы, не отклоняясь от темы. Модель GPR-3.5-turbo имеет контекстное окно в 16 тыс. токенов, что в четыре раза больше по сравнению с аналогичным показателем GPT-3.5. Также было объявлено, что в настоящее время OpenAI тестирует модель GPT-4 с контекстным окном в 32 тыс. токенов.

Стоимость использования стандартной версии GPT-3.5-turbo (без расширенного контекстного окна) снижена на 25 % до $0,0015 за 1 тыс. входных токенов и $0,002 за 1 тыс. выходных токенов, что соответствует примерно 700 страницам текста за $1. Стоимость использования модели text-embedding-ada-002, которая позволяет измерить сходство текстов, снижена на 75 % до $0,0001 за 1 тыс. токенов."

https://3dnews.ru/1088373/openai-predstavila-gpt35turbo-i-gpt4-novie-funktsii-i-snigennaya-stoimost-ispolzovaniya
#trading #ml #chan

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

https://www.youtube.com/watch?v=2-5HYJ0HhyQ
👍1
#yandex #ml #recommenders #transformers

Лучшие результаты для рекомендации Яндекс музыки дал трансформер сразу с 3+ лоссами.
Слишком большая история оказалась вредной.

Проделана гигантская работа, при этом вероятность лайка рекомендованного трека выросла всего на ~2%.
Правда, разнообразие рекомендаций увеличилось на 6%, и вероятность лайка не слышанного ранее трека взлетела уже на 16%.

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

https://www.youtube.com/watch?v=bk7J1oZGw6A&
#numpy

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

A = np.array([1,2,3,4,5])

np.pad(A, (2, 3), 'constant')
# array([0, 0, 1, 2, 3, 4, 5, 0, 0, 0])
1
#irobot #news

Насосали.

"Предложенная компанией Amazon сделка по покупке за $1,7 млрд фирмы iRobot, занимающейся производством роботов-пылесосов, была полностью одобрена антимонопольным ведомством Великобритании. Положительное решение регулятора привело к резкому росту акций iRobot до начала торгов, пишет издание Bloomberg."

https://3dnews.ru/1088520/velikobritaniya-odobrila-sdelku-po-pogloshcheniyu-irobot-kompaniey-amazon
#trading #erema

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

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

Прогресс существенный:

1) благодаря библиотеке AlorPy настроил сбор стриминговых данных от брокера и сохранение в базу. Прилетают просто сотни изменений стаканов в секунду.

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

3) сегодня несколько усложнил модель с использованием своей достаточно богатой библиотечки статпризнаков над 3 группами торговых факторов. Офигел от количества требуемых расчётов. На 16 ядрах 1 торговый день будет обсчитываться около часа. И это я ещё урезал хотелки. На первых порах домашний сервер сойдёт, но для серьёзной работы только облако, только Dask/Spark. Благо бэк сервиса поиска дешёвых серверов у меня готов и работает уже 2 недели без сбоев.

На сегодня план дописать многопоточный расчёт признаков. В течение недели:
1) обсчитать хотя бы месяц торгов и построить пару моделек с разными таргетами
2) написать простой бэктестер и потестить несколько торговых политик, основанных на прогнозах
3) научиться применять лучшую модель на живом потоке рыночных данных
4) запустить робота с лучшей политикой в работу

Всё это хотел сделать за выходные к сегодняшнему утру вообще-то, но теперь не уверен, хватит ли даже недели.
🔥3🆒2❤‍🔥1
#parallel #heapq #codegems

Часто, если мне надо распределить работу между узлами, я просто использую np.array_split(job_elements, ncores). Но что делать, если элементы работы содержат разное количество инструкций? Тогда на практике часто складывается ситуация, что большинство узлов завершили свои вычисления, и все дружно ждут, пока пыхтит неудачливый узел, получивший самый большой кусок работы. Давно этот вопрос не давал мне покоя, тем более, что предстоит сделать много расчётов, и я бросился изучать книги по алгоритмам гуглить. Лучшее решение очень элегантно и использует модуль heapq.

import heapq

def distribute_work(workload: Sequence, nworkers: int) -> tuple:
"""Distribute array workload into nworkers chunks of approximately same total size."""
planned_work_per_worker = [[] for _ in range(nworkers)]
workload_indices_per_worker = [[] for _ in range(nworkers)]
totals = [(0, i) for i in range(nworkers)]
heapq.heapify(totals)
for i, value in enumerate(workload):
total, index = heapq.heappop(totals)
planned_work_per_worker[index].append(value)
workload_indices_per_worker[index].append(i)
heapq.heappush(totals, (total + value, index))
return planned_work_per_worker, workload_indices_per_worker

Пример распределения вычислений по 27 тикерам с разным количеством сделок на 5 ядер:

work_by_ticker = np.array([187109,153572,128916,107183,97039,72846,60048,59418,48540,43701,41435,39218,38058,36390,31703,31466,28101,27052,23557,17699,14327,12416,12158,11787,11464,11136,3643])

sol, sol_indices = distribute_work(work_by_ticker, nworkers=5)
print(sol)
for subarr in sol:
subarr = np.array(subarr)
print(subarr.sum(), subarr.size)

[[187109, 39218, 28101, 12158], [153572, 48540, 36390, 23557, 11136], [128916, 59418, 38058, 27052, 12416, 3643], [107183, 60048, 43701, 31703, 17699, 11464], [97039, 72846, 41435, 31466, 14327, 11787]]

266586 4
273195 5
269503 6
271798 6
268900 6

https://stackoverflow.com/a/61648403/4334120
1🤯1
Forwarded from Dealer.AI
В своём прошлом посте говорил о слухах, что AMD будет поддерживать вычисления DL моделей на GPU и колабиться с PyTorch

И вот свершилось!

Лиза Су, также продемонстрировала, что на новой gpu для Deep learning AMD MI300X влезает фулл LLM класса Falcon40B. Звучит многообещающе. Да и в целом, конкуренция это хорошо.

З. Ы. Да я в курсе, что Лиза Су дальняя родственница Хуанга из NVIDIA. Но вы наверняка и не знали, что интел и NVIDIA были долго кормовой базой для AMD, пока правительство не врубило антимонопольные штучки и позволило уйти в свободный полёт AMD. Опять же конкуренция важная штука для капитализма.
#trading #erema

Итак, волнительный момент ) почти неделя напряжённой работы близка к завершению, на данный момент есть 2 модельки, и можно 1 вызовом получить от брокера актуальные рыночные данные по акции, и прогнозы роста/падения по ней от моделей. Хорошо бы сделать бэктест торговой политики, но очень уж хочется влезть в рынок, запустить конвейер, пусть и (поначалу) ценой качества. Есть сомнения, что формат живых данных точно совпадает с тем, на чём модели обучались... Ну да ладно, увидим в процессе.

В общем, решил не гнать лошадей ) Сверю форматы данных, проведу небольшой бэктест сегодня. А завтра уже попробуем сделки.
❤‍🔥3🔥1
#music #deutsch #gpt #poetry

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

"Hark, little maiden, the night is young,
Be virtuous, compliant, let silence be sung.
I'll guide you to paths shrouded in mystery,
Enchanted realms where only I hold the key.
The moon's gentle face peers from high above,
The sovereign observer, ruling with love.
Look up, behold the man in the moon's might,
A celestial monarch in majestic flight.

The night, an expanse of clarity untamed,
Where dreams and fairy tales eternally framed.
Stars shimmer, a wind's gentle sigh,
I'll unveil where lost children lie.
The man in the moon, the one to revere,
In regal splendor, he governs, austere.
Raise your gaze, witness his celestial might,
The man in the moon, a luminous light.

Together, we'll soar, unbound and free,
On ethereal winds, a wondrous decree.
The night's wings embrace, come, follow my lead,
My child, we'll ride clouds, swift as a steed.
Can you hear the whispers, the cosmic call?
Above us, a watcher, one standing tall.
The man in the moon, abode beyond the sky,
In tranquil seclusion, his watchful eye.

A final act awaits, our parting decree,
Farewell, little one, embark, journey with glee.
No tears need be shed, no pain shall befall,
Step into the snow, answer destiny's call.
With tender leaves, I'll gently caress,
As branches serenade, a song to address.
Now, my darling, find eternal rest,
While the man in the moon watches, ever blessed.

There he resides, the man in the moon,
Gaze skyward, witness his ethereal commune.
Above the clouds, his celestial domain,
The ruler of all, his sovereign reign.
The lonely sentinel, the man in the moon,
Bathed in morning's glow, his visage a maroon.
Man in the man in the moon, a poetic tune,
In verses and rhythms, forever immune."

оригинал:

"Komm, kleines Mädchen, die Nacht ist jung
Sei brav, ganz artig, am besten stumm
Ich zeig dir Wege, die niemand kennt
Verwunschene Orte
Die nur ich beim Namen kenn
Der Mann im Mond
Schau hoch, der Mann im Mond
Er ist's, der über allem thront
Schau hoch, der Mann im Mond
Die Nacht ist klar, der Blick reicht weit
Am Himmel schlummert ein Märchenreich
Die Sterne funkeln, es rauscht der Wind
Ich zeig dir, wo alle kleinen Kinder sind
Der Mann im Mond da ist der Mann im Mond
Er ist's, der über allem thront
Schau hoch, der Mann im Mond
Wir können alle fliegen
Wir sind frei wie der Wind
Die Nacht verleiht uns Flügel, komm mit mir
Mein Kind wir reiten auf den Wolken
Hörst du nicht den Ruf?
Und fern am Himmel über uns
Schaut nur einer zu
Der Mann im Mond da ist der Mann im Mond
Der über den Wolken wohnt
Schau hoch, der Mann im Mond
Ein letztes bleibt für uns noch zu tun
Nimm Abschied, Kleines
Dann steig in die Truh
Du musst nicht weinen, es tut nicht weh
Tritt an die Reise, tritt in den Schnee
Ich deck dich zärtlich mit Blättern zu
Die Äste singen sacht ein Lied dazu
Nun, mein Engel, find für immer Ruh
Und der Mann im Mond schaut leise zu
Da ist der Mann im Mond
Schau hoch, der Mann im Mond
Der über den Wolken wohnt
Da ist der Mann im Mond der Mann im Mond
Der über uns allen thront
Wacht einsam, der Mann im Mond
Das Morgenlicht färbt ihn rot
Mann im, Mann im Mond."

https://www.youtube.com/watch?v=UylS9xYwBlQ
#poetry #gpt #yoma

"The lanterns weep, their tears iodine deep,
In shadows dance, dreams and undead seep.
Yoma treads through deserted yards so vast,
Peering through windows, its snowy eyes cast.

With each step, rain-soaked bones it does maim,
Wires and curbstones, its path left aflame.
Yellow claw taps, seeking those who don't rest,
Yoma's relentless pursuit, the sleepless pest.

Through grand entrances and dim-lit domains,
Earth's blood glistens, copper tracks it retains.
Wrap your head in blankets, hope to evade,
Yoma's gaze passing by, a chance cascade.

Hear the staff's rhythmic, enigmatic beat,
As Yoma fades into eternal retreat.
But salvation arrives far too late,
In her shoulder bag, my destined fate.

Mother's words pleaded, "Obey, be still,
Close your eyes, surrender to goodwill."
Yet doubts held me tight, my disbelief strong,
Now frost carries me, a journey so long.

Through stones and roots, dreams and branches we soar,
Fear subsides, clarity replaces the core.
For bundled in horror's shroud of embrace,
There's naught to fear, just warmth in its grace.

Across swamps and cities, fields and abode,
Yoma carries me on, through pathways unknown.
A cold expanse, foreign and vast,
What lies beyond, a mystery that lasts."

оригинал:

"Фонари стекают в почву йодом,
в те́ни копошатся сны и нежить.
Ходит по дворам пустынным Ёма,
смотрит в окна глазом белоснежным.

Мнёт шагами кости ливнестоков,
нити проводов, бордюры-спицы.
Жёлтым коготком стучится в стёкла,
ищет Ёма тех, кому не спится.

Ходит по парадным и подвалам,
кровь земли в следах сверкает медью.
С головой накройся одеялом, –
может, обойдёт и не заметит.

Слушай, как постукивает посох,
как уходит Ёма в вечный вечер.

…а меня уже спасать-то поздно,
я и так в мешке её заплечном.

Говорила мама: будь послушным,
закрывай глаза.
А я не верил.
И теперь уносит меня стужа,
через камни, корни, сны и ветки.

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

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

А что будет дальше –
неизвестно.

К. Вернер"