fremantle-industries / prop

Licence: MIT license
An open and opinionated trading platform using productive & familiar open source libraries and tools for strategy research, execution and operation.

Programming Languages

elixir
2628 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects
Dockerfile
14818 projects
Makefile
30231 projects
shell
77523 projects

Projects that are alternatives of or similar to prop

LiuAlgoTrader
Framework for algorithmic trading
Stars: ✭ 514 (+1876.92%)
Mutual labels:  algo-trading, trading-platform
quanttrader
Backtest and live trading in Python
Stars: ✭ 139 (+434.62%)
Mutual labels:  algo-trading, trading-platform
AutoTrader
A Python-based development platform for automated trading systems - from backtesting to optimisation to livetrading.
Stars: ✭ 227 (+773.08%)
Mutual labels:  algo-trading, trading-platform
yearn-exporter
Realtime and historical Yearn metrics
Stars: ✭ 80 (+207.69%)
Mutual labels:  grafana, defi
grafonnet-playground
Playground for grafanna with jsonnet
Stars: ✭ 25 (-3.85%)
Mutual labels:  grafana
macropower-analytics-panel
It's like Google Analytics, but for Grafana dashboards!
Stars: ✭ 16 (-38.46%)
Mutual labels:  grafana
Graph-Academy-Hub
The Graph Hub is a free, open-source and community-driven knowledge base and documentation initiative on The Graph Protocol. The vision of The Graph Academy is to establish a single go-to-resource for essential information about The Graph Protocol.
Stars: ✭ 62 (+138.46%)
Mutual labels:  defi
harbinger
Harbinger is a decentralized price oracle solution for price feeds on the Tezos network. This repository contains top level documentation for the project.
Stars: ✭ 39 (+50%)
Mutual labels:  defi
prom-bitbucket-exporter
Prometheus Exporter for Bitbucket
Stars: ✭ 47 (+80.77%)
Mutual labels:  grafana
grafana-dashboards
List of Grafana Dashboards 📺
Stars: ✭ 120 (+361.54%)
Mutual labels:  grafana
envsensor-observer-py
Python Bluetooth low energy observer example for OMRON Environment Sensor (2JCIE-BL01)
Stars: ✭ 31 (+19.23%)
Mutual labels:  grafana
dfips
DeFiChain Improvement Proposals (DFIP) & Community Fund Proposals (CFP)
Stars: ✭ 111 (+326.92%)
Mutual labels:  defi
defi-app-old
DeFi Blockchain desktop app for Windows, Linux and Mac.
Stars: ✭ 12 (-53.85%)
Mutual labels:  defi
kube-latency
Benchmark kubernetes' Pod network
Stars: ✭ 33 (+26.92%)
Mutual labels:  grafana
Go-gRPC-RabbitMQ-microservice
Go gRPC RabbitMQ email microservice
Stars: ✭ 107 (+311.54%)
Mutual labels:  grafana
boozer
Kegerator Monitoring Platform. RPi + Docker + Beer + Metrics + Slack. k3s kubernetes friendly.
Stars: ✭ 93 (+257.69%)
Mutual labels:  grafana
grafana-operator
An operator for Grafana that installs and manages Grafana instances, Dashboards and Datasources through Kubernetes/OpenShift CRs
Stars: ✭ 449 (+1626.92%)
Mutual labels:  grafana
monitoring-rancher
🤠How to Set up Rancher Server Monitoring with TIG Stack?
Stars: ✭ 22 (-15.38%)
Mutual labels:  grafana
geostat
GeoStat, Python script for parsing Nginx and Apache logs files and getting GEO data from incoming IP's.
Stars: ✭ 50 (+92.31%)
Mutual labels:  grafana
air-quality
Live dashboard for air quality in my home.
Stars: ✭ 70 (+169.23%)
Mutual labels:  grafana

Prop

Build Status hex.pm version

DeFi? CeFi? TradFi?

prop is an open and opinionated trading platform using productive & familiar open source libraries and tools for strategy research, execution and operation.

Install

  1. Install rust to build Rustler dependencies:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. Add prop to your list of dependencies in mix.exs
def deps do
  [
    {:prop, "~> 0.0.5"}
  ]
end
  1. Copy .env.example -> .env to configure your application when running docker-compose

  2. Start the applications with docker make start

Usage

Starting the server with docker

$ make start

Which will start the services outlined in docker-compose.yml.

Visit prop.localhost.

When running the application with docker-compose you will need to enter the basic auth development credentials:

username: admin
password: password

See the Makefile for more details on the individual commands run.

Download your data with History

Before you can request to download candles you will need to import the products for a supported venue.

Navigate to history.localhost/products and click on Import then wait for History to finish adding products from supported venues.

Go to history.localhost/data/candles/jobs and input the products you would like to download data for. Click on Download and wait for the data to finish by watching the status column.

NOTE: Only FTX based products will currently download. You can check availability of platforms on the history README

Visualize your data with Grafana

Navigate to grafana.localhost/dashboards and select Candles from the General folder.

Set the period to min_1 or whatever timeframe you downloaded the candles to see them plotted on a chart.

Explore your data with Livebook

Navigate to livebook.localhost and open a notebook by clicking on New notebook at the top right.

You can pull in dependencies and explore the individual packages:

Mix.install([
  {:history, "~> 0.0.23"}
])

Or, more conveniently you can setup a runtime that uses the context of your current application. By using Runtime > Configure > Mix Standalone OR Attached Node.

Requirements

prop requires Elixir 1.13+, Erlang/OTP 22+ & Rust.

We recommend using asdf to manage the language requirements.

Prop - http://prop.localhost

home

beta

station

gainers-and-losers

Workbench - http://workbench.localhost

From idea to execution, manage your trading operation across a distributed cluster

stream-realtime-orders

History - http://history.localhost

Download and warehouse historical trading data

history-jobs

Rube - http://rube.localhost

A multi-chain DeFi development toolkit

rube-poc-overview

Slurpee - http://slurpee.locahost

A GUI frontend to manage blockchain ingestion with slurp

recent heads and blocks

Explore Data with LiveBook - http://livebook.localhost

livebook

Grafana - http://grafana.localhost

dashboard-beam-vm-health

Prometheus - http://prometheus.localhost

prometheus

Tools

  • workbench - Manage your trading operation across a distributed cluster
  • history - Download and warehouse historical trading data
  • tai - Composable, real time, market data and trade execution toolkit
  • rube - A multi-chain DeFi development toolkit for Elixir
  • slurpee - A GUI frontend to manage blockchain ingestion with slurp
  • slurp - Blockchain ingestion toolkit
  • livebook - Livebook is a web application for writing interactive and collaborative code notebooks built with Phoenix LiveView
  • grafana - Dashboard Monitoring. Store & Visualize Your Metrics
  • timescaledb - Relational database for time-series data. Supercharged PostgreSQL
  • prometheus - An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting

Development

Initial setup:

  • Installs hex and npm dependencies
  • Generates migrations for history, workbench and tai
  • Runs migrations
  • Seeds database
$ make start_development

See the Makefile for more details.

Test

$ make test

See the Makefile for more details.

Ecto Database

Reset drops the db, creates a new db & runs the migrations

$ mix ecto.reset

Migrate up

$ mix ecto.migrate

Migrate down

# Last migration
$ mix ecto.rollback
# Last 3 migrations
$ mix ecto.rollback -n 3

Debugging

**could not compile dependency :ex_keccak**
  • Ensure you have rust installed so Rustler can build its dependencies: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
nginx: [emerg] host not found in upstream grafana
  • Either run Grafana first with docker-compose up grafana followed by docker-compose up OR run your normal docker-compose up followed by docker-compose restart grafana.
**(DBConnection.ConnectionError)**
  • Usually related to the previous issue. Ensure your reverse proxy is running. Use docker network ls and docker network inspect container_name for a sanity check that your network is what you expect.
**(Postgrex.Error) FATAL 3D000 (invalid_catalog_name) database "prop_dev" does not exist**
  • Rerun your migrations using mix ecto.reset and mix ecto.migrate and ensure they both pass successfully.
** (Mix) Could not start application master_proxy: MasterProxy.Application.start(:normal, []) returned an error: shutdown: failed to start child: {:ranch_listener_sup, HTTP}
    ** (EXIT) shutdown: failed to start child: :ranch_acceptors_sup
        ** (EXIT) {:listen_error, HTTP, :eacces}
  • Ranch cannot run on protected ports without permission. Configure a different port e.g. RANCH_HTTP_PORT=4000 iex mix phx.server

Authors

License

prop is released under the MIT license

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].