DOU Проектор: Kattana — професійний торговий термінал для криптовалют

У рубриці DOU Проектор всі охочі можуть презентувати свій продукт (як стартап, так і ламповий pet-проект). Якщо вам є про що розповісти — запрошуємо взяти участь. Якщо ні — можливо, серія надихне на створення власного made in Ukraine продукту. Питання і заявки на участь надсилайте на editors@dou.ua .

Всім привіт! Мене звати Богдан, я співзасновник торгового терміналу Kattana. Півроку тому ми з командою почали будувати продукт з нуля. З того часу ми багато чого досягли: сформували з нуля крос-функціональну команду, визначили рамки MVP і нещодавно запустили бета-версію нашого продукту для macOS та Windows.

Kattana — це професійний десктопний торговий термінал для криптотрейдерів, який дозволяє паралельно торгувати на кількох криптобіржах і наділений інструментами, які повністю покривають увесь робочий процес трейдера, починаючи з аналізу ринку і закінчуючи оцінкою трейдингової успішності та управлінням ризиками.

Ідея

Ще в університетські роки я торгував акціями на Нью-Йоркській фондовій біржі (NYSE) і NASDAQ, працюючи в пзо-трейдинговій компанії. Частина «пзо» означає, що ти торгуєш капіталом компанії, а не своїм власним. Через запальний темперамент я завжди схилявся до високоризикованих активів, наприклад, акцій фармацевтичних компаній, які можуть змусити посивіти будь-кого після входу в позицію через свою волатильність. Тож ця жага до нового привела мене згодом у криптотрейдинг. На цій арені все було як непахане поле. Примітивність інструментів для торгівлі просто вражала. У світі класичних фінансових ринків існує Bloomberg Terminal, який хоч і є монстром з точки зору функціоналу, впевнено займає лідерські позиції серед трейдингового ПЗ. Яким би складним та дорогим він не був, жодному новому продукту так і не вдалося порушити його лідерство. Трейдери — це особлива каста людей. У них з'єднання являється відчуття приналежності до нобілітету, як тільки вони оволоділи складним функціоналом терміналу. Альо Bloomberg — це для еліти, для всіх інших є простіші аналоги.

З криптовалютами все було по-іншому. Ринок — дуже фрагментований, як з точки зору ліквідності та доступних торгових пар, так і з боку наявних інструментів для торгівлі. Існує багато бірж та торгових майданчиків, на яких котуються різні монети. До того ж трейдинг, як будь-яка інша робота, вимагає професійних інструментів, які дозволяють робити її ефективно. На той час не існувало єдиного рішення, за допомогою якого трейдер міг бі досліджувати ринок, відкривати заявки щодо купівлі чи продаж активів, а також аналізувати свою торгову успішність та ризики. Все це перешкоджає багатьом охочим займатись криптотрейдингом професійно, і врешті-решт, зводиться до втрат часу та коштів.

Таким чином, у нас виникла ідея створити власний Bloomberg для криптовалют, який би вирішив проблему фрагментованості ринків та інструментів і заклав бі основу для нової фінансової системи.

Наша команда. На фото зліва направо: Ілля Щирий (Product Designer), Богдан Кіт (СЕО), Дмитро Бєляєв (CTO)

Реалізація

Будь-який інноваційний продукт створюється в умовах глобальної невизначеності. Коли ми формуємо певні моделі чи гіпотези, ми керуємось досвідом, даними та інформацією, які маємо особисто, забуваючи, що у світі все багатогранно і є безліч речей, які існують поза нашим уявленням чи світоглядом.

Тому, перед тим як почати створювати продукт, важливо було провести додатковий аналіз ринку та аудиторії, щоб уникнути будь-яких упереджень. Ми прагнули зрозуміти не лише, наскільки гострою і важливою є ця проблема для криптотрейдерів, а й яке рішення найкраще підходить, щоб її вирішити.

Було сформовано низку гіпотез стосовно продукту, аудиторії та ринку. Після цього ми перейшли до їх безпосередньої перевірки через проведення користувацьких інтерв'ю з трейдерами. Чесно кажучи, це було доволі не тривіальне завдання через специфіку самого ринку та культ «повної анонімності» серед представників криптоспільноти. Але нам все-таки вдалось перевірити основні гіпотези, і що не менш важливо, визначити тип продукту, який би вирішував проблему найкращим доступним способом.

Після цього ми з командою окреслили технологічний стек, який ми збирались використовувати для створення продукту. Він був сформований на основі гіпотез, які нам вдалось підтвердити під час інтерв'ю та аналізу.

Враховуючи низку факторів, де безпека та індивідуальні налаштування інтерфейсу під потреби трейдера займають чільне місце, ми вирішили будувати торговий термінал у вигляді десктопного додатку. Стартаперський дух нашої компанії також вимагав якомога більш ефективного використання як фінансових, так і технічних ресурсів команди. Через це в плані технологій вибір пав на Electron JS, на базі якої створені такі продукти, як Slack, MS Visual Studio Code, Discord та ін. Знайте досвідченого технічного розробника зі знанням непопулярного фреймворку в наших широтах було ще тім завданням. В один момент вже здалося, що краще відмовитись від такої авантюри взагалі і перейти на нативні технології.

Все ж таки нам дуже пощастило, і до нашої команди приєднався Дмитро (СТО), а трохи згодом Ілля (Product Designer). Як результат, у липні цього року ми в трьох почали активну роботу над продуктом. На перших стадіях розробки ми кілька разів змінювали та уточнювали обсяг функціоналу для нашого MVP згідно з фідбеком, який отримували, та нової інформації, що відкривалася під час роботи. Змінювались біржі, які ми збирались підключати до терміналу, та їхня кількість. Це було пов'язаність язано як з бізнесовим, так і технічним підґрунтям.

Перший high-level wireframe програми з базовим функціоналом




UX-архітектуру продукту можна подивитись за посиланням .

Стосовно функціоналу продукту, ми прагнули створити рішення, яке б на мінімально життєздатному рівні покрило б увесь робочий процес трейдера. Зазвичай, він складається з 3-х основних етапів: аналіз ринку та торгових пар (графіки, індикатори, графічні інструменти), безпосередня торгівля (відкриття ордерів, виставлення стоп-лосів, стратегії входження в позицію) та ризик-менеджмент (моніторинг ризиків у розрізі позицій та бірж, розрахунок торгової успішності через показник ? — alpha).

Згідно з цим, основний дизайн-челендж полягав у тому, щоб зробити досвід трейдингу максимально пробачимо для користувачів і в тієї ж годину надати їм гнучкість у налаштуванні інтерфейсу під особисті потреби. Таким чином, Kattana — це продукт з модульним дизайном, який дозволяє користувачу одночасно працювати в декількох вікнах (workspaces) із індивідуальним набором віджетів. Таке рішення дає змогу користуватись продуктом на кількох моніторах, не завдаючи шкоди загальній простоті використання.






Щоб краще розкрити тему технічних питань, я попросив Дмитра (CTO) трохи допомогти і поділитись своїм досвідом та підходами до створення нашого продукту.

Щоб зрозуміти, як і чому у нас все влаштовано певним чином, потрібно хоча б приблизно уявляти, як і що віддає криптобіржа. Почнемо з найскладнішого — ордер-буку (список відкритих заявок на купівлю та продаж). Для кожної відкритої торгової парі є два масиви заявок від 20 до 1000 елементів, які можуть прилітати кілька разів за секунду. Решта даних — це графіки, ордери, баланси, символи пар і сповіщення. Єдиного стандарту відповіді сервера для криптобірж не існує, у кожної з них свій API, зовні вони схожі між собою.

Загалом існувало три технічні складності:

  1. Стандартизувати відповіді з бірж (типи ордерів, формати символів пар, причини помилок).
  2. Змусити програму не гальмувати через частині перемальовування елементів.
  3. Зрозуміти, що робити в нестандартній ситуації (нічого — ?).

Щодо пункту 1, потрібно було визначити формат роботи з даними в програмі. Звичайно, у світі класичних фінансових ринків існують оптимізовані структури у вигляді cap'-proto, рівні руки і C++. Альо у світі криптовалютних ринків таких проривних промов майже немає, а основні дані біржі надсилають у вигляді JSON, всередині якого знаходиться масив. Оскільки «порівнювати» масив для пошуку змін не є оптимальним рішенням, то ці дані ми конвертуємо у список Hash, Set і так далі. Як можна виміряти ефективність цього підходу? Для цього в Node.js існують flame charts, через які можна спостерігати за виділеною пам " яттю, писати бенчмарки з різними структурами даних для того, щоб знайте найбільш ефективні. Наскільки це важливо? З точки зору бізнесу — дуже важливо. Потрібно, щоб програма запускалася на старому MacBook Pro зразка 2010 року і не споживала більше 5-10% CPU. Якщо в якийсь момент згаданих рішень буде недостатньо або вони почнуть з'єднання їдати багато пам'яті, то ми перепишемо всі на C++ у вигляді Node.js extension.

Альо все ж таки найцікавішим і найменш очевидна технічним викликом був пункт 2. Якщо у користувача два вікна, в яких відкрито за дві парі на різних біржах, то перемальовувати всі дані при кожному оновленні не є хорошим рішенням. Найочевиднішим і пробачимо було рішення викинути масиви, а замість них використовувати key-value hash в тих даних, які потрібно часто оновлювати. Розуміючи цей факт, ми доволі просто реалізували таку архітектуру:

В store ми зберігаємо всі ці фрази об'єкти, диспетчер відповідає за потоки даних: нам не потрібно відправляти всі оновлення в усі вікна, а тільки оновлення парі і пов'язаність язаного вікна. Також дані варто групувати перед відправкою, наприклад, на парі ETH/BTC в секунду може бути проведено 10 торгів (10 trading history events). Наш користувач побачить всі 10, альо разів в секунду.

Все, що може оптимізувати рендеринг за типом memoize чи reselect, ми використовуємо. Також у нас є маленький бекенд, де ми застосовуємо рішення для пришвидшення процесу віддачі та запису даних, які описані у цьому відео . В цей час також працюємо над розширенням серверної частини продукту, за допомогою якої трейдери зможуть автоматизовувати свої торгові стратегії, а також відправляти ордери на біржу, які дозволяють автоматично зафіксувати збитки або прибуток, коли потрібно (stop-loss, take-profit). Такого функціоналу більшість бірж не пропонує.

У майбутньому ми плануємо використовувати дані для machine learning, але про це поки що рано говорити.

Результати і плани

На початку грудня 2018 мі випустив бета-версію Kattana для macOS. Трохи згодом також з'єднання з'явилася версія Windows. За цей час ми також отримали перші інвестиції та уклали стратегічне партнерство з Fund3, однією з компаній-лідерів у сфері інфраструктурних рішень для електронної торгівлі на криптовалютних ринках.

Наша середньострокова ціль — це знайті product-market fit. Тому на цьому етапі ми активно сфокусовані на так званих non-scalable каналах просування: соціальні мережі, Telegram, лідери думок, майданчики нових продуктів та інші. Працюючи з фідбеком, який отримуємо від наших користувачів та аналізуючи основні продуктові метрики, ми визначаємо подальший вектор розвитку продукту. Через високий рівень шахрайства з боку ICO, великі рекламні провайдери, такі як Google чи Facebook, наклали заборону на будь-яку рекламу, що хоч якось стосується криптовалют та блокчейну. Разом з дещо таємним характером нашої аудиторії — це становить серйозний челендж. Тім не менш, ми намагаємось активно тестувати різні доступні платні канали залучення аудиторії, щоб перевірити життєздатність нашої прогнозованої unit-економіки та бізнес-моделі на ринку.

Наша глобальна ціль — це поєднати продуктову та сервісну модель бізнесу, яка поширена на традиційних фінансових ринках, коли торгова платформа, через яку трейдер торгує також поєднана з брокерськими послугами. Це дозволить суттєво полегшити доступ до ринку криптоактивів з боку широкої аудиторії традиційних трейдерів, яких лякають ризики, пов'язані з втратою коштів через злам бірж чи втратою ключів доступу до гаманця. З іншого боку, такої моделі потребують інституціональні гравці, які поки лише роблять нервові ривки в бік криптоактивів, постійно оглядаючись на SEC та інші регуляторні органи.

Отже, ми прагнемо зробити ринок блокчейн-активів більш зрілим, тим самим заклавши якісний фундамент для нової, відкритої та прозорої фінансової системи.

Якщо у вас виникнуть питання щодо нашого продукту, будемо раді відповісти на них в коментарях чи поштою. Писати можна сюди: bohdankit.s@gmail.com .

Опубліковано: 02/04/19 @ 10:00
Розділ Різне

Рекомендуємо:

Кремнієва долина Європи. Український програміст про життя в Естонії та роботу в Bolt (Taxify)
Product Management дайджест #7: гейміфікація, product-led growth, як працювати з ML
Як робити доповіді на конференціях - поради 40+ експертів
Product Manager Маркіян Мацех: як за 7 місяців знайті роботу мрії в Нью-Йорку
Як стати full stack розробником, знаючи back-end. Покрокова інструкція