Evolufy Documentation

Getting started

Installation

Pip

Docker

Kubernetes

Data engineering lifecycle for Quantative Financiers

Data sources

Quandl

Generation

SQLAlchemy

YahooFinance API

ZipLine Bundles

Custom API

DVC

Ingestion

Schedulers

Events and Sensors

Real-time data

Transformation

Pandas

Darts

Aeron

Serving

Storage

DVC

File system

Timeseries DB

Financial markets

Experimentation

Quantitative Finance = Data Science + Financial Markets

Technical Analysis

Experimentation is the stage where you evaluate your assets, you select assets using an optimization method and apply a rebalancing strategy, and afterward, you compare the results with backtesting. Of course, you may not use a formal or algorithmic method, but you are essentia lly following these steps during the experimentation.

Technical analysis

prices through the study of past market data, primarily price and volume.

Fundamental analysis

Quantiative finance

https://www.youtube.com/watch?v=egjfIuvy6Uw

https://quant.stackexchange.com/questions/2086/at-what-point-does-someone-using-technical-analysis-become-a-quant

Valuation

Liquidity

Technical analysis

Assets

Risk

CAMP

Beta Regression and Beta covariance

Risk premium

Time series analysis

Risk

Value at risk

Alpha, Beta, Gamma, Theta, Vega, and Rho

Optimization

Model

MPT

Constraints

Short sell

Rebalance strategy

Buy & Hold. Buy & Hold can be an effective strategy for long-term investors who are willing to ride out market volatility and are focused on gradual wealth accumulation. It’s easy to implement because it requires passive rebalance strategy. Your profit is provided by the value of your portfolio and cash by the dividends.

from zipline.api import order, record, symbol


def initialize(context):
    # 1. Valuation
    # ...
    # 2. Optimization
    # ...
    # The previous steps gives you the assets to invest.
    context.assets = [{'symbol': 'AAPL', 'shares': 10}, ...]
    # Days counter
    context.day = 0


def handle_data(context, data):
    if context.day == 0:
      for i in context.assets:
       order(symbol(context['symbol']), context['shares'])
    context.day += 1 

Time conditions.

from zipline.api import order, record, symbol


def initialize(context):
    # Days counter
    context.day = 0


def handle_data(context, data):
    if context.day % 360 == 0:
	    # 1. Valuation
	    # ...
	    # 2. Optimization
	    # ...
	    # The previous steps gives you the assets to invest.
	    context.assets = [{'symbol': 'AAPL', 'shares': 10}, ...]
      for i in context.assets:
       order(symbol(context['symbol']), context['shares'])
    context.day += 1 

Stop loss & Take Profit conditions.

Tax conditions.

Use some market indicator such as Maximum Drawdown or Risk.

Support and Resistance conditions.

https://www.youtube.com/watch?v=f19bfHpCths

Classic Quantopian interface

Jupyter

Code reuse

Alphalens

ZipLine

https://zipline.ml4trading.io/beginner-tutorial

PyFolio

MLFlow

Machine Learning

Insider trading *

Script, web, Jupyter, CLI

Resources

Depency Injection including order and record

Asset Materialization

Tracking

I/O Management

Transparent experimentation

Blotter, Brokers and Strategy Deployment

Exchange rates

Place orders

Order status

Cancel orders

Track positions

Close positions

Stock Splits

Deslited positions

Analytics

Proof and loss

Account balances

Portfolio

Perfomance tracking

Orchestration

https://dagster.io/

Resources

IO Managers

Sensors

Loggers

Financial advisors

Undercurrents

CLI

Observability

Cybersecurity considerations

Data Managment

Backups

Data Architecture

IDE and Editors

Contribution

Alternatives for an AlgoTrading Engine

References

Thesis

GitHub

https://github.com/sanchezcarlosjr/evolufy