Evolufy Documentation
Getting started
Installation
Pip
Docker
Kubernetes
Data engineering lifecycle for Quantative Financiers
Data sources
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
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
Resources
IO Managers
Sensors
Loggers
Financial advisors
Undercurrents
CLI
Observability
Cybersecurity considerations
Data Managment
Backups
Data Architecture
IDE and Editors