FlyTV
код

Как это собрано

Никакой магии: Python считает эталон, генератор превращает граф в Pine, Pine повторяет эталон бар в бар.

1

ETL

Из публичного бакета MaleCNS достаём подграф: командные нейроны, детекторы приближения, грибовидные тела. 5 084 нейрона, 108 317 связей.

2

Референс

LIF-симулятор на Python, дофаминовая пластичность, бектест, контроль на перемешанных весах. Здесь живёт вся биология.

3

Дистилляция → Pine

Отбор под бюджет платформы и генерация .pine: граф едет внутри скрипта упакованной строкой.

Приём 1 — граф внутри строкового литерала

Массив на 17 тысяч связей в исходнике не помещается: у Pine лимит на количество токенов. Но строковый литерал стоит один токен независимо от длины. Поэтому связи кодируются по три символа на ребро и распаковываются на первом баре.

// граф едет упакованной строкой и раскрывается один раз
var int[] src = array.new_int()
var int[] dst = array.new_int()
var int[] w   = array.new_int()
if barstate.isfirst
    blob = part0() + part1() + part2()   // по 8 push на функцию: обход CE10295
    for i = 0 to str.length(blob) / 3 - 1
        decode(str.substring(blob, i * 3, i * 3 + 3))

Приём 2 — считаем только то, что сработало

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

// обновление состояния — только на закрытом баре, иначе сеть переисполняется на каждом тике
if barstate.isconfirmed
    for step = 0 to STEPS - 1
        for idx in fired            // очередь, а не все 995 клеток
            for e = rowStart(idx) to rowEnd(idx)
                charge(dst, w)

Приём 3 — бюджет

Замеры на графике: примерно 4–6 млн операций в секунду, весь прогон обязан уложиться в 20 секунд. Отсюда потолок около 100 млн операций — он и задал размер дистиллята: 995 нейронов, 17 000 связей, 20 шагов симуляции на бар.

Забрать скрипт

Он живёт в TradingView, в разделе Community Scripts: открытый исходник, прошедший модерацию, добавляется на любой график бесплатно. Эта публикация — единственная его копия.

TradingView Community Scripts · открытый исходник
FlyTV — a real fruit fly connectome trading on your chart
tradingview.com/script/nmnHkA02-FlyTV-a-real-fruit-fly-connectome-trading-on-your-chart/

Добавить на график

Один клик, любой инструмент и таймфрейм. 995 нейронов и 17 000 измеренных связей пересчитываются на закрытии каждого бара.

Прочитать исходник

648 строк Pine Script v6, открыто и промодерировано. Упакованный список связей и событийное распространение спайка — всё там.

Проверить цифры

Strategy Tester со своей комиссией и проскальзыванием. По умолчанию 0,02 % мейкера на сторону — подставьте ставки своей площадки.

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

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

Как воспроизвести

  1. Скачать три файла MaleCNS v1.0 из публичного бакета flyem-male-cns — аннотации, нейротрансмиттеры, веса связей. Авторизация не нужна.
  2. Извлечь подграф: командные нейроны, LC4/LPLC2, KC/MBON/PAM/PPL1.
  3. Прогнать LIF-симулятор по часовым барам и обязательно тот же прогон на перемешанных весах с сохранением распределения степеней. Без контроля любое заявление «работает проводка» ничего не стоит.
  4. Отобрать подграф под бюджет платформы и сгенерировать .pine.
  5. Сверить решения Pine и Python бар в бар.

Лицензия и атрибуция

Данные: MaleCNS v1.0 под CC BY 4.0 — FlyEM/HHMI Janelia, University of Cambridge, MRC LMB, Google Research. Коннектом FlyWire намеренно не используется: он под некоммерческой лицензией.

Ничего на этом сайте не является торговой рекомендацией.