Cloud Native Electronic Trading System built on Kubernetes and Knative Eventing

Ingenium

-- Still heavily in prototyping stage --

Ingenium is a cloud native electronic trading system built on top of Kubernetes and Knative Eventing.

Ingenium is event-driven, using CloudEvents and Knative Eventing to pass data between components.

Ingenium comes with telemetry built in using OpenTelemetry.

There will also be a web component in the future to view and manage the current state of the system such as

  • View currently running components e.g. enabled strategies, data ingestors
  • Launch backtests
  • View portfolio stats and transaction history

Components

       1.                                         2.
      ┌────────────┐                   ┌────────────┐
      │            │                   │            │
      │  Ingestor  │       Data Event  │  Strategy  │
      │            │     ┌─────────────►            │
      └──────┬─────┘     │             └─────┬──────┘
             │           │                   │
             │           │                   │
             │         ┌─┴────────┐          │
             │         │          │          │
             └─────────►  Broker  ◄──────────┘
           Data Event  │          │     Signal Event
                       └─────────┬┘
                                 │
                                 └───────────────┐
                                                 │Signal Event
                                                 │
┌───────────────────┐ Execution Event ┌──────────▼──┐
│                   ├─────────────────►             │
│  Order Executor   │                 │  Portfolio  │
│                   ◄─────────────────┤             │
└───────────────────┘   Order Event   └─────────────┘
 4.                                               3.

Broker

The broker handles receiving and sending events between components.

By default and for testing the broker is Knative Eventing's Multi-Tenant Channel Broker using in-memory channels. For production systems this can be easily changed to something more suitable like Kafka or GCP PubSub.

Ingestors

Ingestors feed market data into the system. The component produces a data event for each market data which gets sent to the Broker.

Ingestors can be either:

  • One-Shot Kubernetes Jobs that read from files
  • A long running Kubernetes Deployment that reads from a real market exchange

Strategies

Strategies receive market data events from Ingestors and produce signal events based on an implemented trading strategy.

Portfolios

Portfolios receive signal events from Strategies and decide based on several factors such as remaining balance, risk assessment etc. whether to generate a market order event. When generating a market order appropriate order sizing also takes place. Portfolios also manage open positions.

Order Executors

Order Executors receive market order events from Portfolios and execute the appropriate order on the exchange. They also return order execution events back to the Portfolio.

Events

All events are CloudEvents generated using the CloudEvents SDKs. Currently they all serialized to JSON.

Below is a list of all Events in the system and their spec.

Market Data

type DataEvent struct {
	Period     string
	OpenPrice  string
	ClosePrice string
	MaxPrice   string
	MinPrice   string
	Volume     string
}

Signal

type Signal struct {
	signal string
}

Market Order

Order Execution

Owner
Mark Winter
Software Engineer at @Naver
Mark Winter
Similar Resources

Cloud Native Configurations for Kubernetes

CNCK CNCK = Cloud Native Configurations for Kubernetes Make your Kubernetes applications more cloud native by injecting runtime cluster information in

Nov 4, 2021

Kilo is a multi-cloud network overlay built on WireGuard and designed for Kubernetes (k8s + wg = kg)

Kilo Kilo is a multi-cloud network overlay built on WireGuard and designed for Kubernetes. Overview Kilo connects nodes in a cluster by providing an e

Jan 1, 2023

Litmus helps Kubernetes SREs and developers practice chaos engineering in a Kubernetes native way.

Litmus helps Kubernetes SREs and developers practice chaos engineering in a Kubernetes native way.

Litmus Cloud-Native Chaos Engineering Read this in other languages. 🇰🇷 🇨🇳 🇧🇷 🇮🇳 Overview Litmus is a toolset to do cloud-native chaos engineer

Jan 1, 2023

Cloud-on-k8s- - Elastic Cloud on Kubernetes (ECK)

Elastic Cloud on Kubernetes (ECK) Elastic Cloud on Kubernetes automates the depl

Jan 29, 2022

Ready to deploy, distributed cryptocurrency trading bot

Ready to deploy, distributed cryptocurrency trading bot

HyperTrade Ready to deploy, distributed cryptocurrency trading bot. USE THIS SOFTWARE AT YOUR OWN RISK. THE AUTHOR ASSUMES NO LIABILITY FOR YOUR TRADI

Dec 28, 2022

Kubernetes OS Server - Kubernetes Extension API server exposing OS configuration like sysctl via Kubernetes API

KOSS is a Extension API Server which exposes OS properties and functionality using Kubernetes API, so it can be accessed using e.g. kubectl. At the moment this is highly experimental and only managing sysctl is supported. To make things actually usable, you must run KOSS binary as root on the machine you will be managing.

May 19, 2021

Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.

Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.

Open Service Mesh (OSM) Open Service Mesh (OSM) is a lightweight, extensible, Cloud Native service mesh that allows users to uniformly manage, secure,

Jan 2, 2023

Polaris is a cloud-native service discovery and governance center

It can be used to solve the problem of service connection, fault tolerance, traffic control and secure in distributed and microservice architecture.

Dec 26, 2022

🔥 🔥 Open source cloud native security observability platform. Linux, K8s, AWS Fargate and more. 🔥 🔥

🔥 🔥   Open source cloud native security observability platform. Linux, K8s, AWS Fargate and more. 🔥 🔥

CVE-2021-44228 Log4J Vulnerability can be detected at runtime and attack paths can be visualized by ThreatMapper. Live demo of Log4J Vulnerability her

Jan 1, 2023
Enables a FaaS experience for Knative / Cloud Native Runtimes.

Function Buildpacks for Knative Enables a FaaS experience for Knative / Cloud Native Runtimes. Will soon extend func to create deployable functions vi

Nov 2, 2022
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers

Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? How to

Oct 19, 2021
TriggerMesh open source event-driven integration platform powered by Kubernetes and Knative.

TriggerMesh open source event-driven integration platform powered by Kubernetes and Knative. TriggerMesh allows you to declaratively define event flows between sources and targets as well as add even filter, splitting and processing using functions.

Dec 30, 2022
provide api for cloud service like aliyun, aws, google cloud, tencent cloud, huawei cloud and so on

cloud-fitter 云适配 Communicate with public and private clouds conveniently by a set of apis. 用一套接口,便捷地访问各类公有云和私有云 对接计划 内部筹备中,后续开放,有需求欢迎联系。 开发者社区 开发者社区文档

Dec 20, 2022
The OCI Service Operator for Kubernetes (OSOK) makes it easy to connect and manage OCI services from a cloud native application running in a Kubernetes environment.

OCI Service Operator for Kubernetes Introduction The OCI Service Operator for Kubernetes (OSOK) makes it easy to create, manage, and connect to Oracle

Sep 27, 2022
Knative function anonymousface for golang
Knative function anonymousface for golang

knative-function-anonymousface Usage $ curl -s -X POST -F [email protected] http://anonymousface.default.127.0.0.1.nip.io:8080 > out.jpg Installation

Nov 23, 2021
Knative Sample Controller

Knative Sample Controller Knative sample-controller defines a few simple resources that are validated by webhook and managed by a controller to demons

Jan 21, 2022
Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers.

Cloud-Z Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers. Cloud type, instance id, and type CPU infor

Jun 8, 2022
Cloud-gaming-operator - The one that manages VMs for cloud gaming built on GCE

cloud-gaming-operator GCE上に建てたクラウドゲーミング用のVMを管理するやつ 事前準備 GCEのインスタンスかマシンイメージを作成してお

Jan 22, 2022
Kubernetes Operator for a Cloud-Native OpenVPN Deployment.

Meerkat is a Kubernetes Operator that facilitates the deployment of OpenVPN in a Kubernetes cluster. By leveraging Hashicorp Vault, Meerkat securely manages the underlying PKI.

Jan 4, 2023