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
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}')