Download tests/conftest.py from raghava4u/Trading-Bot-M20: direct link, hf CLI and curl.
- Browser
- Download file 4.04 kB
-
https://huggingface.co/raghava4u/Trading-Bot-M20/resolve/main/tests/conftest.py
- Command line
-
hf download hf://raghava4u/Trading-Bot-M20/tests/conftest.py
-
curl -L -o conftest.py https://huggingface.co/raghava4u/Trading-Bot-M20/resolve/main/tests/conftest.py
4.04 kB
| """ | |
| tests/conftest.py — Shared fixtures for pytest. | |
| """ | |
| from __future__ import annotations | |
| import datetime | |
| import os | |
| import sys | |
| from pathlib import Path | |
| import numpy as np | |
| import pandas as pd | |
| import pytest | |
| # Ensure project root on path | |
| ROOT = Path(__file__).resolve().parent.parent | |
| sys.path.insert(0, str(ROOT)) | |
| # Force DRY_RUN for all tests | |
| os.environ.setdefault("DRY_RUN", "true") | |
| os.environ.setdefault("TRADING_MODE", "paper") | |
| os.environ.setdefault("ALPACA_API_KEY", "test_key") | |
| os.environ.setdefault("ALPACA_SECRET_KEY", "test_secret") | |
| os.environ.setdefault("ALPACA_BASE_URL", "https://paper-api.alpaca.markets") | |
| os.environ.setdefault("TELEGRAM_BOT_TOKEN", "000:TEST") | |
| os.environ.setdefault("TELEGRAM_CHAT_ID", "0") | |
| os.environ.setdefault("NEWS_API_KEY", "testkey") | |
| os.environ.setdefault("UNIVERSE", "AAPL,MSFT,NVDA") | |
| os.environ.setdefault("ENV_SCHEMA_VERSION", "2") | |
| os.environ.setdefault("GPU_AVAILABLE", "false") | |
| os.environ.setdefault("ALLOW_SHORT", "true") | |
| os.environ.setdefault("ACCOUNT_BALANCE_ABOVE_25K", "true") | |
| os.environ.setdefault("ALPACA_ACCOUNT_TYPE", "margin") | |
| os.environ.setdefault("ALLOW_OVERNIGHT_POSITIONS", "false") | |
| os.environ.setdefault("DB_BACKEND", "sqlite") | |
| def sample_5m_bars(): | |
| """Generate 200 rows of realistic 5-minute bar data.""" | |
| np.random.seed(42) | |
| n = 200 | |
| base = 150.0 | |
| timestamps = pd.date_range( | |
| start="2024-06-01 09:30", | |
| periods=n, | |
| freq="5min", | |
| tz="US/Eastern", | |
| ) | |
| close = base + np.cumsum(np.random.randn(n) * 0.3) | |
| high = close + np.abs(np.random.randn(n) * 0.2) | |
| low = close - np.abs(np.random.randn(n) * 0.2) | |
| open_ = close + np.random.randn(n) * 0.1 | |
| volume = np.random.randint(10000, 100000, n).astype(float) | |
| vwap = (high + low + close) / 3.0 | |
| trade_count = np.random.randint(50, 500, n).astype(float) | |
| df = pd.DataFrame({ | |
| "timestamp": timestamps, | |
| "open": open_, | |
| "high": high, | |
| "low": low, | |
| "close": close, | |
| "volume": volume, | |
| "vwap": vwap, | |
| "trade_count": trade_count, | |
| }) | |
| return df | |
| def sample_1h_bars(): | |
| """Generate 100 rows of hourly bar data.""" | |
| np.random.seed(99) | |
| n = 100 | |
| base = 150.0 | |
| timestamps = pd.date_range( | |
| start="2024-05-01 09:30", | |
| periods=n, | |
| freq="1h", | |
| tz="US/Eastern", | |
| ) | |
| close = base + np.cumsum(np.random.randn(n) * 0.5) | |
| high = close + np.abs(np.random.randn(n) * 0.3) | |
| low = close - np.abs(np.random.randn(n) * 0.3) | |
| open_ = close + np.random.randn(n) * 0.15 | |
| volume = np.random.randint(50000, 500000, n).astype(float) | |
| vwap = (high + low + close) / 3.0 | |
| trade_count = np.random.randint(200, 2000, n).astype(float) | |
| df = pd.DataFrame({ | |
| "timestamp": timestamps, | |
| "open": open_, | |
| "high": high, | |
| "low": low, | |
| "close": close, | |
| "volume": volume, | |
| "vwap": vwap, | |
| "trade_count": trade_count, | |
| }) | |
| return df | |
| def sample_1d_bars(): | |
| """Generate 252 rows of daily bar data (1 year).""" | |
| np.random.seed(7) | |
| n = 252 | |
| base = 150.0 | |
| timestamps = pd.bdate_range( | |
| start="2024-01-01", | |
| periods=n, | |
| ) | |
| timestamps = timestamps.tz_localize("US/Eastern") | |
| close = base + np.cumsum(np.random.randn(n) * 1.5) | |
| high = close + np.abs(np.random.randn(n) * 1.0) | |
| low = close - np.abs(np.random.randn(n) * 1.0) | |
| open_ = close + np.random.randn(n) * 0.5 | |
| volume = np.random.randint(1_000_000, 10_000_000, n).astype(float) | |
| vwap = (high + low + close) / 3.0 | |
| trade_count = np.random.randint(1000, 10000, n).astype(float) | |
| df = pd.DataFrame({ | |
| "timestamp": timestamps, | |
| "open": open_, | |
| "high": high, | |
| "low": low, | |
| "close": close, | |
| "volume": volume, | |
| "vwap": vwap, | |
| "trade_count": trade_count, | |
| }) | |
| return df | |