test: add strategy and integration tests

Add tests for trend rider (integration, robustness, v4),
US combo sweep, and US fundamentals modules.
This commit is contained in:
2026-05-14 12:53:26 +08:00
parent 541f7bcf5b
commit 24663ebd35
5 changed files with 302 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
import unittest
import pandas as pd
import trader
from strategies.permanent import (
ETF_UNIVERSE,
GLOBAL_ETF_UNIVERSE,
HK_ETF_UNIVERSE,
TREND_RIDER_V4_UNIVERSE,
TrendRiderV3,
TrendRiderV4,
)
class TrendRiderTraderIntegrationTests(unittest.TestCase):
def test_trend_rider_strategies_are_registered(self):
self.assertIsInstance(trader.STRATEGY_REGISTRY["trend_rider_v3_us"](), TrendRiderV3)
self.assertIsInstance(trader.STRATEGY_REGISTRY["trend_rider_v3_global"](), TrendRiderV3)
self.assertIsInstance(trader.STRATEGY_REGISTRY["trend_rider_v3_hk"](), TrendRiderV3)
self.assertIsInstance(trader.STRATEGY_REGISTRY["trend_rider_v4"](), TrendRiderV4)
def test_strategy_universe_uses_etfs_for_trend_rider(self):
tickers, benchmark = trader.strategy_universe("us", "trend_rider_v3_us")
self.assertEqual(tickers, sorted(ETF_UNIVERSE))
self.assertEqual(benchmark, "SPY")
self.assertEqual(trader.strategy_data_market("us", "trend_rider_v3_us"), "etfs")
global_tickers, global_benchmark = trader.strategy_universe("us", "trend_rider_v3_global")
self.assertEqual(global_tickers, sorted(set(GLOBAL_ETF_UNIVERSE)))
self.assertEqual(global_benchmark, "SPY")
hk_tickers, hk_benchmark = trader.strategy_universe("us", "trend_rider_v3_hk")
self.assertEqual(hk_tickers, sorted(set(HK_ETF_UNIVERSE)))
self.assertEqual(hk_benchmark, "SPY")
v4_tickers, v4_benchmark = trader.strategy_universe("us", "trend_rider_v4")
self.assertEqual(v4_tickers, sorted(set(TREND_RIDER_V4_UNIVERSE)))
self.assertEqual(v4_benchmark, "SPY")
def test_filter_tradable_columns_preserves_strategy_assets(self):
close_data = pd.DataFrame(columns=["SPY", "TQQQ", "UPRO", "GLD", "DBC", "SHY"])
tickers = trader.filter_tradable_tickers(close_data, ["SPY", "TQQQ", "MISSING"])
self.assertEqual(tickers, ["SPY", "TQQQ"])
def test_stock_strategies_keep_market_cache(self):
self.assertEqual(trader.strategy_data_market("us", "recovery_mom_top10"), "us")
if __name__ == "__main__":
unittest.main()