-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtest_system.py
More file actions
130 lines (111 loc) · 4.03 KB
/
test_system.py
File metadata and controls
130 lines (111 loc) · 4.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/env python3
"""
Quick test script to verify AlphaStream is working correctly.
"""
import sys
import warnings
warnings.filterwarnings('ignore')
print("=" * 60)
print("AlphaStream System Test")
print("=" * 60)
# Test 1: Import modules
print("\n1. Testing module imports...")
try:
from ml.dataset import DataLoader, DataPipeline
from ml.features import FeatureEngineer
from ml.models import ModelFactory
print("✅ ML modules imported successfully")
except Exception as e:
print(f"❌ Error importing ML modules: {e}")
sys.exit(1)
# Test 2: Data loading
print("\n2. Testing data loading...")
try:
data_loader = DataLoader()
data = data_loader.load(
symbols='AAPL',
start_date='2024-01-01',
end_date='2024-03-01'
)
print(f"✅ Loaded {len(data)} days of AAPL data")
print(f" Latest close: ${data['close'].iloc[-1]:.2f}")
except Exception as e:
print(f"❌ Error loading data: {e}")
# Test 3: Feature engineering
print("\n3. Testing feature engineering...")
try:
feature_engineer = FeatureEngineer()
features = feature_engineer.transform(data)
print(f"✅ Generated {features.shape[1]} features")
print(f" Sample features: {list(features.columns[:5])}")
except Exception as e:
print(f"❌ Error generating features: {e}")
# Test 4: Model creation
print("\n4. Testing model creation...")
try:
model = ModelFactory.create('random_forest', 'classification')
print(f"✅ Created RandomForest model")
model = ModelFactory.create('xgboost', 'classification')
print(f"✅ Created XGBoost model")
except Exception as e:
print(f"❌ Error creating models: {e}")
# Test 5: Quick training test
print("\n5. Testing model training (mini dataset)...")
try:
# Prepare mini dataset
from ml.features import TargetGenerator
target_gen = TargetGenerator(target_type='classification')
# Use last 100 rows for quick test
mini_features = features.iloc[-100:]
mini_targets = target_gen.generate(data.iloc[-100:])
# Remove NaN
valid_idx = ~(mini_features.isna().any(axis=1) | mini_targets.isna())
mini_features = mini_features[valid_idx]
mini_targets = mini_targets[valid_idx]
if len(mini_features) > 50:
# Split data
split_idx = int(len(mini_features) * 0.7)
X_train = mini_features.iloc[:split_idx]
y_train = mini_targets.iloc[:split_idx]
X_test = mini_features.iloc[split_idx:]
y_test = mini_targets.iloc[split_idx:]
# Train model
model = ModelFactory.create('random_forest', 'classification', n_estimators=10)
model.train(X_train, y_train)
# Make predictions
predictions = model.predict(X_test)
accuracy = (predictions == y_test).mean()
print(f"✅ Model trained successfully")
print(f" Test accuracy: {accuracy:.2%}")
else:
print("⚠️ Not enough data for training test")
except Exception as e:
print(f"❌ Error in training test: {e}")
# Test 6: Backtesting
print("\n6. Testing backtesting engine...")
try:
from backtesting.engine import BacktestEngine
# Create simple signals
import pandas as pd
signals = pd.Series([1, -1, 0, 1, -1] * (len(data) // 5), index=data.index[:len(data) // 5 * 5])
# Run mini backtest
engine = BacktestEngine(
data.iloc[:len(signals)],
initial_capital=10000,
commission=0.001
)
engine.add_signals(signals)
results = engine.run()
print(f"✅ Backtesting engine working")
print(f" Total trades: {results['metrics']['total_trades']}")
except Exception as e:
print(f"❌ Error in backtesting: {e}")
print("\n" + "=" * 60)
print("System Test Summary")
print("=" * 60)
print("\n✅ AlphaStream is working correctly!")
print("\nNext steps:")
print("1. Train full models: python train_models.py train --symbols AAPL")
print("2. Start API: python -m uvicorn api.main:app --reload")
print("3. Run backtests: python train_models.py backtest --model models/ensemble.pkl")
print("\n")