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

Data loading

Assets

Доступные финансовые инструменты с краткой информацией можно скачать с помощью следующей функции:

Function

qnt.data.load_assets(
        min_date: tp.Union[str, datetime.date] = '2007-01-01',
        max_date: tp.Union[str, datetime.date, None] = None,
        tail: tp.Union[datetime.timedelta, None] = None)

Parameters

Parameter Explanation
min_date first date in data
max_date last date of data
tail datetime.timedelta, tail size of data. min_date = max_date - tail

Output

На выход функция подаёт список словарей с информацией по всем тикерам. Например, словарь для «IBIO INC» выглядит следующим образом:

{'name': 'IBIO INC',
 'sector': 'Health Technology',
 'symbol': 'IBIO',
 'exchange': 'AMEX',
 'industry': 'Biotechnology',
 'id': 'AMEX:IBIO',
 'cik': '1420720',
 'FIGI': 'BBG000D5F2L9'}

Example

Его можно использовать, задав временной интервал:

import qnt.data as qndata          # data loading and manipulation
assets = qndata.load_assets(min_date = '2015-01-01', max_date = '2018-01-01') # two boundaries

# one boundary
# assets = qndata.load_assets(min_date = '2018-01-01')
# assets = qndata.load_assets(max_date = '2020-01-01')

Или загрузить информацию за последние несколько лет:

import qnt.data as qndata          # data loading and manipulation
assets = qndata.load_assets(tail = dt.timedelta(days=4*365))

Market data

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

Function

qnt.data.load_data(
        assets: tp.List[tp.Union[dict,str]] = None,
        min_date: tp.Union[str, datetime.date] = '2007-01-01',
        max_date: tp.Union[str, datetime.date, None] = None,
        dims: tp.Tuple[str, str, str] = (ds.FIELD, ds.TIME, ds.ASSET),
        forward_order: bool = False,
        tail: tp.Union[datetime.timedelta, None] = None)

Parameters

Parameter Explanation
assets list of ticker names to load
min_date first date in data
max_date last date of data
dims tuple with ds.FIELD, ds.TIME, ds.ASSET in the specified order
forward_order boolean, set true if you need the forward order of dates, otherwise the order is backward
tail datetime.timedelta, tail size of data. min_date = max_date - tail

Output

На выход функция подаёт массив xarray DataArray с историческими данными для выбранных активов.

asset
time
NASDAQ:AAPL
NASDAQ:GOOGL
2016-09-09 2929.92 798.77
2016-09-12 2874.20 784.52
2016-09-13 3010.28 794.01
2016-09-14 3044.44 787.53
2016-09-15 3188.08 790.01

Example Например, можно загрузить рыночные данные для Apple Inc и Google Inc за последние 4 года:

import qnt.data as qndata          # data loading and manipulation
data = qnt.data.load_data(tail = dt.timedelta(days=4*365),
                        dims=("time", "field", "asset"),
                        assets=['NASDAQ:AAPL', 'NASDAQ:GOOGL'],
                        forward_order=True)
open_price = data.sel(field = 'open')
close_price = data.sel(field = 'close')
low_price = data.sel(field = 'low')
high_price = data.sel(field = 'high')

open_price.to_pandas().head()
asset
time
NASDAQ:AAPL
NASDAQ:GOOGL
2016-09-09 2929.92 798.77
2016-09-12 2874.20 784.52
2016-09-13 3010.28 794.01
2016-09-14 3044.44 787.53
2016-09-15 3188.08 790.01

Fundamental data

Этот шаблон показывает, как загрузить подготовленные фундаментальные данные.

Function

qnt.data.secgov_load_indicators(assets, time_coord, standard_indicators=None, builders = None,
                           start_date_offset = datetime.timedelta(days=365*2),
                           fill_strategy=lambda xarr: xarr.ffill('time'))

Parameters

Parameter Explanation
assets the list of dicts with info for the desired tickers
time_coord xarray DataArray with the time interval
standard_indicators the list of standart fundamental indicators
builders list of IndicatorBuilder or PeriodIndicatorBuilder classes. This parameter is designed for the custom uploading of the sec.gov facts
start_date_offset datetime.timedelta, tail size of data. min_date = max_date - tail
fill_strategy function, filling strategy

Output

На выход функция подаёт массив данных xarray DataArray с историческими фундаментальными данными.

Example

Мы собрали и обработали большой объем фундаментальных данных для пользователей. Список подготовленных данных можно найти здесь. Ниже приведены два способа загрузки подготовленных данных.

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

data_lbls = ['assets', 'liabilities']
# One can load corresponding data
fun_data1 = qnt.data.secgov_load_indicators(assets,time_coord = data.time, standard_indicators = data_lbls)

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

Некоторые индикаторы отображают текущее состояние и регулярно обновляются в каждом отчете.

instant_data_list = [InstantIndicatorBuilder('assets' , ['us-gaap:Assets'], True),
                     InstantIndicatorBuilder('liabilities', ['us-gaap:Liabilities'], True),
                    InstantIndicatorBuilder('shares', ['us-gaap:CommonStockSharesOutstanding',
                                                       'us-gaap:CommonStockSharesIssued'], True)]

Остальные соответствуют определенному периоду. Например, операционные расходы и продажи. Для периодических индикаторов вы можете получать информацию с квартальной, годовой периодичностью или значением за последние двенадцать месяцев - «ltm». Для этих целей поставьте соответственно qf, af или ltm:

period_data_list = [PeriodIndicatorBuilder('operating_expense', ['us-gaap:OperatingExpenses'], True, 'qf'),
                   PeriodIndicatorBuilder('sales_revenue', ['us-gaap:SalesRevenueGoodsNet',
                                                            'us-gaap:SalesRevenueNet',
                                                            'us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax'
                                                           ], True, 'af'),
                    PeriodIndicatorBuilder('sga_expense', ['us-gaap:SellingGeneralAndAdministrativeExpense'], True, 'ltm')]