notebook progress

This commit is contained in:
Oleg Sheynin 2025-07-23 03:32:43 +00:00
parent e0138907be
commit 577fb5c109
5 changed files with 1485 additions and 504 deletions

View File

@ -18,6 +18,7 @@ class PairsTradingFitMethod(ABC):
"price", "price",
"disequilibrium", "disequilibrium",
"scaled_disequilibrium", "scaled_disequilibrium",
"signed_scaled_disequilibrium",
"pair", "pair",
] ]

View File

@ -177,6 +177,7 @@ class RollingFit(PairsTradingFitMethod):
open_tstamp = open_row["tstamp"] open_tstamp = open_row["tstamp"]
open_disequilibrium = open_row["disequilibrium"] open_disequilibrium = open_row["disequilibrium"]
open_scaled_disequilibrium = open_row["scaled_disequilibrium"] open_scaled_disequilibrium = open_row["scaled_disequilibrium"]
signed_scaled_disequilibrium = open_row["signed_scaled_disequilibrium"]
open_px_a = open_row[f"{colname_a}"] open_px_a = open_row[f"{colname_a}"]
open_px_b = open_row[f"{colname_b}"] open_px_b = open_row[f"{colname_b}"]
@ -214,6 +215,7 @@ class RollingFit(PairsTradingFitMethod):
open_px_a, open_px_a,
open_disequilibrium, open_disequilibrium,
open_scaled_disequilibrium, open_scaled_disequilibrium,
signed_scaled_disequilibrium,
pair, pair,
), ),
( (
@ -224,6 +226,7 @@ class RollingFit(PairsTradingFitMethod):
open_px_b, open_px_b,
open_disequilibrium, open_disequilibrium,
open_scaled_disequilibrium, open_scaled_disequilibrium,
signed_scaled_disequilibrium,
pair, pair,
), ),
] ]
@ -241,6 +244,7 @@ class RollingFit(PairsTradingFitMethod):
"price": "float64", "price": "float64",
"disequilibrium": "float64", "disequilibrium": "float64",
"scaled_disequilibrium": "float64", "scaled_disequilibrium": "float64",
"signed_scaled_disequilibrium": "float64",
"pair": "object", "pair": "object",
} }
) )
@ -254,6 +258,7 @@ class RollingFit(PairsTradingFitMethod):
close_tstamp = close_row["tstamp"] close_tstamp = close_row["tstamp"]
close_disequilibrium = close_row["disequilibrium"] close_disequilibrium = close_row["disequilibrium"]
close_scaled_disequilibrium = close_row["scaled_disequilibrium"] close_scaled_disequilibrium = close_row["scaled_disequilibrium"]
signed_scaled_disequilibrium = close_row["signed_scaled_disequilibrium"]
close_px_a = close_row[f"{colname_a}"] close_px_a = close_row[f"{colname_a}"]
close_px_b = close_row[f"{colname_b}"] close_px_b = close_row[f"{colname_b}"]
@ -269,6 +274,7 @@ class RollingFit(PairsTradingFitMethod):
close_px_a, close_px_a,
close_disequilibrium, close_disequilibrium,
close_scaled_disequilibrium, close_scaled_disequilibrium,
signed_scaled_disequilibrium,
pair, pair,
), ),
( (
@ -279,6 +285,7 @@ class RollingFit(PairsTradingFitMethod):
close_px_b, close_px_b,
close_disequilibrium, close_disequilibrium,
close_scaled_disequilibrium, close_scaled_disequilibrium,
signed_scaled_disequilibrium,
pair, pair,
), ),
] ]
@ -297,6 +304,7 @@ class RollingFit(PairsTradingFitMethod):
"price": "float64", "price": "float64",
"disequilibrium": "float64", "disequilibrium": "float64",
"scaled_disequilibrium": "float64", "scaled_disequilibrium": "float64",
"signed_scaled_disequilibrium": "float64",
"pair": "object", "pair": "object",
} }
) )

View File

@ -75,9 +75,12 @@ class VECMTradingPair(TradingPair):
predicted_df[self.colnames()] @ self.vecm_fit_.beta predicted_df[self.colnames()] @ self.vecm_fit_.beta
) )
predicted_df["signed_scaled_disequilibrium"] = (
predicted_df["disequilibrium"] - self.training_mu_
) / self.training_std_
predicted_df["scaled_disequilibrium"] = ( predicted_df["scaled_disequilibrium"] = (
abs(predicted_df["disequilibrium"] - self.training_mu_) abs(predicted_df["signed_scaled_disequilibrium"])
/ self.training_std_
) )
predicted_df = predicted_df.reset_index(drop=True) predicted_df = predicted_df.reset_index(drop=True)

View File

@ -45,6 +45,7 @@ class ZScoreTradingPair(TradingPair):
predicted_df = self.testing_df_ predicted_df = self.testing_df_
predicted_df["disequilibrium"] = self.zscore_df_ predicted_df["disequilibrium"] = self.zscore_df_
predicted_df["signed_scaled_disequilibrium"] = self.zscore_df_
predicted_df["scaled_disequilibrium"] = abs(self.zscore_df_) predicted_df["scaled_disequilibrium"] = abs(self.zscore_df_)
predicted_df = predicted_df.reset_index(drop=True) predicted_df = predicted_df.reset_index(drop=True)

File diff suppressed because one or more lines are too long