algorithmic_trading / generate_sample_data.py
Edwin Salguero
feat: prepare for Streamlit Cloud deployment - fix requirements.txt, add deployment config, error handling, and entry point
aaa6e1c
Raw
History Blame Contribute Delete
1.57 kB
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
# Generate more realistic sample data
start_date = datetime(2024, 7, 1, 9, 30)
dates = [start_date + timedelta(minutes=i) for i in range(1000)] # 1000 data points
# Generate realistic price movements
np.random.seed(42)
base_price = 150.0
prices = []
for i in range(1000):
if i == 0:
price = base_price
else:
# Add some trend and volatility
change = np.random.normal(0, 0.5) + (0.001 * i) # Small upward trend
price = prices[-1] + change
prices.append(max(price, 1)) # Ensure price doesn't go negative
# Create OHLCV data
data = []
for i, (date, price) in enumerate(zip(dates, prices)):
# Generate realistic OHLC from base price
volatility = 0.02
high = price * (1 + np.random.uniform(0, volatility))
low = price * (1 - np.random.uniform(0, volatility))
open_price = price * (1 + np.random.uniform(-volatility/2, volatility/2))
close_price = price * (1 + np.random.uniform(-volatility/2, volatility/2))
volume = int(np.random.uniform(5000, 50000))
data.append({
'timestamp': date,
'open': round(open_price, 2),
'high': round(high, 2),
'low': round(low, 2),
'close': round(close_price, 2),
'volume': volume
})
df = pd.DataFrame(data)
df.to_csv('data/market_data.csv', index=False)
print(f'Generated {len(df)} realistic data points from {df.timestamp.min()} to {df.timestamp.max()}')
print(f'Price range: ${df.close.min():.2f} - ${df.close.max():.2f}')