progress
This commit is contained in:
+10
-87
@@ -8,6 +8,7 @@ import numpy as np
|
||||
# ============= statsmodels ===================
|
||||
from statsmodels.tsa.vector_ar.vecm import VECM
|
||||
|
||||
from backtest_configs import CRYPTO_CONFIG
|
||||
from tools.data_loader import load_market_data, transform_dataframe
|
||||
from tools.trading_pair import TradingPair
|
||||
from results import BacktestResult
|
||||
@@ -16,90 +17,11 @@ NanoPerMin = 1e9
|
||||
UNSET_FLOAT: float = sys.float_info.max
|
||||
UNSET_INT: int = sys.maxsize
|
||||
|
||||
# ------------------------ Configuration ------------------------
|
||||
# Default configuration
|
||||
CRYPTO_CONFIG: Dict = {
|
||||
"security_type": "CRYPTO",
|
||||
# --- Data retrieval
|
||||
"data_directory": "./data/crypto",
|
||||
"datafiles": [
|
||||
"20250519.mktdata.ohlcv.db",
|
||||
# "20250519.mktdata.ohlcv.db",
|
||||
],
|
||||
"db_table_name": "bnbspot_ohlcv_1min",
|
||||
# ----- Instruments
|
||||
"exchange_id": "BNBSPOT",
|
||||
"instrument_id_pfx": "PAIR-",
|
||||
"instruments": [
|
||||
"BTC-USDT",
|
||||
# "ETH-USDT",
|
||||
"LTC-USDT",
|
||||
],
|
||||
"trading_hours": {
|
||||
"begin_session": "00:00:00",
|
||||
"end_session": "23:59:00",
|
||||
"timezone": "UTC",
|
||||
},
|
||||
# ----- Model Settings
|
||||
"price_column": "close",
|
||||
"min_required_points": 30,
|
||||
"zero_threshold": 1e-10,
|
||||
|
||||
"disequilibrium_open_trshld": 2,
|
||||
"disequilibrium_close_trshld": 0.5,
|
||||
# # ==========================================================================
|
||||
|
||||
"training_minutes": 120,
|
||||
# ----- Validation
|
||||
"funding_per_pair": 2000.0, # USD
|
||||
}
|
||||
# ========================== EQUITIES
|
||||
EQT_CONFIG: Dict = {
|
||||
# --- Data retrieval
|
||||
"security_type": "EQUITY",
|
||||
"data_directory": "./data/equity",
|
||||
"datafiles": [
|
||||
"20250508.alpaca_sim_md.db",
|
||||
# "20250509.alpaca_sim_md.db",
|
||||
# "20250512.alpaca_sim_md.db",
|
||||
# "20250513.alpaca_sim_md.db",
|
||||
# "20250514.alpaca_sim_md.db",
|
||||
# "20250515.alpaca_sim_md.db",
|
||||
# "20250516.alpaca_sim_md.db",
|
||||
# "20250519.alpaca_sim_md.db",
|
||||
# "20250520.alpaca_sim_md.db"
|
||||
],
|
||||
"db_table_name": "md_1min_bars",
|
||||
# ----- Instruments
|
||||
"exchange_id": "ALPACA",
|
||||
"instrument_id_pfx": "STOCK-",
|
||||
"instruments": [
|
||||
"COIN",
|
||||
"GBTC",
|
||||
"HOOD",
|
||||
"MSTR",
|
||||
"PYPL",
|
||||
],
|
||||
"trading_hours": {
|
||||
"begin_session": "9:30:00",
|
||||
"end_session": "16:00:00",
|
||||
"timezone": "America/New_York",
|
||||
},
|
||||
# ----- Model Settings
|
||||
"price_column": "close",
|
||||
"min_required_points": 30,
|
||||
"zero_threshold": 1e-10,
|
||||
"disequilibrium_open_trshld": 2.0,
|
||||
"disequilibrium_close_trshld": 0.5,
|
||||
"training_minutes": 120,
|
||||
# ----- Validation
|
||||
"funding_per_pair": 2000.0,
|
||||
}
|
||||
|
||||
|
||||
# ==========================================================================
|
||||
|
||||
# CONFIG = CRYPTO_CONFIG
|
||||
CONFIG = EQT_CONFIG
|
||||
CONFIG = CRYPTO_CONFIG
|
||||
# CONFIG = EQT_CONFIG
|
||||
|
||||
BacktestResults = BacktestResult(config=CONFIG)
|
||||
|
||||
@@ -146,8 +68,8 @@ def create_trading_signals(pair: TradingPair) -> pd.DataFrame:
|
||||
open_row_index = None
|
||||
initial_abs_term = None
|
||||
|
||||
open_threshold = CONFIG["disequilibrium_open_trshld"]
|
||||
close_threshold = CONFIG["disequilibrium_close_trshld"]
|
||||
open_threshold = CONFIG["dis-equilibrium_open_trshld"]
|
||||
close_threshold = CONFIG["dis-equilibrium_close_trshld"]
|
||||
for row_idx in range(len(pair_result_df)):
|
||||
curr_disequilibrium = pair_result_df["scaled_disequilibrium"][row_idx]
|
||||
|
||||
@@ -299,7 +221,10 @@ def run_single_pair(
|
||||
market_data=market_data, training_minutes=CONFIG["training_minutes"]
|
||||
)
|
||||
try:
|
||||
pair.train_pair()
|
||||
is_cointegrated = pair.train_pair()
|
||||
if not is_cointegrated:
|
||||
print(f"{pair} IS NOT COINTEGRATED")
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"{pair}: Training failed: {str(e)}")
|
||||
return None
|
||||
@@ -387,8 +312,6 @@ if __name__ == "__main__":
|
||||
|
||||
# BacktestResults.print_results_summary(all_results)
|
||||
BacktestResults.calculate_returns(all_results)
|
||||
|
||||
# Print grand totals
|
||||
BacktestResults.print_grand_totals()
|
||||
|
||||
BacktestResults.print_outstanding_positions()
|
||||
|
||||
Reference in New Issue
Block a user