diff --git a/alpha/AutoRegression/autoregression.py b/alpha/AutoRegression/autoregression.py
index 2b5b5e9..3a6b0f9 100644
--- a/alpha/AutoRegression/autoregression.py
+++ b/alpha/AutoRegression/autoregression.py
@@ -1,8 +1,10 @@
+from pathlib import Path
+
+import numpy as np
import torch
from torch import nn
-from torch.utils.data import Dataset, DataLoader
-import numpy as np
-from pathlib import Path
+from torch.utils.data import DataLoader, Dataset
+
class AR(nn.Module):
def __init__(self, lag):
diff --git a/alpha/AutoRegression/data_processing.py b/alpha/AutoRegression/data_processing.py
index 51144f9..55405a5 100644
--- a/alpha/AutoRegression/data_processing.py
+++ b/alpha/AutoRegression/data_processing.py
@@ -1,6 +1,7 @@
import numpy as np
import pandas as pd
+
def load_data(data_path: str = "./binance/BTC_USDT-5m.feather",
start_date: str = "2021-01-01"):
df = pd.read_feather(data_path)
diff --git a/alpha/AutoregressionAlpha.py b/alpha/AutoregressionAlpha.py
index 30fd58e..8f9aa68 100644
--- a/alpha/AutoregressionAlpha.py
+++ b/alpha/AutoregressionAlpha.py
@@ -1,8 +1,9 @@
import numpy as np
import torch
from pandas import DataFrame
+
+from alpha.AutoRegression.autoregression import build_train, trained_ar_model
from alpha.interface import IAlpha
-from alpha.AutoRegression.autoregression import trained_ar_model, build_train
AR_MODEL_PATH = "./ar_model.pth"
AR_LAG = 90
diff --git a/alpha/BollingerAlpha.py b/alpha/BollingerAlpha.py
index f92dbce..cabd92a 100644
--- a/alpha/BollingerAlpha.py
+++ b/alpha/BollingerAlpha.py
@@ -6,9 +6,9 @@
"""
import talib.abstract as ta
+from freqtrade.strategy.parameters import IntParameter
from alpha.interface import IAlpha
-from freqtrade.strategy.parameters import IntParameter
class BollingerAlpha(IAlpha):
diff --git a/alpha/EventLstmAlpha.py b/alpha/EventLstmAlpha.py
index 83dd69b..28fd881 100644
--- a/alpha/EventLstmAlpha.py
+++ b/alpha/EventLstmAlpha.py
@@ -1,8 +1,10 @@
-import torch
import numpy as np
+import torch
+import torch.nn as nn
from pandas import DataFrame
+
from alpha.interface import IAlpha
-import torch.nn as nn
+
class EventLstmModel(nn.Module):
def __init__(self):
diff --git a/alpha/MacdAlpha.py b/alpha/MacdAlpha.py
index c492960..3249a8f 100644
--- a/alpha/MacdAlpha.py
+++ b/alpha/MacdAlpha.py
@@ -5,9 +5,9 @@
"""
import talib.abstract as ta
+from freqtrade.strategy.parameters import IntParameter
from alpha.interface import IAlpha
-from freqtrade.strategy.parameters import IntParameter
class MacdAlpha(IAlpha):
diff --git a/alpha/RsiAlpha.py b/alpha/RsiAlpha.py
index 4bfb3f1..140d931 100644
--- a/alpha/RsiAlpha.py
+++ b/alpha/RsiAlpha.py
@@ -5,9 +5,9 @@
"""
import talib.abstract as ta
+from freqtrade.strategy.parameters import IntParameter
from alpha.interface import IAlpha
-from freqtrade.strategy.parameters import IntParameter
class RsiAlpha(IAlpha):
diff --git a/alpha/SimpleEmaFactors.py b/alpha/SimpleEmaFactors.py
index d17253b..d092c2b 100644
--- a/alpha/SimpleEmaFactors.py
+++ b/alpha/SimpleEmaFactors.py
@@ -1,7 +1,8 @@
import talib.abstract as ta
+from freqtrade.strategy.parameters import IntParameter
from alpha.interface import IAlpha
-from freqtrade.strategy.parameters import IntParameter
+
class EmaAlpha(IAlpha):
def __init__(self, dataframe, metadata):
diff --git a/alpha/interface.py b/alpha/interface.py
index 8652fe3..78df3d8 100644
--- a/alpha/interface.py
+++ b/alpha/interface.py
@@ -1,6 +1,8 @@
from abc import ABC, abstractmethod
+
from pandas import DataFrame
+
class IAlpha(ABC):
def __init__(self, dataframe: DataFrame, metadata: dict = None):
self.dataframe=dataframe
diff --git a/benchmark.py b/benchmark.py
index 49109e4..846ed99 100644
--- a/benchmark.py
+++ b/benchmark.py
@@ -14,12 +14,11 @@
python benchmark.py --export report.json # also write JSON results
"""
+import argparse
+import json
import os
import sys
-import json
import time
-import traceback
-import argparse
from concurrent.futures import ProcessPoolExecutor, as_completed
from datetime import datetime
from typing import Any, Dict, List, Optional, Tuple
@@ -40,8 +39,8 @@
# ---------------------------------------------------------------------------
try:
from freqtrade.commands.optimize_commands import setup_optimize_configuration
- from freqtrade.optimize.backtesting import Backtesting
from freqtrade.enums import RunMode
+ from freqtrade.optimize.backtesting import Backtesting
FREQTRADE_AVAILABLE = True
except ImportError as e:
FREQTRADE_AVAILABLE = False
@@ -481,10 +480,11 @@ def run_alpha_smoke_test() -> Dict[str, Any]:
t0 = time.time()
try:
import pandas as pd
- from alpha.SimpleEmaFactors import EmaAlpha
- from alpha.RsiAlpha import RsiAlpha
- from alpha.MacdAlpha import MacdAlpha
+
from alpha.BollingerAlpha import BollingerAlpha
+ from alpha.MacdAlpha import MacdAlpha
+ from alpha.RsiAlpha import RsiAlpha
+ from alpha.SimpleEmaFactors import EmaAlpha
# Load one pair's data
filepath = os.path.join(DATA_DIR, "BTC_USDT-1d.feather")
@@ -564,9 +564,10 @@ def run_data_integrity_check() -> Dict[str, Any]:
}
t0 = time.time()
try:
- import pandas as pd
from pathlib import Path
+ import pandas as pd
+
data_path = Path(DATA_DIR)
feather_files = sorted(data_path.glob("*.feather"))
total = len(feather_files)
diff --git a/benchmark_all.py b/benchmark_all.py
index 513a728..5aa33e8 100755
--- a/benchmark_all.py
+++ b/benchmark_all.py
@@ -22,10 +22,9 @@
import os
import sys
import time
-import traceback
from concurrent.futures import ProcessPoolExecutor, as_completed
from datetime import datetime
-from typing import Any, Dict, List, Optional, Tuple
+from typing import Any, Dict, List, Tuple
# ---------------------------------------------------------------------------
# Ensure project root is on sys.path
@@ -433,8 +432,8 @@ def _run_single_backtest(
) -> Dict[str, Any]:
"""Run a single freqtrade backtest programmatically and return results."""
from freqtrade.commands.optimize_commands import setup_optimize_configuration
- from freqtrade.optimize.backtesting import Backtesting
from freqtrade.enums import RunMode
+ from freqtrade.optimize.backtesting import Backtesting
config_path = os.path.join(PROJECT_ROOT, "user_data", "config.json")
diff --git a/examples/pipeline_examples.py b/examples/pipeline_examples.py
index bd4104b..5a8abb4 100644
--- a/examples/pipeline_examples.py
+++ b/examples/pipeline_examples.py
@@ -13,22 +13,22 @@
import sys
from pathlib import Path
-import pandas as pd
+
import numpy as np
+import pandas as pd
# Add project root to path
PROJECT_ROOT = Path(__file__).parent.parent
sys.path.insert(0, str(PROJECT_ROOT))
from pipeline.config import PipelineConfig, PresetConfigs
-from pipeline.orchestrator import PortfolioPipeline, run_pipeline
from pipeline.integrations import (
- FreqtradeIntegration,
BatchPipelineRunner,
- PresetPipelineRunner,
+ FreqtradeIntegration,
PipelineComparator,
+ PresetPipelineRunner,
)
-
+from pipeline.orchestrator import run_pipeline
# ============================================================================
# HELPER: Generate synthetic test data
@@ -99,13 +99,13 @@ def example_2_custom_config():
from pipeline.config import (
AlphaConfig,
- StrategyConfig,
- PortfolioConfig,
+ AlphaType,
BacktestConfig,
DataConfig,
- AlphaType,
- StrategyType,
PortfolioAlgorithm,
+ PortfolioConfig,
+ StrategyConfig,
+ StrategyType,
)
# Build configuration programmatically
@@ -212,7 +212,7 @@ def example_4_compare_pipelines():
# Print summary
summary = runner.get_summary()
- print(f"\nBatch Summary:")
+ print("\nBatch Summary:")
print(f" Total runs: {summary['total_runs']}")
print(f" Successful: {summary['successful']}")
print(f" Failed: {summary['failed']}")
diff --git a/fix_utc_imports.py b/fix_utc_imports.py
index 6eb226e..483ae14 100644
--- a/fix_utc_imports.py
+++ b/fix_utc_imports.py
@@ -3,9 +3,10 @@
import os
import re
+
def fix_utc_imports(filepath):
"""Fix UTC imports in a Python file for Python 3.10 compatibility."""
- with open(filepath, 'r', encoding='utf-8') as f:
+ with open(filepath, encoding='utf-8') as f:
content = f.read()
# Check if already fixed
@@ -92,7 +93,7 @@ def fix_utc_imports(filepath):
if file.endswith('.py'):
filepath = os.path.join(root, file)
try:
- with open(filepath, 'r', encoding='utf-8') as f:
+ with open(filepath, encoding='utf-8') as f:
content = f.read()
if 'from datetime import' in content and 'UTC' in content:
attempted += 1
diff --git a/pipeline/config.py b/pipeline/config.py
index 9cca67f..e5e737e 100644
--- a/pipeline/config.py
+++ b/pipeline/config.py
@@ -11,10 +11,10 @@
import json
import os
-from dataclasses import dataclass, field, asdict
+from dataclasses import asdict, dataclass, field
+from enum import Enum
from pathlib import Path
from typing import Any, Dict, List, Optional
-from enum import Enum
class AlphaType(str, Enum):
@@ -210,7 +210,7 @@ def from_yaml(cls, filepath: str | Path) -> PipelineConfig:
raise ImportError("PyYAML required for YAML config support. "
"Install with: pip install PyYAML")
- with open(filepath, 'r') as f:
+ with open(filepath) as f:
data = yaml.safe_load(f)
return cls.from_dict(data)
diff --git a/pipeline/integrations.py b/pipeline/integrations.py
index 5e6d2a5..7b406dc 100644
--- a/pipeline/integrations.py
+++ b/pipeline/integrations.py
@@ -13,11 +13,12 @@
from __future__ import annotations
import json
+import logging
import pickle
from pathlib import Path
-from typing import Dict, List, Any, Optional
+from typing import Any, Dict, List
+
import pandas as pd
-import logging
logger = logging.getLogger(__name__)
diff --git a/pipeline/orchestrator.py b/pipeline/orchestrator.py
index ad1b94d..88347eb 100644
--- a/pipeline/orchestrator.py
+++ b/pipeline/orchestrator.py
@@ -14,34 +14,34 @@
from __future__ import annotations
+import logging
import os
import sys
import time
-import logging
from pathlib import Path
-from typing import Dict, List, Optional, Tuple, Any
-import pandas as pd
+from typing import Dict, List
+
import numpy as np
+import pandas as pd
# Ensure project root is on path
_PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if _PROJECT_ROOT not in sys.path:
sys.path.insert(0, _PROJECT_ROOT)
-from pipeline.config import PipelineConfig, AlphaType, StrategyType
-from pipeline.verification import PipelineVerification, ValidationResult
+from pipeline.config import AlphaType, PipelineConfig, StrategyType
from pipeline.results import PipelineResult, StageOutput
-
+from pipeline.verification import PipelineVerification
from portfolio.PortfolioManagement import (
- load_pair_data,
align_close_prices,
- ema_cross_signals,
+ backtest_portfolio,
+ blend_strategy_weights,
build_ema_position_series,
calculate_ons_weights,
- equal_weight_allocation,
- blend_strategy_weights,
- backtest_portfolio,
compute_metrics,
+ ema_cross_signals,
+ equal_weight_allocation,
+ load_pair_data,
)
logger = logging.getLogger(__name__)
@@ -184,7 +184,7 @@ def run(self) -> PipelineResult:
data_summary=metrics
))
- logger.info(f"\nBacktest Results:")
+ logger.info("\nBacktest Results:")
logger.info(f" Total return: {metrics['total_return_pct']:.2f}%")
logger.info(f" Annualized return: {metrics['annualised_return_pct']:.2f}%")
logger.info(f" Annualized Sharpe: {metrics['annualised_sharpe']:.4f}")
diff --git a/pipeline/results.py b/pipeline/results.py
index 563e532..073a26c 100644
--- a/pipeline/results.py
+++ b/pipeline/results.py
@@ -10,13 +10,11 @@
import json
import logging
-from dataclasses import dataclass, field, asdict
+from dataclasses import asdict, dataclass, field
from pathlib import Path
-from typing import Dict, List, Any, Optional
-from datetime import datetime
-import pandas as pd
-import numpy as np
+from typing import Any, Dict, List, Optional
+import pandas as pd
logger = logging.getLogger(__name__)
@@ -204,7 +202,7 @@ def to_html_report(self) -> str:
"",
"
",
"",
@@ -325,7 +323,7 @@ def print_summary(self) -> None:
print(f" [~] Skipped: {stages['skipped']}")
if summary['metrics']:
- print(f"\nMetrics:")
+ print("\nMetrics:")
for key, value in summary['metrics'].items():
if value is not None:
if isinstance(value, float):
diff --git a/pipeline/verification.py b/pipeline/verification.py
index 0d089df..598ac17 100644
--- a/pipeline/verification.py
+++ b/pipeline/verification.py
@@ -11,11 +11,11 @@
import logging
from dataclasses import dataclass
-from typing import Dict, List, Tuple, Any, Optional
+from typing import Any, Dict, List
+
import numpy as np
import pandas as pd
-
logger = logging.getLogger(__name__)
@@ -209,7 +209,7 @@ def validate_alpha_signals(
result = ValidationResult(
name="alpha_columns_present",
passed=True,
- message=f"All expected alpha columns present",
+ message="All expected alpha columns present",
details={"expected_columns": expected_columns}
)
else:
@@ -245,7 +245,7 @@ def validate_alpha_signals(
result = ValidationResult(
name="alpha_columns_no_nan",
passed=False,
- message=f"Found NaN values in alpha columns",
+ message="Found NaN values in alpha columns",
details=nan_summary
)
checks.append(result)
@@ -408,7 +408,7 @@ def validate_portfolio_weights(
result = ValidationResult(
name="weight_concentration",
passed=True,
- message=f"Portfolio concentration metrics computed",
+ message="Portfolio concentration metrics computed",
details={
"mean_hhi": round(hhi, 4),
"n_assets": n_assets,
diff --git a/polymarket/contracts.py b/polymarket/contracts.py
index 3686f6a..6ad6bec 100644
--- a/polymarket/contracts.py
+++ b/polymarket/contracts.py
@@ -23,7 +23,6 @@
from dataclasses import dataclass, field
from pathlib import Path
-
# ---------------------------------------------------------------------------
# Pair naming helpers
# ---------------------------------------------------------------------------
diff --git a/polymarket/data_builder.py b/polymarket/data_builder.py
index 5047858..e34f24e 100644
--- a/polymarket/data_builder.py
+++ b/polymarket/data_builder.py
@@ -19,7 +19,7 @@
from polymarket.contracts import ContractMetadata, load_contracts
from polymarket.settlement import load_btc_hourly, verify_settlements
-from polymarket.synthetic_prices import build_synthetic_ohlcv, _calibrate_sigma
+from polymarket.synthetic_prices import _calibrate_sigma, build_synthetic_ohlcv
def _pair_to_filename(pair: str, timeframe: str = "1h") -> str:
@@ -136,7 +136,7 @@ def build_all_feathers(
# For NO side: complement prices (close = 1 - yes_close), re-clamp
if side == "no":
- from polymarket.synthetic_prices import PRICE_FLOOR, PRICE_CEIL
+ from polymarket.synthetic_prices import PRICE_CEIL, PRICE_FLOOR
ohlcv_df = ohlcv_df.copy()
ohlcv_df["close"] = (1.0 - ohlcv_df["close"]).clip(PRICE_FLOOR, PRICE_CEIL)
ohlcv_df["open"] = (1.0 - ohlcv_df["open"]).clip(PRICE_FLOOR, PRICE_CEIL)
@@ -144,7 +144,8 @@ def build_all_feathers(
ohlcv_df["low"] = (1.0 - ohlcv_df["high"]).clip(PRICE_FLOOR, PRICE_CEIL)
# Patch settlement: NO settlement = 1.0 - YES settlement
no_settlement = 1.0 - contract.settlement
- from polymarket.synthetic_prices import PRICE_FLOOR as PF, PRICE_CEIL as PC
+ from polymarket.synthetic_prices import PRICE_CEIL as PC
+ from polymarket.synthetic_prices import PRICE_FLOOR as PF
ohlcv_df.iloc[-1, ohlcv_df.columns.get_loc("close")] = PC if no_settlement == 1.0 else PF
table = pa.Table.from_pandas(ohlcv_df, preserve_index=False)
@@ -169,7 +170,7 @@ def build_event_training_data(
day_of_week: int = 0,
hour_utc: int = 17,
relative_strikes: list[float] | None = None,
-) -> "pd.DataFrame":
+) -> pd.DataFrame:
"""Build and save the training dataset for the event-probability model.
Constructs synthetic weekly BTC binary-event samples from ``btc_csv_path``
@@ -188,7 +189,6 @@ def build_event_training_data(
Returns:
The constructed samples DataFrame (also saved to ``output_path``).
"""
- import pandas as pd
from polymarket.event_dataset import build_training_samples
btc_df = load_btc_hourly(str(btc_csv_path))
@@ -235,7 +235,8 @@ def train_event_model(
The trained model package dict.
"""
import pandas as pd
- from polymarket.event_model import train, save_model
+
+ from polymarket.event_model import save_model, train
samples = pd.read_parquet(str(training_data_path))
# Ensure T is UTC-aware after parquet round-trip
@@ -247,7 +248,7 @@ def train_event_model(
model_package = train(samples, val_cutoff=val_cutoff, model_type=model_type)
save_model(model_package, output_model_path)
- print(f"\nModel metrics:")
+ print("\nModel metrics:")
for split, m in model_package["metrics"].items():
if m:
print(
@@ -260,7 +261,7 @@ def train_event_model(
def build_event_predictions(
btc_csv_path: str | Path,
model_path: str | Path,
- contracts: "list[ContractMetadata]",
+ contracts: list[ContractMetadata],
output_dir: str | Path,
) -> None:
"""Generate per-contract event probability CSVs for backtesting.
diff --git a/polymarket/event_model.py b/polymarket/event_model.py
index 65289b8..0fd0a53 100644
--- a/polymarket/event_model.py
+++ b/polymarket/event_model.py
@@ -193,7 +193,7 @@ def _compute_metrics(tag: str, X: np.ndarray, y: np.ndarray) -> dict:
" %-6s AUC=%.4f Brier=%.4f Acc=%.4f n=%d",
tag, auc, brier, acc, len(y),
)
- return {"auc": auc, "brier": brier, "accuracy": acc, "n": int(len(y))}
+ return {"auc": auc, "brier": brier, "accuracy": acc, "n": len(y)}
logger.info("Evaluation metrics:")
metrics = {
diff --git a/portfolio/PortfolioManagement.py b/portfolio/PortfolioManagement.py
index 1a0fcaa..3832b03 100644
--- a/portfolio/PortfolioManagement.py
+++ b/portfolio/PortfolioManagement.py
@@ -15,9 +15,10 @@
import os
import sys
+from typing import Dict, List, Tuple
+
import numpy as np
import pandas as pd
-from typing import Dict, List, Tuple
from scipy.optimize import minimize
# ---------------------------------------------------------------------------
diff --git a/strategy/AdaptiveMAStrategy.py b/strategy/AdaptiveMAStrategy.py
index 1a003dd..5f7f76c 100644
--- a/strategy/AdaptiveMAStrategy.py
+++ b/strategy/AdaptiveMAStrategy.py
@@ -1,4 +1,5 @@
import numpy as np
+
"""
AdaptiveMAStrategy — Kaufman Adaptive Moving Average (KAMA) crossover
=====================================================================
@@ -14,9 +15,9 @@
Stop : 5%
"""
-from freqtrade.strategy import IStrategy, IntParameter, DecimalParameter
-from pandas import DataFrame
import talib.abstract as ta
+from freqtrade.strategy import DecimalParameter, IntParameter, IStrategy
+from pandas import DataFrame
class AdaptiveMAStrategy(IStrategy):
diff --git a/strategy/AdxStrengthStrategy.py b/strategy/AdxStrengthStrategy.py
index 426cbf9..34efd55 100644
--- a/strategy/AdxStrengthStrategy.py
+++ b/strategy/AdxStrengthStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: ADX Strength Entry Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class AdxStrengthStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/AroonTrendStrategy.py b/strategy/AroonTrendStrategy.py
index 7787e12..96426ed 100644
--- a/strategy/AroonTrendStrategy.py
+++ b/strategy/AroonTrendStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Aroon Trend Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class AroonTrendStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/AtrTrailingStopStrategy.py b/strategy/AtrTrailingStopStrategy.py
index f87fa09..726bf5a 100644
--- a/strategy/AtrTrailingStopStrategy.py
+++ b/strategy/AtrTrailingStopStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: ATR Trailing Stop Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class AtrTrailingStopStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/BbWidthExpansionStrategy.py b/strategy/BbWidthExpansionStrategy.py
index 29b9208..656c8f3 100644
--- a/strategy/BbWidthExpansionStrategy.py
+++ b/strategy/BbWidthExpansionStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Bollinger Band Width Expansion Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class BbWidthExpansionStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/BollingerBounceStrategy.py b/strategy/BollingerBounceStrategy.py
index 8d66463..c3f207d 100644
--- a/strategy/BollingerBounceStrategy.py
+++ b/strategy/BollingerBounceStrategy.py
@@ -1,7 +1,8 @@
"""Strategy 3: Bollinger Band Bounce"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class BollingerBounceStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/BopTrendStrategy.py b/strategy/BopTrendStrategy.py
index 72b48af..aef16be 100644
--- a/strategy/BopTrendStrategy.py
+++ b/strategy/BopTrendStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Balance of Power Trend Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class BopTrendStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/BullishEngulfingStrategy.py b/strategy/BullishEngulfingStrategy.py
index 2068cb5..7690ea7 100644
--- a/strategy/BullishEngulfingStrategy.py
+++ b/strategy/BullishEngulfingStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Bullish Engulfing Pattern Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class BullishEngulfingStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/CciMeanReversionStrategy.py b/strategy/CciMeanReversionStrategy.py
index 7a8fb96..141ac99 100644
--- a/strategy/CciMeanReversionStrategy.py
+++ b/strategy/CciMeanReversionStrategy.py
@@ -1,7 +1,8 @@
"""Strategy 6: CCI Mean Reversion"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class CciMeanReversionStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/ChaikinMoneyFlowStrategy.py b/strategy/ChaikinMoneyFlowStrategy.py
index dfe398a..78a2a5b 100644
--- a/strategy/ChaikinMoneyFlowStrategy.py
+++ b/strategy/ChaikinMoneyFlowStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Chaikin Money Flow Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class ChaikinMoneyFlowStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/CompositeScoreStrategy.py b/strategy/CompositeScoreStrategy.py
index 1820fdb..a896eae 100644
--- a/strategy/CompositeScoreStrategy.py
+++ b/strategy/CompositeScoreStrategy.py
@@ -1,7 +1,8 @@
"""Strategy 13: Composite Score Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class CompositeScoreStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/CoppockCurveStrategy.py b/strategy/CoppockCurveStrategy.py
index 23aae97..20c0137 100644
--- a/strategy/CoppockCurveStrategy.py
+++ b/strategy/CoppockCurveStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Coppock Curve Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class CoppockCurveStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/DemaCrossStrategy.py b/strategy/DemaCrossStrategy.py
index b8f1fd7..5f7438c 100644
--- a/strategy/DemaCrossStrategy.py
+++ b/strategy/DemaCrossStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Dema Cross Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class DemaCrossStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/DonchianBreakoutStrategy.py b/strategy/DonchianBreakoutStrategy.py
index a168391..57dc64c 100644
--- a/strategy/DonchianBreakoutStrategy.py
+++ b/strategy/DonchianBreakoutStrategy.py
@@ -1,7 +1,8 @@
"""Strategy 12: Donchian Channel Breakout"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class DonchianBreakoutStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/EmaCrossStrategy.py b/strategy/EmaCrossStrategy.py
index 687107e..8126348 100644
--- a/strategy/EmaCrossStrategy.py
+++ b/strategy/EmaCrossStrategy.py
@@ -1,15 +1,14 @@
from datetime import datetime
-from pandas import DataFrame
from freqtrade.strategy import (
- IStrategy,
IntParameter,
+ IStrategy,
)
+from pandas import DataFrame
+from technical import qtpylib
from alpha.SimpleEmaFactors import EmaAlpha
-from technical import qtpylib
-
class EmaCrossStrategy(IStrategy):
"""
diff --git a/strategy/EmaRibbonStrategy.py b/strategy/EmaRibbonStrategy.py
index 4dab3ff..dd2af47 100644
--- a/strategy/EmaRibbonStrategy.py
+++ b/strategy/EmaRibbonStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: EMA Ribbon Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class EmaRibbonStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/FisherTransformStrategy.py b/strategy/FisherTransformStrategy.py
index 3e473c1..bb19135 100644
--- a/strategy/FisherTransformStrategy.py
+++ b/strategy/FisherTransformStrategy.py
@@ -1,8 +1,9 @@
"""Strategy: Fisher Transform Strategy"""
+import numpy as np
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
-import numpy as np
+
class FisherTransformStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/GoldenCrossStrategy.py b/strategy/GoldenCrossStrategy.py
index d8a37ac..ce06e39 100644
--- a/strategy/GoldenCrossStrategy.py
+++ b/strategy/GoldenCrossStrategy.py
@@ -1,7 +1,8 @@
"""Strategy 2: Golden Cross Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class GoldenCrossStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/HeikinAshiStrategy.py b/strategy/HeikinAshiStrategy.py
index d576a99..4c32b34 100644
--- a/strategy/HeikinAshiStrategy.py
+++ b/strategy/HeikinAshiStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Heikin Ashi Trend Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class HeikinAshiStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/HigherHighStrategy.py b/strategy/HigherHighStrategy.py
index 394529f..5bbc2e5 100644
--- a/strategy/HigherHighStrategy.py
+++ b/strategy/HigherHighStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Higher Highs Higher Lows Structure"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class HigherHighStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/IchimokuCloudStrategy.py b/strategy/IchimokuCloudStrategy.py
index c1bd02d..8476718 100644
--- a/strategy/IchimokuCloudStrategy.py
+++ b/strategy/IchimokuCloudStrategy.py
@@ -1,12 +1,11 @@
-import pandas as pd
from datetime import datetime
-from pandas import DataFrame
+import pandas as pd
from freqtrade.strategy import (
- IStrategy,
IntParameter,
+ IStrategy,
)
-
+from pandas import DataFrame
from technical import qtpylib
diff --git a/strategy/IchimokuSimpleStrategy.py b/strategy/IchimokuSimpleStrategy.py
index db98912..98dcc12 100644
--- a/strategy/IchimokuSimpleStrategy.py
+++ b/strategy/IchimokuSimpleStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Simple Ichimoku Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class IchimokuSimpleStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/KeltnerChannelStrategy.py b/strategy/KeltnerChannelStrategy.py
index 6f2e505..d80722c 100644
--- a/strategy/KeltnerChannelStrategy.py
+++ b/strategy/KeltnerChannelStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Keltner Channel Breakout"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class KeltnerChannelStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/LinearRegressionStrategy.py b/strategy/LinearRegressionStrategy.py
index 047db01..3b4149b 100644
--- a/strategy/LinearRegressionStrategy.py
+++ b/strategy/LinearRegressionStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Linear Regression Slope Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class LinearRegressionStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/MacdAdxStrategy.py b/strategy/MacdAdxStrategy.py
index d91452c..c795864 100644
--- a/strategy/MacdAdxStrategy.py
+++ b/strategy/MacdAdxStrategy.py
@@ -1,12 +1,11 @@
from datetime import datetime
-from pandas import DataFrame
+import talib.abstract as ta
from freqtrade.strategy import (
- IStrategy,
IntParameter,
+ IStrategy,
)
-
-import talib.abstract as ta
+from pandas import DataFrame
class MacdAdxStrategy(IStrategy):
diff --git a/strategy/MacdZeroCrossStrategy.py b/strategy/MacdZeroCrossStrategy.py
index 5fbdf73..6166af9 100644
--- a/strategy/MacdZeroCrossStrategy.py
+++ b/strategy/MacdZeroCrossStrategy.py
@@ -1,7 +1,8 @@
"""Strategy 4: MACD Zero Cross"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class MacdZeroCrossStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/MlpSpeculativeStrategy.py b/strategy/MlpSpeculativeStrategy.py
index 944bd4b..735eab5 100644
--- a/strategy/MlpSpeculativeStrategy.py
+++ b/strategy/MlpSpeculativeStrategy.py
@@ -1,11 +1,14 @@
import os
+
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
+from freqtrade.strategy import IStrategy
from pandas import DataFrame
-from strategy.mlp_speculative_model.ml_utils.technical_analysis_tool import TecnicalAnalysis
-from strategy.mlp_speculative_model.ml_utils.ensemble import sample_model
+
from strategy.mlp_speculative_model.ml_utils.data_process import DataProcess
-from freqtrade.strategy import IStrategy
+from strategy.mlp_speculative_model.ml_utils.ensemble import sample_model
+from strategy.mlp_speculative_model.ml_utils.technical_analysis_tool import TecnicalAnalysis
+
class MlpSpeculativeStrategy(IStrategy):
can_short = False
diff --git a/strategy/MomentumScoreStrategy.py b/strategy/MomentumScoreStrategy.py
index 35ca156..e4dea41 100644
--- a/strategy/MomentumScoreStrategy.py
+++ b/strategy/MomentumScoreStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Momentum Score Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class MomentumScoreStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/MoneyFlowStrategy.py b/strategy/MoneyFlowStrategy.py
index 307eaf3..95e6256 100644
--- a/strategy/MoneyFlowStrategy.py
+++ b/strategy/MoneyFlowStrategy.py
@@ -1,7 +1,8 @@
"""Strategy 10: Money Flow Index"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class MoneyFlowStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/MultiFactorConfluenceStrategy.py b/strategy/MultiFactorConfluenceStrategy.py
index 7a41a09..8730c9b 100644
--- a/strategy/MultiFactorConfluenceStrategy.py
+++ b/strategy/MultiFactorConfluenceStrategy.py
@@ -1,5 +1,6 @@
import numpy as np
import pandas as pd
+
"""
MultiFactorConfluenceStrategy — Multi-signal confluence scoring
===============================================================
@@ -18,9 +19,9 @@
Suitable for: crypto, 4h timeframe — robust multi-asset design
"""
-from freqtrade.strategy import IStrategy, IntParameter
-from pandas import DataFrame
import talib.abstract as ta
+from freqtrade.strategy import IntParameter, IStrategy
+from pandas import DataFrame
class MultiFactorConfluenceStrategy(IStrategy):
diff --git a/strategy/ObvTrendStrategy.py b/strategy/ObvTrendStrategy.py
index fcd3f9c..06fda78 100644
--- a/strategy/ObvTrendStrategy.py
+++ b/strategy/ObvTrendStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: On Balance Volume Trend"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class ObvTrendStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/ParabolicSarStrategy.py b/strategy/ParabolicSarStrategy.py
index b702dd3..f5d4eeb 100644
--- a/strategy/ParabolicSarStrategy.py
+++ b/strategy/ParabolicSarStrategy.py
@@ -1,7 +1,8 @@
"""Strategy 9: Parabolic SAR Trend Follow"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class ParabolicSarStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/PolymarketLogicalArb/PolymarketLogicalArbStrategy.py b/strategy/PolymarketLogicalArb/PolymarketLogicalArbStrategy.py
index 2bbc7cd..83a9528 100644
--- a/strategy/PolymarketLogicalArb/PolymarketLogicalArbStrategy.py
+++ b/strategy/PolymarketLogicalArb/PolymarketLogicalArbStrategy.py
@@ -1,13 +1,12 @@
from __future__ import annotations
+import re
from datetime import datetime
from pathlib import Path
from typing import Dict, List, Optional, Tuple
-import re
import numpy as np
import pandas as pd
-
from freqtrade.strategy import IStrategy
"""
diff --git a/strategy/PolymarketMeanReversionStrategy.py b/strategy/PolymarketMeanReversionStrategy.py
index 93331d7..274b6da 100644
--- a/strategy/PolymarketMeanReversionStrategy.py
+++ b/strategy/PolymarketMeanReversionStrategy.py
@@ -8,9 +8,9 @@
rather than fundamental shifts (e.g., speculative events, sentiment spikes).
"""
-import pandas as pd
from datetime import datetime
+import pandas as pd
from freqtrade.strategy import IStrategy
from alpha.PolymarketFactors import PolymarketAlpha
diff --git a/strategy/PolymarketMomentumStrategy.py b/strategy/PolymarketMomentumStrategy.py
index 5ac83aa..a63bfb3 100644
--- a/strategy/PolymarketMomentumStrategy.py
+++ b/strategy/PolymarketMomentumStrategy.py
@@ -8,9 +8,9 @@
(e.g., election polls, economic forecasts).
"""
-import pandas as pd
from datetime import datetime
+import pandas as pd
from freqtrade.strategy import IStrategy
from alpha.PolymarketFactors import PolymarketAlpha
diff --git a/strategy/PpoMomentumStrategy.py b/strategy/PpoMomentumStrategy.py
index 5bed164..738fc08 100644
--- a/strategy/PpoMomentumStrategy.py
+++ b/strategy/PpoMomentumStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: PPO Momentum Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class PpoMomentumStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/PriceActionCandleStrategy.py b/strategy/PriceActionCandleStrategy.py
index e99e19f..63cc067 100644
--- a/strategy/PriceActionCandleStrategy.py
+++ b/strategy/PriceActionCandleStrategy.py
@@ -12,9 +12,9 @@
Stop : 4%
"""
-from freqtrade.strategy import IStrategy, DecimalParameter
-from pandas import DataFrame
import talib.abstract as ta
+from freqtrade.strategy import DecimalParameter, IStrategy
+from pandas import DataFrame
class PriceActionCandleStrategy(IStrategy):
diff --git a/strategy/PriceChannelStrategy.py b/strategy/PriceChannelStrategy.py
index ea7e08d..c15bfc7 100644
--- a/strategy/PriceChannelStrategy.py
+++ b/strategy/PriceChannelStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Price Channel Trend Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class PriceChannelStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/RSI_EMA_strategy.py b/strategy/RSI_EMA_strategy.py
index 2a120c8..d3dae19 100644
--- a/strategy/RSI_EMA_strategy.py
+++ b/strategy/RSI_EMA_strategy.py
@@ -1,10 +1,9 @@
# --- Do not remove these libs ---
-from freqtrade.strategy import IStrategy
-from pandas import DataFrame
# --------------------------------
-
import talib.abstract as ta
+from freqtrade.strategy import IStrategy
+from pandas import DataFrame
class RSI_EMA_strategy(IStrategy):
@@ -127,7 +126,7 @@ def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame
dataframe.loc[
(
((dataframe['rsi'] > 60) & (dataframe['rsi'].shift(1) <= 60))
- | ((dataframe['uptrend'] == False))
+ | (dataframe['uptrend'] == False)
),
'exit_long'] = 1
return dataframe
\ No newline at end of file
diff --git a/strategy/RocMomentumStrategy.py b/strategy/RocMomentumStrategy.py
index 6b33ec5..0379af0 100644
--- a/strategy/RocMomentumStrategy.py
+++ b/strategy/RocMomentumStrategy.py
@@ -1,7 +1,8 @@
"""Strategy 8: Rate of Change Momentum"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class RocMomentumStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/RsiBollingerStrategy.py b/strategy/RsiBollingerStrategy.py
index 3939e19..8c9830a 100644
--- a/strategy/RsiBollingerStrategy.py
+++ b/strategy/RsiBollingerStrategy.py
@@ -1,13 +1,12 @@
from datetime import datetime
-from pandas import DataFrame
+import talib.abstract as ta
from freqtrade.strategy import (
- IStrategy,
DecimalParameter,
IntParameter,
+ IStrategy,
)
-
-import talib.abstract as ta
+from pandas import DataFrame
from technical import qtpylib
diff --git a/strategy/RsiDivergenceStrategy.py b/strategy/RsiDivergenceStrategy.py
index 545e93d..d5b2d7d 100644
--- a/strategy/RsiDivergenceStrategy.py
+++ b/strategy/RsiDivergenceStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: RSI Divergence Proxy Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class RsiDivergenceStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/SqueezeMomentumStrategy.py b/strategy/SqueezeMomentumStrategy.py
index cadddee..1f59366 100644
--- a/strategy/SqueezeMomentumStrategy.py
+++ b/strategy/SqueezeMomentumStrategy.py
@@ -13,9 +13,9 @@
Stop : 5%
"""
-from freqtrade.strategy import IStrategy, IntParameter, DecimalParameter
-from pandas import DataFrame
import talib.abstract as ta
+from freqtrade.strategy import DecimalParameter, IntParameter, IStrategy
+from pandas import DataFrame
class SqueezeMomentumStrategy(IStrategy):
diff --git a/strategy/StochasticCciStrategy.py b/strategy/StochasticCciStrategy.py
index 3d0ecc6..2224871 100644
--- a/strategy/StochasticCciStrategy.py
+++ b/strategy/StochasticCciStrategy.py
@@ -1,12 +1,11 @@
from datetime import datetime
-from pandas import DataFrame
+import talib.abstract as ta
from freqtrade.strategy import (
- IStrategy,
IntParameter,
+ IStrategy,
)
-
-import talib.abstract as ta
+from pandas import DataFrame
from technical import qtpylib
diff --git a/strategy/StochasticOversoldStrategy.py b/strategy/StochasticOversoldStrategy.py
index 5717c5d..8eb03d3 100644
--- a/strategy/StochasticOversoldStrategy.py
+++ b/strategy/StochasticOversoldStrategy.py
@@ -1,7 +1,8 @@
"""Strategy 5: Stochastic Oversold Bounce"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class StochasticOversoldStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/StochasticRsiStrategy.py b/strategy/StochasticRsiStrategy.py
index 6bbd9a8..463ec6c 100644
--- a/strategy/StochasticRsiStrategy.py
+++ b/strategy/StochasticRsiStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Stochastic RSI Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class StochasticRsiStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/SupertrendStrategy.py b/strategy/SupertrendStrategy.py
index 001d940..53b3795 100644
--- a/strategy/SupertrendStrategy.py
+++ b/strategy/SupertrendStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Supertrend Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class SupertrendStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/TemaStrategy.py b/strategy/TemaStrategy.py
index 01063de..52a0f69 100644
--- a/strategy/TemaStrategy.py
+++ b/strategy/TemaStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: TEMA Cross Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class TemaStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/TrendAtrStrategy.py b/strategy/TrendAtrStrategy.py
index 91b07eb..cb8e107 100644
--- a/strategy/TrendAtrStrategy.py
+++ b/strategy/TrendAtrStrategy.py
@@ -10,9 +10,9 @@
Suitable for: crypto / stocks, 4h timeframe
"""
-from freqtrade.strategy import IStrategy, DecimalParameter, IntParameter
-from pandas import DataFrame
import talib.abstract as ta
+from freqtrade.strategy import DecimalParameter, IntParameter, IStrategy
+from pandas import DataFrame
class TrendAtrStrategy(IStrategy):
diff --git a/strategy/TripleEmaStrategy.py b/strategy/TripleEmaStrategy.py
index 2c2d712..4d1f4f9 100644
--- a/strategy/TripleEmaStrategy.py
+++ b/strategy/TripleEmaStrategy.py
@@ -1,7 +1,8 @@
"""Strategy 11: Triple EMA Trend"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class TripleEmaStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/TrixSignalStrategy.py b/strategy/TrixSignalStrategy.py
index f8933f6..39937bd 100644
--- a/strategy/TrixSignalStrategy.py
+++ b/strategy/TrixSignalStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Trix Signal Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class TrixSignalStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/VolumeBreakoutStrategy.py b/strategy/VolumeBreakoutStrategy.py
index 2148dc7..09ccd11 100644
--- a/strategy/VolumeBreakoutStrategy.py
+++ b/strategy/VolumeBreakoutStrategy.py
@@ -8,9 +8,9 @@
Stop : 4% fixed + trailing after 3% profit
"""
-from freqtrade.strategy import IStrategy, IntParameter, DecimalParameter
-from pandas import DataFrame
import talib.abstract as ta
+from freqtrade.strategy import DecimalParameter, IntParameter, IStrategy
+from pandas import DataFrame
class VolumeBreakoutStrategy(IStrategy):
diff --git a/strategy/VortexStrategy.py b/strategy/VortexStrategy.py
index c289876..1b27366 100644
--- a/strategy/VortexStrategy.py
+++ b/strategy/VortexStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: Vortex Indicator Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class VortexStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/VwapReversionStrategy.py b/strategy/VwapReversionStrategy.py
index ec4400a..7cb543b 100644
--- a/strategy/VwapReversionStrategy.py
+++ b/strategy/VwapReversionStrategy.py
@@ -1,7 +1,8 @@
"""Strategy: VWAP Reversion Strategy"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class VwapReversionStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/WilliamsRStrategy.py b/strategy/WilliamsRStrategy.py
index af800c3..489c2b1 100644
--- a/strategy/WilliamsRStrategy.py
+++ b/strategy/WilliamsRStrategy.py
@@ -1,7 +1,8 @@
"""Strategy 7: Williams %R Reversal"""
+import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import talib.abstract as ta
+
class WilliamsRStrategy(IStrategy):
timeframe = "5m"
diff --git a/strategy/ZScoreMeanReversionStrategy.py b/strategy/ZScoreMeanReversionStrategy.py
index 8d464a2..d915195 100644
--- a/strategy/ZScoreMeanReversionStrategy.py
+++ b/strategy/ZScoreMeanReversionStrategy.py
@@ -1,4 +1,5 @@
import numpy as np
+
"""
ZScoreMeanReversionStrategy — Statistical mean-reversion on Bollinger Z-score
==============================================================================
@@ -12,9 +13,9 @@
Suitable for: crypto / US stocks, 4h or 1d timeframe
"""
-from freqtrade.strategy import IStrategy, DecimalParameter, IntParameter
-from pandas import DataFrame
import talib.abstract as ta
+from freqtrade.strategy import DecimalParameter, IntParameter, IStrategy
+from pandas import DataFrame
class ZScoreMeanReversionStrategy(IStrategy):
diff --git a/strategy/__init__.py b/strategy/__init__.py
index 415dcef..c735aea 100644
--- a/strategy/__init__.py
+++ b/strategy/__init__.py
@@ -1,11 +1,11 @@
from strategy.EmaCrossStrategy import EmaCrossStrategy
+from strategy.IchimokuCloudStrategy import IchimokuCloudStrategy
from strategy.MacdAdxStrategy import MacdAdxStrategy
+from strategy.MlpSpeculativeStrategy import MlpSpeculativeStrategy
+from strategy.PolymarketMeanReversionStrategy import PolymarketMeanReversionStrategy
+from strategy.PolymarketMomentumStrategy import PolymarketMomentumStrategy
from strategy.RsiBollingerStrategy import RsiBollingerStrategy
-from strategy.IchimokuCloudStrategy import IchimokuCloudStrategy
from strategy.StochasticCciStrategy import StochasticCciStrategy
-from strategy.PolymarketMomentumStrategy import PolymarketMomentumStrategy
-from strategy.PolymarketMeanReversionStrategy import PolymarketMeanReversionStrategy
-from strategy.MlpSpeculativeStrategy import MlpSpeculativeStrategy
strategy_list = [
EmaCrossStrategy.__name__,
diff --git a/strategy/adaptive_trend/adaptive_trend.py b/strategy/adaptive_trend/adaptive_trend.py
index 2039a8f..8bf1e1d 100644
--- a/strategy/adaptive_trend/adaptive_trend.py
+++ b/strategy/adaptive_trend/adaptive_trend.py
@@ -1,15 +1,15 @@
# --- Do not remove these libs ---
-from freqtrade.strategy import IStrategy
+from datetime import timedelta
+from pathlib import Path
from typing import Optional
-from pandas import DataFrame
-# --------------------------------
-from freqtrade.strategy import DecimalParameter, IntParameter
-import talib.abstract as ta
-import pandas as pd
import numpy as np
-from pathlib import Path
-from datetime import timedelta
+import pandas as pd
+import talib.abstract as ta
+
+# --------------------------------
+from freqtrade.strategy import DecimalParameter, IntParameter, IStrategy
+from pandas import DataFrame
class adaptive_trend(IStrategy):
diff --git a/strategy/crypto_factors_regression/beta_factors_model.ipynb b/strategy/crypto_factors_regression/beta_factors_model.ipynb
index d76266f..a7041ed 100644
--- a/strategy/crypto_factors_regression/beta_factors_model.ipynb
+++ b/strategy/crypto_factors_regression/beta_factors_model.ipynb
@@ -8,18 +8,14 @@
"outputs": [],
"source": [
"# Import libraries\n",
- "import pandas as pd\n",
+ "import joblib\n",
+ "import matplotlib.pyplot as plt\n",
"import numpy as np\n",
+ "import pandas as pd\n",
"import yfinance as yf\n",
- "from sklearn.model_selection import train_test_split\n",
- "from sklearn.preprocessing import MinMaxScaler\n",
- "from sklearn.linear_model import LinearRegression, Ridge, Lasso\n",
- "from sklearn.preprocessing import StandardScaler\n",
+ "from sklearn.linear_model import Ridge\n",
"from sklearn.pipeline import Pipeline\n",
- "from pycoingecko import CoinGeckoAPI\n",
- "import joblib\n",
- "\n",
- "import matplotlib.pyplot as plt"
+ "from sklearn.preprocessing import StandardScaler"
]
},
{
@@ -817,7 +813,6 @@
}
],
"source": [
- "import matplotlib.pyplot as plt\n",
"\n",
"equity = (1 + df[\"strat_ret_net\"].fillna(0)).cumprod()\n",
"buyhold = (1 + df[\"ret\"].fillna(0)).cumprod()\n",
diff --git a/strategy/crypto_factors_regression/beta_factors_model.py b/strategy/crypto_factors_regression/beta_factors_model.py
index f467bfe..9bdf618 100644
--- a/strategy/crypto_factors_regression/beta_factors_model.py
+++ b/strategy/crypto_factors_regression/beta_factors_model.py
@@ -1,16 +1,16 @@
# --- Do not remove these libs ---
-from freqtrade.strategy import IStrategy
-from pandas import DataFrame
-# --------------------------------
-
-from freqtrade.strategy import (DecimalParameter)
+from datetime import timedelta
+from pathlib import Path
-import pandas as pd
-import numpy as np
import joblib
-from pathlib import Path
-from datetime import timedelta
+import numpy as np
+import pandas as pd
+
+# --------------------------------
+from freqtrade.strategy import DecimalParameter, IStrategy
+from pandas import DataFrame
+
class beta_factors_model(IStrategy):
diff --git a/strategy/mlp_speculative_model/ml_utils/data_process.py b/strategy/mlp_speculative_model/ml_utils/data_process.py
index 1acd57e..f006f09 100644
--- a/strategy/mlp_speculative_model/ml_utils/data_process.py
+++ b/strategy/mlp_speculative_model/ml_utils/data_process.py
@@ -1,7 +1,9 @@
+import numpy as np
import pandas as pd
-from strategy.mlp_speculative_model.ml_utils.technical_analysis_tool import TecnicalAnalysis
from sklearn.preprocessing import StandardScaler
-import numpy as np
+
+from strategy.mlp_speculative_model.ml_utils.technical_analysis_tool import TecnicalAnalysis
+
features = [
"z_score",
"rsi",
diff --git a/strategy/mlp_speculative_model/ml_utils/ensemble.py b/strategy/mlp_speculative_model/ml_utils/ensemble.py
index d6c67dd..b7bba9d 100644
--- a/strategy/mlp_speculative_model/ml_utils/ensemble.py
+++ b/strategy/mlp_speculative_model/ml_utils/ensemble.py
@@ -1,11 +1,13 @@
import os
+
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(BASE_DIR, "..", "models", "model_final_5_2.h5")
-from sklearn.preprocessing import StandardScaler
-from tensorflow import keras # type: ignore
import numpy as np
+from sklearn.preprocessing import StandardScaler
+from tensorflow import keras # type: ignore
+
class SimpleModel:
def __init__(self, path):
diff --git a/strategy/mlp_speculative_model/ml_utils/labelling_algorithm.py b/strategy/mlp_speculative_model/ml_utils/labelling_algorithm.py
index 4ecb63b..070cdae 100644
--- a/strategy/mlp_speculative_model/ml_utils/labelling_algorithm.py
+++ b/strategy/mlp_speculative_model/ml_utils/labelling_algorithm.py
@@ -1,4 +1,5 @@
import pandas as pd
+
from strategy.mlp_speculative_model.ml_utils.technical_analysis_tool import TecnicalAnalysis
BUY = -1
diff --git a/strategy/mlp_speculative_model/ml_utils/technical_analysis_tool.py b/strategy/mlp_speculative_model/ml_utils/technical_analysis_tool.py
index 74d0904..647a13b 100644
--- a/strategy/mlp_speculative_model/ml_utils/technical_analysis_tool.py
+++ b/strategy/mlp_speculative_model/ml_utils/technical_analysis_tool.py
@@ -1,5 +1,5 @@
-import pandas as pd
import numpy as np
+import pandas as pd
import talib as talib
BUY = -1
@@ -12,7 +12,7 @@ class TecnicalAnalysis:
@staticmethod
def compute_oscillators(data):
log_return = np.log(data['close']) - np.log(data['close'].shift(1))
- data['z_score'] = (((log_return - log_return.rolling(20).mean()) / log_return.rolling(20).std()))
+ data['z_score'] = ((log_return - log_return.rolling(20).mean()) / log_return.rolling(20).std())
data['rsi'] = ((talib.RSI(data['close'])) / 100)
upper_band, _, lower_band = talib.BBANDS(data['close'], nbdevup=2, nbdevdn=2, matype=0)
data['boll'] = ((data['close'] - lower_band) / (upper_band - lower_band))
diff --git a/tests/test_alpha.py b/tests/test_alpha.py
index efdcdc6..abf8121 100644
--- a/tests/test_alpha.py
+++ b/tests/test_alpha.py
@@ -6,13 +6,14 @@
talib = pytest.importorskip("talib", reason="TA-Lib C library not installed")
-from alpha.interface import IAlpha, AlphaEvaluator
-from alpha.SimpleEmaFactors import EmaAlpha
-from alpha.RsiAlpha import RsiAlpha
-from alpha.MacdAlpha import MacdAlpha
-from alpha.BollingerAlpha import BollingerAlpha
from alpha.AutoregressionAlpha import AutoregressionAlpha
-from alpha.EventLstmAlpha import EventLstmAlpha # type: ignore
+from alpha.BollingerAlpha import BollingerAlpha
+from alpha.EventLstmAlpha import EventLstmAlpha # type: ignore
+from alpha.interface import AlphaEvaluator, IAlpha
+from alpha.MacdAlpha import MacdAlpha
+from alpha.RsiAlpha import RsiAlpha
+from alpha.SimpleEmaFactors import EmaAlpha
+
def _make_ohlcv(n=100):
"""Create a minimal synthetic OHLCV DataFrame."""
diff --git a/tests/test_backtesting.py b/tests/test_backtesting.py
index 2e6fcf2..f105301 100644
--- a/tests/test_backtesting.py
+++ b/tests/test_backtesting.py
@@ -11,8 +11,6 @@
- Backtest accounting (initial capital, PnL tracking)
"""
-import os
-import sys
import numpy as np
import pandas as pd
diff --git a/tests/test_data_integrity.py b/tests/test_data_integrity.py
index f827e77..11e2632 100644
--- a/tests/test_data_integrity.py
+++ b/tests/test_data_integrity.py
@@ -1,7 +1,8 @@
"""Tests for data file integrity — verifies feather files have correct schema."""
-import os
import glob
+import os
+
import pandas as pd
import pytest
diff --git a/tests/test_pipeline.py b/tests/test_pipeline.py
index 761254f..7ef07dc 100644
--- a/tests/test_pipeline.py
+++ b/tests/test_pipeline.py
@@ -11,33 +11,37 @@
- Integrations
"""
-import pytest
-import tempfile
import json
+
+# Configure path
+import sys
+import tempfile
from pathlib import Path
-from unittest.mock import Mock, patch
+from unittest.mock import patch
-import pandas as pd
import numpy as np
+import pandas as pd
+import pytest
-# Configure path
-import sys
_PROJECT_ROOT = Path(__file__).parent.parent
if str(_PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(_PROJECT_ROOT))
from pipeline.config import (
- PipelineConfig, AlphaConfig, StrategyConfig, PortfolioConfig,
- BacktestConfig, DataConfig, AlphaType, StrategyType, PortfolioAlgorithm,
- PresetConfigs
+ AlphaConfig,
+ AlphaType,
+ BacktestConfig,
+ PipelineConfig,
+ PortfolioAlgorithm,
+ PortfolioConfig,
+ PresetConfigs,
+ StrategyConfig,
+ StrategyType,
)
+from pipeline.integrations import FreqtradeIntegration, PipelineComparator
from pipeline.orchestrator import PortfolioPipeline
-from pipeline.verification import PipelineVerification, ValidationResult
from pipeline.results import PipelineResult, StageOutput
-from pipeline.integrations import (
- FreqtradeIntegration, BatchPipelineRunner, PipelineComparator
-)
-
+from pipeline.verification import PipelineVerification, ValidationResult
# ============================================================================
# FIXTURES
diff --git a/tests/test_polymarket/test_contracts.py b/tests/test_polymarket/test_contracts.py
index d7d5350..ba58bbe 100644
--- a/tests/test_polymarket/test_contracts.py
+++ b/tests/test_polymarket/test_contracts.py
@@ -1,6 +1,5 @@
"""Tests for polymarket.contracts — metadata loading and normalisation."""
-import json
import tempfile
from pathlib import Path
diff --git a/tests/test_polymarket/test_event_model.py b/tests/test_polymarket/test_event_model.py
index f2cb1b1..92509db 100644
--- a/tests/test_polymarket/test_event_model.py
+++ b/tests/test_polymarket/test_event_model.py
@@ -9,6 +9,7 @@
import pandas as pd
import pytest
+from polymarket.event_dataset import build_training_samples
from polymarket.event_features import (
ALL_FEATURE_COLS,
BTC_FEATURE_COLS,
@@ -18,7 +19,6 @@
add_contract_features,
build_feature_matrix,
)
-from polymarket.event_dataset import build_training_samples
from polymarket.event_model import (
load_model,
predict_contract_probs,
@@ -26,7 +26,6 @@
train,
)
-
# ---------------------------------------------------------------------------
# Fixtures
# ---------------------------------------------------------------------------
diff --git a/tests/test_polymarket/test_settlement.py b/tests/test_polymarket/test_settlement.py
index 0b512c5..805085c 100644
--- a/tests/test_polymarket/test_settlement.py
+++ b/tests/test_polymarket/test_settlement.py
@@ -2,7 +2,6 @@
from pathlib import Path
-import pandas as pd
import pytest
from polymarket.contracts import load_contracts
@@ -97,7 +96,7 @@ def test_all_contracts_match(self, jan20_contracts, btc_df):
assert len(results) == 12
failures = [r for r in results if not r["match"]]
assert failures == [], (
- f"Settlement mismatches:\n" +
+ "Settlement mismatches:\n" +
"\n".join(f" {r['slug']}: outcome={r['outcome_prices_settlement']}, "
f"btc={r['btc_derived_settlement']}" for r in failures)
)
diff --git a/tests/test_portfolio_management.py b/tests/test_portfolio_management.py
index e9ac6d2..2c924b2 100644
--- a/tests/test_portfolio_management.py
+++ b/tests/test_portfolio_management.py
@@ -1,6 +1,7 @@
"""Tests for the standalone portfolio pipeline (portfolio/PortfolioManagement.py)."""
import os
+
import numpy as np
import pandas as pd
import pytest
diff --git a/tests/test_workflow.py b/tests/test_workflow.py
index 8c99036..16aea22 100644
--- a/tests/test_workflow.py
+++ b/tests/test_workflow.py
@@ -25,16 +25,13 @@
if os.path.isdir(_LUMIDSTACK) and _LUMIDSTACK not in sys.path:
sys.path.insert(0, _LUMIDSTACK)
+from adapters.portbench.runner import LocalWorkflowRunner
from workflow.executor import (
- ALPHA_REGISTRY,
- SIGNAL_DISPATCH,
handle_alpha,
handle_portfolio,
handle_strategy,
register_all_handlers,
)
-from adapters.portbench.runner import LocalWorkflowRunner
-
# ---------------------------------------------------------------------------
# Helpers
diff --git a/user_data/run_custom.py b/user_data/run_custom.py
index bc2ddc4..5cab98e 100644
--- a/user_data/run_custom.py
+++ b/user_data/run_custom.py
@@ -1,8 +1,7 @@
-import sys
import ccxt
import ccxt.async_support
import ccxt.pro
-from freqtrade.exchange.common import SUPPORTED_EXCHANGES, MAP_EXCHANGE_CHILDCLASS
+from freqtrade.exchange.common import MAP_EXCHANGE_CHILDCLASS, SUPPORTED_EXCHANGES
CUSTOM_EXCHANGES = ['portfoliobench', 'polymarket']
@@ -23,5 +22,6 @@
MAP_EXCHANGE_CHILDCLASS[name] = name
from freqtrade.main import main
+
if __name__ == '__main__':
main()
\ No newline at end of file
diff --git a/user_data/strategies/DualModelPolymarketPortfolio.py b/user_data/strategies/DualModelPolymarketPortfolio.py
index 9baf17c..8b323f4 100644
--- a/user_data/strategies/DualModelPolymarketPortfolio.py
+++ b/user_data/strategies/DualModelPolymarketPortfolio.py
@@ -39,12 +39,11 @@
import json
import logging
-from datetime import datetime, timezone
+from datetime import UTC, datetime
from pathlib import Path
from typing import Optional
import pandas as pd
-
from freqtrade.persistence import Trade
from freqtrade.strategy import IStrategy
@@ -57,7 +56,7 @@
SETTLE_YES = 0.999
SETTLE_NO = 0.001
-UTC = timezone.utc
+UTC = UTC
class DualModelPolymarketPortfolio(IStrategy):
diff --git a/user_data/strategies/ONS.py b/user_data/strategies/ONS.py
index cb180a9..2327541 100644
--- a/user_data/strategies/ONS.py
+++ b/user_data/strategies/ONS.py
@@ -1,11 +1,12 @@
+import logging
+from datetime import datetime
+from typing import Optional
+
import numpy as np
import pandas as pd
-from scipy.optimize import minimize
-from freqtrade.strategy import IStrategy
from freqtrade.persistence import Trade
-from datetime import datetime
-from typing import Optional
-import logging
+from freqtrade.strategy import IStrategy
+from scipy.optimize import minimize
# Initialize the logger
logger = logging.getLogger(__name__)
diff --git a/user_data/strategies/best_single_asset.py b/user_data/strategies/best_single_asset.py
index 0ac1104..e51b43d 100644
--- a/user_data/strategies/best_single_asset.py
+++ b/user_data/strategies/best_single_asset.py
@@ -1,6 +1,6 @@
+import pandas as pd
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import pandas as pd
class BestSingleAssetPortfolio(IStrategy):
diff --git a/user_data/strategies/exp_gradient.py b/user_data/strategies/exp_gradient.py
index e37034e..ce25b96 100644
--- a/user_data/strategies/exp_gradient.py
+++ b/user_data/strategies/exp_gradient.py
@@ -1,11 +1,12 @@
+import logging
+from datetime import datetime
+from typing import Optional
+
+import numpy as np
+import pandas as pd
from freqtrade.persistence.trade_model import Trade
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import pandas as pd
-import numpy as np
-from datetime import datetime
-from typing import Optional
-import logging
logger = logging.getLogger(__name__)
diff --git a/user_data/strategies/inv_vol.py b/user_data/strategies/inv_vol.py
index d46f4d5..5dc4375 100644
--- a/user_data/strategies/inv_vol.py
+++ b/user_data/strategies/inv_vol.py
@@ -1,11 +1,12 @@
+import logging
+from datetime import datetime
+from typing import Optional
+
+import numpy as np
+import pandas as pd
from freqtrade.persistence.trade_model import Trade
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import pandas as pd
-import numpy as np
-from datetime import datetime
-from typing import Optional
-import logging
logger = logging.getLogger(__name__)
diff --git a/user_data/strategies/max_sharpe.py b/user_data/strategies/max_sharpe.py
index 11a49cc..0fea72d 100644
--- a/user_data/strategies/max_sharpe.py
+++ b/user_data/strategies/max_sharpe.py
@@ -1,12 +1,13 @@
+import logging
+from datetime import datetime
+from typing import Optional
+
+import numpy as np
+import pandas as pd
from freqtrade.persistence.trade_model import Trade
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import pandas as pd
-import numpy as np
-from datetime import datetime
-from typing import Optional
from scipy.optimize import minimize
-import logging
logger = logging.getLogger(__name__)
diff --git a/user_data/strategies/min_var.py b/user_data/strategies/min_var.py
index b731e8b..5682e65 100644
--- a/user_data/strategies/min_var.py
+++ b/user_data/strategies/min_var.py
@@ -1,11 +1,12 @@
+import logging
+from datetime import datetime
+from typing import Optional
+
+import numpy as np
+import pandas as pd
from freqtrade.persistence.trade_model import Trade
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import pandas as pd
-import numpy as np
-from datetime import datetime
-from typing import Optional
-import logging
logger = logging.getLogger(__name__)
diff --git a/user_data/strategies/polymarket_portfolio.py b/user_data/strategies/polymarket_portfolio.py
index fd00164..53285cf 100644
--- a/user_data/strategies/polymarket_portfolio.py
+++ b/user_data/strategies/polymarket_portfolio.py
@@ -13,13 +13,13 @@
and sizes positions based on perceived edge vs market price.
"""
-import pandas as pd
+import logging
from datetime import datetime
from typing import Optional
-import logging
-from freqtrade.strategy import IStrategy
+import pandas as pd
from freqtrade.persistence import Trade
+from freqtrade.strategy import IStrategy
logger = logging.getLogger(__name__)
diff --git a/user_data/strategies/risk_parity.py b/user_data/strategies/risk_parity.py
index c1c40f2..df6f192 100644
--- a/user_data/strategies/risk_parity.py
+++ b/user_data/strategies/risk_parity.py
@@ -1,12 +1,13 @@
+import logging
+from datetime import datetime
+from typing import Optional
+
+import numpy as np
+import pandas as pd
from freqtrade.persistence.trade_model import Trade
from freqtrade.strategy import IStrategy
from pandas import DataFrame
-import pandas as pd
-import numpy as np
-from datetime import datetime
-from typing import Optional
from scipy.optimize import minimize
-import logging
logger = logging.getLogger(__name__)
diff --git a/utils/download_polymarket_data.py b/utils/download_polymarket_data.py
index 7c6b15b..bd1a375 100644
--- a/utils/download_polymarket_data.py
+++ b/utils/download_polymarket_data.py
@@ -14,14 +14,10 @@
"""
import argparse
-import json
import logging
-import sys
import time
-from datetime import datetime, timezone
from pathlib import Path
-import numpy as np
import pandas as pd
try:
diff --git a/utils/generate_polymarket_test_data.py b/utils/generate_polymarket_test_data.py
index 8e5b357..5d02991 100644
--- a/utils/generate_polymarket_test_data.py
+++ b/utils/generate_polymarket_test_data.py
@@ -14,11 +14,11 @@
python utils/generate_polymarket_test_data.py
"""
-import numpy as np
-import pandas as pd
-from pathlib import Path
from datetime import datetime
+from pathlib import Path
+import numpy as np
+import pandas as pd
# ---------------------------------------------------------------------------
# Event definitions for synthetic data
diff --git a/utils/generate_test_data.py b/utils/generate_test_data.py
index e37225e..56ea8d1 100644
--- a/utils/generate_test_data.py
+++ b/utils/generate_test_data.py
@@ -15,11 +15,11 @@
portbench generate-data # via CLI (recommended)
python utils/generate_test_data.py # or directly
"""
-import pandas as pd
-import numpy as np
-from pathlib import Path
from datetime import datetime
+from pathlib import Path
+import numpy as np
+import pandas as pd
# All tickers tracked in the repo (119 instruments)
CRYPTO_TICKERS = [
diff --git a/utils/test.py b/utils/test.py
index e819fa1..045f52a 100644
--- a/utils/test.py
+++ b/utils/test.py
@@ -1,7 +1,7 @@
-from multiprocessing import Pool
from freqtrade.commands.optimize_commands import setup_optimize_configuration
-from freqtrade.optimize.backtesting import Backtesting
from freqtrade.enums import RunMode
+from freqtrade.optimize.backtesting import Backtesting
+
from strategy import strategy_list
diff --git a/workflow/cli_workflow.py b/workflow/cli_workflow.py
index da61978..4bc606c 100644
--- a/workflow/cli_workflow.py
+++ b/workflow/cli_workflow.py
@@ -76,12 +76,12 @@ def run_workflow_cli(
Backtest metrics dictionary.
"""
from adapters.portbench.runner import LocalWorkflowRunner
- from workflow.executor import register_all_handlers
from portfolio.PortfolioManagement import (
- load_pair_data,
backtest_portfolio,
compute_metrics,
+ load_pair_data,
)
+ from workflow.executor import register_all_handlers
path = Path(workflow_file)
if not path.is_file():
diff --git a/workflow/executor.py b/workflow/executor.py
index 79495ee..2641990 100644
--- a/workflow/executor.py
+++ b/workflow/executor.py
@@ -14,9 +14,8 @@ def handler(stage_name: str, params: dict, context: dict) -> dict
import os
import sys
-from typing import Any, Dict, List
+from typing import Any, Dict
-import numpy as np
import pandas as pd
# ---------------------------------------------------------------------------
@@ -29,21 +28,17 @@ def handler(stage_name: str, params: dict, context: dict) -> dict
if os.path.isdir(os.path.join(_FT_ROOT, "freqtrade")) and _FT_ROOT not in sys.path:
sys.path.insert(0, _FT_ROOT)
-from alpha.SimpleEmaFactors import EmaAlpha # noqa: E402
-from alpha.RsiAlpha import RsiAlpha # noqa: E402
-from alpha.MacdAlpha import MacdAlpha # noqa: E402
from alpha.BollingerAlpha import BollingerAlpha # noqa: E402
-
+from alpha.MacdAlpha import MacdAlpha # noqa: E402
+from alpha.RsiAlpha import RsiAlpha # noqa: E402
+from alpha.SimpleEmaFactors import EmaAlpha # noqa: E402
from portfolio.PortfolioManagement import ( # noqa: E402
- load_pair_data,
align_close_prices,
- ema_cross_signals,
+ blend_strategy_weights,
build_ema_position_series,
calculate_ons_weights,
+ ema_cross_signals,
equal_weight_allocation,
- blend_strategy_weights,
- backtest_portfolio,
- compute_metrics,
)
# ---------------------------------------------------------------------------