Блог им. KoDe

Intraday данные

    • 09 апреля 2023, 17:57
    • |
    • eDoK
  • Еще
Понадобились мне минутки по SPY в формате csv для проверки некоторых теорий. Ожидаемо дневки любой Yahoo выдает, а с минутками все сложнее. Платных подписок на Market Data от eSignal, Iqfeed у меня нет, поэтому пошел за советом к ChatGPT.

Intraday данные
Отлично, нам бесплатно — идем по ссылке по п.2.

Там База данных с интерфейсом в мир по API. За бесплатно дают: Our standard API call frequency is 5 calls per minute and 500 calls per day. Меня устраивает, только вот интрадейные данные выдает порциями по 1 месяцу и максимальной глубиной в 2 года. Глубина норм, а собирать 24 файла для каждого тикера не очень.

Two years of minute-level intraday data contains over 2 million data points, which can take up to Gigabytes of memory. To ensure optimal API response speed, the trailing 2 years of intraday data is evenly divided into 24 «slices» — year1month1, year1month2, year1month3, ..., year1month11, year1month12, year2month1, year2month2, year2month3, ..., year2month11, year2month12. Each slice is a 30-day window, with year1month1 being the most recent and year2month12 being the farthest from today. By default, slice=year1month1.

Идем назад к ChatGPT и просим помочь:

Intraday данные

Потом еще 3-4 часа на пошаговое уточнение постановки задачи, исправление багов и в результате получаем вполне рабочий код для Pyton:

import csv
import requests
import time
from datetime import datetime, timedelta

api_key = "YOUR_API_KEY"
symbols = ["SPY", "MSFT", "AMZN"]
interval = "1min"
now = datetime.now()
start_date = (now.replace(year=now.year-2)+timedelta(days=1)).strftime("%Y-%m-%d")
end_date = now.strftime("%Y-%m-%d")

for symbol in symbols:
    file_name = f"{symbol}_{start_date}_{end_date}.csv"
    with open(file_name, mode='w', newline='') as csv_file:
        writer = csv.writer(csv_file)
        for year in range(1, 3):
            for month in range(1, 13):
                if year == 2 and month > 12:
                    break
                csv_url = f"https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY_EXTENDED&symbol={symbol}&interval={interval}&slice=year{year}month{month}&apikey={api_key}"
                with requests.Session() as s:
                    while True:
                        download = s.get(csv_url)
                        decoded_content = download.content.decode('utf-8')
                        if "Our standard API call frequency is 5 calls per minute and 500 calls per day" in decoded_content:
                            print("API call limit exceeded, waiting for 60 seconds...")
                            time.sleep(60)
                        else:
                            break
                    cr = csv.reader(decoded_content.splitlines(), delimiter=',')
                    my_list = list(cr)
                    writer.writerows(my_list)
                time.sleep(15)
При запуске через некоторое время получаем csv файлы с минутками по указанным тикерам. Ну там еще нужно немного их причесать, лишние заголовки поубирать и доп. торги отсеять если не нужны, но работать уже можно.

PS: возможно это «велосипед» и кто-то поделится более изящным решением данной задачи
★7
8 комментариев

А можешь приоткрыть завесу: чего ты проверяешь сейчас?

Есть закон перехода количественных изменений в качественные и на сегодняшний день их накопилось столько, что любая логика (если она там  и была, что не факт!☝️), а равно статистическая взаимосвязь разрушается по экспоненте…

Разве только ты хочешь проанализировать короткие данные в критические дни, как то черный понедельник 1987 или август 2011.

Но скорее всего все это и так разобрано под микроскопом.

Извини, что не даю совета🤷‍♂️

Но правда интересно: что там хочешь найти на старых минутках?

avatar
DrugGoracio, на самом деле пока ничего конкретного, просто статистические характеристики временного ряда, а дальше уже делать выводы и предположения :) Просто привык в экселе проверять, а не в приложениях для тех анализа.
avatar
Прикольно. Слава чату джипити!
avatar
На самом деле пугает это все. Это уже все очень близко к реальному разуму, а учитывая что прогресс в микроэлектронике идет дальше семимильными шагами, и как таковых пределы вычислительных возможностей пока не просматриваются, даже наоборот, то очень скоро мы можем получить разум, значительно превосходящий нас. И это будет плохо во всех смыслах — он будет сильнее человека в деятельности, которую наверное человек более всего ассоциирует с тем, что называется быть человеком, и отличает нас от животных. Это будет удар по эго людей.  Потом, этот интеллект когда-то найдет способ выбраться из под контроля, причем так, что мы даже этого и не заметим, или наоборот, поможем. Это как шахматист считающий на 20 ходов, против того, кто считает на три хода — математически, шансов нет. Причем эта штука похоже сможет заменить не таксистов там и продавцов, как беспокоились недавно теоретики об умирающих в будущем профессиях, а вообще почти всех, в т.ч. самый высокоинтеллектуальный труд. Да, этот «интеллект» еще интегрально наверное не превосходит человеческий, но очевидно, что создание моделей в 10-100 раз более мощных — вопрос ближайшего десятилетия. И как-то не хорошо коррелируют потрясающие успехи человечества в области ИИ, с действиями глобалистов. Как-бы не оказалось, что всех нас уже списали в планах. Это все может очень реально и очень опасно, причем почти для всех. В молодости, в 90-е я сам интересовался сильно данной тематикой, просто была очень интересна эта идея как таковая. Но сейчас понимаешь, что люди как правило не справляются со своими исчадиями ада. Через несколько итераций эта штука будет умнее любого ученого, политика, мыслителя. Мы будем бегать к ней за советами, а сами — тупеть.
avatar
Socol, вы очень плохо понимаете как работает настоящий шахматный ИИ. Он ничего не считает (почти), он угадывает какая из следующих позиций будет лучше.
Чатбот, к сожалению, угадывает какой кусок интернета, что мог бы вам помочь. Само оно ничего толком, к сожалению, не может.
Но да, 90% населения «тупы как дубина», и что с этим делать понятно не очень.
Вы уже бегаете за советами в гугл. Вот только гугл не в состоянии дать качественных ответов почти ни в каких областях.
avatar
xSVPx, ну от куда Вы знаете милейший, насколько я знаю? Что за подростковая манера сразу кидаться оценками, конечно-же понижательными? Вот хочешь людям бывает что-то сказать, и видишь что людям интереснее поспорить, да поумничать. Если я не начинал бросаться терминологией, это не значит что я не имею представления о том что пишу, уважаемый коллега. Я лично программировал минимаксную процедуру для игры, правда не для шахмат, но принцип тотже. Да, я не делал что-то суперкрутое, но я имею представление о принципиальном шахматном алгоритме. Во вторых, Вы видимо невнимательно прочитали мой пост. Я не сравнивал ИИ с шахматами вообще, я провел аналогию/аллегорию в том, что ИИ будущего весьма вероятно будет так-же на порядки мощнее человеческого, как алгоритм шахмат на 20 ходов по сравнению с тремя ходами. Это была аналогия. А то что нейросети «думают» по другому, так ну и что. По сути, каждый нейрон — это тоже довольно-таки элементарный механизм, а вся сеть лишь — огромное количество таких нейронов, зачастую все выражается довольно простыми матричными операциями. Но как видим, в какой-то момент количество переходит в качество, и уже появляется нечто, уже похожее на понимание абстрактных понятий, на разум.
п.с. нейронными сетями я тоже интересовался, тогда, когда это еще не было мейнстримом, 95-98 гг.
avatar
Кстати, большое спасибо за скрипт для получения данных. Скажите плс, а а сколько вызовов из лимита 500 тратится на скачивание одного тикера за два года? Чтобы понять, сколько в день можно скачать. Как раз искал такие данные для US Stocks :-)
avatar

теги блога eDoK

....все тэги



UPDONW
Новый дизайн