# Dzentra Knowledge Architecture Charter **Версия:** 1.1\ **Статус:** Release\ **Проект:** Dzentra\ **Подсистема:** Market Intelligence ------------------------------------------------------------------------ # Цель Настоящий документ определяет фундаментальные принципы разработки Knowledge Architecture проекта Dzentra. Knowledge Architecture определяет правила построения моделей знаний, архитектурных стандартов и инженерной документации проекта Dzentra. Все последующие архитектурные решения, документы, спецификации, Engine и программный код должны соответствовать настоящему Charter. При возникновении противоречий настоящий документ имеет наивысший приоритет среди документов Knowledge Architecture. ------------------------------------------------------------------------ # 1. Главная цель Dzentra Главная задача Dzentra --- не предсказывать рынок. Главная задача Dzentra --- максимально достоверно моделировать текущее состояние наблюдаемого рынка. Торговое решение является следствием качества этой модели, а не целью самой модели. ------------------------------------------------------------------------ # 2. Главная философия Dzentra не является системой, принимающей решения на основании отдельных индикаторов. Dzentra является системой построения модели рынка. Переход осуществляется от подхода: ``` text Индикатор ↓ Сигнал ↓ Сделка ``` к подходу: ``` text Наблюдение ↓ Свойства ↓ Состояния ↓ Контекст ↓ Модель рынка ↓ Decision ↓ Execution ``` ------------------------------------------------------------------------ # 3. Архитектура платформы Утверждённая архитектура верхнего уровня: ``` text Market Data │ ▼ Market Intelligence │ ▼ Decision │ ▼ Execution │ ▼ Exchange ``` Данная архитектура не пересматривается без выпуска новой версии архитектурного стандарта. ------------------------------------------------------------------------ # 4. Разделение ответственности - **Market Intelligence** отвечает исключительно за построение модели наблюдаемого рынка. - **Decision** отвечает исключительно за принятие торгового решения. - **Execution** отвечает исключительно за исполнение принятого решения. Никакой слой не должен выполнять функции другого слоя. ------------------------------------------------------------------------ # 5. Архитектура знаний Разработка начинается с предметной области. Обязательная последовательность: ``` text Предметная область ↓ Reference Model ↓ Knowledge References ↓ Engine Specifications ↓ Runtime Contracts ↓ Build Tasks ↓ Code ↓ Tests ``` Ни один этап не должен пропускаться. ------------------------------------------------------------------------ # 6. Документация определяет код Документация является единственным источником истины. Код является реализацией документации. Если код противоречит документации, код приводится в соответствие с документацией. Документация не изменяется ради существующей реализации. ------------------------------------------------------------------------ # 7. Принципы построения документации Документы Knowledge Architecture являются инженерными стандартами. Документация должна быть: - нормативной; - однозначной; - самодостаточной; - внутренне непротиворечивой; - независимой от реализации. Каждое утверждение включается только в том случае, если оно необходимо для дальнейшего проектирования системы. ## Принцип читаемости Документы разрабатываются по принципам инженерных стандартов, но пишутся простым профессиональным языком. Текст должен быть: - точным; - логически последовательным; - понятным специалисту предметной области; - свободным от излишнего канцелярита. Строгость не должна ухудшать читаемость. ------------------------------------------------------------------------ # 8. Reference Model Reference Model описывает исключительно предметную область. Reference Model: - описывает знания о рынке; - не описывает программную реализацию; - не описывает алгоритмы; - не описывает конкретные индикаторы; - не определяет распределение ответственности между Engine; - не определяет способы вычислений. Reference Model отвечает на вопрос: > Что существует в предметной области и какие знания могут быть > получены? ------------------------------------------------------------------------ # 9. Принцип проектирования Сначала определяется: 1. что существует; 2. какие знания можно получить; 3. как знания связаны; 4. какой Engine отвечает за конкретный домен; 5. как реализовать систему. Никогда наоборот. ------------------------------------------------------------------------ # 10. Engine Каждый Engine отвечает только за один домен знаний. Engine никогда не принимает торговых решений. Engine возвращает исключительно знания. ------------------------------------------------------------------------ # 11. Decision Decision объединяет результаты Engine и формирует торговое решение. ------------------------------------------------------------------------ # 12. Execution Execution не анализирует рынок. Execution выполняет принятое решение. ------------------------------------------------------------------------ # 13. Терминология Каждый термин имеет одно официальное определение. Использование нескольких терминов для обозначения одного понятия не допускается. ------------------------------------------------------------------------ # 14. Принцип последовательности Любое понятие может использовать только термины, определённые ранее. Использование неопределённых понятий запрещается. ------------------------------------------------------------------------ # 15. Иерархия знаний ``` text Рынок ↓ Наблюдение ↓ Свойство ↓ Состояние ↓ Контекст ↓ Оценка ↓ Решение ``` Переход между уровнями является односторонним. ------------------------------------------------------------------------ # 16. Принцип объективности Reference Model описывает рынок независимо от наблюдателя. Market Intelligence строит внутреннюю модель наблюдаемого рынка. ------------------------------------------------------------------------ # 17. Независимость предметной области Определения предметной области не должны зависеть от: - формата данных; - биржи; - таймфрейма; - языка программирования; - способов реализации. ------------------------------------------------------------------------ # 18. Наблюдаемость Любое знание должно быть основано: - на наблюдаемых свойствах рынка; - либо на логически выводимых следствиях. Предположения о намерениях участников рынка не входят в модель знаний. ------------------------------------------------------------------------ # 19. Академическая строгость Необходимо различать: - наблюдения; - свойства; - состояния; - контекст; - вероятностные оценки; - торговые решения. Эти уровни не смешиваются. ------------------------------------------------------------------------ # 20. Независимость от школ анализа Dzentra может использовать идеи различных профессиональных подходов при условии их рациональной и наблюдаемой обоснованности. Ни одна школа анализа не является официальной моделью Dzentra. ------------------------------------------------------------------------ # 21. Жизненный цикл документации Каждый документ проходит стадии: ``` text Draft ↓ Review ↓ Release ↓ Evolution ``` ------------------------------------------------------------------------ # 22. Методология разработки документов Сначала проектируется структура документа. После утверждения структуры главы разрабатываются последовательно и проходят архитектурную проверку до утверждения. ------------------------------------------------------------------------ # 23. Главный принцип проекта > Документация Dzentra не описывает код. Документация Dzentra определяет > код. ------------------------------------------------------------------------ # 24. Методологический приоритет Приоритеты Knowledge Architecture: 1. Архитектурная целостность. 2. Корректность модели предметной области. 3. Масштабируемость. 4. Простота реализации. ------------------------------------------------------------------------ # 25. Цель Knowledge Architecture Создать формальную, внутренне непротиворечивую и масштабируемую модель знаний о рынке, которая станет фундаментом всех будущих компонентов Dzentra независимо от языка программирования, реализации и алгоритмов. ------------------------------------------------------------------------ # 26. Эволюция Charter Настоящий Charter является конституцией Knowledge Architecture. В него включаются только универсальные принципы, сохраняющие актуальность независимо от этапа разработки и конкретной реализации. Изменение Charter допускается только после архитектурного обсуждения и выпуска новой версии.