> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ziplime.ru/llms.txt
> Use this file to discover all available pages before exploring further.

# Данные на момент публикации

> MOEX AlgoPack, фундаментальные показатели, сделки инсайдеров и календарь отчётностей без заглядывания в будущее

Данные на момент публикации (point-in-time) индексируются по дате, когда строка **стала публичной**, поэтому стратегия на баре `t` видит только то, что было известно к `t`. Ziplime читает такие данные напрямую — без шага загрузки и без сборки бандла. Для российского рынка это прежде всего MOEX AlgoPack через zipfinam; встроенные наборы на Hugging Face Hub описывают компании США.

## MOEX AlgoPack

[AlgoPack](https://data.moex.com) — аналитика, которую Мосбиржа считает по собственной ленте сделок и стакану. Её не восстановить по свечам: биржа видит каждую заявку, включая снятые. zipfinam регистрирует схему адресов `algopack://`, и таблицы читаются той же строкой, что и цены:

```bash theme={null}
pip install "zipfinam[algopack]"
export ALGOPACK_API=...     # ключ MOEX AlgoPack, подписка на https://data.moex.com
```

```python theme={null}
flow = await data.history(
    assets=[context.sber],
    fields=["disb", "val"],
    bar_count=5,
    data_source="algopack://eq/tradestats",
)
```

| Таблица | Что видит стратегия | Рынки |
| - | - | - |
| `tradestats` | Кто пересекал спред: объём агрессивных покупок против продаж (`disb`) | акции, фьючерсы, валюта |
| `orderstats` | Какие заявки выставили и какие сняли: настоящий спрос против декорации | акции, фьючерсы, валюта |
| `obstats` | Спред в б.п., глубина и дисбаланс стакана каждые 5 минут | акции, фьючерсы, валюта |
| `hi2` | Концентрация потока: покупает толпа или один игрок | акции, фьючерсы |
| `futoi` | Открытый интерес физлиц против юрлиц | фьючерсы |
| `alerts` | Сигналы биржи об аномальной активности | акции, фьючерсы, валюта |

Каждая строка становится видна стратегии в момент, когда **биржа её опубликовала**:

* дневной итог виден на следующей сессии, а не в течение своей;
* `hi2` биржа публикует примерно через шесть минут после своей метки времени, и раньше этого стратегия его не увидит;
* строки, которые биржа пересчитала задним числом, остаются в бэктесте на своём месте до даты пересчёта.

Пятиминутные данные — по адресу `algopack://eq/tradestats/5min`. Загруженная история кэшируется на диске, поэтому повторный бэктест по тем же годам не скачивает её заново. Пять готовых стратегий — по одной на таблицу — лежат в [`examples/algorithms/algopack`](https://github.com/arbuzovv/zipFinam/tree/main/examples/algorithms/algopack) репозитория zipfinam.

## Наборы данных на Hugging Face Hub

```bash theme={null}
pip install "ziplime[huggingface]"
```

| Набор | Что содержит |
| - | - |
| `ZipLime/congress-trading` | Раскрытия сделок членов Конгресса США |
| `ZipLime/insider-trading` | Сделки инсайдеров (форма 4 SEC) |
| `ZipLime/earnings-calendar` | Публикации отчётности с точным временем приёма |
| `ZipLime/company-fundamentals` | Фундаментальные показатели компаний |

Наборы доступны на [huggingface.co/ZipLime](https://huggingface.co/ZipLime). В карточке каждого набора описаны его таблицы (configs) и столбцы. Эти наборы покрывают американские компании; для бумаг Мосбиржи используйте AlgoPack или собственные источники.

### Форма в одну строку

Укажите набор адресом прямо в `data.history`:

```python theme={null}
df = await data.history(
    assets=context.universe,
    bar_count=40,
    fields=["net_notional_usd"],
    data_source="hf://ZipLime/congress-trading/features",
)
```

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

<Warning>
  Форма в одну строку подключает окно самой симуляции, поэтому **не видит ничего, что было опубликовано до первого бара**. Сигнал, который смотрит на 90 дней назад, начинает работу вслепую. Если нужна история до начала запуска, используйте явную форму с более ранним `start_date`.
</Warning>

### Явная форма

Подключите набор один раз в `initialize`, захватив период до первого бара, и читайте его как любой другой источник:

```python theme={null}
import datetime

LOOKBACK = datetime.timedelta(days=120)


async def initialize(context):
    context.universe = await context.universe_symbols("Q500US")
    context.insiders = await context.huggingface_dataset(
        "ZipLime/insider-trading",
        config="features",
        revision="ba0785efcede0b3a13af48dc658a1d39bc87ad1e",
        fields=["is_cluster_buy", "n_unique_buyers_30d"],
        start_date=context.clock.start_session - LOOKBACK,
    )


async def handle_data(context, data):
    rows = await data.history(
        assets=context.universe,
        since=datetime.timedelta(days=90),
        fields=["is_cluster_buy"],
        data_source=context.insiders,
    )
    ...
```

| Аргумент | Значение |
| - | - |
| `repo_id` | `owner/name` на Hub или полный адрес `hf://owner/name/config` |
| `config` | Таблица для подключения. По умолчанию `features`, если она есть |
| `revision` | Ветка, тег или коммит. Ветка привязывается к коммиту, и он выводится в журнал |
| `fields` | Столбцы, которые нужно оставить кроме `date` и `sid`. По умолчанию все |
| `start_date`, `end_date` | Окно загрузки. По умолчанию — окно симуляции |
| `name` | Имя источника. По умолчанию — его адрес |

### Закрепляйте ревизию

Наборы только дополняются и растут. Если оставить `main`, один и тот же бэктест с разницей в месяц прочитает разные данные и выдаст разный результат. Движок заранее привязывает ветку к коммиту и выводит его в журнал:

```text theme={null}
Pinned a Hugging Face dataset to the commit it is at now
  dataset=ZipLime/congress-trading revision=67c335f5207d5190ada5f89803615848dbf52ee0
```

Передайте этот коммит в `revision=`, чтобы точно повторить запуск.

### Читайте отчёт о подключении

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

## Событийным данным нужен `since`

Наборы раскрытий разрежены: тридцать отчётов по одному тикеру могут растянуться на четыре года. Читайте их с `since=datetime.timedelta(...)`, а не с `bar_count=`.

## В векторных сигналах

Подключённый набор доступен и в `compute_signals` как `prices.dataset(name)`. Подробнее — в разделе [«Векторные сигналы»](/language/strategy-language/vectorized-signals).

## Другие схемы адресов

Схема `hf://` встроена в движок. Расширения регистрируют собственные схемы, и стратегия читает `data.history(..., data_source="scheme://...")` без какой-либо регистрации со своей стороны — так zipfinam добавляет `algopack://`. Подробнее — в разделе [«Площадки и календари»](/language/strategy-language/venues-and-calendars).

Разобранные примеры с результатами и контрольными запусками — в [`examples/huggingface`](https://github.com/Limex-com/ziplime/tree/master/examples/huggingface) репозитория Ziplime.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.