A collection of quantitative trading strategies, statistical arbitrage frameworks, and backtesting tools developed across years of research in systematic finance. All code open-source on GitHub.
A public, fully transparent investment portfolio on eToro — diversified across ETFs, equities, and FX, with disciplined risk management. All figures independently tracked and verifiable on the platform.
Core logic from the pairs trading strategy — testing for cointegration, fitting the spread, and generating entry/exit signals.
# Pairs Trading Core Framework — Boyan Davidov # Statistical arbitrage via cointegration import numpy as np import pandas as pd from statsmodels.tsa.stattools import coint, adfuller from statsmodels.regression.linear_model import OLS def test_cointegration(s1, s2, significance=0.05): """Test pair for cointegration using Engle-Granger.""" score, pvalue, _ = coint(s1, s2) return pvalue < significance, pvalue def compute_spread(s1, s2): """OLS regression to compute hedge ratio and spread.""" model = OLS(s1, s2).fit() hedge_ratio = model.params[0] spread = s1 - hedge_ratio * s2 return spread, hedge_ratio def generate_signals(spread, entry_z=2.0, exit_z=0.5): """Z-score based entry/exit signal generation.""" zscore = (spread - spread.mean()) / spread.std() signals = pd.Series(0, index=spread.index) signals[zscore > entry_z] = -1 # Short spread signals[zscore < -entry_z] = 1 # Long spread signals[abs(zscore) < exit_z] = 0 # Exit return signals, zscore def adf_stationarity(spread): """Verify spread stationarity via ADF test.""" result = adfuller(spread.dropna()) return { 'statistic': result[0], 'p_value': result[1], 'stationary': result[1] < 0.05 }