diff --git a/.gitignore b/.gitignore index 68871c972..d3c2d1ff8 100644 --- a/.gitignore +++ b/.gitignore @@ -74,3 +74,4 @@ venv.bak/ temp/ tmp/ .python-version +data/ diff --git a/README.md b/README.md index faffa1578..bb918ae90 100644 --- a/README.md +++ b/README.md @@ -335,3 +335,148 @@ This project is licensed under the [MIT License](./LICENSE). + +--- + +# Appendix: Momentum Day-Trading Backtest (Cameron First-Pullback) + +Independent research appended to this fork. Not part of the upstream Kronos +model. Full detail in [`research/FINDINGS.md`](research/FINDINGS.md); +per-trade data in [`research/momentum_master_table.csv`](research/momentum_master_table.csv). + +**Strategy under test.** Five-pillar small-cap momentum selection (relative +volume ≥5× 50-day average, intraday gain ≥10%, price $2–$20, float <20M, +gap/catalyst), first-pullback entry on the crossing candle, per +`research/momentum_daytrading_notes.md`. + +**Data & conventions.** Alpaca SIP 1-minute bars, `adjustment=raw`, full +sessions. Two windows: 2024-08→2025-08 and 2025-08→2026-08. Universe = active +US equities (survivorship-biased; a delisted-universe probe found 2 qualifying +entries, both winners). Costs: 0.5%/side, plus 2% slip-through on stop fills +unless noted. Float pillar could not be applied historically. + +## 1. Universe funnel and frequency + +| Window | Candidate-days | Entries | First-pullback | Later-pullback | +|---|---|---|---|---| +| 2024-08→2025-08 | 4,792 | 109 | 21 (0.4/wk) | 88 (1.7/wk) | +| 2025-08→2026-08 | 5,005 | 182 | 32 (0.6/wk) | 150 (2.9/wk) | + +Dynamic intraday qualification (a stock may qualify any time 07:00–10:00 ET, +not only at the open) expanded the candidate pool ~4× versus an open-gap scan. + +## 2. Raw post-entry movement, first-pullback entries (no exit rules) + +| Metric | 2024-25 (n=21) | 2025-26 (n=32) | +|---|---|---| +| MFE by 10:00, median | +26.0% | +15.5% | +| MAE by 10:00, median | -28.2% | -16.6% | +| Price at 10:00, median | -15.5% | +0.1% | +| Day close vs entry, median | -25.8% | -8.2% | +| Touched +5% / +10% / +20% / +50% | 76 / 76 / 62 / 10% | 84 / 75 / 53 / 22% | + +Large two-sided movement; the median entry closes **below** the entry price. + +## 3. Drawdown → recovery curve (threshold-free) + +2,201 retracement episodes / 291 ticker-days. Every dip below a running high +is an event; depth grid is a reporting cut, not an event definition. + +| Retrace reached | n | P(new high) event-wtd | 95% CI | day-wtd | median time to recover | +|---|---|---|---|---|---| +| ≥2% | 1,892 | 84.9% | [83.0, 86.4] | 66.6% | 1 min | +| ≥5% | 1,341 | 78.7% | [76.3, 80.7] | 58.0% | 3 min | +| ≥8% | 969 | 70.8% | [67.9, 73.3] | 49.5% | 7 min | +| ≥10% | 807 | 65.4% | [62.2, 68.4] | 45.3% | 9 min | +| ≥15% | 554 | 51.1% | [47.2, 54.6] | 32.6% | 21 min | +| ≥20% | 431 | 40.4% | [35.5, 45.1] | 25.0% | 25 min | +| ≥30% | 285 | 26.7% | [21.7, 31.6] | 17.9% | 42 min | + +Smooth monotone decay, no plateau or cliff; crosses 50/50 near 15% depth. +Day-weighted runs 18–20 pts below event-weighted (each ticker-day carries at +most one terminal failure). CIs from a ticker-day cluster bootstrap. +Retracement **order** (1st/2nd/3rd) carries no measurable information once +depth is known. + +## 4. Escalation ladder — P(a retracement that reached X% goes on to reach Y%) + +| From \ To | ≥5% | ≥10% | ≥15% | ≥20% | ≥30% | +|---|---|---|---|---|---| +| reached 2% | 71% | 43% | 29% | 23% | 15% | +| reached 5% | — | 60% | 41% | 32% | 21% | +| reached 10% | — | — | 69% | 53% | 35% | +| reached 15% | — | — | — | 78% | 51% | +| reached 20% | — | — | — | — | 66% | + +Escalation odds *rise* with depth: shallow dips usually stop, deep dips tend +to keep going. + +## 5. Next-leg advance after a recovered ≥X% retracement + +Next event's peak vs the recovered peak (recovered episodes only). + +| X% | n | p5 | p25 | med | p75 | p90 | p99 | max | mean | +|---|---|---|---|---|---|---|---|---|---| +| 2 | 1,021 | +0.4 | +1.7 | +3.8 | +7.3 | +13.4 | +30.7 | +61.2 | +5.7 | +| 5 | 790 | +0.5 | +2.4 | +4.8 | +9.0 | +15.7 | +32.8 | +61.2 | +7.0 | +| 8 | 516 | +0.6 | +3.3 | +7.3 | +14.0 | +19.9 | +39.2 | +61.2 | +9.5 | +| 10 | 372 | +0.6 | +4.0 | +9.1 | +16.8 | +24.6 | +42.3 | +61.2 | +11.5 | +| 15 | 169 | +0.6 | +5.8 | +13.2 | +25.0 | +37.5 | +61.3 | +69.5 | +17.4 | +| 20 | 69 | +1.1 | +6.9 | +16.1 | +34.9 | +49.5 | +97.7 | +120.9 | +23.3 | + +## 6. Downside from a naive dip-buy (additional fall below the −X% price) + +| Buy at | n | med | p75 | p90 | if it recovers (med) | if it fails (med) | +|---|---|---|---|---|---|---| +| −2% | 1,892 | 6.4% | 16.3% | 35.7% | **5.1%** | **36.3%** | +| −5% | 1,341 | 7.6% | 22.1% | 38.8% | 5.3% | 34.3% | +| −10% | 807 | 12.6% | 29.0% | 43.6% | 6.2% | 30.7% | +| −20% | 431 | 19.3% | 31.2% | 49.3% | 10.5% | 24.0% | + +Recovering and failing episodes separate around 15–20% below the buy price. + +## 7. Fixed-level policies — exhaustive grid (all negative) + +Mean %/trade, buy at −X% from running high, fixed stop and take-profit, +2024-26 pooled. Best cell per rung shown; **all 156 tested combinations lost**. + +| Buy rung | Best stop/TP | Mean/trade | n | Win rate | +|---|---|---|---|---| +| −2% | −3% / +2% | −3.49% | 33,136 | 26% | +| −5% | −10% / +2% | −2.32% | 9,834 | 69% | +| −10% | −10% / +2% | **−2.29%** | 4,523 | 69% | +| −20% | −3% / +3% | −2.88% | 1,516 | — | + +With **zero costs and perfect fills**, the TP>stop family still loses +(−0.10% to −0.90%/trade). Reason: the 85% recovery statistic is measured with +no stop in the way; any fixed stop is tagged during the escalation that +precedes most recoveries, collapsing the realized win rate to ~13–30%. + +## 8. Exit-mechanism comparison, corrected entries + +| Exit | First-pullback (n=53) | All entries (n=291) | +|---|---|---| +| Indicator exits + pullback-low stop | −1.05 R | — | +| Fixed target (dip-conditioned) | — | +0.4 to +1.0% | +| Laddered scale-out + ratcheting stop | negative | negative | +| Fixed buy/stop/TP grid (§7) | negative | negative | +| Junction cycling (arm −10%, exit −10%) | — | −4.5 to −5.1% | +| **No stop; arm at +2%; trail 0.25×ATR(14,1m); flat 10:00** | **+2.42%** | **~+1.2%** | + +Per-day: ~+1.0% per qualified day; 222 of ~504 trading days qualified (44%); +~+0.46% per calendar trading day. Every fixed initial stop tested (6/8/10/12/ +15/20%) reduced returns monotonically versus no stop. + +## 9. Caveats + +- **n = 53** first-pullback trades. Approximate 95% CI on +2.42% spans roughly + −0.5% to +5.4%. The n=291 population (~+1.2%/trade) is sturdier. +- Exit parameters (0.25×ATR, +2% arm) were tuned on data overlapping both + windows; the structure, not those two constants, was validated out-of-sample. +- **Fill quality is the binding assumption.** At 5% slip-through most edges + here fall by half or vanish. Only live fills can settle it. +- Survivorship bias; float pillar unapplied historically; no options exist on + ~93% of these names; short-selling is impractical (borrow, SSR, buy-in). +- Earlier versions of this work reported a +13.96%/trade figure on n=41. That + was an optimization subset combined with an entry-definition bug and is + **superseded**; see `FINDINGS.md` §9g–9h for the correction record. diff --git a/examples/analyze_market.py b/examples/analyze_market.py new file mode 100644 index 000000000..7214106b7 --- /dev/null +++ b/examples/analyze_market.py @@ -0,0 +1,605 @@ +""" +analyze_market.py - End-to-end market analysis with Kronos. + +Three modes, one tool: + + forecast Probabilistic forecast of the next `pred_len` bars for a single + asset. Draws several sample paths and reports a mean forecast plus + quantile uncertainty bands. Saves a plot and a CSV. + + backtest Walk-forward evaluation of the *model* (not just a trading rule). + Repeatedly forecasts `pred_len` bars ahead from rolling origins and + scores the forecasts against what actually happened: directional + accuracy, MAE / RMSE / MAPE on close, plus a simple forecast-driven + long/flat strategy compared against buy-and-hold. + + signal Decision-support report. Combines the latest forecast with simple + trend and support/resistance reads into a single JSON report with a + confidence derived from the dispersion of the sample paths. + +The model weights are pulled from the Hugging Face Hub by default, but every +path accepts a local directory via --tokenizer-path / --model-path so the tool +runs fully offline once the weights have been downloaded once. + +Examples +-------- + # Forecast the next 30 bars from a CSV, averaging 30 sample paths + python analyze_market.py forecast --csv data/btc_1h.csv --pred-len 30 --samples 30 + + # Walk-forward backtest, re-forecasting every 24 bars + python analyze_market.py backtest --csv data/btc_1h.csv --pred-len 24 --step 24 + + # Signal report written to JSON + python analyze_market.py signal --csv data/btc_1h.csv --pred-len 24 --out report.json +""" +import argparse +import json +import os +import sys + +import numpy as np +import pandas as pd + +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +from model import Kronos, KronosTokenizer, KronosPredictor + +# Default Hugging Face repos for each model size. Override with --model-path / +# --tokenizer-path to load from a local directory (offline). +MODEL_REPOS = { + "mini": {"tokenizer": "NeoQuasar/Kronos-Tokenizer-2k", "model": "NeoQuasar/Kronos-mini", "max_context": 2048}, + "small": {"tokenizer": "NeoQuasar/Kronos-Tokenizer-base", "model": "NeoQuasar/Kronos-small", "max_context": 512}, + "base": {"tokenizer": "NeoQuasar/Kronos-Tokenizer-base", "model": "NeoQuasar/Kronos-base", "max_context": 512}, +} + +OHLCV = ["open", "high", "low", "close", "volume", "amount"] + + +# --------------------------------------------------------------------------- # +# Data loading +# --------------------------------------------------------------------------- # +def load_csv(path, time_col="timestamps", rename=None): + """Load an OHLCV CSV into a standardized DataFrame. + + Returns a DataFrame indexed 0..N-1 with a datetime `timestamps` column and + at least open/high/low/close columns. volume/amount are filled with zeros if + absent (Kronos treats them as optional). + """ + df = pd.read_csv(path) + if rename: + df = df.rename(columns=rename) + if time_col not in df.columns: + raise ValueError(f"Time column '{time_col}' not found. Available: {list(df.columns)}") + df = df.rename(columns={time_col: "timestamps"}) + df["timestamps"] = pd.to_datetime(df["timestamps"]) + df = df.sort_values("timestamps").reset_index(drop=True) + + missing = [c for c in ["open", "high", "low", "close"] if c not in df.columns] + if missing: + raise ValueError(f"Required price columns missing: {missing}. Available: {list(df.columns)}") + for col in ["volume", "amount"]: + if col not in df.columns: + df[col] = 0.0 + return df + + +def infer_future_timestamps(hist_ts, pred_len): + """Extend a timestamp series by `pred_len` steps using the median spacing.""" + hist_ts = pd.to_datetime(pd.Series(hist_ts).reset_index(drop=True)) + if len(hist_ts) < 2: + raise ValueError("Need at least 2 historical timestamps to infer cadence.") + step = hist_ts.diff().dropna().median() + last = hist_ts.iloc[-1] + return pd.Series([last + step * (i + 1) for i in range(pred_len)]) + + +# --------------------------------------------------------------------------- # +# Model +# --------------------------------------------------------------------------- # +def build_predictor(args): + repo = MODEL_REPOS[args.model_size] + tok_src = args.tokenizer_path or repo["tokenizer"] + mdl_src = args.model_path or repo["model"] + max_context = args.max_context or repo["max_context"] + + print(f"Loading tokenizer from {tok_src}") + tokenizer = KronosTokenizer.from_pretrained(tok_src) + print(f"Loading model from {mdl_src}") + model = Kronos.from_pretrained(mdl_src) + + predictor = KronosPredictor(model, tokenizer, device=args.device, max_context=max_context) + print(f"Predictor ready on device: {predictor.device}") + return predictor + + +def sample_paths(predictor, x_df, x_ts, y_ts, pred_len, n_samples, T, top_p, top_k): + """Draw `n_samples` independent forecast paths. + + Returns an array of shape (n_samples, pred_len, len(OHLCV)). Each call to + predict() uses sample_count=1 so the paths reflect the model's own sampling + dispersion rather than being pre-averaged. + """ + paths = [] + for i in range(n_samples): + pred = predictor.predict( + df=x_df[OHLCV], x_timestamp=x_ts, y_timestamp=y_ts, + pred_len=pred_len, T=T, top_p=top_p, top_k=top_k, + sample_count=1, verbose=False, + ) + paths.append(pred[OHLCV].values) + return np.stack(paths, axis=0) + + +# --------------------------------------------------------------------------- # +# Mode: forecast +# --------------------------------------------------------------------------- # +def summarize_paths(paths, y_ts): + """Collapse sample paths into mean + quantile bands for the close price.""" + close = paths[:, :, OHLCV.index("close")] # (n_samples, pred_len) + summary = pd.DataFrame(index=pd.DatetimeIndex(y_ts)) + summary["close_mean"] = close.mean(axis=0) + summary["close_p10"] = np.percentile(close, 10, axis=0) + summary["close_p50"] = np.percentile(close, 50, axis=0) + summary["close_p90"] = np.percentile(close, 90, axis=0) + summary["close_std"] = close.std(axis=0) + # mean OHLCV for completeness + for j, col in enumerate(OHLCV): + summary[f"{col}_mean"] = paths[:, :, j].mean(axis=0) + return summary + + +def run_forecast(args, predictor): + df = load_csv(args.csv, args.time_col, parse_rename(args.rename)) + lookback = args.lookback or min(len(df) - 1, predictor.max_context) + if lookback >= len(df): + raise ValueError(f"lookback ({lookback}) must be < rows ({len(df)})") + + x_df = df.iloc[-lookback:].reset_index(drop=True) + x_ts = x_df["timestamps"] + y_ts = infer_future_timestamps(x_ts, args.pred_len) + + print(f"Forecasting {args.pred_len} bars from {lookback} bars of history " + f"with {args.samples} sample path(s)...") + paths = sample_paths(predictor, x_df, x_ts, y_ts, args.pred_len, + args.samples, args.T, args.top_p, args.top_k) + summary = summarize_paths(paths, y_ts) + + print("\nForecast (close):") + print(summary[["close_mean", "close_p10", "close_p90", "close_std"]].head(10).to_string()) + + if args.out: + summary.to_csv(args.out) + print(f"\nSaved forecast to {args.out}") + if args.plot: + plot_forecast(x_df, summary, args.plot) + print(f"Saved plot to {args.plot}") + return summary + + +def plot_forecast(x_df, summary, path): + import matplotlib + matplotlib.use("Agg") + import matplotlib.pyplot as plt + + fig, ax = plt.subplots(figsize=(11, 5)) + ax.plot(x_df["timestamps"], x_df["close"], color="#1f77b4", label="History", linewidth=1.3) + ax.plot(summary.index, summary["close_mean"], color="#d62728", label="Forecast (mean)", linewidth=1.5) + ax.fill_between(summary.index, summary["close_p10"], summary["close_p90"], + color="#d62728", alpha=0.2, label="P10-P90 band") + ax.set_ylabel("Close") + ax.legend(loc="best") + ax.grid(True, alpha=0.3) + fig.tight_layout() + fig.savefig(path, dpi=150, bbox_inches="tight") + plt.close(fig) + + +# --------------------------------------------------------------------------- # +# Mode: signal +# --------------------------------------------------------------------------- # +def support_resistance(close, window=20): + """Most recent swing low / high over the trailing window.""" + recent = close[-window:] if len(close) >= window else close + return float(np.min(recent)), float(np.max(recent)) + + +def run_signal(args, predictor): + df = load_csv(args.csv, args.time_col, parse_rename(args.rename)) + lookback = args.lookback or min(len(df) - 1, predictor.max_context) + x_df = df.iloc[-lookback:].reset_index(drop=True) + x_ts = x_df["timestamps"] + y_ts = infer_future_timestamps(x_ts, args.pred_len) + + paths = sample_paths(predictor, x_df, x_ts, y_ts, args.pred_len, + max(args.samples, 10), args.T, args.top_p, args.top_k) + summary = summarize_paths(paths, y_ts) + + last_close = float(x_df["close"].iloc[-1]) + fc_close = float(summary["close_mean"].iloc[-1]) + implied_return = (fc_close - last_close) / last_close + + # trend from recent realized history (linear slope over lookback, normalized) + n = min(lookback, 60) + hist = x_df["close"].iloc[-n:].values + slope = np.polyfit(np.arange(n), hist, 1)[0] / (hist.mean() + 1e-9) + + # confidence: how tightly the sample paths agree at the horizon, relative to + # the size of the move. High dispersion => low confidence. + terminal = paths[:, -1, OHLCV.index("close")] + disp = terminal.std() / (last_close + 1e-9) + agreement = float(np.mean(np.sign(terminal - last_close) == np.sign(implied_return))) + confidence = round(float(agreement * np.exp(-abs(disp) * 5)), 4) + + sup, res = support_resistance(x_df["close"].values) + direction = "up" if implied_return > 0 else ("down" if implied_return < 0 else "flat") + + report = { + "asset_csv": os.path.basename(args.csv), + "as_of": str(x_ts.iloc[-1]), + "model": MODEL_REPOS[args.model_size]["model"] if not args.model_path else args.model_path, + "lookback_bars": lookback, + "horizon_bars": args.pred_len, + "last_close": round(last_close, 6), + "forecast_close": round(fc_close, 6), + "implied_return": round(implied_return, 6), + "direction": direction, + "path_agreement": round(agreement, 4), + "terminal_dispersion": round(float(disp), 6), + "confidence": confidence, + "recent_trend_slope": round(float(slope), 8), + "trend": "up" if slope > 0 else ("down" if slope < 0 else "flat"), + "support_level": round(sup, 6), + "resistance_level": round(res, 6), + } + + print(json.dumps(report, indent=2)) + if args.out: + with open(args.out, "w") as f: + json.dump(report, f, indent=2) + print(f"\nSaved signal report to {args.out}") + return report + + +# --------------------------------------------------------------------------- # +# Mode: backtest (walk-forward model evaluation) +# --------------------------------------------------------------------------- # +def run_backtest(args, predictor): + df = load_csv(args.csv, args.time_col, parse_rename(args.rename)) + lookback = args.lookback or min(predictor.max_context, 256) + pred_len = args.pred_len + step = args.step or pred_len + + origins = list(range(lookback, len(df) - pred_len, step)) + if not origins: + raise ValueError("Not enough data for a single window. Reduce --lookback or --pred-len.") + print(f"Walk-forward backtest: {len(origins)} windows " + f"(lookback={lookback}, pred_len={pred_len}, step={step})") + + rows = [] + for k, o in enumerate(origins): + x_df = df.iloc[o - lookback:o].reset_index(drop=True) + x_ts = x_df["timestamps"] + y_ts = df["timestamps"].iloc[o:o + pred_len].reset_index(drop=True) + actual = df["close"].iloc[o:o + pred_len].reset_index(drop=True).values + + paths = sample_paths(predictor, x_df, x_ts, y_ts, pred_len, + args.samples, args.T, args.top_p, args.top_k) + pred_close = paths[:, :, OHLCV.index("close")].mean(axis=0) + + last_close = float(x_df["close"].iloc[-1]) + pred_dir = np.sign(pred_close[-1] - last_close) + actual_dir = np.sign(actual[-1] - last_close) + + # per-step directional agreement across the whole horizon (not just the + # terminal bar): of the pred_len steps, how often does the predicted + # move-from-origin share the actual move-from-origin's sign. + step_dir_hit = float(np.mean(np.sign(pred_close - last_close) + == np.sign(actual - last_close))) + + rows.append({ + "origin": o, + "t": str(df["timestamps"].iloc[o]), + "last_close": last_close, + "pred_terminal": float(pred_close[-1]), + "actual_terminal": float(actual[-1]), + "pred_ret": (pred_close[-1] - last_close) / last_close, + "actual_ret": (actual[-1] - last_close) / last_close, + "dir_hit": float(pred_dir == actual_dir), + "step_dir_hit": step_dir_hit, + "mae": float(np.mean(np.abs(pred_close - actual))), + "rmse": float(np.sqrt(np.mean((pred_close - actual) ** 2))), + "mape": float(np.mean(np.abs((pred_close - actual) / (actual + 1e-9)))), + "abs_pct_err_terminal": float(abs(pred_close[-1] - actual[-1]) / (actual[-1] + 1e-9)), + "signed_pct_err_terminal": float((pred_close[-1] - actual[-1]) / (actual[-1] + 1e-9)), + }) + print(f" [{k+1}/{len(origins)}] {rows[-1]['t']} " + f"dir={'HIT' if rows[-1]['dir_hit'] else 'miss'} " + f"MAPE={rows[-1]['mape']:.3%}") + + res = pd.DataFrame(rows) + metrics = compute_backtest_stats(res, args.threshold, + meta={"symbol_csv": os.path.basename(args.csv), + "lookback": lookback, "pred_len": pred_len, + "step": step, "samples": args.samples}) + + print("\n=== Backtest statistics ===") + print(json.dumps(metrics, indent=2)) + if args.out: + res.to_csv(args.out, index=False) + with open(os.path.splitext(args.out)[0] + "_summary.json", "w") as f: + json.dump(metrics, f, indent=2) + print(f"Saved per-window results to {args.out} and summary JSON alongside it.") + return metrics, res + + +def compute_backtest_stats(res, threshold, meta=None): + """Comprehensive evaluation stats for a walk-forward backtest. + + Grouped into: + dataset - what was tested + directional - can the model call the direction of the move? + accuracy - how far off are the price forecasts (margin of inaccuracy)? + bias - does the model systematically over/under-shoot? + strategy - economics of trading the signal vs buy-and-hold + baseline - naive yardsticks to judge the above against + """ + n = len(res) + pred_ret = res["pred_ret"].values + actual_ret = res["actual_ret"].values + pred_dir = np.sign(pred_ret) + actual_dir = np.sign(actual_ret) + + # ---- directional ---- + up = pred_dir > 0 + down = pred_dir < 0 + n_up, n_down = int(up.sum()), int(down.sum()) + base_rate_up = float((actual_dir > 0).mean()) # how often it really rose + directional = { + "terminal_accuracy": round(float(res["dir_hit"].mean()), 4), + "per_step_accuracy": round(float(res["step_dir_hit"].mean()), 4), + "precision_when_predicting_up": round(float((actual_dir[up] > 0).mean()), 4) if n_up else None, + "precision_when_predicting_down": round(float((actual_dir[down] < 0).mean()), 4) if n_down else None, + "pct_calls_up": round(float(up.mean()), 4), + "pct_calls_down": round(float(down.mean()), 4), + "actual_up_rate": round(base_rate_up, 4), + "return_correlation": (round(float(np.corrcoef(pred_ret, actual_ret)[0, 1]), 4) + if n > 1 and pred_ret.std() > 1e-12 and actual_ret.std() > 1e-12 else None), + } + + # ---- accuracy (margin of inaccuracy on the terminal close) ---- + abs_pct = res["abs_pct_err_terminal"].values + accuracy = { + "terminal_mape": round(float(abs_pct.mean()), 6), + "terminal_mape_median": round(float(np.median(abs_pct)), 6), + "terminal_mape_p90": round(float(np.percentile(abs_pct, 90)), 6), + "terminal_mape_worst": round(float(abs_pct.max()), 6), + "path_mape_mean": round(float(res["mape"].mean()), 6), + "mae_mean": round(float(res["mae"].mean()), 6), + "rmse_mean": round(float(res["rmse"].mean()), 6), + } + + # ---- bias (signed: + = model overshoots / too bullish) ---- + signed_pct = res["signed_pct_err_terminal"].values + bias = { + "mean_signed_pct_err": round(float(signed_pct.mean()), 6), + "mean_predicted_return": round(float(pred_ret.mean()), 6), + "mean_actual_return": round(float(actual_ret.mean()), 6), + "return_bias": round(float((pred_ret - actual_ret).mean()), 6), + } + + # ---- strategy: long the horizon when predicted return > threshold ---- + traded = (pred_ret > threshold) + strat_ret = np.where(traded, actual_ret, 0.0) + tr = actual_ret[traded] + wins, losses = tr[tr > 0], tr[tr < 0] + eq = np.cumprod(1 + strat_ret) + peak = np.maximum.accumulate(eq) + max_dd = float(((eq - peak) / np.where(peak == 0, 1, peak)).min()) if n else 0.0 + strategy = { + "trades_taken": int(traded.sum()), + "win_rate": round(float((tr > 0).mean()), 4) if traded.any() else 0.0, + "avg_win": round(float(wins.mean()), 6) if len(wins) else 0.0, + "avg_loss": round(float(losses.mean()), 6) if len(losses) else 0.0, + "profit_factor": (round(float(wins.sum() / abs(losses.sum())), 4) + if losses.sum() != 0 else None), + "avg_return_per_window": round(float(strat_ret.mean()), 6), + "total_return": round(float(np.prod(1 + strat_ret) - 1), 6), + "return_per_window_std": round(float(strat_ret.std()), 6), + "sharpe_per_window": (round(float(strat_ret.mean() / strat_ret.std()), 4) + if strat_ret.std() > 1e-12 else None), + "max_drawdown": round(max_dd, 6), + } + + # ---- naive baselines to judge against ---- + bh = actual_ret + baseline = { + "buyhold_avg_return_per_window": round(float(bh.mean()), 6), + "buyhold_total_return": round(float(np.prod(1 + bh) - 1), 6), + "always_up_dir_accuracy": round(base_rate_up, 4), + "majority_class_dir_accuracy": round(max(base_rate_up, 1 - base_rate_up), 4), + } + + out = {"dataset": {**(meta or {}), "windows": n}} + out.update({"directional": directional, "accuracy": accuracy, + "bias": bias, "strategy": strategy, "baseline": baseline}) + return out + + +# --------------------------------------------------------------------------- # +# Mode: aggregate (higher-timeframe reconstruction test) +# --------------------------------------------------------------------------- # +# +# The premise (the "language" analogy): predicting one small candle is like +# predicting the next *word* -- mostly noise. What matters is whether a *run* of +# predicted candles aggregates into the correct higher-timeframe candle (the +# *sentence* / *paragraph*): its direction, its close, its high/low range, its +# overall shape. This mode forecasts `pred_len` low-timeframe bars, then rolls +# them up into candles at several aggregation levels and scores each level so we +# can see whether coarser candles are reconstructed *better* than the raw bars. +# +def _agg_ohlc(arr): + """Aggregate an (n, 6) OHLCV block into one candle's (open, high, low, close).""" + return (float(arr[0, 0]), float(arr[:, 1].max()), + float(arr[:, 2].min()), float(arr[-1, 3])) + + +def _interval_iou(l1, h1, l2, h2): + """Overlap-over-union of two price intervals [l,h] -- a price-zone match score.""" + inter = max(0.0, min(h1, h2) - max(l1, l2)) + union = max(h1, h2) - min(l1, l2) + return inter / union if union > 0 else 0.0 + + +def run_aggregate(args, predictor): + df = load_csv(args.csv, args.time_col, parse_rename(args.rename)) + lookback = args.lookback or min(len(df) - 1, predictor.max_context) + pred_len = args.pred_len + step = args.step or pred_len + groups = sorted({int(g) for g in args.groups.split(",") + if int(g) >= 1 and pred_len % int(g) == 0}) + if not groups: + raise ValueError(f"No group size in '{args.groups}' divides pred_len={pred_len}.") + + ts = pd.to_datetime(df["timestamps"]) + base_min = max(1, int(round(ts.diff().dropna().median().total_seconds() / 60))) + + origins = list(range(lookback, len(df) - pred_len, step)) + if not origins: + raise ValueError("Not enough data for a single window.") + print(f"Aggregation test: {len(origins)} windows, pred_len={pred_len} " + f"({base_min}min bars), aggregation levels={groups}") + + acc = {g: [] for g in groups} + for k, o in enumerate(origins): + x_df = df.iloc[o - lookback:o].reset_index(drop=True) + x_ts = x_df["timestamps"] + y_ts = df["timestamps"].iloc[o:o + pred_len].reset_index(drop=True) + paths = sample_paths(predictor, x_df, x_ts, y_ts, pred_len, + args.samples, args.T, args.top_p, args.top_k) + mean_path = paths.mean(axis=0) # (pred_len, 6) + actual = df[OHLCV].iloc[o:o + pred_len].reset_index(drop=True).values + p0 = float(df["close"].iloc[o - 1]) # last real close (decision price) + + for g in groups: + for ci in range(pred_len // g): + seg = slice(ci * g, (ci + 1) * g) + pO, pH, pL, pC = _agg_ohlc(mean_path[seg]) + aO, aH, aL, aC = _agg_ohlc(actual[seg]) + acc[g].append({ + "pcolor": np.sign(pC - pO), "acolor": np.sign(aC - aO), + "pnet": np.sign(pC - p0), "anet": np.sign(aC - p0), + "close_ape": abs(pC - aC) / (abs(aC) + 1e-9), + # range error normalized by price (stable even when a bar's + # own high-low range is ~0), not by the actual range itself. + "range_ape": abs((pH - pL) - (aH - aL)) / (p0 + 1e-9), + "iou": _interval_iou(pL, pH, aL, aH), + }) + if (k + 1) % 10 == 0: + print(f" {k+1}/{len(origins)} windows") + + levels = [] + for g in groups: + R = pd.DataFrame(acc[g]) + color_acc = float((R.pcolor == R.acolor).mean()) + net_acc = float((R.pnet == R.anet).mean()) + maj_color = float(max((R.acolor > 0).mean(), (R.acolor <= 0).mean())) + maj_net = float(max((R.anet > 0).mean(), (R.anet <= 0).mean())) + levels.append({ + "level": f"{base_min * g}min", "group_bars": g, "candles": len(R), + "color_accuracy": round(color_acc, 4), # candle green/red match + "color_baseline": round(maj_color, 4), # majority-class yardstick + "color_edge": round(color_acc - maj_color, 4), # lift over baseline + "netdir_accuracy": round(net_acc, 4), # up/down vs decision price + "netdir_baseline": round(maj_net, 4), + "close_mape": round(float(R.close_ape.mean()), 6), + "range_mape": round(float(R.range_ape.mean()), 4), + "range_iou": round(float(R.iou.mean()), 4), # price-zone overlap + }) + + out = { + "dataset": {"symbol_csv": os.path.basename(args.csv), "model": args.model_size, + "lookback": lookback, "pred_len": pred_len, "base_minutes": base_min, + "windows": len(origins)}, + "levels": levels, + } + print("\n=== Aggregation reconstruction by timeframe ===") + print(json.dumps(out, indent=2)) + if args.out: + with open(args.out, "w") as f: + json.dump(out, f, indent=2) + print(f"Saved aggregation report to {args.out}") + return out + + +# --------------------------------------------------------------------------- # +# CLI +# --------------------------------------------------------------------------- # +def parse_rename(spec): + """Parse 'csvcol=open,csvcol2=close' into a rename dict.""" + if not spec: + return None + out = {} + for pair in spec.split(","): + k, v = pair.split("=") + out[k.strip()] = v.strip() + return out + + +def build_arg_parser(): + p = argparse.ArgumentParser(description="Market analysis with Kronos (forecast / backtest / signal).") + sub = p.add_subparsers(dest="mode", required=True) + + def common(sp): + sp.add_argument("--csv", required=True, help="Path to OHLCV CSV.") + sp.add_argument("--time-col", default="timestamps", help="Name of the timestamp column.") + sp.add_argument("--rename", default=None, + help="Comma list mapping CSV columns to standard names, e.g. 'Close=close,Vol=volume'.") + sp.add_argument("--model-size", default="small", choices=list(MODEL_REPOS), help="Model capacity.") + sp.add_argument("--tokenizer-path", default=None, help="Local tokenizer dir (offline).") + sp.add_argument("--model-path", default=None, help="Local model dir (offline).") + sp.add_argument("--max-context", type=int, default=None, help="Override max context length.") + sp.add_argument("--device", default=None, help="cpu / cuda:0 / mps (auto if omitted).") + sp.add_argument("--lookback", type=int, default=None, help="History bars fed to the model.") + sp.add_argument("--pred-len", type=int, default=24, help="Bars to forecast ahead.") + sp.add_argument("--samples", type=int, default=1, help="Number of sample paths to draw.") + sp.add_argument("--T", type=float, default=1.0, help="Sampling temperature.") + sp.add_argument("--top-p", type=float, default=0.9, help="Nucleus sampling probability.") + sp.add_argument("--top-k", type=int, default=0, help="Top-k filter (0 = off).") + sp.add_argument("--out", default=None, help="Output file (CSV or JSON depending on mode).") + + f = sub.add_parser("forecast", help="Probabilistic forecast for one asset.") + common(f) + f.add_argument("--plot", default=None, help="Path to save a forecast PNG.") + + s = sub.add_parser("signal", help="Decision-support signal report (JSON).") + common(s) + + b = sub.add_parser("backtest", help="Walk-forward model evaluation.") + common(b) + b.add_argument("--step", type=int, default=None, help="Bars between forecast origins (default = pred_len).") + b.add_argument("--threshold", type=float, default=0.0, + help="Min predicted return to take a long position in the toy strategy.") + + a = sub.add_parser("aggregate", + help="Higher-timeframe reconstruction test: do predicted bars roll up into the right coarser candle?") + common(a) + a.add_argument("--step", type=int, default=None, help="Bars between forecast origins (default = pred_len).") + a.add_argument("--groups", default="1,2,3,4,6,12,24", + help="Aggregation sizes in bars (those dividing pred_len are used).") + return p + + +def main(): + args = build_arg_parser().parse_args() + predictor = build_predictor(args) + if args.mode == "forecast": + run_forecast(args, predictor) + elif args.mode == "signal": + run_signal(args, predictor) + elif args.mode == "backtest": + run_backtest(args, predictor) + elif args.mode == "aggregate": + run_aggregate(args, predictor) + + +if __name__ == "__main__": + main() diff --git a/examples/fetch_market_data.py b/examples/fetch_market_data.py new file mode 100644 index 000000000..dafb752a7 --- /dev/null +++ b/examples/fetch_market_data.py @@ -0,0 +1,299 @@ +""" +fetch_market_data.py - Download OHLCV history for US tickers/ETFs into the CSV +format that analyze_market.py expects. + +Daily data is keyless (stockanalysis.com / Nasdaq fallback). Intraday data +(1m/5m/15m/30m/1h) uses the Alpaca Market Data API — pass your credentials +via --alpaca-key / --alpaca-secret or the ALPACA_API_KEY / ALPACA_API_SECRET +environment variables. Paper-trading keys work fine. + +Output columns are: + + timestamps,open,high,low,close,volume,amount + +sorted oldest-first. `amount` (turnover) is approximated as close*volume when +the source doesn't provide it. + +Examples +-------- + # Five years of daily bars (no key needed) + python fetch_market_data.py SPY QQQ --range 5Y --outdir data + + # Intraday via Alpaca + python fetch_market_data.py SPY QQQ --interval 1h --days 90 --outdir data + python fetch_market_data.py SPY QQQ --interval 5m --days 30 --outdir data + + # Then forecast / backtest with the sibling tool: + python analyze_market.py backtest --csv data/SPY_1h.csv --model-size small --pred-len 10 +""" +import argparse +import json +import os +import sys +import time +import urllib.request +import urllib.error +from datetime import datetime, timedelta, timezone + +UA = ("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 " + "(KHTML, like Gecko) Chrome/124.0 Safari/537.36") + +RANGE_ALIASES = {"1M": "1M", "6M": "6M", "1Y": "1Y", "2Y": "3Y", "3Y": "3Y", + "5Y": "5Y", "10Y": "10Y", "MAX": "10Y", "ALL": "10Y"} + +ALPACA_INTERVALS = { + "1m": "1Min", "1min": "1Min", + "5m": "5Min", "5min": "5Min", + "15m": "15Min", "15min": "15Min", + "30m": "30Min", "30min": "30Min", + "60m": "1Hour", "1h": "1Hour", "1hour": "1Hour", "hourly": "1Hour", +} + + +def _get(url, headers=None, timeout=30): + req = urllib.request.Request(url, headers=headers or {"User-Agent": UA}) + with urllib.request.urlopen(req, timeout=timeout) as resp: + return resp.read().decode("utf-8", "replace") + + +# --------------------------------------------------------------------------- # +# Daily sources (keyless) +# --------------------------------------------------------------------------- # +def fetch_stockanalysis(symbol, rng): + token = RANGE_ALIASES.get(rng.upper(), rng) + url = (f"https://stockanalysis.com/api/symbol/e/{symbol.upper()}" + f"/history?range={token}&period=Daily") + payload = json.loads(_get(url)) + if payload.get("status") != 200 or "data" not in payload: + raise ValueError(f"stockanalysis returned status={payload.get('status')}") + rows = [] + for d in payload["data"]: + vol = float(d.get("v") or 0.0) + close = float(d["c"]) + rows.append({ + "timestamps": d["t"], + "open": float(d["o"]), "high": float(d["h"]), + "low": float(d["l"]), "close": close, + "volume": vol, "amount": round(close * vol, 2), + }) + rows.sort(key=lambda r: r["timestamps"]) + return rows + + +def fetch_nasdaq(symbol, rng): + url = (f"https://api.nasdaq.com/api/quote/{symbol.upper()}/historical" + f"?assetclass=etf&fromdate=2016-01-01&todate=2099-01-01&limit=99999") + payload = json.loads(_get(url, headers={"User-Agent": UA, "Accept": "application/json"})) + table = (payload.get("data") or {}).get("tradesTable") or {} + rows = [] + for d in table.get("rows", []): + def num(x): + return float(str(x).replace("$", "").replace(",", "")) if x not in (None, "") else 0.0 + mm, dd, yy = d["date"].split("/") + close = num(d.get("close")) + vol = num(d.get("volume")) + rows.append({ + "timestamps": f"{yy}-{mm}-{dd}", + "open": num(d.get("open")), "high": num(d.get("high")), + "low": num(d.get("low")), "close": close, + "volume": vol, "amount": round(close * vol, 2), + }) + rows.sort(key=lambda r: r["timestamps"]) + return rows + + +# --------------------------------------------------------------------------- # +# Intraday via Alpaca +# --------------------------------------------------------------------------- # +def fetch_alpaca(symbol, timeframe, api_key, api_secret, days=60): + """Paginated intraday OHLCV from the Alpaca Market Data v2 API. + + `timeframe` is an Alpaca token (1Min/5Min/15Min/30Min/1Hour). Fetches the + last `days` calendar days, paginating via next_page_token (Alpaca caps + responses at 10 000 bars). + """ + end = datetime.now(timezone.utc) + start = end - timedelta(days=days) + base = (f"https://data.alpaca.markets/v2/stocks/{symbol.upper()}/bars" + f"?timeframe={timeframe}" + f"&start={start.strftime('%Y-%m-%dT%H:%M:%SZ')}" + f"&end={end.strftime('%Y-%m-%dT%H:%M:%SZ')}" + f"&limit=10000&feed=iex&adjustment=raw") + headers = { + "APCA-API-KEY-ID": api_key, + "APCA-API-SECRET-KEY": api_secret, + } + rows = [] + url = base + page = 0 + while url: + payload = json.loads(_get(url, headers=headers)) + for b in payload.get("bars") or []: + close = float(b["c"]); vol = float(b["v"]) + rows.append({ + "timestamps": b["t"].replace("T", " ").replace("Z", ""), + "open": float(b["o"]), "high": float(b["h"]), + "low": float(b["l"]), "close": close, + "volume": vol, "amount": round(close * vol, 2), + }) + npt = payload.get("next_page_token") + if npt: + page += 1 + url = base + f"&page_token={npt}" + time.sleep(0.3) + else: + url = None + rows.sort(key=lambda r: r["timestamps"]) + return rows + + +# --------------------------------------------------------------------------- # +# Crypto via Alpaca (v1beta3) +# --------------------------------------------------------------------------- # +def fetch_alpaca_crypto(symbol, timeframe, api_key, api_secret, days=60): + """Paginated crypto OHLCV from Alpaca's v1beta3 crypto endpoint. + + `symbol` should be like BTC/USD, ETH/USD, etc. + """ + end = datetime.now(timezone.utc) + start = end - timedelta(days=days) + base = (f"https://data.alpaca.markets/v1beta3/crypto/us/bars" + f"?symbols={symbol.upper()}" + f"&timeframe={timeframe}" + f"&start={start.strftime('%Y-%m-%dT%H:%M:%SZ')}" + f"&end={end.strftime('%Y-%m-%dT%H:%M:%SZ')}" + f"&limit=10000") + headers = { + "APCA-API-KEY-ID": api_key, + "APCA-API-SECRET-KEY": api_secret, + } + rows = [] + url = base + while url: + payload = json.loads(_get(url, headers=headers)) + bars = payload.get("bars") or {} + for sym_key, bar_list in bars.items(): + for b in bar_list: + close = float(b["c"]); vol = float(b["v"]) + rows.append({ + "timestamps": b["t"].replace("T", " ").replace("Z", ""), + "open": float(b["o"]), "high": float(b["h"]), + "low": float(b["l"]), "close": close, + "volume": vol, "amount": round(close * vol, 2), + }) + npt = payload.get("next_page_token") + if npt: + url = base + f"&page_token={npt}" + time.sleep(0.3) + else: + url = None + rows.sort(key=lambda r: r["timestamps"]) + return rows + + +# --------------------------------------------------------------------------- # +# Dispatch +# --------------------------------------------------------------------------- # +CRYPTO_SYMBOLS = {"BTC", "ETH", "SOL", "DOGE", "AVAX", "LINK", "DOT", "ADA", + "XRP", "LTC", "MATIC", "UNI", "AAVE", "SHIB", "BCH"} + + +def _is_crypto(symbol): + upper = symbol.upper().replace("/USD", "").replace("-USD", "") + return upper in CRYPTO_SYMBOLS or "/" in symbol + + +def fetch(symbol, rng, interval="daily", alpaca_key=None, alpaca_secret=None, days=60): + if not alpaca_key or not alpaca_secret: + if interval != "daily": + raise RuntimeError( + "Intraday data needs Alpaca API credentials. Pass --alpaca-key " + "and --alpaca-secret (or set ALPACA_API_KEY / ALPACA_API_SECRET).") + if _is_crypto(symbol): + raise RuntimeError( + "Crypto data needs Alpaca API credentials. Pass --alpaca-key " + "and --alpaca-secret (or set ALPACA_API_KEY / ALPACA_API_SECRET).") + + if _is_crypto(symbol): + crypto_sym = symbol.upper() if "/" in symbol else f"{symbol.upper()}/USD" + tf = ALPACA_INTERVALS.get(interval.lower(), "1Day" if interval == "daily" else None) + if not tf: + raise ValueError(f"Unsupported interval '{interval}'.") + rows = fetch_alpaca_crypto(crypto_sym, tf, alpaca_key, alpaca_secret, days=days) + if rows: + print(f" {crypto_sym}: {len(rows)} {tf} bars via alpaca-crypto " + f"({rows[0]['timestamps']} -> {rows[-1]['timestamps']})") + return rows + raise RuntimeError(f"Alpaca returned no crypto bars for {crypto_sym} {tf}") + + if interval != "daily": + tf = ALPACA_INTERVALS.get(interval.lower()) + if not tf: + raise ValueError(f"Unsupported interval '{interval}'. " + f"Use daily or one of: {sorted(set(ALPACA_INTERVALS))}") + rows = fetch_alpaca(symbol, tf, alpaca_key, alpaca_secret, days=days) + if rows: + print(f" {symbol}: {len(rows)} {tf} bars via alpaca " + f"({rows[0]['timestamps']} -> {rows[-1]['timestamps']})") + return rows + raise RuntimeError(f"Alpaca returned no bars for {symbol} {tf}") + + errors = [] + for name, fn in (("stockanalysis", fetch_stockanalysis), ("nasdaq", fetch_nasdaq)): + try: + rows = fn(symbol, rng) + if rows: + print(f" {symbol}: {len(rows)} bars via {name} " + f"({rows[0]['timestamps']} -> {rows[-1]['timestamps']})") + return rows + errors.append(f"{name}: empty") + except Exception as e: # noqa: BLE001 - report and try next source + errors.append(f"{name}: {e}") + raise RuntimeError(f"all sources failed for {symbol}: {'; '.join(errors)}") + + +def write_csv(rows, path): + cols = ["timestamps", "open", "high", "low", "close", "volume", "amount"] + os.makedirs(os.path.dirname(os.path.abspath(path)), exist_ok=True) + with open(path, "w") as f: + f.write(",".join(cols) + "\n") + for r in rows: + f.write(",".join(str(r[c]) for c in cols) + "\n") + + +def main(): + p = argparse.ArgumentParser(description="Fetch OHLCV CSVs for analyze_market.py.") + p.add_argument("symbols", nargs="+", help="Tickers, e.g. SPY QQQ AAPL") + p.add_argument("--range", default="5Y", help="Daily history window: 1M/6M/1Y/3Y/5Y/10Y (default 5Y).") + p.add_argument("--interval", default="daily", + help="Bar size: daily (keyless) or intraday 1m/5m/15m/30m/1h (Alpaca).") + p.add_argument("--alpaca-key", default=os.environ.get("ALPACA_API_KEY"), + help="Alpaca API key ID (or set ALPACA_API_KEY env var).") + p.add_argument("--alpaca-secret", default=os.environ.get("ALPACA_API_SECRET"), + help="Alpaca API secret key (or set ALPACA_API_SECRET env var).") + p.add_argument("--days", type=int, default=60, + help="Calendar days of intraday history to fetch (default 60).") + p.add_argument("--outdir", default="data", help="Directory to write .csv into.") + args = p.parse_args() + + suffix = "" if args.interval == "daily" else f"_{args.interval.lower().replace('/', '')}" + print(f"Fetching {len(args.symbols)} symbol(s), interval={args.interval}") + failures = [] + for sym in args.symbols: + try: + rows = fetch(sym, args.range, interval=args.interval, + alpaca_key=args.alpaca_key, alpaca_secret=args.alpaca_secret, + days=args.days) + safe_sym = sym.upper().replace("/", "") + out = os.path.join(args.outdir, f"{safe_sym}{suffix}.csv") + write_csv(rows, out) + print(f" -> wrote {out}") + except Exception as e: # noqa: BLE001 + print(f" !! {sym} failed: {e}", file=sys.stderr) + failures.append(sym) + if failures: + sys.exit(f"Failed: {', '.join(failures)}") + + +if __name__ == "__main__": + main() diff --git a/research/CODEX.md b/research/CODEX.md new file mode 100644 index 000000000..f2327e47e --- /dev/null +++ b/research/CODEX.md @@ -0,0 +1,105 @@ +# THE CODEX — distilled rulebook (v1, 2026-07-11) + +FINDINGS.md is the lab notebook. This is the rulebook: what we know, what we trade, +and how the pieces compose. Everything here survived both symbols + both time halves +unless marked otherwise. + +## I. THE LAWS (cross-confirmed market structure) + +L1. TIMEFRAME LAW — Edges scale with timeframe. Daily signals earn 15-90bp/trade and + survive costs; intraday (1m-1h) versions of the same structure earn 2-10bp and die + at ~4bp costs. The market is efficient in proportion to how fast you trade it. +L2. VOLUME LAW (6 domains) — Loud volume = initiative (moves continue while fed). + Quiet = coasting (drifts stall/revert). Quiet weakness reverts; violent weakness + continues. Loud arrival at resistance breaks it; quiet arrival holds. +L3. MAGNITUDE =/= DIRECTION — Compression (tight BB) says nothing is coming; expansion + (wide BB) says a ~2x move is loaded but NOT which way. Volatility is predictable; + direction mostly is not. Trade WHEN-signals with vol structures, WHICH-WAY signals + with direction. +L4. TREND-BREAK LAW — Breaks/crosses END regimes; they do not start opposite ones. + Post-break drift ~ 0 at every TF tested. Never trade a break as a reversal entry. +L5. CONFIRMATION TAX — Confirmation is always bought with retracement (~linearly). + Mean reversion wants immediacy; waiting for reclaim/confirm costs 3-10bp. +L6. OVERNIGHT DRIFT — ~2/3 of index return accrues close->open. Overnight longs ride + a tailwind; intraday-only shorts fight it. (Why down-edges intraday stay small.) +L7. ASYMMETRY OF BREAKS — Index up-breaks fade (get sold); down-breaks travel briefly + then bounce. The fast flush is real but reverts: flush low holds rest-of-day ~70%. +L8. GEOMETRY > WIN RATE — WR without payoff geometry is decoration (RSI2-Mod: 66.7% WR, + PF 0.56). Score every idea on the full distribution, not the hit rate. +L9. LEVERAGE LAW — Leverage scales edge AND pain ~2.7x (TQQQ). Long-inverse (SQQQ) + is structurally dead. Crisis buying wants shares/LEAPS, never hold-forever 3x. +L10. CONTEXT LAW — Condition x context beats condition alone, always. Single-variable + tests understate real confluence; test the JOINT state. + +## II. INTRADAY TELLS (real structure, not standalone trades — use as state/context) + +T1. SMA9-cross countdown (5m): P(next-bar cross) spans 3% -> 40% by state: + distance to line + counter-trend closes + EMA9 lead/lag + RSI + quiet volume. + EMA9-opposed + 2 counter closes = endgame (38-44%); EMA9-leading + 0 counter = safe (3%). + USE: exit timing / chase avoidance. Never an entry (L4). +T2. Compression gauge (5m): BB-width tercile = move-size forecast (L3). + Tight = dead tape (MFE ~0.08%); wide = loaded (~0.22-0.29%). USE: when-filter. +T3. Flush-and-hold (5m): early loud down-spike then quiet upward float = low is in + ~70-73%. No afternoon snap-back (46-49% = coin flip). USE: fade flushes, don't chase. +T4. Volume-surge downside break of tight range: fast flush, hits -0.3% first 62-68%, + but reverts by 60min (P(down at exit) 42%). Too small for option premium. + USE: scalp tell / entry-timing for daily MR signals (buy the flush into an IBS day). + +## III. THE DEPLOYED BOOK (daily signals — where the edge actually pays) + +WEIGHTS: AGG-MAX locked 2026-07-13 (user call: maximize, paper phase). + A 55% / B 10% / C+ 20% / D 15%. Backtest ~25%/yr, realistic 15-19%, worst DD -35-45%. + (Rejected: 100% A-TQQQ ~37% backtest -- single-family fragility, -67% DD, no powder.) +Sleeve A (55%) — Equity MR pool via TQQQ at pool signals (QQQ signals, TQQQ execution, + 1/3 size rule retired under AGG-MAX -- full sleeve, sized BY the -67% DD math), one + position at a time, priority: IBS<0.20 (graded) > DoubleSeven > 5DayLow-A. + Exit IBS>0.70 / D7 rules. No stops. Next-open fills. Grade v2 (vol<=1.2x, + SMA20>SMA50, Friday +1, SKEW +0.5; RSI<35, 3+ red, wide range -1): skip <0. +Sleeve B (10%) — Commodity trend: GLD + USO 10/40 daily cross, long/flat. ~8 fires/yr. +Sleeve C+ (20%) — Crypto down-spike H2: vol>=2x 30d mean AND red day on + BTC/ETH/DOGE/LINK -> long at signal close (paper: next practical fill), hold 2 days, + no stops, 25% of sleeve per coin, ~60-65 fires/yr. Final bt: ann +19.5%, maxDD -17%, + Sharpe 0.92, every K/H cell positive. DECAY FLAG: 2024-26 +0.58%/tr vs 2021-23 + +2.05%; 2026 YTD negative. Review at 25 forward fires. (BTC D7 retired into this.) +Sleeve D (15%) — Cash. Dry powder for Sleeve E. +Sleeve E (event) — VIX>35 first cross: buy QQQ shares/LEAPS (+14-25%/3-6mo, 92% WR, + ~5 independent crises). TQQQ small + exit-on-recovery only. Never SQQQ. +Options overlay (build phase): short put spreads on A-tier + high-WR daily signals. + High-WR small-move edges SELL premium; they never buy it (move < premium, T4 proof). + +PENDING DECISION: conservative weights above vs aggressive (A-via-TQQQ 45/B 15/C 15/D 25). + +## IV. SLEEVE C+ CANDIDATE — crypto volume-spike (user's independent research) + +Source: harrisonm23-byte/Crypto_Data_Project. Daily, 9 coins, 2019-2026, yfinance. + Down-spike (vol>=2x 30d, red day) -> hold 2d: excess +3.06%, t=4.67, stable OOS. + Up-spike (green day) -> hold 10d: excess +6.11%, t=3.46, stable OOS. + Combined Sharpe 1.65, positive every year, beta~0 to BTC. +Maps to our laws: down-spike H2 = L2 flush-reverts (daily scale); up-spike H10 = L2 +loud-continues. Daily TF = L1 compliant. Two-signal structure = the same MR+trend +pair every survivor system converges to. +REPLICATION (2026-07-11, Alpaca data 2021+, independent source): + CORE (their coins on Alpaca: BTC/ETH/DOGE/LINK): + down-spike H2: excess +1.15%, t=3.05 -> REPLICATES + up-spike H10: excess +2.77%, t=2.25 -> replicates (weaker) + de-overlapped trades net 20bps: down n=350 mean +1.21% WR 54%; up n=221 mean + +3.52% but MEDIAN -0.04% WR 50% (all skew -- a few big winners carry it) + OUT-OF-UNIVERSE (6 Alpaca coins NOT in their study: AVAX/SHIB/LTC/BCH/UNI/AAVE): + down-spike: +0.44% excess, t=1.39 (weakly positive, WR 51%) + up-spike: -0.20% excess, t=-0.29 (DEAD) +VERDICT: down-spike H2 is the robust half (significant on 2 data sources, 2 windows, + never negative anywhere -- textbook L2 flush-reverts). Up-spike H10 is real on the + studied universe but universe-fragile + median~0: watchlist, not deploy. +DEPLOY (Sleeve C+): down-spike H2 on BTC+ETH+DOGE+LINK, ~60-65 fires/yr (~1.2/wk), + next-day-open fills, no stops, hold 2 days. Up-spike H10: paper-watch only. + +## V. METHOD (how we find things now) + +1. DISCOVERY MODE first: map the response surface (MFE/MAE distributions, winners + uncapped, all knobs swept). No kill-verdicts from single operationalizations. +2. De-overlap before believing any cell (overlapping bars fake skew). +3. THEN the gauntlet, only for deploy candidates: both symbols, both halves, + n>=50, PF>=1.5 full / >=1.2 halves, beats costs on ITS payoff structure + (shares linear vs options convex — score on how it's actually monetized). +4. Every kill must state WHICH encoding died, not that the pattern is false. +5. Paper-log forward, judge on 30+ closed trades. diff --git a/research/FINDINGS.md b/research/FINDINGS.md new file mode 100644 index 000000000..c3bafbb5c --- /dev/null +++ b/research/FINDINGS.md @@ -0,0 +1,731 @@ +# Trading Research Ledger + +Frozen baseline + running findings. All results: Alpaca SIP data, adjustment=split/all, +signals on completed bars, fills next open, slippage 0.02%/side unless noted. +Discipline: a finding counts only if it (1) replicates on QQQ AND SPY, (2) holds on both +time halves (2017-2021 / 2022-2026), (3) has a mechanism story. + +## 1. FROZEN BASELINE GRID (pre quant-readings, 2026-07-05) + +Daily strategies, window 2017-04-01 -> 2026-07-01: + +``` +Strategy Sym TF Ann% WR% PF MaxDD AvgDD MedDD AvgTr MedTr Hold #Tr +DoubleSeven SPY 1D 5.1 74.2 1.89 -11.8 -2.45 -1.13 0.544 1.137 7.8 89 +DoubleSeven QQQ 1D 9.2 75.0 2.22 -13.6 -3.06 -1.27 0.872 1.279 7.3 96 +IBS<.20/.70 SPY 1D 7.0 63.2 1.53 -16.2 -1.94 -0.66 0.238 0.349 2.6 277 +IBS<.20/.70 QQQ 1D 14.6 66.3 1.84 -15.6 -2.16 -0.89 0.454 0.612 2.4 291 +5DayLow-A SPY 1D 3.5 62.6 1.46 -12.5 -2.49 -1.06 0.189 0.384 1.7 179 +5DayLow-A QQQ 1D 8.6 64.9 1.83 -11.5 -2.20 -1.07 0.390 0.494 1.6 205 +TripleRSI SPY 1D 3.4 75.0 2.75 -8.5 -2.60 -1.37 0.787 1.089 5.2 40 +TT-A (Mon) SPY 1D 2.4 55.9 1.40 -7.7 -1.89 -1.17 0.131 0.091 1.0 179 +TT-C (Mon) SPY 1D 2.6 71.2 1.69 -14.9 -2.33 -1.13 0.317 0.519 2.7 80 +LowerBand-B QQQ 1D 4.9 72.3 1.85 -12.6 -2.80 -1.14 0.568 1.008 3.8 83 +IBS+RSI21 SPY 1D 1.2 66.3 1.24 -16.3 -4.01 -2.20 0.161 0.501 1.9 83 +RSI2-Mod-A SPY 1D -2.0 66.7 0.56 -31.8 -6.61 -1.67 -0.770 0.890 7.0 21 +Buy&Hold SPY 1D 15.0 -- -- -33.8 -1.68 -0.48 -- -- -- -- +Buy&Hold QQQ 1D 21.1 -- -- -35.0 -2.71 -0.82 -- -- -- -- +TQQQ: IBS 39.4%/-41.6dd | 5DL 25.2%/-35.0 | D7 12.3%/-71.0 (leverage scales edge AND pain ~2.7x) +SQQQ: ALL strategies negative (PF 0.58-1.08). Long-inverse mean reversion structurally dead. +``` + +KEEPERS (paper-trading spec): IBS<0.20/0.70 QQQ (+TQQQ at 1/3 size), DoubleSeven QQQ, +5DayLow-A QQQ. No stops. No intraday entry confirmation. Optional dip-limit open*0.9975. + +CONTEXT GRADE v1 (frozen): at signal, +1 each: volume<=1.2x20d, SMA20>SMA50; +-1 each: RSI14<35, 3+ red closes, range>1.5xATR14. +GREEN(+2): WR 71.6%/69.0% (QQQ/SPY). RED(<0): 38-50% WR, negative -> SKIP. +Time-split: GREEN 2017-21 = 75-78% WR (passes); 2022-26 = 61-63% (real but decayed). + +## 2. VALIDATED PRINCIPLES + +- Condition x context always beats condition alone ("intonation" model) +- Multi-TF agreement helps HOLDS; earliest unconfirmed signal has the SCALP juice + (alignment = maturity; confirmation is always bought with retracement, ~linearly) +- Quiet weakness reverts (62% type); violent/high-volume weakness continues +- Trend-break signals END regimes, they do not start opposite ones (post-break drift ~0) +- Best intraday break marker: close above BB midline (58% no-new-low). RSI bullish + divergence is an ANTI-signal at 5m (24.5%) +- Down-walk breaks end downtrends (46.6% cont.); up-walk breaks are pauses (52.6% cont.) +- Overnight drift: ~2/3 of index return accrues close->open (SPY +10.0%/4.8%, + QQQ +13.4%/7.1% overnight/intraday ann). Overnight-holding longs ride it; + intraday-only shorts fight it. +- Friday IBS signals: +11-12pts WR, both symbols, both halves (stable adder) +- SKEW 5d-rise: +3-5pts, both symbols, 3 independent appearances (weak stable adder) +- Conditional-open 2x2 (2026-07-15, both symbols, halves stable): prev-DOWN + gap-DOWN + is the ONLY quadrant with intraday edge (57%/56% O->C up, +0.07/+0.10%). Prev-UP + + gap-DOWN = NO edge (dip only buyable after prior weakness — context law again). + Gap-fill ladder (P touch prev close): -0.2..0% gap = 88-89%; -0.5..-0.2% = 69-80%; + -1..-0.5% = 36-47%; <-1% = 23-26% (big gaps: biggest O->C bounce +0.17/+0.36% but + green close only 11-19%). Day shape on down-down: LOW early (45% first hour, med + ~90min), HIGH late (med 2-3.5h, 28-34% last hour) -> buy first-hour weakness, + sell afternoon strength. +- Tight stops (0.15-0.25%) destroy sub-10bp edges. Mean reversion wants immediacy + (buy the open), not confirmation. +- Bollinger-band WIDTH is a MAGNITUDE dial, not a direction (2026-07-10 discovery mode, + SMA9/lowerBB corridor, both symbols both halves): wide bands -> 60min MFE ~0.22%/0.29% + (SPY/QQQ) vs ~0.12%/0.16% normal (~2x range); tight bands -> ~0.08% (dead). Dwell/coil + time barely moves it. The move is SYMMETRIC (skew ~-3% in-state; the +11% "long-coil" + cell was an OVERLAP artifact -> de-overlapped race = 50/50, halves disagree). Compression + = a VOLATILITY signal (options/straddle lens or confluence FILTER for "when a move is + loaded"), never a directional share trade. Corridor state itself is symmetric-to-bearish. + Release from corridor breaks UP 63-64% but up-release is choppy; the rarer DOWN-break is + the one that travels (drift -0.02%, bigger MFE). METHOD NOTE: kill-filter would've logged + this "no edge, debunked"; discovery mode extracted a usable WHEN-fact instead. +- Volume-surge breakout from a TIGHT range (2026-07-10, both symbols): real but weak + and ASYMMETRIC. Base tight-range break continues ~55%; surge (dvol>=2.5) lifts SPY to + 62% (QQQ 55%). BUT ~88% of breakouts never travel 0.3% in 60min (chop); drift ~0; + moves tiny (favMFE ~0.08-0.12%). The edge is a DOWNSIDE edge: surge DOWN-break + continues SPY 68% / QQQ 62%; surge UP-break FADES (QQQ 45%, mean-reverts). Consistent + with index up-drift: downside momentum bursts carry, upside breaks get sold. Live + candidate = surge downside break via PUT convexity (directional hit + defined risk), + needs down-subset half-split + option-cost score before promotion. + DRILLED (down-subset, n=419 SPY/502 QQQ): the flush is FAST not sustained -- hits -0.3% + first on the movers, but P(still down at 60min)=42-43% (< coin flip) -> it BOUNCES. + Put breakeven needs premium <6-11bp (hold) or <13-23bp (perfect-low exit); real 0DTE + puts cost multiples -> NOT tradeable via options (move < premium). Verdict: discretionary + SCALP tell only; the reverting half aligns with flush-low-holds-70% + daily MR book + (fade the flush, don't chase). Options overlay stays on the DAILY high-WR signals. +- SMA9 crosses (5m) are highly PREDICTABLE but carry NO post-cross edge (2026-07-10, + n=97k events/symbol, both symbols+halves). P(next bar closes across) spans 3% -> + ~40% by state: close-to-line distance (>0.15% away = 3-5%; within 0.03% = 35-44%), + counter-trend closes (0 = 7%; 2 = 32-36%), EMA9 already opposed (24-30%) vs leading + (8-9%), RSI trendward, and QUIET volume crosses more than loud (loud = trend feeding, + 4th confirmation of the volume law). Best combo: EMA9-opposed + 2 counter closes = + 38-44% vs EMA9-leading + 0 counter = 3% (13x spread, stable halves). BUT fwd 30-60m + after cross ~= 0bp vs baseline -> trend-break law holds at 5m: crosses END drifts, + never start reversals. Use as exit-timing / chase-avoidance state, never as an entry. + +## 3. DEBUNKED (tested, dead) + +- Overbought short (VWAP+RSI+upper BB), all TFs -- worse than baseline intraday +- ORB 15-min breakout as marketed -- every config negative both symbols (best PF 0.99) +- SMA9-kiss short in band-walks (21.8% WR); first-break entries (~0 edge) +- VWAP "magnet" close (base rate illusion: 32% of all days close within 0.10%) +- MACD/RSI plateau "roundness" (indicator artifact, 51-53% everywhere) +- Intraday (5m-1h) versions of daily mean reversion (edge 2-4bp < costs) +- CBOE SKEW level for next-day timing (no pattern) +- Waiting for VWAP-reclaim before entering daily longs (-3 to -10bp) +- Turnaround-Tuesday on SQQQ / anything long SQQQ +- Warrior chart patterns, GENERIC LIQUID TRACK ONLY (2026-07-15, user's spec+detectors, + SPY+QQQ 5m 2016-2026 + SPY 1m 2022-26, next-bar-open + their R-sim, vs matched + baseline): ALL NEGATIVE-TO-NULL on index ETFs. 5-candle exhaustion reversal: loses + BOTH sides both symbols (PF 0.71-0.77, races 44-47% vs 48-49% base) = confirmation + tax + trend-break law (the "first new high" buys the retracement, starts nothing). + Flat-top breakout (3-touch): PF 0.94-0.96, drift 0 = unconditioned breakouts dead + without the volume filter (S/R chapter redux). Failed-flat-top bull-trap short: + PF 0.42-0.47 (intrabar fill caveat noted; next-bar-open also negative). 10-candle + 1m reversal: n=254, faint long whisper (55% race, +1.4bp) < costs. NOT TESTED: + track 2 (small-cap premarket gappers, the guide's native habitat) — requires + dynamic gapper universe build; verdict explicitly does NOT extend there. + TRACK 2 COMPLETED (2026-07-16): 5,384 gapper events (gap>=7%, $1.5-20, >=$5M traded, + top-8/day, 2023-07->2026-07, 1m bars incl premarket, 30bps costs, next-bar-open). + 72,343 signals. Even in native habitat, mechanical patterns LOSE: failed-flat-top + short -0.52%/tr (n=30k); rev5 5m both sides -0.3 to -0.8%; rev10 1m short -1.26% + (never short gapper strength); flat-top long mean 0.0% but MEDIAN -0.48% (lottery + structure: most fade, rare monsters carry the mean; medMFE 3.3%). ONE whisper: + gap-and-go PMH break on MODERATE gappers (7-12%): +1.43%/tr n=504 — but year- + unstable (+0.6/-0.0/+0.7/-1.6) and extreme gappers (>25%) FADE the break (-0.61%). + CAVEATS: survivorship FLATTERS longs (still lose -> damning); 30bps generous for + $3 stocks; halts/borrow unmodeled (shorts worse in practice). CONCLUSION: the + guide's edge, if real, lives in discretionary selection + loss-cutting, not the + mechanical entries. Chapter closed; nothing deploys. +- VWAP-rollover fade (EMA9 up->down turn while extended above a still-rising VWAP, + target VWAP tag, 0.25% stop): structure REAL (morning rollovers tag VWAP 60-66%, + both symbols) but ALL 24 cells net-negative — win capped at distance-to-VWAP (~0.12%) + vs 0.25% stop + 4bp costs. Farther from VWAP = MORE continuation (fuel, not stretch). + Kept as discretionary screen only, not a system. +- Early loud spike -> quiet counter-float -> afternoon snap-back in spike direction: + NO (2026-07-10, 5m dvol deseasonalized by time-of-day). Pure form barely exists + (~6 days/decade — spike days stay loud, 95% print another 2x bar). Relaxed form + (n=182 SPY / 263 QQQ float-against days): afternoon goes spike-direction only + 46-49% (coin flip), halves flip sign = noise. The float direction mildly persists + instead. USEFUL BYPRODUCT: after an early loud DOWN-spike that then floats up + quietly, the morning flush low holds the rest of day ~70-73% (revisit only 27-30%) + -> loud early flush + quiet recovery = the low is probably in (climax reading). + +## 4. THE GOAL (operationalized) + +Signal set: fires >=2-3x/week combined; per-signal WR 95% CI LOWER bound >=60%; +median favorable move >=0.3% within 1-2 sessions; survives both-symbol + time-split + +forward paper log; positive expectancy via defined option structure (put-spread family). + +## 5. LOOP STATE (2026-07-05) + +Candidates in gauntlet: +- Gap-up continuation: gap>+0.5% -> P(open->close up)=62.4% n=399 SPY; best cell + gap>+0.5% + first-30m dip>0.2% -> rest-of-day +0.28%, 59% (n=83). NEEDS: QQQ + time-split. +- Grade v2 = v1 + Friday(+1) + SKEW-rising(+0.5): needs re-time-split. +- Corridor v2 (walk-confirm entry, target exits, context filters): queued. +- ToM + gap-fill stats: bugged first pass, re-run queued. + +Live forward test: long QQQ from 725.71 (7/1 IBS signal), -1.79% @ 7/2 close, exit on +IBS>0.70 close. Next session 2026-07-06. + +## 6. OPTIONS LAYER + +Sim (BS, modeled IV, 2% costs): short put spread (ATM/-2%) robust across IV regimes +(+8-12% of max risk per trade, WR 66-70%) on TT-A and 5DayLow signals. Long calls +only viable in spike-exit mode; hold-to-expiry negative. High-WR small-move edges +feed premium SELLING. Needs real-chain validation in paper account. + +## 7. COMMODITY TREND SLEEVE (gauntlet PASSED 2026-07-05 -> DEPLOYED KEEPER #4) + +MA-cross long/flat on commodity ETFs, 10/40 daily (pre-registered pair; edge is +parameter-robust across 5/20 -> 20/100): +- USO: PF 2.29 both halves (1.85/1.96), +225% total vs B&H +39%. Ex-2020-episode + +223% -> NOT a one-event fluke. Strongest case. +- GLD: PF 2.69 full; regime-loaded (flat 2016-21, +98% 2022-26). Keep with caveat. +- SLV: marginal (PF 1.90, recent-loaded). Watchlist only. +- UNG: FAILS everything (PF<0.8) -- contango decay too fast for long-only trend. Excluded. +Deploy spec: GLD + USO, 10/40 daily cross, long/flat, next-open fills. ~8 fires/yr, +multi-week holds, uncorrelated with equity mean-reversion set (portfolio diversifier, +not a frequency fix). PROMOTED to deployed keeper #4 at reduced sizing (n=38-43 trades +per asset vs 200-300 for equity keepers -> wider uncertainty, smaller allocation). +Killed post-goal: gap-up continuation (62% full-sample -> 51-54% recent half). +Grade v2 (v1 + Friday+1 + SKEWrising+0.5, A-tier >=2.5): recent-half WR 68-74%, ++0.65%/trade, ~2 fires/mo. Best signal to date. + +## 8. SUPPORT/RESISTANCE ZONES (v1 1m + v2 5m, 2026-07-05) + +v2 zones: clustered pivots, VALID after >=2 touches >=60min apart, ATR-scaled width, +close-confirmed breaks, retest tracking. SPY 5m 2016-2026, 9,168 events. +- TOUCH-COUNT FOLKLORE INVERTED: more touches = weaker level, monotone both sides + (support 45.2->43.3->41.5% by touch#; resistance 50.5->48.6->46.1%) +- Support tests: NULL even with proper zones (44.4% vs 45.0% base). At 1m: below chance. +- Resistance test x LOUD volume (>1.5x): holds only 43.0% -> P(break up)=57.0% vs 45.0% + base = +12pts, largest intraday cell ever measured; EV ~3.5bp vs 4bp costs = breakeven. + Quiet-vol arrival at resistance: holds 52.6%. Volume law's 4th independent domain. +- Break->retest->go: DEBUNKED (flip holds 52.5% vs 55.0% base) +- Support breaks close-confirmed do NOT out-continue baseline (confirmation eats the move) +- Rulebook context adopted: fresh zones > tested zones; never fade loud volume into a + level; retests are not confirmation. + +## 9. MOMENTUM FIRST-PULLBACK, small-cap gappers (backtest v1, 2026-08-11) + +Ross Cameron pattern, mechanized in momentum_spec_v1.md (frozen BEFORE testing). +Universe: open-gap >=10%, open $2-20, morning relvol >=5x by 09:45, top-6/day, +2025-08 -> 2026-08, n=99 trades (float pillar NOT applied - no historical float; +survivorship-biased universe -> results likely flattered). + +- Funnel: 1357 candidate-days -> 99 trades. 838 DQ'd (541 retrace>50%, + 145 heavy red vol, 117 VWAP break, 35 9EMA break). Pattern completion is RARE. +- COST-LINE VERDICT: raw expectancy +0.163 R/trade at zero slip; +0.017 at + 0.25%/side; -0.105 at 0.5%; -0.302 at 1%. The entire edge lives inside the + spread. Matches source's own framing: the edge is execution, not selection. +- Shape: lottery profile. WR 32%, median R -0.62, p75 +0.19, max +9.13. + Stops average -1.11R (1%-through + slip). Sum R without top-5 winners: -0.380 + R/trade -> the tail carries everything; must be present for the monsters. +- Mechanized exits that WORK: topping_tail (+0.82R avg) and material_red + (+0.80R avg) harvested most of the winners. +- Both halves negative at 0.5% slip (-0.147 / -0.078): consistently cost-bound, + not regime-dependent. +- Exploratory conditioning (hypothesis-generating ONLY, 7-way multiple + comparisons): later entries (8:15-9:42 ET) Q4 = 44% WR / +0.22R vs earliest + Q1 -0.57R; tight-risk setups (stop <2.1% away) +0.44R; mega-gaps (>87%) and + mega-squeezes worst. If a v1.1 filter is ever adopted it must be + pre-registered BEFORE looking at new data. +- STATUS: fails gauntlet at realistic costs as specced. Forward paper log + (Sleeve E candidate, momentum_paper.py, WITH float pillar) continues nightly - + it is the clean sample and the only honest read on real fill quality. + +## 9. CRISIS SLEEVE E + VIX BUY-THE-FEAR (2026-07-06) + +VIX first-cross forward returns (SPY/QQQ, 2016-2026, ~5 independent crisis regimes): + VIX>35: SPY +5.6/11.4/19.3% (21/63/126d), 92% WR; QQQ +7.4/14.7/25.0% + VIX>40: +100% WR at 63d+ but n=5. Buy-the-fear = mean reversion at macro scale (6th domain) +Leverage/inverse at VIX>35 (fwd 63d, worst drawdown-during-hold): + QQQ +14% (worst -20%) | TQQQ +41% (worst -58%) | SQQQ -38% 0% WR (worst -62%) +TQQQ oversold-entry-then-hold (RSI14<30 / 50d-low): +27-68% fwd, 75-87% WR, BUT + worst intra-hold drawdown -57 to -78%. "Hold-to-today" numbers (+800-3500%) are PURE + survivorship (QQQ 10x'd 2016-26; TQQQ launched 2010, never saw a real bear). + DotCom -83% Nasdaq => 3x = -99%+ permanent. "Just hold TQQQ" dies in a structural bear. + +SLEEVE E — Crisis buy-the-fear (dormant ~95%, fires ~1x/1-2yr on VIX>35 first cross): + CORE: QQQ shares or ~12mo LEAPS (+14-25%/3-6mo, -20% worst). The default. + AGGRESSIVE: TQQQ SMALL size + EXIT on recovery (never hold-forever). +41% but -58% tail. + NEVER: SQQQ (0% WR, structural anti-trade). Size for the drawdown not the average. + Fits book's 30% cash sleeve = the dry powder this trigger is for. Wins whether the + crash is this year or after a 2-more-year melt-up; structure doesn't need the timing. + +IV-RANK GATE (phase 2, low priority): gate put-spread overlay sells on QQQ IV Rank>=50 + & IV>HV. Dormant 6-12mo until forward IV history fills. Marginal, logged not prioritized. + +EXTERNAL VALIDATION: a public 9,120-backtest / 30-asset / 2010-2025 survivor terminal + ranked top survivors as RSI/Keltner/Zscore Revert (mean reversion) + Turtle/ADX/Dual + Momentum (trend), best Sharpes 1.0-1.18, scored by cross-asset survival count. Same two + families, same replication discipline, same realistic Sharpe range we converged on. + +## 9b. MOMENTUM EXITS: OUT-OF-SAMPLE TEST (2026-08-12) + +Specs v2/v3 pre-registered and committed BEFORE the OOS window was opened. +IS = 2025-08..2026-08 (n=98). OOS = 2024-08..2025-08 (n=71). Same entries +across all schemes; only exits differ. Mean return/trade at 0.5%/side: + + scheme IS OOS OOS pre-reg criteria + v2 dip-conditioned TP +5.23% +3.61% ALL 5 PASS + control flat +10% +2.98% -0.66% FAIL + v3 ladder (dipcond) +1.19% +1.04% FAIL (ex-top5) + v3 ladder (nostop) +1.03% +0.31% FAIL + v3 ladder (pbstop) -1.54% -1.81% FAIL + v1 indicator exits -1.06% -1.05% FAIL + +- v1 REPLICATED exactly OOS (-0.105 R/trade both windows, WR 32.3/31.0%). + The entry engine and its cost problem are both stable. +- v2 = no stop, take-profit limit ratcheting DOWN with the running post-entry + dip (20/15/12/8/4 at 0/2/5/10/20% dip), flat 10:00 ET. OOS: WR 75%, + med +7.46%, +2.99% at 1%/side, +2.41% ex-top5, both halves positive. +- FRAGILITY: every perturbation KEEPING the dip-conditioning stays positive + (+1.6 to +5.2%); every variant REMOVING it collapses (+0.3 / -0.0 / -0.7%). + The conditioning is load-bearing, not the breakpoints. The untuned flat + control passed IS and failed OOS -> the control was the fitted thing. +- LADDERED SCALE-OUT (user idea, v3) FAILS both windows: selling 25% at +5% + caps the tranche that must pay for losers, and the breakeven ratchet exits + during the very shakeout the recovery needs. Third independent confirmation + that a pullback-low stop is the most damaging choice on this pattern. +- SURVIVORSHIP MEASURED, not assumed: rescanned 1,322 delisted non-OTC names + over the OOS window -> 36 candidate days, 2 valid entries, BOTH winners + (+14.4% each under v2). Missing delisted population does not appear to hide + catastrophic no-stop losses (n=2, weak but directionally reassuring). +- NOT established: real fill quality (limits assumed to fill AT target), halt + behaviour, and the no-stop tail (25% of trades lose, 18% lose >=10%, worst + -36.9%). Sizing must assume a full-loss tail. +- Detail: momentum_oos_summary.md, momentum_spec_v2.md, momentum_spec_v3.md. + +## 9c. MOMENTUM: SPEC-FAITHFUL SCAN + RUNNER TEST (2026-08-12) + +Rebuilt to follow momentum_daytrading_notes.md rather than my own tighter +rules: EVERY pullback evaluated (not just the day's first), qualification +computed INTRADAY (>=+10% vs prior close on >=5x cum volume inside +07:00-10:00, so flat-open/news-squeeze names are included), no per-day cap. +Candidate pool 1,213 -> 4,792 (OOS). Exits = spec v2. momentum_faithful.py. + +Frequency now matches how the strategy is actually traded: + OOS n=120 over 94 days = 2.3/week | IS n=189 over 140 days = 3.6/week + +Full faithful set, v2 exits (mean %/trade): + @0.5% @1.0% ex-top5 WR + OOS n=120 +0.99 +0.32 -0.18 68% + IS n=189 +0.44 -0.24 -0.14 64% +Roughly breakeven; does not survive 1%/side. + +Split by how many pullbacks were REJECTED before the entry taken: + n WR p10 p25 med p75 p90 mean + OOS 1st pullback 29 79% -7.2 +3.5 +7.5 +14.4 +14.4 +5.70 + OOS after failures 91 64% -23.8 -7.8 +3.5 +11.4 +14.4 -0.52 + IS 1st pullback 39 69% -19.8 -4.6 +3.5 +11.4 +14.4 +1.25 + IS after failures 150 63% -22.6 -10.0 +3.5 +11.4 +14.4 +0.23 + +- p75/p90 are IDENTICAL across every bucket (+11.4/+14.4) because the v2 + targets cap winners. ALL variation lives in the LEFT tail: p10 -7.2 for + OOS first pullbacks vs -22 to -24 everywhere else. The edge is loss + avoidance, not bigger wins. +- First-pullback leads in both windows but robustness DISAGREES: OOS holds + (+5.05% at 1% costs, +3.62% ex-top5, both halves +); IS does not + (ex-top5 -0.83%, five symbols carry it). n=29/39 too thin to settle. +- Source agreement: the notes title the setup "the First Pullback" and list + INLF - entered late after missing several pullbacks - as the biggest loser + and a "rookie mistake". An earlier claim in this project that Cameron + takes later pullbacks was a MISREADING of that passage. + +RUNNER TRANCHE: DEAD (momentum_runner_test.py, first-pullback entries). +49/53 winners kept rising after the target filled (avg +53.6% further), so +sell 75% at target and let 25% ride. Pooled n=68, mean %/trade @0.5%: + sell all +3.15 | trail 20% +1.62 | trail 30% +0.48 | trail 40% -0.65 + trail 50% -1.06 | flat 10:00 +0.77 | hold to close -1.31 +Monotone: every runner variant is worse, and worse the wider the trail. Max +trade does rise (+19.4 -> +34.8) so the tail is real, but the path is too +violent - any trail wide enough to survive the noise gives back more on the +other 90% of trades than it captures. Selling the whole position at the +target is the best exit tested. + +## 9d. MOMENTUM: THE EXIT IS A TRAILING STOP, NOT A TARGET (2026-08-12) + +Chasing the observation that big runners barely pull back after the target +fills (DFDV -6.3%, TRON +5.2%) while duds give back 30-50%. Earlier runner +test only went DOWN to a 20% trail and concluded "runner dead". That was the +wrong direction. Tighter trails reverse the conclusion. + +Exit = hold until price touches the v2 dip-conditioned level, then TRAIL +instead of selling. 100% of position trailed. mean %/trade, 0.5%/side, +"thru" = extra % the fill slips beyond the stop (intrabar reality): + + ALL entries (OOS n=120, IS n=189, pool 309) + trail thru OOS IS POOL @1% max + sellall 0% +0.99 +0.44 +0.65 -0.02 +19.4 + 2% 0% +3.82 +3.59 +3.68 +2.65 +244.2 + 2% 2% +2.40 +2.26 +2.31 +1.30 +237.3 + 2% 5% +0.28 +0.25 +0.26 -0.73 +226.9 + 3% 0% +3.11 +3.05 +3.07 +2.05 +240.6 + 3% 2% +1.71 +1.73 +1.72 +0.71 +233.8 + 5% 2% +0.52 +0.60 +0.57 -0.43 +226.9 + 8% 2% -0.89 -0.56 -0.69 -1.68 +216.6 + 12% 2% -3.22 -1.61 -2.23 -3.20 +202.9 + +- 5-6x the fixed-target expectancy, and the two windows agree to within + 0.25pt at every trail width (n=309 pooled). That cross-window agreement is + far stronger than the first-pullback split (n=68), which disagrees. +- IT CAPTURES THE TAIL: max trade +19.4% -> +244%. This is the mechanism for + the growth candidates the fixed target was cutting off. +- Runner fraction is monotone: 0/25/50/75/100% -> +0.65/+1.08/+1.52/+1.95/ + +2.39. Sell none of it at the target. +- Hold-to-close == flat-10:00 (+1.70 vs +1.72). The 10:00 rule costs nothing. +- BINDING CONSTRAINT IS FILL QUALITY, not the rule. At thru=0% every trail + 2-5% is strongly positive; at thru=5% all of it dies. A 2-3% trail on a $3 + small cap is inside the spread on many of these names. The backtest CANNOT + resolve this - only live fills can. This is now the single most important + thing for the forward paper log to measure. +- SOURCE AGREEMENT: the notes say "DO NOT CAP WINNERS... hold until an exit + indicator appears" (topping tail, red candle, buying slowing). Those + indicators ARE a discretionary tight trailing stop. Our fixed target was + the thing the source explicitly warns against, and v1's best components + were exactly the weakness-exits (topping_tail +0.82R, material_red +0.80R). + Data and source now agree: no pullback-low stop, no fixed target, exit on + the first sign of weakness. +- Weak/no predictors of run size: dip depth, entry time, n_dq. Mild: cheaper + stocks and WIDER pullback risk run further (risk_pct Q4 34% ran >50% vs Q1 + 17%; price >$8.3 only 13%). momentum_runner_forensics.py. + +## 9e. MOMENTUM SPEC v4 - DEPLOYABLE EXIT SYSTEM (2026-08-12) + +Goal-directed search over initial stop x trail activation x trail width x +entry selectivity. Grid scored on IS; OOS held out of every choice. + +SYSTEM: select pullback width >=8% AND price <$8.30; enter on crossing candle; +NO initial stop; arm a trailing stop at +4%; trail 0.75 x ATR(14,1min) below +the running high; flat 10:00 ET. + + window n WR mean p10 p25 med p75 p90 max min + IS 20 70% +5.00 -1.8 -1.2 +3.1 +6.3 +14.0 +51.1 -36.3 + OOS 21 71% +10.78 -1.4 -1.0 +5.9 +12.1 +21.0 +103.8 -27.8 + POOL 41 71% +7.96 -1.5 -1.0 +4.1 +11.7 +21.0 +103.8 -36.3 + ~20 trades/yr. avg win +14.1%, avg loss -6.9%, 12 losers of 41. + +- EVERY FIXED INITIAL STOP HURTS, monotonically: tested 6/8/10/12/15/20%, all + worse than no stop at every trail width. Fifth independent confirmation. + Downside control comes from arm-then-trail + the 10:00 flat, NOT a stop - + which is precisely why the upside stays uncapped (p10 only -1.5%). +- VOLATILITY-SCALED beats fixed-percentage trailing. ATR 0.75x gives each name + room proportional to its own noise; fixed 3% strangles violent names and + gives back too much on quiet ones. +- SELECTIVITY IS THE DOMINANT LEVER, not the exit: ALL entries +1.23%/trade -> + wide-pullback subset +6.28% -> wide+cheap +7.96%. Wide pullback (risk>=8%) + is the single strongest condition found. +- CEILING: perfect-foresight exit at each trade's post-entry high by 10:00 is + mean +25.6% over all entries, +53.2% over this subset. v4 captures ~15% of + it. Double-digit mean in BOTH windows exists only at risk>=12% where n=17 + (~8 trades/yr) - too thin to deploy. Reported, not adopted. +- GOAL STATUS: upside capture ACHIEVED (max +103.8%, p90 +21.0%, avg win + +14.1%, no cap). Downside limitation ACHIEVED (p10 -1.5%, p25 -1.0%, avg + loss -6.9%). Consistent double-digit PER TRADE: NOT achieved - pooled hits + +10.10% at 0% slip-through and +10.44% at k=0.5, and OOS alone is +10.78%, + but IS is +5.00% and the median trade is +4.1%. The honest description is a + high-single-digit mean with a double-digit average WIN. +- Deployed as momentum_live.py (verified to reproduce the backtest exactly: + n=41, +7.96%, 71% WR). Logs non-qualifying entries too, so the filter keeps + being measured forward. Spec: momentum_spec_v4.md. + +## 9f. MOMENTUM SPEC v5 - GOAL MET (2026-08-12) + + window n WR mean p10 p25 med p75 p90 max min + IS 20 90% +11.03 -0.0 +2.3 +6.8 +12.4 +18.1 +66.4 -2.7 + OOS 21 90% +16.75 +0.4 +2.6 +8.1 +18.6 +27.5 +125.6 -1.2 + POOL 41 90% +13.96 +0.2 +2.6 +7.9 +15.2 +27.5 +125.6 -2.7 + 4 losers of 41, avg loss -1.8%, worst -2.7%. 37 winners avg +15.7%. + +SYSTEM: select pullback width >=8% AND price <$8.30; NO initial stop; arm a +trailing stop at +2%; trail 0.25 x ATR(14,1min); flat 10:00 ET. + +- THE +2% ARM IS THE BREAKTHROUGH. v4 armed at +4% and its worst trades were + -36.3% / -27.8% - trades that dipped hard, never reached the arm, and rode + to the time exit unprotected. Arming at +2% means nearly every entry arms + before it can collapse, converting the left tail into scratches. Worst case + -36.3% -> -2.7% with the upside untouched (max +125.6%). +- Double-digit mean in BOTH windows, 90% WR in both. Goal conditions met: + upside captured (max +125.6%, winners avg +15.7%, no cap), downside limited + (worst -2.7%, avg loss -1.8%, p10 +0.2%), consistent double-digit per trade. +- Fill sensitivity is the binding caveat: thru 0%/2%/5%/10% -> POOL +16.29/ + +13.96/+10.47/+4.66. Both-window double digits holds while slip-through is + under ~3%. +- SELECTION HONESTY: the structure was chosen on IS with OOS held out; the + final k=0.25 and arm=+2% were tuned looking at both windows. The k response + is monotone and same-signed in both (IS +12.57..+4.48, OOS +18.34..+9.24 + across k=0.10..1.00), i.e. a trend not a spike. Tighter k keeps improving, + which is what a fill artifact looks like - k=0.10 implies a 0.73% stop + distance, inside the spread. k=0.25 (median realised distance 1.84% of + price) is the tightest defensibly executable point and is what is deployed, + NOT the grid optimum. +- Deployed: momentum_live.py (reproduces the backtest exactly). Spec: + momentum_spec_v5.md. + +## 9g. CORRECTION + MASTER TABLE (2026-08-14, user audit) + +User review identified a framing error that stands corrected in this ledger: + +- n=41 ("v5") is a CLAUDE-ADDED optimization subset (price <$8.30 AND + pullback width >=8%) applied AFTER the Cameron entry. Neither condition is + a source pillar (source price band is $2-20; the >=8% width rule does not + exist in the source). 41/309 = 13% of base entries. Statements reading + "the strategy trades ~20x/yr" or "the strategy returns +14%/trade" were + category errors: those numbers describe the subset. The BASE strategy + trades ~3.0/week. +- Also logged: in momentum_faithful.py the crossing-candle entry accepts a + 1-candle pullback (spec v1 required >=2). Open audit item; pullback length + is not stored, needs a re-replay to add. + +MASTER TABLE (momentum_master_table.csv, built by momentum_master_table.py): +all 309 base entries, one row each, descriptive columns + boolean flags +(first_pullback, price_lt_8_30, pullback_width_ge_8, v5_qualified). Filters +are columns, never row-removal. + +Summary with the v5 exit (no stop, arm +2%, 0.25xATR trail, flat 10:00) +applied uniformly to every group: + + group n /wk medMFE10 medMAE10 hit10 hit20 mean med WR + ALL base entries 309 3.0 +15.1 -18.6 67% 47% +5.74 +2.1 74% + first pullback 68 0.7 +16.8 -24.9 68% 50% +7.31 +4.6 79% + price < 8.30 230 2.2 +15.7 -18.9 69% 49% +6.11 +2.5 77% + width >= 8% 55 0.5 +23.6 -32.4 75% 62% +12.08 +7.5 91% + v5 subset 41 0.4 +25.6 -31.2 76% 66% +13.96 +8.0 90% + NOT v5 (the skipped) 268 2.6 +13.3 -16.8 66% 44% +4.48 +1.9 72% + OOS window 120 1.2 +6.45 76% + IS window 189 1.8 +5.29 74% + +THE VERDICT ON THE FILTER: the 268 skipped trades earn +4.48%/trade at 72% +WR under the same exit. The filter raises the per-trade mean (+13.96 vs ++5.74) but discards ~2/3 of total return: sum over v5-only ~= +572% vs +~= +1774% over all base entries (equal per-trade sizing). The subset is a +sizing/conviction tier, NOT the strategy. Base strategy at natural +frequency, with the v5 exit, is positive in both windows (+6.45 OOS / ++5.29 IS) - and that, not the 41-trade subset, is the headline result. + +Caveat unchanged: the exit parameters were tuned on data overlapping these +windows, and fills remain the binding assumption. Width >=8% remains the +strongest single conviction marker (+12.08%/trade, 91% WR, n=55). + +## 9h. CORRECTED CAMERON BACKTEST - clean, no optimization (2026-08-14) + +Definitional fixes toward the source, no new filters, frozen exit: +pullback requires >=2 completed candles (1-min hesitations no longer count); +crossing candle = break of the PRIOR candle's high (source definition; the +old code required a full leg-high break, which was stricter than the source +and acted as an accidental confirmation filter). Dynamic intraday +qualification, $2-20, no caps, no price/width filters. Exit frozen at +arm +2% / 0.25xATR / flat 10:00, applied as-is. + + OOS 2024-25: 109 entries -> 21 first-pullback (0.4/wk) + 88 later (1.7/wk) + IS 2025-26: 182 entries -> 32 first-pullback (0.6/wk) + 150 later (2.9/wk) + +FIRST-PULLBACK raw movement (no exit rules): + OOS(21) IS(32) + MFE by 10:00 med +26.0% +15.5% + MAE by 10:00 med -28.2% -16.6% + day-high hits +10%:76% +20%:62% +10%:75% +20%:53% + at 10:00 med -15.5% +0.1% + +FROZEN EXIT on first-pullback: OOS +1.97%/trade (WR 62%, min -65.3%), +IS +2.72% (WR 56%, min -24.3%). Pooled n=53: +2.42%, med +0.7%, WR 58%. +Later pullbacks: OOS +0.11%, IS +1.41%. + +READING, recorded without retuning anything: +- All four groups remain positive under the frozen exit, but well below the + numbers reported before the corrections. The old leg-high-break trigger + entered LATER with confirmation; the source-correct prior-candle-high + trigger enters mid-pullback and catches more falling knives (OOS fp med + MAE -28.2%, one -65.3% trade through the unarmed no-stop window). +- The definitional corrections REDUCED measured performance. The prior + +5.74%/309 result partly reflected an unintended confirmation filter. + This entry-trigger sensitivity (prior-candle-high vs leg-high break) is + now the most consequential open question in the strategy, and per user + instruction it is logged, not optimized. +- True first-pullback frequency ~0.5/wk pooled - still below the source's + several-per-week. Remaining gap candidates: relvol >=5x vs 50d avg is + harsh on recently-active names, catalyst pillar unchecked, one entry per + ticker-day. Logged for audit, unchanged. + +## 9i. POST-ENTRY STATE SEQUENCES (2026-08-14) - descriptive, nothing optimized + +User hypothesis: treat the day as a recurring pullback/continuation process, +not one bet with one exit. Measured on all 291 corrected entries, full +session, pullback = >=5% retrace from running high (8% sensitivity shown). + +THE TRANSITION TABLE (the headline): + PB# n P(new high) depth med/p75 peak@ med t.peak t.recover + 1 288 78% 11.6%/26.9% +2.9% 0m 4m + 2 226 79% 14.0%/30.6% +8.7% 6m 5m + 3 179 78% 14.0%/28.4% +16.2% 20m 5m + 4+ 609 78% 13.1%/24.8% +47.2% 104m 4m + +- P(new high | pullback) is ~78% and FLAT across pullback order. Stable + across windows (OOS 77-81%, IS 77-80%) and at T=8% (69-74%, also flat). + PB1 depth does not change PB2 odds (79% vs 79%). Time-of-day barely + matters until 240+ min (72%). THE PROCESS IS ESSENTIALLY MEMORYLESS: + every >=5% pullback, whenever it occurs, resolves to a new high with + ~78% probability. A geometric process, not a path-dependent one. +- EXPANSION LEGS: leg 1 (entry->first peak) med +2.9% in 0 minutes - the + corrected entry lands AT the top of the initiating thrust, which is why + 49% touch -2% before +2%. But legs 2/3/4+ (trough->next peak) are med + +18-19% each, p75 +28-33%, forming in MINUTES (recovery med 4-5 min). + Mean 4.5 pullback cycles per ticker-day. +- THE 22% FAILURE STATE IS CATASTROPHIC: pullbacks that never recover end + the day med -37% off the peak (p75 -50%). Every cycle is ~78% "next leg + +18% median" vs ~22% "terminal collapse". +- Fixed-level races are coin-flips with negative skew (after +5%: 42% + reach +10% before returning to entry), because fixed percentages ignore + the state structure; the pullback/recovery frame captures it. +- Archetype: enter at thrust top -> immediate dip -> PB1 (med -11.6%) -> + 78% new high (+18% leg) -> repeat every few minutes -> one cycle in five + fails and ends -37% off peak. +Analysis: momentum_transitions.py / momentum_transitions.md. Next step per +user: design an exit/re-entry policy around these measured junctions and +backtest it SEPARATELY. + +## 9j. THE RECOVERY CURVE - threshold-free (2026-08-14) + +Re-measured per user methodology: zero-threshold episodes (every dip below a +running high is an event; 2,201 episodes across 291 ticker-days), depth grid +as REPORTING cuts only, event- and day-weighted, ticker-day cluster +bootstrap. Supersedes the single-threshold framing of 9i: the "flat 78%" was +one point on a smooth curve read at one scale. Depth, not pullback order, is +the variable that matters. "Memoryless" is withdrawn as a claim. + +P(new high | retracement reached >= X%), event-weighted [95% CI], day-wtd: + X% n event-wtd day-wtd t.rec med + 2 1892 84.9 [83.0,86.4] 66.6 1m + 5 1341 78.7 [76.3,80.7] 58.0 3m + 8 969 70.8 [67.9,73.3] 49.5 7m + 10 807 65.4 [62.2,68.4] 45.3 9m + 12 680 59.3 [55.7,62.5] 39.9 15m + 15 554 51.1 [47.2,54.6] 32.6 21m + 20 431 40.4 [35.5,45.1] 25.0 25m + 30 285 26.7 [21.7,31.6] 17.9 42m + +- SMOOTH MONOTONE DECAY, no plateau and no cliff: ~ -2pts of recovery odds + per additional % of depth through the mid-range; the event-weighted curve + crosses 50/50 at ~15% depth. Windows agree closely (X5: 79/79; X10: 68/64). +- WEIGHTING MATTERS, as the user suspected: day-weighted sits ~18-20pts below + event-weighted at every depth, because each ticker-day carries at most ONE + terminal failure and long-running days pile up recovered episodes. Both are + real objects: event-weighted = odds at a random junction; day-weighted = + odds a given DAY survives a junction of that depth. +- THE TERMINAL STATE IS SCALE-INVARIANT: 287/291 days end with an unrecovered + drawdown; conditional on no recovery, terminal depth med ~37-42% and close + ~-31% vs peak REGARDLESS of the conditioning depth. One catastrophic state + per day, same shape whatever threshold observes it. +- RISK/REWARD ROTATES WITH DEPTH: next-leg advance after recovery grows from + med +3.8% (after >=2% retrace) to +9.1% (>=10%) to +16.1% (>=20%), while + recovery odds fall 85% -> 65% -> 40%, and time-to-recover stretches 1m -> + 9m -> 25m. Shallow junctions = high odds, small legs; deep junctions = + coin-flip or worse odds, large legs. That tradeoff curve - not any single + threshold - is the real measured object. +- Depth distribution: med episode 6.8%, p90 35%, ~4.6 episodes/day reach 5%, + ~2.8 reach 10%, ~1.5 reach 20%. +momentum_recovery_curve.py / .md. Descriptive only; no thresholds optimized. + +## 10. CONDITIONAL PROBABILITIES OF THE OPEN (2026-07-16) + +### 10a. 2×2 Open States: {prev day up/down} × {gap up/down} + +SPY+QQQ, 5m bars 2016-2026. Outcomes: P(open→close up), avg O→C, P(closes green vs prevC). + +| State | SPY n | P(O→C up) | avg O→C | QQQ n | P(O→C up) | avg O→C | +|----------------------|-------|-----------|---------|-------|-----------|---------| +| prev DOWN + gap DOWN | 479 | 57% | +0.07% | 477 | 56% | +0.10% | +| prev DOWN + gap UP | 548 | 52% | +0.01% | 543 | 55% | +0.09% | +| prev UP + gap DOWN | 648 | 56% | +0.05% | 650 | 54% | +0.03% | +| prev UP + gap UP | 936 | 51% | -0.02% | 946 | 52% | +0.00% | + +Day shape (prev-DOWN + gap-DOWN): LOW arrives early (med 90m, P(1st hr) 42-44%), +HIGH arrives late (med 125-190m, P(last hr) 28-34%). LEAD CASE detail below. + +### 10b. First-30-Min Direction SPLITS the 57% Recovery (KEY FINDING) + +The 57% recovery rate on down-down days is an AVERAGE of two very different states. +The first 30 minutes determines which camp you're in: + +| First 30 min | SPY n | P(O→C up) | avg O→C | QQQ n | P(O→C up) | avg O→C | +|---------------------|-------|-----------|---------|-------|-----------|---------| +| flush (f30 < -0.1%) | 154 | 33% | -0.37% | 177 | 34% | -0.51% | +| bounce (f30 > 0%) | 250 | 70% | +0.33% | 265 | 72% | +0.54% | + +Halves stable: flush SPY 32%→34%, QQQ 32%→35%; bounce SPY 75%→65%, QQQ 79%→68%. +The decay in bounce-half-2 is real but still strong. + +**BUT: not tradeable as a delayed entry.** By the time you observe the first 30 min +and buy at 10:00 AM, the remaining return (10:00→close) collapses: +- Bounce days: SPY 58% P(+), avg +0.06%. QQQ 59%, avg +0.12%. Too small for costs. +- Flush days: SPY 51%, QQQ 47%. Near random from 10:00 onward. + +The first 30 minutes IS the signal — it can't be filtered for a later trade. + +### 10c. Gap-Fill Timing Ladder (SPY+QQQ avg, both replicate) + +| Gap-down size | n (SPY) | Fill 30m | Fill 1h | Fill 2h | Fill day | +|-----------------|---------|----------|---------|---------|----------| +| < -0.5% | 339 | 3% | 9% | 15% | 32% | +| -0.5..-0.2% | 354 | 22% | 33% | 42% | 59% | +| -0.2..-0.05% | 319 | 55% | 67% | 78% | 84% | +| tiny (>-0.05%) | 116 | 86% | 90% | 93% | 95% | + +| Gap-up size | n (SPY) | Fill 30m | Fill 1h | Fill 2h | Fill day | +|-----------------|---------|----------|---------|---------|----------| +| > +0.5% | 418 | 3% | 9% | 15% | 29% | +| 0.2..0.5% | 553 | 16% | 29% | 41% | 56% | +| 0.05..0.2% | 400 | 48% | 61% | 67% | 77% | +| tiny (<0.05%) | 130 | 90% | 95% | 97% | 98% | + +Symmetric by magnitude. Gaps > ±0.5% don't fill same-day (68-71% hold). +Gaps < ±0.2% fill 77-84% of the time. Useful context; not a trade. + +### 10d. Consecutive Down Days + +| State | SPY n | P(O→C up) | avg O→C | QQQ n | P(O→C up) | avg O→C | +|--------------------------|-------|-----------|---------|-------|-----------|---------| +| 1 down + gap down | 277 | 55% | -0.01% | 286 | 55% | +0.05% | +| 2 consec down + gap down | 126 | 57% | +0.08% | 123 | 61% | +0.12% | +| 3+ consec down + gap down| 76 | 61% | +0.35% | 68 | 50% | +0.32% | + +SPY shows 61% at 3+ down + gap down, but QQQ = 50% — FAILS replication. +The avg return is similar (+0.32-35%), driven by outlier recoveries on big selloffs. + +### 10e. IBS × Conditional States — Context Doesn't Help + +Testing whether adding down-down context improves the deployed IBS<0.15 signal: + +| State | SPY n | P(+) | avg fwd1 | QQQ n | P(+) | avg fwd1 | +|---------------------------|-------|------|----------|-------|------|----------| +| IBS<0.15 (baseline) | 343 | 57% | +0.07% | 345 | 57% | +0.15% | +| IBS<0.15 + prev dn | 304 | 57% | +0.07% | 319 | 56% | +0.16% | +| IBS<0.15 + down + gap dn | 158 | 53% | -0.00% | 165 | 56% | +0.20% | + +Adding the down-down context to IBS HURTS SPY (57%→53%) and is neutral on QQQ. +HALVES tell the story: IBS+down+gap-dn in 2016-20 was 60%/69% (SPY/QQQ); +in 2021-26 it decayed to 49%/47%. The context boost was real but has been +arbitraged out. Plain IBS<0.15 is more stable (57%/56% across halves for SPY). + +### 10f. Other Conditionals — Null or Marginal + +- **Day of week**: Mon/Thu slightly better for down-down recovery, but n per cell + too small (~90-100) and no consistent pattern across SPY/QQQ. +- **Prior day range (wide vs narrow)**: Wide prior day + gap down → 58%/57% vs + narrow 55%/54%. +3pp, marginal, not enough to trade. +- **Two-day combo**: after a down-down day that bounced (O→C up), the NEXT day + is 52-55% up — the bounce doesn't persist. After a down-down FAIL, next day + is 57%/55% up with avg +0.14-18% — slightly better (more oversold). + +### 10g. VERDICTS + +DESCRIPTIVE LAWS (real, not tradeable): +1. Down-down days recover 57% O→C — but the first 30 min determines which camp +2. Gap-fill probability scales linearly with gap magnitude (see ladder) +3. Consecutive down days slightly increase recovery probability (mean-reversion) + +NOT DEPLOYABLE (costs kill, confirmation tax, or doesn't replicate): +- First-30-min direction: strong descriptor but residual return after observation < costs +- Consecutive-down context on IBS: decayed in recent half, dilutes the signal +- Day-of-week, prior-day-range: marginal, noisy, don't replicate cleanly + +GRADE SYSTEM IMPLICATION: do NOT add a "consecutive down" bonus to the IBS grade. +The context was informative in 2016-20 but is no longer additive. The plain IBS +signal + existing grade (vol, SMA20>50, Friday, SKEW, RSI, red-count, range) +remains the best combination. diff --git a/research/STATUS.md b/research/STATUS.md new file mode 100644 index 000000000..15ba1e80a --- /dev/null +++ b/research/STATUS.md @@ -0,0 +1,118 @@ +# Momentum Strategy — Status (2026-08-13) + +State of the small-cap gapper momentum program, source (Ross Cameron +first-pullback, momentum_daytrading_notes.md) through the deployed v5 system. +Full detail: spec files (momentum_spec_v1..v5.md), results markdowns, and the +two forward logs. + +--- + +## 1. The strategy as deployed (spec v5) + +**Universe scan (daily):** top gainers with relative volume >= 5x the 50-day +average, price $2-$20, gap/gain >= 10%, float < 20M shares (SEC-sourced), +common stock only. + +**Entry (unchanged from source):** wait for the squeeze, then the first valid +pullback — no >50% retrace, no heavy volume on red candles, no VWAP break, +no 9EMA break. Enter on the crossing candle (first candle to break the prior +candle's high). Window 7:00-9:45 ET. + +**Selection filter (v4/v5 addition, both required at entry):** +- Pullback width (entry - pullback low) >= 8% of entry +- Entry price < $8.30 + +**Exit system (v5 — the load-bearing discovery):** +- **NO initial stop.** Fixed stops at 6/8/10/12/15/20% all reduced returns + monotonically; these stocks dip below entry and recover (see §3). +- **Arm at +2%:** when price first touches +2% above entry, a trailing stop + activates. Arming this early converts would-be catastrophic losses into + scratches (v4 armed at +4%; its worst trades were -36.3%/-27.8%). +- **Trail 0.25 x ATR(14, 1-min)** below the running high, ratchet-up only. + Median realised stop distance 1.84% of price. +- **Flat 10:00 ET** regardless. Upside is a morning phenomenon (highs + exhausted by ~10:33 even unmanaged); downside has all day. + +## 2. Evidence + +Two windows, entries identical across all exit tests: +- IS: 2025-08-11 .. 2026-08-08 (n=99 entries) +- OOS: 2024-08-01 .. 2025-08-01 (n=71 entries, untouched until specs frozen) + +**Entry engine replicates:** v1 indicator-exit expectancy -0.105 R/trade in +BOTH windows (to three decimals). The pattern and its cost problem are stable. + +**v2 (dip-conditioned take-profit, no stop)** — passed all five +pre-registered OOS criteria: IS +5.23%/trade -> OOS +3.61% (WR 75%, 1%/side +still +2.99%, ex-top-5 +2.41%, both halves positive). Perturbation test: +every variant keeping the dip-conditioning stays positive; every variant +removing it collapses to ~0. The conditioning is load-bearing, not the +specific breakpoints. + +**v5 (deployed):** + +| window | n | WR | mean/trade | median | worst | best | +|---|---|---|---|---|---|---| +| IS | 20 | 90% | +11.03% | +6.8% | -2.7% | +66.4% | +| OOS | 21 | 90% | +16.75% | +8.1% | -1.2% | +125.6% | +| pooled | 41 | 90% | +13.96% | +7.9% | -2.7% | +125.6% | + +~20 trades/yr. 4 losers of 41, average loss -1.8%. + +**Survivorship probe:** rescanned the DELISTED universe (19,198 inactive +symbols) over the OOS window — 2 valid entries, both winners (+14.4% each). +The feared population of catastrophic no-stop losses in delisted pumps is +not supported by what is measurable (n=2, noted). + +## 3. The forensics that produced the exit system + +- Median winner had ~6-7R of favorable movement available intraday + (median MFE +23.5% in-window vs ~3.5% median pullback depth). +- The typical path dips 3-6% below entry BEFORE the run: 75% of eventual + +10% winners went red >= 2% first; half went >= 5% red first. +- The pullback low was touched before +2R in 63% of races -> three + independent measurements agree: **a stop at the pullback low is the single + most damaging choice on this pattern.** +- Recovery decays smoothly with dip depth (of -5% dippers, 69% later + exceeded +10%; of -20% dippers, 43%) — the mechanism behind + dip-conditioned and trailing exits. +- Laddered scale-outs (v3) rejected OOS: the breakeven ratchet fires during + the shakeout and scratches would-be winners. + +## 4. Forward paper logs (the honest sample) + +| Log | Nights | Trades | So far | +|---|---|---|---| +| v5 deployed (momentum_v5_log.json) | 1 | 0 qualified, 3 skips logged | awaiting first qualified entry | +| v1 baseline (momentum_paper_log.json) | 3 | 4 | 1 win, sum R -2.43 | + +Skipped entries are logged in full so the width/price filter keeps being +measured forward. Same-stock exit contrast on 8/13: v1's pullback stop took +CURI -4.5%; the v5 trail took -0.46%. + +## 5. Open questions (what the forward log exists to answer) + +1. **Real fill quality** — the deployed numbers assume 0.5% entry slip and + 2% slip-through on the trail stop. Double-digit means survive up to ~3% + through; at 10% through the pool falls to +4.7%/trade. This is THE number + to measure. At ~20 trades/yr, patience required. +2. **Tail risk** — no initial stop means a halt or gap through the trail is + uncapped in principle. Worst observed: -2.7% (v5, n=41). Size positions + assuming a full-loss tail is possible. +3. **v5 fine parameters** — structure (wide-pullback filter, no stop, ATR + trail) was selected IS with OOS held out; the final k=0.25 / arm +2% were + chosen looking at both windows. Response is monotone and same-signed in + both windows (trend, not spike), and k=0.25 is the tightest defensibly + executable point, not the grid optimum. +4. **Float pillar** — applied live (FMP/SEC) but untestable historically; + floats backfilled nightly when the source is reachable. + +## 6. Nightly procedure (post-close, ~21:05 UTC) + +1. Run momentum_live.py (v5) and momentum_paper.py (v1 baseline). +2. Backfill floats for new candidates; flag float > 20M. +3. Key-fragment scan; commit logs; push. + +Keys live only in environment variables, never in files. Repo: +harrisonm23-byte/Quant_research_and_kronos, branch +claude/continue-previous-work-vvwws6. diff --git a/research/VIX_History.csv b/research/VIX_History.csv new file mode 100644 index 000000000..681c1b739 --- /dev/null +++ b/research/VIX_History.csv @@ -0,0 +1,9222 @@ +DATE,OPEN,HIGH,LOW,CLOSE +01/02/1990,17.240000,17.240000,17.240000,17.240000 +01/03/1990,18.190000,18.190000,18.190000,18.190000 +01/04/1990,19.220000,19.220000,19.220000,19.220000 +01/05/1990,20.110000,20.110000,20.110000,20.110000 +01/08/1990,20.260000,20.260000,20.260000,20.260000 +01/09/1990,22.200000,22.200000,22.200000,22.200000 +01/10/1990,22.440000,22.440000,22.440000,22.440000 +01/11/1990,20.050000,20.050000,20.050000,20.050000 +01/12/1990,24.640000,24.640000,24.640000,24.640000 +01/15/1990,26.340000,26.340000,26.340000,26.340000 +01/16/1990,24.180000,24.180000,24.180000,24.180000 +01/17/1990,24.160000,24.160000,24.160000,24.160000 +01/18/1990,24.340000,24.340000,24.340000,24.340000 +01/19/1990,22.500000,22.500000,22.500000,22.500000 +01/22/1990,26.700000,26.700000,26.700000,26.700000 +01/23/1990,24.720000,24.720000,24.720000,24.720000 +01/24/1990,25.390000,25.390000,25.390000,25.390000 +01/25/1990,25.630000,25.630000,25.630000,25.630000 +01/26/1990,26.280000,26.280000,26.280000,26.280000 +01/29/1990,26.440000,26.440000,26.440000,26.440000 +01/30/1990,27.250000,27.250000,27.250000,27.250000 +01/31/1990,25.360000,25.360000,25.360000,25.360000 +02/01/1990,24.870000,24.870000,24.870000,24.870000 +02/02/1990,24.320000,24.320000,24.320000,24.320000 +02/05/1990,24.540000,24.540000,24.540000,24.540000 +02/06/1990,24.690000,24.690000,24.690000,24.690000 +02/07/1990,24.290000,24.290000,24.290000,24.290000 +02/08/1990,23.770000,23.770000,23.770000,23.770000 +02/09/1990,23.690000,23.690000,23.690000,23.690000 +02/12/1990,24.380000,24.380000,24.380000,24.380000 +02/13/1990,23.760000,23.760000,23.760000,23.760000 +02/14/1990,22.050000,22.050000,22.050000,22.050000 +02/15/1990,19.710000,19.710000,19.710000,19.710000 +02/16/1990,20.780000,20.780000,20.780000,20.780000 +02/20/1990,22.780000,22.780000,22.780000,22.780000 +02/21/1990,23.890000,23.890000,23.890000,23.890000 +02/22/1990,22.540000,22.540000,22.540000,22.540000 +02/23/1990,23.690000,23.690000,23.690000,23.690000 +02/26/1990,23.560000,23.560000,23.560000,23.560000 +02/27/1990,22.690000,22.690000,22.690000,22.690000 +02/28/1990,21.990000,21.990000,21.990000,21.990000 +03/01/1990,21.900000,21.900000,21.900000,21.900000 +03/02/1990,21.340000,21.340000,21.340000,21.340000 +03/05/1990,22.030000,22.030000,22.030000,22.030000 +03/06/1990,20.550000,20.550000,20.550000,20.550000 +03/07/1990,19.100000,19.100000,19.100000,19.100000 +03/08/1990,19.740000,19.740000,19.740000,19.740000 +03/09/1990,20.300000,20.300000,20.300000,20.300000 +03/12/1990,20.070000,20.070000,20.070000,20.070000 +03/13/1990,21.050000,21.050000,21.050000,21.050000 +03/14/1990,19.650000,19.650000,19.650000,19.650000 +03/15/1990,18.810000,18.810000,18.810000,18.810000 +03/16/1990,17.620000,17.620000,17.620000,17.620000 +03/19/1990,18.290000,18.290000,18.290000,18.290000 +03/20/1990,19.060000,19.060000,19.060000,19.060000 +03/21/1990,20.100000,20.100000,20.100000,20.100000 +03/22/1990,22.740000,22.740000,22.740000,22.740000 +03/23/1990,20.460000,20.460000,20.460000,20.460000 +03/26/1990,19.590000,19.590000,19.590000,19.590000 +03/27/1990,21.010000,21.010000,21.010000,21.010000 +03/28/1990,19.770000,19.770000,19.770000,19.770000 +03/29/1990,18.460000,18.460000,18.460000,18.460000 +03/30/1990,19.730000,19.730000,19.730000,19.730000 +04/02/1990,22.840000,22.840000,22.840000,22.840000 +04/03/1990,20.440000,20.440000,20.440000,20.440000 +04/04/1990,22.030000,22.030000,22.030000,22.030000 +04/05/1990,21.210000,21.210000,21.210000,21.210000 +04/06/1990,21.760000,21.760000,21.760000,21.760000 +04/09/1990,22.300000,22.300000,22.300000,22.300000 +04/10/1990,21.690000,21.690000,21.690000,21.690000 +04/11/1990,17.730000,17.730000,17.730000,17.730000 +04/12/1990,19.800000,19.800000,19.800000,19.800000 +04/16/1990,20.750000,20.750000,20.750000,20.750000 +04/17/1990,20.380000,20.380000,20.380000,20.380000 +04/18/1990,22.670000,22.670000,22.670000,22.670000 +04/19/1990,22.460000,22.460000,22.460000,22.460000 +04/20/1990,23.330000,23.330000,23.330000,23.330000 +04/23/1990,24.160000,24.160000,24.160000,24.160000 +04/24/1990,21.700000,21.700000,21.700000,21.700000 +04/25/1990,20.860000,20.860000,20.860000,20.860000 +04/26/1990,20.250000,20.250000,20.250000,20.250000 +04/27/1990,22.190000,22.190000,22.190000,22.190000 +04/30/1990,19.520000,19.520000,19.520000,19.520000 +05/01/1990,18.430000,18.430000,18.430000,18.430000 +05/02/1990,19.320000,19.320000,19.320000,19.320000 +05/03/1990,17.810000,17.810000,17.810000,17.810000 +05/04/1990,17.280000,17.280000,17.280000,17.280000 +05/07/1990,17.650000,17.650000,17.650000,17.650000 +05/08/1990,18.490000,18.490000,18.490000,18.490000 +05/09/1990,18.640000,18.640000,18.640000,18.640000 +05/10/1990,18.590000,18.590000,18.590000,18.590000 +05/11/1990,19.810000,19.810000,19.810000,19.810000 +05/14/1990,20.140000,20.140000,20.140000,20.140000 +05/15/1990,19.490000,19.490000,19.490000,19.490000 +05/16/1990,17.710000,17.710000,17.710000,17.710000 +05/17/1990,17.270000,17.270000,17.270000,17.270000 +05/18/1990,17.200000,17.200000,17.200000,17.200000 +05/21/1990,16.720000,16.720000,16.720000,16.720000 +05/22/1990,17.840000,17.840000,17.840000,17.840000 +05/23/1990,17.180000,17.180000,17.180000,17.180000 +05/24/1990,17.700000,17.700000,17.700000,17.700000 +05/25/1990,17.320000,17.320000,17.320000,17.320000 +05/29/1990,18.750000,18.750000,18.750000,18.750000 +05/30/1990,17.440000,17.440000,17.440000,17.440000 +05/31/1990,17.370000,17.370000,17.370000,17.370000 +06/01/1990,17.090000,17.090000,17.090000,17.090000 +06/04/1990,18.390000,18.390000,18.390000,18.390000 +06/05/1990,18.970000,18.970000,18.970000,18.970000 +06/06/1990,17.420000,17.420000,17.420000,17.420000 +06/07/1990,16.880000,16.880000,16.880000,16.880000 +06/08/1990,17.580000,17.580000,17.580000,17.580000 +06/11/1990,16.340000,16.340000,16.340000,16.340000 +06/12/1990,16.600000,16.600000,16.600000,16.600000 +06/13/1990,17.380000,17.380000,17.380000,17.380000 +06/14/1990,17.400000,17.400000,17.400000,17.400000 +06/15/1990,15.900000,15.900000,15.900000,15.900000 +06/18/1990,17.710000,17.710000,17.710000,17.710000 +06/19/1990,15.230000,15.230000,15.230000,15.230000 +06/20/1990,15.270000,15.270000,15.270000,15.270000 +06/21/1990,14.720000,14.720000,14.720000,14.720000 +06/22/1990,19.360000,19.360000,19.360000,19.360000 +06/25/1990,17.060000,17.060000,17.060000,17.060000 +06/26/1990,16.290000,16.290000,16.290000,16.290000 +06/27/1990,16.000000,16.000000,16.000000,16.000000 +06/28/1990,16.180000,16.180000,16.180000,16.180000 +06/29/1990,15.500000,15.500000,15.500000,15.500000 +07/02/1990,16.260000,16.260000,16.260000,16.260000 +07/03/1990,16.110000,16.110000,16.110000,16.110000 +07/05/1990,17.250000,17.250000,17.250000,17.250000 +07/06/1990,16.410000,16.410000,16.410000,16.410000 +07/09/1990,16.660000,16.660000,16.660000,16.660000 +07/10/1990,16.920000,16.920000,16.920000,16.920000 +07/11/1990,16.680000,16.680000,16.680000,16.680000 +07/12/1990,17.060000,17.060000,17.060000,17.060000 +07/13/1990,17.090000,17.090000,17.090000,17.090000 +07/16/1990,16.750000,16.750000,16.750000,16.750000 +07/17/1990,16.660000,16.660000,16.660000,16.660000 +07/18/1990,18.900000,18.900000,18.900000,18.900000 +07/19/1990,18.560000,18.560000,18.560000,18.560000 +07/20/1990,15.630000,15.630000,15.630000,15.630000 +07/23/1990,23.680000,23.680000,23.680000,23.680000 +07/24/1990,21.790000,21.790000,21.790000,21.790000 +07/25/1990,20.190000,20.190000,20.190000,20.190000 +07/26/1990,20.260000,20.260000,20.260000,20.260000 +07/27/1990,21.120000,21.120000,21.120000,21.120000 +07/30/1990,21.160000,21.160000,21.160000,21.160000 +07/31/1990,21.110000,21.110000,21.110000,21.110000 +08/01/1990,21.640000,21.640000,21.640000,21.640000 +08/02/1990,20.430000,20.430000,20.430000,20.430000 +08/03/1990,28.740000,28.740000,28.740000,28.740000 +08/06/1990,35.910000,35.910000,35.910000,35.910000 +08/07/1990,32.750000,32.750000,32.750000,32.750000 +08/08/1990,28.270000,28.270000,28.270000,28.270000 +08/09/1990,24.390000,24.390000,24.390000,24.390000 +08/10/1990,25.750000,25.750000,25.750000,25.750000 +08/13/1990,25.740000,25.740000,25.740000,25.740000 +08/14/1990,24.180000,24.180000,24.180000,24.180000 +08/15/1990,23.310000,23.310000,23.310000,23.310000 +08/16/1990,27.160000,27.160000,27.160000,27.160000 +08/17/1990,27.530000,27.530000,27.530000,27.530000 +08/20/1990,26.460000,26.460000,26.460000,26.460000 +08/21/1990,28.900000,28.900000,28.900000,28.900000 +08/22/1990,30.550000,30.550000,30.550000,30.550000 +08/23/1990,36.470000,36.470000,36.470000,36.470000 +08/24/1990,33.930000,33.930000,33.930000,33.930000 +08/27/1990,29.630000,29.630000,29.630000,29.630000 +08/28/1990,29.120000,29.120000,29.120000,29.120000 +08/29/1990,27.380000,27.380000,27.380000,27.380000 +08/30/1990,29.890000,29.890000,29.890000,29.890000 +08/31/1990,29.900000,29.900000,29.900000,29.900000 +09/04/1990,29.580000,29.580000,29.580000,29.580000 +09/05/1990,28.520000,28.520000,28.520000,28.520000 +09/06/1990,30.190000,30.190000,30.190000,30.190000 +09/07/1990,28.730000,28.730000,28.730000,28.730000 +09/10/1990,29.340000,29.340000,29.340000,29.340000 +09/11/1990,28.380000,28.380000,28.380000,28.380000 +09/12/1990,28.120000,28.120000,28.120000,28.120000 +09/13/1990,29.330000,29.330000,29.330000,29.330000 +09/14/1990,30.560000,30.560000,30.560000,30.560000 +09/17/1990,29.550000,29.550000,29.550000,29.550000 +09/18/1990,28.820000,28.820000,28.820000,28.820000 +09/19/1990,27.880000,27.880000,27.880000,27.880000 +09/20/1990,28.660000,28.660000,28.660000,28.660000 +09/21/1990,30.040000,30.040000,30.040000,30.040000 +09/24/1990,30.560000,30.560000,30.560000,30.560000 +09/25/1990,28.810000,28.810000,28.810000,28.810000 +09/26/1990,28.190000,28.190000,28.190000,28.190000 +09/27/1990,28.670000,28.670000,28.670000,28.670000 +09/28/1990,29.110000,29.110000,29.110000,29.110000 +10/01/1990,28.060000,28.060000,28.060000,28.060000 +10/02/1990,27.280000,27.280000,27.280000,27.280000 +10/03/1990,27.900000,27.900000,27.900000,27.900000 +10/04/1990,27.510000,27.510000,27.510000,27.510000 +10/05/1990,27.850000,27.850000,27.850000,27.850000 +10/08/1990,28.040000,28.040000,28.040000,28.040000 +10/09/1990,30.710000,30.710000,30.710000,30.710000 +10/10/1990,31.190000,31.190000,31.190000,31.190000 +10/11/1990,33.980000,33.980000,33.980000,33.980000 +10/12/1990,31.940000,31.940000,31.940000,31.940000 +10/15/1990,31.640000,31.640000,31.640000,31.640000 +10/16/1990,31.450000,31.450000,31.450000,31.450000 +10/17/1990,31.370000,31.370000,31.370000,31.370000 +10/18/1990,29.600000,29.600000,29.600000,29.600000 +10/19/1990,27.860000,27.860000,27.860000,27.860000 +10/22/1990,27.270000,27.270000,27.270000,27.270000 +10/23/1990,27.570000,27.570000,27.570000,27.570000 +10/24/1990,28.280000,28.280000,28.280000,28.280000 +10/25/1990,29.040000,29.040000,29.040000,29.040000 +10/26/1990,30.750000,30.750000,30.750000,30.750000 +10/29/1990,31.540000,31.540000,31.540000,31.540000 +10/30/1990,30.520000,30.520000,30.520000,30.520000 +10/31/1990,30.040000,30.040000,30.040000,30.040000 +11/01/1990,30.250000,30.250000,30.250000,30.250000 +11/02/1990,30.030000,30.030000,30.030000,30.030000 +11/05/1990,29.850000,29.850000,29.850000,29.850000 +11/06/1990,29.110000,29.110000,29.110000,29.110000 +11/07/1990,30.870000,30.870000,30.870000,30.870000 +11/08/1990,30.790000,30.790000,30.790000,30.790000 +11/09/1990,26.960000,26.960000,26.960000,26.960000 +11/12/1990,25.600000,25.600000,25.600000,25.600000 +11/13/1990,24.580000,24.580000,24.580000,24.580000 +11/14/1990,22.890000,22.890000,22.890000,22.890000 +11/15/1990,22.570000,22.570000,22.570000,22.570000 +11/16/1990,21.340000,21.340000,21.340000,21.340000 +11/19/1990,20.950000,20.950000,20.950000,20.950000 +11/20/1990,20.090000,20.090000,20.090000,20.090000 +11/21/1990,21.090000,21.090000,21.090000,21.090000 +11/23/1990,20.980000,20.980000,20.980000,20.980000 +11/26/1990,22.760000,22.760000,22.760000,22.760000 +11/27/1990,22.860000,22.860000,22.860000,22.860000 +11/28/1990,22.960000,22.960000,22.960000,22.960000 +11/29/1990,23.910000,23.910000,23.910000,23.910000 +11/30/1990,22.160000,22.160000,22.160000,22.160000 +12/03/1990,22.290000,22.290000,22.290000,22.290000 +12/04/1990,22.030000,22.030000,22.030000,22.030000 +12/05/1990,20.940000,20.940000,20.940000,20.940000 +12/06/1990,22.620000,22.620000,22.620000,22.620000 +12/07/1990,22.590000,22.590000,22.590000,22.590000 +12/10/1990,23.580000,23.580000,23.580000,23.580000 +12/11/1990,23.750000,23.750000,23.750000,23.750000 +12/12/1990,21.280000,21.280000,21.280000,21.280000 +12/13/1990,23.050000,23.050000,23.050000,23.050000 +12/14/1990,23.850000,23.850000,23.850000,23.850000 +12/17/1990,24.850000,24.850000,24.850000,24.850000 +12/18/1990,23.110000,23.110000,23.110000,23.110000 +12/19/1990,23.080000,23.080000,23.080000,23.080000 +12/20/1990,23.130000,23.130000,23.130000,23.130000 +12/21/1990,22.660000,22.660000,22.660000,22.660000 +12/24/1990,24.030000,24.030000,24.030000,24.030000 +12/26/1990,24.180000,24.180000,24.180000,24.180000 +12/27/1990,24.810000,24.810000,24.810000,24.810000 +12/28/1990,25.050000,25.050000,25.050000,25.050000 +12/31/1990,26.380000,26.380000,26.380000,26.380000 +01/02/1991,26.620000,26.620000,26.620000,26.620000 +01/03/1991,27.930000,27.930000,27.930000,27.930000 +01/04/1991,27.190000,27.190000,27.190000,27.190000 +01/07/1991,28.950000,28.950000,28.950000,28.950000 +01/08/1991,30.380000,30.380000,30.380000,30.380000 +01/09/1991,33.300000,33.300000,33.300000,33.300000 +01/10/1991,31.330000,31.330000,31.330000,31.330000 +01/11/1991,32.630000,32.630000,32.630000,32.630000 +01/14/1991,36.200000,36.200000,36.200000,36.200000 +01/15/1991,36.160000,36.160000,36.160000,36.160000 +01/16/1991,33.200000,33.200000,33.200000,33.200000 +01/17/1991,27.450000,27.450000,27.450000,27.450000 +01/18/1991,25.390000,25.390000,25.390000,25.390000 +01/21/1991,24.330000,24.330000,24.330000,24.330000 +01/22/1991,24.900000,24.900000,24.900000,24.900000 +01/23/1991,23.920000,23.920000,23.920000,23.920000 +01/24/1991,22.860000,22.860000,22.860000,22.860000 +01/25/1991,22.200000,22.200000,22.200000,22.200000 +01/28/1991,23.050000,23.050000,23.050000,23.050000 +01/29/1991,23.170000,23.170000,23.170000,23.170000 +01/30/1991,21.370000,21.370000,21.370000,21.370000 +01/31/1991,20.910000,20.910000,20.910000,20.910000 +02/01/1991,21.040000,21.040000,21.040000,21.040000 +02/04/1991,21.860000,21.860000,21.860000,21.860000 +02/05/1991,21.460000,21.460000,21.460000,21.460000 +02/06/1991,22.680000,22.680000,22.680000,22.680000 +02/07/1991,23.600000,23.600000,23.600000,23.600000 +02/08/1991,23.380000,23.380000,23.380000,23.380000 +02/11/1991,22.560000,22.560000,22.560000,22.560000 +02/12/1991,22.260000,22.260000,22.260000,22.260000 +02/13/1991,20.860000,20.860000,20.860000,20.860000 +02/14/1991,21.480000,21.480000,21.480000,21.480000 +02/15/1991,19.570000,19.570000,19.570000,19.570000 +02/19/1991,19.840000,19.840000,19.840000,19.840000 +02/20/1991,22.260000,22.260000,22.260000,22.260000 +02/21/1991,20.780000,20.780000,20.780000,20.780000 +02/22/1991,21.010000,21.010000,21.010000,21.010000 +02/25/1991,22.860000,22.860000,22.860000,22.860000 +02/26/1991,20.380000,20.380000,20.380000,20.380000 +02/27/1991,21.260000,21.260000,21.260000,21.260000 +02/28/1991,21.230000,21.230000,21.230000,21.230000 +03/04/1991,20.860000,20.860000,20.860000,20.860000 +03/05/1991,20.450000,20.450000,20.450000,20.450000 +03/06/1991,20.550000,20.550000,20.550000,20.550000 +03/07/1991,21.050000,21.050000,21.050000,21.050000 +03/08/1991,20.810000,20.810000,20.810000,20.810000 +03/11/1991,20.880000,20.880000,20.880000,20.880000 +03/12/1991,18.820000,18.820000,18.820000,18.820000 +03/13/1991,16.090000,16.090000,16.090000,16.090000 +03/14/1991,14.940000,14.940000,14.940000,14.940000 +03/15/1991,14.900000,14.900000,14.900000,14.900000 +03/18/1991,15.790000,15.790000,15.790000,15.790000 +03/19/1991,16.110000,16.110000,16.110000,16.110000 +03/20/1991,16.040000,16.040000,16.040000,16.040000 +03/21/1991,16.860000,16.860000,16.860000,16.860000 +03/22/1991,16.490000,16.490000,16.490000,16.490000 +03/25/1991,16.760000,16.760000,16.760000,16.760000 +03/26/1991,16.310000,16.310000,16.310000,16.310000 +03/27/1991,16.550000,16.550000,16.550000,16.550000 +03/28/1991,16.880000,16.880000,16.880000,16.880000 +04/01/1991,17.420000,17.420000,17.420000,17.420000 +04/02/1991,17.400000,17.400000,17.400000,17.400000 +04/03/1991,17.610000,17.610000,17.610000,17.610000 +04/04/1991,18.010000,18.010000,18.010000,18.010000 +04/05/1991,17.630000,17.630000,17.630000,17.630000 +04/08/1991,17.410000,17.410000,17.410000,17.410000 +04/09/1991,20.120000,20.120000,20.120000,20.120000 +04/10/1991,19.730000,19.730000,19.730000,19.730000 +04/11/1991,17.240000,17.240000,17.240000,17.240000 +04/12/1991,18.450000,18.450000,18.450000,18.450000 +04/15/1991,16.500000,16.500000,16.500000,16.500000 +04/16/1991,15.820000,15.820000,15.820000,15.820000 +04/17/1991,15.470000,15.470000,15.470000,15.470000 +04/18/1991,16.260000,16.260000,16.260000,16.260000 +04/19/1991,15.680000,15.680000,15.680000,15.680000 +04/22/1991,16.780000,16.780000,16.780000,16.780000 +04/23/1991,17.020000,17.020000,17.020000,17.020000 +04/24/1991,16.720000,16.720000,16.720000,16.720000 +04/25/1991,17.150000,17.150000,17.150000,17.150000 +04/26/1991,17.270000,17.270000,17.270000,17.270000 +04/29/1991,18.270000,18.270000,18.270000,18.270000 +04/30/1991,18.240000,18.240000,18.240000,18.240000 +05/01/1991,17.770000,17.770000,17.770000,17.770000 +05/02/1991,17.520000,17.520000,17.520000,17.520000 +05/03/1991,17.240000,17.240000,17.240000,17.240000 +05/06/1991,17.920000,17.920000,17.920000,17.920000 +05/07/1991,17.460000,17.460000,17.460000,17.460000 +05/08/1991,17.780000,17.780000,17.780000,17.780000 +05/09/1991,17.170000,17.170000,17.170000,17.170000 +05/10/1991,17.540000,17.540000,17.540000,17.540000 +05/13/1991,17.660000,17.660000,17.660000,17.660000 +05/14/1991,18.000000,18.000000,18.000000,18.000000 +05/15/1991,18.380000,18.380000,18.380000,18.380000 +05/16/1991,17.240000,17.240000,17.240000,17.240000 +05/17/1991,16.640000,16.640000,16.640000,16.640000 +05/20/1991,17.100000,17.100000,17.100000,17.100000 +05/21/1991,16.070000,16.070000,16.070000,16.070000 +05/22/1991,16.160000,16.160000,16.160000,16.160000 +05/23/1991,16.110000,16.110000,16.110000,16.110000 +05/24/1991,15.230000,15.230000,15.230000,15.230000 +05/28/1991,15.670000,15.670000,15.670000,15.670000 +05/29/1991,15.900000,15.900000,15.900000,15.900000 +05/30/1991,16.020000,16.020000,16.020000,16.020000 +05/31/1991,15.930000,15.930000,15.930000,15.930000 +06/03/1991,16.870000,16.870000,16.870000,16.870000 +06/04/1991,16.170000,16.170000,16.170000,16.170000 +06/05/1991,16.400000,16.400000,16.400000,16.400000 +06/06/1991,16.930000,16.930000,16.930000,16.930000 +06/07/1991,16.980000,16.980000,16.980000,16.980000 +06/10/1991,17.470000,17.470000,17.470000,17.470000 +06/11/1991,17.320000,17.320000,17.320000,17.320000 +06/12/1991,17.720000,17.720000,17.720000,17.720000 +06/13/1991,16.990000,16.990000,16.990000,16.990000 +06/14/1991,15.980000,15.980000,15.980000,15.980000 +06/17/1991,15.500000,15.500000,15.500000,15.500000 +06/18/1991,16.140000,16.140000,16.140000,16.140000 +06/19/1991,17.440000,17.440000,17.440000,17.440000 +06/20/1991,16.750000,16.750000,16.750000,16.750000 +06/21/1991,16.510000,16.510000,16.510000,16.510000 +06/24/1991,18.280000,18.280000,18.280000,18.280000 +06/25/1991,17.850000,17.850000,17.850000,17.850000 +06/26/1991,17.980000,17.980000,17.980000,17.980000 +06/27/1991,17.870000,17.870000,17.870000,17.870000 +06/28/1991,19.550000,19.550000,19.550000,19.550000 +07/01/1991,18.640000,18.640000,18.640000,18.640000 +07/02/1991,17.630000,17.630000,17.630000,17.630000 +07/03/1991,19.470000,19.470000,19.470000,19.470000 +07/05/1991,18.350000,18.350000,18.350000,18.350000 +07/08/1991,20.290000,20.290000,20.290000,20.290000 +07/09/1991,19.760000,19.760000,19.760000,19.760000 +07/10/1991,19.190000,19.190000,19.190000,19.190000 +07/11/1991,17.390000,17.390000,17.390000,17.390000 +07/12/1991,18.290000,18.290000,18.290000,18.290000 +07/15/1991,17.780000,17.780000,17.780000,17.780000 +07/16/1991,17.490000,17.490000,17.490000,17.490000 +07/17/1991,17.520000,17.520000,17.520000,17.520000 +07/18/1991,15.770000,15.770000,15.770000,15.770000 +07/19/1991,15.500000,15.500000,15.500000,15.500000 +07/22/1991,16.900000,16.900000,16.900000,16.900000 +07/23/1991,16.580000,16.580000,16.580000,16.580000 +07/24/1991,16.410000,16.410000,16.410000,16.410000 +07/25/1991,15.740000,15.740000,15.740000,15.740000 +07/26/1991,15.450000,15.450000,15.450000,15.450000 +07/29/1991,15.670000,15.670000,15.670000,15.670000 +07/30/1991,15.470000,15.470000,15.470000,15.470000 +07/31/1991,15.180000,15.180000,15.180000,15.180000 +08/01/1991,15.470000,15.470000,15.470000,15.470000 +08/02/1991,15.260000,15.260000,15.260000,15.260000 +08/05/1991,15.920000,15.920000,15.920000,15.920000 +08/06/1991,15.540000,15.540000,15.540000,15.540000 +08/07/1991,15.560000,15.560000,15.560000,15.560000 +08/08/1991,15.980000,15.980000,15.980000,15.980000 +08/09/1991,15.450000,15.450000,15.450000,15.450000 +08/12/1991,15.260000,15.260000,15.260000,15.260000 +08/13/1991,14.730000,14.730000,14.730000,14.730000 +08/14/1991,15.090000,15.090000,15.090000,15.090000 +08/15/1991,15.190000,15.190000,15.190000,15.190000 +08/16/1991,16.010000,16.010000,16.010000,16.010000 +08/19/1991,21.190000,21.190000,21.190000,21.190000 +08/20/1991,18.860000,18.860000,18.860000,18.860000 +08/21/1991,15.620000,15.620000,15.620000,15.620000 +08/22/1991,14.590000,14.590000,14.590000,14.590000 +08/23/1991,14.410000,14.410000,14.410000,14.410000 +08/26/1991,14.810000,14.810000,14.810000,14.810000 +08/27/1991,15.460000,15.460000,15.460000,15.460000 +08/28/1991,15.310000,15.310000,15.310000,15.310000 +08/29/1991,14.820000,14.820000,14.820000,14.820000 +08/30/1991,14.460000,14.460000,14.460000,14.460000 +09/03/1991,16.570000,16.570000,16.570000,16.570000 +09/04/1991,17.180000,17.180000,17.180000,17.180000 +09/05/1991,17.310000,17.310000,17.310000,17.310000 +09/06/1991,16.760000,16.760000,16.760000,16.760000 +09/09/1991,17.730000,17.730000,17.730000,17.730000 +09/10/1991,18.220000,18.220000,18.220000,18.220000 +09/11/1991,17.960000,17.960000,17.960000,17.960000 +09/12/1991,16.210000,16.210000,16.210000,16.210000 +09/13/1991,17.880000,17.880000,17.880000,17.880000 +09/16/1991,17.820000,17.820000,17.820000,17.820000 +09/17/1991,17.680000,17.680000,17.680000,17.680000 +09/18/1991,17.560000,17.560000,17.560000,17.560000 +09/19/1991,17.560000,17.560000,17.560000,17.560000 +09/20/1991,17.080000,17.080000,17.080000,17.080000 +09/23/1991,16.380000,16.380000,16.380000,16.380000 +09/24/1991,16.040000,16.040000,16.040000,16.040000 +09/25/1991,15.680000,15.680000,15.680000,15.680000 +09/26/1991,15.350000,15.350000,15.350000,15.350000 +09/27/1991,16.310000,16.310000,16.310000,16.310000 +09/30/1991,15.850000,15.850000,15.850000,15.850000 +10/01/1991,14.810000,14.810000,14.810000,14.810000 +10/02/1991,15.810000,15.810000,15.810000,15.810000 +10/03/1991,17.040000,17.040000,17.040000,17.040000 +10/04/1991,15.630000,15.630000,15.630000,15.630000 +10/07/1991,18.580000,18.580000,18.580000,18.580000 +10/08/1991,17.810000,17.810000,17.810000,17.810000 +10/09/1991,18.540000,18.540000,18.540000,18.540000 +10/10/1991,17.800000,17.800000,17.800000,17.800000 +10/11/1991,17.600000,17.600000,17.600000,17.600000 +10/14/1991,16.710000,16.710000,16.710000,16.710000 +10/15/1991,16.220000,16.220000,16.220000,16.220000 +10/16/1991,14.850000,14.850000,14.850000,14.850000 +10/17/1991,16.320000,16.320000,16.320000,16.320000 +10/18/1991,15.870000,15.870000,15.870000,15.870000 +10/21/1991,16.660000,16.660000,16.660000,16.660000 +10/22/1991,16.550000,16.550000,16.550000,16.550000 +10/23/1991,16.260000,16.260000,16.260000,16.260000 +10/24/1991,15.620000,15.620000,15.620000,15.620000 +10/25/1991,15.750000,15.750000,15.750000,15.750000 +10/28/1991,15.450000,15.450000,15.450000,15.450000 +10/29/1991,15.550000,15.550000,15.550000,15.550000 +10/30/1991,15.460000,15.460000,15.460000,15.460000 +10/31/1991,15.480000,15.480000,15.480000,15.480000 +11/01/1991,15.600000,15.600000,15.600000,15.600000 +11/04/1991,16.350000,16.350000,16.350000,16.350000 +11/05/1991,16.480000,16.480000,16.480000,16.480000 +11/06/1991,16.470000,16.470000,16.470000,16.470000 +11/07/1991,15.970000,15.970000,15.970000,15.970000 +11/08/1991,15.430000,15.430000,15.430000,15.430000 +11/11/1991,14.890000,14.890000,14.890000,14.890000 +11/12/1991,14.040000,14.040000,14.040000,14.040000 +11/13/1991,13.950000,13.950000,13.950000,13.950000 +11/14/1991,13.960000,13.960000,13.960000,13.960000 +11/15/1991,21.180000,21.180000,21.180000,21.180000 +11/18/1991,18.280000,18.280000,18.280000,18.280000 +11/19/1991,20.340000,20.340000,20.340000,20.340000 +11/20/1991,20.400000,20.400000,20.400000,20.400000 +11/21/1991,19.110000,19.110000,19.110000,19.110000 +11/22/1991,21.200000,21.200000,21.200000,21.200000 +11/25/1991,21.920000,21.920000,21.920000,21.920000 +11/26/1991,19.800000,19.800000,19.800000,19.800000 +11/27/1991,19.840000,19.840000,19.840000,19.840000 +11/29/1991,20.260000,20.260000,20.260000,20.260000 +12/02/1991,20.180000,20.180000,20.180000,20.180000 +12/03/1991,19.700000,19.700000,19.700000,19.700000 +12/04/1991,19.540000,19.540000,19.540000,19.540000 +12/05/1991,20.190000,20.190000,20.190000,20.190000 +12/06/1991,19.040000,19.040000,19.040000,19.040000 +12/09/1991,19.740000,19.740000,19.740000,19.740000 +12/10/1991,19.890000,19.890000,19.890000,19.890000 +12/11/1991,20.570000,20.570000,20.570000,20.570000 +12/12/1991,19.080000,19.080000,19.080000,19.080000 +12/13/1991,17.880000,17.880000,17.880000,17.880000 +12/16/1991,17.620000,17.620000,17.620000,17.620000 +12/17/1991,18.120000,18.120000,18.120000,18.120000 +12/18/1991,17.780000,17.780000,17.780000,17.780000 +12/19/1991,17.960000,17.960000,17.960000,17.960000 +12/20/1991,17.650000,17.650000,17.650000,17.650000 +12/23/1991,16.610000,16.610000,16.610000,16.610000 +12/24/1991,15.670000,15.670000,15.670000,15.670000 +12/26/1991,15.440000,15.440000,15.440000,15.440000 +12/27/1991,15.700000,15.700000,15.700000,15.700000 +12/30/1991,17.630000,17.630000,17.630000,17.630000 +12/31/1991,19.310000,19.310000,19.310000,19.310000 +01/02/1992,19.690000,20.150000,18.880000,18.950000 +01/03/1992,17.040000,19.230000,17.040000,18.750000 +01/06/1992,16.230000,19.490000,16.080000,18.960000 +01/07/1992,20.300000,20.300000,19.120000,19.230000 +01/08/1992,17.530000,19.270000,17.300000,18.720000 +01/09/1992,17.580000,19.410000,17.580000,18.960000 +01/10/1992,18.500000,18.890000,18.300000,18.450000 +01/13/1992,19.050000,19.050000,18.010000,18.010000 +01/14/1992,17.730000,17.730000,16.160000,17.010000 +01/15/1992,17.810000,17.910000,17.310000,17.390000 +01/16/1992,18.430000,18.430000,17.420000,17.640000 +01/17/1992,16.590000,16.770000,16.010000,16.320000 +01/20/1992,16.570000,16.720000,16.240000,16.420000 +01/21/1992,16.740000,18.190000,16.600000,17.920000 +01/22/1992,17.540000,17.580000,16.720000,16.750000 +01/23/1992,15.480000,16.730000,15.400000,16.460000 +01/24/1992,16.230000,16.330000,15.650000,16.240000 +01/27/1992,16.150000,16.820000,16.150000,16.670000 +01/28/1992,17.070000,17.700000,16.990000,17.670000 +01/29/1992,16.570000,18.040000,16.050000,17.620000 +01/30/1992,16.870000,17.750000,16.870000,17.490000 +01/31/1992,14.160000,17.510000,14.120000,17.400000 +02/03/1992,17.080000,19.210000,17.010000,18.200000 +02/04/1992,17.160000,18.720000,16.840000,17.960000 +02/05/1992,18.150000,18.350000,17.980000,18.220000 +02/06/1992,18.800000,18.930000,18.640000,18.790000 +02/07/1992,18.430000,19.310000,18.130000,18.510000 +02/10/1992,19.240000,19.250000,18.550000,18.560000 +02/11/1992,19.240000,18.570000,17.610000,17.700000 +02/12/1992,18.220000,18.230000,17.370000,17.370000 +02/13/1992,15.420000,18.030000,15.350000,17.450000 +02/14/1992,17.520000,17.620000,16.810000,17.030000 +02/18/1992,17.790000,18.320000,17.380000,18.220000 +02/19/1992,17.790000,17.690000,16.850000,17.160000 +02/20/1992,15.660000,17.320000,15.590000,16.720000 +02/21/1992,15.750000,17.410000,15.750000,16.870000 +02/24/1992,17.470000,17.550000,17.070000,17.130000 +02/25/1992,15.860000,17.100000,15.520000,16.350000 +02/26/1992,15.660000,16.740000,15.660000,16.640000 +02/27/1992,16.970000,17.080000,16.360000,16.510000 +02/28/1992,15.340000,17.170000,15.340000,16.680000 +03/02/1992,17.440000,17.500000,16.880000,16.880000 +03/03/1992,17.360000,17.410000,16.920000,17.260000 +03/04/1992,17.820000,17.920000,17.430000,17.890000 +03/05/1992,18.570000,18.890000,17.940000,18.470000 +03/06/1992,18.250000,20.040000,18.140000,19.750000 +03/09/1992,20.670000,20.680000,19.660000,19.680000 +03/10/1992,19.620000,19.630000,18.600000,18.680000 +03/11/1992,19.230000,20.340000,19.180000,19.790000 +03/12/1992,19.470000,21.060000,19.470000,19.720000 +03/13/1992,18.390000,18.880000,17.980000,18.350000 +03/16/1992,19.130000,19.130000,18.440000,18.460000 +03/17/1992,17.780000,17.840000,16.790000,16.790000 +03/18/1992,16.950000,16.970000,16.610000,16.690000 +03/19/1992,16.730000,16.850000,16.440000,16.520000 +03/20/1992,16.730000,16.900000,16.580000,16.820000 +03/23/1992,17.630000,17.630000,16.730000,16.730000 +03/24/1992,16.270000,16.700000,16.180000,16.320000 +03/25/1992,16.410000,16.410000,16.080000,16.190000 +03/26/1992,16.550000,16.600000,16.100000,16.290000 +03/27/1992,15.880000,16.090000,15.460000,16.020000 +03/30/1992,16.430000,16.530000,15.900000,15.970000 +03/31/1992,16.450000,16.560000,15.980000,16.180000 +04/01/1992,16.930000,17.110000,16.430000,16.480000 +04/02/1992,16.250000,17.170000,16.110000,17.060000 +04/03/1992,18.220000,18.320000,16.710000,16.720000 +04/06/1992,17.180000,17.200000,16.590000,16.720000 +04/07/1992,17.260000,18.810000,16.560000,18.810000 +04/08/1992,20.060000,21.440000,19.660000,20.150000 +04/09/1992,18.950000,18.960000,17.480000,17.890000 +04/10/1992,17.390000,17.430000,16.790000,16.850000 +04/13/1992,17.420000,17.510000,16.930000,16.990000 +04/14/1992,16.820000,16.820000,15.880000,15.980000 +04/15/1992,16.360000,16.450000,15.150000,15.150000 +04/16/1992,15.170000,15.580000,14.830000,14.850000 +04/20/1992,16.150000,16.540000,15.700000,15.930000 +04/21/1992,16.000000,16.860000,15.740000,16.530000 +04/22/1992,16.030000,16.150000,15.860000,15.960000 +04/23/1992,16.100000,16.750000,15.830000,15.830000 +04/24/1992,15.730000,16.830000,15.530000,15.710000 +04/27/1992,16.930000,16.930000,16.380000,16.490000 +04/28/1992,16.560000,16.900000,16.240000,16.240000 +04/29/1992,16.380000,16.400000,15.860000,15.950000 +04/30/1992,15.860000,15.940000,15.530000,15.530000 +05/01/1992,14.870000,17.360000,14.840000,16.610000 +05/04/1992,16.700000,17.760000,16.480000,16.920000 +05/05/1992,15.560000,17.120000,15.490000,16.660000 +05/06/1992,16.110000,17.330000,15.900000,16.810000 +05/07/1992,15.800000,17.290000,15.670000,16.540000 +05/08/1992,16.180000,16.340000,15.520000,15.650000 +05/11/1992,15.870000,15.900000,15.170000,15.170000 +05/12/1992,15.400000,15.870000,15.320000,15.680000 +05/13/1992,15.880000,15.880000,15.190000,15.190000 +05/14/1992,14.380000,16.190000,14.350000,15.490000 +05/15/1992,14.380000,16.060000,14.100000,14.820000 +05/18/1992,15.170000,15.460000,14.580000,14.620000 +05/19/1992,13.950000,14.400000,13.440000,13.570000 +05/20/1992,12.980000,14.190000,12.980000,13.620000 +05/21/1992,14.010000,15.120000,13.920000,13.920000 +05/22/1992,14.030000,14.310000,13.530000,13.730000 +05/26/1992,13.930000,15.280000,13.770000,14.920000 +05/27/1992,13.840000,14.360000,13.590000,13.990000 +05/28/1992,14.250000,14.570000,13.720000,13.770000 +05/29/1992,12.770000,14.280000,12.770000,13.860000 +06/01/1992,14.470000,14.840000,13.920000,14.430000 +06/02/1992,12.920000,15.220000,12.730000,14.570000 +06/03/1992,13.240000,14.970000,13.240000,14.350000 +06/04/1992,13.210000,14.320000,13.140000,13.660000 +06/05/1992,14.570000,14.960000,14.500000,14.650000 +06/08/1992,15.600000,15.600000,15.100000,15.190000 +06/09/1992,15.280000,15.980000,15.170000,15.970000 +06/10/1992,15.900000,16.620000,15.750000,16.620000 +06/11/1992,16.910000,16.950000,16.290000,16.290000 +06/12/1992,15.370000,15.480000,14.710000,14.950000 +06/15/1992,16.110000,16.110000,14.720000,14.760000 +06/16/1992,15.120000,15.230000,14.820000,15.220000 +06/17/1992,15.760000,18.080000,15.740000,18.080000 +06/18/1992,18.230000,18.530000,17.640000,18.200000 +06/19/1992,17.430000,17.530000,16.280000,16.310000 +06/22/1992,14.660000,17.790000,14.640000,16.660000 +06/23/1992,14.270000,15.290000,14.170000,14.530000 +06/24/1992,14.260000,14.750000,14.120000,14.400000 +06/25/1992,13.930000,15.000000,13.850000,14.400000 +06/26/1992,14.130000,15.000000,14.130000,14.670000 +06/29/1992,13.940000,14.410000,13.210000,13.210000 +06/30/1992,13.660000,14.310000,13.190000,13.350000 +07/01/1992,13.430000,13.570000,12.980000,13.340000 +07/02/1992,12.690000,14.830000,12.680000,13.880000 +07/06/1992,14.270000,15.430000,14.270000,14.870000 +07/07/1992,14.030000,15.860000,14.030000,15.830000 +07/08/1992,14.170000,16.360000,14.170000,15.530000 +07/09/1992,14.340000,15.410000,14.050000,14.600000 +07/10/1992,13.930000,14.120000,13.560000,13.700000 +07/13/1992,12.470000,14.570000,12.470000,14.010000 +07/14/1992,14.260000,14.390000,13.290000,13.500000 +07/15/1992,12.410000,13.080000,12.310000,12.520000 +07/16/1992,12.130000,12.880000,11.780000,12.270000 +07/17/1992,13.150000,13.480000,12.400000,12.600000 +07/20/1992,13.540000,13.540000,12.620000,12.660000 +07/21/1992,12.200000,12.810000,12.170000,12.600000 +07/22/1992,11.360000,14.010000,11.360000,13.570000 +07/23/1992,13.330000,13.900000,13.240000,13.330000 +07/24/1992,12.250000,14.160000,12.250000,13.370000 +07/27/1992,13.340000,14.950000,13.340000,13.900000 +07/28/1992,11.500000,14.000000,11.500000,13.050000 +07/29/1992,12.210000,13.790000,12.210000,13.440000 +07/30/1992,13.450000,13.790000,12.980000,13.500000 +07/31/1992,12.550000,13.640000,12.550000,13.170000 +08/03/1992,14.050000,14.330000,13.200000,13.830000 +08/04/1992,13.340000,14.330000,13.110000,13.580000 +08/05/1992,12.410000,14.340000,12.410000,13.820000 +08/06/1992,12.400000,14.790000,12.340000,14.230000 +08/07/1992,13.930000,14.280000,13.170000,13.940000 +08/10/1992,13.870000,15.430000,13.830000,14.510000 +08/11/1992,15.320000,15.920000,15.090000,15.090000 +08/12/1992,14.280000,15.570000,13.510000,14.880000 +08/13/1992,13.450000,15.790000,13.440000,15.340000 +08/14/1992,15.630000,15.700000,14.660000,14.660000 +08/17/1992,14.320000,15.540000,13.830000,14.610000 +08/18/1992,14.670000,14.810000,13.840000,13.840000 +08/19/1992,14.670000,14.840000,13.910000,14.350000 +08/20/1992,14.370000,14.720000,14.130000,14.480000 +08/21/1992,13.740000,15.480000,13.400000,15.010000 +08/24/1992,13.740000,16.480000,15.210000,16.190000 +08/25/1992,14.870000,16.520000,14.870000,15.620000 +08/26/1992,14.050000,15.410000,14.050000,14.500000 +08/27/1992,14.050000,13.860000,12.880000,13.660000 +08/28/1992,12.570000,13.420000,12.520000,13.140000 +08/31/1992,12.660000,13.890000,12.660000,13.580000 +09/01/1992,11.870000,13.440000,11.850000,13.400000 +09/02/1992,12.690000,13.090000,12.570000,12.730000 +09/03/1992,10.770000,12.880000,10.690000,12.880000 +09/04/1992,12.920000,13.160000,12.750000,12.980000 +09/08/1992,13.360000,13.900000,13.360000,13.650000 +09/09/1992,13.030000,13.920000,13.010000,13.360000 +09/10/1992,12.640000,13.280000,12.590000,12.920000 +09/11/1992,12.390000,13.020000,11.960000,12.470000 +09/14/1992,13.370000,13.370000,12.510000,13.000000 +09/15/1992,11.530000,13.750000,11.530000,13.630000 +09/16/1992,11.530000,14.860000,13.520000,14.720000 +09/17/1992,13.610000,14.410000,13.610000,14.310000 +09/18/1992,13.610000,13.940000,12.800000,13.740000 +09/21/1992,12.990000,13.720000,12.960000,13.450000 +09/22/1992,13.570000,14.100000,13.530000,13.880000 +09/23/1992,13.720000,14.110000,13.710000,13.830000 +09/24/1992,13.760000,13.860000,13.420000,13.440000 +09/25/1992,13.770000,14.980000,13.540000,14.800000 +09/28/1992,15.420000,15.420000,15.110000,15.190000 +09/29/1992,15.230000,15.360000,14.870000,14.970000 +09/30/1992,13.960000,14.890000,13.960000,14.280000 +10/01/1992,15.440000,16.310000,15.030000,16.310000 +10/02/1992,15.330000,17.800000,15.320000,17.790000 +10/05/1992,19.770000,25.130000,19.370000,20.010000 +10/06/1992,20.370000,20.420000,19.490000,19.950000 +10/07/1992,19.070000,21.080000,18.900000,21.020000 +10/08/1992,19.570000,19.940000,18.950000,19.260000 +10/09/1992,19.570000,21.000000,19.670000,20.510000 +10/12/1992,20.610000,20.620000,19.480000,19.490000 +10/13/1992,16.840000,18.440000,16.150000,17.900000 +10/14/1992,15.770000,18.520000,15.580000,18.420000 +10/15/1992,18.110000,18.150000,16.910000,17.110000 +10/16/1992,15.800000,17.670000,15.470000,17.010000 +10/19/1992,16.890000,17.350000,16.430000,17.310000 +10/20/1992,16.000000,17.100000,15.740000,16.870000 +10/21/1992,17.080000,17.080000,16.620000,16.620000 +10/22/1992,15.830000,16.240000,15.720000,15.840000 +10/23/1992,17.110000,17.210000,16.460000,16.460000 +10/26/1992,16.930000,17.320000,16.310000,16.320000 +10/27/1992,16.330000,16.750000,16.130000,16.240000 +10/28/1992,16.330000,16.660000,15.810000,15.950000 +10/29/1992,15.680000,15.830000,15.390000,15.470000 +10/30/1992,15.900000,16.600000,15.570000,16.150000 +11/02/1992,17.020000,17.130000,16.570000,16.670000 +11/03/1992,16.010000,17.920000,15.960000,17.330000 +11/04/1992,16.330000,16.870000,16.170000,16.280000 +11/05/1992,16.100000,16.100000,15.350000,15.380000 +11/06/1992,15.660000,15.680000,14.650000,14.690000 +11/09/1992,15.660000,15.140000,14.060000,14.230000 +11/10/1992,14.510000,14.710000,14.270000,14.370000 +11/11/1992,14.600000,15.020000,13.990000,13.990000 +11/12/1992,16.360000,16.360000,14.320000,14.370000 +11/13/1992,14.800000,14.860000,14.030000,14.610000 +11/16/1992,14.680000,14.890000,14.640000,14.860000 +11/17/1992,15.740000,15.850000,14.440000,15.010000 +11/18/1992,14.980000,14.980000,14.180000,14.550000 +11/19/1992,14.980000,15.100000,14.140000,14.330000 +11/20/1992,14.980000,14.200000,13.440000,13.670000 +11/23/1992,12.930000,13.950000,12.890000,13.400000 +11/24/1992,12.540000,13.370000,12.460000,12.660000 +11/25/1992,12.480000,12.950000,12.480000,12.500000 +11/27/1992,11.630000,12.670000,11.520000,12.580000 +11/30/1992,11.380000,13.670000,11.380000,13.010000 +12/01/1992,12.940000,13.890000,12.760000,12.800000 +12/02/1992,12.060000,13.490000,11.990000,12.560000 +12/03/1992,12.090000,12.780000,11.840000,12.030000 +12/04/1992,11.690000,12.460000,11.540000,11.810000 +12/07/1992,12.000000,12.610000,11.700000,12.000000 +12/08/1992,10.290000,12.380000,10.290000,11.730000 +12/09/1992,10.290000,13.340000,10.930000,12.580000 +12/10/1992,12.360000,13.370000,12.260000,12.750000 +12/11/1992,12.360000,13.520000,11.010000,12.340000 +12/14/1992,12.610000,12.830000,12.360000,12.660000 +12/15/1992,12.610000,12.920000,12.370000,12.410000 +12/16/1992,12.610000,12.880000,12.150000,12.580000 +12/17/1992,12.030000,12.600000,11.860000,12.140000 +12/18/1992,12.030000,12.580000,10.640000,11.660000 +12/21/1992,12.030000,11.970000,11.200000,11.650000 +12/22/1992,10.570000,12.810000,10.360000,11.750000 +12/23/1992,10.570000,11.900000,11.270000,11.510000 +12/24/1992,11.500000,11.990000,11.300000,11.570000 +12/28/1992,12.670000,12.850000,12.110000,12.220000 +12/29/1992,12.270000,12.840000,11.720000,12.290000 +12/30/1992,12.140000,13.600000,12.140000,12.600000 +12/31/1992,11.870000,13.050000,11.750000,12.570000 +01/04/1993,12.960000,13.920000,12.910000,13.360000 +01/05/1993,12.990000,14.080000,12.920000,13.350000 +01/06/1993,12.880000,14.170000,11.860000,13.370000 +01/07/1993,12.900000,15.060000,12.650000,14.720000 +01/08/1993,13.750000,14.390000,13.610000,13.770000 +01/11/1993,13.270000,13.570000,12.430000,12.860000 +01/12/1993,11.820000,13.870000,11.740000,12.780000 +01/13/1993,13.020000,13.020000,12.150000,12.420000 +01/14/1993,12.290000,12.330000,11.930000,11.990000 +01/15/1993,11.900000,11.960000,11.250000,11.570000 +01/18/1993,12.150000,12.170000,11.490000,11.490000 +01/19/1993,11.640000,12.170000,11.620000,12.060000 +01/20/1993,12.210000,12.340000,11.850000,12.150000 +01/21/1993,12.410000,12.450000,11.690000,11.690000 +01/22/1993,11.630000,11.740000,11.220000,11.300000 +01/25/1993,11.420000,11.650000,11.260000,11.380000 +01/26/1993,11.080000,11.500000,10.980000,11.450000 +01/27/1993,11.660000,12.610000,11.440000,12.010000 +01/28/1993,12.080000,12.460000,11.900000,12.040000 +01/29/1993,12.490000,13.160000,12.420000,12.420000 +02/01/1993,12.510000,12.920000,12.180000,12.330000 +02/02/1993,12.470000,12.890000,12.220000,12.250000 +02/03/1993,11.980000,12.340000,11.790000,12.120000 +02/04/1993,11.860000,12.840000,11.690000,12.290000 +02/05/1993,12.560000,13.450000,12.490000,12.900000 +02/08/1993,13.150000,13.940000,12.200000,13.220000 +02/09/1993,13.630000,13.760000,13.430000,13.480000 +02/10/1993,13.580000,14.260000,13.000000,13.430000 +02/11/1993,13.050000,13.650000,12.630000,12.690000 +02/12/1993,13.580000,13.660000,12.320000,12.380000 +02/16/1993,13.440000,16.450000,13.350000,15.760000 +02/17/1993,15.960000,16.340000,15.570000,15.900000 +02/18/1993,14.690000,16.650000,14.320000,15.560000 +02/19/1993,15.740000,15.740000,15.000000,15.020000 +02/22/1993,15.030000,15.250000,14.340000,14.700000 +02/23/1993,15.100000,15.430000,14.600000,15.040000 +02/24/1993,14.000000,15.030000,14.000000,14.720000 +02/25/1993,12.990000,14.790000,12.950000,13.760000 +02/26/1993,13.470000,13.820000,13.120000,13.160000 +03/01/1993,13.130000,14.110000,13.070000,13.600000 +03/02/1993,13.760000,13.800000,12.490000,12.490000 +03/03/1993,13.140000,13.710000,12.930000,13.130000 +03/04/1993,12.520000,14.020000,12.500000,13.440000 +03/05/1993,13.200000,14.130000,12.980000,14.080000 +03/08/1993,15.000000,16.300000,14.950000,16.220000 +03/09/1993,14.020000,15.430000,13.780000,14.170000 +03/10/1993,14.630000,14.720000,13.850000,13.910000 +03/11/1993,13.970000,14.270000,13.920000,14.260000 +03/12/1993,15.600000,16.370000,14.910000,15.660000 +03/15/1993,15.010000,15.060000,14.630000,14.740000 +03/16/1993,13.050000,14.680000,13.050000,14.510000 +03/17/1993,15.060000,15.180000,14.400000,14.530000 +03/18/1993,14.330000,15.070000,14.170000,14.170000 +03/19/1993,14.330000,13.890000,13.110000,13.230000 +03/22/1993,13.970000,14.420000,13.650000,13.660000 +03/23/1993,12.710000,13.370000,12.690000,13.020000 +03/24/1993,12.230000,12.890000,12.060000,12.440000 +03/25/1993,12.710000,12.810000,12.040000,12.080000 +03/26/1993,10.660000,12.380000,10.660000,12.210000 +03/29/1993,13.040000,13.040000,12.270000,12.630000 +03/30/1993,12.580000,12.820000,12.230000,12.230000 +03/31/1993,12.290000,12.900000,12.190000,12.530000 +04/01/1993,13.040000,14.050000,12.700000,13.020000 +04/02/1993,14.270000,14.850000,13.990000,14.500000 +04/05/1993,14.430000,15.060000,14.060000,14.120000 +04/06/1993,13.730000,14.840000,13.720000,14.240000 +04/07/1993,13.750000,14.580000,13.580000,13.640000 +04/08/1993,12.330000,13.650000,12.160000,12.830000 +04/12/1993,12.330000,12.780000,11.520000,11.930000 +04/13/1993,12.590000,12.950000,11.480000,11.700000 +04/14/1993,12.330000,12.410000,11.610000,11.760000 +04/15/1993,11.960000,11.970000,10.710000,10.960000 +04/16/1993,11.110000,11.500000,10.740000,11.290000 +04/19/1993,11.110000,12.350000,11.390000,12.060000 +04/20/1993,11.820000,12.540000,11.750000,11.940000 +04/21/1993,12.410000,12.820000,12.020000,12.110000 +04/22/1993,11.580000,13.010000,11.450000,12.680000 +04/23/1993,13.200000,13.980000,12.920000,13.360000 +04/26/1993,14.060000,15.450000,13.990000,15.250000 +04/27/1993,15.390000,15.450000,13.930000,13.930000 +04/28/1993,15.390000,13.780000,11.280000,13.120000 +04/29/1993,13.240000,13.440000,12.800000,12.800000 +04/30/1993,11.260000,12.670000,11.250000,12.420000 +05/03/1993,13.250000,13.520000,12.790000,12.900000 +05/04/1993,13.050000,13.070000,12.100000,12.140000 +05/05/1993,12.120000,12.750000,11.960000,12.380000 +05/06/1993,12.830000,13.720000,12.580000,13.220000 +05/07/1993,12.930000,13.480000,12.870000,13.010000 +05/10/1993,13.420000,14.710000,13.250000,13.720000 +05/11/1993,13.620000,14.190000,13.350000,13.350000 +05/12/1993,12.980000,14.110000,12.870000,13.560000 +05/13/1993,14.630000,14.790000,14.180000,14.760000 +05/14/1993,14.630000,14.970000,14.020000,14.390000 +05/17/1993,14.850000,14.850000,14.100000,14.130000 +05/18/1993,14.520000,14.620000,14.080000,14.190000 +05/19/1993,14.460000,15.020000,13.760000,14.290000 +05/20/1993,14.460000,15.110000,13.310000,13.980000 +05/21/1993,14.160000,14.960000,13.670000,14.510000 +05/24/1993,14.160000,14.800000,14.090000,14.100000 +05/25/1993,13.730000,14.340000,13.730000,14.040000 +05/26/1993,13.200000,13.820000,12.880000,12.880000 +05/27/1993,13.580000,13.730000,13.090000,13.100000 +05/28/1993,13.210000,13.860000,13.120000,13.470000 +06/01/1993,13.210000,14.630000,13.640000,13.670000 +06/02/1993,13.590000,14.210000,13.180000,13.480000 +06/03/1993,13.670000,14.120000,13.470000,13.540000 +06/04/1993,12.960000,13.510000,12.860000,12.860000 +06/07/1993,12.760000,14.780000,12.630000,14.070000 +06/08/1993,15.220000,15.220000,14.270000,14.740000 +06/09/1993,15.740000,15.880000,13.750000,13.960000 +06/10/1993,13.590000,14.240000,13.290000,13.310000 +06/11/1993,13.350000,13.420000,12.710000,12.710000 +06/14/1993,12.320000,12.360000,12.180000,12.330000 +06/15/1993,12.320000,12.970000,11.930000,11.990000 +06/16/1993,12.320000,12.840000,11.870000,11.870000 +06/17/1993,12.850000,12.870000,11.540000,11.660000 +06/18/1993,11.730000,12.400000,11.730000,12.240000 +06/21/1993,12.570000,12.650000,12.230000,12.250000 +06/22/1993,11.670000,12.070000,11.390000,11.650000 +06/23/1993,11.240000,12.330000,11.140000,12.040000 +06/24/1993,12.910000,12.970000,12.240000,12.250000 +06/25/1993,12.150000,12.150000,11.110000,11.250000 +06/28/1993,12.130000,12.880000,11.070000,11.110000 +06/29/1993,11.460000,11.790000,11.270000,11.290000 +06/30/1993,11.220000,11.720000,10.860000,11.260000 +07/01/1993,10.490000,12.240000,10.470000,11.510000 +07/02/1993,11.600000,11.670000,11.260000,11.330000 +07/06/1993,13.000000,14.370000,12.560000,13.870000 +07/07/1993,13.430000,14.150000,12.950000,13.050000 +07/08/1993,11.190000,13.430000,11.190000,12.240000 +07/09/1993,11.280000,11.840000,10.190000,10.800000 +07/12/1993,9.180000,11.150000,9.110000,10.850000 +07/13/1993,9.180000,11.810000,10.270000,11.020000 +07/14/1993,9.180000,11.670000,10.040000,10.780000 +07/15/1993,10.940000,10.950000,10.450000,10.600000 +07/16/1993,10.660000,11.170000,10.050000,10.960000 +07/19/1993,11.440000,11.740000,11.090000,11.460000 +07/20/1993,11.100000,12.120000,10.950000,11.050000 +07/21/1993,12.050000,12.280000,11.910000,11.970000 +07/22/1993,11.940000,11.940000,11.110000,11.690000 +07/23/1993,11.150000,11.780000,10.860000,11.320000 +07/26/1993,11.650000,11.770000,11.220000,11.320000 +07/27/1993,11.870000,12.220000,11.310000,11.340000 +07/28/1993,11.870000,11.870000,10.640000,11.370000 +07/29/1993,11.540000,11.850000,11.150000,11.250000 +07/30/1993,11.540000,12.060000,10.340000,11.730000 +08/02/1993,11.810000,12.060000,11.430000,11.470000 +08/03/1993,10.950000,12.300000,10.800000,11.490000 +08/04/1993,10.920000,12.230000,10.810000,11.710000 +08/05/1993,11.940000,12.630000,11.660000,12.030000 +08/06/1993,12.180000,13.180000,12.010000,12.330000 +08/09/1993,12.150000,13.140000,11.910000,12.390000 +08/10/1993,11.970000,13.100000,11.900000,12.310000 +08/11/1993,12.360000,12.720000,12.040000,12.070000 +08/12/1993,12.220000,13.170000,12.150000,12.380000 +08/13/1993,12.800000,13.250000,12.170000,12.190000 +08/16/1993,12.370000,12.440000,11.770000,12.010000 +08/17/1993,11.780000,12.710000,11.520000,11.590000 +08/18/1993,12.060000,12.250000,11.380000,11.520000 +08/19/1993,12.070000,12.070000,11.380000,11.630000 +08/20/1993,11.290000,12.110000,11.240000,11.620000 +08/23/1993,12.360000,12.470000,12.110000,12.150000 +08/24/1993,11.940000,12.660000,11.700000,11.800000 +08/25/1993,11.780000,12.680000,11.730000,12.100000 +08/26/1993,11.850000,12.770000,11.540000,12.140000 +08/27/1993,11.850000,12.550000,11.650000,11.910000 +08/30/1993,11.340000,12.280000,11.230000,11.740000 +08/31/1993,12.550000,13.100000,11.770000,11.850000 +09/01/1993,11.300000,12.220000,11.300000,11.480000 +09/02/1993,11.910000,12.640000,11.760000,11.870000 +09/03/1993,11.560000,11.730000,10.750000,11.160000 +09/07/1993,11.800000,13.330000,11.790000,12.900000 +09/08/1993,12.260000,13.890000,12.240000,13.240000 +09/09/1993,13.380000,13.380000,12.540000,12.670000 +09/10/1993,12.160000,12.160000,11.290000,11.700000 +09/13/1993,11.670000,12.440000,11.660000,12.160000 +09/14/1993,13.490000,13.830000,12.670000,13.150000 +09/15/1993,13.490000,13.430000,12.470000,12.700000 +09/16/1993,13.490000,13.780000,12.730000,13.360000 +09/17/1993,11.320000,14.050000,11.300000,13.390000 +09/20/1993,13.660000,14.730000,13.420000,14.600000 +09/21/1993,14.570000,18.310000,14.520000,17.300000 +09/22/1993,14.780000,14.810000,13.730000,13.750000 +09/23/1993,13.470000,13.850000,13.210000,13.360000 +09/24/1993,12.580000,12.780000,12.350000,12.470000 +09/27/1993,12.760000,12.850000,12.310000,12.490000 +09/28/1993,11.910000,12.860000,11.840000,12.190000 +09/29/1993,12.000000,13.110000,11.900000,12.630000 +09/30/1993,13.080000,13.230000,12.540000,12.990000 +10/01/1993,12.560000,12.560000,11.760000,11.830000 +10/04/1993,13.270000,13.600000,12.750000,12.850000 +10/05/1993,13.150000,13.760000,12.520000,12.970000 +10/06/1993,13.070000,13.130000,12.380000,12.680000 +10/07/1993,12.650000,13.560000,12.440000,13.140000 +10/08/1993,12.650000,13.420000,11.600000,12.040000 +10/11/1993,13.080000,13.370000,12.040000,12.260000 +10/12/1993,14.640000,14.790000,12.010000,12.410000 +10/13/1993,10.620000,13.350000,10.600000,11.380000 +10/14/1993,12.350000,12.400000,11.000000,11.000000 +10/15/1993,12.350000,11.630000,10.440000,10.870000 +10/18/1993,12.270000,12.270000,11.180000,11.330000 +10/19/1993,11.730000,12.080000,11.310000,11.610000 +10/20/1993,11.200000,11.680000,11.200000,11.320000 +10/21/1993,10.700000,11.640000,10.600000,11.200000 +10/22/1993,10.750000,11.750000,10.750000,11.480000 +10/25/1993,11.670000,12.340000,11.670000,11.830000 +10/26/1993,10.040000,12.200000,10.000000,11.830000 +10/27/1993,10.040000,12.310000,11.640000,12.010000 +10/28/1993,11.950000,12.100000,11.720000,11.880000 +10/29/1993,11.950000,11.800000,10.800000,11.460000 +11/01/1993,12.020000,12.190000,11.770000,11.780000 +11/02/1993,11.680000,12.370000,11.490000,11.740000 +11/03/1993,11.720000,13.870000,11.530000,13.260000 +11/04/1993,13.520000,15.160000,13.130000,14.680000 +11/05/1993,14.570000,16.460000,14.560000,14.970000 +11/08/1993,16.120000,16.120000,14.190000,14.310000 +11/09/1993,13.920000,14.360000,13.160000,13.940000 +11/10/1993,13.180000,14.340000,12.990000,13.720000 +11/11/1993,13.250000,14.660000,13.020000,13.880000 +11/12/1993,14.470000,14.610000,12.990000,13.330000 +11/15/1993,13.790000,15.300000,13.780000,14.460000 +11/16/1993,15.030000,15.730000,14.970000,15.110000 +11/17/1993,15.690000,16.290000,15.170000,15.570000 +11/18/1993,15.440000,15.620000,14.560000,14.650000 +11/19/1993,14.990000,15.510000,14.530000,15.030000 +11/22/1993,16.200000,16.450000,15.770000,15.900000 +11/23/1993,16.200000,14.860000,13.860000,14.270000 +11/24/1993,16.200000,13.890000,13.190000,13.510000 +11/26/1993,13.300000,14.530000,13.290000,13.770000 +11/29/1993,13.390000,14.650000,13.390000,14.120000 +11/30/1993,13.390000,14.630000,13.480000,13.760000 +12/01/1993,12.930000,14.400000,12.920000,13.830000 +12/02/1993,14.220000,14.220000,13.510000,13.510000 +12/03/1993,13.340000,13.400000,12.670000,12.690000 +12/06/1993,14.500000,14.530000,12.780000,12.840000 +12/07/1993,14.760000,14.760000,12.300000,12.410000 +12/08/1993,14.200000,14.240000,12.460000,12.460000 +12/09/1993,11.580000,13.240000,11.510000,12.430000 +12/10/1993,12.620000,12.690000,12.150000,12.600000 +12/13/1993,9.700000,11.510000,9.650000,10.980000 +12/14/1993,10.710000,11.230000,10.640000,11.130000 +12/15/1993,11.490000,11.490000,10.920000,11.030000 +12/16/1993,11.150000,11.180000,10.590000,10.900000 +12/17/1993,11.670000,11.670000,11.030000,11.080000 +12/20/1993,11.110000,11.470000,10.730000,10.750000 +12/21/1993,10.530000,10.600000,10.050000,10.080000 +12/22/1993,10.030000,10.030000,9.280000,9.310000 +12/23/1993,9.500000,9.550000,9.170000,9.480000 +12/27/1993,9.500000,9.790000,8.890000,9.700000 +12/28/1993,9.810000,9.960000,9.700000,9.820000 +12/29/1993,10.110000,10.840000,10.030000,10.460000 +12/30/1993,10.320000,11.090000,10.200000,10.690000 +12/31/1993,10.590000,11.660000,10.520000,11.660000 +01/03/1994,11.280000,13.420000,11.280000,12.570000 +01/04/1994,12.870000,12.870000,11.810000,11.910000 +01/05/1994,12.870000,11.470000,10.370000,10.940000 +01/06/1994,11.470000,11.740000,10.340000,11.270000 +01/07/1994,11.470000,12.140000,10.000000,10.960000 +01/10/1994,10.640000,11.300000,10.280000,10.740000 +01/11/1994,12.040000,12.080000,11.260000,11.290000 +01/12/1994,12.210000,12.410000,11.560000,11.650000 +01/13/1994,12.750000,12.840000,12.050000,12.080000 +01/14/1994,11.140000,11.220000,11.000000,11.150000 +01/17/1994,11.990000,12.070000,11.720000,11.880000 +01/18/1994,11.700000,11.720000,11.310000,11.630000 +01/19/1994,11.740000,12.150000,11.620000,11.760000 +01/20/1994,11.810000,11.830000,11.160000,11.160000 +01/21/1994,10.900000,11.210000,10.900000,11.090000 +01/24/1994,11.590000,11.930000,11.230000,11.600000 +01/25/1994,10.940000,11.960000,10.940000,11.380000 +01/26/1994,11.760000,11.870000,11.070000,11.170000 +01/27/1994,10.690000,11.280000,10.210000,10.300000 +01/28/1994,9.860000,10.310000,9.590000,9.940000 +01/31/1994,9.860000,11.200000,10.010000,10.630000 +02/01/1994,10.810000,11.210000,10.510000,10.650000 +02/02/1994,10.540000,10.860000,10.370000,10.610000 +02/03/1994,10.630000,11.260000,10.630000,10.750000 +02/04/1994,10.710000,15.630000,10.210000,15.250000 +02/07/1994,10.710000,15.370000,13.860000,13.960000 +02/08/1994,12.490000,14.440000,12.490000,13.660000 +02/09/1994,12.910000,13.890000,12.750000,13.300000 +02/10/1994,12.690000,14.960000,12.690000,14.240000 +02/11/1994,15.180000,15.180000,14.200000,14.460000 +02/14/1994,14.250000,14.620000,13.880000,14.280000 +02/15/1994,14.150000,14.150000,13.400000,13.400000 +02/16/1994,13.120000,13.390000,12.980000,13.130000 +02/17/1994,12.750000,14.330000,12.590000,13.790000 +02/18/1994,13.970000,15.400000,13.800000,14.700000 +02/22/1994,14.950000,15.170000,13.520000,13.520000 +02/23/1994,14.950000,14.140000,11.810000,13.910000 +02/24/1994,15.540000,16.310000,14.780000,15.960000 +02/25/1994,15.010000,15.190000,14.580000,14.800000 +02/28/1994,15.010000,15.210000,13.860000,14.870000 +03/01/1994,12.580000,17.040000,12.540000,15.830000 +03/02/1994,17.820000,17.940000,16.080000,16.080000 +03/03/1994,15.990000,16.670000,15.820000,16.360000 +03/04/1994,15.650000,16.630000,15.630000,16.000000 +03/07/1994,12.200000,14.960000,12.200000,14.260000 +03/08/1994,12.200000,16.390000,16.070000,16.230000 +03/09/1994,14.680000,15.000000,14.350000,14.410000 +03/10/1994,14.680000,16.930000,16.080000,16.550000 +03/11/1994,14.770000,16.140000,13.890000,14.870000 +03/14/1994,14.770000,17.480000,16.520000,16.610000 +03/15/1994,14.490000,15.180000,13.780000,14.780000 +03/16/1994,15.350000,15.890000,14.490000,14.510000 +03/17/1994,13.230000,13.330000,12.760000,12.760000 +03/18/1994,13.740000,13.740000,13.200000,13.320000 +03/21/1994,14.500000,15.070000,14.300000,14.340000 +03/22/1994,13.940000,13.970000,12.750000,13.390000 +03/23/1994,11.880000,12.760000,11.580000,12.310000 +03/24/1994,12.220000,14.140000,12.220000,13.430000 +03/25/1994,13.400000,13.830000,12.880000,13.670000 +03/28/1994,15.690000,16.240000,14.900000,14.900000 +03/29/1994,13.660000,16.960000,13.650000,16.490000 +03/30/1994,17.110000,18.840000,17.110000,18.590000 +03/31/1994,18.500000,21.940000,18.420000,20.450000 +04/04/1994,18.500000,28.300000,23.610000,23.870000 +04/05/1994,21.630000,21.630000,18.130000,18.130000 +04/06/1994,16.840000,18.340000,16.800000,17.380000 +04/07/1994,17.920000,18.240000,16.880000,16.980000 +04/08/1994,16.500000,17.580000,16.420000,16.920000 +04/11/1994,16.500000,17.660000,16.430000,16.610000 +04/12/1994,16.500000,17.450000,16.240000,16.420000 +04/13/1994,15.970000,17.960000,14.720000,17.020000 +04/14/1994,17.130000,17.260000,16.150000,16.270000 +04/15/1994,15.540000,16.660000,15.500000,15.980000 +04/18/1994,16.080000,17.880000,15.980000,17.220000 +04/19/1994,16.690000,17.760000,16.670000,16.930000 +04/20/1994,16.800000,18.140000,16.480000,17.010000 +04/21/1994,16.430000,16.560000,14.870000,14.930000 +04/22/1994,14.160000,15.400000,14.070000,14.940000 +04/25/1994,15.190000,15.310000,14.070000,14.260000 +04/26/1994,14.190000,14.800000,13.780000,13.800000 +04/28/1994,13.230000,14.880000,13.210000,14.510000 +04/29/1994,13.050000,14.340000,13.050000,13.770000 +05/02/1994,14.420000,14.780000,13.990000,14.110000 +05/03/1994,13.030000,14.450000,13.030000,13.810000 +05/04/1994,13.770000,14.800000,13.710000,14.290000 +05/05/1994,13.620000,15.340000,13.620000,14.560000 +05/06/1994,15.110000,15.540000,14.790000,15.080000 +05/09/1994,16.400000,16.650000,15.860000,16.160000 +05/10/1994,15.870000,16.070000,15.100000,15.190000 +05/11/1994,14.930000,16.280000,14.750000,15.550000 +05/12/1994,15.010000,16.160000,14.760000,15.460000 +05/13/1994,15.550000,16.110000,14.480000,14.540000 +05/16/1994,14.850000,15.000000,14.150000,14.670000 +05/17/1994,14.670000,15.220000,14.080000,14.080000 +05/18/1994,13.100000,13.820000,12.530000,12.550000 +05/19/1994,12.090000,12.460000,11.440000,12.330000 +05/20/1994,11.890000,13.030000,11.800000,12.790000 +05/23/1994,13.260000,13.940000,13.240000,13.490000 +05/24/1994,12.590000,13.170000,12.420000,12.730000 +05/25/1994,13.010000,13.470000,12.390000,12.430000 +05/26/1994,12.460000,12.660000,12.260000,12.500000 +05/27/1994,12.840000,13.010000,12.420000,12.490000 +05/31/1994,13.390000,13.460000,12.770000,13.030000 +06/01/1994,13.160000,13.470000,12.540000,12.720000 +06/02/1994,12.770000,13.060000,12.450000,12.730000 +06/03/1994,13.280000,13.360000,12.100000,12.190000 +06/06/1994,11.780000,13.030000,11.760000,13.030000 +06/07/1994,13.350000,14.120000,13.040000,13.050000 +06/08/1994,12.810000,13.720000,12.690000,13.320000 +06/09/1994,13.270000,13.280000,13.100000,13.210000 +06/10/1994,13.040000,13.040000,12.450000,12.690000 +06/13/1994,12.340000,12.610000,11.660000,11.920000 +06/14/1994,11.620000,11.930000,11.380000,11.600000 +06/15/1994,11.360000,12.390000,11.210000,11.520000 +06/16/1994,11.360000,11.890000,11.200000,11.220000 +06/17/1994,10.520000,12.330000,10.480000,12.310000 +06/20/1994,13.770000,14.210000,13.380000,13.960000 +06/21/1994,13.700000,14.990000,13.600000,14.700000 +06/22/1994,14.750000,14.760000,14.020000,14.020000 +06/23/1994,13.310000,14.280000,13.290000,14.120000 +06/24/1994,15.350000,17.270000,15.310000,16.720000 +06/27/1994,17.360000,17.710000,15.510000,15.530000 +06/28/1994,13.390000,15.750000,13.390000,15.040000 +06/29/1994,14.630000,14.750000,14.260000,14.420000 +06/30/1994,13.920000,15.430000,13.860000,14.970000 +07/01/1994,14.890000,15.260000,14.360000,14.360000 +07/05/1994,14.840000,15.480000,14.600000,14.920000 +07/06/1994,15.120000,15.630000,14.440000,14.700000 +07/07/1994,13.240000,14.640000,13.240000,14.010000 +07/08/1994,14.880000,14.880000,12.850000,13.260000 +07/11/1994,13.300000,14.610000,13.030000,13.830000 +07/12/1994,13.900000,14.160000,13.040000,13.400000 +07/13/1994,12.940000,12.980000,12.170000,12.420000 +07/14/1994,12.690000,12.880000,11.390000,11.640000 +07/15/1994,11.130000,11.540000,11.000000,11.280000 +07/18/1994,11.490000,11.680000,11.160000,11.440000 +07/19/1994,11.490000,11.910000,11.000000,11.650000 +07/20/1994,11.510000,12.130000,11.500000,11.700000 +07/21/1994,12.490000,12.560000,11.620000,11.650000 +07/22/1994,10.960000,11.890000,10.960000,11.220000 +07/25/1994,11.870000,12.380000,11.440000,11.460000 +07/26/1994,11.780000,12.020000,11.650000,11.660000 +07/27/1994,11.930000,12.260000,11.860000,11.930000 +07/28/1994,11.990000,12.150000,11.690000,12.030000 +07/29/1994,11.230000,11.740000,11.050000,11.130000 +08/01/1994,11.710000,11.760000,11.130000,11.170000 +08/02/1994,10.910000,11.430000,10.750000,11.270000 +08/03/1994,11.420000,11.610000,11.150000,11.350000 +08/04/1994,11.500000,12.300000,11.460000,12.180000 +08/05/1994,12.850000,12.980000,12.330000,12.340000 +08/08/1994,11.710000,12.700000,11.690000,12.410000 +08/09/1994,11.120000,13.320000,11.120000,12.540000 +08/10/1994,12.610000,12.630000,11.660000,11.910000 +08/11/1994,11.550000,12.890000,11.270000,12.130000 +08/12/1994,11.980000,12.130000,11.030000,11.090000 +08/15/1994,11.920000,12.730000,11.650000,12.060000 +08/16/1994,11.720000,12.790000,11.170000,11.390000 +08/17/1994,11.170000,11.620000,11.160000,11.540000 +08/18/1994,11.760000,12.600000,11.650000,12.070000 +08/19/1994,12.710000,13.340000,12.440000,12.830000 +08/22/1994,12.870000,13.230000,12.550000,12.620000 +08/23/1994,11.780000,11.850000,11.140000,11.750000 +08/24/1994,12.030000,12.050000,11.560000,11.570000 +08/25/1994,11.620000,12.270000,11.520000,12.020000 +08/26/1994,11.160000,12.840000,11.020000,12.190000 +08/29/1994,12.810000,12.810000,11.660000,11.820000 +08/30/1994,11.730000,11.810000,11.220000,11.230000 +08/31/1994,11.180000,12.430000,11.180000,11.970000 +09/01/1994,12.170000,12.660000,11.860000,11.860000 +09/02/1994,11.210000,11.730000,11.170000,11.400000 +09/06/1994,11.500000,12.240000,11.480000,11.690000 +09/07/1994,11.830000,12.490000,11.600000,11.810000 +09/08/1994,12.010000,12.030000,11.400000,11.860000 +09/09/1994,11.620000,13.560000,11.620000,13.120000 +09/12/1994,13.470000,14.910000,13.440000,14.010000 +09/13/1994,12.960000,14.590000,12.960000,13.770000 +09/14/1994,13.950000,14.380000,12.920000,13.090000 +09/15/1994,11.870000,13.000000,11.430000,11.880000 +09/16/1994,12.060000,13.120000,11.750000,12.800000 +09/19/1994,12.890000,13.260000,12.710000,13.060000 +09/20/1994,12.890000,14.450000,13.350000,14.450000 +09/21/1994,13.650000,16.080000,13.630000,14.490000 +09/22/1994,13.560000,13.940000,13.430000,13.890000 +09/23/1994,13.790000,14.870000,13.790000,14.530000 +09/26/1994,14.940000,15.010000,14.520000,14.560000 +09/27/1994,14.900000,15.130000,14.130000,14.130000 +09/28/1994,13.620000,13.820000,12.970000,13.250000 +09/29/1994,13.550000,14.400000,13.230000,13.970000 +09/30/1994,13.330000,14.560000,12.850000,14.280000 +10/03/1994,15.690000,16.400000,15.420000,15.440000 +10/04/1994,14.080000,16.970000,14.080000,16.660000 +10/05/1994,16.260000,16.720000,15.000000,15.920000 +10/06/1994,15.650000,16.370000,15.300000,16.240000 +10/07/1994,15.310000,15.730000,14.850000,14.920000 +10/10/1994,14.260000,15.620000,14.260000,14.720000 +10/11/1994,13.930000,14.160000,13.400000,13.550000 +10/12/1994,13.660000,15.210000,13.590000,14.510000 +10/13/1994,12.750000,14.970000,12.750000,14.900000 +10/14/1994,14.330000,14.330000,13.180000,13.320000 +10/17/1994,14.250000,15.310000,14.130000,14.760000 +10/18/1994,14.400000,15.600000,14.380000,14.590000 +10/19/1994,13.910000,15.330000,13.870000,15.130000 +10/20/1994,15.500000,16.450000,15.500000,15.990000 +10/21/1994,16.140000,16.460000,15.810000,15.910000 +10/24/1994,15.970000,17.220000,15.870000,16.970000 +10/25/1994,17.180000,17.180000,16.110000,16.130000 +10/26/1994,15.700000,16.030000,15.530000,15.700000 +10/27/1994,15.200000,15.900000,15.200000,15.670000 +10/28/1994,15.110000,15.220000,14.560000,14.560000 +10/31/1994,14.730000,15.170000,14.200000,14.560000 +11/01/1994,14.610000,15.180000,14.610000,14.840000 +11/02/1994,15.280000,15.470000,14.410000,15.340000 +11/03/1994,14.320000,16.430000,14.320000,15.580000 +11/04/1994,14.990000,16.870000,14.870000,16.750000 +11/07/1994,16.880000,17.870000,16.820000,17.370000 +11/08/1994,15.570000,16.920000,15.540000,16.300000 +11/09/1994,15.950000,17.330000,15.830000,16.420000 +11/10/1994,16.110000,16.740000,15.670000,16.000000 +11/11/1994,15.070000,16.910000,14.990000,16.500000 +11/14/1994,16.960000,16.990000,16.680000,16.680000 +11/15/1994,14.750000,17.010000,14.750000,16.660000 +11/16/1994,15.730000,16.030000,15.560000,15.560000 +11/17/1994,15.020000,16.140000,14.990000,15.910000 +11/18/1994,15.770000,16.270000,15.610000,16.000000 +11/21/1994,15.470000,16.380000,15.280000,16.130000 +11/22/1994,16.570000,17.390000,16.020000,17.240000 +11/23/1994,18.270000,19.570000,18.270000,18.410000 +11/25/1994,17.640000,18.510000,17.230000,17.440000 +11/28/1994,17.090000,17.620000,16.830000,16.830000 +11/29/1994,16.010000,16.760000,15.650000,16.150000 +11/30/1994,15.990000,16.870000,15.530000,15.950000 +12/01/1994,15.490000,17.040000,15.420000,16.690000 +12/02/1994,16.110000,17.140000,16.100000,16.550000 +12/05/1994,15.880000,17.030000,15.690000,16.100000 +12/06/1994,15.800000,16.860000,15.660000,16.050000 +12/07/1994,16.610000,17.640000,16.170000,16.280000 +12/08/1994,16.130000,18.160000,16.120000,18.150000 +12/09/1994,17.000000,17.220000,16.010000,16.040000 +12/12/1994,17.440000,17.440000,15.460000,15.460000 +12/13/1994,15.040000,15.170000,14.330000,14.480000 +12/14/1994,15.090000,15.110000,12.660000,13.030000 +12/15/1994,13.790000,13.790000,12.670000,12.870000 +12/16/1994,12.870000,13.130000,11.870000,12.790000 +12/19/1994,12.870000,13.670000,13.020000,13.020000 +12/20/1994,12.940000,13.480000,12.780000,12.980000 +12/21/1994,12.900000,12.940000,11.910000,12.050000 +12/22/1994,12.170000,12.590000,12.120000,12.420000 +12/23/1994,11.960000,12.040000,11.740000,11.820000 +12/27/1994,11.830000,12.370000,11.610000,12.070000 +12/28/1994,11.400000,13.210000,11.360000,12.810000 +12/29/1994,12.870000,12.870000,12.340000,12.860000 +12/30/1994,12.480000,13.480000,12.340000,13.200000 +01/03/1995,14.090000,14.710000,13.390000,14.250000 +01/04/1995,13.870000,14.150000,13.530000,13.530000 +01/05/1995,13.700000,14.190000,13.370000,13.500000 +01/06/1995,13.670000,13.760000,12.790000,13.130000 +01/09/1995,13.530000,14.080000,13.210000,13.330000 +01/10/1995,12.490000,13.250000,11.970000,12.520000 +01/11/1995,12.030000,13.130000,11.950000,12.150000 +01/12/1995,12.740000,13.560000,12.640000,12.830000 +01/13/1995,11.460000,11.860000,11.020000,11.100000 +01/16/1995,11.450000,11.530000,11.060000,11.140000 +01/17/1995,12.450000,12.480000,11.610000,11.790000 +01/18/1995,11.240000,11.900000,11.210000,11.570000 +01/19/1995,12.080000,12.340000,11.520000,11.860000 +01/20/1995,12.080000,12.480000,12.000000,12.150000 +01/23/1995,13.890000,13.890000,12.780000,12.790000 +01/24/1995,12.130000,12.510000,11.840000,11.940000 +01/25/1995,11.940000,12.260000,11.170000,11.460000 +01/26/1995,10.900000,11.520000,10.890000,11.250000 +01/27/1995,10.770000,11.410000,10.760000,11.250000 +01/30/1995,11.630000,12.670000,11.430000,12.260000 +01/31/1995,12.120000,12.250000,11.770000,11.960000 +02/01/1995,11.740000,11.950000,11.530000,11.730000 +02/02/1995,11.590000,11.630000,11.090000,11.130000 +02/03/1995,10.560000,11.470000,10.510000,10.980000 +02/06/1995,11.240000,11.670000,10.940000,11.220000 +02/07/1995,11.010000,11.410000,11.000000,11.170000 +02/08/1995,11.290000,11.490000,11.030000,11.420000 +02/09/1995,11.420000,11.980000,11.230000,11.630000 +02/10/1995,11.500000,11.710000,11.160000,11.280000 +02/13/1995,11.740000,11.770000,11.290000,11.410000 +02/14/1995,11.350000,11.780000,11.320000,11.430000 +02/15/1995,11.490000,11.740000,11.280000,11.520000 +02/16/1995,11.620000,11.990000,11.550000,11.610000 +02/17/1995,11.440000,12.060000,11.290000,11.710000 +02/21/1995,11.440000,12.520000,12.050000,12.050000 +02/22/1995,11.030000,11.760000,11.030000,11.390000 +02/23/1995,10.800000,11.350000,10.770000,11.150000 +02/24/1995,10.950000,11.320000,10.780000,10.840000 +02/27/1995,10.930000,13.010000,10.890000,12.510000 +02/28/1995,12.330000,12.390000,11.730000,11.750000 +03/01/1995,11.490000,11.930000,11.360000,11.650000 +03/02/1995,11.660000,12.020000,11.460000,12.020000 +03/03/1995,11.480000,11.910000,11.400000,11.450000 +03/06/1995,12.190000,12.650000,11.840000,12.170000 +03/07/1995,12.390000,14.770000,12.330000,14.220000 +03/08/1995,13.210000,14.270000,13.210000,13.720000 +03/09/1995,13.090000,13.980000,12.890000,13.360000 +03/10/1995,13.270000,13.270000,11.700000,12.380000 +03/13/1995,12.110000,12.460000,11.990000,12.150000 +03/14/1995,11.680000,12.610000,11.400000,12.100000 +03/15/1995,12.270000,12.680000,12.190000,12.420000 +03/16/1995,12.270000,12.380000,11.780000,11.950000 +03/17/1995,12.050000,12.130000,11.600000,11.800000 +03/20/1995,11.880000,11.900000,11.340000,11.340000 +03/21/1995,11.350000,11.830000,10.790000,11.530000 +03/22/1995,11.360000,11.720000,11.270000,11.290000 +03/23/1995,11.390000,11.750000,11.250000,11.430000 +03/24/1995,11.230000,11.240000,10.980000,11.190000 +03/27/1995,11.970000,12.110000,11.780000,11.830000 +03/28/1995,11.510000,11.650000,11.290000,11.330000 +03/29/1995,11.680000,12.930000,11.620000,12.510000 +03/30/1995,12.590000,13.030000,12.300000,12.620000 +03/31/1995,13.600000,13.790000,12.950000,13.370000 +04/03/1995,12.520000,14.090000,12.420000,13.500000 +04/04/1995,12.240000,12.950000,11.760000,12.620000 +04/05/1995,12.980000,13.340000,12.730000,12.960000 +04/06/1995,11.720000,13.220000,11.650000,12.810000 +04/07/1995,13.140000,13.660000,12.720000,12.850000 +04/10/1995,13.300000,13.420000,12.620000,12.790000 +04/11/1995,12.590000,13.600000,11.640000,12.730000 +04/12/1995,12.290000,12.840000,11.800000,12.040000 +04/13/1995,11.220000,11.870000,11.100000,11.480000 +04/17/1995,11.490000,12.890000,11.260000,12.330000 +04/18/1995,12.210000,13.070000,12.160000,12.960000 +04/19/1995,13.110000,14.480000,13.090000,13.090000 +04/20/1995,12.160000,12.940000,12.090000,12.100000 +04/21/1995,11.210000,12.260000,10.950000,11.860000 +04/24/1995,11.780000,12.090000,11.550000,11.920000 +04/25/1995,11.930000,12.530000,11.930000,12.410000 +04/26/1995,12.780000,12.840000,12.250000,12.280000 +04/27/1995,11.810000,12.150000,11.710000,11.930000 +04/28/1995,11.540000,12.370000,11.510000,11.750000 +05/01/1995,11.210000,12.680000,11.120000,12.140000 +05/02/1995,12.180000,12.330000,11.780000,11.880000 +05/03/1995,11.800000,11.820000,11.440000,11.690000 +05/04/1995,11.460000,13.460000,11.400000,12.640000 +05/05/1995,11.910000,12.660000,11.820000,12.060000 +05/08/1995,11.370000,12.370000,11.290000,12.220000 +05/09/1995,12.260000,13.010000,12.170000,12.750000 +05/10/1995,12.940000,13.440000,12.810000,13.080000 +05/11/1995,13.290000,13.590000,12.870000,12.980000 +05/12/1995,11.200000,12.610000,11.180000,11.840000 +05/15/1995,12.090000,12.640000,11.780000,12.380000 +05/16/1995,12.130000,12.650000,12.030000,12.200000 +05/17/1995,12.280000,12.650000,12.110000,12.360000 +05/18/1995,11.890000,13.490000,11.890000,13.130000 +05/19/1995,12.730000,13.600000,12.600000,12.810000 +05/22/1995,12.220000,12.270000,11.490000,11.680000 +05/23/1995,11.140000,11.740000,11.050000,11.550000 +05/24/1995,10.290000,11.850000,10.080000,11.260000 +05/25/1995,11.760000,11.990000,11.310000,11.630000 +05/26/1995,11.630000,12.560000,11.630000,12.200000 +05/30/1995,12.130000,12.970000,12.100000,12.520000 +05/31/1995,12.490000,12.960000,12.050000,12.850000 +06/01/1995,12.160000,12.850000,12.120000,12.210000 +06/02/1995,12.770000,13.310000,12.410000,12.980000 +06/05/1995,13.500000,14.050000,13.270000,13.450000 +06/06/1995,12.960000,13.630000,12.910000,13.000000 +06/07/1995,13.220000,13.990000,12.780000,12.840000 +06/08/1995,13.010000,13.030000,12.630000,12.890000 +06/09/1995,12.620000,13.450000,12.360000,12.760000 +06/12/1995,12.000000,12.720000,11.710000,11.910000 +06/13/1995,11.350000,12.000000,11.050000,11.290000 +06/14/1995,12.160000,12.190000,11.010000,11.290000 +06/15/1995,11.720000,12.050000,10.950000,11.230000 +06/16/1995,10.360000,10.950000,10.360000,10.750000 +06/19/1995,10.600000,11.350000,10.600000,11.210000 +06/20/1995,11.260000,11.470000,11.100000,11.160000 +06/21/1995,11.520000,11.600000,11.190000,11.320000 +06/22/1995,10.920000,11.730000,10.880000,11.440000 +06/23/1995,11.430000,11.510000,10.970000,11.120000 +06/26/1995,10.980000,12.120000,10.980000,11.800000 +06/27/1995,11.850000,12.570000,11.660000,12.370000 +06/28/1995,12.300000,12.410000,11.610000,11.740000 +06/29/1995,11.590000,12.190000,11.470000,11.590000 +06/30/1995,11.070000,11.510000,10.750000,11.380000 +07/03/1995,11.360000,12.550000,11.230000,11.570000 +07/05/1995,11.860000,12.390000,11.190000,12.100000 +07/06/1995,12.350000,12.390000,11.430000,11.520000 +07/07/1995,11.760000,12.110000,11.720000,11.770000 +07/10/1995,11.190000,12.870000,10.930000,12.190000 +07/11/1995,11.970000,13.060000,11.870000,12.250000 +07/12/1995,12.250000,12.750000,12.070000,12.310000 +07/13/1995,11.130000,13.300000,10.920000,12.560000 +07/14/1995,12.730000,12.960000,11.990000,12.080000 +07/17/1995,12.350000,12.690000,12.220000,12.260000 +07/18/1995,12.550000,13.050000,12.450000,12.680000 +07/19/1995,13.480000,15.260000,12.990000,13.490000 +07/20/1995,13.460000,13.800000,12.770000,12.780000 +07/21/1995,11.940000,13.270000,11.730000,12.370000 +07/24/1995,12.640000,12.770000,12.390000,12.550000 +07/25/1995,12.730000,13.050000,12.540000,12.770000 +07/26/1995,12.850000,13.670000,12.850000,13.180000 +07/27/1995,13.340000,13.350000,13.020000,13.180000 +07/28/1995,13.050000,13.820000,13.030000,13.180000 +07/31/1995,13.220000,13.870000,13.220000,13.490000 +08/01/1995,13.440000,14.150000,13.390000,13.560000 +08/02/1995,13.280000,13.980000,13.090000,13.660000 +08/03/1995,14.460000,14.490000,13.760000,13.780000 +08/04/1995,12.900000,13.810000,12.830000,13.210000 +08/07/1995,13.620000,13.990000,13.060000,13.100000 +08/08/1995,13.250000,13.310000,13.060000,13.060000 +08/09/1995,12.780000,13.020000,12.600000,12.750000 +08/10/1995,12.870000,13.350000,12.570000,13.000000 +08/11/1995,12.450000,13.340000,12.450000,12.900000 +08/14/1995,12.690000,14.350000,12.670000,13.240000 +08/15/1995,12.310000,12.760000,12.270000,12.350000 +08/16/1995,11.600000,12.590000,11.470000,12.450000 +08/17/1995,12.170000,12.830000,12.090000,12.130000 +08/18/1995,11.470000,12.270000,11.360000,12.030000 +08/21/1995,12.080000,13.780000,11.890000,13.420000 +08/22/1995,12.540000,12.980000,12.430000,12.600000 +08/23/1995,11.820000,13.370000,11.800000,13.170000 +08/24/1995,13.310000,13.520000,12.860000,12.940000 +08/25/1995,12.230000,12.690000,12.110000,12.330000 +08/28/1995,12.150000,13.200000,12.050000,12.480000 +08/29/1995,11.680000,13.800000,11.630000,12.650000 +08/30/1995,11.770000,12.420000,11.740000,12.030000 +08/31/1995,11.610000,11.950000,11.360000,11.520000 +09/01/1995,11.150000,11.680000,10.830000,11.290000 +09/05/1995,11.440000,12.030000,11.280000,11.650000 +09/06/1995,10.310000,12.080000,10.190000,11.650000 +09/07/1995,10.650000,12.530000,10.650000,11.850000 +09/08/1995,11.010000,11.940000,10.490000,11.160000 +09/11/1995,11.790000,12.090000,11.310000,11.510000 +09/12/1995,11.670000,12.150000,11.320000,11.460000 +09/13/1995,11.660000,12.000000,11.180000,11.350000 +09/14/1995,11.290000,11.930000,10.870000,11.100000 +09/15/1995,11.130000,11.840000,11.000000,11.580000 +09/18/1995,12.380000,12.720000,12.300000,12.340000 +09/19/1995,12.500000,13.310000,12.400000,12.670000 +09/20/1995,12.750000,12.810000,12.350000,12.350000 +09/21/1995,11.950000,13.180000,11.890000,12.500000 +09/22/1995,12.790000,12.940000,12.370000,12.460000 +09/25/1995,12.330000,13.430000,12.310000,13.220000 +09/26/1995,12.210000,13.230000,12.080000,12.900000 +09/27/1995,12.730000,13.950000,12.480000,12.900000 +09/28/1995,11.720000,12.870000,11.670000,12.460000 +09/29/1995,12.200000,13.250000,12.090000,12.740000 +10/02/1995,12.400000,14.370000,12.290000,13.950000 +10/03/1995,14.520000,14.940000,14.260000,14.500000 +10/04/1995,13.310000,15.420000,13.310000,14.860000 +10/05/1995,14.150000,16.290000,14.120000,15.740000 +10/06/1995,13.450000,14.710000,13.450000,13.980000 +10/09/1995,14.610000,15.520000,14.580000,14.850000 +10/10/1995,14.610000,16.470000,14.970000,14.970000 +10/11/1995,14.740000,14.820000,14.430000,14.570000 +10/12/1995,14.340000,14.640000,13.660000,14.240000 +10/13/1995,13.950000,14.390000,13.490000,13.670000 +10/16/1995,15.040000,15.350000,14.570000,14.620000 +10/17/1995,14.630000,14.860000,14.030000,14.030000 +10/18/1995,12.570000,14.560000,12.550000,14.050000 +10/19/1995,14.380000,14.380000,13.480000,13.550000 +10/20/1995,13.460000,13.770000,13.130000,13.460000 +10/23/1995,14.630000,14.700000,14.030000,14.170000 +10/24/1995,14.010000,14.330000,13.850000,13.850000 +10/25/1995,13.410000,14.720000,13.390000,14.490000 +10/26/1995,14.470000,16.990000,14.410000,15.590000 +10/27/1995,15.790000,15.900000,14.630000,14.630000 +10/30/1995,14.480000,14.800000,14.250000,14.260000 +10/31/1995,13.900000,14.080000,13.430000,13.830000 +11/01/1995,13.980000,13.980000,13.390000,13.410000 +11/02/1995,13.370000,13.640000,13.090000,13.190000 +11/03/1995,12.120000,13.080000,12.120000,12.260000 +11/06/1995,13.090000,13.450000,12.660000,12.740000 +11/07/1995,12.920000,13.990000,12.780000,13.050000 +11/08/1995,12.850000,13.030000,12.110000,12.160000 +11/09/1995,12.350000,13.190000,12.310000,12.460000 +11/10/1995,12.620000,13.450000,12.610000,12.970000 +11/13/1995,13.520000,14.100000,13.010000,13.200000 +11/14/1995,13.770000,13.970000,13.140000,13.380000 +11/15/1995,13.440000,13.900000,12.940000,12.950000 +11/16/1995,12.880000,13.010000,12.470000,12.570000 +11/17/1995,12.610000,12.800000,12.350000,12.490000 +11/20/1995,12.750000,13.270000,12.170000,12.370000 +11/21/1995,11.890000,12.340000,11.730000,11.740000 +11/22/1995,11.910000,11.960000,11.610000,11.810000 +11/24/1995,11.910000,12.800000,11.810000,11.870000 +11/27/1995,10.570000,12.700000,10.570000,12.430000 +11/28/1995,11.940000,12.260000,11.520000,11.570000 +11/29/1995,11.000000,11.960000,10.930000,11.650000 +11/30/1995,10.900000,11.920000,10.900000,11.580000 +12/01/1995,11.120000,11.640000,11.040000,11.110000 +12/04/1995,11.120000,11.350000,10.060000,10.660000 +12/05/1995,11.120000,11.980000,10.470000,11.650000 +12/06/1995,10.840000,13.170000,10.820000,12.700000 +12/07/1995,12.500000,13.180000,12.140000,12.740000 +12/08/1995,12.500000,12.670000,10.150000,11.120000 +12/11/1995,12.140000,12.210000,10.880000,11.060000 +12/12/1995,10.380000,11.340000,10.070000,10.630000 +12/13/1995,11.510000,11.510000,10.150000,10.360000 +12/14/1995,10.670000,11.440000,10.270000,11.070000 +12/15/1995,11.220000,12.220000,11.120000,11.440000 +12/18/1995,11.220000,14.860000,11.020000,14.550000 +12/19/1995,15.420000,15.420000,13.110000,13.160000 +12/20/1995,11.840000,12.340000,11.110000,12.200000 +12/21/1995,13.010000,13.010000,10.650000,10.770000 +12/22/1995,11.290000,11.580000,10.970000,11.510000 +12/26/1995,11.720000,11.870000,11.480000,11.490000 +12/27/1995,11.240000,12.650000,11.190000,11.980000 +12/28/1995,11.910000,12.370000,11.900000,12.250000 +12/29/1995,12.590000,13.140000,12.310000,12.520000 +01/02/1996,13.390000,13.390000,12.190000,12.190000 +01/03/1996,11.530000,12.290000,11.450000,12.100000 +01/04/1996,11.240000,14.230000,11.230000,13.780000 +01/05/1996,14.020000,14.740000,13.550000,13.580000 +01/08/1996,14.020000,13.220000,12.440000,13.110000 +01/09/1996,13.040000,15.480000,13.040000,15.210000 +01/10/1996,16.550000,16.870000,15.650000,16.400000 +01/11/1996,15.760000,16.100000,14.620000,14.690000 +01/12/1996,14.280000,15.000000,14.150000,14.230000 +01/15/1996,14.120000,15.130000,14.030000,14.990000 +01/16/1996,14.620000,15.330000,14.090000,14.090000 +01/17/1996,14.000000,14.310000,13.550000,14.250000 +01/18/1996,13.720000,14.360000,13.540000,13.580000 +01/19/1996,13.550000,13.570000,12.590000,12.700000 +01/22/1996,12.880000,13.530000,12.520000,13.340000 +01/23/1996,13.560000,13.670000,13.320000,13.560000 +01/24/1996,12.920000,12.990000,12.500000,12.540000 +01/25/1996,12.310000,12.990000,12.280000,12.940000 +01/26/1996,12.640000,12.650000,11.910000,12.000000 +01/29/1996,12.070000,12.340000,12.050000,12.190000 +01/30/1996,11.450000,12.420000,11.390000,12.420000 +01/31/1996,12.370000,13.040000,12.350000,12.530000 +02/01/1996,11.440000,12.870000,11.110000,12.650000 +02/02/1996,12.510000,13.480000,12.420000,13.230000 +02/05/1996,13.790000,14.040000,13.370000,13.460000 +02/06/1996,13.990000,14.680000,13.510000,14.590000 +02/07/1996,14.290000,14.770000,14.040000,14.110000 +02/08/1996,13.960000,14.110000,13.430000,13.890000 +02/09/1996,14.270000,15.400000,14.170000,14.630000 +02/12/1996,14.530000,14.990000,14.430000,14.690000 +02/13/1996,14.530000,15.420000,14.610000,14.940000 +02/14/1996,15.020000,15.600000,14.680000,15.590000 +02/15/1996,15.700000,16.310000,15.640000,16.130000 +02/16/1996,14.930000,16.350000,14.930000,15.370000 +02/20/1996,16.230000,17.180000,16.170000,16.800000 +02/21/1996,15.530000,15.560000,14.470000,14.470000 +02/22/1996,14.140000,14.570000,14.000000,14.560000 +02/23/1996,14.930000,15.810000,14.640000,14.780000 +02/26/1996,15.470000,16.390000,15.440000,16.380000 +02/27/1996,16.510000,17.030000,16.450000,16.630000 +02/28/1996,15.510000,16.840000,15.360000,16.720000 +02/29/1996,16.880000,17.390000,16.370000,17.040000 +03/01/1996,17.130000,17.920000,16.670000,16.720000 +03/04/1996,16.780000,17.030000,16.200000,16.670000 +03/05/1996,16.640000,16.680000,16.100000,16.100000 +03/06/1996,16.030000,16.580000,16.030000,16.560000 +03/07/1996,16.850000,17.100000,16.410000,16.490000 +03/08/1996,18.860000,21.360000,17.500000,20.700000 +03/11/1996,17.340000,21.260000,17.290000,19.400000 +03/12/1996,18.370000,19.810000,18.220000,19.090000 +03/13/1996,18.520000,18.870000,18.020000,18.130000 +03/14/1996,17.790000,18.200000,16.930000,16.930000 +03/15/1996,15.150000,17.100000,14.980000,16.540000 +03/18/1996,16.500000,17.390000,16.490000,17.310000 +03/19/1996,16.930000,18.420000,16.810000,18.350000 +03/20/1996,18.300000,19.450000,18.280000,18.660000 +03/21/1996,18.360000,18.360000,17.580000,17.740000 +03/22/1996,17.410000,17.420000,16.930000,17.050000 +03/25/1996,17.130000,17.980000,17.120000,17.840000 +03/26/1996,18.230000,18.260000,17.660000,17.800000 +03/27/1996,17.310000,18.300000,17.310000,17.890000 +03/28/1996,17.800000,18.320000,17.680000,18.160000 +03/29/1996,18.250000,18.880000,18.030000,18.880000 +04/01/1996,18.420000,18.710000,17.880000,17.900000 +04/02/1996,16.980000,17.340000,16.270000,16.450000 +04/03/1996,16.360000,16.560000,16.160000,16.330000 +04/04/1996,16.150000,16.200000,15.890000,16.180000 +04/08/1996,16.150000,20.780000,18.150000,18.720000 +04/09/1996,16.960000,17.420000,16.960000,17.320000 +04/10/1996,17.790000,20.460000,17.520000,20.220000 +04/11/1996,19.410000,21.090000,19.230000,19.650000 +04/12/1996,18.690000,18.730000,17.310000,17.380000 +04/15/1996,17.540000,17.540000,16.820000,16.830000 +04/16/1996,16.510000,16.560000,16.210000,16.450000 +04/17/1996,16.500000,17.300000,16.360000,17.070000 +04/18/1996,16.690000,17.060000,16.240000,16.410000 +04/19/1996,14.560000,15.400000,14.300000,15.120000 +04/22/1996,14.760000,15.700000,14.760000,15.380000 +04/23/1996,14.950000,15.460000,14.890000,15.010000 +04/24/1996,14.010000,15.130000,13.990000,14.910000 +04/25/1996,14.690000,15.350000,14.590000,14.720000 +04/26/1996,14.560000,14.930000,14.460000,14.750000 +04/29/1996,15.540000,15.670000,15.350000,15.450000 +04/30/1996,15.750000,16.010000,15.710000,15.830000 +05/01/1996,15.890000,16.870000,15.750000,16.070000 +05/02/1996,16.750000,18.960000,16.720000,18.620000 +05/03/1996,16.610000,17.390000,15.560000,16.700000 +05/06/1996,16.890000,17.870000,16.720000,16.920000 +05/07/1996,16.620000,17.240000,16.520000,16.870000 +05/08/1996,17.200000,18.690000,15.780000,15.780000 +05/09/1996,15.480000,17.050000,15.380000,16.990000 +05/10/1996,16.200000,16.320000,15.300000,15.610000 +05/13/1996,16.260000,16.260000,14.880000,15.160000 +05/14/1996,15.010000,15.180000,14.660000,14.900000 +05/15/1996,14.570000,15.830000,14.570000,15.590000 +05/16/1996,16.010000,16.010000,15.530000,15.710000 +05/17/1996,14.740000,15.200000,14.560000,15.130000 +05/20/1996,15.050000,16.360000,14.890000,15.800000 +05/21/1996,15.660000,16.370000,15.590000,16.000000 +05/22/1996,16.000000,16.100000,15.460000,15.500000 +05/23/1996,15.790000,16.410000,15.730000,16.170000 +05/24/1996,15.580000,15.760000,15.440000,15.540000 +05/28/1996,16.100000,16.970000,16.040000,16.920000 +05/29/1996,16.970000,17.750000,16.750000,17.150000 +05/30/1996,17.060000,17.140000,16.010000,16.020000 +05/31/1996,15.740000,16.290000,15.500000,16.070000 +06/03/1996,16.800000,17.030000,16.580000,16.860000 +06/04/1996,16.350000,16.390000,16.120000,16.180000 +06/05/1996,16.040000,16.450000,15.930000,16.040000 +06/06/1996,16.340000,16.860000,16.330000,16.840000 +06/07/1996,17.670000,17.690000,16.100000,16.100000 +06/10/1996,16.570000,17.160000,16.550000,16.780000 +06/11/1996,16.380000,16.820000,16.000000,16.680000 +06/12/1996,16.470000,17.200000,16.350000,17.000000 +06/13/1996,16.820000,17.670000,16.800000,17.120000 +06/14/1996,17.100000,18.880000,16.700000,18.640000 +06/17/1996,17.270000,17.900000,17.110000,17.460000 +06/18/1996,16.690000,17.470000,16.640000,17.450000 +06/19/1996,17.550000,17.710000,17.180000,17.540000 +06/20/1996,17.080000,17.310000,16.730000,16.970000 +06/21/1996,14.900000,16.120000,14.530000,15.800000 +06/24/1996,16.080000,16.380000,15.750000,15.910000 +06/25/1996,15.500000,15.850000,15.390000,15.430000 +06/26/1996,15.070000,15.570000,14.950000,15.230000 +06/27/1996,15.080000,15.100000,14.150000,14.190000 +06/28/1996,13.920000,13.920000,13.550000,13.680000 +07/01/1996,13.830000,14.080000,13.750000,13.780000 +07/02/1996,13.930000,14.450000,13.920000,14.190000 +07/03/1996,13.880000,14.660000,13.800000,14.210000 +07/05/1996,16.250000,16.840000,14.920000,16.090000 +07/08/1996,16.680000,16.830000,15.930000,16.420000 +07/09/1996,16.020000,16.020000,15.430000,15.490000 +07/10/1996,16.060000,16.470000,15.510000,15.510000 +07/11/1996,15.810000,19.200000,15.760000,17.810000 +07/12/1996,16.990000,17.500000,16.790000,17.090000 +07/15/1996,17.140000,20.110000,17.130000,20.110000 +07/16/1996,20.280000,27.050000,19.480000,20.100000 +07/17/1996,19.380000,20.340000,19.120000,19.220000 +07/18/1996,18.780000,19.570000,17.920000,17.930000 +07/19/1996,16.740000,17.860000,16.730000,17.260000 +07/22/1996,19.300000,21.310000,19.300000,20.410000 +07/23/1996,19.300000,21.800000,19.280000,21.550000 +07/24/1996,23.900000,24.190000,21.430000,21.440000 +07/25/1996,19.590000,19.690000,18.610000,19.390000 +07/26/1996,18.690000,18.800000,17.350000,17.450000 +07/29/1996,18.560000,20.510000,18.440000,20.090000 +07/30/1996,19.830000,21.570000,19.830000,20.530000 +07/31/1996,19.880000,20.200000,19.270000,19.460000 +08/01/1996,19.390000,19.390000,18.230000,18.760000 +08/02/1996,16.380000,17.490000,16.160000,16.190000 +08/05/1996,17.120000,17.540000,16.840000,17.360000 +08/06/1996,17.750000,17.880000,16.930000,16.930000 +08/07/1996,16.880000,17.170000,16.220000,16.240000 +08/08/1996,16.280000,16.580000,15.970000,16.040000 +08/09/1996,16.010000,16.530000,15.250000,15.770000 +08/12/1996,16.140000,16.500000,15.450000,15.570000 +08/13/1996,16.290000,17.000000,15.710000,16.410000 +08/14/1996,16.530000,16.610000,15.840000,15.960000 +08/15/1996,16.090000,16.090000,15.290000,15.460000 +08/16/1996,15.000000,15.730000,14.570000,14.810000 +08/19/1996,15.270000,15.490000,15.220000,15.270000 +08/20/1996,15.190000,15.540000,14.730000,14.730000 +08/21/1996,14.910000,15.100000,14.510000,14.520000 +08/22/1996,13.900000,13.910000,13.220000,13.710000 +08/23/1996,13.710000,15.080000,13.670000,14.180000 +08/26/1996,14.740000,15.660000,14.700000,15.380000 +08/27/1996,14.570000,15.620000,14.540000,15.110000 +08/28/1996,14.880000,15.980000,14.840000,15.100000 +08/29/1996,15.430000,16.690000,15.430000,16.220000 +08/30/1996,16.090000,17.250000,16.090000,17.010000 +09/03/1996,19.780000,19.780000,18.270000,18.470000 +09/04/1996,18.610000,19.070000,18.550000,18.640000 +09/05/1996,19.070000,20.530000,18.960000,20.510000 +09/06/1996,18.150000,18.190000,16.840000,17.100000 +09/09/1996,17.100000,17.130000,16.290000,16.360000 +09/10/1996,16.420000,16.800000,16.250000,16.250000 +09/11/1996,16.560000,16.560000,15.910000,16.060000 +09/12/1996,15.360000,16.090000,15.360000,15.970000 +09/13/1996,15.510000,15.890000,15.150000,15.200000 +09/16/1996,15.400000,15.960000,15.240000,15.430000 +09/17/1996,15.860000,16.220000,15.560000,15.740000 +09/18/1996,16.270000,16.460000,15.760000,15.860000 +09/19/1996,16.090000,16.490000,15.930000,16.030000 +09/20/1996,14.570000,16.180000,14.550000,15.650000 +09/23/1996,16.330000,16.740000,16.320000,16.460000 +09/24/1996,16.550000,16.900000,16.130000,16.450000 +09/25/1996,15.860000,16.330000,15.820000,16.220000 +09/26/1996,16.130000,16.510000,15.700000,16.110000 +09/27/1996,16.570000,16.660000,16.040000,16.100000 +09/30/1996,16.330000,17.080000,16.210000,16.950000 +10/01/1996,16.900000,17.520000,16.800000,17.050000 +10/02/1996,16.920000,17.120000,16.690000,16.780000 +10/03/1996,16.730000,16.980000,16.480000,16.770000 +10/04/1996,15.460000,15.460000,14.780000,14.800000 +10/07/1996,15.060000,15.510000,14.960000,15.110000 +10/08/1996,15.350000,15.630000,15.020000,15.580000 +10/09/1996,15.660000,16.300000,15.620000,16.090000 +10/10/1996,16.330000,16.350000,15.920000,16.260000 +10/11/1996,15.500000,15.570000,14.960000,15.070000 +10/14/1996,14.770000,15.380000,14.630000,15.130000 +10/15/1996,14.820000,16.770000,14.820000,15.830000 +10/16/1996,15.820000,16.070000,15.590000,15.600000 +10/17/1996,15.250000,15.460000,14.990000,15.410000 +10/18/1996,15.520000,15.550000,15.020000,15.080000 +10/21/1996,15.530000,16.230000,15.250000,15.980000 +10/22/1996,16.290000,16.790000,16.240000,16.400000 +10/23/1996,16.660000,17.160000,16.200000,16.450000 +10/24/1996,16.170000,17.000000,16.170000,16.890000 +10/25/1996,17.090000,17.620000,16.840000,17.290000 +10/28/1996,17.270000,18.360000,17.130000,18.340000 +10/29/1996,18.440000,18.840000,18.090000,18.280000 +10/30/1996,18.170000,19.210000,18.170000,18.480000 +10/31/1996,18.140000,18.330000,17.820000,18.110000 +11/01/1996,17.290000,18.300000,17.260000,17.890000 +11/04/1996,18.330000,18.610000,18.030000,18.040000 +11/05/1996,17.320000,17.670000,16.970000,17.650000 +11/06/1996,16.740000,17.330000,16.050000,16.970000 +11/07/1996,16.840000,17.520000,16.660000,17.210000 +11/08/1996,16.520000,16.550000,15.620000,15.780000 +11/11/1996,14.730000,14.730000,13.880000,14.040000 +11/12/1996,15.890000,16.140000,15.220000,15.360000 +11/13/1996,14.940000,15.410000,14.700000,14.890000 +11/14/1996,14.620000,14.620000,13.630000,13.790000 +11/15/1996,13.610000,14.880000,13.450000,14.360000 +11/18/1996,14.710000,15.480000,14.710000,15.120000 +11/19/1996,15.040000,15.610000,14.960000,15.230000 +11/20/1996,15.390000,16.100000,15.230000,15.940000 +11/21/1996,16.080000,16.530000,15.770000,15.770000 +11/22/1996,15.060000,15.240000,14.680000,14.920000 +11/25/1996,15.470000,16.030000,15.170000,15.910000 +11/26/1996,16.670000,17.670000,16.550000,16.970000 +11/27/1996,17.000000,17.220000,16.860000,16.960000 +11/29/1996,16.760000,18.260000,16.680000,17.140000 +12/02/1996,18.660000,18.730000,17.930000,17.930000 +12/03/1996,17.700000,18.820000,17.590000,18.680000 +12/04/1996,18.760000,18.920000,17.910000,17.930000 +12/05/1996,17.590000,18.520000,17.380000,18.140000 +12/06/1996,20.360000,21.880000,18.440000,18.820000 +12/09/1996,18.500000,18.520000,17.750000,17.750000 +12/10/1996,17.360000,17.910000,17.190000,17.880000 +12/11/1996,18.610000,20.430000,18.610000,19.680000 +12/12/1996,18.690000,20.450000,18.660000,20.450000 +12/13/1996,20.850000,21.320000,19.810000,21.090000 +12/16/1996,21.040000,22.040000,20.730000,21.990000 +12/17/1996,21.990000,22.130000,20.400000,20.770000 +12/18/1996,20.070000,20.080000,18.940000,19.420000 +12/19/1996,18.940000,18.970000,18.460000,18.770000 +12/20/1996,16.840000,19.720000,16.830000,18.850000 +12/23/1996,19.270000,19.670000,18.990000,19.500000 +12/24/1996,19.220000,19.220000,18.680000,18.680000 +12/26/1996,18.330000,18.710000,18.190000,18.590000 +12/27/1996,18.670000,19.130000,18.670000,19.130000 +12/30/1996,19.700000,19.720000,19.230000,19.510000 +12/31/1996,19.860000,20.920000,19.800000,20.920000 +01/02/1997,21.540000,22.800000,21.100000,21.140000 +01/03/1997,19.820000,19.920000,19.040000,19.130000 +01/06/1997,19.840000,20.440000,19.420000,19.890000 +01/07/1997,20.460000,20.710000,19.310000,19.350000 +01/08/1997,18.600000,20.530000,18.600000,20.240000 +01/09/1997,19.990000,21.100000,19.870000,20.910000 +01/10/1997,20.750000,20.820000,19.510000,19.630000 +01/13/1997,19.470000,20.230000,19.280000,19.840000 +01/14/1997,20.100000,20.100000,18.830000,19.270000 +01/15/1997,19.390000,19.740000,19.140000,19.400000 +01/16/1997,19.590000,20.070000,19.220000,19.610000 +01/17/1997,19.780000,19.820000,18.600000,18.630000 +01/20/1997,19.180000,19.180000,18.410000,18.600000 +01/21/1997,18.690000,18.700000,17.800000,17.810000 +01/22/1997,18.020000,18.020000,17.070000,17.090000 +01/23/1997,16.670000,18.590000,16.360000,18.470000 +01/24/1997,18.450000,20.070000,18.350000,19.330000 +01/27/1997,20.170000,20.520000,19.760000,20.160000 +01/28/1997,19.960000,21.060000,19.410000,20.740000 +01/29/1997,20.600000,20.690000,20.220000,20.230000 +01/30/1997,19.810000,20.080000,19.470000,19.470000 +02/03/1997,19.890000,20.070000,19.560000,19.580000 +02/04/1997,19.590000,19.690000,19.430000,19.430000 +02/05/1997,19.550000,21.390000,19.500000,21.060000 +02/06/1997,20.580000,20.680000,20.040000,20.160000 +02/07/1997,18.820000,19.880000,18.710000,18.900000 +02/10/1997,19.650000,21.130000,19.650000,20.650000 +02/11/1997,20.310000,20.720000,19.970000,19.970000 +02/12/1997,19.570000,19.890000,19.420000,19.480000 +02/13/1997,19.300000,19.730000,19.100000,19.230000 +02/14/1997,19.210000,19.360000,19.000000,19.180000 +02/18/1997,19.760000,20.060000,19.650000,19.700000 +02/19/1997,19.940000,20.650000,19.820000,20.610000 +02/20/1997,20.930000,21.540000,20.690000,21.410000 +02/21/1997,21.290000,21.410000,20.490000,20.550000 +02/24/1997,20.940000,20.960000,19.840000,19.840000 +02/25/1997,20.110000,20.200000,19.900000,19.980000 +02/26/1997,19.400000,21.250000,19.400000,20.740000 +02/27/1997,20.430000,21.320000,20.410000,21.080000 +02/28/1997,21.550000,21.550000,20.760000,21.100000 +03/03/1997,21.890000,21.890000,20.880000,20.890000 +03/04/1997,20.750000,20.830000,20.270000,20.620000 +03/05/1997,20.010000,20.080000,19.410000,19.490000 +03/06/1997,19.480000,20.510000,19.470000,20.480000 +03/07/1997,19.520000,19.550000,19.210000,19.320000 +03/10/1997,20.140000,20.140000,18.980000,19.000000 +03/11/1997,19.240000,19.460000,19.140000,19.250000 +03/12/1997,18.720000,19.810000,18.710000,19.610000 +03/13/1997,19.320000,20.490000,19.240000,19.790000 +03/14/1997,19.860000,19.950000,19.580000,19.810000 +03/17/1997,21.180000,21.910000,20.920000,20.950000 +03/18/1997,20.850000,21.560000,20.770000,21.260000 +03/19/1997,21.680000,21.950000,21.290000,21.740000 +03/20/1997,21.520000,21.910000,21.020000,21.220000 +03/21/1997,17.540000,20.670000,17.440000,19.690000 +03/24/1997,20.000000,20.720000,19.950000,20.060000 +03/25/1997,19.750000,19.940000,19.140000,19.260000 +03/26/1997,18.600000,18.750000,18.230000,18.320000 +03/27/1997,17.380000,20.790000,17.300000,20.500000 +03/31/1997,21.540000,22.440000,21.210000,22.140000 +04/01/1997,22.850000,23.040000,20.670000,20.840000 +04/02/1997,21.290000,21.760000,20.460000,21.300000 +04/03/1997,21.240000,21.490000,20.620000,21.190000 +04/04/1997,20.700000,20.720000,19.150000,19.230000 +04/07/1997,19.240000,19.270000,18.350000,18.510000 +04/08/1997,18.650000,18.780000,18.420000,18.440000 +04/09/1997,18.090000,18.900000,18.060000,18.560000 +04/10/1997,18.620000,19.020000,18.620000,19.010000 +04/11/1997,19.510000,20.020000,19.270000,19.760000 +04/14/1997,19.820000,20.130000,19.090000,19.090000 +04/15/1997,19.020000,19.020000,18.000000,18.250000 +04/16/1997,18.430000,18.510000,17.570000,17.640000 +04/17/1997,18.380000,18.770000,18.120000,18.710000 +04/18/1997,18.140000,19.140000,18.130000,18.750000 +04/21/1997,19.220000,20.460000,19.180000,20.100000 +04/22/1997,19.880000,20.000000,19.060000,19.520000 +04/23/1997,19.840000,20.550000,19.820000,20.480000 +04/24/1997,20.260000,20.990000,20.150000,20.830000 +04/25/1997,21.250000,21.470000,20.880000,21.150000 +04/28/1997,22.210000,22.260000,21.040000,21.340000 +04/29/1997,20.640000,20.660000,19.460000,19.810000 +04/30/1997,20.000000,20.290000,19.200000,20.060000 +05/01/1997,20.180000,20.880000,19.870000,19.870000 +05/02/1997,18.880000,18.880000,17.280000,17.510000 +05/05/1997,18.490000,20.130000,18.370000,20.130000 +05/06/1997,21.370000,22.260000,20.830000,20.850000 +05/07/1997,21.190000,21.530000,20.630000,21.340000 +05/08/1997,21.400000,21.480000,20.350000,21.260000 +05/09/1997,21.490000,21.500000,20.010000,20.110000 +05/12/1997,20.440000,20.850000,20.070000,20.250000 +05/13/1997,20.530000,21.020000,20.530000,20.810000 +05/14/1997,20.480000,21.320000,20.480000,21.090000 +05/15/1997,21.140000,21.140000,19.870000,19.910000 +05/16/1997,18.730000,21.820000,18.580000,21.570000 +05/19/1997,21.880000,21.950000,21.260000,21.480000 +05/20/1997,21.490000,21.720000,19.130000,19.260000 +05/21/1997,19.190000,19.620000,18.820000,19.280000 +05/22/1997,19.010000,19.240000,18.680000,18.770000 +05/23/1997,18.460000,18.520000,18.010000,18.080000 +05/27/1997,19.260000,19.920000,19.120000,19.360000 +05/28/1997,19.390000,19.580000,19.220000,19.280000 +05/29/1997,19.100000,19.770000,18.820000,19.020000 +05/30/1997,19.480000,19.480000,18.850000,19.190000 +06/02/1997,21.080000,21.190000,20.760000,20.850000 +06/03/1997,19.910000,20.010000,19.560000,20.010000 +06/04/1997,19.990000,20.390000,19.880000,20.100000 +06/05/1997,20.190000,20.370000,20.050000,20.360000 +06/06/1997,19.440000,19.480000,18.920000,18.940000 +06/09/1997,19.660000,19.660000,19.360000,19.460000 +06/10/1997,19.280000,19.280000,18.790000,19.040000 +06/11/1997,18.960000,19.240000,18.850000,18.850000 +06/12/1997,18.700000,18.940000,18.200000,18.510000 +06/13/1997,19.300000,19.760000,18.990000,19.270000 +06/16/1997,19.770000,20.210000,19.730000,19.770000 +06/17/1997,20.660000,20.960000,19.870000,20.170000 +06/18/1997,20.380000,20.660000,20.260000,20.450000 +06/19/1997,20.180000,21.000000,19.910000,20.100000 +06/20/1997,20.240000,20.360000,19.800000,20.200000 +06/23/1997,20.700000,21.640000,20.250000,21.190000 +06/24/1997,20.730000,21.580000,20.500000,20.740000 +06/25/1997,21.010000,22.280000,20.560000,21.500000 +06/26/1997,21.750000,22.130000,21.400000,21.820000 +06/27/1997,21.260000,21.350000,20.860000,21.220000 +06/30/1997,21.470000,21.910000,21.340000,21.530000 +07/01/1997,21.540000,21.540000,20.920000,21.000000 +07/02/1997,20.740000,20.740000,19.640000,19.700000 +07/03/1997,18.460000,18.640000,17.820000,17.820000 +07/07/1997,18.710000,19.380000,18.440000,19.130000 +07/08/1997,19.080000,19.220000,18.760000,18.760000 +07/09/1997,18.580000,20.510000,18.570000,20.400000 +07/10/1997,19.890000,20.290000,19.620000,19.920000 +07/11/1997,19.290000,19.340000,18.720000,19.060000 +07/14/1997,19.020000,19.840000,18.930000,19.580000 +07/15/1997,19.510000,20.100000,18.980000,19.000000 +07/16/1997,19.800000,19.840000,19.150000,19.360000 +07/17/1997,19.970000,20.820000,19.900000,20.540000 +07/18/1997,21.010000,23.050000,21.010000,22.280000 +07/21/1997,23.550000,23.710000,23.340000,23.510000 +07/22/1997,23.110000,23.170000,21.760000,21.770000 +07/23/1997,21.310000,21.570000,21.040000,21.300000 +07/24/1997,21.570000,22.100000,20.910000,20.960000 +07/25/1997,20.640000,20.970000,20.480000,20.820000 +07/28/1997,20.570000,22.140000,20.570000,21.840000 +07/29/1997,22.280000,22.370000,21.810000,22.020000 +07/30/1997,21.950000,22.060000,21.340000,21.390000 +07/31/1997,21.340000,21.980000,21.240000,21.480000 +08/01/1997,21.290000,22.970000,21.290000,22.290000 +08/04/1997,23.000000,23.340000,21.920000,21.940000 +08/05/1997,21.780000,21.780000,20.640000,20.640000 +08/06/1997,20.870000,20.890000,19.960000,20.050000 +08/07/1997,19.540000,19.980000,19.330000,19.770000 +08/08/1997,21.370000,23.230000,21.030000,22.460000 +08/11/1997,22.860000,23.580000,22.590000,22.770000 +08/12/1997,22.130000,23.900000,22.030000,23.750000 +08/13/1997,23.580000,25.470000,23.520000,24.520000 +08/14/1997,23.700000,23.880000,23.110000,23.110000 +08/15/1997,23.200000,25.050000,22.910000,24.450000 +08/18/1997,26.110000,26.310000,24.370000,24.370000 +08/19/1997,23.310000,23.310000,22.610000,22.640000 +08/20/1997,22.570000,22.630000,21.030000,21.090000 +08/21/1997,21.350000,24.080000,21.330000,23.830000 +08/22/1997,25.300000,26.240000,24.670000,24.740000 +08/25/1997,24.460000,24.460000,23.630000,24.100000 +08/26/1997,24.400000,24.910000,24.200000,24.730000 +08/27/1997,25.060000,25.380000,24.180000,24.260000 +08/28/1997,24.790000,25.530000,23.790000,24.510000 +08/29/1997,24.520000,25.060000,24.410000,24.760000 +09/02/1997,25.850000,25.910000,24.460000,24.530000 +09/03/1997,24.410000,24.960000,24.410000,24.950000 +09/04/1997,25.010000,25.600000,24.750000,25.270000 +09/05/1997,24.170000,24.860000,23.950000,24.310000 +09/08/1997,24.500000,24.540000,23.970000,24.400000 +09/09/1997,24.760000,24.770000,23.530000,23.890000 +09/10/1997,24.200000,24.640000,24.090000,24.640000 +09/11/1997,25.530000,27.330000,25.470000,25.990000 +09/12/1997,25.600000,26.360000,24.940000,25.170000 +09/15/1997,25.770000,26.150000,25.100000,25.740000 +09/16/1997,24.770000,25.100000,23.610000,23.770000 +09/17/1997,23.880000,24.800000,23.690000,24.100000 +09/18/1997,23.760000,23.870000,22.760000,23.480000 +09/19/1997,22.510000,23.060000,21.670000,22.740000 +09/22/1997,22.870000,22.870000,21.990000,22.080000 +09/23/1997,22.180000,22.620000,21.940000,22.000000 +09/24/1997,22.130000,23.880000,21.430000,22.640000 +09/25/1997,22.600000,23.330000,22.460000,22.960000 +09/26/1997,21.960000,22.670000,21.820000,22.260000 +09/29/1997,23.210000,23.230000,22.150000,22.230000 +09/30/1997,22.320000,22.910000,22.050000,22.910000 +10/01/1997,22.950000,22.990000,22.270000,22.320000 +10/02/1997,22.550000,22.730000,22.260000,22.270000 +10/03/1997,20.810000,22.170000,20.750000,21.540000 +10/06/1997,21.980000,22.230000,21.590000,21.610000 +10/07/1997,21.350000,21.650000,20.270000,20.290000 +10/08/1997,20.390000,21.910000,20.390000,20.770000 +10/09/1997,23.350000,23.500000,22.050000,22.310000 +10/10/1997,20.290000,20.540000,19.750000,19.750000 +10/13/1997,19.820000,20.700000,19.780000,20.260000 +10/14/1997,19.860000,20.970000,19.850000,19.990000 +10/15/1997,19.610000,21.010000,19.280000,20.050000 +10/16/1997,19.740000,21.050000,19.490000,20.530000 +10/17/1997,20.320000,22.850000,20.090000,21.690000 +10/20/1997,21.400000,21.460000,20.670000,20.720000 +10/21/1997,20.200000,20.210000,19.480000,19.530000 +10/22/1997,19.560000,20.170000,19.560000,19.860000 +10/23/1997,22.550000,24.110000,21.660000,22.990000 +10/24/1997,20.930000,23.490000,20.880000,23.170000 +10/27/1997,24.910000,32.640000,24.770000,31.120000 +10/28/1997,45.690000,48.640000,30.690000,31.220000 +10/29/1997,29.320000,34.430000,28.830000,33.750000 +10/30/1997,36.710000,38.560000,35.840000,38.200000 +10/31/1997,35.080000,37.250000,35.020000,35.090000 +11/03/1997,32.180000,32.670000,31.900000,32.090000 +11/04/1997,31.440000,33.280000,31.230000,32.240000 +11/05/1997,32.310000,32.660000,31.180000,32.180000 +11/06/1997,33.060000,33.450000,32.330000,32.570000 +11/07/1997,36.200000,38.220000,34.770000,36.270000 +11/10/1997,35.210000,36.760000,35.040000,36.630000 +11/11/1997,36.920000,36.920000,36.300000,36.380000 +11/12/1997,37.820000,37.860000,35.730000,37.840000 +11/13/1997,37.240000,38.460000,36.430000,36.640000 +11/14/1997,36.190000,36.300000,33.540000,33.660000 +11/17/1997,32.560000,32.620000,31.130000,31.580000 +11/18/1997,31.330000,32.340000,31.000000,31.550000 +11/19/1997,31.120000,31.270000,29.840000,29.930000 +11/20/1997,28.730000,28.810000,27.170000,27.320000 +11/21/1997,26.680000,27.670000,26.420000,26.650000 +11/24/1997,28.910000,30.120000,28.580000,29.800000 +11/25/1997,28.940000,30.320000,28.890000,28.950000 +11/28/1997,28.040000,28.270000,27.030000,27.430000 +12/01/1997,27.860000,27.860000,25.970000,26.010000 +12/02/1997,25.690000,26.060000,25.510000,25.660000 +12/03/1997,25.210000,25.550000,23.460000,23.920000 +12/04/1997,22.800000,24.060000,22.640000,23.840000 +12/05/1997,22.340000,23.050000,20.410000,22.650000 +12/08/1997,22.880000,23.530000,22.880000,23.220000 +12/09/1997,23.450000,23.790000,23.100000,23.360000 +12/10/1997,23.060000,25.220000,22.880000,24.550000 +12/11/1997,26.820000,28.010000,26.560000,27.630000 +12/12/1997,26.550000,27.920000,26.490000,27.920000 +12/15/1997,28.180000,28.810000,27.320000,27.370000 +12/16/1997,26.030000,26.510000,25.480000,26.110000 +12/17/1997,25.570000,26.790000,25.410000,26.330000 +12/18/1997,26.210000,27.630000,26.110000,27.190000 +12/19/1997,29.230000,33.080000,29.110000,29.180000 +12/22/1997,28.830000,29.420000,28.560000,28.560000 +12/23/1997,28.690000,29.860000,28.210000,29.860000 +12/24/1997,29.940000,30.830000,29.520000,30.270000 +12/26/1997,29.390000,30.040000,29.260000,29.270000 +12/29/1997,28.710000,28.770000,26.790000,26.790000 +12/30/1997,26.270000,26.280000,24.350000,24.380000 +12/31/1997,24.210000,24.520000,23.590000,24.010000 +01/02/1998,24.340000,24.930000,23.420000,23.420000 +01/05/1998,24.110000,25.020000,23.020000,24.360000 +01/06/1998,25.200000,25.970000,24.870000,25.660000 +01/07/1998,26.150000,27.430000,25.070000,25.070000 +01/08/1998,26.240000,26.700000,25.620000,26.010000 +01/09/1998,25.790000,29.350000,25.690000,28.690000 +01/12/1998,25.790000,31.080000,28.020000,28.020000 +01/13/1998,26.700000,26.790000,25.120000,25.170000 +01/14/1998,25.040000,25.040000,23.620000,23.750000 +01/15/1998,23.920000,24.400000,23.330000,23.450000 +01/16/1998,21.450000,22.360000,20.550000,21.650000 +01/20/1998,22.210000,23.140000,21.650000,21.650000 +01/21/1998,22.750000,23.590000,22.380000,22.530000 +01/22/1998,23.220000,23.690000,22.970000,23.160000 +01/23/1998,22.720000,24.410000,22.700000,23.320000 +01/26/1998,23.740000,24.430000,23.470000,23.970000 +01/27/1998,23.160000,23.170000,22.000000,22.270000 +01/28/1998,21.880000,22.400000,21.530000,22.060000 +01/29/1998,21.970000,21.970000,21.080000,21.650000 +01/30/1998,21.670000,21.780000,21.050000,21.470000 +02/02/1998,21.320000,21.560000,21.230000,21.360000 +02/03/1998,21.310000,21.480000,20.670000,20.670000 +02/04/1998,21.000000,21.170000,20.310000,20.550000 +02/05/1998,19.180000,21.450000,19.180000,21.290000 +02/06/1998,20.970000,21.250000,20.480000,20.510000 +02/09/1998,21.230000,21.900000,21.200000,21.550000 +02/10/1998,21.210000,21.270000,20.360000,20.660000 +02/11/1998,21.040000,21.040000,20.360000,20.380000 +02/12/1998,20.620000,21.220000,19.660000,19.730000 +02/13/1998,20.480000,20.520000,19.730000,19.840000 +02/17/1998,20.430000,21.000000,20.230000,20.760000 +02/18/1998,20.240000,20.380000,19.660000,19.660000 +02/19/1998,19.890000,20.190000,19.720000,19.880000 +02/20/1998,19.560000,19.870000,18.970000,19.000000 +02/23/1998,19.140000,19.720000,18.970000,18.990000 +02/24/1998,19.130000,19.690000,18.770000,19.350000 +02/25/1998,19.010000,19.290000,18.390000,18.620000 +02/26/1998,18.960000,19.020000,18.530000,18.630000 +02/27/1998,18.660000,18.940000,18.390000,18.550000 +03/02/1998,18.970000,19.380000,18.800000,19.190000 +03/03/1998,19.430000,19.580000,19.040000,19.040000 +03/04/1998,19.270000,19.830000,19.270000,19.580000 +03/05/1998,20.870000,21.060000,20.260000,20.930000 +03/06/1998,19.970000,19.970000,19.130000,19.140000 +03/09/1998,20.200000,20.450000,19.720000,20.230000 +03/10/1998,19.900000,20.010000,19.390000,19.430000 +03/11/1998,19.410000,19.560000,18.760000,18.890000 +03/12/1998,18.760000,19.210000,18.040000,18.250000 +03/13/1998,17.690000,19.430000,17.580000,18.710000 +03/16/1998,19.270000,19.340000,18.460000,18.510000 +03/17/1998,18.420000,19.040000,18.250000,18.660000 +03/18/1998,18.710000,19.060000,18.110000,18.290000 +03/19/1998,17.900000,18.530000,17.700000,17.760000 +03/20/1998,17.610000,18.840000,17.600000,18.690000 +03/23/1998,19.650000,20.180000,19.550000,19.980000 +03/24/1998,20.110000,20.650000,19.870000,20.510000 +03/25/1998,20.590000,23.550000,20.590000,22.540000 +03/26/1998,23.020000,23.540000,22.280000,22.810000 +03/27/1998,22.440000,24.230000,22.410000,23.470000 +03/30/1998,24.320000,24.920000,24.180000,24.660000 +03/31/1998,24.230000,24.350000,23.410000,24.220000 +04/01/1998,24.850000,24.970000,23.290000,23.370000 +04/02/1998,23.070000,23.070000,21.810000,21.980000 +04/03/1998,21.940000,22.250000,21.460000,21.820000 +04/06/1998,21.840000,22.640000,21.840000,22.470000 +04/07/1998,23.310000,24.300000,23.140000,23.660000 +04/08/1998,23.010000,23.500000,22.720000,23.170000 +04/09/1998,21.390000,22.390000,21.250000,21.510000 +04/13/1998,22.990000,23.570000,22.770000,22.770000 +04/14/1998,23.370000,23.940000,21.610000,21.610000 +04/15/1998,21.460000,21.710000,20.780000,20.890000 +04/16/1998,21.440000,22.360000,21.440000,22.060000 +04/17/1998,22.320000,22.320000,20.690000,20.760000 +04/20/1998,21.220000,21.250000,20.380000,20.390000 +04/21/1998,20.510000,20.540000,19.640000,19.910000 +04/22/1998,19.740000,19.830000,19.250000,19.440000 +04/23/1998,20.400000,20.770000,19.430000,20.600000 +04/24/1998,20.280000,22.420000,20.150000,21.970000 +04/27/1998,20.280000,27.470000,24.950000,26.090000 +04/28/1998,24.040000,24.880000,23.690000,24.170000 +04/29/1998,23.360000,23.690000,22.540000,22.780000 +04/30/1998,21.160000,21.370000,20.510000,21.180000 +05/01/1998,20.720000,20.920000,19.300000,19.340000 +05/04/1998,19.570000,20.560000,19.490000,20.320000 +05/05/1998,20.940000,21.730000,20.730000,21.460000 +05/06/1998,21.900000,22.890000,21.840000,22.790000 +05/07/1998,23.650000,23.900000,22.930000,23.390000 +05/08/1998,20.940000,21.100000,20.180000,20.570000 +05/11/1998,20.080000,21.400000,19.670000,21.050000 +05/12/1998,21.230000,21.700000,20.710000,20.980000 +05/13/1998,20.290000,20.720000,20.220000,20.440000 +05/14/1998,19.900000,20.830000,19.630000,19.640000 +05/15/1998,19.610000,21.050000,19.330000,20.440000 +05/18/1998,20.840000,22.210000,20.800000,21.690000 +05/19/1998,20.740000,21.130000,20.110000,20.390000 +05/20/1998,19.660000,20.340000,19.550000,19.890000 +05/21/1998,19.700000,19.950000,19.220000,19.380000 +05/22/1998,18.660000,19.550000,18.600000,18.990000 +05/26/1998,19.660000,22.070000,19.630000,22.070000 +05/27/1998,24.330000,25.100000,22.590000,22.590000 +05/28/1998,21.790000,21.920000,20.510000,20.740000 +05/29/1998,19.930000,21.530000,19.930000,21.320000 +06/01/1998,22.710000,23.320000,22.150000,22.830000 +06/02/1998,22.220000,22.660000,21.680000,22.000000 +06/03/1998,21.100000,22.890000,21.040000,22.850000 +06/04/1998,22.820000,23.150000,21.110000,21.220000 +06/05/1998,20.480000,20.520000,19.770000,19.780000 +06/08/1998,19.020000,20.860000,18.970000,20.580000 +06/09/1998,20.450000,21.050000,20.340000,20.520000 +06/10/1998,21.260000,21.930000,20.420000,21.480000 +06/11/1998,21.870000,23.650000,21.870000,23.570000 +06/12/1998,23.570000,25.050000,22.730000,22.780000 +06/15/1998,24.770000,26.030000,23.890000,25.940000 +06/16/1998,26.490000,26.490000,24.800000,24.800000 +06/17/1998,23.380000,23.510000,22.270000,22.890000 +06/18/1998,22.870000,23.060000,22.340000,22.400000 +06/19/1998,21.480000,22.120000,21.310000,21.920000 +06/22/1998,22.960000,23.080000,21.590000,21.940000 +06/23/1998,21.180000,21.180000,20.140000,20.170000 +06/24/1998,20.180000,20.550000,19.460000,20.020000 +06/25/1998,19.500000,20.320000,19.360000,20.250000 +06/26/1998,19.840000,19.950000,19.180000,19.360000 +06/29/1998,19.390000,19.580000,18.930000,19.570000 +06/30/1998,19.850000,19.880000,19.120000,19.710000 +07/01/1998,18.990000,19.350000,18.000000,18.000000 +07/02/1998,18.490000,18.680000,17.630000,17.670000 +07/06/1998,19.060000,19.180000,18.590000,18.630000 +07/07/1998,18.400000,18.850000,18.310000,18.620000 +07/08/1998,18.240000,18.320000,17.520000,17.820000 +07/09/1998,18.050000,18.490000,17.780000,18.160000 +07/10/1998,17.860000,18.540000,17.580000,17.920000 +07/13/1998,18.360000,18.510000,18.090000,18.260000 +07/14/1998,18.320000,18.320000,17.600000,17.880000 +07/15/1998,17.880000,18.650000,17.650000,17.890000 +07/16/1998,17.560000,18.070000,16.860000,16.970000 +07/17/1998,16.420000,16.500000,16.100000,16.230000 +07/20/1998,17.730000,17.730000,16.810000,17.340000 +07/21/1998,17.450000,20.350000,17.450000,20.100000 +07/22/1998,20.530000,21.300000,20.160000,20.320000 +07/23/1998,20.540000,24.080000,20.310000,23.010000 +07/24/1998,22.540000,24.540000,22.540000,23.010000 +07/27/1998,24.430000,24.690000,23.130000,23.130000 +07/28/1998,23.690000,26.680000,23.430000,25.250000 +07/29/1998,23.290000,25.150000,23.290000,24.790000 +07/30/1998,23.810000,23.810000,22.660000,22.660000 +07/31/1998,22.290000,25.120000,22.110000,24.800000 +08/03/1998,26.150000,26.310000,25.380000,25.980000 +08/04/1998,25.570000,31.060000,25.570000,31.060000 +08/05/1998,31.780000,32.590000,28.730000,29.830000 +08/06/1998,29.450000,29.930000,28.060000,28.200000 +08/07/1998,27.660000,27.660000,25.350000,27.020000 +08/10/1998,28.050000,29.130000,27.990000,28.750000 +08/11/1998,32.540000,33.670000,31.910000,31.910000 +08/12/1998,29.410000,29.750000,28.510000,28.550000 +08/13/1998,28.200000,29.980000,28.170000,29.920000 +08/14/1998,29.860000,34.610000,29.840000,34.340000 +08/17/1998,34.770000,34.770000,31.860000,31.860000 +08/18/1998,30.660000,30.810000,28.360000,28.400000 +08/19/1998,27.560000,29.260000,27.350000,28.690000 +08/20/1998,29.270000,30.540000,29.240000,30.000000 +08/21/1998,32.590000,36.930000,32.590000,33.140000 +08/24/1998,31.690000,32.580000,31.300000,31.800000 +08/25/1998,29.310000,30.820000,28.490000,30.330000 +08/26/1998,31.950000,32.650000,30.440000,31.140000 +08/27/1998,33.650000,39.480000,33.650000,38.550000 +08/28/1998,38.400000,42.780000,38.400000,39.600000 +08/31/1998,39.740000,45.020000,38.800000,44.280000 +09/01/1998,41.740000,44.940000,36.080000,36.480000 +09/02/1998,35.210000,36.760000,34.020000,36.760000 +09/03/1998,40.960000,42.680000,40.010000,41.430000 +09/04/1998,40.660000,44.190000,40.580000,43.310000 +09/08/1998,40.110000,40.340000,37.700000,37.900000 +09/09/1998,37.860000,39.800000,37.560000,39.660000 +09/10/1998,43.890000,46.560000,43.720000,45.290000 +09/11/1998,47.950000,48.060000,43.740000,43.740000 +09/14/1998,40.890000,40.890000,37.530000,38.570000 +09/15/1998,38.370000,38.730000,36.430000,36.580000 +09/16/1998,35.930000,37.730000,35.720000,35.940000 +09/17/1998,39.430000,40.110000,38.820000,39.230000 +09/18/1998,39.440000,39.840000,38.510000,38.630000 +09/21/1998,42.740000,42.740000,38.390000,38.580000 +09/22/1998,37.850000,38.910000,36.470000,36.620000 +09/23/1998,35.030000,35.140000,32.440000,32.470000 +09/24/1998,33.780000,35.900000,33.060000,34.660000 +09/25/1998,37.140000,37.290000,33.910000,34.550000 +09/28/1998,34.200000,35.240000,33.520000,34.870000 +09/29/1998,37.170000,38.390000,35.740000,36.080000 +09/30/1998,37.160000,41.150000,37.100000,40.950000 +10/01/1998,41.900000,43.980000,41.850000,43.480000 +10/02/1998,42.170000,43.380000,40.250000,40.470000 +10/05/1998,42.650000,45.560000,42.300000,42.810000 +10/06/1998,40.160000,42.050000,39.720000,41.200000 +10/07/1998,40.980000,44.840000,40.660000,43.510000 +10/08/1998,47.070000,49.530000,45.580000,45.740000 +10/09/1998,43.280000,45.360000,41.850000,42.200000 +10/12/1998,40.550000,40.560000,39.400000,40.070000 +10/13/1998,40.970000,41.600000,39.960000,40.230000 +10/14/1998,40.920000,40.930000,38.010000,38.960000 +10/15/1998,39.610000,39.660000,32.410000,33.340000 +10/16/1998,34.010000,35.780000,33.620000,34.820000 +10/19/1998,35.940000,36.010000,32.410000,33.130000 +10/20/1998,30.810000,33.360000,29.820000,33.110000 +10/21/1998,33.270000,34.550000,32.990000,33.210000 +10/22/1998,33.900000,34.170000,31.320000,31.530000 +10/23/1998,31.900000,32.700000,31.690000,32.270000 +10/26/1998,33.250000,33.260000,31.380000,32.380000 +10/27/1998,31.200000,33.270000,30.740000,32.950000 +10/28/1998,33.770000,33.770000,31.970000,32.420000 +10/29/1998,32.090000,32.260000,29.390000,29.500000 +10/30/1998,28.280000,28.710000,27.540000,28.050000 +11/02/1998,28.310000,28.720000,27.200000,27.260000 +11/03/1998,26.600000,28.190000,26.600000,27.760000 +11/04/1998,26.980000,27.940000,26.500000,27.370000 +11/05/1998,27.520000,28.310000,26.000000,26.010000 +11/06/1998,25.910000,26.470000,25.600000,25.700000 +11/09/1998,26.930000,28.720000,26.890000,28.090000 +11/10/1998,28.200000,28.590000,27.310000,28.170000 +11/11/1998,27.280000,29.070000,27.250000,28.470000 +11/12/1998,28.630000,29.660000,27.930000,29.280000 +11/13/1998,29.490000,29.600000,28.930000,29.030000 +11/16/1998,28.790000,29.580000,28.780000,28.900000 +11/17/1998,29.340000,30.560000,27.210000,27.950000 +11/18/1998,28.130000,28.460000,27.130000,27.130000 +11/19/1998,26.100000,26.400000,25.310000,25.500000 +11/20/1998,26.100000,24.010000,22.430000,22.470000 +11/23/1998,22.200000,22.230000,21.240000,21.840000 +11/24/1998,22.320000,23.650000,22.100000,23.280000 +11/25/1998,23.480000,23.680000,22.080000,22.150000 +11/27/1998,22.430000,22.470000,21.980000,22.090000 +11/30/1998,22.790000,26.010000,22.790000,26.010000 +12/01/1998,27.380000,27.400000,24.840000,24.970000 +12/02/1998,25.630000,26.520000,25.280000,25.430000 +12/03/1998,25.530000,28.770000,25.130000,28.700000 +12/04/1998,26.280000,26.760000,25.080000,25.310000 +12/07/1998,25.590000,25.960000,24.820000,24.900000 +12/08/1998,25.050000,26.250000,24.640000,25.580000 +12/09/1998,25.780000,26.480000,25.490000,25.660000 +12/10/1998,25.730000,26.910000,25.730000,26.810000 +12/11/1998,27.930000,28.830000,27.290000,27.720000 +12/14/1998,29.860000,31.670000,29.570000,31.310000 +12/15/1998,31.380000,31.380000,29.420000,29.420000 +12/16/1998,29.130000,30.280000,29.130000,29.960000 +12/17/1998,29.420000,29.420000,27.940000,27.960000 +12/18/1998,26.800000,26.960000,25.040000,25.040000 +12/21/1998,24.640000,24.640000,23.090000,23.860000 +12/22/1998,24.050000,24.450000,22.750000,22.780000 +12/23/1998,21.890000,22.060000,20.080000,20.210000 +12/24/1998,21.000000,21.780000,20.660000,21.480000 +12/28/1998,22.920000,23.970000,22.910000,23.500000 +12/29/1998,23.680000,24.000000,22.110000,22.180000 +12/30/1998,22.030000,23.560000,22.030000,23.340000 +12/31/1998,23.740000,24.760000,23.670000,24.420000 +01/04/1999,25.380000,26.960000,24.740000,26.170000 +01/05/1999,25.920000,25.980000,24.360000,24.460000 +01/06/1999,23.360000,23.380000,22.680000,23.340000 +01/07/1999,24.420000,24.900000,24.040000,24.370000 +01/08/1999,22.950000,24.080000,22.810000,23.280000 +01/11/1999,21.410000,25.810000,21.380000,25.460000 +01/12/1999,25.590000,28.320000,25.550000,28.100000 +01/13/1999,32.620000,32.850000,28.780000,30.110000 +01/14/1999,30.460000,33.660000,30.200000,32.980000 +01/15/1999,32.560000,32.560000,29.140000,29.240000 +01/19/1999,28.860000,30.610000,28.800000,29.240000 +01/20/1999,28.620000,29.040000,27.620000,28.600000 +01/21/1999,29.550000,31.370000,29.230000,30.920000 +01/22/1999,32.260000,32.810000,31.100000,31.950000 +01/25/1999,32.220000,32.710000,31.130000,31.130000 +01/26/1999,30.920000,30.960000,29.230000,29.230000 +01/27/1999,28.280000,29.810000,28.240000,29.730000 +01/28/1999,29.250000,29.510000,28.010000,28.110000 +01/29/1999,27.770000,28.550000,25.900000,26.250000 +02/01/1999,27.210000,27.740000,26.760000,27.670000 +02/02/1999,28.190000,29.460000,28.110000,28.160000 +02/03/1999,28.590000,29.030000,27.620000,27.880000 +02/04/1999,27.620000,29.490000,27.580000,29.480000 +02/05/1999,29.690000,30.540000,29.460000,29.670000 +02/08/1999,29.530000,30.770000,29.530000,30.270000 +02/09/1999,29.960000,31.410000,29.840000,31.360000 +02/10/1999,31.590000,31.750000,30.450000,30.450000 +02/11/1999,30.030000,30.160000,27.420000,27.420000 +02/12/1999,27.850000,30.460000,27.850000,29.760000 +02/16/1999,28.880000,30.040000,28.730000,29.650000 +02/17/1999,30.210000,30.950000,29.160000,30.650000 +02/18/1999,30.990000,31.140000,30.320000,30.450000 +02/19/1999,30.010000,30.120000,28.610000,29.300000 +02/22/1999,28.830000,28.830000,25.780000,25.870000 +02/23/1999,25.920000,26.900000,25.920000,26.490000 +02/24/1999,25.700000,27.210000,25.220000,27.210000 +02/25/1999,27.950000,29.710000,27.800000,28.010000 +02/26/1999,28.410000,29.000000,27.630000,27.880000 +03/01/1999,29.340000,29.870000,28.140000,28.370000 +03/02/1999,27.960000,29.280000,27.490000,29.220000 +03/03/1999,28.850000,29.900000,28.820000,29.040000 +03/04/1999,27.810000,27.810000,26.420000,26.670000 +03/05/1999,24.780000,25.440000,24.080000,24.080000 +03/08/1999,24.870000,25.210000,24.480000,24.540000 +03/09/1999,25.280000,25.290000,24.250000,25.020000 +03/10/1999,24.860000,25.390000,24.610000,24.790000 +03/11/1999,24.310000,24.980000,23.820000,24.370000 +03/12/1999,24.790000,25.360000,24.740000,24.840000 +03/15/1999,25.810000,25.900000,25.180000,25.240000 +03/16/1999,25.340000,25.560000,24.980000,25.150000 +03/17/1999,24.930000,26.490000,24.900000,25.570000 +03/18/1999,25.140000,25.240000,24.030000,24.130000 +03/19/1999,24.070000,24.350000,23.390000,24.320000 +03/22/1999,25.300000,25.550000,24.800000,25.000000 +03/23/1999,25.970000,27.740000,25.840000,27.270000 +03/24/1999,26.990000,27.310000,26.590000,26.600000 +03/25/1999,25.320000,25.380000,24.330000,24.330000 +03/26/1999,24.790000,24.810000,23.830000,24.040000 +03/29/1999,23.870000,23.960000,23.450000,23.540000 +03/30/1999,24.340000,24.340000,22.710000,22.730000 +03/31/1999,22.030000,23.300000,22.000000,23.260000 +04/01/1999,22.030000,22.870000,22.060000,22.060000 +04/05/1999,22.880000,23.200000,22.180000,22.190000 +04/06/1999,22.530000,23.040000,22.120000,22.650000 +04/07/1999,22.530000,23.260000,22.100000,22.810000 +04/08/1999,23.380000,23.510000,22.010000,22.590000 +04/09/1999,22.160000,22.590000,21.550000,21.770000 +04/12/1999,21.130000,23.410000,20.470000,21.930000 +04/13/1999,22.160000,23.350000,22.010000,22.730000 +04/14/1999,23.330000,24.960000,23.070000,24.940000 +04/15/1999,25.220000,26.240000,23.910000,23.930000 +04/16/1999,24.070000,24.240000,23.600000,23.900000 +04/19/1999,23.590000,26.500000,22.930000,26.420000 +04/20/1999,25.840000,26.090000,24.790000,25.020000 +04/21/1999,24.860000,24.880000,23.310000,23.310000 +04/22/1999,22.420000,22.810000,22.400000,22.620000 +04/23/1999,22.600000,23.130000,22.370000,22.760000 +04/26/1999,23.930000,23.940000,23.210000,23.530000 +04/27/1999,23.040000,23.710000,23.020000,23.360000 +04/28/1999,23.530000,24.480000,23.450000,24.400000 +04/29/1999,24.500000,25.550000,24.320000,25.060000 +04/30/1999,24.410000,26.470000,23.620000,25.070000 +05/03/1999,24.410000,25.770000,24.110000,24.150000 +05/04/1999,24.230000,25.700000,24.230000,25.620000 +05/05/1999,25.720000,27.220000,25.170000,25.190000 +05/06/1999,25.340000,28.580000,25.340000,27.440000 +05/07/1999,26.150000,26.420000,25.360000,25.360000 +05/10/1999,26.390000,26.980000,25.730000,26.620000 +05/11/1999,25.860000,26.210000,25.330000,25.620000 +05/12/1999,26.710000,27.080000,26.060000,26.130000 +05/13/1999,25.560000,25.560000,24.760000,25.020000 +05/14/1999,26.590000,27.780000,26.480000,26.860000 +05/17/1999,27.980000,29.210000,27.270000,27.280000 +05/18/1999,27.550000,28.760000,27.200000,27.260000 +05/19/1999,25.860000,26.410000,25.080000,25.080000 +05/20/1999,25.100000,25.260000,24.050000,24.460000 +05/21/1999,24.120000,24.840000,24.050000,24.400000 +05/24/1999,24.930000,27.800000,24.840000,27.620000 +05/25/1999,27.710000,29.140000,26.870000,28.900000 +05/26/1999,28.830000,29.620000,27.570000,27.570000 +05/27/1999,27.590000,28.680000,27.550000,28.120000 +05/28/1999,27.260000,27.260000,25.340000,25.390000 +06/01/1999,27.120000,27.990000,26.600000,26.620000 +06/02/1999,26.530000,27.780000,25.990000,26.210000 +06/03/1999,25.820000,26.700000,25.660000,26.200000 +06/04/1999,25.310000,25.460000,23.430000,23.430000 +06/07/1999,24.400000,24.490000,23.660000,23.780000 +06/08/1999,23.560000,24.280000,23.420000,24.020000 +06/09/1999,23.840000,24.260000,23.630000,23.900000 +06/10/1999,24.780000,26.150000,24.710000,25.320000 +06/11/1999,24.870000,27.010000,24.690000,25.900000 +06/14/1999,26.080000,26.800000,26.080000,26.510000 +06/15/1999,26.160000,26.230000,25.330000,25.910000 +06/16/1999,24.390000,24.570000,22.140000,22.400000 +06/17/1999,22.740000,23.120000,21.770000,21.950000 +06/18/1999,22.190000,23.030000,21.750000,21.750000 +06/21/1999,22.320000,22.900000,21.770000,21.810000 +06/22/1999,21.680000,21.890000,20.760000,21.700000 +06/23/1999,22.210000,22.480000,21.310000,21.320000 +06/24/1999,20.670000,23.940000,20.670000,23.060000 +06/25/1999,21.360000,22.250000,20.850000,21.760000 +06/28/1999,22.480000,22.970000,22.280000,22.630000 +06/29/1999,23.540000,23.550000,22.490000,22.510000 +06/30/1999,22.990000,23.340000,20.800000,21.090000 +07/01/1999,20.570000,21.430000,19.630000,19.690000 +07/02/1999,19.240000,19.450000,18.660000,18.660000 +07/06/1999,19.930000,20.750000,19.640000,20.730000 +07/07/1999,21.110000,21.240000,20.350000,20.350000 +07/08/1999,20.970000,21.010000,19.880000,20.240000 +07/09/1999,18.550000,18.750000,17.900000,17.960000 +07/12/1999,19.300000,20.120000,19.300000,19.730000 +07/13/1999,19.350000,20.740000,19.160000,19.950000 +07/14/1999,19.440000,20.380000,19.380000,19.710000 +07/15/1999,18.670000,19.330000,18.620000,18.680000 +07/16/1999,18.050000,18.480000,17.070000,17.420000 +07/19/1999,18.500000,19.490000,18.380000,19.070000 +07/20/1999,19.960000,21.950000,19.960000,21.790000 +07/21/1999,21.260000,21.780000,21.030000,21.460000 +07/22/1999,21.900000,23.380000,21.730000,23.050000 +07/23/1999,22.360000,23.690000,22.360000,23.320000 +07/26/1999,24.760000,25.740000,24.260000,24.980000 +07/27/1999,24.450000,24.540000,22.870000,23.230000 +07/28/1999,23.340000,23.730000,22.570000,22.850000 +07/29/1999,23.510000,25.080000,23.500000,24.520000 +07/30/1999,23.810000,24.710000,23.290000,24.640000 +08/02/1999,25.750000,25.790000,24.750000,25.590000 +08/03/1999,25.250000,26.540000,25.250000,26.270000 +08/04/1999,25.630000,27.500000,25.010000,27.400000 +08/05/1999,28.830000,29.920000,26.940000,27.010000 +08/06/1999,26.310000,27.180000,25.980000,26.600000 +08/09/1999,27.410000,27.980000,27.090000,27.660000 +08/10/1999,27.610000,30.000000,27.610000,28.450000 +08/11/1999,27.190000,27.270000,25.370000,25.390000 +08/12/1999,24.580000,25.060000,24.080000,25.030000 +08/13/1999,23.660000,23.800000,22.270000,22.310000 +08/16/1999,23.750000,23.750000,22.910000,23.070000 +08/17/1999,22.090000,22.860000,21.670000,21.670000 +08/18/1999,22.780000,23.310000,22.720000,23.300000 +08/19/1999,24.570000,24.960000,24.220000,24.390000 +08/20/1999,24.050000,24.070000,22.950000,22.950000 +08/23/1999,23.130000,23.130000,22.520000,22.550000 +08/24/1999,23.410000,23.630000,22.120000,22.400000 +08/25/1999,21.920000,22.410000,20.830000,20.960000 +08/26/1999,20.250000,21.260000,20.120000,21.210000 +08/27/1999,20.900000,22.010000,20.900000,21.830000 +08/30/1999,23.300000,24.650000,23.290000,24.630000 +08/31/1999,24.410000,25.540000,23.740000,24.450000 +09/01/1999,23.860000,24.180000,22.930000,22.930000 +09/02/1999,24.250000,25.560000,24.250000,24.530000 +09/03/1999,21.500000,21.550000,20.870000,20.980000 +09/07/1999,22.400000,23.650000,22.350000,23.440000 +09/08/1999,24.210000,24.270000,22.940000,23.820000 +09/09/1999,23.910000,24.080000,23.010000,23.010000 +09/10/1999,22.190000,22.540000,21.670000,22.030000 +09/13/1999,22.800000,23.350000,22.700000,22.890000 +09/14/1999,23.380000,24.170000,23.380000,23.770000 +09/15/1999,22.970000,24.890000,22.750000,24.560000 +09/16/1999,25.460000,27.540000,25.070000,25.250000 +09/17/1999,24.330000,24.500000,23.140000,23.300000 +09/20/1999,24.080000,24.360000,23.950000,24.030000 +09/21/1999,24.510000,26.070000,24.200000,25.650000 +09/22/1999,25.880000,26.490000,24.640000,25.190000 +09/23/1999,24.130000,27.840000,24.020000,27.840000 +09/24/1999,28.200000,29.210000,27.760000,27.790000 +09/27/1999,27.060000,27.150000,26.060000,26.400000 +09/28/1999,26.340000,28.580000,25.940000,26.060000 +09/29/1999,25.510000,26.690000,24.860000,26.490000 +09/30/1999,26.150000,26.470000,24.840000,25.410000 +10/01/1999,25.580000,26.290000,24.930000,24.930000 +10/04/1999,25.260000,25.260000,24.450000,24.460000 +10/05/1999,24.680000,26.460000,24.330000,24.790000 +10/06/1999,23.720000,23.860000,21.990000,22.060000 +10/07/1999,22.440000,23.820000,22.320000,23.580000 +10/08/1999,22.440000,22.680000,20.370000,20.490000 +10/11/1999,20.710000,21.050000,20.360000,20.630000 +10/12/1999,21.560000,23.020000,21.540000,22.840000 +10/13/1999,22.620000,26.570000,22.570000,25.960000 +10/14/1999,26.680000,27.470000,25.600000,26.050000 +10/15/1999,27.310000,29.400000,27.310000,28.750000 +10/18/1999,29.340000,29.810000,28.150000,28.190000 +10/19/1999,26.250000,26.560000,24.850000,26.560000 +10/20/1999,25.150000,25.480000,23.870000,23.900000 +10/21/1999,25.530000,25.710000,23.990000,24.020000 +10/22/1999,22.020000,22.080000,20.830000,21.640000 +10/25/1999,23.780000,24.150000,23.160000,23.600000 +10/26/1999,22.940000,24.260000,22.680000,24.260000 +10/27/1999,24.320000,25.380000,24.070000,24.200000 +10/28/1999,22.370000,22.500000,21.280000,21.340000 +10/29/1999,20.630000,22.370000,20.300000,22.200000 +11/01/1999,22.700000,22.910000,22.050000,22.090000 +11/02/1999,22.090000,23.320000,21.290000,23.100000 +11/03/1999,23.080000,23.570000,22.760000,23.160000 +11/04/1999,22.470000,23.310000,22.430000,23.000000 +11/05/1999,21.470000,22.120000,21.290000,21.660000 +11/08/1999,22.570000,22.580000,21.720000,21.870000 +11/09/1999,22.060000,22.960000,22.060000,22.700000 +11/10/1999,22.600000,22.690000,21.980000,22.260000 +11/11/1999,22.240000,22.680000,22.020000,22.070000 +11/12/1999,21.990000,22.940000,21.640000,21.650000 +11/15/1999,21.780000,23.240000,21.550000,22.740000 +11/16/1999,22.130000,22.770000,20.730000,20.730000 +11/17/1999,20.780000,21.250000,20.550000,20.960000 +11/18/1999,20.590000,20.700000,19.560000,19.760000 +11/19/1999,18.800000,19.800000,18.640000,19.110000 +11/22/1999,20.370000,20.460000,19.660000,19.980000 +11/23/1999,21.070000,21.860000,20.800000,21.000000 +11/24/1999,20.700000,20.850000,20.100000,20.260000 +11/26/1999,20.350000,23.470000,20.220000,22.330000 +11/29/1999,24.270000,24.290000,23.110000,23.570000 +11/30/1999,23.810000,24.210000,22.860000,24.180000 +12/01/1999,23.410000,23.410000,22.230000,22.230000 +12/02/1999,21.690000,22.290000,21.670000,21.770000 +12/03/1999,19.740000,19.820000,18.690000,19.320000 +12/06/1999,21.120000,21.470000,20.210000,20.580000 +12/07/1999,20.930000,21.550000,20.800000,21.090000 +12/08/1999,21.210000,21.330000,20.620000,21.250000 +12/09/1999,20.800000,22.310000,20.720000,21.190000 +12/10/1999,21.610000,22.150000,21.030000,21.480000 +12/13/1999,21.960000,22.480000,21.570000,21.720000 +12/14/1999,22.250000,23.250000,22.050000,23.060000 +12/15/1999,23.250000,23.770000,21.830000,22.030000 +12/16/1999,21.360000,22.950000,21.140000,21.910000 +12/17/1999,21.390000,21.460000,20.840000,21.350000 +12/20/1999,22.180000,24.220000,22.140000,23.780000 +12/21/1999,22.980000,24.020000,22.090000,22.660000 +12/22/1999,22.140000,22.840000,22.140000,22.430000 +12/23/1999,21.590000,21.630000,20.870000,21.120000 +12/27/1999,22.880000,23.340000,22.850000,23.070000 +12/28/1999,23.610000,23.690000,22.860000,22.970000 +12/29/1999,23.080000,23.370000,22.800000,23.090000 +12/30/1999,23.510000,25.170000,23.150000,24.760000 +01/03/2000,24.360000,26.150000,23.980000,24.210000 +01/04/2000,24.940000,27.180000,24.800000,27.010000 +01/05/2000,27.980000,29.000000,25.850000,26.410000 +01/06/2000,26.680000,26.710000,24.700000,25.730000 +01/07/2000,25.140000,25.170000,21.720000,21.720000 +01/10/2000,21.890000,22.490000,21.360000,21.710000 +01/11/2000,21.980000,22.630000,21.690000,22.500000 +01/12/2000,23.050000,23.490000,22.410000,22.840000 +01/13/2000,22.730000,23.100000,21.320000,21.710000 +01/14/2000,19.830000,20.150000,19.510000,19.660000 +01/18/2000,21.390000,21.630000,20.970000,21.500000 +01/19/2000,22.150000,22.160000,21.440000,21.720000 +01/20/2000,21.310000,22.600000,21.180000,21.750000 +01/21/2000,21.550000,21.910000,20.500000,20.820000 +01/24/2000,21.430000,24.440000,21.430000,24.070000 +01/25/2000,23.790000,24.280000,22.870000,23.020000 +01/26/2000,22.910000,23.190000,22.450000,23.030000 +01/27/2000,22.370000,24.390000,22.030000,23.540000 +01/28/2000,23.750000,26.540000,23.170000,26.140000 +01/31/2000,26.780000,27.430000,24.940000,24.950000 +02/01/2000,24.430000,24.740000,23.290000,23.450000 +02/02/2000,23.020000,24.740000,22.620000,23.120000 +02/03/2000,22.720000,23.730000,21.930000,22.010000 +02/04/2000,20.770000,21.770000,20.690000,21.540000 +02/07/2000,22.970000,23.270000,22.790000,22.790000 +02/08/2000,21.680000,22.080000,21.170000,21.250000 +02/09/2000,21.540000,22.900000,21.290000,22.900000 +02/10/2000,23.360000,23.550000,22.750000,23.070000 +02/11/2000,22.940000,24.800000,22.820000,24.420000 +02/14/2000,24.670000,24.890000,24.270000,24.380000 +02/15/2000,24.080000,24.750000,22.840000,22.920000 +02/16/2000,23.200000,23.830000,22.740000,23.510000 +02/17/2000,22.900000,23.480000,22.630000,23.170000 +02/18/2000,23.370000,26.370000,23.370000,26.000000 +02/22/2000,25.910000,28.120000,25.470000,25.860000 +02/23/2000,25.200000,25.370000,23.560000,23.890000 +02/24/2000,24.180000,25.940000,24.150000,24.380000 +02/25/2000,24.130000,25.370000,23.580000,25.200000 +02/28/2000,25.900000,26.190000,24.090000,24.680000 +02/29/2000,23.760000,23.880000,23.240000,23.370000 +03/01/2000,22.650000,22.720000,21.410000,21.640000 +03/02/2000,21.620000,22.100000,20.930000,21.060000 +03/03/2000,19.980000,20.040000,19.190000,19.210000 +03/06/2000,20.380000,21.740000,20.330000,21.500000 +03/07/2000,22.240000,24.490000,22.240000,24.310000 +03/08/2000,24.570000,25.200000,23.480000,23.820000 +03/09/2000,24.180000,24.180000,22.200000,22.210000 +03/10/2000,20.890000,21.690000,20.840000,21.240000 +03/13/2000,23.030000,23.260000,21.990000,22.850000 +03/14/2000,22.750000,24.410000,22.330000,24.410000 +03/15/2000,24.660000,24.760000,21.980000,22.340000 +03/16/2000,21.650000,21.920000,20.490000,20.770000 +03/17/2000,21.260000,22.560000,21.070000,22.370000 +03/20/2000,22.310000,23.260000,22.280000,22.960000 +03/21/2000,23.450000,23.450000,21.270000,21.700000 +03/22/2000,21.910000,22.020000,21.220000,21.490000 +03/23/2000,21.820000,22.420000,21.100000,22.260000 +03/24/2000,22.450000,23.960000,22.120000,23.310000 +03/27/2000,24.350000,24.800000,24.100000,24.530000 +03/28/2000,24.990000,25.200000,24.470000,24.860000 +03/29/2000,24.370000,25.020000,23.790000,24.100000 +03/30/2000,23.950000,25.870000,23.790000,25.470000 +03/31/2000,24.780000,24.970000,23.440000,24.110000 +04/03/2000,24.990000,25.860000,24.030000,24.030000 +04/04/2000,23.500000,31.160000,23.250000,27.120000 +04/05/2000,28.560000,30.010000,27.770000,28.410000 +04/06/2000,27.710000,27.830000,27.050000,27.150000 +04/07/2000,25.640000,25.640000,23.580000,24.390000 +04/10/2000,25.440000,26.040000,24.970000,25.990000 +04/11/2000,27.670000,28.080000,26.640000,27.250000 +04/12/2000,27.190000,28.980000,27.040000,28.980000 +04/13/2000,28.460000,29.400000,27.780000,29.400000 +04/14/2000,30.090000,33.790000,30.090000,33.490000 +04/17/2000,33.700000,34.310000,28.470000,28.950000 +04/18/2000,27.930000,28.130000,26.120000,26.120000 +04/19/2000,26.540000,27.230000,26.270000,27.020000 +04/20/2000,26.540000,27.210000,25.770000,25.850000 +04/24/2000,27.790000,28.500000,27.250000,27.370000 +04/25/2000,26.260000,26.450000,25.200000,25.240000 +04/26/2000,25.390000,27.240000,25.270000,26.970000 +04/27/2000,29.430000,29.500000,25.950000,26.190000 +04/28/2000,25.620000,26.800000,25.610000,26.200000 +05/01/2000,26.070000,26.440000,25.260000,25.880000 +05/02/2000,26.810000,28.500000,26.500000,28.500000 +05/03/2000,30.000000,32.890000,30.000000,31.630000 +05/04/2000,31.450000,32.060000,30.560000,30.770000 +05/05/2000,29.490000,29.540000,27.440000,27.530000 +05/08/2000,28.800000,29.050000,28.200000,28.200000 +05/09/2000,28.250000,29.680000,28.160000,28.930000 +05/10/2000,29.680000,30.600000,28.900000,29.870000 +05/11/2000,29.070000,29.120000,27.760000,27.760000 +05/12/2000,26.330000,26.330000,25.610000,26.050000 +05/15/2000,26.470000,26.700000,24.800000,24.860000 +05/16/2000,24.460000,25.150000,24.090000,24.340000 +05/17/2000,24.620000,25.110000,23.740000,23.980000 +05/18/2000,23.420000,24.030000,23.290000,23.960000 +05/19/2000,24.850000,26.150000,24.850000,25.440000 +05/22/2000,26.250000,27.900000,25.980000,26.000000 +05/23/2000,25.750000,26.120000,24.970000,25.870000 +05/24/2000,25.960000,26.730000,24.190000,24.320000 +05/25/2000,23.870000,25.030000,23.850000,24.580000 +05/26/2000,24.610000,24.910000,24.200000,24.470000 +05/30/2000,24.590000,24.780000,23.600000,23.620000 +05/31/2000,24.090000,24.090000,23.230000,23.650000 +06/01/2000,23.200000,23.210000,22.320000,22.360000 +06/02/2000,21.320000,21.680000,21.300000,21.480000 +06/05/2000,23.060000,23.290000,22.590000,22.710000 +06/06/2000,23.200000,23.240000,22.720000,23.050000 +06/07/2000,23.170000,23.400000,22.340000,22.480000 +06/08/2000,23.360000,23.530000,22.770000,22.770000 +06/09/2000,22.080000,22.490000,21.990000,22.140000 +06/12/2000,22.220000,22.750000,22.130000,22.320000 +06/13/2000,23.280000,23.390000,21.600000,21.670000 +06/14/2000,21.610000,21.740000,21.000000,21.480000 +06/15/2000,21.420000,21.630000,20.520000,20.680000 +06/16/2000,20.540000,20.900000,20.300000,20.500000 +06/19/2000,21.160000,21.360000,20.340000,20.630000 +06/20/2000,20.810000,21.230000,20.700000,20.880000 +06/21/2000,21.060000,21.250000,20.460000,20.610000 +06/22/2000,21.540000,22.290000,21.430000,22.000000 +06/23/2000,22.130000,22.820000,22.020000,22.340000 +06/26/2000,24.850000,25.010000,22.450000,22.450000 +06/27/2000,22.100000,22.170000,21.640000,21.800000 +06/28/2000,21.870000,21.870000,19.990000,20.290000 +06/29/2000,20.760000,21.160000,19.630000,19.700000 +06/30/2000,19.680000,19.780000,19.390000,19.540000 +07/03/2000,20.510000,20.510000,19.830000,19.830000 +07/05/2000,20.630000,21.650000,20.560000,21.160000 +07/06/2000,20.770000,21.510000,20.760000,20.940000 +07/07/2000,19.680000,20.250000,19.170000,19.220000 +07/10/2000,20.200000,20.630000,20.080000,20.330000 +07/11/2000,19.640000,20.450000,19.430000,20.110000 +07/12/2000,20.290000,20.300000,19.940000,20.030000 +07/13/2000,19.900000,20.170000,19.760000,20.030000 +07/14/2000,19.210000,19.590000,19.210000,19.320000 +07/17/2000,20.020000,20.130000,19.130000,19.450000 +07/18/2000,19.700000,19.920000,19.330000,19.750000 +07/19/2000,19.280000,19.830000,19.190000,19.650000 +07/20/2000,19.050000,19.190000,18.870000,18.940000 +07/21/2000,19.040000,19.390000,18.770000,18.940000 +07/24/2000,19.350000,19.990000,19.170000,19.920000 +07/25/2000,19.460000,19.740000,19.350000,19.390000 +07/26/2000,19.630000,19.990000,19.480000,19.670000 +07/27/2000,19.260000,20.190000,19.260000,19.600000 +07/28/2000,19.330000,20.980000,19.330000,20.840000 +07/31/2000,20.980000,21.170000,20.540000,20.740000 +08/01/2000,20.660000,20.840000,20.270000,20.550000 +08/02/2000,20.200000,20.200000,19.820000,20.000000 +08/03/2000,20.290000,20.380000,19.660000,19.990000 +08/04/2000,18.750000,18.970000,18.530000,18.620000 +08/07/2000,19.310000,19.360000,18.910000,19.030000 +08/08/2000,18.890000,19.070000,18.750000,18.790000 +08/09/2000,18.780000,19.280000,18.740000,19.180000 +08/10/2000,18.970000,19.190000,18.830000,19.190000 +08/11/2000,19.260000,19.360000,18.340000,18.550000 +08/14/2000,18.980000,18.990000,17.840000,17.880000 +08/15/2000,17.970000,18.270000,17.860000,17.980000 +08/16/2000,17.810000,18.120000,17.690000,18.020000 +08/17/2000,18.000000,18.060000,17.390000,17.480000 +08/18/2000,17.170000,17.510000,16.990000,17.050000 +08/21/2000,17.710000,17.710000,17.260000,17.350000 +08/22/2000,17.830000,17.830000,17.270000,17.470000 +08/23/2000,17.590000,17.740000,17.340000,17.380000 +08/24/2000,17.420000,17.590000,16.950000,17.040000 +08/25/2000,16.960000,17.060000,16.490000,16.530000 +08/28/2000,17.110000,17.110000,16.280000,16.540000 +08/29/2000,16.840000,17.100000,16.680000,16.890000 +08/30/2000,17.130000,17.960000,17.110000,17.690000 +08/31/2000,17.440000,17.450000,16.640000,16.840000 +09/01/2000,16.810000,17.770000,16.470000,17.530000 +09/05/2000,19.180000,20.060000,19.160000,19.820000 +09/06/2000,19.700000,20.920000,19.700000,20.790000 +09/07/2000,20.470000,20.510000,19.340000,19.420000 +09/08/2000,18.810000,19.070000,18.460000,18.460000 +09/11/2000,19.030000,19.100000,18.310000,18.400000 +09/12/2000,18.330000,19.040000,18.150000,18.590000 +09/13/2000,18.760000,18.760000,18.160000,18.320000 +09/14/2000,18.240000,18.510000,17.960000,18.260000 +09/15/2000,18.090000,18.720000,18.010000,18.520000 +09/18/2000,18.880000,20.350000,18.780000,20.250000 +09/19/2000,20.220000,20.250000,19.540000,19.540000 +09/20/2000,19.990000,21.180000,19.920000,19.930000 +09/21/2000,20.170000,20.710000,20.010000,20.180000 +09/22/2000,22.090000,22.660000,20.740000,20.740000 +09/25/2000,20.850000,21.660000,20.660000,21.410000 +09/26/2000,21.500000,22.090000,21.100000,21.880000 +09/27/2000,21.710000,22.100000,21.390000,21.670000 +09/28/2000,21.280000,21.310000,19.400000,19.470000 +09/29/2000,19.880000,20.570000,19.800000,20.570000 +10/02/2000,20.980000,21.560000,20.800000,21.230000 +10/03/2000,20.990000,21.850000,20.410000,21.850000 +10/04/2000,22.180000,22.660000,21.210000,21.540000 +10/05/2000,21.020000,21.300000,20.650000,21.030000 +10/06/2000,20.530000,23.350000,20.430000,22.710000 +10/09/2000,23.920000,24.670000,23.630000,24.020000 +10/10/2000,23.770000,25.020000,23.720000,24.860000 +10/11/2000,26.230000,28.370000,26.090000,26.570000 +10/12/2000,27.210000,30.550000,26.950000,30.510000 +10/13/2000,29.340000,29.420000,27.500000,27.600000 +10/16/2000,27.330000,27.650000,26.590000,26.790000 +10/17/2000,26.190000,28.290000,26.190000,27.840000 +10/18/2000,30.700000,30.800000,28.170000,28.720000 +10/19/2000,26.800000,27.020000,24.850000,25.090000 +10/20/2000,24.630000,24.630000,23.020000,24.240000 +10/23/2000,24.580000,25.130000,24.270000,24.690000 +10/24/2000,24.140000,24.810000,23.600000,24.280000 +10/25/2000,25.580000,26.780000,25.010000,26.650000 +10/26/2000,26.640000,30.080000,26.430000,28.620000 +10/27/2000,27.420000,28.050000,26.470000,26.470000 +10/30/2000,26.230000,26.480000,25.070000,25.460000 +10/31/2000,24.770000,24.870000,23.370000,23.630000 +11/01/2000,24.070000,24.860000,23.910000,24.280000 +11/02/2000,23.710000,24.240000,23.640000,23.920000 +11/03/2000,24.050000,24.060000,23.510000,23.670000 +11/06/2000,24.530000,24.750000,24.130000,24.520000 +11/07/2000,25.120000,25.410000,24.730000,24.910000 +11/08/2000,24.870000,25.740000,24.870000,25.660000 +11/09/2000,26.790000,28.460000,26.180000,27.200000 +11/10/2000,28.070000,28.810000,28.000000,28.530000 +11/13/2000,29.130000,30.570000,28.740000,29.060000 +11/14/2000,27.930000,27.930000,26.380000,26.810000 +11/15/2000,27.240000,27.250000,25.850000,26.150000 +11/16/2000,25.820000,25.820000,24.670000,25.050000 +11/17/2000,25.500000,25.880000,24.470000,24.810000 +11/20/2000,26.490000,27.600000,26.370000,27.430000 +11/21/2000,27.430000,27.640000,26.520000,26.620000 +11/22/2000,26.910000,27.830000,26.870000,27.710000 +11/24/2000,27.320000,27.320000,25.990000,26.000000 +11/27/2000,26.120000,26.980000,26.120000,26.930000 +11/28/2000,26.990000,27.840000,26.780000,27.640000 +11/29/2000,27.880000,28.220000,27.300000,27.490000 +11/30/2000,28.640000,31.110000,28.430000,29.650000 +12/01/2000,28.310000,28.390000,27.080000,27.480000 +12/04/2000,28.550000,28.740000,27.650000,27.780000 +12/05/2000,27.280000,27.310000,24.970000,24.990000 +12/06/2000,24.320000,25.210000,23.890000,25.070000 +12/07/2000,25.460000,25.550000,24.910000,25.340000 +12/08/2000,23.740000,23.840000,22.380000,22.410000 +12/11/2000,23.800000,23.990000,22.810000,23.510000 +12/12/2000,24.030000,25.360000,23.970000,24.880000 +12/13/2000,23.690000,24.320000,23.300000,23.630000 +12/14/2000,23.400000,25.410000,23.400000,24.860000 +12/15/2000,25.430000,26.870000,25.430000,26.550000 +12/18/2000,26.790000,27.890000,26.430000,27.700000 +12/19/2000,27.350000,27.540000,25.410000,27.170000 +12/20/2000,29.950000,32.020000,29.430000,31.740000 +12/21/2000,31.970000,32.320000,29.220000,29.660000 +12/22/2000,28.750000,28.830000,27.550000,27.550000 +12/26/2000,28.470000,29.130000,28.370000,28.730000 +12/27/2000,28.880000,28.950000,27.960000,28.140000 +12/28/2000,27.990000,28.060000,26.530000,26.570000 +12/29/2000,26.350000,26.960000,26.320000,26.850000 +01/02/2001,27.930000,30.400000,27.920000,29.990000 +01/03/2001,29.630000,29.960000,25.990000,26.600000 +01/04/2001,26.350000,27.190000,26.130000,26.970000 +01/05/2001,27.810000,29.040000,27.210000,28.670000 +01/08/2001,29.980000,30.800000,29.720000,29.840000 +01/09/2001,29.470000,29.530000,27.770000,27.990000 +01/10/2001,28.440000,28.470000,26.700000,26.800000 +01/11/2001,26.680000,26.710000,25.650000,25.790000 +01/12/2001,25.310000,25.480000,24.500000,24.560000 +01/16/2001,25.590000,25.680000,24.880000,25.280000 +01/17/2001,24.400000,25.220000,24.280000,24.930000 +01/18/2001,24.480000,24.530000,23.180000,23.370000 +01/19/2001,23.620000,24.080000,23.000000,23.240000 +01/22/2001,24.270000,24.310000,23.240000,23.250000 +01/23/2001,23.000000,23.150000,21.470000,21.570000 +01/24/2001,21.980000,22.410000,21.870000,22.030000 +01/25/2001,22.440000,22.860000,22.270000,22.640000 +01/26/2001,22.520000,23.050000,22.440000,22.570000 +01/29/2001,22.800000,22.960000,22.560000,22.610000 +01/30/2001,23.070000,23.350000,22.470000,22.570000 +01/31/2001,22.940000,23.020000,21.980000,22.020000 +02/01/2001,22.390000,22.680000,21.610000,21.660000 +02/02/2001,20.870000,21.950000,20.810000,21.950000 +02/05/2001,22.750000,23.010000,22.180000,22.190000 +02/06/2001,22.040000,22.120000,21.420000,21.980000 +02/07/2001,21.630000,22.360000,21.440000,21.670000 +02/08/2001,21.460000,21.610000,20.920000,21.460000 +02/09/2001,21.670000,22.240000,21.160000,22.030000 +02/12/2001,23.060000,23.130000,21.830000,21.920000 +02/13/2001,21.640000,21.660000,21.120000,21.370000 +02/14/2001,21.840000,22.520000,21.520000,21.520000 +02/15/2001,21.510000,21.510000,20.220000,20.270000 +02/16/2001,21.650000,22.730000,21.430000,22.120000 +02/20/2001,23.430000,24.760000,23.160000,24.690000 +02/21/2001,24.810000,25.810000,24.240000,25.750000 +02/22/2001,25.960000,28.410000,25.960000,26.760000 +02/23/2001,27.180000,30.620000,26.940000,27.210000 +02/26/2001,27.180000,27.480000,25.430000,25.430000 +02/27/2001,25.570000,26.590000,25.020000,26.490000 +02/28/2001,26.370000,28.820000,26.050000,28.350000 +03/01/2001,29.660000,30.260000,28.080000,28.080000 +03/02/2001,29.080000,29.340000,26.820000,27.430000 +03/05/2001,28.320000,28.430000,27.080000,27.120000 +03/06/2001,26.260000,26.280000,25.580000,25.890000 +03/07/2001,25.280000,25.530000,24.120000,24.120000 +03/08/2001,24.420000,24.900000,24.230000,24.290000 +03/09/2001,24.470000,25.760000,24.460000,25.620000 +03/12/2001,27.880000,30.540000,27.740000,30.320000 +03/13/2001,30.770000,30.840000,27.550000,27.550000 +03/14/2001,30.370000,30.710000,28.860000,29.610000 +03/15/2001,28.530000,28.980000,28.250000,28.560000 +03/16/2001,28.780000,29.910000,28.560000,29.910000 +03/19/2001,30.610000,31.330000,29.500000,29.780000 +03/20/2001,30.020000,31.270000,29.300000,30.960000 +03/21/2001,31.410000,32.180000,30.260000,31.930000 +03/22/2001,32.410000,35.450000,32.350000,32.840000 +03/23/2001,33.000000,33.000000,30.410000,30.450000 +03/26/2001,30.000000,30.240000,29.040000,29.040000 +03/27/2001,28.520000,28.630000,27.030000,27.040000 +03/28/2001,28.260000,28.980000,28.210000,28.580000 +03/29/2001,29.270000,29.840000,28.160000,29.170000 +03/30/2001,28.760000,29.320000,28.300000,28.640000 +04/02/2001,29.400000,31.610000,29.160000,31.210000 +04/03/2001,32.920000,35.200000,32.920000,34.720000 +04/04/2001,34.280000,34.740000,33.210000,34.070000 +04/05/2001,32.510000,32.510000,29.880000,29.940000 +04/06/2001,30.390000,32.040000,30.220000,31.690000 +04/09/2001,31.940000,32.550000,31.380000,31.910000 +04/10/2001,30.670000,30.690000,29.330000,29.440000 +04/11/2001,28.940000,29.130000,28.400000,28.460000 +04/12/2001,28.090000,28.370000,26.120000,26.120000 +04/16/2001,26.850000,27.180000,26.220000,26.330000 +04/17/2001,26.040000,26.220000,25.330000,25.610000 +04/18/2001,24.580000,24.650000,23.010000,24.130000 +04/19/2001,24.510000,24.620000,24.120000,24.160000 +04/20/2001,24.670000,25.450000,24.500000,25.380000 +04/23/2001,27.350000,28.600000,27.280000,28.160000 +04/24/2001,27.700000,28.610000,27.230000,28.490000 +04/25/2001,28.640000,28.680000,27.250000,27.400000 +04/26/2001,26.410000,26.410000,25.620000,25.960000 +04/27/2001,25.000000,25.000000,24.020000,24.020000 +04/30/2001,24.210000,25.740000,23.900000,25.480000 +05/01/2001,25.460000,25.570000,24.160000,24.200000 +05/02/2001,24.600000,25.040000,23.970000,24.230000 +05/03/2001,25.520000,26.320000,25.430000,25.780000 +05/04/2001,26.490000,26.490000,23.880000,23.910000 +05/07/2001,25.100000,25.460000,24.530000,24.860000 +05/08/2001,24.490000,25.350000,24.440000,24.440000 +05/09/2001,24.940000,25.060000,24.270000,24.350000 +05/10/2001,23.690000,24.670000,23.550000,24.000000 +05/11/2001,23.140000,23.860000,23.140000,23.540000 +05/14/2001,24.230000,24.500000,24.060000,24.260000 +05/15/2001,24.410000,24.500000,23.340000,23.710000 +05/16/2001,23.170000,23.220000,21.170000,21.890000 +05/17/2001,22.500000,22.740000,21.320000,21.470000 +05/18/2001,21.460000,21.710000,21.170000,21.230000 +05/21/2001,21.900000,21.960000,20.740000,20.760000 +05/22/2001,21.530000,21.560000,21.090000,21.350000 +05/23/2001,21.600000,22.150000,21.580000,22.080000 +05/24/2001,21.850000,21.890000,20.550000,20.570000 +05/25/2001,20.600000,21.130000,20.460000,20.600000 +05/29/2001,22.160000,22.370000,21.930000,22.140000 +05/30/2001,22.400000,23.160000,22.250000,22.760000 +05/31/2001,22.960000,23.160000,22.330000,22.640000 +06/01/2001,23.020000,23.120000,21.520000,21.590000 +06/04/2001,21.640000,22.070000,21.330000,21.380000 +06/05/2001,20.800000,20.920000,19.470000,19.580000 +06/06/2001,20.090000,20.640000,19.930000,20.390000 +06/07/2001,20.350000,20.390000,19.670000,19.670000 +06/08/2001,19.620000,20.440000,19.580000,19.920000 +06/11/2001,20.620000,21.090000,20.370000,20.700000 +06/12/2001,21.210000,21.680000,20.430000,20.700000 +06/13/2001,20.790000,21.600000,20.700000,21.450000 +06/14/2001,22.130000,23.120000,22.120000,23.120000 +06/15/2001,23.980000,24.420000,22.440000,22.810000 +06/18/2001,23.260000,23.540000,22.930000,23.170000 +06/19/2001,22.400000,22.820000,21.930000,22.340000 +06/20/2001,22.050000,22.290000,21.600000,21.710000 +06/21/2001,21.310000,21.360000,19.340000,19.380000 +06/22/2001,19.820000,20.200000,19.590000,20.020000 +06/25/2001,20.360000,20.890000,20.250000,20.670000 +06/26/2001,21.450000,21.650000,20.750000,21.200000 +06/27/2001,21.550000,21.840000,20.540000,20.880000 +06/28/2001,20.180000,20.180000,19.520000,20.010000 +06/29/2001,19.900000,19.900000,18.830000,19.060000 +07/02/2001,19.750000,19.750000,18.740000,18.760000 +07/03/2001,19.210000,19.370000,18.920000,18.920000 +07/05/2001,20.140000,20.390000,19.700000,20.090000 +07/06/2001,20.960000,21.900000,20.960000,21.630000 +07/09/2001,22.710000,22.960000,22.300000,22.480000 +07/10/2001,22.280000,23.260000,22.280000,23.250000 +07/11/2001,24.170000,24.910000,23.590000,24.010000 +07/12/2001,23.290000,23.290000,22.090000,22.090000 +07/13/2001,22.030000,22.120000,21.020000,21.140000 +07/16/2001,21.690000,22.910000,21.580000,22.910000 +07/17/2001,23.540000,23.600000,22.460000,22.610000 +07/18/2001,23.190000,23.840000,23.070000,23.600000 +07/19/2001,22.580000,23.070000,21.840000,22.510000 +07/20/2001,22.670000,23.010000,22.190000,22.340000 +07/23/2001,22.640000,23.870000,22.510000,23.740000 +07/24/2001,24.200000,25.610000,24.160000,25.240000 +07/25/2001,24.920000,25.230000,23.920000,24.000000 +07/26/2001,24.020000,24.230000,22.980000,23.010000 +07/27/2001,23.020000,23.130000,21.930000,22.000000 +07/30/2001,22.480000,23.030000,22.480000,22.690000 +07/31/2001,22.310000,22.450000,20.790000,21.620000 +08/01/2001,20.970000,20.990000,20.130000,20.560000 +08/02/2001,20.330000,20.480000,19.690000,20.090000 +08/03/2001,20.230000,21.030000,19.830000,19.890000 +08/06/2001,21.070000,22.260000,20.880000,21.890000 +08/07/2001,21.430000,21.510000,20.730000,21.010000 +08/08/2001,21.520000,22.570000,20.720000,22.320000 +08/09/2001,22.020000,22.430000,21.640000,21.750000 +08/10/2001,20.560000,21.530000,20.370000,20.550000 +08/13/2001,20.580000,20.690000,20.240000,20.420000 +08/14/2001,19.950000,20.540000,19.930000,20.480000 +08/15/2001,20.140000,20.910000,19.840000,20.910000 +08/16/2001,21.260000,22.150000,21.060000,21.540000 +08/17/2001,21.940000,24.240000,21.910000,23.840000 +08/20/2001,24.830000,24.850000,22.870000,22.870000 +08/21/2001,22.550000,24.510000,21.630000,24.400000 +08/22/2001,22.710000,23.280000,22.340000,22.440000 +08/23/2001,22.050000,22.360000,21.850000,22.230000 +08/24/2001,21.300000,21.310000,19.700000,19.710000 +08/27/2001,20.500000,20.850000,20.130000,20.560000 +08/28/2001,20.900000,22.120000,20.900000,22.000000 +08/29/2001,21.850000,23.260000,21.840000,23.030000 +08/30/2001,23.160000,25.840000,23.160000,25.410000 +08/31/2001,25.310000,25.470000,24.410000,24.920000 +09/04/2001,26.110000,26.170000,24.190000,25.850000 +09/05/2001,26.220000,27.370000,26.220000,26.350000 +09/06/2001,27.230000,28.730000,27.230000,28.610000 +09/07/2001,29.890000,31.300000,28.920000,30.990000 +09/10/2001,33.110000,33.340000,31.840000,31.840000 +09/17/2001,43.200000,44.330000,39.770000,41.760000 +09/18/2001,41.070000,42.170000,38.870000,38.870000 +09/19/2001,37.880000,44.260000,37.500000,40.560000 +09/20/2001,41.400000,43.760000,41.170000,43.740000 +09/21/2001,48.930000,49.350000,42.660000,42.660000 +09/24/2001,41.320000,41.490000,37.200000,37.750000 +09/25/2001,37.060000,37.260000,35.810000,35.810000 +09/26/2001,35.000000,35.740000,34.490000,35.260000 +09/27/2001,35.450000,36.110000,33.990000,34.000000 +09/28/2001,33.080000,33.080000,31.740000,31.930000 +10/01/2001,33.420000,34.080000,32.290000,32.320000 +10/02/2001,32.410000,32.640000,31.160000,31.180000 +10/03/2001,32.400000,32.470000,31.150000,31.340000 +10/04/2001,31.370000,32.160000,30.310000,31.970000 +10/05/2001,32.680000,34.390000,32.640000,33.390000 +10/08/2001,35.660000,36.180000,34.840000,35.120000 +10/09/2001,35.250000,35.530000,34.480000,34.830000 +10/10/2001,34.170000,34.170000,31.340000,31.600000 +10/11/2001,30.930000,32.160000,30.830000,31.500000 +10/12/2001,32.480000,36.560000,32.270000,35.270000 +10/15/2001,36.750000,36.950000,35.240000,35.310000 +10/16/2001,34.810000,35.320000,32.850000,32.880000 +10/17/2001,32.440000,35.090000,32.440000,35.080000 +10/18/2001,35.420000,35.610000,34.850000,34.950000 +10/19/2001,34.760000,35.460000,33.890000,34.110000 +10/22/2001,34.470000,34.660000,32.170000,32.250000 +10/23/2001,32.240000,32.460000,31.300000,32.000000 +10/24/2001,31.740000,31.840000,30.800000,30.950000 +10/25/2001,32.400000,32.920000,29.450000,29.460000 +10/26/2001,30.020000,30.020000,28.110000,28.420000 +10/29/2001,30.430000,31.670000,30.310000,31.640000 +10/30/2001,33.240000,34.770000,33.000000,33.460000 +10/31/2001,33.120000,33.590000,32.270000,33.560000 +11/01/2001,33.970000,34.570000,32.000000,32.310000 +11/02/2001,32.450000,32.670000,30.460000,30.710000 +11/05/2001,31.140000,31.210000,30.230000,30.500000 +11/06/2001,30.640000,31.190000,28.720000,28.800000 +11/07/2001,29.410000,29.540000,28.110000,29.130000 +11/08/2001,28.510000,28.880000,27.430000,28.620000 +11/09/2001,28.990000,29.050000,27.340000,27.440000 +11/12/2001,31.940000,31.940000,29.040000,29.350000 +11/13/2001,27.950000,28.020000,26.340000,26.470000 +11/14/2001,26.270000,27.040000,26.260000,26.560000 +11/15/2001,26.330000,26.460000,25.530000,25.560000 +11/16/2001,25.760000,25.950000,25.030000,25.070000 +11/19/2001,25.430000,25.430000,24.460000,24.460000 +11/20/2001,24.350000,24.480000,23.500000,24.120000 +11/21/2001,23.860000,24.420000,23.840000,24.190000 +11/23/2001,23.930000,23.940000,23.000000,23.250000 +11/26/2001,24.220000,24.740000,23.750000,23.790000 +11/27/2001,23.600000,24.560000,22.960000,24.000000 +11/28/2001,24.570000,25.910000,24.290000,25.900000 +11/29/2001,26.160000,26.460000,25.140000,25.180000 +11/30/2001,25.050000,25.300000,23.600000,23.840000 +12/03/2001,25.920000,26.380000,25.520000,25.770000 +12/04/2001,25.410000,25.750000,24.080000,24.080000 +12/05/2001,23.150000,23.150000,22.580000,23.020000 +12/06/2001,23.500000,24.140000,23.350000,23.710000 +12/07/2001,23.760000,23.850000,23.180000,23.490000 +12/10/2001,24.970000,25.870000,24.580000,25.620000 +12/11/2001,25.250000,25.580000,24.220000,25.300000 +12/12/2001,25.000000,25.910000,24.660000,24.870000 +12/13/2001,25.480000,25.930000,25.030000,25.910000 +12/14/2001,25.280000,25.530000,24.230000,24.630000 +12/17/2001,25.020000,25.060000,23.960000,24.260000 +12/18/2001,23.430000,23.710000,23.190000,23.290000 +12/19/2001,23.340000,23.340000,22.260000,22.580000 +12/20/2001,22.560000,23.690000,22.480000,23.670000 +12/21/2001,23.130000,23.280000,22.380000,22.500000 +12/24/2001,23.060000,23.110000,22.620000,22.620000 +12/26/2001,22.360000,22.420000,22.010000,22.290000 +12/27/2001,22.010000,22.010000,21.590000,21.590000 +12/28/2001,21.400000,21.590000,21.120000,21.400000 +12/31/2001,22.500000,23.800000,22.460000,23.800000 +01/02/2002,23.780000,24.200000,22.710000,22.710000 +01/03/2002,22.220000,22.430000,21.330000,21.340000 +01/04/2002,20.970000,21.530000,20.400000,20.450000 +01/07/2002,21.410000,22.150000,21.350000,21.940000 +01/08/2002,21.630000,22.290000,21.280000,21.830000 +01/09/2002,21.300000,22.420000,20.660000,22.130000 +01/10/2002,22.280000,22.780000,21.780000,22.360000 +01/11/2002,22.290000,22.840000,21.920000,22.600000 +01/14/2002,23.940000,24.040000,23.240000,23.580000 +01/15/2002,23.390000,23.740000,22.580000,22.700000 +01/16/2002,23.420000,23.600000,22.870000,23.450000 +01/17/2002,23.340000,23.550000,22.130000,22.250000 +01/18/2002,22.970000,23.070000,22.220000,22.520000 +01/22/2002,22.930000,23.830000,22.760000,23.610000 +01/23/2002,23.350000,23.540000,21.680000,21.880000 +01/24/2002,21.190000,21.340000,20.740000,21.150000 +01/25/2002,21.360000,21.570000,20.740000,21.010000 +01/28/2002,21.240000,21.880000,21.110000,21.140000 +01/29/2002,20.920000,24.990000,20.690000,24.350000 +01/30/2002,24.580000,26.880000,23.220000,23.220000 +01/31/2002,22.450000,22.700000,21.090000,21.090000 +02/01/2002,21.120000,21.430000,20.950000,21.120000 +02/04/2002,22.770000,25.150000,22.690000,24.870000 +02/05/2002,25.260000,26.190000,24.510000,25.450000 +02/06/2002,25.530000,27.320000,25.340000,26.090000 +02/07/2002,25.990000,26.540000,24.240000,25.110000 +02/08/2002,24.560000,24.670000,23.070000,23.260000 +02/11/2002,24.040000,24.040000,21.780000,21.780000 +02/12/2002,22.300000,22.440000,21.440000,21.620000 +02/13/2002,20.920000,21.170000,20.550000,20.850000 +02/14/2002,21.920000,21.920000,21.320000,21.770000 +02/15/2002,21.980000,22.790000,21.540000,22.370000 +02/19/2002,23.920000,24.590000,23.830000,24.430000 +02/20/2002,23.780000,24.940000,22.620000,22.660000 +02/21/2002,22.590000,23.960000,21.900000,23.800000 +02/22/2002,24.040000,24.440000,22.750000,22.860000 +02/25/2002,23.090000,23.110000,21.420000,21.840000 +02/26/2002,21.360000,22.250000,21.350000,21.680000 +02/27/2002,21.180000,22.420000,20.820000,21.490000 +02/28/2002,21.120000,21.590000,20.710000,21.590000 +03/01/2002,21.060000,21.060000,19.880000,19.960000 +03/04/2002,20.690000,20.950000,20.350000,20.500000 +03/05/2002,20.760000,21.120000,20.240000,20.300000 +03/06/2002,20.270000,20.490000,19.550000,19.940000 +03/07/2002,20.720000,20.810000,19.970000,20.040000 +03/08/2002,19.760000,20.220000,19.270000,19.270000 +03/11/2002,20.660000,20.770000,19.560000,19.840000 +03/12/2002,20.520000,20.570000,19.510000,19.590000 +03/13/2002,19.830000,19.890000,19.400000,19.460000 +03/14/2002,19.450000,19.560000,18.980000,19.200000 +03/15/2002,18.770000,18.840000,18.380000,18.420000 +03/18/2002,18.790000,19.400000,18.740000,18.930000 +03/19/2002,18.500000,18.660000,18.090000,18.160000 +03/20/2002,18.700000,18.750000,18.330000,18.460000 +03/21/2002,18.610000,18.840000,18.140000,18.150000 +03/22/2002,18.340000,18.380000,17.620000,17.770000 +03/25/2002,18.180000,18.720000,18.040000,18.480000 +03/26/2002,18.440000,18.440000,17.810000,18.130000 +03/27/2002,18.100000,18.160000,17.550000,17.700000 +03/28/2002,17.230000,17.510000,17.020000,17.400000 +04/01/2002,18.990000,19.500000,18.610000,18.730000 +04/02/2002,19.120000,19.410000,19.120000,19.160000 +04/03/2002,19.410000,20.470000,19.400000,20.200000 +04/04/2002,19.900000,20.090000,19.460000,19.780000 +04/05/2002,19.330000,19.400000,18.780000,19.130000 +04/08/2002,20.350000,20.460000,19.570000,19.610000 +04/09/2002,19.310000,19.730000,19.300000,19.470000 +04/10/2002,19.220000,19.280000,18.170000,18.190000 +04/11/2002,18.720000,20.350000,18.560000,20.300000 +04/12/2002,19.960000,20.190000,19.310000,19.420000 +04/15/2002,20.130000,20.200000,19.470000,19.820000 +04/16/2002,18.580000,19.030000,18.060000,18.110000 +04/17/2002,18.340000,19.030000,17.900000,18.430000 +04/18/2002,17.820000,19.800000,17.820000,19.290000 +04/19/2002,18.410000,18.960000,17.730000,18.300000 +04/22/2002,19.410000,20.090000,19.340000,19.770000 +04/23/2002,19.230000,20.330000,19.200000,20.280000 +04/24/2002,20.010000,20.860000,19.710000,20.770000 +04/25/2002,21.560000,21.700000,20.860000,20.950000 +04/26/2002,20.720000,22.140000,20.670000,22.140000 +04/29/2002,23.230000,24.500000,22.910000,24.050000 +04/30/2002,24.030000,24.030000,21.640000,21.910000 +05/01/2002,21.440000,22.030000,19.910000,20.060000 +05/02/2002,20.110000,20.510000,19.910000,20.070000 +05/03/2002,20.250000,20.960000,20.050000,20.190000 +05/06/2002,20.990000,22.570000,20.830000,22.560000 +05/07/2002,22.380000,22.590000,21.640000,21.940000 +05/08/2002,21.300000,21.310000,20.210000,20.390000 +05/09/2002,20.840000,21.620000,20.830000,21.560000 +05/10/2002,21.830000,22.710000,21.770000,22.410000 +05/13/2002,22.250000,22.250000,20.670000,20.720000 +05/14/2002,19.870000,20.080000,19.200000,19.350000 +05/15/2002,19.500000,19.650000,18.500000,19.190000 +05/16/2002,19.310000,19.310000,18.480000,18.500000 +05/17/2002,18.010000,18.570000,17.700000,17.700000 +05/20/2002,18.760000,19.420000,18.760000,19.240000 +05/21/2002,19.040000,20.110000,18.990000,20.050000 +05/22/2002,20.250000,20.710000,19.540000,19.580000 +05/23/2002,19.050000,19.160000,18.190000,18.230000 +05/24/2002,18.220000,19.030000,18.220000,18.900000 +05/28/2002,20.210000,20.770000,20.070000,20.310000 +05/29/2002,20.410000,20.790000,19.730000,20.390000 +05/30/2002,20.880000,21.580000,20.420000,20.610000 +05/31/2002,20.260000,20.260000,19.430000,19.980000 +06/03/2002,20.980000,23.370000,20.620000,23.370000 +06/04/2002,23.600000,24.820000,23.310000,23.890000 +06/05/2002,23.520000,23.770000,22.460000,22.610000 +06/06/2002,22.970000,24.640000,22.940000,24.160000 +06/07/2002,25.960000,26.150000,22.980000,23.510000 +06/10/2002,24.180000,24.280000,23.050000,23.720000 +06/11/2002,23.110000,24.500000,22.810000,24.450000 +06/12/2002,24.180000,25.500000,23.850000,24.150000 +06/13/2002,24.650000,25.560000,23.970000,25.020000 +06/14/2002,28.430000,28.780000,25.800000,25.960000 +06/17/2002,25.920000,25.920000,24.600000,24.640000 +06/18/2002,24.750000,24.810000,24.060000,24.240000 +06/19/2002,25.050000,26.080000,24.650000,26.060000 +06/20/2002,26.100000,27.560000,26.000000,27.480000 +06/21/2002,28.380000,28.500000,26.840000,27.230000 +06/24/2002,27.930000,29.020000,26.460000,26.980000 +06/25/2002,26.410000,27.920000,25.490000,27.840000 +06/26/2002,29.990000,30.980000,28.410000,28.420000 +06/27/2002,27.670000,29.240000,26.290000,26.290000 +06/28/2002,25.740000,25.880000,24.880000,25.400000 +07/01/2002,25.710000,27.160000,25.630000,27.110000 +07/02/2002,27.560000,29.780000,27.560000,28.960000 +07/03/2002,28.880000,31.030000,28.760000,29.420000 +07/05/2002,27.300000,27.300000,25.680000,27.110000 +07/08/2002,28.540000,28.780000,27.880000,28.250000 +07/09/2002,27.960000,30.340000,27.790000,30.220000 +07/10/2002,31.400000,34.170000,30.770000,34.100000 +07/11/2002,34.420000,36.350000,33.850000,33.850000 +07/12/2002,34.300000,34.300000,32.410000,32.940000 +07/15/2002,35.070000,38.380000,34.860000,35.030000 +07/16/2002,35.970000,36.820000,35.200000,36.650000 +07/17/2002,34.250000,36.730000,33.620000,35.450000 +07/18/2002,35.200000,35.420000,33.450000,35.120000 +07/19/2002,36.420000,38.170000,35.980000,38.170000 +07/22/2002,39.130000,42.580000,38.570000,41.870000 +07/23/2002,42.270000,46.130000,42.050000,44.920000 +07/24/2002,48.170000,48.460000,39.830000,39.860000 +07/25/2002,40.650000,42.050000,38.890000,39.270000 +07/26/2002,38.610000,38.800000,35.510000,35.510000 +07/29/2002,33.890000,33.890000,31.190000,31.330000 +07/30/2002,32.040000,32.770000,30.600000,31.920000 +07/31/2002,32.780000,33.680000,32.030000,32.030000 +08/01/2002,32.770000,36.950000,32.770000,36.950000 +08/02/2002,37.530000,43.930000,36.860000,41.290000 +08/05/2002,41.950000,45.210000,41.770000,45.080000 +08/06/2002,43.060000,43.060000,40.280000,42.030000 +08/07/2002,40.720000,41.370000,38.650000,38.730000 +08/08/2002,38.530000,39.060000,36.190000,36.330000 +08/09/2002,37.410000,37.480000,34.690000,35.330000 +08/12/2002,37.230000,37.520000,36.830000,37.050000 +08/13/2002,37.240000,37.310000,34.200000,35.820000 +08/14/2002,35.560000,35.990000,32.350000,32.360000 +08/15/2002,31.900000,32.100000,29.430000,29.430000 +08/16/2002,29.880000,29.950000,28.010000,28.810000 +08/19/2002,29.600000,29.730000,28.290000,28.610000 +08/20/2002,29.520000,30.220000,29.180000,29.590000 +08/21/2002,29.180000,30.060000,28.070000,28.230000 +08/22/2002,28.640000,28.640000,27.610000,27.750000 +08/23/2002,28.080000,29.540000,28.080000,29.320000 +08/26/2002,30.730000,31.930000,29.630000,29.890000 +08/27/2002,29.890000,30.800000,29.530000,30.110000 +08/28/2002,31.240000,33.600000,31.190000,33.320000 +08/29/2002,35.420000,35.420000,33.210000,33.670000 +08/30/2002,33.640000,33.640000,31.930000,32.640000 +09/03/2002,37.120000,39.970000,37.120000,39.970000 +09/04/2002,39.210000,39.710000,37.050000,37.440000 +09/05/2002,39.580000,40.410000,38.210000,38.860000 +09/06/2002,36.880000,37.350000,35.990000,36.330000 +09/09/2002,39.100000,39.630000,36.040000,36.450000 +09/10/2002,35.980000,35.980000,35.080000,35.080000 +09/11/2002,35.980000,34.810000,33.720000,34.810000 +09/12/2002,36.240000,37.740000,36.100000,37.500000 +09/13/2002,38.220000,38.520000,35.820000,35.820000 +09/16/2002,37.340000,38.550000,36.640000,36.740000 +09/17/2002,35.870000,38.060000,35.790000,38.010000 +09/18/2002,38.680000,39.710000,36.960000,37.520000 +09/19/2002,39.920000,40.700000,38.920000,40.650000 +09/20/2002,39.930000,40.230000,38.720000,38.980000 +09/23/2002,40.780000,41.180000,39.260000,39.680000 +09/24/2002,40.950000,41.340000,39.570000,40.520000 +09/25/2002,39.650000,39.920000,36.790000,37.330000 +09/26/2002,36.090000,36.150000,34.600000,34.600000 +09/27/2002,35.070000,36.970000,33.960000,36.970000 +09/30/2002,41.070000,41.860000,38.890000,39.690000 +10/01/2002,37.250000,37.610000,33.770000,34.120000 +10/02/2002,35.160000,36.970000,34.420000,36.830000 +10/03/2002,37.330000,37.750000,36.110000,37.310000 +10/04/2002,39.180000,40.290000,38.670000,39.460000 +10/07/2002,41.650000,42.950000,41.040000,42.640000 +10/08/2002,42.090000,43.440000,39.960000,41.020000 +10/09/2002,42.250000,42.580000,41.210000,42.130000 +10/10/2002,39.130000,39.390000,37.540000,37.550000 +10/11/2002,36.360000,36.530000,35.200000,35.700000 +10/14/2002,36.920000,37.180000,36.020000,36.040000 +10/15/2002,34.360000,34.710000,33.790000,34.020000 +10/16/2002,34.910000,36.270000,34.910000,36.000000 +10/17/2002,34.770000,35.130000,33.930000,34.100000 +10/18/2002,34.600000,34.730000,33.340000,33.530000 +10/21/2002,35.340000,35.550000,33.000000,33.110000 +10/22/2002,34.390000,34.760000,33.610000,34.090000 +10/23/2002,34.060000,35.610000,33.200000,33.200000 +10/24/2002,32.990000,34.430000,32.530000,34.030000 +10/25/2002,33.370000,33.370000,29.880000,30.000000 +10/28/2002,30.780000,31.670000,30.310000,31.070000 +10/29/2002,31.530000,33.530000,31.530000,32.270000 +10/30/2002,32.500000,32.500000,30.790000,31.230000 +10/31/2002,31.570000,31.570000,29.690000,31.140000 +11/01/2002,31.570000,31.700000,28.620000,29.300000 +11/04/2002,29.810000,30.900000,28.830000,30.820000 +11/05/2002,31.010000,31.720000,30.430000,31.230000 +11/06/2002,31.890000,32.600000,30.710000,30.730000 +11/07/2002,31.420000,31.850000,30.760000,31.420000 +11/08/2002,30.390000,31.030000,29.100000,29.410000 +11/11/2002,30.630000,31.640000,30.410000,31.300000 +11/12/2002,31.090000,31.200000,29.750000,30.580000 +11/13/2002,31.210000,31.900000,30.500000,31.240000 +11/14/2002,29.690000,29.760000,28.650000,28.670000 +11/15/2002,27.920000,28.230000,26.440000,26.650000 +11/18/2002,27.090000,27.660000,26.730000,27.660000 +11/19/2002,28.120000,28.150000,26.630000,27.410000 +11/20/2002,26.930000,26.930000,25.060000,25.320000 +11/21/2002,24.600000,24.750000,23.410000,23.810000 +11/22/2002,23.990000,24.220000,23.050000,23.160000 +11/25/2002,23.920000,25.420000,23.620000,24.070000 +11/26/2002,24.560000,26.150000,24.560000,25.970000 +11/27/2002,25.150000,27.420000,23.970000,27.250000 +11/29/2002,27.100000,27.700000,26.840000,27.500000 +12/02/2002,28.350000,28.610000,27.280000,27.460000 +12/03/2002,27.790000,28.410000,27.470000,28.330000 +12/04/2002,29.100000,29.510000,28.270000,28.920000 +12/05/2002,29.500000,30.200000,29.260000,30.100000 +12/06/2002,30.640000,30.640000,28.770000,28.880000 +12/09/2002,30.070000,31.200000,29.990000,30.780000 +12/10/2002,30.440000,30.490000,28.650000,28.760000 +12/11/2002,28.920000,29.000000,27.550000,27.760000 +12/12/2002,27.950000,28.160000,27.230000,27.290000 +12/13/2002,28.010000,28.670000,27.560000,28.180000 +12/16/2002,28.250000,28.290000,26.220000,26.240000 +12/17/2002,26.250000,26.820000,25.900000,26.660000 +12/18/2002,27.290000,28.550000,27.290000,28.290000 +12/19/2002,28.260000,30.840000,27.880000,30.210000 +12/20/2002,28.590000,28.750000,26.590000,26.710000 +12/23/2002,27.610000,27.690000,25.870000,26.200000 +12/24/2002,26.390000,26.820000,26.380000,26.490000 +12/26/2002,26.320000,27.570000,26.160000,27.370000 +12/27/2002,27.720000,29.970000,27.520000,29.550000 +12/30/2002,30.690000,30.830000,29.470000,29.620000 +12/31/2002,29.080000,29.620000,28.600000,28.620000 +01/02/2003,28.740000,28.740000,25.320000,25.390000 +01/03/2003,25.550000,25.550000,24.680000,24.680000 +01/06/2003,25.320000,25.420000,24.290000,24.910000 +01/07/2003,25.130000,25.690000,24.910000,25.130000 +01/08/2003,25.620000,25.760000,25.070000,25.530000 +01/09/2003,24.900000,24.900000,24.020000,24.250000 +01/10/2003,24.620000,24.690000,24.150000,24.320000 +01/13/2003,24.950000,25.480000,24.680000,24.900000 +01/14/2003,25.010000,25.090000,24.380000,24.570000 +01/15/2003,24.850000,26.010000,24.850000,25.510000 +01/16/2003,24.920000,25.800000,24.690000,25.010000 +01/17/2003,25.390000,26.000000,25.200000,25.700000 +01/21/2003,26.750000,27.700000,26.730000,27.590000 +01/22/2003,28.160000,29.080000,27.770000,29.010000 +01/23/2003,28.720000,29.190000,27.350000,27.530000 +01/24/2003,28.470000,32.410000,28.450000,31.510000 +01/27/2003,33.310000,35.330000,32.970000,34.690000 +01/28/2003,34.420000,34.470000,31.820000,31.930000 +01/29/2003,32.450000,33.240000,31.050000,31.260000 +01/30/2003,31.380000,31.500000,30.660000,31.320000 +01/31/2003,31.150000,31.660000,30.610000,31.170000 +02/03/2003,32.450000,32.450000,30.870000,31.020000 +02/04/2003,32.740000,33.370000,32.700000,32.760000 +02/05/2003,32.760000,33.220000,31.980000,33.040000 +02/06/2003,34.030000,34.240000,33.120000,33.350000 +02/07/2003,33.300000,34.310000,33.190000,34.010000 +02/10/2003,35.210000,35.660000,33.990000,33.990000 +02/11/2003,33.180000,33.970000,32.720000,33.680000 +02/12/2003,33.880000,34.330000,33.770000,34.330000 +02/13/2003,34.990000,35.200000,33.330000,33.700000 +02/14/2003,33.740000,33.940000,32.420000,32.620000 +02/18/2003,32.120000,32.120000,31.110000,31.110000 +02/19/2003,31.170000,31.720000,31.130000,31.310000 +02/20/2003,30.970000,31.270000,30.860000,31.160000 +02/21/2003,30.980000,31.650000,30.160000,30.250000 +02/24/2003,31.460000,32.310000,31.460000,31.980000 +02/25/2003,32.710000,33.060000,31.600000,31.740000 +02/26/2003,32.120000,32.210000,31.750000,31.940000 +02/27/2003,31.760000,31.850000,30.470000,30.530000 +02/28/2003,29.840000,29.840000,29.060000,29.630000 +03/03/2003,29.780000,30.520000,29.710000,30.430000 +03/04/2003,31.050000,31.980000,30.980000,31.830000 +03/05/2003,31.250000,31.330000,30.380000,30.380000 +03/06/2003,31.040000,31.530000,30.690000,31.370000 +03/07/2003,32.640000,32.810000,30.840000,31.080000 +03/10/2003,33.370000,33.850000,33.080000,33.310000 +03/11/2003,33.320000,33.750000,32.970000,33.610000 +03/12/2003,33.690000,34.400000,33.320000,33.510000 +03/13/2003,32.980000,32.980000,31.670000,31.760000 +03/14/2003,30.850000,31.250000,30.450000,30.980000 +03/17/2003,31.850000,32.620000,31.670000,31.750000 +03/18/2003,31.510000,31.510000,30.240000,30.430000 +03/19/2003,30.820000,31.540000,30.400000,31.540000 +03/20/2003,31.810000,32.000000,30.410000,30.440000 +03/21/2003,29.410000,29.700000,28.440000,28.670000 +03/24/2003,30.530000,31.000000,30.330000,30.390000 +03/25/2003,30.270000,30.500000,28.750000,28.750000 +03/26/2003,28.620000,28.790000,27.890000,28.230000 +03/27/2003,28.940000,29.100000,27.620000,27.960000 +03/28/2003,28.210000,28.250000,27.580000,27.750000 +03/31/2003,29.950000,30.210000,28.570000,29.150000 +04/01/2003,29.580000,29.580000,28.180000,28.360000 +04/02/2003,27.500000,28.120000,27.450000,28.020000 +04/03/2003,28.320000,28.440000,27.540000,28.210000 +04/04/2003,28.350000,30.040000,28.350000,29.130000 +04/07/2003,28.860000,28.860000,27.680000,28.450000 +04/08/2003,27.870000,27.940000,26.860000,27.130000 +04/09/2003,27.080000,27.230000,26.130000,27.110000 +04/10/2003,26.920000,27.130000,25.510000,25.600000 +04/11/2003,24.420000,25.200000,24.310000,24.440000 +04/14/2003,24.830000,25.000000,23.320000,23.410000 +04/15/2003,23.240000,23.420000,22.440000,22.560000 +04/16/2003,22.500000,22.850000,21.950000,22.520000 +04/17/2003,22.110000,22.380000,21.330000,21.500000 +04/21/2003,21.810000,22.350000,21.560000,21.950000 +04/22/2003,21.830000,21.860000,20.260000,20.700000 +04/23/2003,20.860000,21.070000,20.680000,20.800000 +04/24/2003,21.030000,21.270000,20.310000,20.330000 +04/25/2003,20.510000,20.890000,20.360000,20.800000 +04/28/2003,20.890000,20.960000,20.650000,20.840000 +04/29/2003,20.660000,21.330000,20.460000,20.760000 +04/30/2003,21.040000,21.560000,20.870000,21.210000 +05/01/2003,21.350000,22.330000,21.320000,21.590000 +05/02/2003,21.090000,21.420000,20.630000,20.630000 +05/05/2003,21.320000,21.710000,21.060000,21.130000 +05/06/2003,21.000000,21.350000,20.400000,20.800000 +05/07/2003,21.450000,21.580000,20.940000,21.000000 +05/08/2003,21.660000,21.660000,20.700000,21.240000 +05/09/2003,20.850000,20.930000,19.660000,19.690000 +05/12/2003,19.960000,20.020000,19.390000,19.520000 +05/13/2003,19.510000,20.050000,19.350000,19.910000 +05/14/2003,20.020000,20.290000,19.820000,20.000000 +05/15/2003,19.550000,19.790000,19.220000,19.240000 +05/16/2003,19.260000,19.420000,18.240000,18.400000 +05/19/2003,19.490000,20.690000,19.450000,20.510000 +05/20/2003,20.490000,21.680000,20.300000,21.290000 +05/21/2003,21.690000,21.720000,21.210000,21.210000 +05/22/2003,20.990000,21.000000,19.560000,19.780000 +05/23/2003,20.070000,20.080000,19.140000,19.170000 +05/27/2003,20.680000,20.750000,19.660000,19.990000 +05/28/2003,19.790000,20.350000,19.790000,20.030000 +05/29/2003,19.720000,20.740000,19.660000,20.430000 +05/30/2003,19.830000,19.830000,19.440000,19.470000 +06/02/2003,20.350000,20.980000,20.060000,20.850000 +06/03/2003,20.850000,21.220000,20.700000,20.840000 +06/04/2003,20.950000,20.950000,20.500000,20.620000 +06/05/2003,21.210000,21.390000,20.810000,20.830000 +06/06/2003,20.410000,21.440000,20.160000,21.250000 +06/09/2003,22.200000,22.810000,22.120000,22.150000 +06/10/2003,21.870000,21.870000,20.640000,20.640000 +06/11/2003,20.610000,20.720000,20.100000,20.210000 +06/12/2003,20.740000,21.040000,20.390000,20.410000 +06/13/2003,20.570000,20.900000,20.500000,20.660000 +06/16/2003,21.280000,21.280000,20.220000,20.220000 +06/17/2003,20.300000,20.550000,19.780000,20.010000 +06/18/2003,20.250000,20.330000,19.740000,19.760000 +06/19/2003,19.830000,19.990000,19.510000,19.800000 +06/20/2003,19.540000,19.590000,18.890000,19.140000 +06/23/2003,20.160000,20.990000,20.160000,20.580000 +06/24/2003,20.290000,20.890000,20.240000,20.750000 +06/25/2003,21.140000,21.250000,20.480000,20.810000 +06/26/2003,20.190000,20.470000,19.400000,19.400000 +06/27/2003,19.400000,19.640000,18.870000,19.160000 +06/30/2003,19.310000,19.630000,19.210000,19.520000 +07/01/2003,20.490000,20.800000,19.290000,19.460000 +07/02/2003,18.910000,19.400000,18.840000,19.030000 +07/03/2003,19.330000,19.730000,18.860000,19.390000 +07/07/2003,19.990000,20.320000,19.840000,20.060000 +07/08/2003,19.960000,20.050000,19.370000,19.480000 +07/09/2003,19.500000,19.630000,18.930000,18.930000 +07/10/2003,19.260000,19.500000,19.050000,19.190000 +07/11/2003,18.750000,18.890000,18.260000,18.470000 +07/14/2003,18.880000,19.670000,18.700000,19.590000 +07/15/2003,19.700000,19.930000,19.380000,19.550000 +07/16/2003,19.710000,20.150000,19.660000,19.760000 +07/17/2003,19.800000,20.450000,19.800000,20.220000 +07/18/2003,20.140000,20.200000,19.100000,19.110000 +07/21/2003,20.060000,20.360000,19.780000,19.780000 +07/22/2003,19.850000,20.070000,19.100000,19.170000 +07/23/2003,19.440000,19.600000,18.600000,18.640000 +07/24/2003,18.370000,18.650000,17.880000,18.600000 +07/25/2003,18.600000,18.880000,17.650000,17.750000 +07/28/2003,18.690000,18.760000,18.250000,18.360000 +07/29/2003,18.600000,19.500000,18.320000,18.670000 +07/30/2003,18.880000,19.030000,18.730000,18.850000 +07/31/2003,18.820000,19.580000,18.360000,19.490000 +08/01/2003,20.060000,20.770000,20.060000,20.750000 +08/04/2003,22.160000,22.860000,21.250000,21.270000 +08/05/2003,21.610000,22.680000,21.360000,22.680000 +08/06/2003,23.260000,23.890000,21.480000,21.500000 +08/07/2003,21.510000,21.720000,20.090000,20.260000 +08/08/2003,19.780000,20.210000,19.480000,19.590000 +08/11/2003,20.040000,20.310000,19.510000,19.750000 +08/12/2003,19.110000,19.550000,17.750000,17.940000 +08/13/2003,18.310000,18.990000,18.050000,18.770000 +08/14/2003,18.960000,18.960000,18.200000,18.470000 +08/15/2003,18.650000,18.940000,18.150000,18.270000 +08/18/2003,18.720000,18.850000,18.010000,18.180000 +08/19/2003,17.990000,18.380000,17.790000,17.860000 +08/20/2003,18.070000,18.330000,17.810000,17.820000 +08/21/2003,17.640000,18.180000,17.640000,17.840000 +08/22/2003,17.740000,18.630000,17.730000,18.550000 +08/25/2003,19.450000,19.580000,19.210000,19.530000 +08/26/2003,19.770000,20.300000,19.450000,19.490000 +08/27/2003,19.910000,19.930000,19.090000,19.130000 +08/28/2003,19.090000,19.590000,18.450000,18.480000 +08/29/2003,18.530000,18.750000,18.520000,18.630000 +09/02/2003,19.310000,19.830000,18.950000,19.020000 +09/03/2003,19.310000,19.580000,19.210000,19.440000 +09/04/2003,19.580000,19.640000,18.700000,18.710000 +09/05/2003,18.640000,18.690000,18.150000,18.170000 +09/08/2003,18.300000,18.590000,18.250000,18.260000 +09/09/2003,18.480000,19.140000,18.450000,18.850000 +09/10/2003,19.260000,20.150000,19.260000,20.010000 +09/11/2003,19.870000,20.020000,19.190000,19.250000 +09/12/2003,20.580000,20.660000,18.510000,18.680000 +09/15/2003,19.150000,19.350000,18.850000,19.280000 +09/16/2003,18.940000,18.940000,17.950000,18.030000 +09/17/2003,18.030000,18.240000,17.980000,18.150000 +09/18/2003,18.140000,18.150000,17.560000,17.570000 +09/19/2003,17.830000,17.860000,17.520000,17.540000 +09/22/2003,19.080000,23.900000,19.030000,19.650000 +09/23/2003,19.910000,19.970000,19.310000,19.470000 +09/24/2003,19.530000,21.260000,19.440000,21.220000 +09/25/2003,21.110000,22.270000,21.040000,22.260000 +09/26/2003,22.280000,22.730000,21.850000,22.230000 +09/29/2003,22.850000,22.850000,21.640000,21.670000 +09/30/2003,22.040000,23.260000,22.030000,22.720000 +10/01/2003,22.810000,22.820000,20.990000,21.070000 +10/02/2003,21.230000,21.450000,20.710000,20.800000 +10/03/2003,19.940000,20.090000,18.950000,19.500000 +10/06/2003,20.690000,20.690000,19.450000,19.510000 +10/07/2003,20.140000,20.140000,19.400000,19.410000 +10/08/2003,19.260000,19.610000,19.080000,19.180000 +10/09/2003,18.510000,19.280000,18.260000,18.820000 +10/10/2003,18.920000,18.920000,18.420000,18.450000 +10/13/2003,17.620000,17.910000,17.420000,17.550000 +10/14/2003,17.400000,17.790000,17.200000,17.370000 +10/15/2003,17.730000,17.960000,16.980000,17.690000 +10/16/2003,17.580000,18.050000,16.860000,17.190000 +10/17/2003,16.970000,17.850000,16.970000,17.620000 +10/20/2003,17.840000,18.070000,17.040000,17.040000 +10/21/2003,17.160000,17.230000,16.190000,16.550000 +10/22/2003,17.100000,17.980000,17.100000,17.670000 +10/23/2003,18.510000,18.510000,17.480000,17.680000 +10/24/2003,18.250000,18.680000,17.670000,17.710000 +10/27/2003,17.970000,18.180000,17.740000,18.050000 +10/28/2003,17.790000,17.890000,16.770000,16.820000 +10/29/2003,16.850000,17.020000,16.340000,16.430000 +10/30/2003,18.450000,18.450000,16.010000,16.330000 +10/31/2003,16.110000,16.190000,15.790000,16.100000 +11/03/2003,16.330000,16.700000,16.220000,16.550000 +11/04/2003,16.570000,16.780000,16.450000,16.550000 +11/05/2003,16.990000,17.320000,16.550000,16.860000 +11/06/2003,17.000000,17.370000,16.620000,16.740000 +11/07/2003,16.630000,16.930000,16.500000,16.930000 +11/10/2003,17.790000,17.880000,17.530000,17.620000 +11/11/2003,18.140000,18.530000,17.500000,17.540000 +11/12/2003,17.780000,17.850000,16.550000,16.750000 +11/13/2003,17.050000,17.130000,16.430000,16.470000 +11/14/2003,16.630000,17.000000,16.170000,16.940000 +11/17/2003,18.140000,19.360000,18.040000,18.600000 +11/18/2003,18.090000,19.170000,17.780000,19.110000 +11/19/2003,19.140000,19.510000,18.650000,18.800000 +11/20/2003,19.090000,19.610000,18.460000,19.480000 +11/21/2003,19.080000,19.400000,18.820000,18.980000 +11/24/2003,18.910000,18.980000,17.190000,17.440000 +11/25/2003,17.400000,17.870000,16.400000,16.710000 +11/26/2003,16.110000,17.260000,16.020000,16.230000 +11/28/2003,16.510000,16.620000,16.160000,16.320000 +12/01/2003,16.740000,17.030000,16.170000,16.770000 +12/02/2003,16.890000,16.890000,16.170000,16.270000 +12/03/2003,16.080000,16.680000,15.770000,16.630000 +12/04/2003,16.480000,16.830000,16.290000,16.300000 +12/05/2003,16.760000,17.320000,16.500000,17.090000 +12/08/2003,17.550000,17.590000,16.520000,16.540000 +12/09/2003,16.630000,17.800000,16.560000,17.630000 +12/10/2003,17.660000,18.270000,17.580000,17.870000 +12/11/2003,17.950000,17.950000,16.510000,16.730000 +12/12/2003,16.190000,16.980000,16.090000,16.410000 +12/15/2003,15.800000,17.420000,15.790000,17.230000 +12/16/2003,17.270000,17.450000,15.900000,15.930000 +12/17/2003,16.120000,16.270000,15.520000,15.580000 +12/18/2003,15.590000,16.190000,14.660000,16.160000 +12/19/2003,16.660000,16.810000,15.710000,16.420000 +12/22/2003,17.060000,17.310000,16.610000,16.940000 +12/23/2003,17.320000,17.400000,16.290000,16.490000 +12/24/2003,16.650000,16.770000,16.240000,16.660000 +12/26/2003,16.760000,17.490000,16.630000,17.450000 +12/29/2003,17.810000,17.860000,17.070000,17.090000 +12/30/2003,17.320000,17.970000,17.200000,17.680000 +12/31/2003,17.490000,18.860000,17.410000,18.310000 +01/02/2004,17.960000,18.680000,17.540000,18.220000 +01/05/2004,18.450000,18.490000,17.440000,17.490000 +01/06/2004,17.660000,17.670000,16.190000,16.730000 +01/07/2004,16.720000,16.750000,15.500000,15.500000 +01/08/2004,15.420000,15.680000,15.320000,15.610000 +01/09/2004,16.150000,16.880000,15.570000,16.750000 +01/12/2004,17.320000,17.460000,16.790000,16.820000 +01/13/2004,16.600000,18.330000,16.530000,18.040000 +01/14/2004,17.290000,17.300000,16.400000,16.750000 +01/15/2004,17.070000,17.310000,15.490000,15.560000 +01/16/2004,15.400000,15.440000,14.900000,15.000000 +01/20/2004,15.770000,16.130000,15.090000,15.210000 +01/21/2004,36.550000,36.550000,14.240000,14.340000 +01/22/2004,14.200000,14.870000,14.010000,14.710000 +01/23/2004,14.730000,15.050000,14.560000,14.840000 +01/26/2004,15.780000,15.780000,14.520000,14.550000 +01/27/2004,15.280000,15.440000,14.740000,15.350000 +01/28/2004,15.370000,17.060000,15.290000,16.780000 +01/29/2004,16.880000,17.660000,16.790000,17.140000 +01/30/2004,16.550000,17.350000,16.550000,16.630000 +02/02/2004,17.450000,17.560000,16.670000,17.110000 +02/03/2004,17.290000,17.780000,17.170000,17.340000 +02/04/2004,17.840000,18.060000,17.460000,17.870000 +02/05/2004,17.910000,17.990000,17.600000,17.710000 +02/06/2004,17.710000,17.710000,15.940000,16.000000 +02/09/2004,16.540000,16.820000,16.120000,16.390000 +02/10/2004,16.410000,16.760000,15.840000,15.940000 +02/11/2004,15.900000,16.160000,15.260000,15.390000 +02/12/2004,15.360000,15.720000,15.230000,15.310000 +02/13/2004,15.120000,16.030000,14.860000,15.580000 +02/17/2004,15.630000,15.960000,15.320000,15.400000 +02/18/2004,15.510000,15.760000,15.300000,15.590000 +02/19/2004,15.330000,15.970000,15.200000,15.800000 +02/20/2004,15.850000,16.550000,15.820000,16.040000 +02/23/2004,16.500000,16.780000,16.250000,16.290000 +02/24/2004,16.380000,16.760000,15.770000,15.900000 +02/25/2004,15.580000,16.050000,14.930000,14.930000 +02/26/2004,15.320000,15.330000,14.690000,14.830000 +02/27/2004,13.800000,14.770000,13.800000,14.550000 +03/01/2004,14.910000,15.050000,14.400000,14.440000 +03/02/2004,14.590000,14.890000,14.180000,14.860000 +03/03/2004,14.730000,15.270000,14.470000,14.550000 +03/04/2004,14.450000,14.500000,14.190000,14.400000 +03/05/2004,14.810000,14.820000,13.830000,14.480000 +03/08/2004,14.830000,15.830000,14.540000,15.790000 +03/09/2004,15.570000,16.740000,15.560000,16.600000 +03/10/2004,16.120000,18.700000,16.110000,18.670000 +03/11/2004,18.810000,20.690000,17.630000,20.670000 +03/12/2004,19.940000,20.080000,18.060000,18.300000 +03/15/2004,18.980000,21.390000,18.860000,21.130000 +03/16/2004,20.270000,20.940000,19.860000,20.340000 +03/17/2004,19.540000,19.550000,17.980000,18.110000 +03/18/2004,18.380000,19.230000,18.350000,18.530000 +03/19/2004,17.980000,19.250000,17.890000,19.150000 +03/22/2004,20.610000,22.670000,20.610000,21.580000 +03/23/2004,21.060000,21.330000,20.010000,20.670000 +03/24/2004,20.240000,20.830000,19.450000,19.810000 +03/25/2004,19.580000,19.580000,17.610000,17.880000 +03/26/2004,18.190000,18.230000,16.670000,17.330000 +03/29/2004,17.110000,17.170000,16.290000,16.500000 +03/30/2004,16.680000,16.800000,16.130000,16.280000 +03/31/2004,16.330000,16.960000,16.230000,16.740000 +04/01/2004,16.760000,17.250000,16.650000,16.650000 +04/02/2004,15.210000,16.550000,15.210000,15.640000 +04/05/2004,16.170000,16.640000,14.810000,14.970000 +04/06/2004,15.350000,15.530000,15.070000,15.320000 +04/07/2004,15.410000,16.360000,15.340000,15.760000 +04/08/2004,14.960000,16.820000,14.960000,16.260000 +04/12/2004,15.710000,16.120000,15.000000,15.280000 +04/13/2004,15.290000,17.980000,15.290000,17.260000 +04/14/2004,17.290000,17.710000,15.600000,15.620000 +04/15/2004,16.020000,16.780000,15.220000,15.740000 +04/16/2004,15.590000,15.690000,14.770000,14.940000 +04/19/2004,15.730000,16.080000,15.330000,15.420000 +04/20/2004,15.240000,16.720000,14.790000,16.670000 +04/21/2004,16.610000,16.940000,15.550000,15.600000 +04/22/2004,15.890000,15.980000,13.860000,14.610000 +04/23/2004,12.890000,14.560000,12.890000,14.010000 +04/26/2004,14.750000,15.220000,14.390000,14.770000 +04/27/2004,15.050000,15.170000,14.370000,15.070000 +04/28/2004,15.550000,16.540000,15.550000,16.290000 +04/29/2004,16.360000,17.270000,15.870000,16.600000 +04/30/2004,16.270000,17.230000,16.140000,17.190000 +05/03/2004,17.690000,17.720000,16.610000,16.620000 +05/04/2004,16.800000,17.130000,15.970000,16.550000 +05/05/2004,16.430000,16.550000,15.640000,15.770000 +05/06/2004,16.450000,17.670000,16.450000,17.050000 +05/07/2004,17.220000,18.170000,16.440000,18.130000 +05/10/2004,19.440000,20.200000,18.990000,19.770000 +05/11/2004,19.230000,19.280000,17.940000,18.570000 +05/12/2004,18.790000,20.410000,18.140000,18.140000 +05/13/2004,18.780000,18.920000,17.970000,18.860000 +05/14/2004,18.660000,19.270000,18.060000,18.470000 +05/17/2004,19.700000,20.450000,19.650000,19.960000 +05/18/2004,19.600000,19.700000,19.140000,19.330000 +05/19/2004,18.480000,18.930000,17.580000,18.930000 +05/20/2004,18.600000,19.250000,18.550000,18.670000 +05/21/2004,18.730000,18.740000,18.000000,18.490000 +05/24/2004,18.790000,18.820000,17.960000,18.080000 +05/25/2004,18.410000,18.420000,15.730000,15.960000 +05/26/2004,16.090000,16.300000,15.780000,15.970000 +05/27/2004,15.740000,15.860000,15.190000,15.280000 +05/28/2004,15.440000,15.650000,15.390000,15.500000 +06/01/2004,16.600000,16.960000,16.190000,16.300000 +06/02/2004,16.050000,16.700000,15.950000,16.080000 +06/03/2004,16.430000,17.040000,16.160000,17.030000 +06/04/2004,16.240000,16.900000,15.820000,16.780000 +06/07/2004,16.600000,16.700000,15.330000,15.390000 +06/08/2004,15.790000,15.880000,15.000000,15.010000 +06/09/2004,14.560000,15.460000,14.560000,15.390000 +06/10/2004,15.330000,15.350000,14.920000,15.040000 +06/11/2004,15.040000,15.040000,15.040000,15.040000 +06/14/2004,15.540000,16.360000,15.540000,16.070000 +06/15/2004,15.340000,15.350000,14.720000,15.050000 +06/16/2004,14.830000,15.220000,14.480000,14.790000 +06/17/2004,15.060000,15.580000,15.000000,15.150000 +06/18/2004,14.740000,15.250000,14.510000,14.990000 +06/21/2004,15.610000,15.620000,14.960000,15.260000 +06/22/2004,15.440000,15.640000,14.310000,14.310000 +06/23/2004,14.600000,14.820000,13.750000,13.980000 +06/24/2004,14.390000,14.970000,14.160000,14.810000 +06/25/2004,14.780000,15.290000,14.470000,15.190000 +06/28/2004,15.280000,16.130000,15.190000,16.070000 +06/29/2004,15.220000,16.280000,15.220000,15.470000 +06/30/2004,15.270000,15.730000,14.250000,14.340000 +07/01/2004,14.740000,15.570000,14.410000,15.200000 +07/02/2004,15.230000,15.450000,14.800000,15.080000 +07/06/2004,16.250000,16.750000,16.130000,16.250000 +07/07/2004,16.360000,16.470000,15.590000,15.810000 +07/08/2004,15.860000,16.360000,15.500000,16.200000 +07/09/2004,16.010000,16.030000,15.710000,15.780000 +07/12/2004,15.250000,15.610000,14.610000,14.960000 +07/13/2004,14.860000,15.080000,14.280000,14.460000 +07/14/2004,14.900000,16.590000,13.340000,13.760000 +07/15/2004,13.940000,14.730000,13.600000,14.710000 +07/16/2004,14.270000,14.580000,13.950000,14.340000 +07/19/2004,15.170000,15.830000,14.860000,15.170000 +07/20/2004,15.530000,15.570000,13.980000,14.170000 +07/21/2004,14.000000,16.460000,13.910000,16.410000 +07/22/2004,16.650000,17.100000,15.290000,15.750000 +07/23/2004,15.820000,16.940000,15.820000,16.500000 +07/26/2004,17.220000,17.930000,16.980000,17.300000 +07/27/2004,17.240000,17.340000,16.300000,16.550000 +07/28/2004,16.770000,17.410000,15.940000,16.150000 +07/29/2004,16.000000,16.120000,15.420000,15.680000 +07/30/2004,15.850000,15.890000,15.270000,15.320000 +08/02/2004,16.420000,16.580000,15.220000,15.370000 +08/03/2004,15.560000,16.050000,15.280000,16.030000 +08/04/2004,16.330000,16.650000,15.820000,16.210000 +08/05/2004,16.190000,18.410000,16.170000,18.320000 +08/06/2004,18.210000,19.680000,18.180000,19.340000 +08/09/2004,19.970000,19.970000,18.630000,18.890000 +08/10/2004,18.800000,18.860000,17.250000,17.470000 +08/11/2004,18.150000,18.490000,17.840000,18.040000 +08/12/2004,18.610000,19.300000,18.360000,19.080000 +08/13/2004,18.910000,19.250000,17.970000,17.980000 +08/16/2004,19.280000,19.280000,17.420000,17.570000 +08/17/2004,16.580000,17.280000,16.160000,17.020000 +08/18/2004,17.550000,17.550000,16.130000,16.230000 +08/19/2004,16.540000,17.550000,16.310000,16.960000 +08/20/2004,16.990000,17.040000,15.780000,16.000000 +08/23/2004,16.680000,16.710000,15.790000,15.880000 +08/24/2004,15.630000,15.810000,15.330000,15.330000 +08/25/2004,15.400000,15.760000,14.810000,14.980000 +08/26/2004,15.220000,15.220000,14.760000,14.910000 +08/27/2004,14.910000,15.020000,14.670000,14.710000 +08/30/2004,15.350000,15.580000,15.300000,15.440000 +08/31/2004,15.640000,15.850000,15.280000,15.290000 +09/01/2004,15.390000,15.390000,14.720000,14.910000 +09/02/2004,14.970000,15.050000,14.180000,14.280000 +09/03/2004,14.360000,14.380000,13.790000,13.910000 +09/07/2004,14.520000,14.640000,14.030000,14.070000 +09/08/2004,13.410000,14.310000,13.410000,14.060000 +09/09/2004,14.120000,14.410000,13.700000,14.010000 +09/10/2004,13.900000,14.230000,13.690000,13.760000 +09/13/2004,13.640000,13.780000,13.160000,13.170000 +09/14/2004,13.500000,13.890000,13.500000,13.560000 +09/15/2004,13.880000,14.670000,13.680000,14.640000 +09/16/2004,14.290000,14.660000,14.270000,14.390000 +09/17/2004,14.110000,14.430000,13.930000,14.030000 +09/20/2004,13.980000,15.290000,13.980000,14.430000 +09/21/2004,15.980000,15.980000,13.380000,13.660000 +09/22/2004,15.280000,15.300000,13.950000,14.740000 +09/23/2004,14.850000,15.080000,14.610000,14.800000 +09/24/2004,14.930000,14.940000,14.080000,14.280000 +09/27/2004,14.860000,31.360000,14.550000,14.620000 +09/28/2004,14.730000,14.840000,13.690000,13.830000 +09/29/2004,14.090000,14.140000,13.200000,13.210000 +09/30/2004,13.490000,13.670000,13.200000,13.340000 +10/01/2004,13.110000,13.110000,12.600000,12.750000 +10/04/2004,13.050000,13.450000,12.990000,13.410000 +10/05/2004,13.510000,14.190000,13.510000,13.950000 +10/06/2004,14.010000,14.100000,13.240000,13.280000 +10/07/2004,13.330000,14.660000,13.320000,14.500000 +10/08/2004,14.700000,15.520000,13.780000,15.050000 +10/11/2004,14.690000,15.270000,14.280000,14.710000 +10/12/2004,15.210000,15.690000,14.910000,15.050000 +10/13/2004,13.920000,15.630000,13.920000,15.420000 +10/14/2004,15.220000,16.560000,15.220000,16.430000 +10/15/2004,16.280000,16.490000,14.720000,15.040000 +10/18/2004,16.160000,16.160000,14.640000,14.710000 +10/19/2004,16.320000,16.320000,14.320000,15.130000 +10/20/2004,15.460000,15.530000,14.800000,14.850000 +10/21/2004,14.980000,15.190000,14.280000,14.540000 +10/22/2004,14.590000,15.410000,14.310000,15.280000 +10/25/2004,16.070000,16.710000,16.020000,16.580000 +10/26/2004,19.540000,16.870000,15.970000,16.390000 +10/27/2004,16.480000,16.530000,15.660000,15.720000 +10/28/2004,16.020000,16.050000,15.360000,15.390000 +10/29/2004,15.830000,16.290000,14.960000,16.270000 +11/01/2004,16.430000,16.760000,16.180000,16.270000 +11/02/2004,15.990000,16.320000,15.210000,16.180000 +11/03/2004,15.050000,15.180000,13.790000,14.040000 +11/04/2004,13.830000,14.020000,12.950000,13.970000 +11/05/2004,13.670000,14.100000,13.230000,13.840000 +11/08/2004,2.580000,14.480000,13.680000,13.800000 +11/09/2004,12.890000,13.960000,12.890000,13.610000 +11/10/2004,13.160000,13.510000,12.790000,13.080000 +11/11/2004,13.110000,13.120000,12.640000,13.040000 +11/12/2004,13.240000,13.480000,13.040000,13.330000 +11/15/2004,14.050000,14.060000,13.250000,13.380000 +11/16/2004,13.410000,13.670000,13.200000,13.210000 +11/17/2004,13.200000,13.390000,12.770000,13.210000 +11/18/2004,13.220000,13.290000,12.960000,12.980000 +11/19/2004,12.790000,13.830000,12.770000,13.500000 +11/22/2004,13.710000,13.710000,12.940000,12.970000 +11/23/2004,12.780000,12.910000,12.570000,12.670000 +11/24/2004,12.580000,12.890000,12.560000,12.720000 +11/26/2004,14.980000,14.980000,12.590000,12.790000 +11/29/2004,12.990000,13.690000,12.930000,13.300000 +11/30/2004,13.270000,13.380000,13.070000,13.240000 +12/01/2004,13.100000,13.120000,12.770000,12.970000 +12/02/2004,12.970000,13.040000,12.720000,12.980000 +12/03/2004,13.020000,13.060000,12.400000,12.960000 +12/06/2004,12.950000,13.400000,12.930000,13.190000 +12/07/2004,13.070000,13.740000,12.960000,13.670000 +12/08/2004,13.520000,13.680000,13.180000,13.190000 +12/09/2004,13.520000,13.710000,12.770000,12.880000 +12/10/2004,13.050000,13.150000,12.680000,12.760000 +12/13/2004,12.370000,12.610000,12.130000,12.540000 +12/14/2004,12.550000,12.970000,12.210000,12.730000 +12/15/2004,12.410000,12.880000,12.230000,12.350000 +12/16/2004,12.340000,12.590000,11.960000,12.270000 +12/17/2004,12.340000,12.750000,11.870000,11.950000 +12/20/2004,12.260000,12.340000,11.770000,11.830000 +12/21/2004,11.780000,12.000000,11.370000,11.550000 +12/22/2004,11.420000,11.710000,11.370000,11.450000 +12/23/2004,11.410000,11.640000,11.140000,11.230000 +12/27/2004,11.530000,12.160000,11.530000,12.140000 +12/28/2004,12.250000,12.400000,11.970000,12.000000 +12/29/2004,11.610000,11.790000,11.610000,11.620000 +12/30/2004,12.250000,12.610000,12.180000,12.560000 +12/31/2004,12.420000,13.290000,12.420000,13.290000 +01/03/2005,13.390000,14.230000,13.250000,14.080000 +01/04/2005,14.010000,14.450000,13.930000,13.980000 +01/05/2005,13.980000,14.090000,13.260000,14.090000 +01/06/2005,14.090000,14.090000,13.330000,13.580000 +01/07/2005,13.470000,13.510000,12.940000,13.490000 +01/10/2005,13.920000,13.930000,12.940000,13.230000 +01/11/2005,13.440000,13.680000,13.050000,13.190000 +01/12/2005,13.940000,13.940000,12.540000,12.560000 +01/13/2005,12.700000,12.860000,12.370000,12.840000 +01/14/2005,12.680000,12.820000,12.290000,12.430000 +01/18/2005,13.130000,13.150000,12.300000,12.470000 +01/19/2005,12.470000,13.210000,12.410000,13.180000 +01/20/2005,13.370000,14.110000,13.280000,13.830000 +01/21/2005,13.750000,14.460000,13.400000,14.360000 +01/24/2005,14.380000,14.750000,14.170000,14.650000 +01/25/2005,14.340000,14.360000,13.880000,14.060000 +01/26/2005,13.840000,13.840000,13.060000,13.440000 +01/27/2005,13.500000,13.570000,12.960000,13.240000 +01/28/2005,13.150000,13.560000,12.830000,13.240000 +01/31/2005,13.630000,13.630000,12.790000,12.820000 +02/01/2005,12.800000,20.130000,12.020000,12.030000 +02/02/2005,12.010000,12.060000,11.520000,11.660000 +02/03/2005,12.030000,12.120000,11.720000,11.790000 +02/04/2005,11.970000,11.970000,10.900000,11.210000 +02/07/2005,11.530000,11.750000,11.360000,11.730000 +02/08/2005,11.660000,11.670000,11.450000,11.600000 +02/09/2005,11.520000,12.020000,11.410000,12.000000 +02/10/2005,11.980000,11.990000,11.380000,11.510000 +02/11/2005,11.640000,11.820000,11.250000,11.430000 +02/14/2005,11.280000,11.860000,11.180000,11.520000 +02/15/2005,11.570000,11.760000,11.130000,11.270000 +02/16/2005,11.400000,11.500000,11.030000,11.100000 +02/17/2005,11.250000,11.910000,11.210000,11.770000 +02/18/2005,11.990000,12.120000,11.180000,11.180000 +02/22/2005,12.180000,13.200000,12.090000,13.140000 +02/23/2005,12.940000,12.940000,12.300000,12.390000 +02/24/2005,12.510000,12.510000,11.480000,11.570000 +02/25/2005,11.750000,11.780000,10.920000,11.490000 +02/28/2005,11.890000,12.500000,11.730000,12.080000 +03/01/2005,11.950000,12.100000,11.660000,12.040000 +03/02/2005,12.880000,12.910000,12.200000,12.500000 +03/03/2005,12.280000,13.070000,12.230000,12.930000 +03/04/2005,12.490000,12.500000,11.940000,11.940000 +03/07/2005,12.360000,12.600000,12.050000,12.260000 +03/08/2005,12.060000,12.500000,11.950000,12.400000 +03/09/2005,12.230000,12.720000,12.200000,12.700000 +03/10/2005,12.620000,12.970000,12.420000,12.490000 +03/11/2005,12.290000,12.980000,12.110000,12.800000 +03/14/2005,12.820000,12.990000,12.360000,12.390000 +03/15/2005,12.440000,13.220000,12.330000,13.150000 +03/16/2005,13.300000,13.810000,13.190000,13.490000 +03/17/2005,13.250000,13.670000,13.200000,13.290000 +03/18/2005,13.650000,13.670000,13.080000,13.140000 +03/21/2005,13.620000,13.980000,13.330000,13.610000 +03/22/2005,13.760000,14.280000,13.150000,14.270000 +03/23/2005,14.610000,14.890000,13.880000,14.060000 +03/24/2005,13.860000,13.880000,12.970000,13.420000 +03/28/2005,14.010000,14.010000,13.440000,13.750000 +03/29/2005,13.960000,14.680000,13.380000,14.490000 +03/30/2005,14.470000,14.470000,13.640000,13.640000 +03/31/2005,13.710000,14.100000,13.570000,14.020000 +04/01/2005,13.640000,14.380000,12.920000,14.090000 +04/04/2005,14.530000,14.760000,13.960000,14.110000 +04/05/2005,14.100000,14.110000,13.660000,13.680000 +04/06/2005,13.750000,13.760000,12.890000,13.150000 +04/07/2005,12.920000,12.960000,12.300000,12.330000 +04/08/2005,12.060000,12.650000,11.520000,12.620000 +04/11/2005,12.090000,12.460000,11.820000,11.980000 +04/12/2005,11.660000,12.830000,11.190000,11.300000 +04/13/2005,11.680000,13.440000,11.270000,13.310000 +04/14/2005,13.400000,14.600000,12.670000,14.530000 +04/15/2005,14.920000,18.050000,14.710000,17.740000 +04/18/2005,18.330000,18.590000,16.410000,16.560000 +04/19/2005,15.280000,15.970000,14.810000,14.960000 +04/20/2005,14.860000,17.250000,14.520000,16.920000 +04/21/2005,16.220000,16.220000,14.260000,14.410000 +04/22/2005,14.540000,16.320000,14.200000,15.380000 +04/25/2005,15.290000,15.470000,14.600000,14.620000 +04/26/2005,14.270000,15.150000,14.270000,14.910000 +04/27/2005,14.620000,15.930000,14.430000,14.870000 +04/28/2005,14.190000,16.870000,14.190000,16.860000 +04/29/2005,15.750000,16.920000,15.260000,15.310000 +05/02/2005,15.450000,16.010000,15.080000,15.120000 +05/03/2005,17.890000,17.890000,14.530000,14.530000 +05/04/2005,14.440000,15.380000,13.700000,13.850000 +05/05/2005,13.480000,15.820000,13.430000,13.980000 +05/06/2005,13.290000,14.060000,13.110000,14.050000 +05/09/2005,14.110000,14.560000,13.530000,13.750000 +05/10/2005,14.050000,15.110000,14.030000,14.910000 +05/11/2005,14.690000,15.800000,14.310000,14.450000 +05/12/2005,14.430000,16.230000,14.160000,16.120000 +05/13/2005,15.880000,17.700000,15.400000,16.320000 +05/16/2005,16.870000,16.870000,15.670000,15.680000 +05/17/2005,15.920000,16.210000,14.450000,14.570000 +05/18/2005,14.110000,14.180000,13.300000,13.630000 +05/19/2005,13.350000,14.020000,13.250000,13.320000 +05/20/2005,13.570000,13.730000,13.070000,13.140000 +05/23/2005,13.380000,13.450000,12.750000,12.950000 +05/24/2005,13.120000,13.300000,12.530000,12.690000 +05/25/2005,12.830000,13.110000,12.580000,12.580000 +05/26/2005,12.230000,12.380000,11.650000,12.240000 +05/27/2005,12.060000,12.430000,12.060000,12.150000 +05/31/2005,12.690000,13.450000,12.670000,13.290000 +06/01/2005,13.340000,13.340000,12.170000,12.360000 +06/02/2005,12.350000,12.430000,11.800000,11.840000 +06/03/2005,11.780000,12.490000,11.520000,12.150000 +06/06/2005,12.680000,26.830000,12.210000,12.280000 +06/07/2005,12.220000,12.430000,11.470000,12.390000 +06/08/2005,13.100000,13.110000,12.050000,12.700000 +06/09/2005,12.690000,13.070000,12.060000,12.080000 +06/10/2005,12.160000,12.400000,11.900000,11.960000 +06/13/2005,12.120000,12.120000,11.310000,11.650000 +06/14/2005,11.650000,12.020000,11.520000,11.790000 +06/15/2005,11.220000,11.960000,11.050000,11.460000 +06/16/2005,11.240000,11.360000,11.040000,11.150000 +06/17/2005,10.830000,11.640000,10.780000,11.480000 +06/20/2005,12.510000,12.530000,11.310000,11.470000 +06/21/2005,11.520000,11.670000,11.010000,11.080000 +06/22/2005,10.960000,11.310000,10.810000,11.050000 +06/23/2005,11.190000,12.130000,10.960000,12.130000 +06/24/2005,12.270000,12.320000,11.950000,12.180000 +06/27/2005,12.730000,12.780000,12.380000,12.520000 +06/28/2005,12.310000,12.310000,11.550000,11.580000 +06/29/2005,11.540000,11.780000,11.440000,11.770000 +06/30/2005,11.720000,12.100000,11.500000,12.040000 +07/01/2005,11.750000,11.920000,11.380000,11.400000 +07/05/2005,12.410000,12.410000,11.530000,11.680000 +07/06/2005,11.670000,12.330000,11.540000,12.270000 +07/07/2005,13.910000,13.920000,12.480000,12.490000 +07/08/2005,12.240000,12.290000,11.090000,11.450000 +07/11/2005,10.960000,11.410000,10.530000,11.280000 +07/12/2005,11.030000,11.370000,10.850000,10.950000 +07/13/2005,11.090000,11.440000,10.800000,10.840000 +07/14/2005,10.870000,11.130000,10.500000,10.810000 +07/15/2005,10.610000,10.900000,10.130000,10.330000 +07/18/2005,11.090000,11.090000,10.770000,10.770000 +07/19/2005,10.630000,10.790000,10.360000,10.450000 +07/20/2005,10.800000,10.940000,9.880000,10.230000 +07/21/2005,10.230000,11.210000,10.230000,10.970000 +07/22/2005,11.010000,11.050000,10.510000,10.520000 +07/25/2005,11.120000,36.560000,10.700000,11.100000 +07/26/2005,11.110000,11.250000,10.920000,10.990000 +07/27/2005,11.030000,11.030000,10.340000,10.360000 +07/28/2005,10.400000,10.580000,10.270000,10.520000 +07/29/2005,10.240000,11.730000,10.240000,11.570000 +08/01/2005,11.750000,12.230000,11.360000,12.080000 +08/02/2005,12.000000,12.030000,11.690000,11.750000 +08/03/2005,11.900000,12.010000,11.620000,11.830000 +08/04/2005,12.120000,12.570000,11.990000,12.520000 +08/05/2005,11.820000,12.920000,11.820000,12.480000 +08/08/2005,12.560000,13.290000,12.560000,13.210000 +08/09/2005,12.250000,12.780000,12.240000,12.400000 +08/10/2005,12.030000,12.560000,11.510000,12.380000 +08/11/2005,12.340000,12.940000,11.880000,12.420000 +08/12/2005,12.360000,12.980000,12.180000,12.740000 +08/15/2005,12.870000,12.990000,12.080000,12.260000 +08/16/2005,12.370000,13.890000,12.280000,13.520000 +08/17/2005,13.350000,13.760000,12.780000,13.300000 +08/18/2005,13.470000,13.880000,13.010000,13.420000 +08/19/2005,12.840000,13.850000,12.610000,13.420000 +08/22/2005,13.670000,13.890000,13.200000,13.420000 +08/23/2005,13.630000,14.050000,13.300000,13.340000 +08/24/2005,13.560000,14.180000,13.000000,14.170000 +08/25/2005,13.920000,14.120000,13.660000,13.730000 +08/26/2005,13.790000,14.200000,13.650000,13.720000 +08/29/2005,14.340000,14.410000,13.380000,13.520000 +08/30/2005,13.490000,14.180000,13.470000,13.650000 +08/31/2005,13.370000,13.630000,12.560000,12.600000 +09/01/2005,12.860000,13.370000,12.310000,13.150000 +09/02/2005,13.210000,13.720000,13.030000,13.570000 +09/06/2005,14.170000,14.180000,12.900000,12.930000 +09/07/2005,13.060000,13.200000,12.440000,12.520000 +09/08/2005,12.720000,12.940000,12.370000,12.930000 +09/09/2005,12.460000,12.650000,11.960000,11.980000 +09/12/2005,11.660000,11.890000,11.450000,11.650000 +09/13/2005,11.760000,12.480000,11.750000,12.390000 +09/14/2005,12.790000,13.260000,12.670000,12.910000 +09/15/2005,12.720000,13.170000,12.280000,12.490000 +09/16/2005,11.890000,11.930000,11.070000,11.220000 +09/19/2005,12.170000,12.460000,12.040000,12.140000 +09/20/2005,12.230000,12.960000,11.830000,12.640000 +09/21/2005,13.070000,13.910000,12.960000,13.790000 +09/22/2005,13.850000,14.390000,13.310000,13.330000 +09/23/2005,13.640000,13.880000,12.750000,12.960000 +09/26/2005,13.270000,13.470000,12.640000,13.040000 +09/27/2005,13.060000,13.460000,12.510000,12.760000 +09/28/2005,12.600000,12.980000,12.370000,12.630000 +09/29/2005,12.920000,13.230000,12.150000,12.240000 +09/30/2005,12.420000,12.440000,11.920000,11.920000 +10/03/2005,12.370000,12.620000,11.980000,12.460000 +10/04/2005,12.500000,13.210000,12.110000,13.200000 +10/05/2005,13.150000,14.580000,12.970000,14.550000 +10/06/2005,14.530000,15.630000,14.040000,14.960000 +10/07/2005,14.560000,14.820000,14.300000,14.590000 +10/10/2005,14.930000,15.610000,14.870000,15.550000 +10/11/2005,15.350000,15.700000,15.060000,15.630000 +10/12/2005,15.560000,16.270000,15.040000,16.220000 +10/13/2005,16.320000,17.190000,15.980000,16.470000 +10/14/2005,15.990000,16.030000,14.830000,14.870000 +10/17/2005,15.300000,15.300000,14.580000,14.670000 +10/18/2005,14.920000,15.400000,14.790000,15.330000 +10/19/2005,15.630000,15.860000,13.470000,13.500000 +10/20/2005,14.180000,16.190000,13.980000,16.110000 +10/21/2005,15.530000,16.270000,15.260000,16.130000 +10/24/2005,16.180000,16.440000,14.610000,14.740000 +10/25/2005,14.960000,15.300000,14.200000,14.530000 +10/26/2005,14.800000,14.880000,13.720000,14.590000 +10/27/2005,14.730000,16.300000,14.570000,16.020000 +10/28/2005,15.450000,15.610000,14.110000,14.250000 +10/31/2005,14.040000,15.390000,13.930000,15.320000 +11/01/2005,14.850000,15.660000,14.650000,14.850000 +11/02/2005,14.990000,14.990000,13.380000,13.480000 +11/03/2005,13.120000,13.230000,12.500000,13.000000 +11/04/2005,12.880000,13.620000,12.690000,13.170000 +11/07/2005,13.110000,13.650000,12.760000,13.100000 +11/08/2005,13.610000,13.610000,13.040000,13.080000 +11/09/2005,13.140000,13.360000,12.420000,12.800000 +11/10/2005,12.680000,13.170000,11.730000,11.900000 +11/11/2005,11.820000,11.960000,11.630000,11.630000 +11/14/2005,11.990000,12.340000,11.770000,12.180000 +11/15/2005,12.160000,12.690000,11.700000,12.230000 +11/16/2005,12.220000,12.680000,12.170000,12.260000 +11/17/2005,11.920000,12.200000,11.250000,11.250000 +11/18/2005,11.190000,11.670000,10.960000,11.120000 +11/21/2005,11.180000,11.380000,10.710000,10.820000 +11/22/2005,11.010000,11.100000,10.500000,10.600000 +11/23/2005,10.960000,11.030000,10.670000,10.960000 +11/25/2005,11.040000,11.240000,10.880000,10.880000 +11/28/2005,11.340000,11.990000,11.330000,11.840000 +11/29/2005,11.770000,11.960000,11.610000,11.890000 +11/30/2005,11.840000,12.130000,11.550000,12.060000 +12/01/2005,12.090000,12.230000,11.140000,11.240000 +12/02/2005,11.100000,11.230000,10.940000,11.010000 +12/05/2005,11.450000,11.680000,11.400000,11.600000 +12/06/2005,11.160000,11.590000,10.960000,11.520000 +12/07/2005,11.490000,12.440000,11.450000,12.180000 +12/08/2005,11.880000,12.410000,11.730000,12.210000 +12/09/2005,11.910000,12.200000,11.560000,11.690000 +12/12/2005,10.860000,11.810000,10.830000,11.470000 +12/13/2005,11.180000,11.420000,10.740000,11.110000 +12/14/2005,10.750000,10.790000,10.390000,10.480000 +12/15/2005,10.660000,11.110000,10.370000,10.730000 +12/16/2005,10.700000,10.750000,10.150000,10.680000 +12/19/2005,11.110000,11.380000,10.650000,11.380000 +12/20/2005,11.320000,11.450000,11.000000,11.190000 +12/21/2005,10.710000,11.070000,10.340000,10.810000 +12/22/2005,10.820000,10.890000,10.280000,10.290000 +12/23/2005,10.370000,10.480000,10.240000,10.270000 +12/27/2005,10.970000,11.650000,10.830000,11.570000 +12/28/2005,11.550000,11.640000,11.260000,11.350000 +12/29/2005,11.360000,11.670000,11.140000,11.610000 +12/30/2005,11.960000,12.070000,11.550000,12.070000 +01/03/2006,12.250000,12.510000,10.990000,11.140000 +01/04/2006,11.220000,11.710000,10.970000,11.370000 +01/05/2006,11.430000,11.840000,11.310000,11.310000 +01/06/2006,11.230000,11.500000,10.810000,11.000000 +01/09/2006,11.350000,11.350000,10.980000,11.130000 +01/10/2006,11.390000,11.390000,10.840000,10.860000 +01/11/2006,11.030000,11.160000,10.830000,10.940000 +01/12/2006,10.980000,11.380000,10.940000,11.200000 +01/13/2006,11.400000,11.610000,11.110000,11.230000 +01/17/2006,12.130000,12.460000,11.870000,11.910000 +01/18/2006,12.620000,12.700000,12.200000,12.250000 +01/19/2006,12.120000,12.340000,11.650000,11.980000 +01/20/2006,12.100000,14.560000,11.890000,14.560000 +01/23/2006,14.440000,14.480000,13.580000,13.930000 +01/24/2006,13.790000,13.830000,13.140000,13.310000 +01/25/2006,12.950000,13.380000,12.620000,12.870000 +01/26/2006,12.890000,12.910000,12.190000,12.420000 +01/27/2006,12.270000,12.330000,11.720000,11.970000 +01/30/2006,12.220000,12.460000,12.070000,12.390000 +01/31/2006,12.450000,13.060000,12.450000,12.950000 +02/01/2006,13.030000,13.030000,12.340000,12.360000 +02/02/2006,12.540000,13.470000,12.480000,13.230000 +02/03/2006,13.370000,13.700000,12.640000,12.960000 +02/06/2006,13.430000,13.430000,12.990000,13.040000 +02/07/2006,13.200000,13.670000,12.970000,13.590000 +02/08/2006,41.600000,13.610000,12.760000,12.830000 +02/09/2006,12.560000,13.150000,12.270000,13.120000 +02/10/2006,13.350000,13.730000,12.690000,12.870000 +02/13/2006,13.340000,13.700000,13.050000,13.350000 +02/14/2006,13.090000,13.150000,12.010000,12.250000 +02/15/2006,12.430000,12.950000,12.210000,12.310000 +02/16/2006,12.190000,12.290000,11.130000,11.480000 +02/17/2006,11.640000,12.210000,11.520000,12.010000 +02/21/2006,12.360000,12.640000,12.280000,12.410000 +02/22/2006,12.270000,12.300000,11.680000,11.880000 +02/23/2006,11.860000,11.970000,11.580000,11.870000 +02/24/2006,11.940000,12.060000,11.420000,11.460000 +02/27/2006,11.790000,11.830000,11.400000,11.590000 +02/28/2006,11.740000,12.360000,11.710000,12.340000 +03/01/2006,12.050000,12.070000,11.520000,11.540000 +03/02/2006,11.790000,11.950000,11.560000,11.720000 +03/03/2006,12.030000,12.100000,11.360000,11.960000 +03/06/2006,12.220000,12.910000,12.220000,12.740000 +03/07/2006,12.920000,13.340000,12.640000,12.660000 +03/08/2006,12.830000,13.340000,12.260000,12.320000 +03/09/2006,12.210000,12.690000,12.010000,12.680000 +03/10/2006,12.520000,12.600000,11.790000,11.850000 +03/13/2006,11.720000,11.750000,10.890000,11.370000 +03/14/2006,11.610000,11.720000,10.530000,10.740000 +03/15/2006,11.170000,11.540000,10.980000,11.350000 +03/16/2006,10.590000,12.050000,10.570000,11.980000 +03/17/2006,11.560000,12.200000,11.530000,12.120000 +03/20/2006,11.230000,12.210000,11.130000,11.790000 +03/21/2006,11.710000,11.890000,11.170000,11.620000 +03/22/2006,11.710000,11.790000,11.110000,11.210000 +03/23/2006,11.190000,11.570000,11.110000,11.170000 +03/24/2006,11.230000,11.480000,11.090000,11.190000 +03/27/2006,11.460000,11.720000,11.410000,11.460000 +03/28/2006,11.690000,11.900000,11.380000,11.580000 +03/29/2006,11.460000,11.570000,10.790000,10.950000 +03/30/2006,11.030000,11.730000,10.700000,11.570000 +03/31/2006,11.420000,11.650000,11.270000,11.390000 +04/03/2006,11.470000,11.620000,11.030000,11.570000 +04/04/2006,11.660000,11.800000,11.090000,11.140000 +04/05/2006,11.240000,11.360000,11.060000,11.130000 +04/06/2006,11.340000,11.740000,11.250000,11.450000 +04/07/2006,11.440000,12.310000,11.200000,12.260000 +04/10/2006,12.440000,12.490000,12.040000,12.190000 +04/11/2006,12.090000,13.060000,12.060000,13.000000 +04/12/2006,13.080000,13.900000,12.660000,12.760000 +04/13/2006,12.930000,13.000000,12.280000,12.380000 +04/17/2006,12.800000,13.020000,12.270000,12.580000 +04/18/2006,12.550000,12.550000,11.310000,11.400000 +04/19/2006,11.520000,11.800000,11.230000,11.320000 +04/20/2006,11.300000,11.670000,11.020000,11.640000 +04/21/2006,11.240000,11.980000,11.190000,11.590000 +04/24/2006,12.260000,12.420000,11.670000,11.750000 +04/25/2006,11.710000,12.190000,11.590000,11.750000 +04/26/2006,11.760000,11.790000,11.340000,11.760000 +04/27/2006,12.270000,12.520000,11.550000,11.840000 +04/28/2006,12.130000,12.130000,11.420000,11.590000 +05/01/2006,11.830000,12.590000,11.750000,12.540000 +05/02/2006,12.200000,12.270000,11.930000,11.990000 +05/03/2006,12.210000,12.450000,11.950000,11.990000 +05/04/2006,11.920000,12.160000,11.710000,11.860000 +05/05/2006,11.390000,11.620000,11.180000,11.620000 +05/08/2006,11.980000,12.060000,11.810000,12.000000 +05/09/2006,12.100000,12.150000,11.880000,11.990000 +05/10/2006,12.220000,12.320000,11.780000,11.780000 +05/11/2006,12.330000,12.920000,11.990000,12.490000 +05/12/2006,12.710000,14.260000,12.710000,14.190000 +05/15/2006,15.120000,15.130000,13.440000,13.570000 +05/16/2006,13.490000,13.610000,12.980000,13.350000 +05/17/2006,13.830000,16.260000,13.390000,16.260000 +05/18/2006,15.540000,17.090000,14.960000,16.990000 +05/19/2006,16.160000,18.010000,15.900000,17.180000 +05/22/2006,18.550000,19.620000,16.730000,17.720000 +05/23/2006,16.700000,18.260000,15.360000,18.260000 +05/24/2006,17.870000,19.870000,17.130000,17.360000 +05/25/2006,16.670000,16.670000,15.310000,15.500000 +05/26/2006,14.920000,15.040000,14.260000,14.260000 +05/30/2006,15.390000,18.720000,15.390000,18.660000 +05/31/2006,18.090000,18.090000,16.410000,16.440000 +06/01/2006,16.470000,16.560000,14.480000,14.520000 +06/02/2006,14.170000,14.970000,13.920000,14.320000 +06/05/2006,14.970000,17.140000,14.970000,16.650000 +06/06/2006,16.720000,18.560000,16.650000,17.340000 +06/07/2006,15.830000,17.860000,15.830000,17.800000 +06/08/2006,17.920000,20.750000,17.880000,18.350000 +06/09/2006,17.900000,18.450000,17.070000,18.120000 +06/12/2006,18.130000,21.250000,17.890000,20.960000 +06/13/2006,20.950000,23.810000,20.270000,23.810000 +06/14/2006,23.450000,23.490000,21.450000,21.460000 +06/15/2006,21.050000,21.140000,15.650000,15.900000 +06/16/2006,16.560000,18.130000,16.520000,17.250000 +06/19/2006,16.060000,18.100000,15.730000,17.830000 +06/20/2006,17.520000,17.650000,16.390000,16.690000 +06/21/2006,16.670000,16.720000,14.880000,15.520000 +06/22/2006,15.950000,16.660000,15.560000,15.880000 +06/23/2006,16.410000,16.580000,14.940000,15.890000 +06/26/2006,16.550000,16.610000,15.490000,15.620000 +06/27/2006,15.580000,16.550000,15.270000,16.400000 +06/28/2006,16.020000,17.000000,15.780000,15.790000 +06/29/2006,15.280000,15.300000,12.930000,13.030000 +06/30/2006,12.900000,13.470000,12.740000,13.080000 +07/03/2006,13.290000,13.510000,12.770000,13.050000 +07/05/2006,13.920000,14.770000,13.860000,14.150000 +07/06/2006,14.040000,14.040000,13.250000,13.650000 +07/07/2006,13.900000,14.450000,13.430000,13.970000 +07/10/2006,14.170000,14.500000,13.670000,14.020000 +07/11/2006,14.310000,14.680000,13.100000,13.140000 +07/12/2006,13.390000,14.850000,13.260000,14.490000 +07/13/2006,15.170000,17.830000,15.170000,17.790000 +07/14/2006,17.570000,18.790000,17.280000,18.050000 +07/17/2006,18.730000,18.760000,17.750000,18.640000 +07/18/2006,18.200000,19.580000,17.660000,17.740000 +07/19/2006,17.620000,17.620000,14.470000,15.550000 +07/20/2006,15.100000,16.370000,14.870000,16.210000 +07/21/2006,16.230000,17.560000,16.230000,17.400000 +07/24/2006,17.080000,17.080000,14.890000,14.980000 +07/25/2006,15.440000,15.680000,14.310000,14.850000 +07/26/2006,15.040000,15.210000,14.090000,14.620000 +07/27/2006,14.260000,15.390000,14.070000,14.940000 +07/28/2006,14.730000,14.750000,14.060000,14.330000 +07/31/2006,15.010000,15.130000,14.860000,14.950000 +08/01/2006,15.490000,16.150000,15.030000,15.050000 +08/02/2006,14.930000,14.930000,13.920000,14.340000 +08/03/2006,15.100000,15.190000,14.200000,14.460000 +08/04/2006,14.030000,14.910000,13.650000,14.340000 +08/07/2006,14.980000,15.530000,14.970000,15.230000 +08/08/2006,15.200000,15.550000,14.860000,15.230000 +08/09/2006,14.760000,15.410000,14.070000,15.200000 +08/10/2006,15.560000,15.730000,14.450000,14.460000 +08/11/2006,14.720000,14.850000,14.300000,14.300000 +08/14/2006,14.150000,14.430000,13.410000,14.260000 +08/15/2006,13.570000,13.720000,13.150000,13.420000 +08/16/2006,12.690000,12.950000,12.110000,12.410000 +08/17/2006,12.690000,12.720000,12.210000,12.240000 +08/18/2006,12.110000,12.520000,11.570000,11.640000 +08/21/2006,12.400000,12.620000,12.210000,12.220000 +08/22/2006,12.420000,12.420000,11.930000,12.190000 +08/23/2006,12.260000,12.730000,12.160000,12.400000 +08/24/2006,12.240000,12.580000,12.210000,12.400000 +08/25/2006,12.410000,12.470000,12.080000,12.310000 +08/28/2006,12.920000,12.920000,12.070000,12.180000 +08/29/2006,12.270000,12.830000,12.210000,12.280000 +08/30/2006,12.140000,12.350000,12.100000,12.220000 +08/31/2006,12.230000,12.330000,12.070000,12.310000 +09/01/2006,12.140000,12.330000,11.910000,11.960000 +09/05/2006,12.800000,12.860000,12.430000,12.630000 +09/06/2006,13.060000,13.880000,13.060000,13.740000 +09/07/2006,14.070000,14.490000,13.670000,13.880000 +09/08/2006,13.790000,13.800000,13.050000,13.160000 +09/11/2006,13.950000,13.950000,12.750000,12.990000 +09/12/2006,13.040000,13.140000,11.550000,11.920000 +09/13/2006,10.720000,12.540000,10.540000,11.180000 +09/14/2006,11.360000,12.020000,10.740000,11.550000 +09/15/2006,11.490000,12.540000,11.400000,11.760000 +09/18/2006,12.280000,12.410000,11.580000,11.780000 +09/19/2006,11.960000,12.690000,11.860000,11.980000 +09/20/2006,11.750000,11.750000,11.340000,11.390000 +09/21/2006,11.430000,12.600000,11.280000,12.250000 +09/22/2006,12.470000,13.280000,12.470000,12.590000 +09/25/2006,12.970000,13.410000,11.930000,12.120000 +09/26/2006,12.230000,12.230000,11.510000,11.530000 +09/27/2006,11.650000,11.900000,11.420000,11.580000 +09/28/2006,11.640000,12.060000,11.590000,11.720000 +09/29/2006,11.750000,12.100000,11.720000,11.980000 +10/02/2006,12.450000,12.720000,12.110000,12.570000 +10/03/2006,12.680000,12.910000,11.970000,12.240000 +10/04/2006,12.640000,12.640000,11.620000,11.860000 +10/05/2006,11.940000,12.060000,11.650000,11.980000 +10/06/2006,11.990000,12.170000,11.550000,11.560000 +10/09/2006,12.070000,12.090000,11.580000,11.680000 +10/10/2006,11.770000,11.890000,11.470000,11.520000 +10/11/2006,11.750000,12.030000,11.310000,11.620000 +10/12/2006,11.500000,11.510000,11.090000,11.090000 +10/13/2006,11.170000,11.350000,10.750000,10.750000 +10/16/2006,11.070000,11.200000,10.910000,11.090000 +10/17/2006,11.360000,12.030000,11.350000,11.730000 +10/18/2006,11.440000,11.830000,11.330000,11.340000 +10/19/2006,11.510000,11.570000,10.780000,10.900000 +10/20/2006,11.060000,11.230000,10.440000,10.630000 +10/23/2006,11.150000,11.250000,10.620000,11.080000 +10/24/2006,11.250000,11.270000,10.780000,10.780000 +10/25/2006,10.880000,10.880000,10.600000,10.660000 +10/26/2006,10.560000,10.960000,10.470000,10.560000 +10/27/2006,10.660000,10.990000,10.530000,10.800000 +10/30/2006,11.360000,11.430000,10.920000,11.200000 +10/31/2006,11.100000,11.390000,10.990000,11.100000 +11/01/2006,10.930000,11.680000,10.890000,11.510000 +11/02/2006,11.610000,11.760000,11.410000,11.420000 +11/03/2006,11.160000,11.430000,10.340000,11.160000 +11/06/2006,11.390000,11.410000,10.990000,11.160000 +11/07/2006,11.060000,11.190000,10.870000,11.090000 +11/08/2006,11.410000,11.490000,10.700000,10.750000 +11/09/2006,10.650000,11.070000,10.570000,11.010000 +11/10/2006,11.010000,11.120000,10.770000,10.790000 +11/13/2006,11.190000,11.260000,10.690000,10.860000 +11/14/2006,10.890000,11.310000,10.140000,10.500000 +11/15/2006,10.470000,10.610000,10.130000,10.310000 +11/16/2006,10.130000,10.350000,10.040000,10.160000 +11/17/2006,10.370000,10.480000,10.050000,10.050000 +11/20/2006,10.420000,10.480000,9.910000,9.970000 +11/21/2006,10.050000,10.060000,9.840000,9.900000 +11/22/2006,10.020000,10.150000,9.810000,10.140000 +11/24/2006,10.810000,10.860000,10.560000,10.730000 +11/27/2006,11.260000,12.330000,11.140000,12.300000 +11/28/2006,12.480000,12.550000,11.560000,11.620000 +11/29/2006,11.410000,11.430000,10.670000,10.830000 +11/30/2006,10.880000,11.300000,10.580000,10.910000 +12/01/2006,11.070000,12.280000,10.960000,11.660000 +12/04/2006,12.010000,12.010000,10.980000,11.230000 +12/05/2006,11.130000,11.590000,10.850000,11.270000 +12/06/2006,11.390000,11.550000,11.190000,11.330000 +12/07/2006,11.350000,12.680000,11.170000,12.670000 +12/08/2006,12.580000,12.670000,11.910000,12.070000 +12/11/2006,11.880000,11.930000,10.710000,10.710000 +12/12/2006,11.200000,11.390000,10.350000,10.650000 +12/13/2006,10.450000,10.580000,10.150000,10.180000 +12/14/2006,10.740000,10.750000,9.640000,9.970000 +12/15/2006,9.680000,10.070000,9.390000,10.050000 +12/18/2006,10.640000,10.910000,10.400000,10.600000 +12/19/2006,11.060000,11.310000,10.270000,10.300000 +12/20/2006,10.300000,10.330000,10.030000,10.260000 +12/21/2006,10.360000,10.890000,10.130000,10.530000 +12/22/2006,10.590000,11.460000,10.590000,11.360000 +12/26/2006,12.030000,12.030000,11.240000,11.260000 +12/27/2006,11.120000,11.120000,10.590000,10.640000 +12/28/2006,10.840000,11.060000,10.730000,10.990000 +12/29/2006,10.950000,11.650000,10.710000,11.560000 +01/03/2007,12.160000,12.750000,11.530000,12.040000 +01/04/2007,12.400000,12.420000,11.280000,11.510000 +01/05/2007,11.840000,12.250000,11.680000,12.140000 +01/08/2007,12.480000,12.830000,11.780000,12.000000 +01/09/2007,11.860000,12.470000,11.690000,11.910000 +01/10/2007,12.340000,12.500000,11.430000,11.470000 +01/11/2007,11.420000,11.480000,10.500000,10.870000 +01/12/2007,10.930000,10.930000,10.140000,10.150000 +01/16/2007,10.640000,10.890000,10.400000,10.740000 +01/17/2007,10.900000,10.900000,10.350000,10.590000 +01/18/2007,10.650000,11.040000,10.450000,10.850000 +01/19/2007,10.800000,11.030000,10.240000,10.400000 +01/22/2007,10.770000,11.080000,10.620000,10.770000 +01/23/2007,10.770000,10.940000,10.220000,10.340000 +01/24/2007,10.410000,10.410000,9.870000,9.890000 +01/25/2007,9.990000,11.380000,9.950000,11.220000 +01/26/2007,10.950000,11.600000,10.920000,11.130000 +01/29/2007,11.500000,11.600000,10.920000,11.450000 +01/30/2007,11.280000,11.490000,10.950000,10.960000 +01/31/2007,11.090000,11.260000,10.270000,10.420000 +02/01/2007,10.320000,10.430000,10.140000,10.310000 +02/02/2007,10.300000,10.360000,9.960000,10.080000 +02/05/2007,10.530000,10.700000,10.440000,10.550000 +02/06/2007,10.550000,10.880000,10.440000,10.650000 +02/07/2007,10.310000,10.560000,10.240000,10.320000 +02/08/2007,10.490000,10.910000,10.400000,10.440000 +02/09/2007,10.420000,11.560000,10.250000,11.100000 +02/12/2007,11.330000,11.880000,11.300000,11.610000 +02/13/2007,11.420000,11.420000,10.330000,10.340000 +02/14/2007,10.190000,10.260000,9.700000,10.230000 +02/15/2007,10.280000,10.320000,10.050000,10.220000 +02/16/2007,10.420000,10.440000,9.980000,10.020000 +02/20/2007,10.620000,10.720000,10.140000,10.240000 +02/21/2007,10.480000,10.530000,10.170000,10.200000 +02/22/2007,10.230000,10.520000,10.010000,10.180000 +02/23/2007,10.410000,10.700000,10.360000,10.580000 +02/26/2007,10.590000,11.440000,10.520000,11.150000 +02/27/2007,12.120000,19.010000,12.100000,18.310000 +02/28/2007,17.210000,17.290000,14.500000,15.420000 +03/01/2007,17.760000,19.400000,15.360000,15.820000 +03/02/2007,16.700000,18.630000,16.040000,18.610000 +03/05/2007,20.400000,20.410000,18.130000,19.630000 +03/06/2007,18.310000,18.340000,15.760000,15.960000 +03/07/2007,16.250000,16.270000,14.520000,15.240000 +03/08/2007,14.340000,14.700000,13.480000,14.290000 +03/09/2007,13.700000,14.620000,13.670000,14.090000 +03/12/2007,14.960000,14.960000,13.760000,13.990000 +03/13/2007,14.870000,18.420000,14.600000,18.130000 +03/14/2007,17.630000,21.250000,16.750000,17.270000 +03/15/2007,16.910000,16.910000,15.270000,16.430000 +03/16/2007,15.380000,17.710000,15.290000,16.790000 +03/19/2007,15.820000,15.820000,14.580000,14.590000 +03/20/2007,15.010000,15.160000,13.250000,13.270000 +03/21/2007,13.270000,13.670000,11.210000,12.190000 +03/22/2007,12.290000,12.950000,12.040000,12.930000 +03/23/2007,13.130000,13.180000,12.460000,12.950000 +03/26/2007,13.390000,14.700000,12.910000,13.160000 +03/27/2007,13.350000,13.900000,13.350000,13.480000 +03/28/2007,14.280000,15.510000,14.220000,14.980000 +03/29/2007,14.450000,16.050000,14.340000,15.140000 +03/30/2007,14.940000,15.820000,14.140000,14.640000 +04/02/2007,14.910000,15.460000,14.400000,14.530000 +04/03/2007,14.020000,14.060000,12.810000,13.460000 +04/04/2007,13.820000,13.910000,13.200000,13.240000 +04/05/2007,13.570000,13.660000,12.690000,13.230000 +04/09/2007,13.260000,13.560000,12.890000,13.140000 +04/10/2007,13.330000,13.330000,12.560000,12.680000 +04/11/2007,12.720000,14.080000,12.720000,13.490000 +04/12/2007,13.650000,14.150000,12.580000,12.710000 +04/13/2007,12.670000,13.000000,12.130000,12.200000 +04/16/2007,11.860000,12.100000,11.460000,11.980000 +04/17/2007,11.700000,12.170000,11.500000,12.140000 +04/18/2007,12.480000,12.570000,11.950000,12.420000 +04/19/2007,13.160000,13.270000,12.410000,12.540000 +04/20/2007,12.030000,12.670000,11.970000,12.070000 +04/23/2007,12.600000,13.080000,12.480000,13.040000 +04/24/2007,13.120000,13.890000,13.040000,13.120000 +04/25/2007,12.740000,13.230000,12.580000,13.210000 +04/26/2007,13.160000,13.670000,12.670000,12.790000 +04/27/2007,13.120000,13.260000,12.410000,12.450000 +04/30/2007,12.900000,14.310000,12.780000,14.220000 +05/01/2007,14.100000,14.600000,13.480000,13.510000 +05/02/2007,13.520000,13.520000,12.550000,13.080000 +05/03/2007,13.010000,13.360000,12.890000,13.090000 +05/04/2007,12.910000,13.360000,12.590000,12.910000 +05/07/2007,13.340000,13.370000,13.110000,13.150000 +05/08/2007,13.480000,13.690000,13.160000,13.210000 +05/09/2007,13.430000,13.500000,12.540000,12.880000 +05/10/2007,13.310000,13.850000,12.890000,13.600000 +05/11/2007,13.470000,13.470000,12.630000,12.950000 +05/14/2007,13.260000,14.430000,13.010000,13.960000 +05/15/2007,13.880000,14.300000,13.270000,14.010000 +05/16/2007,14.020000,14.180000,13.470000,13.500000 +05/17/2007,13.620000,13.820000,13.250000,13.510000 +05/18/2007,13.010000,13.220000,12.690000,12.760000 +05/21/2007,13.240000,13.300000,12.700000,13.300000 +05/22/2007,12.090000,13.380000,12.080000,13.060000 +05/23/2007,12.770000,13.280000,12.550000,13.240000 +05/24/2007,13.150000,14.360000,12.920000,14.080000 +05/25/2007,13.810000,13.870000,13.230000,13.340000 +05/29/2007,13.860000,13.950000,13.310000,13.530000 +05/30/2007,14.180000,14.290000,12.820000,12.830000 +05/31/2007,12.780000,13.180000,12.620000,13.050000 +06/01/2007,12.770000,13.010000,12.430000,12.780000 +06/04/2007,13.470000,13.540000,13.210000,13.290000 +06/05/2007,13.580000,14.170000,13.540000,13.630000 +06/06/2007,14.070000,15.060000,14.060000,14.870000 +06/07/2007,15.080000,17.090000,14.890000,17.060000 +06/08/2007,16.750000,16.780000,14.730000,14.840000 +06/11/2007,15.310000,15.470000,14.240000,14.710000 +06/12/2007,15.460000,16.700000,14.770000,16.670000 +06/13/2007,16.050000,16.100000,14.670000,14.730000 +06/14/2007,14.760000,14.820000,13.590000,13.640000 +06/15/2007,13.010000,13.970000,12.580000,13.940000 +06/18/2007,14.420000,14.510000,13.350000,13.420000 +06/19/2007,13.780000,13.800000,12.790000,12.850000 +06/20/2007,12.770000,14.760000,12.750000,14.670000 +06/21/2007,14.800000,15.560000,14.170000,14.210000 +06/22/2007,14.450000,16.580000,14.310000,15.750000 +06/25/2007,16.500000,17.240000,15.410000,16.650000 +06/26/2007,16.460000,18.890000,16.210000,18.890000 +06/27/2007,18.870000,18.980000,15.440000,15.530000 +06/28/2007,15.700000,15.710000,14.980000,15.540000 +06/29/2007,15.250000,17.130000,14.620000,16.230000 +07/02/2007,16.480000,16.480000,15.310000,15.400000 +07/03/2007,14.960000,15.300000,14.850000,14.920000 +07/05/2007,15.370000,15.950000,15.170000,15.480000 +07/06/2007,15.360000,15.590000,14.670000,14.720000 +07/09/2007,15.340000,15.690000,15.030000,15.160000 +07/10/2007,15.880000,17.680000,15.830000,17.570000 +07/11/2007,17.690000,17.910000,16.640000,16.640000 +07/12/2007,16.390000,16.390000,14.930000,15.540000 +07/13/2007,15.390000,15.510000,14.790000,15.150000 +07/16/2007,15.570000,15.830000,15.270000,15.590000 +07/17/2007,15.580000,15.780000,15.310000,15.630000 +07/18/2007,16.380000,17.060000,15.950000,16.000000 +07/19/2007,15.430000,15.620000,15.060000,15.230000 +07/20/2007,15.390000,18.530000,15.360000,16.950000 +07/23/2007,16.620000,17.090000,16.390000,16.810000 +07/24/2007,17.630000,19.090000,17.480000,18.550000 +07/25/2007,17.770000,19.460000,17.380000,18.100000 +07/26/2007,19.410000,23.360000,19.300000,20.740000 +07/27/2007,20.340000,24.170000,19.600000,24.170000 +07/30/2007,23.640000,23.640000,20.860000,20.870000 +07/31/2007,20.080000,23.930000,19.680000,23.520000 +08/01/2007,23.710000,26.220000,23.260000,23.670000 +08/02/2007,22.940000,23.000000,21.200000,21.220000 +08/03/2007,21.520000,25.550000,21.090000,25.160000 +08/06/2007,25.320000,26.470000,22.440000,22.940000 +08/07/2007,23.330000,23.740000,20.790000,21.560000 +08/08/2007,20.970000,22.950000,19.330000,21.450000 +08/09/2007,24.460000,26.900000,23.840000,26.480000 +08/10/2007,28.040000,29.840000,26.910000,28.300000 +08/13/2007,28.020000,28.020000,25.480000,26.570000 +08/14/2007,25.560000,28.290000,25.310000,27.680000 +08/15/2007,28.220000,31.760000,26.160000,30.670000 +08/16/2007,32.680000,37.500000,30.440000,30.830000 +08/17/2007,25.250000,31.460000,25.230000,29.990000 +08/20/2007,29.870000,29.950000,25.800000,26.330000 +08/21/2007,26.390000,26.720000,24.770000,25.250000 +08/22/2007,24.330000,24.440000,22.870000,22.890000 +08/23/2007,22.470000,23.610000,22.050000,22.620000 +08/24/2007,22.750000,23.030000,20.440000,20.720000 +08/27/2007,22.240000,22.830000,21.960000,22.720000 +08/28/2007,23.870000,26.570000,23.720000,26.300000 +08/29/2007,25.870000,26.020000,23.440000,23.810000 +08/30/2007,25.400000,25.580000,23.690000,25.060000 +08/31/2007,23.530000,24.070000,22.470000,23.380000 +09/04/2007,21.930000,24.810000,21.710000,22.780000 +09/05/2007,24.030000,25.450000,23.800000,24.580000 +09/06/2007,24.430000,25.140000,23.660000,23.990000 +09/07/2007,25.980000,26.970000,25.600000,26.230000 +09/10/2007,26.910000,28.820000,26.560000,27.380000 +09/11/2007,27.110000,27.210000,25.190000,25.270000 +09/12/2007,25.970000,26.210000,24.570000,24.960000 +09/13/2007,25.010000,25.320000,23.830000,24.760000 +09/14/2007,26.380000,26.480000,24.680000,24.920000 +09/17/2007,26.450000,27.080000,25.800000,26.480000 +09/18/2007,25.790000,26.230000,20.270000,20.350000 +09/19/2007,19.960000,20.570000,19.170000,20.030000 +09/20/2007,20.470000,20.820000,19.550000,20.450000 +09/21/2007,19.440000,19.810000,18.370000,19.000000 +09/24/2007,19.040000,19.620000,18.320000,19.370000 +09/25/2007,20.250000,20.460000,18.440000,18.600000 +09/26/2007,17.920000,18.180000,17.300000,17.630000 +09/27/2007,17.120000,17.470000,16.950000,17.000000 +09/28/2007,17.230000,18.220000,16.910000,18.000000 +10/01/2007,18.440000,18.440000,17.110000,17.840000 +10/02/2007,17.670000,18.890000,17.600000,18.490000 +10/03/2007,18.880000,18.990000,18.310000,18.800000 +10/04/2007,18.650000,18.650000,18.260000,18.440000 +10/05/2007,17.550000,17.560000,16.440000,16.910000 +10/08/2007,17.730000,17.830000,17.320000,17.460000 +10/09/2007,17.150000,17.280000,16.090000,16.120000 +10/10/2007,16.420000,17.350000,16.390000,16.670000 +10/11/2007,16.150000,19.730000,16.080000,18.880000 +10/12/2007,18.680000,18.740000,17.490000,17.730000 +10/15/2007,18.140000,20.010000,17.950000,19.250000 +10/16/2007,20.070000,20.750000,19.730000,20.020000 +10/17/2007,18.760000,20.110000,18.280000,18.540000 +10/18/2007,19.160000,19.560000,17.730000,18.500000 +10/19/2007,19.150000,22.960000,19.020000,22.960000 +10/22/2007,23.890000,23.940000,21.380000,21.640000 +10/23/2007,21.290000,21.430000,20.130000,20.410000 +10/24/2007,21.160000,24.150000,20.590000,20.800000 +10/25/2007,20.840000,22.400000,20.040000,21.170000 +10/26/2007,19.840000,20.970000,19.480000,19.560000 +10/29/2007,19.930000,20.240000,16.840000,19.870000 +10/30/2007,20.460000,21.150000,20.310000,21.070000 +10/31/2007,20.530000,22.090000,18.300000,18.530000 +11/01/2007,19.890000,24.150000,17.380000,23.210000 +11/02/2007,22.560000,25.170000,22.560000,23.010000 +11/05/2007,25.250000,25.460000,23.610000,24.310000 +11/06/2007,23.500000,23.740000,21.240000,21.390000 +11/07/2007,23.150000,26.850000,22.750000,26.490000 +11/08/2007,26.450000,29.150000,25.320000,26.160000 +11/09/2007,27.960000,28.840000,26.210000,28.500000 +11/12/2007,30.570000,31.090000,24.470000,31.090000 +11/13/2007,27.470000,27.500000,23.820000,24.100000 +11/14/2007,23.350000,27.030000,23.070000,25.940000 +11/15/2007,26.960000,29.310000,25.980000,28.060000 +11/16/2007,27.040000,28.120000,25.120000,25.490000 +11/19/2007,26.740000,27.180000,25.740000,26.010000 +11/20/2007,26.120000,27.350000,23.620000,24.880000 +11/21/2007,26.300000,27.770000,24.550000,26.840000 +11/23/2007,26.420000,26.420000,25.350000,25.610000 +11/26/2007,26.460000,28.950000,25.840000,28.910000 +11/27/2007,28.140000,28.240000,26.230000,26.280000 +11/28/2007,25.140000,25.140000,23.550000,24.110000 +11/29/2007,24.590000,24.610000,23.350000,23.970000 +11/30/2007,22.670000,23.390000,22.000000,22.870000 +12/03/2007,23.590000,24.490000,23.400000,23.610000 +12/04/2007,24.300000,24.590000,23.320000,23.790000 +12/05/2007,22.720000,23.030000,21.870000,22.530000 +12/06/2007,22.680000,22.750000,19.650000,20.960000 +12/07/2007,20.690000,21.010000,20.290000,20.850000 +12/10/2007,21.160000,21.460000,20.360000,20.740000 +12/11/2007,20.690000,23.700000,19.770000,23.590000 +12/12/2007,20.820000,24.220000,20.490000,22.470000 +12/13/2007,23.530000,24.040000,22.410000,22.560000 +12/14/2007,23.530000,23.530000,22.260000,23.270000 +12/17/2007,24.130000,24.860000,23.420000,24.520000 +12/18/2007,23.700000,24.600000,22.410000,22.640000 +12/19/2007,22.620000,22.680000,21.300000,21.680000 +12/20/2007,21.020000,21.670000,20.580000,20.580000 +12/21/2007,19.820000,19.820000,18.280000,18.470000 +12/24/2007,19.080000,19.420000,18.480000,18.600000 +12/26/2007,19.370000,19.470000,18.600000,18.660000 +12/27/2007,19.150000,20.510000,19.150000,20.260000 +12/28/2007,19.590000,21.050000,19.440000,20.740000 +12/31/2007,21.870000,22.750000,21.790000,22.500000 +01/02/2008,22.580000,24.050000,22.400000,23.170000 +01/03/2008,23.110000,23.270000,22.110000,22.490000 +01/04/2008,23.500000,24.300000,23.250000,23.940000 +01/07/2008,24.620000,24.880000,23.300000,23.790000 +01/08/2008,23.270000,25.600000,22.630000,25.430000 +01/09/2008,25.610000,25.950000,23.900000,24.120000 +01/10/2008,24.560000,24.610000,22.620000,23.450000 +01/11/2008,24.040000,24.410000,23.220000,23.680000 +01/14/2008,23.760000,23.930000,22.650000,22.900000 +01/15/2008,24.100000,24.590000,22.970000,23.340000 +01/16/2008,23.900000,24.380000,22.850000,24.380000 +01/17/2008,24.110000,28.510000,23.870000,28.460000 +01/18/2008,27.550000,29.300000,26.270000,27.180000 +01/22/2008,35.120000,37.570000,29.710000,31.010000 +01/23/2008,33.840000,34.420000,22.820000,29.020000 +01/24/2008,28.070000,28.480000,27.030000,27.780000 +01/25/2008,26.190000,29.760000,25.930000,29.080000 +01/28/2008,29.670000,30.260000,27.570000,27.780000 +01/29/2008,26.610000,27.960000,26.550000,27.320000 +01/30/2008,27.530000,28.340000,24.740000,27.620000 +01/31/2008,28.780000,28.810000,25.450000,26.200000 +02/01/2008,25.660000,25.750000,24.020000,24.020000 +02/04/2008,25.090000,26.030000,24.850000,25.990000 +02/05/2008,27.200000,28.490000,27.200000,28.240000 +02/06/2008,27.750000,29.310000,27.040000,28.970000 +02/07/2008,29.510000,29.700000,26.780000,27.660000 +02/08/2008,27.980000,28.890000,27.220000,28.010000 +02/11/2008,29.140000,29.570000,27.320000,27.600000 +02/12/2008,26.560000,27.170000,25.250000,26.330000 +02/13/2008,25.670000,26.060000,24.570000,24.880000 +02/14/2008,24.640000,25.640000,23.980000,25.540000 +02/15/2008,25.580000,25.670000,24.450000,25.020000 +02/19/2008,25.390000,26.590000,24.730000,25.590000 +02/20/2008,25.600000,26.950000,24.210000,24.400000 +02/21/2008,24.420000,25.450000,23.740000,25.120000 +02/22/2008,24.990000,25.930000,23.620000,24.060000 +02/25/2008,24.060000,25.070000,22.690000,23.030000 +02/26/2008,23.440000,23.450000,21.640000,21.900000 +02/27/2008,21.900000,23.010000,21.830000,22.690000 +02/28/2008,22.690000,23.790000,22.690000,23.530000 +02/29/2008,23.540000,26.910000,23.540000,26.540000 +03/03/2008,27.540000,28.130000,26.270000,26.280000 +03/04/2008,27.190000,27.420000,25.510000,25.520000 +03/05/2008,25.520000,25.770000,23.300000,24.600000 +03/06/2008,25.450000,27.900000,25.040000,27.550000 +03/07/2008,28.520000,29.290000,22.290000,27.490000 +03/10/2008,28.130000,29.730000,27.920000,29.380000 +03/11/2008,27.250000,28.640000,26.350000,26.360000 +03/12/2008,26.390000,27.250000,24.900000,27.220000 +03/13/2008,27.220000,29.620000,25.650000,27.290000 +03/14/2008,27.310000,32.890000,26.020000,31.160000 +03/17/2008,35.140000,35.600000,31.100000,32.240000 +03/18/2008,32.240000,32.240000,25.580000,25.790000 +03/19/2008,25.780000,29.950000,25.160000,29.840000 +03/20/2008,29.840000,29.840000,25.800000,26.620000 +03/24/2008,26.640000,27.040000,24.750000,25.730000 +03/25/2008,25.750000,26.420000,25.170000,25.720000 +03/26/2008,25.750000,26.850000,25.510000,26.080000 +03/27/2008,25.550000,25.980000,24.910000,25.880000 +03/28/2008,25.810000,25.960000,25.040000,25.710000 +03/31/2008,25.710000,26.770000,25.350000,25.610000 +04/01/2008,25.610000,25.610000,22.520000,22.680000 +04/02/2008,22.640000,23.650000,22.390000,23.430000 +04/03/2008,23.840000,24.150000,23.000000,23.210000 +04/04/2008,23.000000,23.310000,21.750000,22.450000 +04/07/2008,22.450000,22.730000,21.210000,22.420000 +04/08/2008,22.420000,23.160000,22.360000,22.360000 +04/09/2008,22.360000,23.570000,22.360000,22.810000 +04/10/2008,22.800000,23.220000,21.630000,21.980000 +04/11/2008,23.030000,23.590000,22.650000,23.460000 +04/14/2008,23.460000,24.350000,23.460000,23.820000 +04/15/2008,23.840000,23.990000,22.720000,22.780000 +04/16/2008,22.030000,22.090000,20.500000,20.530000 +04/17/2008,21.130000,21.540000,20.350000,20.370000 +04/18/2008,20.370000,20.370000,19.210000,20.130000 +04/21/2008,20.150000,21.120000,20.150000,20.500000 +04/22/2008,20.470000,21.600000,20.470000,20.870000 +04/23/2008,20.630000,20.950000,19.880000,20.260000 +04/24/2008,20.260000,20.770000,19.210000,20.060000 +04/25/2008,19.600000,20.360000,19.280000,19.590000 +04/28/2008,20.140000,20.250000,19.370000,19.640000 +04/29/2008,19.860000,20.540000,19.630000,20.240000 +04/30/2008,20.240000,20.810000,19.690000,20.790000 +05/01/2008,20.780000,20.830000,18.870000,18.880000 +05/02/2008,18.870000,19.110000,17.970000,18.180000 +05/05/2008,18.680000,19.290000,18.680000,18.900000 +05/06/2008,18.900000,19.570000,18.110000,18.210000 +05/07/2008,18.480000,19.980000,18.420000,19.730000 +05/08/2008,19.730000,19.920000,18.620000,19.400000 +05/09/2008,19.980000,20.010000,19.300000,19.410000 +05/12/2008,19.170000,19.480000,16.920000,17.790000 +05/13/2008,17.790000,19.630000,17.760000,17.980000 +05/14/2008,17.980000,17.980000,16.190000,17.660000 +05/15/2008,17.650000,17.840000,16.250000,16.300000 +05/16/2008,16.300000,17.920000,16.300000,16.470000 +05/19/2008,16.470000,17.890000,15.820000,17.010000 +05/20/2008,17.020000,18.420000,17.020000,17.580000 +05/21/2008,17.640000,18.890000,17.010000,18.590000 +05/22/2008,18.920000,19.110000,17.820000,18.050000 +05/23/2008,18.580000,19.800000,18.380000,19.550000 +05/27/2008,20.780000,20.950000,19.420000,19.640000 +05/28/2008,19.640000,20.030000,19.010000,19.070000 +05/29/2008,19.080000,19.170000,17.540000,18.140000 +05/30/2008,18.140000,18.210000,17.560000,17.830000 +06/02/2008,17.830000,20.450000,17.830000,19.830000 +06/03/2008,19.800000,21.000000,18.890000,20.240000 +06/04/2008,20.640000,21.310000,19.760000,20.800000 +06/05/2008,20.540000,20.590000,18.620000,18.630000 +06/06/2008,18.630000,23.790000,18.630000,23.560000 +06/09/2008,23.560000,24.470000,20.780000,23.120000 +06/10/2008,24.370000,24.420000,22.310000,23.180000 +06/11/2008,23.440000,24.300000,22.860000,24.120000 +06/12/2008,23.610000,23.980000,19.460000,23.330000 +06/13/2008,23.020000,23.140000,21.040000,21.220000 +06/16/2008,21.220000,22.840000,20.730000,20.950000 +06/17/2008,20.960000,21.420000,20.020000,21.130000 +06/18/2008,21.670000,22.860000,21.260000,22.240000 +06/19/2008,22.240000,22.610000,20.910000,21.580000 +06/20/2008,21.580000,23.700000,21.580000,22.870000 +06/23/2008,22.890000,23.140000,22.520000,22.640000 +06/24/2008,22.690000,23.480000,21.680000,22.420000 +06/25/2008,22.420000,22.420000,20.340000,21.140000 +06/26/2008,22.230000,23.990000,22.150000,23.930000 +06/27/2008,23.750000,24.560000,23.300000,23.440000 +06/30/2008,24.250000,24.260000,23.270000,23.950000 +07/01/2008,25.140000,25.570000,23.640000,23.650000 +07/02/2008,23.400000,25.960000,22.700000,25.920000 +07/03/2008,25.920000,26.080000,24.440000,24.790000 +07/07/2008,25.480000,26.910000,24.730000,25.780000 +07/08/2008,25.720000,26.050000,23.020000,23.150000 +07/09/2008,23.160000,25.390000,22.590000,25.230000 +07/10/2008,25.220000,26.620000,25.070000,25.590000 +07/11/2008,25.560000,29.440000,25.560000,27.490000 +07/14/2008,27.490000,29.300000,26.900000,28.480000 +07/15/2008,28.470000,30.810000,27.010000,28.540000 +07/16/2008,28.190000,38.840000,24.870000,25.100000 +07/17/2008,24.580000,25.500000,23.990000,25.010000 +07/18/2008,25.010000,25.190000,23.780000,24.050000 +07/21/2008,24.050000,24.580000,23.040000,23.050000 +07/22/2008,24.020000,24.080000,21.050000,21.180000 +07/23/2008,21.230000,22.080000,20.730000,21.310000 +07/24/2008,21.310000,23.610000,21.310000,23.440000 +07/25/2008,23.450000,23.450000,22.310000,22.910000 +07/28/2008,22.910000,24.620000,22.910000,24.230000 +07/29/2008,24.200000,24.220000,21.960000,22.030000 +07/30/2008,22.030000,22.310000,20.990000,21.210000 +07/31/2008,22.330000,22.960000,21.450000,22.940000 +08/01/2008,22.660000,23.370000,22.350000,22.570000 +08/04/2008,23.530000,23.860000,22.940000,23.490000 +08/05/2008,22.990000,22.990000,20.060000,21.140000 +08/06/2008,21.660000,21.660000,19.750000,20.230000 +08/07/2008,20.230000,21.460000,20.230000,21.150000 +08/08/2008,21.150000,21.690000,20.110000,20.660000 +08/11/2008,20.660000,20.960000,19.660000,20.120000 +08/12/2008,20.640000,21.510000,20.380000,21.170000 +08/13/2008,21.570000,22.110000,20.800000,21.550000 +08/14/2008,22.300000,22.300000,20.070000,20.340000 +08/15/2008,20.240000,20.650000,19.570000,19.580000 +08/18/2008,19.580000,21.440000,19.580000,20.980000 +08/19/2008,21.760000,22.140000,21.280000,21.280000 +08/20/2008,21.300000,21.670000,20.390000,20.420000 +08/21/2008,20.430000,21.080000,18.940000,19.820000 +08/22/2008,19.830000,19.830000,18.640000,18.810000 +08/25/2008,18.780000,21.220000,18.780000,20.970000 +08/26/2008,20.980000,21.270000,20.480000,20.490000 +08/27/2008,20.480000,20.670000,19.530000,19.760000 +08/28/2008,19.360000,19.660000,19.220000,19.430000 +08/29/2008,19.430000,20.710000,19.430000,20.650000 +09/02/2008,20.650000,22.300000,20.470000,21.990000 +09/03/2008,21.990000,22.300000,21.390000,21.430000 +09/04/2008,22.020000,24.150000,21.910000,24.030000 +09/05/2008,24.540000,24.710000,22.970000,23.060000 +09/08/2008,22.220000,24.060000,22.120000,22.640000 +09/09/2008,22.690000,25.680000,22.580000,25.470000 +09/10/2008,25.470000,25.480000,23.800000,24.520000 +09/11/2008,25.380000,26.250000,24.390000,24.390000 +09/12/2008,24.800000,26.670000,24.800000,25.660000 +09/15/2008,25.660000,31.870000,25.660000,31.700000 +09/16/2008,31.700000,33.700000,30.240000,30.300000 +09/17/2008,30.250000,36.400000,30.250000,36.220000 +09/18/2008,36.100000,42.160000,33.100000,33.100000 +09/19/2008,33.070000,33.080000,27.950000,32.070000 +09/22/2008,32.400000,34.220000,30.810000,33.850000 +09/23/2008,33.850000,36.080000,32.630000,35.720000 +09/24/2008,35.700000,36.710000,34.160000,35.190000 +09/25/2008,35.190000,35.190000,32.450000,32.820000 +09/26/2008,32.820000,36.400000,32.820000,34.740000 +09/29/2008,36.920000,48.400000,36.920000,46.720000 +09/30/2008,43.770000,43.800000,38.860000,39.390000 +10/01/2008,39.390000,42.380000,39.390000,39.810000 +10/02/2008,39.820000,46.480000,39.820000,45.260000 +10/03/2008,45.220000,45.520000,41.510000,45.140000 +10/06/2008,45.120000,58.240000,45.120000,52.050000 +10/07/2008,52.050000,54.190000,47.030000,53.680000 +10/08/2008,53.680000,59.060000,51.900000,57.530000 +10/09/2008,57.570000,64.920000,52.540000,63.920000 +10/10/2008,65.850000,76.940000,28.130000,69.950000 +10/13/2008,69.950000,71.420000,54.690000,54.990000 +10/14/2008,55.100000,59.810000,46.350000,55.130000 +10/15/2008,55.690000,69.470000,55.690000,69.250000 +10/16/2008,69.210000,81.170000,66.510000,67.610000 +10/17/2008,67.650000,74.480000,59.820000,70.330000 +10/20/2008,70.400000,70.400000,52.700000,52.970000 +10/21/2008,52.950000,56.370000,50.910000,53.110000 +10/22/2008,63.120000,72.560000,53.000000,69.650000 +10/23/2008,68.030000,79.430000,51.830000,67.800000 +10/24/2008,67.800000,89.530000,67.800000,79.130000 +10/27/2008,79.130000,81.650000,71.290000,80.060000 +10/28/2008,73.300000,78.980000,65.660000,66.960000 +10/29/2008,66.960000,71.140000,62.720000,69.960000 +10/30/2008,69.830000,69.830000,62.670000,62.900000 +10/31/2008,62.930000,65.850000,56.730000,59.890000 +11/03/2008,60.170000,60.770000,53.630000,53.680000 +11/04/2008,53.680000,53.680000,44.250000,47.730000 +11/05/2008,47.730000,55.620000,46.870000,54.560000 +11/06/2008,56.710000,64.780000,55.600000,63.680000 +11/07/2008,63.680000,63.680000,56.030000,56.100000 +11/10/2008,56.090000,62.090000,54.630000,59.980000 +11/11/2008,59.980000,64.730000,58.580000,61.440000 +11/12/2008,61.520000,67.190000,61.520000,66.460000 +11/13/2008,66.450000,69.990000,58.660000,59.830000 +11/14/2008,62.600000,66.310000,59.750000,66.310000 +11/17/2008,69.570000,69.590000,65.100000,69.150000 +11/18/2008,70.090000,73.130000,67.180000,67.640000 +11/19/2008,68.460000,75.000000,67.340000,74.260000 +11/20/2008,74.260000,81.480000,72.760000,80.860000 +11/21/2008,80.740000,80.740000,71.630000,72.670000 +11/24/2008,71.190000,71.350000,61.810000,64.700000 +11/25/2008,64.760000,65.490000,60.250000,60.900000 +11/26/2008,60.900000,62.500000,54.620000,54.920000 +11/28/2008,56.020000,56.820000,50.500000,55.840000 +12/01/2008,60.470000,68.600000,60.360000,68.510000 +12/02/2008,66.680000,67.010000,62.310000,62.980000 +12/03/2008,62.980000,65.370000,60.180000,60.720000 +12/04/2008,62.190000,65.080000,60.210000,63.640000 +12/05/2008,63.640000,66.540000,59.260000,59.930000 +12/08/2008,58.860000,59.870000,57.350000,58.490000 +12/09/2008,59.480000,59.570000,56.370000,58.910000 +12/10/2008,58.910000,58.910000,53.790000,55.730000 +12/11/2008,55.080000,56.440000,52.940000,55.780000 +12/12/2008,55.780000,58.840000,54.260000,54.280000 +12/15/2008,55.680000,58.490000,55.680000,56.760000 +12/16/2008,56.760000,56.760000,50.910000,52.370000 +12/17/2008,52.000000,52.190000,49.360000,49.840000 +12/18/2008,49.840000,49.840000,44.500000,47.340000 +12/19/2008,46.010000,46.010000,41.290000,44.930000 +12/22/2008,44.930000,46.690000,42.750000,44.560000 +12/23/2008,43.190000,45.390000,41.680000,45.020000 +12/24/2008,45.020000,45.020000,44.150000,44.210000 +12/26/2008,44.270000,44.360000,42.920000,43.380000 +12/29/2008,43.350000,46.240000,42.160000,43.900000 +12/30/2008,43.990000,44.290000,41.630000,41.630000 +12/31/2008,41.630000,41.630000,37.960000,40.000000 +01/02/2009,39.580000,39.820000,36.880000,39.190000 +01/05/2009,39.240000,40.220000,38.300000,39.080000 +01/06/2009,38.060000,39.330000,37.340000,38.560000 +01/07/2009,38.560000,43.820000,38.560000,43.390000 +01/08/2009,43.380000,44.600000,42.560000,42.560000 +01/09/2009,41.180000,43.130000,41.050000,42.820000 +01/12/2009,42.060000,46.620000,41.940000,45.840000 +01/13/2009,45.840000,47.080000,43.230000,43.270000 +01/14/2009,46.240000,51.550000,46.140000,49.140000 +01/15/2009,49.140000,55.160000,49.140000,51.000000 +01/16/2009,51.000000,51.000000,45.960000,46.110000 +01/20/2009,50.120000,57.360000,49.270000,56.650000 +01/21/2009,51.520000,54.120000,46.150000,46.420000 +01/22/2009,50.650000,51.760000,46.510000,47.290000 +01/23/2009,50.390000,51.110000,46.430000,47.270000 +01/26/2009,47.890000,47.930000,44.290000,45.690000 +01/27/2009,45.110000,45.930000,42.200000,42.250000 +01/28/2009,42.250000,42.250000,33.480000,39.660000 +01/29/2009,41.340000,43.030000,41.120000,42.630000 +01/30/2009,42.630000,45.530000,42.090000,44.840000 +02/02/2009,49.420000,49.540000,45.260000,45.520000 +02/03/2009,45.520000,45.520000,42.430000,43.060000 +02/04/2009,43.060000,44.520000,41.390000,43.850000 +02/05/2009,43.830000,46.230000,42.320000,43.730000 +02/06/2009,43.710000,43.710000,41.200000,43.370000 +02/09/2009,45.400000,45.450000,43.040000,43.640000 +02/10/2009,45.140000,48.120000,44.180000,46.670000 +02/11/2009,46.670000,46.670000,44.500000,44.530000 +02/12/2009,44.520000,48.630000,41.210000,41.250000 +02/13/2009,41.600000,43.020000,40.730000,42.930000 +02/17/2009,48.140000,51.180000,46.960000,48.660000 +02/18/2009,48.660000,50.290000,46.000000,48.460000 +02/19/2009,48.540000,48.540000,44.810000,47.080000 +02/20/2009,47.080000,52.040000,47.080000,49.300000 +02/23/2009,49.300000,53.160000,48.970000,52.620000 +02/24/2009,52.500000,52.560000,44.280000,45.490000 +02/25/2009,45.730000,47.230000,42.840000,44.670000 +02/26/2009,43.750000,45.330000,41.910000,44.660000 +02/27/2009,44.660000,47.340000,44.460000,46.350000 +03/02/2009,49.960000,53.250000,48.350000,52.650000 +03/03/2009,52.650000,52.760000,48.500000,50.930000 +03/04/2009,48.020000,48.830000,45.020000,47.560000 +03/05/2009,47.560000,51.950000,46.980000,50.170000 +03/06/2009,50.170000,51.950000,47.650000,49.330000 +03/09/2009,49.350000,51.340000,48.400000,49.680000 +03/10/2009,49.680000,49.680000,43.880000,44.370000 +03/11/2009,43.350000,44.260000,42.360000,43.610000 +03/12/2009,43.530000,43.980000,40.750000,41.180000 +03/13/2009,40.990000,43.520000,40.030000,42.360000 +03/16/2009,42.360000,44.230000,42.360000,43.740000 +03/17/2009,44.230000,44.590000,40.740000,40.800000 +03/18/2009,41.140000,42.390000,38.980000,40.060000 +03/19/2009,40.060000,44.170000,38.790000,43.680000 +03/20/2009,43.600000,47.630000,43.070000,45.890000 +03/23/2009,45.890000,45.890000,41.270000,43.230000 +03/24/2009,43.240000,44.000000,41.630000,42.930000 +03/25/2009,42.350000,44.200000,40.810000,42.250000 +03/26/2009,42.250000,42.250000,40.170000,40.360000 +03/27/2009,40.360000,42.130000,40.360000,41.040000 +03/30/2009,44.860000,46.280000,44.860000,45.540000 +03/31/2009,45.540000,45.540000,42.270000,44.140000 +04/01/2009,45.420000,45.600000,42.260000,42.280000 +04/02/2009,42.280000,42.680000,40.300000,42.040000 +04/03/2009,42.030000,42.030000,39.640000,39.700000 +04/06/2009,41.960000,43.020000,40.830000,40.930000 +04/07/2009,41.480000,42.500000,40.360000,40.390000 +04/08/2009,40.390000,40.860000,38.700000,38.850000 +04/09/2009,37.220000,37.740000,36.530000,36.530000 +04/13/2009,38.320000,38.910000,37.510000,37.810000 +04/14/2009,37.950000,38.500000,36.880000,37.670000 +04/15/2009,37.850000,38.060000,36.100000,36.170000 +04/16/2009,36.040000,36.800000,34.880000,35.790000 +04/17/2009,35.360000,35.520000,33.680000,33.940000 +04/20/2009,33.940000,39.580000,33.940000,39.180000 +04/21/2009,40.270000,40.290000,36.950000,37.140000 +04/22/2009,37.140000,38.190000,36.010000,38.100000 +04/23/2009,38.100000,38.520000,37.010000,37.150000 +04/24/2009,36.860000,37.530000,36.370000,36.820000 +04/27/2009,39.460000,39.520000,37.970000,38.320000 +04/28/2009,39.430000,39.640000,37.420000,37.950000 +04/29/2009,37.950000,37.950000,35.370000,36.080000 +04/30/2009,36.090000,36.710000,34.500000,36.500000 +05/01/2009,36.500000,36.880000,34.880000,35.300000 +05/04/2009,35.300000,36.240000,34.310000,34.530000 +05/05/2009,34.540000,35.140000,33.360000,33.360000 +05/06/2009,33.360000,33.700000,32.430000,32.450000 +05/07/2009,32.100000,34.560000,31.910000,33.440000 +05/08/2009,32.360000,32.720000,31.190000,32.050000 +05/11/2009,32.050000,34.080000,32.050000,32.870000 +05/12/2009,32.680000,33.290000,31.570000,31.800000 +05/13/2009,32.970000,33.990000,32.560000,33.650000 +05/14/2009,33.650000,33.960000,31.320000,31.370000 +05/15/2009,31.360000,33.610000,30.590000,33.120000 +05/18/2009,32.910000,32.910000,30.000000,30.240000 +05/19/2009,30.230000,30.320000,28.350000,28.800000 +05/20/2009,27.470000,29.160000,26.570000,29.030000 +05/21/2009,29.030000,32.770000,29.030000,31.350000 +05/22/2009,31.360000,32.710000,30.570000,32.630000 +05/26/2009,34.570000,34.570000,30.380000,30.620000 +05/27/2009,30.800000,32.530000,29.620000,32.360000 +05/28/2009,31.540000,33.320000,31.100000,31.670000 +05/29/2009,31.670000,31.670000,28.850000,28.920000 +06/01/2009,28.700000,30.050000,28.450000,30.040000 +06/02/2009,30.040000,30.130000,28.300000,29.630000 +06/03/2009,29.620000,31.790000,29.620000,31.020000 +06/04/2009,31.020000,31.020000,29.920000,30.180000 +06/05/2009,29.390000,30.810000,28.850000,29.620000 +06/08/2009,30.840000,31.820000,29.330000,29.770000 +06/09/2009,29.770000,29.770000,27.790000,28.270000 +06/10/2009,26.900000,29.740000,26.900000,28.460000 +06/11/2009,27.360000,28.110000,26.810000,28.110000 +06/12/2009,28.080000,28.500000,27.730000,28.150000 +06/15/2009,29.700000,31.090000,29.640000,30.810000 +06/16/2009,30.810000,32.750000,30.070000,32.680000 +06/17/2009,31.190000,32.770000,30.640000,31.540000 +06/18/2009,31.540000,31.540000,29.600000,30.030000 +06/19/2009,29.160000,29.320000,27.560000,27.990000 +06/22/2009,30.400000,32.050000,30.300000,31.170000 +06/23/2009,31.300000,31.540000,30.190000,30.580000 +06/24/2009,30.580000,30.580000,28.790000,29.050000 +06/25/2009,29.450000,29.560000,26.300000,26.360000 +06/26/2009,27.090000,27.220000,25.760000,25.930000 +06/29/2009,25.930000,27.180000,25.290000,25.350000 +06/30/2009,25.360000,27.380000,25.020000,26.350000 +07/01/2009,25.730000,26.310000,24.800000,26.220000 +07/02/2009,26.220000,28.620000,26.220000,27.950000 +07/06/2009,30.320000,30.600000,28.990000,29.000000 +07/07/2009,29.000000,30.940000,28.900000,30.850000 +07/08/2009,30.850000,33.050000,30.430000,31.300000 +07/09/2009,30.230000,30.490000,29.280000,29.780000 +07/10/2009,29.780000,30.340000,28.820000,29.020000 +07/13/2009,28.360000,29.240000,25.420000,26.310000 +07/14/2009,26.310000,26.840000,24.990000,25.020000 +07/15/2009,25.050000,26.060000,23.830000,25.890000 +07/16/2009,25.960000,26.180000,24.510000,25.420000 +07/17/2009,25.420000,25.550000,23.880000,24.340000 +07/20/2009,25.060000,25.420000,24.260000,24.400000 +07/21/2009,24.280000,25.140000,23.810000,23.870000 +07/22/2009,24.050000,24.140000,23.240000,23.470000 +07/23/2009,23.710000,24.050000,23.210000,23.430000 +07/24/2009,23.870000,23.870000,23.000000,23.090000 +07/27/2009,24.060000,24.860000,24.020000,24.280000 +07/28/2009,24.280000,25.610000,24.280000,25.010000 +07/29/2009,25.470000,26.180000,25.410000,25.610000 +07/30/2009,25.400000,25.760000,24.850000,25.400000 +07/31/2009,25.400000,26.220000,24.930000,25.920000 +08/03/2009,25.920000,26.490000,25.560000,25.560000 +08/04/2009,25.550000,26.160000,24.890000,24.890000 +08/05/2009,24.910000,25.850000,24.860000,24.900000 +08/06/2009,24.900000,26.150000,24.470000,25.670000 +08/07/2009,24.710000,24.950000,23.980000,24.760000 +08/10/2009,24.760000,25.820000,24.760000,24.990000 +08/11/2009,24.980000,26.980000,24.980000,25.990000 +08/12/2009,25.990000,26.500000,25.110000,25.450000 +08/13/2009,25.340000,26.150000,24.710000,24.710000 +08/14/2009,24.770000,25.940000,24.260000,24.270000 +08/17/2009,24.270000,28.390000,24.270000,27.890000 +08/18/2009,27.890000,27.890000,26.080000,26.180000 +08/19/2009,28.080000,28.140000,26.140000,26.260000 +08/20/2009,26.450000,26.450000,24.750000,25.090000 +08/21/2009,24.490000,25.060000,23.910000,25.010000 +08/24/2009,25.010000,25.700000,25.010000,25.140000 +08/25/2009,25.130000,25.130000,23.680000,24.920000 +08/26/2009,24.910000,25.560000,24.690000,24.950000 +08/27/2009,25.130000,25.890000,24.430000,24.680000 +08/28/2009,24.440000,25.500000,24.280000,24.760000 +08/31/2009,24.760000,27.010000,24.760000,26.010000 +09/01/2009,26.010000,29.230000,26.000000,29.150000 +09/02/2009,29.140000,29.570000,28.410000,28.900000 +09/03/2009,28.900000,28.900000,26.980000,27.100000 +09/04/2009,26.980000,26.980000,24.860000,25.260000 +09/08/2009,25.260000,26.150000,25.260000,25.620000 +09/09/2009,25.660000,25.930000,24.230000,24.320000 +09/10/2009,24.400000,24.760000,22.820000,23.550000 +09/11/2009,23.490000,24.330000,22.480000,24.150000 +09/14/2009,25.390000,25.390000,23.320000,23.860000 +09/15/2009,23.900000,24.270000,23.070000,23.420000 +09/16/2009,23.290000,23.920000,22.780000,23.690000 +09/17/2009,23.990000,24.070000,22.790000,23.650000 +09/18/2009,23.650000,24.430000,23.140000,23.920000 +09/21/2009,25.340000,25.510000,23.710000,24.060000 +09/22/2009,23.810000,23.980000,23.060000,23.080000 +09/23/2009,22.900000,23.690000,22.190000,23.490000 +09/24/2009,23.670000,25.370000,23.440000,24.950000 +09/25/2009,25.180000,26.340000,24.810000,25.610000 +09/28/2009,26.260000,26.400000,24.850000,24.880000 +09/29/2009,24.880000,25.280000,24.540000,25.190000 +09/30/2009,25.190000,26.450000,24.760000,25.610000 +10/01/2009,25.980000,28.420000,25.980000,28.270000 +10/02/2009,29.340000,29.560000,27.980000,28.680000 +10/05/2009,29.340000,29.340000,26.570000,26.840000 +10/06/2009,26.390000,26.410000,25.190000,25.700000 +10/07/2009,25.780000,25.820000,24.570000,24.680000 +10/08/2009,24.680000,24.690000,23.900000,24.180000 +10/09/2009,24.390000,24.540000,22.990000,23.120000 +10/12/2009,23.120000,23.530000,22.670000,23.010000 +10/13/2009,23.000000,24.070000,22.740000,22.990000 +10/14/2009,22.080000,22.890000,21.550000,22.860000 +10/15/2009,23.510000,23.530000,21.490000,21.720000 +10/16/2009,21.720000,22.600000,20.980000,21.430000 +10/19/2009,21.410000,22.460000,20.910000,21.490000 +10/20/2009,21.550000,21.760000,20.900000,20.900000 +10/21/2009,20.900000,22.480000,20.100000,22.220000 +10/22/2009,22.220000,22.770000,20.330000,20.690000 +10/23/2009,20.700000,22.590000,20.340000,22.270000 +10/26/2009,23.060000,24.860000,21.890000,24.310000 +10/27/2009,24.380000,25.220000,24.030000,24.830000 +10/28/2009,24.830000,27.940000,24.830000,27.910000 +10/29/2009,27.160000,27.190000,24.680000,24.760000 +10/30/2009,24.760000,31.590000,24.760000,30.690000 +11/02/2009,30.700000,31.840000,28.070000,29.780000 +11/03/2009,30.620000,30.800000,28.770000,28.810000 +11/04/2009,28.810000,28.810000,26.610000,27.720000 +11/05/2009,27.280000,27.390000,25.410000,25.430000 +11/06/2009,26.170000,26.170000,24.060000,24.190000 +11/09/2009,24.190000,24.240000,22.780000,23.150000 +11/10/2009,23.150000,23.530000,22.780000,22.840000 +11/11/2009,22.840000,23.680000,21.610000,23.040000 +11/12/2009,23.040000,24.610000,22.910000,24.240000 +11/13/2009,24.250000,24.430000,23.220000,23.360000 +11/16/2009,23.360000,23.420000,22.020000,22.890000 +11/17/2009,22.810000,23.330000,22.270000,22.410000 +11/18/2009,22.350000,22.650000,21.630000,21.630000 +11/19/2009,21.630000,24.200000,21.630000,22.630000 +11/20/2009,23.450000,23.450000,22.140000,22.190000 +11/23/2009,21.980000,21.980000,20.900000,21.160000 +11/24/2009,21.280000,21.870000,20.350000,20.470000 +11/25/2009,20.230000,20.570000,20.050000,20.480000 +11/27/2009,25.750000,25.930000,23.120000,24.850000 +11/30/2009,24.950000,25.570000,24.190000,24.510000 +12/01/2009,24.510000,24.510000,21.880000,21.920000 +12/02/2009,21.890000,22.190000,21.010000,21.120000 +12/03/2009,21.150000,22.500000,20.610000,22.460000 +12/04/2009,21.180000,22.760000,20.620000,21.250000 +12/07/2009,22.320000,22.460000,21.600000,22.100000 +12/08/2009,23.280000,23.970000,22.840000,23.690000 +12/09/2009,23.210000,24.200000,22.540000,22.660000 +12/10/2009,22.660000,22.660000,21.770000,22.320000 +12/11/2009,21.450000,22.310000,21.390000,21.590000 +12/14/2009,21.590000,21.590000,20.570000,21.150000 +12/15/2009,21.090000,21.870000,20.910000,21.490000 +12/16/2009,21.500000,21.500000,20.460000,20.540000 +12/17/2009,21.890000,22.860000,21.400000,22.510000 +12/18/2009,21.840000,23.020000,21.680000,21.680000 +12/21/2009,21.460000,21.510000,20.280000,20.490000 +12/22/2009,20.390000,20.400000,19.540000,19.540000 +12/23/2009,19.540000,19.970000,19.350000,19.710000 +12/24/2009,19.670000,19.670000,19.250000,19.470000 +12/28/2009,20.290000,20.530000,19.900000,19.930000 +12/29/2009,19.870000,20.120000,19.620000,20.010000 +12/30/2009,20.360000,20.440000,19.930000,19.960000 +12/31/2009,19.960000,21.830000,19.890000,21.680000 +01/04/2010,21.680000,21.680000,20.030000,20.040000 +01/05/2010,20.050000,20.130000,19.340000,19.350000 +01/06/2010,19.590000,19.680000,18.770000,19.160000 +01/07/2010,19.680000,19.710000,18.700000,19.060000 +01/08/2010,19.270000,19.270000,18.110000,18.130000 +01/11/2010,16.930000,17.740000,16.860000,17.550000 +01/12/2010,17.950000,19.460000,17.950000,18.250000 +01/13/2010,17.940000,18.720000,17.560000,17.850000 +01/14/2010,18.160000,18.270000,17.380000,17.630000 +01/15/2010,17.630000,19.020000,17.630000,17.910000 +01/19/2010,18.630000,18.850000,17.330000,17.580000 +01/20/2010,18.510000,19.690000,18.440000,18.680000 +01/21/2010,18.590000,22.300000,18.270000,22.270000 +01/22/2010,22.270000,28.010000,22.270000,27.310000 +01/25/2010,27.320000,27.320000,24.610000,25.410000 +01/26/2010,26.030000,26.220000,22.770000,24.550000 +01/27/2010,24.810000,25.690000,23.140000,23.140000 +01/28/2010,22.790000,25.300000,22.690000,23.730000 +01/29/2010,23.730000,25.030000,22.110000,24.620000 +02/01/2010,24.330000,24.330000,22.580000,22.590000 +02/02/2010,22.590000,22.990000,21.080000,21.480000 +02/03/2010,22.110000,22.110000,21.330000,21.600000 +02/04/2010,22.630000,26.320000,22.630000,26.080000 +02/05/2010,25.690000,29.220000,25.370000,26.110000 +02/08/2010,26.110000,27.110000,25.480000,26.510000 +02/09/2010,26.510000,26.560000,24.780000,26.000000 +02/10/2010,26.360000,26.770000,24.800000,25.400000 +02/11/2010,25.820000,26.110000,23.870000,23.960000 +02/12/2010,23.960000,25.540000,22.730000,22.730000 +02/16/2010,23.510000,23.570000,22.130000,22.250000 +02/17/2010,22.250000,22.600000,21.700000,21.720000 +02/18/2010,21.720000,22.210000,20.600000,20.630000 +02/19/2010,21.070000,21.140000,19.710000,20.020000 +02/22/2010,20.160000,21.000000,19.590000,19.940000 +02/23/2010,20.390000,21.940000,20.060000,21.370000 +02/24/2010,21.230000,21.580000,20.220000,20.270000 +02/25/2010,22.030000,22.680000,20.060000,20.100000 +02/26/2010,19.880000,20.530000,19.320000,19.500000 +03/01/2010,19.930000,19.940000,19.180000,19.260000 +03/02/2010,18.830000,19.360000,18.600000,19.060000 +03/03/2010,18.950000,19.300000,18.420000,18.830000 +03/04/2010,18.860000,19.270000,18.580000,18.720000 +03/05/2010,18.060000,18.150000,17.230000,17.420000 +03/08/2010,17.950000,17.960000,17.560000,17.790000 +03/09/2010,18.180000,18.190000,17.510000,17.920000 +03/10/2010,18.000000,18.600000,17.430000,18.570000 +03/11/2010,18.900000,19.340000,18.060000,18.060000 +03/12/2010,17.970000,18.530000,17.580000,17.580000 +03/15/2010,18.280000,18.780000,17.960000,18.000000 +03/16/2010,17.780000,18.010000,17.420000,17.690000 +03/17/2010,16.970000,17.170000,16.520000,16.910000 +03/18/2010,16.960000,16.990000,16.310000,16.620000 +03/19/2010,16.170000,17.570000,16.170000,16.970000 +03/22/2010,18.300000,18.340000,16.770000,16.870000 +03/23/2010,16.840000,17.090000,16.210000,16.350000 +03/24/2010,16.850000,17.920000,16.830000,17.550000 +03/25/2010,17.070000,18.540000,16.620000,18.400000 +03/26/2010,18.270000,18.690000,17.350000,17.770000 +03/29/2010,18.170000,18.280000,17.570000,17.590000 +03/30/2010,17.640000,18.080000,17.130000,17.130000 +03/31/2010,17.660000,17.920000,17.290000,17.590000 +04/01/2010,17.010000,18.090000,16.790000,17.470000 +04/05/2010,17.960000,18.160000,17.020000,17.020000 +04/06/2010,17.390000,17.540000,16.080000,16.230000 +04/07/2010,16.720000,17.210000,16.160000,16.620000 +04/08/2010,17.210000,17.800000,16.300000,16.480000 +04/09/2010,16.320000,16.650000,16.060000,16.140000 +04/12/2010,15.670000,16.000000,15.230000,15.580000 +04/13/2010,15.980000,16.770000,15.810000,16.200000 +04/14/2010,15.800000,16.380000,15.550000,15.590000 +04/15/2010,15.870000,16.500000,15.680000,15.890000 +04/16/2010,16.190000,19.700000,16.110000,18.360000 +04/19/2010,19.140000,19.550000,17.340000,17.340000 +04/20/2010,16.840000,16.890000,15.730000,15.730000 +04/21/2010,15.940000,16.850000,15.500000,16.320000 +04/22/2010,17.480000,18.190000,16.200000,16.470000 +04/23/2010,16.620000,16.710000,16.120000,16.620000 +04/26/2010,17.520000,17.530000,17.070000,17.470000 +04/27/2010,18.130000,23.200000,17.940000,22.810000 +04/28/2010,22.080000,23.030000,20.860000,21.080000 +04/29/2010,20.370000,20.370000,18.440000,18.440000 +04/30/2010,18.750000,22.390000,18.410000,22.050000 +05/03/2010,22.410000,22.410000,19.610000,20.190000 +05/04/2010,22.460000,25.700000,22.460000,23.840000 +05/05/2010,25.960000,27.230000,23.750000,24.910000 +05/06/2010,25.880000,40.710000,24.430000,32.800000 +05/07/2010,32.760000,42.150000,31.710000,40.950000 +05/10/2010,28.650000,30.890000,25.680000,28.840000 +05/11/2010,31.040000,31.040000,25.860000,28.320000 +05/12/2010,26.560000,26.670000,24.980000,25.520000 +05/13/2010,26.170000,26.850000,24.300000,26.680000 +05/14/2010,28.400000,33.240000,28.400000,31.240000 +05/17/2010,31.330000,35.250000,30.760000,30.840000 +05/18/2010,28.670000,34.170000,28.090000,33.550000 +05/19/2010,34.650000,38.420000,33.070000,35.320000 +05/20/2010,41.790000,46.370000,40.300000,45.790000 +05/21/2010,47.660000,48.200000,38.950000,40.100000 +05/24/2010,41.740000,41.740000,35.570000,38.320000 +05/25/2010,43.150000,43.740000,34.590000,34.610000 +05/26/2010,32.540000,35.020000,24.100000,35.020000 +05/27/2010,30.240000,31.030000,29.540000,29.680000 +05/28/2010,30.230000,33.300000,29.530000,32.070000 +06/01/2010,34.870000,35.680000,31.820000,35.540000 +06/02/2010,34.390000,34.570000,29.940000,30.170000 +06/03/2010,29.650000,31.200000,29.120000,29.460000 +06/04/2010,32.930000,36.120000,31.810000,35.480000 +06/07/2010,35.660000,36.800000,34.430000,36.570000 +06/08/2010,36.530000,37.380000,33.360000,33.700000 +06/09/2010,32.330000,34.120000,30.230000,33.730000 +06/10/2010,31.000000,31.770000,29.690000,30.570000 +06/11/2010,31.790000,31.790000,28.600000,28.790000 +06/14/2010,27.940000,28.720000,26.980000,28.580000 +06/15/2010,27.680000,27.840000,25.680000,25.870000 +06/16/2010,26.720000,26.720000,25.340000,25.920000 +06/17/2010,25.590000,26.640000,25.050000,25.050000 +06/18/2010,24.870000,24.880000,23.300000,23.950000 +06/21/2010,22.900000,25.640000,22.870000,24.880000 +06/22/2010,25.140000,27.050000,24.410000,27.050000 +06/23/2010,26.930000,28.550000,26.540000,26.910000 +06/24/2010,27.610000,30.270000,27.530000,29.740000 +06/25/2010,29.640000,30.410000,28.070000,28.530000 +06/28/2010,29.200000,29.900000,28.470000,29.000000 +06/29/2010,31.220000,35.390000,31.220000,34.130000 +06/30/2010,33.950000,34.630000,31.740000,34.540000 +07/01/2010,34.410000,37.580000,32.720000,32.860000 +07/02/2010,31.710000,31.880000,29.350000,30.120000 +07/06/2010,28.820000,31.150000,27.960000,29.650000 +07/07/2010,29.560000,29.560000,26.840000,26.840000 +07/08/2010,26.500000,27.420000,24.220000,25.710000 +07/09/2010,25.350000,25.670000,24.370000,24.980000 +07/12/2010,24.660000,25.140000,23.530000,24.430000 +07/13/2010,23.290000,24.570000,23.120000,24.560000 +07/14/2010,24.610000,25.800000,24.180000,24.890000 +07/15/2010,25.080000,27.240000,24.740000,25.140000 +07/16/2010,25.770000,28.160000,25.710000,26.250000 +07/19/2010,27.020000,27.300000,25.120000,25.970000 +07/20/2010,27.350000,27.400000,23.790000,23.930000 +07/21/2010,23.610000,26.630000,23.590000,25.640000 +07/22/2010,24.370000,24.850000,23.720000,24.630000 +07/23/2010,24.790000,25.170000,23.320000,23.470000 +07/26/2010,24.370000,24.610000,22.700000,22.730000 +07/27/2010,21.890000,23.570000,21.860000,23.190000 +07/28/2010,23.930000,24.540000,22.240000,24.250000 +07/29/2010,23.400000,25.540000,23.040000,24.130000 +07/30/2010,25.470000,27.320000,23.350000,23.500000 +08/02/2010,23.070000,23.240000,21.740000,22.010000 +08/03/2010,22.440000,23.060000,21.980000,22.630000 +08/04/2010,22.690000,23.690000,22.160000,22.210000 +08/05/2010,23.040000,23.130000,22.070000,22.100000 +08/06/2010,23.340000,23.890000,21.720000,21.740000 +08/09/2010,21.850000,22.870000,21.360000,22.140000 +08/10/2010,23.300000,24.240000,22.170000,22.370000 +08/11/2010,24.960000,26.100000,24.960000,25.390000 +08/12/2010,27.210000,27.210000,25.180000,25.730000 +08/13/2010,26.080000,26.260000,25.450000,26.240000 +08/16/2010,27.410000,28.100000,25.380000,26.100000 +08/17/2010,24.720000,24.890000,23.710000,24.330000 +08/18/2010,24.300000,25.230000,23.400000,24.590000 +08/19/2010,24.480000,26.780000,24.260000,26.440000 +08/20/2010,26.730000,27.000000,25.490000,25.490000 +08/23/2010,25.970000,25.970000,24.620000,25.660000 +08/24/2010,27.910000,28.770000,26.320000,27.460000 +08/25/2010,28.300000,28.920000,26.460000,26.700000 +08/26/2010,26.450000,27.550000,25.860000,27.370000 +08/27/2010,26.500000,28.110000,24.410000,24.450000 +08/30/2010,25.880000,27.210000,25.410000,27.210000 +08/31/2010,27.580000,27.830000,25.930000,26.050000 +09/01/2010,25.130000,25.130000,23.860000,23.890000 +09/02/2010,24.230000,24.310000,23.150000,23.190000 +09/03/2010,21.990000,22.780000,21.240000,21.310000 +09/07/2010,22.770000,23.940000,22.770000,23.800000 +09/08/2010,23.510000,23.560000,22.920000,23.250000 +09/09/2010,22.220000,23.240000,22.140000,22.810000 +09/10/2010,22.640000,22.870000,21.760000,21.990000 +09/13/2010,21.060000,22.050000,20.930000,21.210000 +09/14/2010,21.690000,21.970000,20.850000,21.560000 +09/15/2010,22.550000,22.800000,22.100000,22.100000 +09/16/2010,22.650000,22.830000,21.710000,21.720000 +09/17/2010,21.650000,22.560000,21.630000,22.010000 +09/20/2010,22.470000,22.580000,21.250000,21.500000 +09/21/2010,21.540000,22.590000,21.420000,22.350000 +09/22/2010,22.560000,23.190000,21.910000,22.510000 +09/23/2010,23.910000,24.060000,22.560000,23.870000 +09/24/2010,22.610000,22.610000,21.710000,21.710000 +09/27/2010,22.580000,22.750000,21.970000,22.540000 +09/28/2010,22.920000,24.280000,22.400000,22.600000 +09/29/2010,23.140000,23.450000,22.720000,23.250000 +09/30/2010,22.850000,24.520000,22.390000,23.700000 +10/01/2010,22.900000,23.670000,22.460000,22.500000 +10/04/2010,23.630000,24.340000,23.300000,23.530000 +10/05/2010,22.520000,23.080000,21.710000,21.760000 +10/06/2010,21.820000,22.130000,21.460000,21.490000 +10/07/2010,21.310000,22.160000,21.280000,21.560000 +10/08/2010,21.580000,21.640000,20.290000,20.710000 +10/11/2010,19.330000,19.510000,18.800000,18.960000 +10/12/2010,20.000000,20.100000,18.550000,18.930000 +10/13/2010,17.920000,19.160000,17.900000,19.070000 +10/14/2010,19.590000,21.020000,19.400000,19.880000 +10/15/2010,20.200000,21.590000,19.020000,19.030000 +10/18/2010,20.430000,20.710000,18.880000,19.090000 +10/19/2010,20.700000,21.350000,19.330000,20.630000 +10/20/2010,21.200000,21.200000,19.670000,19.790000 +10/21/2010,19.700000,20.530000,18.930000,19.270000 +10/22/2010,19.360000,19.360000,18.760000,18.780000 +10/25/2010,19.220000,19.880000,18.860000,19.850000 +10/26/2010,20.520000,21.010000,20.220000,20.220000 +10/27/2010,21.110000,22.370000,20.690000,20.710000 +10/28/2010,20.280000,21.410000,20.180000,20.880000 +10/29/2010,21.200000,21.400000,20.860000,21.200000 +11/01/2010,21.650000,22.540000,20.920000,21.830000 +11/02/2010,21.340000,21.820000,21.220000,21.570000 +11/03/2010,21.660000,22.020000,19.540000,19.560000 +11/04/2010,18.030000,18.800000,17.970000,18.520000 +11/05/2010,18.070000,18.440000,17.920000,18.260000 +11/08/2010,19.330000,19.350000,18.210000,18.290000 +11/09/2010,18.510000,19.390000,17.830000,19.080000 +11/10/2010,18.940000,19.960000,18.410000,18.470000 +11/11/2010,19.440000,19.750000,18.480000,18.640000 +11/12/2010,19.590000,21.230000,19.290000,20.610000 +11/15/2010,20.330000,20.370000,19.140000,20.200000 +11/16/2010,21.260000,23.070000,20.950000,22.580000 +11/17/2010,22.190000,22.210000,21.220000,21.760000 +11/18/2010,20.310000,20.310000,18.750000,18.750000 +11/19/2010,19.150000,19.720000,17.760000,18.040000 +11/22/2010,19.450000,20.140000,18.350000,18.370000 +11/23/2010,20.250000,21.450000,20.240000,20.630000 +11/24/2010,19.420000,19.610000,18.730000,19.560000 +11/26/2010,21.170000,22.220000,20.280000,22.220000 +11/29/2010,23.150000,23.840000,21.380000,21.530000 +11/30/2010,23.270000,23.790000,22.420000,23.540000 +12/01/2010,21.190000,21.430000,20.400000,21.360000 +12/02/2010,21.130000,21.130000,19.100000,19.390000 +12/03/2010,19.260000,19.280000,17.710000,18.010000 +12/06/2010,18.800000,18.850000,17.950000,18.020000 +12/07/2010,17.130000,18.150000,17.130000,17.990000 +12/08/2010,17.970000,18.320000,17.690000,17.740000 +12/09/2010,17.320000,17.840000,17.240000,17.250000 +12/10/2010,17.060000,17.630000,17.060000,17.610000 +12/13/2010,16.820000,17.670000,16.680000,17.550000 +12/14/2010,17.600000,17.950000,17.220000,17.610000 +12/15/2010,17.990000,18.140000,17.370000,17.940000 +12/16/2010,18.030000,18.270000,16.880000,17.390000 +12/17/2010,17.620000,17.640000,15.460000,16.110000 +12/20/2010,16.220000,16.860000,15.780000,16.410000 +12/21/2010,16.200000,16.620000,16.080000,16.490000 +12/22/2010,16.520000,16.560000,15.450000,15.450000 +12/23/2010,15.440000,16.860000,15.400000,16.470000 +12/27/2010,18.260000,18.320000,17.660000,17.670000 +12/28/2010,17.300000,17.990000,17.300000,17.520000 +12/29/2010,17.490000,17.490000,17.020000,17.280000 +12/30/2010,17.650000,17.890000,17.460000,17.520000 +12/31/2010,17.910000,18.130000,17.750000,17.750000 +01/03/2011,17.940000,17.950000,16.910000,17.610000 +01/04/2011,17.340000,18.240000,17.330000,17.380000 +01/05/2011,17.810000,17.950000,16.860000,17.020000 +01/06/2011,16.800000,17.560000,16.790000,17.400000 +01/07/2011,17.310000,18.070000,16.570000,17.140000 +01/10/2011,18.350000,18.630000,17.540000,17.540000 +01/11/2011,16.610000,17.350000,16.600000,16.890000 +01/12/2011,16.260000,16.500000,16.170000,16.240000 +01/13/2011,16.510000,16.780000,16.140000,16.390000 +01/14/2011,16.670000,16.710000,15.370000,15.460000 +01/18/2011,16.190000,16.200000,15.710000,15.870000 +01/19/2011,15.890000,17.670000,15.860000,17.310000 +01/20/2011,17.810000,18.850000,17.650000,17.990000 +01/21/2011,17.030000,18.610000,16.600000,18.470000 +01/24/2011,18.780000,18.930000,17.560000,17.650000 +01/25/2011,18.220000,18.550000,17.590000,17.590000 +01/26/2011,17.000000,17.420000,16.590000,16.640000 +01/27/2011,16.840000,16.890000,15.810000,16.150000 +01/28/2011,15.940000,20.080000,15.920000,20.040000 +01/31/2011,19.610000,19.960000,17.100000,19.530000 +02/01/2011,18.590000,18.630000,17.400000,17.630000 +02/02/2011,17.820000,17.840000,17.280000,17.300000 +02/03/2011,17.530000,17.800000,16.610000,16.690000 +02/04/2011,16.640000,16.740000,15.890000,15.930000 +02/07/2011,16.140000,16.540000,15.840000,16.280000 +02/08/2011,16.290000,16.600000,14.860000,15.810000 +02/09/2011,16.270000,16.520000,15.860000,15.870000 +02/10/2011,16.740000,17.070000,16.000000,16.090000 +02/11/2011,16.530000,16.530000,15.550000,15.690000 +02/14/2011,16.070000,16.260000,15.220000,15.950000 +02/15/2011,16.300000,16.750000,16.270000,16.370000 +02/16/2011,16.310000,16.740000,15.840000,16.720000 +02/17/2011,17.010000,17.300000,15.880000,16.590000 +02/18/2011,16.590000,16.910000,15.540000,16.430000 +02/22/2011,19.460000,21.450000,18.380000,20.800000 +02/23/2011,20.840000,23.220000,20.300000,22.130000 +02/24/2011,22.280000,22.710000,20.810000,21.320000 +02/25/2011,20.410000,20.440000,18.880000,19.220000 +02/28/2011,19.120000,19.270000,18.140000,18.350000 +03/01/2011,17.630000,21.010000,17.630000,21.010000 +03/02/2011,20.730000,21.140000,19.620000,20.700000 +03/03/2011,19.270000,19.270000,18.250000,18.600000 +03/04/2011,18.560000,20.330000,18.310000,19.060000 +03/07/2011,19.370000,21.770000,18.950000,20.660000 +03/08/2011,20.580000,21.060000,19.150000,19.820000 +03/09/2011,20.050000,20.960000,19.410000,20.220000 +03/10/2011,21.370000,22.250000,20.340000,21.880000 +03/11/2011,21.720000,21.750000,19.970000,20.080000 +03/14/2011,21.790000,22.740000,20.920000,21.130000 +03/15/2011,25.660000,25.720000,23.310000,24.320000 +03/16/2011,24.650000,31.280000,24.040000,29.400000 +03/17/2011,26.940000,27.540000,25.440000,26.370000 +03/18/2011,23.900000,24.850000,23.090000,24.440000 +03/21/2011,22.100000,22.160000,20.220000,20.610000 +03/22/2011,20.530000,20.590000,19.970000,20.210000 +03/23/2011,20.590000,21.050000,18.190000,19.170000 +03/24/2011,18.450000,18.990000,17.870000,18.000000 +03/25/2011,17.870000,18.080000,17.070000,17.910000 +03/28/2011,18.310000,19.440000,17.960000,19.440000 +03/29/2011,19.170000,19.780000,18.000000,18.160000 +03/30/2011,17.820000,17.890000,17.250000,17.710000 +03/31/2011,17.900000,17.950000,17.410000,17.740000 +04/01/2011,16.680000,17.620000,16.440000,17.400000 +04/04/2011,17.630000,17.850000,17.390000,17.500000 +04/05/2011,17.870000,17.870000,16.500000,17.250000 +04/06/2011,16.750000,17.150000,16.500000,16.900000 +04/07/2011,16.920000,17.770000,16.490000,17.110000 +04/08/2011,16.510000,18.330000,16.510000,17.870000 +04/11/2011,16.740000,17.050000,16.220000,16.590000 +04/12/2011,17.580000,18.460000,16.880000,17.090000 +04/13/2011,16.330000,17.380000,16.200000,16.920000 +04/14/2011,17.770000,18.080000,16.080000,16.270000 +04/15/2011,15.970000,15.980000,14.920000,15.320000 +04/18/2011,18.300000,19.070000,16.810000,16.960000 +04/19/2011,16.620000,16.720000,15.690000,15.830000 +04/20/2011,14.310000,15.390000,14.300000,15.070000 +04/21/2011,14.710000,15.230000,14.400000,14.690000 +04/25/2011,15.640000,16.060000,15.500000,15.770000 +04/26/2011,15.360000,15.660000,15.070000,15.620000 +04/27/2011,15.370000,16.420000,15.130000,15.350000 +04/28/2011,15.540000,15.540000,14.270000,14.620000 +04/29/2011,14.560000,14.990000,14.490000,14.750000 +05/02/2011,15.070000,16.130000,15.070000,15.990000 +05/03/2011,16.350000,17.290000,16.130000,16.700000 +05/04/2011,16.840000,17.720000,16.830000,17.080000 +05/05/2011,17.680000,19.110000,16.740000,18.200000 +05/06/2011,17.170000,19.290000,16.120000,18.400000 +05/09/2011,18.590000,18.590000,17.040000,17.160000 +05/10/2011,16.840000,16.900000,15.790000,15.910000 +05/11/2011,16.270000,17.490000,16.230000,16.950000 +05/12/2011,17.270000,17.890000,16.030000,16.030000 +05/13/2011,16.020000,17.560000,15.980000,17.070000 +05/16/2011,17.860000,18.250000,16.610000,18.240000 +05/17/2011,18.540000,19.090000,17.470000,17.550000 +05/18/2011,17.560000,17.680000,16.030000,16.230000 +05/19/2011,15.900000,16.560000,15.500000,15.520000 +05/20/2011,15.880000,17.430000,15.700000,17.430000 +05/23/2011,20.030000,20.030000,17.470000,18.270000 +05/24/2011,18.070000,18.190000,17.000000,17.820000 +05/25/2011,18.260000,18.260000,16.700000,17.070000 +05/26/2011,17.170000,17.460000,15.900000,16.090000 +05/27/2011,16.110000,16.270000,15.360000,15.980000 +05/31/2011,15.850000,16.500000,15.150000,15.450000 +06/01/2011,15.950000,18.480000,15.950000,18.300000 +06/02/2011,17.920000,18.720000,17.390000,18.090000 +06/03/2011,18.230000,19.870000,17.120000,17.950000 +06/06/2011,18.420000,18.650000,17.650000,18.490000 +06/07/2011,18.130000,18.480000,17.390000,18.070000 +06/08/2011,18.150000,18.830000,17.720000,18.790000 +06/09/2011,18.200000,18.310000,17.260000,17.770000 +06/10/2011,17.930000,19.160000,17.930000,18.860000 +06/13/2011,19.100000,20.020000,18.410000,19.610000 +06/14/2011,18.560000,18.560000,17.800000,18.260000 +06/15/2011,19.310000,21.660000,19.030000,21.320000 +06/16/2011,21.370000,24.650000,20.810000,22.730000 +06/17/2011,21.560000,22.390000,20.350000,21.850000 +06/20/2011,22.990000,23.080000,19.990000,19.990000 +06/21/2011,19.460000,19.460000,17.720000,18.860000 +06/22/2011,18.860000,18.900000,17.720000,18.520000 +06/23/2011,20.230000,21.500000,19.220000,19.290000 +06/24/2011,19.200000,21.280000,19.100000,21.100000 +06/27/2011,21.600000,21.820000,20.270000,20.560000 +06/28/2011,20.300000,20.450000,19.170000,19.170000 +06/29/2011,18.620000,18.830000,16.320000,17.270000 +06/30/2011,16.670000,16.770000,15.880000,16.520000 +07/01/2011,16.060000,16.290000,15.120000,15.870000 +07/05/2011,16.320000,16.500000,15.890000,16.060000 +07/06/2011,16.460000,17.080000,16.320000,16.340000 +07/07/2011,15.300000,16.130000,15.300000,15.950000 +07/08/2011,17.140000,17.140000,15.950000,15.950000 +07/11/2011,17.440000,19.060000,17.160000,18.390000 +07/12/2011,19.550000,20.130000,18.250000,19.870000 +07/13/2011,19.080000,20.160000,18.090000,19.910000 +07/14/2011,20.080000,21.580000,19.350000,20.800000 +07/15/2011,20.250000,21.680000,19.520000,19.530000 +07/18/2011,21.250000,21.930000,20.900000,20.950000 +07/19/2011,20.140000,20.430000,19.120000,19.210000 +07/20/2011,18.810000,19.650000,18.610000,19.090000 +07/21/2011,18.610000,18.630000,17.150000,17.560000 +07/22/2011,17.220000,17.950000,17.140000,17.520000 +07/25/2011,19.260000,19.500000,18.730000,19.350000 +07/26/2011,19.750000,20.500000,19.560000,20.230000 +07/27/2011,20.870000,23.200000,20.870000,22.980000 +07/28/2011,22.830000,23.990000,21.200000,23.740000 +07/29/2011,25.280000,25.940000,23.650000,25.250000 +08/01/2011,22.630000,25.630000,22.460000,23.660000 +08/02/2011,24.220000,24.790000,22.650000,24.790000 +08/03/2011,23.580000,25.230000,22.760000,23.380000 +08/04/2011,24.570000,32.070000,24.310000,31.660000 +08/05/2011,28.480000,39.250000,27.540000,32.000000 +08/08/2011,36.900000,48.000000,35.290000,48.000000 +08/09/2011,42.120000,47.560000,34.280000,35.060000 +08/10/2011,39.330000,44.410000,37.340000,42.990000 +08/11/2011,41.940000,42.880000,37.500000,39.000000 +08/12/2011,37.080000,37.850000,34.010000,36.360000 +08/15/2011,34.730000,34.830000,31.470000,31.870000 +08/16/2011,33.360000,34.490000,31.680000,32.850000 +08/17/2011,32.090000,33.320000,30.810000,31.580000 +08/18/2011,36.770000,45.280000,36.690000,42.670000 +08/19/2011,45.340000,45.400000,39.990000,43.050000 +08/22/2011,38.800000,43.580000,38.780000,42.440000 +08/23/2011,41.890000,42.540000,35.830000,36.270000 +08/24/2011,37.120000,37.380000,34.550000,35.900000 +08/25/2011,34.430000,40.140000,34.050000,39.760000 +08/26/2011,41.180000,43.840000,34.330000,35.590000 +08/29/2011,33.810000,33.810000,32.210000,32.280000 +08/30/2011,32.970000,33.550000,31.550000,32.890000 +08/31/2011,31.200000,32.530000,30.160000,31.620000 +09/01/2011,31.910000,32.380000,30.760000,31.820000 +09/02/2011,34.290000,34.740000,32.700000,33.920000 +09/06/2011,39.840000,39.860000,37.000000,37.000000 +09/07/2011,34.240000,34.700000,33.380000,33.380000 +09/08/2011,34.410000,34.710000,32.790000,34.320000 +09/09/2011,35.530000,40.740000,35.530000,38.520000 +09/12/2011,42.560000,43.180000,38.580000,38.590000 +09/13/2011,38.680000,39.430000,36.690000,36.910000 +09/14/2011,36.590000,37.760000,33.400000,34.600000 +09/15/2011,33.430000,33.980000,31.750000,31.970000 +09/16/2011,31.810000,32.480000,30.430000,30.980000 +09/19/2011,34.800000,35.330000,32.350000,32.730000 +09/20/2011,32.420000,33.140000,31.450000,32.860000 +09/21/2011,33.000000,37.320000,32.450000,37.320000 +09/22/2011,41.000000,43.870000,39.330000,41.350000 +09/23/2011,42.170000,42.820000,40.420000,41.250000 +09/26/2011,40.990000,43.340000,39.020000,39.020000 +09/27/2011,36.590000,38.570000,35.320000,37.710000 +09/28/2011,37.700000,41.240000,36.650000,41.080000 +09/29/2011,38.620000,42.000000,38.030000,38.840000 +09/30/2011,40.930000,42.990000,39.880000,42.960000 +10/03/2011,44.250000,45.550000,41.510000,45.450000 +10/04/2011,46.180000,46.880000,40.020000,40.820000 +10/05/2011,40.730000,41.200000,37.510000,37.810000 +10/06/2011,38.240000,38.740000,36.150000,36.270000 +10/07/2011,35.670000,37.820000,35.190000,36.200000 +10/10/2011,35.450000,35.450000,32.960000,33.020000 +10/11/2011,33.950000,34.240000,32.620000,32.860000 +10/12/2011,31.570000,31.930000,29.790000,31.260000 +10/13/2011,31.990000,32.760000,30.480000,30.700000 +10/14/2011,29.070000,29.960000,28.080000,28.240000 +10/17/2011,30.350000,33.390000,30.120000,33.390000 +10/18/2011,33.370000,34.710000,29.690000,31.560000 +10/19/2011,32.920000,35.470000,31.910000,34.440000 +10/20/2011,34.440000,36.870000,34.160000,34.780000 +10/21/2011,32.760000,32.980000,31.320000,31.320000 +10/24/2011,31.670000,31.700000,28.840000,29.260000 +10/25/2011,30.680000,32.460000,30.320000,32.220000 +10/26/2011,30.440000,33.300000,29.630000,29.860000 +10/27/2011,24.720000,26.460000,24.700000,25.460000 +10/28/2011,26.020000,26.020000,24.440000,24.530000 +10/31/2011,27.090000,29.970000,27.010000,29.960000 +11/01/2011,36.030000,37.530000,33.870000,34.770000 +11/02/2011,33.530000,34.270000,32.550000,32.740000 +11/03/2011,31.380000,34.650000,30.210000,30.500000 +11/04/2011,31.460000,32.560000,30.140000,30.160000 +11/07/2011,31.400000,32.150000,29.850000,29.850000 +11/08/2011,29.340000,30.490000,27.470000,27.480000 +11/09/2011,31.320000,36.430000,30.980000,36.160000 +11/10/2011,33.090000,35.500000,32.120000,32.810000 +11/11/2011,29.910000,30.420000,29.450000,30.040000 +11/14/2011,31.420000,32.850000,31.130000,31.130000 +11/15/2011,31.740000,32.550000,30.400000,31.220000 +11/16/2011,32.660000,33.510000,30.540000,33.510000 +11/17/2011,33.150000,36.460000,32.890000,34.510000 +11/18/2011,33.160000,33.990000,31.920000,32.000000 +11/21/2011,34.590000,35.290000,32.530000,32.910000 +11/22/2011,33.120000,33.390000,31.280000,31.970000 +11/23/2011,32.910000,34.570000,32.680000,33.980000 +11/25/2011,34.610000,34.770000,33.120000,34.470000 +11/28/2011,31.930000,33.110000,31.570000,32.130000 +11/29/2011,31.760000,32.020000,30.560000,30.640000 +11/30/2011,27.720000,28.500000,27.030000,27.800000 +12/01/2011,27.630000,27.890000,26.640000,27.410000 +12/02/2011,26.260000,27.620000,25.290000,27.520000 +12/05/2011,26.740000,28.310000,26.000000,27.840000 +12/06/2011,27.910000,28.130000,27.410000,28.130000 +12/07/2011,28.610000,29.580000,28.440000,28.670000 +12/08/2011,29.630000,30.910000,29.020000,30.590000 +12/09/2011,29.610000,29.610000,26.290000,26.380000 +12/12/2011,26.780000,27.730000,25.640000,25.670000 +12/13/2011,24.720000,26.280000,23.270000,25.410000 +12/14/2011,26.160000,27.550000,25.760000,26.040000 +12/15/2011,24.380000,25.280000,24.140000,25.110000 +12/16/2011,24.160000,25.020000,23.510000,24.290000 +12/19/2011,25.140000,25.380000,24.380000,24.920000 +12/20/2011,23.560000,23.580000,22.540000,23.220000 +12/21/2011,22.520000,23.940000,21.120000,21.430000 +12/22/2011,21.080000,21.330000,20.340000,21.160000 +12/23/2011,21.100000,21.210000,20.720000,20.730000 +12/27/2011,22.580000,22.660000,21.680000,21.910000 +12/28/2011,22.120000,23.560000,22.110000,23.520000 +12/29/2011,23.520000,23.520000,22.650000,22.650000 +12/30/2011,22.860000,23.460000,22.650000,23.400000 +01/03/2012,22.950000,23.100000,22.540000,22.970000 +01/04/2012,23.440000,23.730000,22.220000,22.220000 +01/05/2012,22.750000,23.090000,21.340000,21.480000 +01/06/2012,21.240000,21.720000,20.580000,20.630000 +01/09/2012,21.670000,21.780000,21.000000,21.070000 +01/10/2012,20.140000,20.690000,20.050000,20.690000 +01/11/2012,21.180000,21.220000,20.980000,21.050000 +01/12/2012,21.010000,22.030000,20.460000,20.470000 +01/13/2012,21.410000,22.430000,20.910000,20.910000 +01/17/2012,20.900000,22.250000,20.690000,22.200000 +01/18/2012,23.200000,23.440000,20.780000,20.890000 +01/19/2012,20.490000,20.870000,19.450000,19.870000 +01/20/2012,19.910000,19.940000,18.160000,18.280000 +01/23/2012,19.220000,19.310000,18.550000,18.670000 +01/24/2012,19.760000,20.000000,18.630000,18.910000 +01/25/2012,19.350000,19.550000,17.150000,18.310000 +01/26/2012,17.960000,19.170000,16.800000,18.570000 +01/27/2012,19.160000,19.160000,18.260000,18.530000 +01/30/2012,20.330000,20.330000,19.380000,19.400000 +01/31/2012,19.070000,19.840000,18.130000,19.440000 +02/01/2012,18.680000,18.820000,17.990000,18.550000 +02/02/2012,18.380000,18.500000,17.980000,17.980000 +02/03/2012,16.840000,17.320000,16.100000,17.100000 +02/06/2012,17.980000,18.020000,16.110000,17.760000 +02/07/2012,17.930000,18.100000,17.500000,17.650000 +02/08/2012,17.790000,18.460000,17.530000,18.160000 +02/09/2012,18.120000,18.720000,18.070000,18.630000 +02/10/2012,20.100000,21.980000,19.020000,20.790000 +02/13/2012,19.640000,19.680000,17.920000,19.040000 +02/14/2012,19.450000,20.760000,18.950000,19.540000 +02/15/2012,19.740000,21.770000,19.440000,21.140000 +02/16/2012,21.590000,21.760000,19.220000,19.220000 +02/17/2012,18.730000,18.790000,17.540000,17.780000 +02/21/2012,18.410000,18.940000,17.650000,18.190000 +02/22/2012,18.850000,18.940000,17.740000,18.190000 +02/23/2012,18.730000,18.970000,16.640000,16.800000 +02/24/2012,16.680000,17.620000,16.420000,17.310000 +02/27/2012,19.100000,19.250000,17.580000,18.190000 +02/28/2012,18.670000,18.670000,17.880000,17.960000 +02/29/2012,17.800000,18.750000,17.530000,18.430000 +03/01/2012,18.020000,18.030000,17.260000,17.260000 +03/02/2012,17.650000,17.650000,17.140000,17.290000 +03/05/2012,18.270000,18.900000,18.020000,18.050000 +03/06/2012,20.570000,21.240000,20.300000,20.870000 +03/07/2012,20.430000,20.440000,19.070000,19.070000 +03/08/2012,18.080000,18.460000,17.760000,17.950000 +03/09/2012,17.160000,17.540000,16.630000,17.110000 +03/12/2012,15.790000,16.670000,15.230000,15.640000 +03/13/2012,14.000000,16.080000,13.990000,14.800000 +03/14/2012,14.420000,16.190000,14.390000,15.310000 +03/15/2012,15.320000,16.060000,14.580000,15.420000 +03/16/2012,14.430000,15.240000,13.660000,14.470000 +03/19/2012,15.420000,15.430000,14.540000,15.040000 +03/20/2012,15.820000,15.950000,15.110000,15.580000 +03/21/2012,14.720000,15.310000,14.190000,15.130000 +03/22/2012,16.040000,16.580000,15.560000,15.570000 +03/23/2012,15.650000,16.390000,14.690000,14.820000 +03/26/2012,14.510000,15.030000,14.260000,14.260000 +03/27/2012,14.520000,15.590000,14.140000,15.590000 +03/28/2012,15.580000,17.270000,15.400000,15.470000 +03/29/2012,16.840000,17.200000,15.390000,15.480000 +03/30/2012,14.880000,15.980000,14.670000,15.500000 +04/02/2012,16.350000,16.580000,15.020000,15.640000 +04/03/2012,15.610000,16.650000,15.560000,15.660000 +04/04/2012,17.070000,17.740000,16.310000,16.440000 +04/05/2012,17.020000,17.130000,16.290000,16.700000 +04/09/2012,18.940000,18.940000,17.930000,18.810000 +04/10/2012,19.100000,21.060000,18.620000,20.390000 +04/11/2012,19.220000,20.120000,18.730000,20.020000 +04/12/2012,19.630000,19.740000,17.200000,17.200000 +04/13/2012,17.950000,19.620000,17.850000,19.550000 +04/16/2012,18.870000,20.420000,18.600000,19.550000 +04/17/2012,18.660000,18.660000,17.580000,18.460000 +04/18/2012,19.020000,19.170000,17.700000,18.640000 +04/19/2012,18.510000,19.690000,17.690000,18.360000 +04/20/2012,17.920000,18.050000,16.970000,17.440000 +04/23/2012,20.220000,20.270000,18.950000,18.970000 +04/24/2012,19.220000,19.220000,18.090000,18.100000 +04/25/2012,17.050000,17.380000,16.820000,16.820000 +04/26/2012,16.970000,17.040000,15.750000,16.240000 +04/27/2012,15.830000,16.470000,15.830000,16.320000 +04/30/2012,17.040000,17.410000,16.920000,17.150000 +05/01/2012,17.270000,17.490000,16.010000,16.600000 +05/02/2012,17.250000,17.630000,16.780000,16.880000 +05/03/2012,16.900000,17.920000,16.730000,17.560000 +05/04/2012,18.030000,19.280000,17.810000,19.160000 +05/07/2012,19.800000,19.870000,18.410000,18.940000 +05/08/2012,19.440000,20.910000,17.950000,19.050000 +05/09/2012,20.650000,21.590000,19.380000,20.080000 +05/10/2012,19.250000,19.880000,18.770000,18.830000 +05/11/2012,19.930000,19.940000,18.620000,19.890000 +05/14/2012,21.470000,21.870000,20.940000,21.870000 +05/15/2012,21.430000,22.700000,20.760000,21.970000 +05/16/2012,21.540000,22.690000,20.830000,22.270000 +05/17/2012,21.990000,24.510000,21.870000,24.490000 +05/18/2012,23.270000,25.140000,23.070000,25.100000 +05/21/2012,24.880000,24.880000,22.010000,22.010000 +05/22/2012,21.760000,23.190000,19.980000,22.480000 +05/23/2012,23.320000,24.620000,21.990000,22.330000 +05/24/2012,22.000000,23.220000,21.480000,21.540000 +05/25/2012,22.050000,22.290000,21.300000,21.760000 +05/29/2012,21.700000,22.470000,20.990000,21.030000 +05/30/2012,22.680000,24.140000,22.660000,24.140000 +05/31/2012,23.830000,25.460000,22.780000,24.060000 +06/01/2012,25.870000,26.710000,23.940000,26.660000 +06/04/2012,26.350000,27.730000,25.720000,26.120000 +06/05/2012,25.900000,25.900000,24.500000,24.680000 +06/06/2012,23.760000,23.890000,21.800000,22.160000 +06/07/2012,21.000000,22.480000,20.740000,21.720000 +06/08/2012,22.540000,23.100000,20.290000,21.230000 +06/11/2012,19.870000,23.560000,19.630000,23.560000 +06/12/2012,23.150000,23.900000,22.090000,22.090000 +06/13/2012,22.930000,24.930000,22.660000,24.270000 +06/14/2012,24.190000,24.810000,21.550000,21.680000 +06/15/2012,22.470000,23.090000,20.610000,21.110000 +06/18/2012,21.760000,21.980000,18.240000,18.320000 +06/19/2012,17.660000,18.620000,17.360000,18.380000 +06/20/2012,17.960000,20.050000,17.090000,17.240000 +06/21/2012,16.890000,20.480000,16.770000,20.080000 +06/22/2012,18.650000,19.370000,17.900000,18.110000 +06/25/2012,20.470000,21.360000,19.890000,20.380000 +06/26/2012,20.010000,20.570000,19.420000,19.720000 +06/27/2012,19.550000,20.120000,19.380000,19.450000 +06/28/2012,20.330000,21.190000,19.600000,19.710000 +06/29/2012,17.520000,19.710000,16.870000,17.080000 +07/02/2012,17.620000,18.190000,16.660000,16.800000 +07/03/2012,16.670000,16.920000,16.270000,16.660000 +07/05/2012,17.610000,18.220000,17.180000,17.500000 +07/06/2012,18.200000,18.250000,16.950000,17.100000 +07/09/2012,18.170000,18.320000,17.730000,17.980000 +07/10/2012,17.510000,19.190000,17.290000,18.720000 +07/11/2012,17.980000,19.170000,17.840000,17.950000 +07/12/2012,18.820000,19.510000,17.750000,18.330000 +07/13/2012,17.780000,17.820000,16.360000,16.740000 +07/16/2012,17.310000,17.320000,16.460000,17.110000 +07/17/2012,16.720000,17.460000,16.090000,16.480000 +07/18/2012,16.810000,16.810000,15.690000,16.160000 +07/19/2012,16.060000,16.700000,15.450000,15.450000 +07/20/2012,16.650000,17.050000,15.970000,16.270000 +07/23/2012,20.410000,20.490000,18.340000,18.620000 +07/24/2012,18.380000,21.000000,18.370000,20.470000 +07/25/2012,19.790000,20.670000,18.990000,19.340000 +07/26/2012,17.680000,18.470000,17.070000,17.530000 +07/27/2012,17.110000,17.300000,16.520000,16.700000 +07/30/2012,17.550000,18.080000,17.230000,18.030000 +07/31/2012,18.400000,19.090000,18.260000,18.930000 +08/01/2012,18.800000,19.180000,18.200000,18.960000 +08/02/2012,19.050000,19.250000,17.560000,17.570000 +08/03/2012,16.050000,16.450000,15.640000,15.640000 +08/06/2012,15.850000,16.270000,15.820000,15.950000 +08/07/2012,15.550000,16.030000,15.480000,15.990000 +08/08/2012,16.460000,16.470000,15.270000,15.320000 +08/09/2012,15.390000,15.670000,15.280000,15.280000 +08/10/2012,15.340000,15.500000,14.730000,14.740000 +08/13/2012,14.090000,14.670000,13.670000,13.700000 +08/14/2012,13.910000,15.060000,13.910000,14.850000 +08/15/2012,14.820000,14.980000,14.360000,14.630000 +08/16/2012,14.880000,15.150000,14.280000,14.290000 +08/17/2012,14.230000,14.300000,13.300000,13.450000 +08/20/2012,14.110000,14.780000,13.990000,14.020000 +08/21/2012,14.100000,15.440000,14.040000,15.020000 +08/22/2012,15.320000,15.520000,14.750000,15.110000 +08/23/2012,15.000000,16.450000,15.000000,15.960000 +08/24/2012,15.990000,16.000000,15.180000,15.180000 +08/27/2012,16.150000,16.380000,15.750000,16.350000 +08/28/2012,16.320000,16.920000,16.010000,16.490000 +08/29/2012,16.610000,17.060000,16.500000,17.060000 +08/30/2012,17.480000,18.050000,17.440000,17.830000 +08/31/2012,17.250000,18.040000,16.920000,17.470000 +09/04/2012,18.650000,18.960000,17.850000,17.980000 +09/05/2012,17.380000,17.840000,16.990000,17.740000 +09/06/2012,17.300000,17.300000,15.600000,15.600000 +09/07/2012,15.600000,15.600000,14.330000,14.380000 +09/10/2012,14.270000,16.280000,13.970000,16.280000 +09/11/2012,16.110000,16.410000,15.780000,16.410000 +09/12/2012,15.590000,16.310000,15.430000,15.800000 +09/13/2012,15.600000,16.540000,13.910000,14.050000 +09/14/2012,13.820000,14.710000,13.510000,14.510000 +09/17/2012,14.670000,14.920000,14.380000,14.590000 +09/18/2012,14.510000,14.880000,14.170000,14.180000 +09/19/2012,13.950000,14.080000,13.610000,13.880000 +09/20/2012,14.630000,14.670000,14.070000,14.070000 +09/21/2012,13.940000,14.180000,13.690000,13.980000 +09/24/2012,15.060000,15.060000,13.870000,14.150000 +09/25/2012,14.190000,15.720000,14.030000,15.430000 +09/26/2012,15.830000,17.080000,15.830000,16.810000 +09/27/2012,16.380000,16.500000,14.830000,14.840000 +09/28/2012,15.230000,15.770000,14.950000,15.730000 +10/01/2012,16.030000,16.530000,15.130000,16.320000 +10/02/2012,15.850000,16.500000,15.700000,15.710000 +10/03/2012,15.630000,16.020000,15.130000,15.430000 +10/04/2012,15.230000,15.330000,14.530000,14.550000 +10/05/2012,13.680000,14.780000,13.670000,14.330000 +10/08/2012,15.190000,15.460000,15.040000,15.110000 +10/09/2012,15.280000,16.400000,15.180000,16.370000 +10/10/2012,16.520000,16.790000,16.130000,16.290000 +10/11/2012,15.330000,15.800000,15.310000,15.590000 +10/12/2012,15.410000,16.180000,14.960000,16.140000 +10/15/2012,16.050000,16.210000,15.230000,15.270000 +10/16/2012,14.840000,15.230000,14.500000,15.220000 +10/17/2012,15.430000,15.630000,14.900000,15.070000 +10/18/2012,15.250000,15.500000,14.680000,15.030000 +10/19/2012,14.910000,17.600000,14.900000,17.060000 +10/22/2012,17.440000,17.980000,16.620000,16.620000 +10/23/2012,18.230000,19.650000,18.170000,18.830000 +10/24/2012,18.220000,18.670000,17.930000,18.330000 +10/25/2012,17.560000,18.640000,17.300000,18.120000 +10/26/2012,18.030000,18.640000,17.520000,17.810000 +10/31/2012,17.680000,18.840000,17.560000,18.600000 +11/01/2012,17.770000,17.790000,16.450000,16.690000 +11/02/2012,16.060000,17.600000,16.050000,17.590000 +11/05/2012,18.330000,18.700000,18.130000,18.420000 +11/06/2012,18.160000,18.170000,17.190000,17.580000 +11/07/2012,17.720000,19.400000,17.620000,19.080000 +11/08/2012,18.690000,18.690000,17.960000,18.490000 +11/09/2012,18.800000,18.810000,17.670000,18.610000 +11/12/2012,18.150000,18.150000,16.450000,16.680000 +11/13/2012,17.360000,17.380000,16.120000,16.650000 +11/14/2012,16.320000,18.050000,15.930000,17.920000 +11/15/2012,17.740000,18.640000,17.620000,17.990000 +11/16/2012,17.650000,18.500000,16.410000,16.410000 +11/19/2012,15.880000,15.980000,15.100000,15.240000 +11/20/2012,15.110000,15.650000,15.060000,15.080000 +11/21/2012,14.960000,15.430000,14.770000,15.310000 +11/23/2012,15.000000,15.260000,15.000000,15.140000 +11/26/2012,15.630000,15.840000,15.470000,15.500000 +11/27/2012,15.300000,15.930000,15.010000,15.920000 +11/28/2012,16.430000,16.980000,15.470000,15.510000 +11/29/2012,15.210000,15.510000,15.020000,15.060000 +11/30/2012,15.260000,16.170000,14.890000,15.870000 +12/03/2012,15.810000,16.690000,15.760000,16.640000 +12/04/2012,16.660000,17.370000,16.380000,17.120000 +12/05/2012,16.950000,17.530000,16.270000,16.460000 +12/06/2012,16.590000,16.850000,16.310000,16.580000 +12/07/2012,16.120000,16.650000,15.730000,15.900000 +12/10/2012,16.470000,16.470000,15.960000,16.050000 +12/11/2012,15.940000,16.010000,15.420000,15.570000 +12/12/2012,15.600000,16.090000,15.410000,15.950000 +12/13/2012,15.870000,16.670000,15.710000,16.560000 +12/14/2012,16.680000,17.150000,16.610000,17.000000 +12/17/2012,17.200000,17.200000,16.210000,16.340000 +12/18/2012,16.390000,16.430000,15.460000,15.570000 +12/19/2012,16.050000,17.460000,16.040000,17.360000 +12/20/2012,17.260000,17.960000,17.110000,17.670000 +12/21/2012,19.850000,19.930000,17.760000,17.840000 +12/24/2012,18.460000,18.660000,17.840000,17.840000 +12/26/2012,18.710000,19.630000,18.610000,19.480000 +12/27/2012,19.390000,20.900000,19.110000,19.470000 +12/28/2012,20.320000,23.230000,19.940000,22.720000 +12/31/2012,22.140000,22.720000,17.880000,18.020000 +01/02/2013,15.240000,15.930000,14.600000,14.680000 +01/03/2013,14.770000,14.920000,14.240000,14.560000 +01/04/2013,14.230000,14.310000,13.640000,13.830000 +01/07/2013,14.530000,14.530000,13.710000,13.790000 +01/08/2013,13.880000,14.290000,13.620000,13.620000 +01/09/2013,13.320000,13.930000,13.220000,13.810000 +01/10/2013,13.330000,13.880000,13.330000,13.490000 +01/11/2013,13.550000,13.790000,13.220000,13.360000 +01/14/2013,13.660000,13.850000,13.410000,13.520000 +01/15/2013,13.970000,13.990000,13.330000,13.550000 +01/16/2013,13.700000,13.760000,13.200000,13.420000 +01/17/2013,13.450000,13.700000,13.160000,13.570000 +01/18/2013,13.520000,13.530000,12.290000,12.460000 +01/22/2013,13.280000,13.320000,12.430000,12.430000 +01/23/2013,12.670000,12.670000,12.300000,12.460000 +01/24/2013,12.730000,13.500000,12.400000,12.690000 +01/25/2013,12.630000,12.990000,12.500000,12.890000 +01/28/2013,13.290000,13.910000,13.290000,13.570000 +01/29/2013,13.870000,13.880000,13.040000,13.310000 +01/30/2013,13.640000,14.330000,13.600000,14.320000 +01/31/2013,14.430000,14.430000,14.040000,14.280000 +02/01/2013,13.370000,13.380000,12.720000,12.900000 +02/04/2013,14.000000,14.750000,13.800000,14.670000 +02/05/2013,14.210000,14.210000,13.390000,13.720000 +02/06/2013,14.060000,14.080000,13.340000,13.410000 +02/07/2013,13.470000,14.410000,13.430000,13.500000 +02/08/2013,13.200000,13.200000,12.890000,13.020000 +02/11/2013,13.370000,13.420000,12.910000,12.940000 +02/12/2013,12.820000,13.130000,12.630000,12.640000 +02/13/2013,12.880000,13.190000,12.670000,12.980000 +02/14/2013,13.300000,13.320000,12.640000,12.660000 +02/15/2013,12.470000,12.890000,12.240000,12.460000 +02/19/2013,12.810000,12.850000,12.080000,12.310000 +02/20/2013,12.320000,14.680000,12.320000,14.680000 +02/21/2013,14.680000,16.210000,14.670000,15.220000 +02/22/2013,14.600000,15.020000,14.160000,14.170000 +02/25/2013,13.690000,19.280000,13.570000,18.990000 +02/26/2013,17.500000,18.230000,16.750000,16.870000 +02/27/2013,16.570000,16.600000,14.420000,14.730000 +02/28/2013,15.000000,15.600000,14.160000,15.510000 +03/01/2013,16.100000,16.820000,15.140000,15.360000 +03/04/2013,16.160000,16.160000,14.010000,14.010000 +03/05/2013,13.440000,13.660000,13.240000,13.480000 +03/06/2013,13.180000,13.770000,13.170000,13.530000 +03/07/2013,13.450000,13.560000,13.030000,13.060000 +03/08/2013,12.670000,13.300000,12.490000,12.590000 +03/11/2013,12.310000,12.340000,11.500000,11.560000 +03/12/2013,11.790000,12.930000,11.740000,12.270000 +03/13/2013,12.180000,12.550000,11.790000,11.830000 +03/14/2013,11.700000,11.750000,11.050000,11.300000 +03/15/2013,11.520000,11.990000,11.210000,11.300000 +03/18/2013,13.470000,13.640000,12.570000,13.360000 +03/19/2013,13.030000,15.400000,12.920000,14.390000 +03/20/2013,13.180000,13.180000,12.300000,12.670000 +03/21/2013,13.070000,14.210000,12.620000,13.990000 +03/22/2013,13.340000,13.850000,13.190000,13.570000 +03/25/2013,12.850000,14.610000,12.390000,13.740000 +03/26/2013,12.950000,13.210000,12.690000,12.770000 +03/27/2013,13.720000,13.970000,12.970000,13.150000 +03/28/2013,12.910000,13.070000,12.540000,12.700000 +04/01/2013,13.460000,14.050000,13.260000,13.580000 +04/02/2013,13.110000,13.180000,12.760000,12.780000 +04/03/2013,12.650000,14.660000,12.620000,14.210000 +04/04/2013,14.100000,14.790000,13.890000,13.890000 +04/05/2013,15.640000,15.650000,13.860000,13.920000 +04/08/2013,14.040000,14.500000,13.190000,13.190000 +04/09/2013,13.110000,13.680000,12.750000,12.840000 +04/10/2013,12.660000,12.880000,12.320000,12.360000 +04/11/2013,12.550000,12.620000,12.150000,12.240000 +04/12/2013,12.610000,13.120000,11.990000,12.060000 +04/15/2013,13.120000,17.270000,12.660000,17.270000 +04/16/2013,14.720000,14.870000,13.910000,13.960000 +04/17/2013,15.350000,17.900000,14.980000,16.510000 +04/18/2013,16.340000,18.200000,16.320000,17.560000 +04/19/2013,16.670000,16.980000,14.870000,14.970000 +04/22/2013,15.080000,16.000000,14.040000,14.390000 +04/23/2013,13.810000,14.870000,13.460000,13.480000 +04/24/2013,13.570000,13.750000,13.360000,13.610000 +04/25/2013,13.610000,13.870000,13.130000,13.620000 +04/26/2013,13.940000,14.180000,13.490000,13.610000 +04/29/2013,13.720000,13.940000,13.360000,13.710000 +04/30/2013,13.710000,14.280000,13.510000,13.520000 +05/01/2013,13.880000,14.670000,13.870000,14.490000 +05/02/2013,14.480000,14.480000,13.580000,13.590000 +05/03/2013,12.920000,13.150000,12.770000,12.850000 +05/06/2013,13.060000,13.190000,12.660000,12.660000 +05/07/2013,12.630000,12.960000,12.490000,12.830000 +05/08/2013,12.870000,13.040000,12.620000,12.660000 +05/09/2013,12.910000,13.530000,12.780000,13.130000 +05/10/2013,13.080000,13.450000,12.540000,12.590000 +05/13/2013,12.570000,12.870000,12.490000,12.550000 +05/14/2013,12.610000,13.210000,12.540000,12.770000 +05/15/2013,12.980000,13.430000,12.780000,12.810000 +05/16/2013,13.070000,13.460000,12.790000,13.070000 +05/17/2013,12.730000,12.940000,12.260000,12.450000 +05/20/2013,13.280000,13.280000,12.840000,13.020000 +05/21/2013,13.080000,13.440000,12.890000,13.370000 +05/22/2013,13.450000,14.450000,13.050000,13.820000 +05/23/2013,14.940000,15.110000,13.870000,14.070000 +05/24/2013,14.590000,14.790000,13.990000,13.990000 +05/28/2013,13.670000,14.560000,13.560000,14.480000 +05/29/2013,15.300000,15.650000,14.590000,14.830000 +05/30/2013,14.900000,14.980000,14.270000,14.530000 +05/31/2013,15.020000,16.350000,14.360000,16.300000 +06/03/2013,16.400000,17.580000,16.150000,16.280000 +06/04/2013,16.160000,17.250000,15.820000,16.270000 +06/05/2013,16.860000,17.840000,16.570000,17.500000 +06/06/2013,17.700000,18.510000,16.600000,16.630000 +06/07/2013,15.900000,16.210000,14.960000,15.140000 +06/10/2013,15.160000,15.600000,15.100000,15.440000 +06/11/2013,16.910000,17.140000,16.000000,17.070000 +06/12/2013,16.510000,18.600000,16.430000,18.590000 +06/13/2013,18.380000,18.580000,16.370000,16.410000 +06/14/2013,16.630000,17.260000,16.030000,17.150000 +06/17/2013,16.530000,17.620000,16.330000,16.800000 +06/18/2013,16.810000,16.950000,16.460000,16.610000 +06/19/2013,16.890000,17.180000,15.360000,16.640000 +06/20/2013,18.400000,21.320000,18.010000,20.490000 +06/21/2013,18.970000,20.930000,18.250000,18.900000 +06/24/2013,20.870000,21.910000,18.580000,20.110000 +06/25/2013,18.650000,19.220000,17.820000,18.470000 +06/26/2013,17.230000,18.060000,17.080000,17.210000 +06/27/2013,16.600000,16.970000,16.340000,16.860000 +06/28/2013,17.250000,17.690000,16.190000,16.860000 +07/01/2013,16.900000,16.900000,16.000000,16.370000 +07/02/2013,16.490000,16.930000,15.880000,16.440000 +07/03/2013,17.220000,17.320000,16.200000,16.200000 +07/05/2013,15.590000,16.280000,14.890000,14.890000 +07/08/2013,14.660000,15.270000,14.660000,14.780000 +07/09/2013,14.330000,14.650000,14.260000,14.350000 +07/10/2013,14.460000,14.620000,14.060000,14.210000 +07/11/2013,13.570000,14.200000,13.570000,14.010000 +07/12/2013,13.900000,14.040000,13.740000,13.840000 +07/15/2013,13.980000,14.110000,13.500000,13.790000 +07/16/2013,13.780000,14.560000,13.780000,14.420000 +07/17/2013,14.200000,14.440000,13.760000,13.780000 +07/18/2013,13.630000,13.800000,13.200000,13.770000 +07/19/2013,13.890000,13.970000,12.540000,12.540000 +07/22/2013,13.230000,13.370000,12.290000,12.290000 +07/23/2013,12.150000,13.060000,12.070000,12.660000 +07/24/2013,12.690000,13.490000,12.690000,13.180000 +07/25/2013,13.470000,13.540000,12.910000,12.970000 +07/26/2013,13.410000,13.730000,12.710000,12.720000 +07/29/2013,13.540000,13.860000,13.380000,13.390000 +07/30/2013,13.450000,14.140000,13.350000,13.390000 +07/31/2013,13.550000,13.830000,12.940000,13.450000 +08/01/2013,12.890000,13.250000,12.820000,12.940000 +08/02/2013,12.660000,12.740000,11.980000,11.980000 +08/05/2013,12.290000,12.420000,11.830000,11.840000 +08/06/2013,12.190000,12.930000,12.060000,12.720000 +08/07/2013,13.170000,13.910000,12.960000,12.980000 +08/08/2013,12.500000,13.130000,12.370000,12.730000 +08/09/2013,12.880000,13.660000,12.710000,13.410000 +08/12/2013,13.520000,13.570000,12.800000,12.810000 +08/13/2013,12.860000,13.370000,12.290000,12.310000 +08/14/2013,12.480000,13.090000,12.350000,13.040000 +08/15/2013,14.140000,14.850000,13.910000,14.730000 +08/16/2013,14.560000,14.880000,13.620000,14.370000 +08/19/2013,14.940000,15.200000,14.350000,15.100000 +08/20/2013,15.220000,15.250000,14.290000,14.910000 +08/21/2013,16.000000,16.560000,14.670000,15.940000 +08/22/2013,15.260000,15.260000,14.660000,14.760000 +08/23/2013,14.290000,14.820000,13.980000,13.980000 +08/26/2013,14.370000,15.010000,13.900000,14.990000 +08/27/2013,16.560000,17.130000,15.820000,16.770000 +08/28/2013,16.960000,17.110000,16.100000,16.490000 +08/29/2013,16.790000,16.980000,15.990000,16.810000 +08/30/2013,16.750000,17.810000,16.700000,17.010000 +09/03/2013,16.470000,17.370000,16.110000,16.610000 +09/04/2013,16.880000,17.010000,15.770000,15.880000 +09/05/2013,16.120000,16.120000,15.630000,15.770000 +09/06/2013,15.350000,16.810000,15.170000,15.850000 +09/09/2013,15.860000,16.020000,15.220000,15.630000 +09/10/2013,14.890000,15.090000,14.500000,14.530000 +09/11/2013,14.740000,14.740000,13.820000,13.820000 +09/12/2013,13.930000,14.390000,13.730000,14.290000 +09/13/2013,14.270000,14.550000,14.110000,14.160000 +09/16/2013,14.100000,14.490000,13.870000,14.380000 +09/17/2013,14.440000,14.610000,14.280000,14.530000 +09/18/2013,14.680000,14.680000,13.230000,13.590000 +09/19/2013,13.020000,13.390000,13.020000,13.160000 +09/20/2013,13.300000,13.470000,12.520000,13.120000 +09/23/2013,14.040000,14.710000,14.020000,14.310000 +09/24/2013,14.170000,14.370000,13.750000,14.080000 +09/25/2013,14.240000,14.620000,13.890000,14.010000 +09/26/2013,13.800000,14.400000,13.580000,14.060000 +09/27/2013,14.620000,15.790000,14.620000,15.460000 +09/30/2013,17.490000,17.490000,16.160000,16.600000 +10/01/2013,16.310000,16.460000,15.470000,15.540000 +10/02/2013,16.400000,16.810000,16.130000,16.600000 +10/03/2013,16.630000,18.710000,16.630000,17.670000 +10/04/2013,17.720000,17.870000,16.660000,16.740000 +10/07/2013,18.760000,19.410000,18.080000,19.410000 +10/08/2013,19.010000,21.010000,18.980000,20.340000 +10/09/2013,20.190000,21.340000,19.040000,19.600000 +10/10/2013,17.660000,17.920000,16.290000,16.480000 +10/11/2013,16.310000,16.380000,15.460000,15.720000 +10/14/2013,17.080000,17.740000,15.800000,16.070000 +10/15/2013,16.410000,18.670000,16.160000,18.660000 +10/16/2013,17.140000,17.150000,14.670000,14.710000 +10/17/2013,14.520000,14.590000,12.890000,13.480000 +10/18/2013,12.860000,13.530000,12.340000,13.040000 +10/21/2013,13.340000,13.630000,13.070000,13.160000 +10/22/2013,12.990000,13.920000,12.930000,13.330000 +10/23/2013,13.710000,14.210000,13.420000,13.420000 +10/24/2013,13.500000,13.620000,13.150000,13.200000 +10/25/2013,13.160000,13.440000,13.080000,13.090000 +10/28/2013,13.620000,13.720000,13.220000,13.310000 +10/29/2013,13.250000,13.630000,13.060000,13.410000 +10/30/2013,13.720000,21.260000,13.640000,13.650000 +10/31/2013,13.830000,14.020000,13.280000,13.750000 +11/01/2013,13.460000,13.920000,13.220000,13.280000 +11/04/2013,13.350000,13.670000,12.910000,12.930000 +11/05/2013,13.220000,13.640000,12.860000,13.270000 +11/06/2013,13.010000,13.330000,12.670000,12.670000 +11/07/2013,12.990000,14.140000,12.930000,13.910000 +11/08/2013,13.760000,13.800000,12.840000,12.900000 +11/11/2013,12.850000,12.930000,12.400000,12.530000 +11/12/2013,12.800000,13.060000,12.630000,12.820000 +11/13/2013,13.350000,13.350000,12.460000,12.520000 +11/14/2013,12.800000,12.940000,12.280000,12.370000 +11/15/2013,12.120000,12.450000,11.990000,12.190000 +11/18/2013,12.410000,13.220000,12.410000,13.100000 +11/19/2013,13.030000,13.680000,12.880000,13.390000 +11/20/2013,13.560000,13.940000,12.970000,13.400000 +11/21/2013,13.090000,13.090000,12.440000,12.660000 +11/22/2013,12.690000,12.910000,12.240000,12.260000 +11/25/2013,12.550000,12.920000,12.490000,12.790000 +11/26/2013,12.840000,12.990000,12.490000,12.810000 +11/27/2013,12.810000,12.980000,12.440000,12.980000 +11/29/2013,13.060000,13.780000,12.930000,13.700000 +12/02/2013,13.910000,14.310000,13.780000,14.230000 +12/03/2013,14.740000,15.040000,14.430000,14.550000 +12/04/2013,15.030000,15.710000,14.220000,14.700000 +12/05/2013,14.820000,15.380000,14.700000,15.080000 +12/06/2013,13.970000,14.090000,13.620000,13.790000 +12/09/2013,13.970000,14.070000,13.490000,13.490000 +12/10/2013,14.140000,14.220000,13.690000,13.910000 +12/11/2013,13.980000,15.430000,13.980000,15.420000 +12/12/2013,15.440000,16.090000,15.210000,15.540000 +12/13/2013,15.170000,15.800000,15.060000,15.760000 +12/16/2013,15.640000,16.080000,15.300000,16.030000 +12/17/2013,16.040000,16.670000,15.810000,16.210000 +12/18/2013,15.950000,16.750000,13.740000,13.800000 +12/19/2013,13.590000,14.210000,12.890000,14.150000 +12/20/2013,13.610000,13.870000,13.120000,13.790000 +12/23/2013,13.370000,13.530000,13.020000,13.040000 +12/24/2013,12.850000,12.890000,12.480000,12.480000 +12/26/2013,12.480000,12.500000,11.690000,12.330000 +12/27/2013,12.210000,12.590000,12.200000,12.460000 +12/30/2013,12.870000,13.580000,12.830000,13.560000 +12/31/2013,13.430000,14.350000,13.380000,13.720000 +01/02/2014,14.320000,14.590000,14.000000,14.230000 +01/03/2014,14.060000,14.220000,13.570000,13.760000 +01/06/2014,13.410000,14.000000,13.220000,13.550000 +01/07/2014,12.380000,13.280000,12.160000,12.920000 +01/08/2014,13.040000,13.240000,12.860000,12.870000 +01/09/2014,12.830000,13.260000,12.830000,12.890000 +01/10/2014,12.600000,12.900000,12.140000,12.140000 +01/13/2014,12.180000,13.650000,11.820000,13.280000 +01/14/2014,12.890000,12.900000,11.960000,12.280000 +01/15/2014,12.150000,12.400000,11.810000,12.280000 +01/16/2014,12.320000,12.660000,12.280000,12.530000 +01/17/2014,12.340000,12.930000,12.040000,12.440000 +01/21/2014,12.630000,13.420000,12.610000,12.870000 +01/22/2014,12.570000,13.120000,12.550000,12.840000 +01/23/2014,13.670000,14.660000,13.670000,13.770000 +01/24/2014,14.950000,18.140000,14.920000,18.140000 +01/27/2014,17.290000,18.990000,16.850000,17.420000 +01/28/2014,17.270000,17.280000,15.800000,15.800000 +01/29/2014,17.950000,18.040000,16.710000,17.350000 +01/30/2014,16.370000,17.390000,15.960000,17.290000 +01/31/2014,18.710000,18.990000,17.270000,18.410000 +02/03/2014,18.570000,21.480000,18.340000,21.440000 +02/04/2014,19.990000,20.070000,18.440000,19.110000 +02/05/2014,19.590000,20.720000,19.130000,19.950000 +02/06/2014,19.090000,19.090000,17.090000,17.230000 +02/07/2014,16.150000,16.310000,15.090000,15.290000 +02/10/2014,15.630000,15.760000,15.100000,15.260000 +02/11/2014,15.290000,15.290000,14.080000,14.510000 +02/12/2014,14.310000,14.640000,14.020000,14.300000 +02/13/2014,15.240000,15.240000,13.980000,14.140000 +02/14/2014,14.210000,14.220000,13.440000,13.570000 +02/18/2014,13.950000,14.510000,13.770000,13.870000 +02/19/2014,14.850000,15.730000,14.120000,15.500000 +02/20/2014,15.280000,15.800000,14.590000,14.790000 +02/21/2014,14.740000,14.790000,14.190000,14.680000 +02/24/2014,14.830000,14.830000,13.970000,14.230000 +02/25/2014,14.170000,14.830000,13.660000,13.670000 +02/26/2014,13.830000,14.540000,13.730000,14.350000 +02/27/2014,14.560000,14.690000,13.920000,14.040000 +02/28/2014,14.220000,14.790000,13.490000,14.000000 +03/03/2014,16.470000,16.780000,15.380000,16.000000 +03/04/2014,14.530000,14.540000,14.000000,14.100000 +03/05/2014,14.130000,14.320000,13.810000,13.890000 +03/06/2014,13.820000,14.420000,13.730000,14.210000 +03/07/2014,13.510000,14.430000,13.510000,14.110000 +03/10/2014,14.760000,15.280000,14.200000,14.200000 +03/11/2014,14.220000,14.930000,13.840000,14.800000 +03/12/2014,15.370000,15.640000,14.430000,14.470000 +03/13/2014,14.280000,16.660000,14.240000,16.220000 +03/14/2014,16.740000,18.220000,16.090000,17.820000 +03/17/2014,16.390000,16.400000,15.370000,15.640000 +03/18/2014,15.420000,15.470000,14.160000,14.520000 +03/19/2014,14.560000,15.950000,13.890000,15.120000 +03/20/2014,15.580000,15.620000,14.500000,14.520000 +03/21/2014,13.960000,15.170000,13.770000,15.000000 +03/24/2014,14.700000,16.070000,14.560000,15.090000 +03/25/2014,14.160000,15.050000,13.960000,14.020000 +03/26/2014,13.640000,15.280000,13.460000,14.930000 +03/27/2014,15.000000,15.630000,14.490000,14.620000 +03/28/2014,14.150000,14.860000,13.730000,14.410000 +03/31/2014,13.880000,14.160000,13.570000,13.880000 +04/01/2014,13.430000,13.560000,13.060000,13.100000 +04/02/2014,13.170000,13.350000,12.920000,13.090000 +04/03/2014,13.020000,13.700000,13.020000,13.370000 +04/04/2014,12.880000,14.550000,12.600000,13.960000 +04/07/2014,14.960000,16.010000,14.570000,15.570000 +04/08/2014,15.590000,16.200000,14.810000,14.890000 +04/09/2014,14.580000,14.940000,13.700000,13.820000 +04/10/2014,13.980000,16.380000,13.810000,15.890000 +04/11/2014,16.660000,17.850000,15.890000,17.030000 +04/14/2014,16.140000,17.400000,16.100000,16.110000 +04/15/2014,16.140000,17.500000,15.470000,15.610000 +04/16/2014,14.890000,15.270000,14.050000,14.180000 +04/17/2014,14.090000,14.170000,13.070000,13.360000 +04/21/2014,14.100000,14.110000,13.170000,13.250000 +04/22/2014,13.130000,13.260000,12.900000,13.190000 +04/23/2014,13.350000,13.750000,13.270000,13.270000 +04/24/2014,13.360000,14.080000,13.090000,13.320000 +04/25/2014,13.930000,14.670000,13.910000,14.060000 +04/28/2014,14.270000,15.280000,13.820000,13.970000 +04/29/2014,13.880000,14.240000,13.610000,13.710000 +04/30/2014,14.050000,14.180000,13.340000,13.410000 +05/01/2014,13.640000,13.750000,13.100000,13.250000 +05/02/2014,13.150000,13.500000,12.830000,12.910000 +05/05/2014,13.950000,14.200000,13.080000,13.290000 +05/06/2014,13.650000,13.900000,13.280000,13.800000 +05/07/2014,13.640000,14.490000,13.390000,13.400000 +05/08/2014,13.690000,13.880000,12.920000,13.430000 +05/09/2014,13.550000,14.030000,12.870000,12.920000 +05/12/2014,12.460000,12.580000,11.880000,12.230000 +05/13/2014,12.360000,12.740000,12.050000,12.130000 +05/14/2014,12.420000,12.510000,12.030000,12.170000 +05/15/2014,12.730000,13.770000,12.720000,13.170000 +05/16/2014,13.310000,13.660000,12.260000,12.440000 +05/19/2014,13.170000,13.210000,12.280000,12.420000 +05/20/2014,12.690000,13.300000,12.320000,12.960000 +05/21/2014,12.380000,12.460000,11.800000,11.910000 +05/22/2014,11.930000,12.090000,11.680000,12.030000 +05/23/2014,11.960000,11.970000,11.360000,11.360000 +05/27/2014,11.690000,11.840000,11.500000,11.510000 +05/28/2014,11.600000,11.860000,11.500000,11.680000 +05/29/2014,11.580000,11.820000,11.410000,11.570000 +05/30/2014,11.660000,11.700000,11.320000,11.400000 +06/02/2014,11.690000,12.170000,11.290000,11.580000 +06/03/2014,12.030000,12.130000,11.720000,11.870000 +06/04/2014,12.150000,12.330000,11.910000,12.080000 +06/05/2014,12.090000,12.340000,11.440000,11.680000 +06/06/2014,11.320000,11.390000,10.730000,10.730000 +06/09/2014,11.230000,11.510000,10.990000,11.150000 +06/10/2014,11.300000,11.660000,10.930000,10.990000 +06/11/2014,11.420000,11.870000,11.190000,11.600000 +06/12/2014,11.810000,12.810000,11.710000,12.560000 +06/13/2014,12.450000,12.690000,11.890000,12.180000 +06/16/2014,12.650000,12.870000,12.280000,12.650000 +06/17/2014,12.810000,12.890000,12.060000,12.060000 +06/18/2014,11.800000,11.910000,10.570000,10.610000 +06/19/2014,10.530000,10.820000,10.420000,10.620000 +06/20/2014,10.400000,11.020000,10.340000,10.850000 +06/23/2014,11.260000,11.350000,10.920000,10.980000 +06/24/2014,11.020000,12.270000,10.870000,12.130000 +06/25/2014,12.310000,12.330000,11.370000,11.590000 +06/26/2014,11.510000,12.510000,11.500000,11.630000 +06/27/2014,11.720000,12.040000,11.190000,11.260000 +06/30/2014,11.750000,11.810000,11.300000,11.570000 +07/01/2014,11.280000,11.420000,10.920000,11.150000 +07/02/2014,11.180000,11.180000,10.560000,10.820000 +07/03/2014,10.470000,10.760000,10.280000,10.320000 +07/07/2014,11.150000,11.540000,11.010000,11.330000 +07/08/2014,11.720000,12.510000,11.720000,11.980000 +07/09/2014,11.740000,12.050000,11.500000,11.650000 +07/10/2014,13.220000,13.230000,12.050000,12.590000 +07/11/2014,12.500000,12.680000,12.070000,12.080000 +07/14/2014,11.600000,11.830000,11.400000,11.820000 +07/15/2014,11.530000,12.470000,11.460000,11.960000 +07/16/2014,10.810000,11.450000,10.590000,11.000000 +07/17/2014,11.350000,15.380000,10.850000,14.540000 +07/18/2014,13.340000,13.550000,12.040000,12.060000 +07/21/2014,12.850000,13.620000,12.460000,12.810000 +07/22/2014,11.970000,12.240000,11.690000,12.240000 +07/23/2014,11.540000,12.160000,11.410000,11.520000 +07/24/2014,11.430000,12.060000,11.430000,11.840000 +07/25/2014,12.030000,12.750000,12.030000,12.690000 +07/28/2014,12.930000,13.640000,12.540000,12.560000 +07/29/2014,12.350000,13.350000,12.120000,13.280000 +07/30/2014,12.630000,14.070000,12.530000,13.330000 +07/31/2014,14.350000,17.110000,14.260000,16.950000 +08/01/2014,16.670000,17.570000,15.520000,17.030000 +08/04/2014,16.640000,16.800000,14.690000,15.120000 +08/05/2014,15.540000,17.140000,15.100000,16.870000 +08/06/2014,17.220000,17.300000,15.700000,16.370000 +08/07/2014,15.500000,17.250000,15.440000,16.660000 +08/08/2014,16.430000,17.090000,15.530000,15.770000 +08/11/2014,15.160000,15.160000,13.720000,14.230000 +08/12/2014,14.420000,14.740000,13.760000,14.130000 +08/13/2014,13.570000,13.930000,12.840000,12.900000 +08/14/2014,13.050000,13.130000,12.420000,12.420000 +08/15/2014,11.910000,14.940000,11.890000,13.150000 +08/18/2014,12.850000,12.850000,12.260000,12.320000 +08/19/2014,12.140000,12.460000,11.910000,12.210000 +08/20/2014,12.230000,12.240000,11.600000,11.780000 +08/21/2014,11.930000,13.510000,11.520000,11.760000 +08/22/2014,11.880000,12.480000,11.470000,11.470000 +08/25/2014,11.580000,11.770000,11.240000,11.700000 +08/26/2014,11.330000,11.930000,11.330000,11.630000 +08/27/2014,11.690000,11.930000,11.540000,11.780000 +08/28/2014,12.380000,12.730000,12.050000,12.050000 +08/29/2014,11.860000,12.440000,11.780000,11.980000 +09/02/2014,12.320000,13.410000,12.230000,12.250000 +09/03/2014,12.030000,12.550000,11.910000,12.360000 +09/04/2014,12.400000,12.990000,11.700000,12.640000 +09/05/2014,12.370000,13.180000,11.960000,12.090000 +09/08/2014,12.640000,13.090000,12.400000,12.660000 +09/09/2014,12.700000,13.910000,12.700000,13.500000 +09/10/2014,13.360000,14.060000,12.860000,12.880000 +09/11/2014,13.530000,13.670000,12.660000,12.800000 +09/12/2014,12.850000,14.270000,12.850000,13.310000 +09/15/2014,13.540000,14.190000,13.540000,14.120000 +09/16/2014,14.480000,14.530000,12.720000,12.730000 +09/17/2014,13.060000,14.530000,11.730000,12.650000 +09/18/2014,12.550000,12.580000,11.980000,12.030000 +09/19/2014,11.730000,12.610000,11.520000,12.110000 +09/22/2014,13.140000,13.980000,13.130000,13.690000 +09/23/2014,14.820000,14.940000,13.830000,14.930000 +09/24/2014,14.620000,14.930000,13.240000,13.270000 +09/25/2014,14.110000,16.690000,14.030000,15.640000 +09/26/2014,15.770000,15.980000,14.310000,14.850000 +09/29/2014,16.960000,17.080000,15.450000,15.980000 +09/30/2014,15.490000,16.430000,15.180000,16.310000 +10/01/2014,16.440000,17.560000,16.080000,16.710000 +10/02/2014,16.700000,17.980000,15.900000,16.160000 +10/03/2014,15.160000,15.430000,14.440000,14.550000 +10/06/2014,14.460000,15.770000,14.050000,15.460000 +10/07/2014,16.180000,17.460000,15.970000,17.200000 +10/08/2014,17.350000,18.030000,14.970000,15.110000 +10/09/2014,15.640000,19.380000,15.340000,18.760000 +10/10/2014,19.110000,22.060000,18.140000,21.240000 +10/13/2014,21.160000,24.640000,20.520000,24.640000 +10/14/2014,23.770000,24.550000,21.480000,22.790000 +10/15/2014,26.360000,31.060000,24.640000,26.250000 +10/16/2014,29.260000,29.410000,24.610000,25.200000 +10/17/2014,21.680000,23.080000,20.230000,21.990000 +10/20/2014,22.110000,22.160000,18.510000,18.570000 +10/21/2014,17.720000,17.750000,16.030000,16.080000 +10/22/2014,16.060000,18.430000,15.560000,17.870000 +10/23/2014,16.070000,17.060000,15.680000,16.530000 +10/24/2014,16.430000,18.060000,16.090000,16.110000 +10/27/2014,17.240000,17.870000,16.000000,16.040000 +10/28/2014,15.690000,15.780000,14.390000,14.390000 +10/29/2014,14.610000,16.280000,14.190000,15.150000 +10/30/2014,15.310000,15.750000,14.070000,14.520000 +10/31/2014,13.840000,14.830000,13.720000,14.030000 +11/03/2014,14.410000,14.990000,14.230000,14.730000 +11/04/2014,15.050000,15.930000,14.830000,14.890000 +11/05/2014,14.150000,14.990000,14.150000,14.170000 +11/06/2014,14.460000,15.080000,13.670000,13.670000 +11/07/2014,13.710000,14.160000,13.010000,13.120000 +11/10/2014,13.160000,13.250000,12.380000,12.670000 +11/11/2014,12.710000,13.180000,12.600000,12.920000 +11/12/2014,13.760000,13.760000,12.990000,13.020000 +11/13/2014,13.330000,14.310000,12.870000,13.790000 +11/14/2014,13.790000,14.150000,13.310000,13.310000 +11/17/2014,14.700000,14.730000,13.840000,13.990000 +11/18/2014,13.860000,13.990000,13.130000,13.860000 +11/19/2014,14.010000,14.780000,13.830000,13.960000 +11/20/2014,14.660000,15.740000,13.580000,13.580000 +11/21/2014,13.160000,13.800000,12.900000,12.900000 +11/24/2014,12.920000,13.020000,12.430000,12.620000 +11/25/2014,12.550000,13.020000,12.230000,12.250000 +11/26/2014,12.270000,12.400000,11.910000,12.070000 +11/28/2014,12.640000,13.490000,12.360000,13.330000 +12/01/2014,14.160000,14.750000,13.940000,14.290000 +12/02/2014,14.100000,14.170000,12.850000,12.850000 +12/03/2014,12.750000,12.880000,12.210000,12.470000 +12/04/2014,12.700000,13.230000,12.090000,12.380000 +12/05/2014,12.080000,12.280000,11.530000,11.820000 +12/08/2014,13.050000,14.670000,12.550000,14.210000 +12/09/2014,16.230000,16.680000,14.840000,14.890000 +12/10/2014,15.560000,18.920000,15.400000,18.530000 +12/11/2014,17.680000,20.130000,15.940000,20.080000 +12/12/2014,20.510000,23.060000,18.340000,21.080000 +12/15/2014,19.590000,24.830000,17.770000,20.420000 +12/16/2014,23.550000,25.200000,19.600000,23.570000 +12/17/2014,23.900000,24.610000,19.260000,19.440000 +12/18/2014,17.140000,18.510000,16.070000,16.810000 +12/19/2014,16.570000,17.200000,16.110000,16.490000 +12/22/2014,16.320000,16.880000,15.030000,15.250000 +12/23/2014,14.470000,15.210000,14.320000,14.800000 +12/24/2014,14.520000,14.540000,14.010000,14.370000 +12/26/2014,14.600000,14.840000,14.130000,14.500000 +12/29/2014,16.040000,16.140000,15.060000,15.060000 +12/30/2014,15.900000,16.200000,15.480000,15.920000 +12/31/2014,15.910000,19.910000,15.860000,19.200000 +01/02/2015,17.760000,20.140000,17.050000,17.790000 +01/05/2015,19.190000,21.290000,19.190000,19.920000 +01/06/2015,20.330000,22.900000,19.520000,21.120000 +01/07/2015,20.150000,20.720000,19.040000,19.310000 +01/08/2015,17.930000,18.090000,16.990000,17.010000 +01/09/2015,16.440000,18.420000,16.440000,17.550000 +01/12/2015,18.020000,20.440000,18.020000,19.600000 +01/13/2015,18.210000,21.580000,17.650000,20.560000 +01/14/2015,22.870000,23.340000,21.320000,21.480000 +01/15/2015,21.230000,23.310000,20.860000,22.390000 +01/16/2015,22.800000,23.430000,20.950000,20.950000 +01/20/2015,20.070000,21.370000,19.580000,19.890000 +01/21/2015,20.920000,21.280000,18.640000,18.850000 +01/22/2015,17.980000,19.230000,16.070000,16.400000 +01/23/2015,16.790000,17.090000,15.810000,16.660000 +01/26/2015,16.960000,17.430000,15.520000,15.520000 +01/27/2015,17.600000,18.410000,16.670000,17.220000 +01/28/2015,16.970000,20.440000,16.920000,20.440000 +01/29/2015,20.460000,21.560000,18.660000,18.760000 +01/30/2015,20.230000,22.180000,19.240000,20.970000 +02/02/2015,20.890000,22.810000,19.350000,19.430000 +02/03/2015,18.410000,18.890000,17.200000,17.330000 +02/04/2015,17.820000,18.380000,16.820000,18.330000 +02/05/2015,17.290000,17.430000,16.670000,16.850000 +02/06/2015,16.290000,18.740000,16.060000,17.290000 +02/09/2015,19.160000,19.280000,18.210000,18.550000 +02/10/2015,17.720000,18.360000,16.970000,17.230000 +02/11/2015,17.430000,17.810000,16.820000,16.960000 +02/12/2015,16.390000,16.470000,15.280000,15.340000 +02/13/2015,15.110000,15.640000,14.690000,14.690000 +02/17/2015,15.860000,16.330000,15.530000,15.800000 +02/18/2015,16.740000,16.740000,15.440000,15.450000 +02/19/2015,16.110000,16.220000,15.100000,15.290000 +02/20/2015,15.730000,16.290000,14.270000,14.300000 +02/23/2015,15.050000,15.480000,14.490000,14.560000 +02/24/2015,14.500000,14.630000,13.530000,13.690000 +02/25/2015,13.640000,14.060000,12.860000,13.840000 +02/26/2015,13.550000,14.570000,13.550000,13.910000 +02/27/2015,14.070000,14.170000,13.290000,13.340000 +03/02/2015,13.900000,13.900000,12.870000,13.040000 +03/03/2015,13.350000,14.690000,13.250000,13.860000 +03/04/2015,14.310000,15.330000,14.130000,14.230000 +03/05/2015,14.010000,14.580000,13.880000,14.040000 +03/06/2015,14.610000,15.830000,14.180000,15.200000 +03/09/2015,15.720000,15.760000,14.710000,15.060000 +03/10/2015,16.470000,16.910000,16.030000,16.690000 +03/11/2015,16.440000,17.190000,16.290000,16.870000 +03/12/2015,16.450000,16.450000,15.300000,15.420000 +03/13/2015,15.470000,16.740000,15.320000,16.000000 +03/16/2015,15.780000,15.890000,15.360000,15.610000 +03/17/2015,16.310000,16.370000,15.660000,15.660000 +03/18/2015,14.600000,16.290000,13.380000,13.970000 +03/19/2015,14.680000,14.970000,13.840000,14.070000 +03/20/2015,13.520000,13.530000,12.540000,13.020000 +03/23/2015,13.520000,13.530000,12.890000,13.410000 +03/24/2015,13.360000,13.680000,12.590000,13.620000 +03/25/2015,13.260000,15.550000,13.200000,15.440000 +03/26/2015,16.640000,17.190000,15.230000,15.800000 +03/27/2015,15.730000,15.830000,14.190000,15.070000 +03/30/2015,14.760000,14.760000,14.080000,14.510000 +03/31/2015,14.970000,15.740000,14.330000,15.290000 +04/01/2015,15.320000,16.660000,15.080000,15.110000 +04/02/2015,15.300000,15.510000,14.270000,14.670000 +04/06/2015,15.750000,15.760000,14.040000,14.740000 +04/07/2015,14.570000,14.810000,14.010000,14.780000 +04/08/2015,14.590000,14.770000,13.750000,13.980000 +04/09/2015,14.140000,14.590000,13.090000,13.090000 +04/10/2015,13.200000,13.260000,12.510000,12.580000 +04/13/2015,13.170000,14.310000,12.710000,13.940000 +04/14/2015,14.340000,14.740000,13.640000,13.670000 +04/15/2015,13.580000,13.580000,12.830000,12.840000 +04/16/2015,13.270000,13.350000,12.500000,12.600000 +04/17/2015,13.970000,15.020000,13.730000,13.890000 +04/20/2015,13.670000,13.670000,12.830000,13.300000 +04/21/2015,12.750000,13.510000,12.660000,13.250000 +04/22/2015,12.970000,13.800000,12.570000,12.710000 +04/23/2015,12.960000,12.960000,12.120000,12.480000 +04/24/2015,12.210000,13.020000,12.160000,12.290000 +04/27/2015,12.340000,13.400000,12.330000,13.120000 +04/28/2015,13.260000,14.230000,12.410000,12.410000 +04/29/2015,13.440000,14.340000,12.610000,13.390000 +04/30/2015,13.890000,15.290000,12.490000,14.550000 +05/01/2015,13.980000,13.980000,12.680000,12.700000 +05/04/2015,13.120000,13.180000,12.100000,12.850000 +05/05/2015,13.210000,14.410000,12.970000,14.310000 +05/06/2015,13.930000,16.360000,13.890000,15.150000 +05/07/2015,15.480000,15.970000,14.810000,15.130000 +05/08/2015,13.360000,13.420000,12.700000,12.860000 +05/11/2015,13.350000,13.850000,13.000000,13.850000 +05/12/2015,14.730000,15.130000,13.730000,13.860000 +05/13/2015,13.630000,14.040000,13.060000,13.760000 +05/14/2015,13.140000,13.290000,12.720000,12.740000 +05/15/2015,12.460000,13.090000,12.350000,12.380000 +05/18/2015,13.080000,13.220000,12.550000,12.730000 +05/19/2015,12.950000,13.130000,12.550000,12.850000 +05/20/2015,12.900000,13.270000,12.620000,12.880000 +05/21/2015,13.030000,13.090000,12.090000,12.110000 +05/22/2015,12.370000,12.370000,11.820000,12.130000 +05/26/2015,13.450000,14.630000,13.340000,14.060000 +05/27/2015,14.160000,14.410000,13.050000,13.270000 +05/28/2015,13.490000,13.990000,13.310000,13.310000 +05/29/2015,13.590000,14.430000,13.400000,13.840000 +06/01/2015,13.920000,14.860000,13.470000,13.970000 +06/02/2015,14.720000,15.050000,13.590000,14.240000 +06/03/2015,13.730000,14.200000,13.400000,13.660000 +06/04/2015,14.570000,15.490000,13.990000,14.710000 +06/05/2015,15.010000,15.650000,14.210000,14.210000 +06/08/2015,14.840000,15.500000,14.670000,15.290000 +06/09/2015,15.180000,15.740000,14.470000,14.470000 +06/10/2015,14.240000,14.370000,12.960000,13.220000 +06/11/2015,13.040000,13.220000,12.560000,12.850000 +06/12/2015,13.310000,14.020000,13.300000,13.780000 +06/15/2015,15.480000,15.570000,14.910000,15.390000 +06/16/2015,15.620000,15.620000,14.810000,14.810000 +06/17/2015,14.660000,15.490000,14.070000,14.500000 +06/18/2015,14.030000,14.030000,12.540000,13.190000 +06/19/2015,13.350000,14.000000,12.960000,13.960000 +06/22/2015,13.420000,13.460000,12.430000,12.740000 +06/23/2015,12.500000,12.680000,11.930000,12.110000 +06/24/2015,12.570000,13.330000,12.010000,13.260000 +06/25/2015,12.960000,14.160000,12.920000,14.010000 +06/26/2015,14.130000,14.910000,13.640000,14.020000 +06/29/2015,16.700000,19.500000,15.820000,18.850000 +06/30/2015,17.600000,19.800000,17.490000,18.230000 +07/01/2015,16.630000,17.260000,15.650000,16.090000 +07/02/2015,15.430000,17.480000,15.390000,16.790000 +07/06/2015,18.650000,18.950000,16.570000,17.010000 +07/07/2015,17.220000,19.200000,15.930000,16.090000 +07/08/2015,17.380000,19.760000,16.940000,19.660000 +07/09/2015,17.460000,20.050000,17.200000,19.970000 +07/10/2015,17.450000,18.170000,16.600000,16.830000 +07/13/2015,15.290000,15.360000,13.820000,13.900000 +07/14/2015,13.910000,13.950000,12.900000,13.370000 +07/15/2015,13.350000,13.970000,12.810000,13.230000 +07/16/2015,12.590000,12.610000,11.870000,12.110000 +07/17/2015,11.770000,12.220000,11.770000,11.950000 +07/20/2015,12.250000,12.370000,11.710000,12.250000 +07/21/2015,12.420000,12.790000,12.210000,12.220000 +07/22/2015,12.770000,12.830000,12.050000,12.120000 +07/23/2015,12.060000,13.080000,11.730000,12.640000 +07/24/2015,12.870000,14.730000,12.860000,13.740000 +07/27/2015,15.600000,16.270000,15.030000,15.600000 +07/28/2015,14.870000,15.620000,13.320000,13.440000 +07/29/2015,13.570000,13.590000,11.850000,12.500000 +07/30/2015,12.720000,13.420000,12.090000,12.130000 +07/31/2015,12.030000,12.630000,11.820000,12.120000 +08/03/2015,12.850000,13.550000,12.320000,12.560000 +08/04/2015,12.660000,13.220000,12.290000,13.000000 +08/05/2015,12.020000,12.720000,10.880000,12.510000 +08/06/2015,12.200000,14.250000,12.160000,13.770000 +08/07/2015,13.570000,14.580000,13.290000,13.390000 +08/10/2015,12.730000,12.780000,12.180000,12.230000 +08/11/2015,13.240000,14.330000,13.020000,13.710000 +08/12/2015,15.190000,16.280000,13.450000,13.610000 +08/13/2015,13.870000,14.330000,13.060000,13.490000 +08/14/2015,13.690000,13.870000,12.800000,12.830000 +08/17/2015,14.320000,14.520000,13.010000,13.020000 +08/18/2015,13.410000,13.940000,13.170000,13.790000 +08/19/2015,14.840000,15.960000,13.730000,15.250000 +08/20/2015,16.550000,19.240000,16.130000,19.140000 +08/21/2015,22.550000,28.380000,20.800000,28.030000 +08/24/2015,28.030000,53.290000,28.030000,40.740000 +08/25/2015,31.130000,38.060000,28.080000,36.020000 +08/26/2015,31.130000,35.620000,28.670000,30.320000 +08/27/2015,27.110000,29.900000,24.490000,26.100000 +08/28/2015,26.690000,29.200000,25.770000,26.050000 +08/31/2015,27.030000,29.370000,26.630000,28.430000 +09/01/2015,31.910000,33.820000,29.910000,31.400000 +09/02/2015,29.140000,30.450000,24.770000,26.090000 +09/03/2015,25.210000,26.310000,23.450000,25.610000 +09/04/2015,27.430000,29.470000,25.680000,27.800000 +09/08/2015,25.050000,26.250000,24.130000,24.900000 +09/09/2015,22.390000,26.820000,21.510000,26.230000 +09/10/2015,26.870000,27.220000,23.530000,24.370000 +09/11/2015,25.380000,25.810000,23.150000,23.200000 +09/14/2015,24.030000,25.320000,23.640000,24.250000 +09/15/2015,23.280000,23.770000,22.130000,22.540000 +09/16/2015,22.570000,22.940000,21.090000,21.350000 +09/17/2015,21.540000,23.330000,17.870000,21.140000 +09/18/2015,23.070000,23.990000,20.980000,22.280000 +09/21/2015,21.970000,22.480000,20.050000,20.140000 +09/22/2015,22.970000,26.290000,22.250000,22.440000 +09/23/2015,22.090000,23.200000,21.140000,22.130000 +09/24/2015,23.530000,25.300000,21.810000,23.470000 +09/25/2015,21.120000,24.290000,20.810000,23.620000 +09/28/2015,25.020000,28.330000,24.940000,27.630000 +09/29/2015,26.570000,28.200000,25.760000,26.830000 +09/30/2015,24.640000,25.880000,23.250000,24.500000 +10/01/2015,23.140000,25.230000,22.550000,22.550000 +10/02/2015,23.990000,24.470000,20.350000,20.940000 +10/05/2015,20.310000,20.420000,19.140000,19.540000 +10/06/2015,19.540000,20.320000,18.820000,19.400000 +10/07/2015,18.960000,19.730000,18.330000,18.400000 +10/08/2015,18.620000,19.020000,16.340000,17.420000 +10/09/2015,17.150000,18.200000,16.890000,17.080000 +10/12/2015,17.680000,17.810000,16.150000,16.170000 +10/13/2015,17.080000,17.700000,16.140000,17.670000 +10/14/2015,17.670000,18.780000,17.300000,18.030000 +10/15/2015,17.620000,17.850000,16.040000,16.050000 +10/16/2015,15.640000,16.860000,15.050000,15.050000 +10/19/2015,15.680000,16.230000,14.820000,14.980000 +10/20/2015,15.170000,16.340000,14.720000,15.750000 +10/21/2015,14.980000,16.700000,14.410000,16.700000 +10/22/2015,15.020000,15.920000,14.450000,14.450000 +10/23/2015,13.460000,15.120000,13.240000,14.460000 +10/26/2015,14.760000,15.430000,14.680000,15.290000 +10/27/2015,15.750000,15.990000,14.780000,15.430000 +10/28/2015,15.140000,15.730000,12.800000,14.330000 +10/29/2015,14.800000,15.460000,14.330000,14.610000 +10/30/2015,14.600000,15.390000,14.000000,15.070000 +11/02/2015,15.410000,15.510000,13.670000,14.150000 +11/03/2015,14.330000,14.730000,13.810000,14.540000 +11/04/2015,14.040000,15.880000,13.960000,15.510000 +11/05/2015,15.390000,16.390000,15.000000,15.050000 +11/06/2015,14.910000,16.000000,14.320000,14.330000 +11/09/2015,15.340000,17.090000,15.140000,16.520000 +11/10/2015,16.690000,16.960000,15.240000,15.290000 +11/11/2015,15.070000,16.150000,15.020000,16.060000 +11/12/2015,17.060000,18.500000,16.650000,18.370000 +11/13/2015,18.680000,20.670000,18.200000,20.080000 +11/16/2015,20.510000,20.550000,17.250000,18.160000 +11/17/2015,17.820000,19.590000,16.860000,18.840000 +11/18/2015,19.010000,19.450000,16.800000,16.850000 +11/19/2015,16.250000,18.260000,16.000000,16.990000 +11/20/2015,16.130000,16.380000,15.470000,15.470000 +11/23/2015,16.150000,16.740000,15.380000,15.620000 +11/24/2015,16.530000,17.210000,15.480000,15.930000 +11/25/2015,15.550000,15.890000,15.050000,15.190000 +11/27/2015,15.310000,16.090000,15.120000,15.120000 +11/30/2015,15.550000,16.570000,15.520000,16.130000 +12/01/2015,15.610000,16.340000,14.630000,14.670000 +12/02/2015,15.040000,16.490000,14.710000,15.910000 +12/03/2015,15.870000,19.350000,15.860000,18.110000 +12/04/2015,17.430000,17.650000,14.690000,14.810000 +12/07/2015,15.650000,17.180000,15.580000,15.840000 +12/08/2015,17.690000,18.330000,16.520000,17.600000 +12/09/2015,18.050000,20.130000,15.720000,19.610000 +12/10/2015,19.250000,19.720000,18.130000,19.340000 +12/11/2015,21.360000,25.270000,20.880000,24.390000 +12/14/2015,24.700000,26.810000,21.470000,22.730000 +12/15/2015,20.760000,21.620000,20.020000,20.950000 +12/16/2015,19.250000,20.240000,17.120000,17.860000 +12/17/2015,16.180000,19.050000,16.130000,18.940000 +12/18/2015,19.340000,23.300000,18.750000,20.700000 +12/21/2015,19.640000,20.210000,18.700000,18.700000 +12/22/2015,17.610000,18.220000,16.600000,16.600000 +12/23/2015,15.860000,16.250000,15.330000,15.570000 +12/24/2015,15.440000,15.880000,14.450000,15.740000 +12/28/2015,17.650000,18.130000,16.880000,16.910000 +12/29/2015,15.910000,16.480000,15.630000,16.080000 +12/30/2015,16.500000,17.420000,16.500000,17.290000 +12/31/2015,17.970000,20.390000,17.510000,18.210000 +01/04/2016,22.480000,23.360000,20.670000,20.700000 +01/05/2016,20.750000,21.060000,19.250000,19.340000 +01/06/2016,21.670000,21.860000,19.800000,20.590000 +01/07/2016,23.220000,25.860000,22.400000,24.990000 +01/08/2016,22.960000,27.080000,22.480000,27.010000 +01/11/2016,25.580000,27.390000,23.830000,24.300000 +01/12/2016,22.970000,23.930000,21.910000,22.470000 +01/13/2016,21.720000,26.110000,21.440000,25.220000 +01/14/2016,24.750000,26.280000,23.070000,23.950000 +01/15/2016,28.960000,30.950000,26.670000,27.020000 +01/19/2016,25.400000,27.590000,25.210000,26.050000 +01/20/2016,27.780000,32.090000,26.590000,27.590000 +01/21/2016,27.790000,28.430000,25.010000,26.690000 +01/22/2016,24.210000,24.550000,22.220000,22.340000 +01/25/2016,23.300000,24.310000,22.380000,24.150000 +01/26/2016,23.750000,24.020000,22.330000,22.500000 +01/27/2016,22.880000,27.220000,20.420000,23.110000 +01/28/2016,22.150000,23.810000,21.900000,22.420000 +01/29/2016,21.590000,21.740000,19.500000,20.200000 +02/01/2016,21.320000,23.660000,19.610000,19.980000 +02/02/2016,21.340000,22.420000,21.060000,21.980000 +02/03/2016,21.490000,27.700000,21.420000,21.650000 +02/04/2016,22.290000,23.140000,21.240000,21.840000 +02/05/2016,22.090000,24.110000,21.910000,23.380000 +02/08/2016,25.890000,27.720000,25.560000,26.000000 +02/09/2016,28.300000,28.310000,25.990000,26.540000 +02/10/2016,25.750000,26.600000,24.470000,26.290000 +02/11/2016,29.010000,30.900000,26.670000,28.140000 +02/12/2016,27.160000,27.570000,24.920000,25.400000 +02/16/2016,24.960000,25.520000,23.320000,24.110000 +02/17/2016,23.400000,24.160000,21.830000,22.310000 +02/18/2016,22.160000,22.530000,21.290000,21.640000 +02/19/2016,22.390000,23.440000,20.520000,20.530000 +02/22/2016,20.140000,20.350000,19.020000,19.380000 +02/23/2016,19.750000,21.160000,19.540000,20.980000 +02/24/2016,22.280000,22.870000,20.260000,20.720000 +02/25/2016,20.540000,21.260000,19.100000,19.110000 +02/26/2016,18.890000,20.130000,18.460000,19.810000 +02/29/2016,20.490000,20.810000,18.380000,20.550000 +03/01/2016,19.840000,20.170000,17.660000,17.700000 +03/02/2016,17.980000,18.410000,16.780000,17.090000 +03/03/2016,17.250000,17.560000,16.320000,16.700000 +03/04/2016,16.480000,17.350000,16.050000,16.860000 +03/07/2016,17.980000,18.040000,16.870000,17.350000 +03/08/2016,18.380000,18.890000,17.820000,18.670000 +03/09/2016,18.560000,19.110000,18.310000,18.340000 +03/10/2016,18.170000,19.590000,17.060000,18.050000 +03/11/2016,17.090000,17.270000,16.280000,16.500000 +03/14/2016,17.010000,17.670000,16.690000,16.920000 +03/15/2016,17.600000,17.850000,16.840000,16.840000 +03/16/2016,15.960000,16.330000,14.890000,14.990000 +03/17/2016,15.340000,15.380000,13.820000,14.440000 +03/18/2016,14.050000,14.360000,13.750000,14.020000 +03/21/2016,14.570000,14.730000,13.790000,13.790000 +03/22/2016,14.570000,14.760000,13.750000,14.170000 +03/23/2016,14.570000,15.030000,14.330000,14.940000 +03/24/2016,16.300000,16.440000,14.710000,14.740000 +03/28/2016,15.650000,16.040000,14.890000,15.240000 +03/29/2016,15.740000,15.890000,13.790000,13.820000 +03/30/2016,13.690000,13.890000,13.060000,13.560000 +03/31/2016,13.730000,14.280000,13.490000,13.950000 +04/01/2016,15.230000,15.280000,13.000000,13.100000 +04/04/2016,13.880000,14.240000,13.660000,14.120000 +04/05/2016,15.390000,15.720000,14.930000,15.420000 +04/06/2016,15.610000,15.980000,14.000000,14.090000 +04/07/2016,15.140000,16.770000,14.680000,16.160000 +04/08/2016,15.340000,15.930000,14.840000,15.360000 +04/11/2016,15.340000,16.260000,14.830000,16.260000 +04/12/2016,15.980000,16.570000,14.840000,14.850000 +04/13/2016,14.490000,14.530000,13.600000,13.840000 +04/14/2016,13.900000,14.120000,13.380000,13.720000 +04/15/2016,13.770000,14.190000,13.580000,13.620000 +04/18/2016,14.870000,14.940000,13.230000,13.350000 +04/19/2016,13.180000,13.880000,12.980000,13.240000 +04/20/2016,13.390000,13.500000,12.500000,13.280000 +04/21/2016,13.200000,14.140000,13.160000,13.950000 +04/22/2016,13.700000,14.190000,13.150000,13.220000 +04/25/2016,14.070000,14.760000,13.860000,14.080000 +04/26/2016,14.010000,14.430000,13.660000,13.960000 +04/27/2016,14.150000,14.950000,13.500000,13.770000 +04/28/2016,14.530000,15.610000,13.300000,15.220000 +04/29/2016,15.210000,17.090000,14.910000,15.700000 +05/02/2016,16.330000,16.500000,14.480000,14.680000 +05/03/2016,14.920000,16.420000,14.910000,15.600000 +05/04/2016,15.470000,16.850000,15.390000,16.050000 +05/05/2016,15.540000,16.450000,15.220000,15.910000 +05/06/2016,16.200000,16.580000,14.710000,14.720000 +05/09/2016,15.200000,15.390000,14.170000,14.570000 +05/10/2016,13.980000,14.350000,13.550000,13.630000 +05/11/2016,13.920000,14.690000,13.290000,14.690000 +05/12/2016,14.550000,15.420000,13.950000,14.410000 +05/13/2016,15.150000,15.470000,13.970000,15.040000 +05/16/2016,15.720000,15.980000,14.280000,14.680000 +05/17/2016,14.570000,16.120000,14.480000,15.570000 +05/18/2016,15.720000,16.470000,14.860000,15.950000 +05/19/2016,16.370000,17.650000,16.280000,16.330000 +05/20/2016,16.130000,16.300000,15.110000,15.200000 +05/23/2016,16.330000,16.470000,15.400000,15.820000 +05/24/2016,16.030000,16.060000,14.360000,14.420000 +05/25/2016,14.190000,14.330000,13.640000,13.900000 +05/26/2016,13.800000,14.110000,13.430000,13.430000 +05/27/2016,13.490000,13.760000,13.040000,13.120000 +05/31/2016,13.940000,15.000000,13.450000,14.190000 +06/01/2016,14.450000,15.250000,14.180000,14.200000 +06/02/2016,14.420000,14.920000,13.620000,13.630000 +06/03/2016,13.780000,14.660000,12.900000,13.470000 +06/06/2016,13.840000,14.270000,13.420000,13.650000 +06/07/2016,12.770000,14.050000,12.720000,14.050000 +06/08/2016,13.840000,14.270000,13.700000,14.080000 +06/09/2016,14.010000,14.850000,13.990000,14.640000 +06/10/2016,14.890000,17.330000,14.850000,17.030000 +06/13/2016,18.240000,21.010000,17.890000,20.970000 +06/14/2016,21.280000,22.160000,20.270000,20.500000 +06/15/2016,20.250000,20.450000,18.630000,20.140000 +06/16/2016,20.800000,22.890000,19.240000,19.370000 +06/17/2016,19.420000,20.030000,18.710000,19.410000 +06/20/2016,17.420000,18.550000,16.590000,18.370000 +06/21/2016,17.670000,18.960000,16.910000,18.480000 +06/22/2016,18.260000,21.220000,17.830000,21.170000 +06/23/2016,19.540000,19.790000,17.250000,17.250000 +06/24/2016,26.060000,26.240000,19.480000,25.760000 +06/27/2016,24.380000,26.720000,22.930000,23.850000 +06/28/2016,21.760000,22.070000,18.750000,18.750000 +06/29/2016,18.120000,18.270000,16.480000,16.640000 +06/30/2016,16.910000,16.990000,15.290000,15.630000 +07/01/2016,15.590000,15.860000,14.610000,14.770000 +07/05/2016,16.050000,16.620000,15.490000,15.580000 +07/06/2016,15.870000,17.040000,14.960000,14.960000 +07/07/2016,14.800000,15.980000,14.330000,14.760000 +07/08/2016,14.640000,14.750000,13.190000,13.200000 +07/11/2016,13.250000,13.670000,13.000000,13.540000 +07/12/2016,12.930000,13.930000,12.750000,13.550000 +07/13/2016,13.320000,13.790000,12.920000,13.040000 +07/14/2016,12.500000,13.370000,12.140000,12.820000 +07/15/2016,13.120000,13.220000,12.270000,12.670000 +07/18/2016,12.750000,13.120000,12.330000,12.440000 +07/19/2016,12.530000,12.830000,11.940000,11.970000 +07/20/2016,11.940000,11.970000,11.400000,11.770000 +07/21/2016,11.800000,13.060000,11.690000,12.740000 +07/22/2016,12.800000,12.880000,11.970000,12.020000 +07/25/2016,12.640000,13.720000,12.390000,12.870000 +07/26/2016,12.880000,13.500000,12.800000,13.050000 +07/27/2016,12.610000,13.740000,12.500000,12.830000 +07/28/2016,12.510000,13.520000,12.360000,12.720000 +07/29/2016,12.850000,12.900000,11.770000,11.870000 +08/01/2016,11.890000,12.980000,11.860000,12.440000 +08/02/2016,12.390000,14.240000,12.350000,13.370000 +08/03/2016,13.530000,13.910000,12.730000,12.860000 +08/04/2016,12.730000,12.980000,11.790000,12.420000 +08/05/2016,12.080000,12.260000,11.180000,11.390000 +08/08/2016,11.660000,11.780000,11.410000,11.500000 +08/09/2016,11.400000,11.920000,11.020000,11.660000 +08/10/2016,11.550000,12.500000,11.370000,12.050000 +08/11/2016,11.930000,12.110000,11.380000,11.680000 +08/12/2016,11.610000,12.000000,11.280000,11.550000 +08/15/2016,11.810000,12.170000,11.580000,11.810000 +08/16/2016,12.040000,12.780000,11.870000,12.640000 +08/17/2016,12.570000,13.710000,12.140000,12.190000 +08/18/2016,12.200000,12.530000,11.420000,11.430000 +08/19/2016,11.670000,12.280000,11.330000,11.340000 +08/22/2016,12.530000,13.020000,11.940000,12.270000 +08/23/2016,12.150000,12.440000,11.720000,12.380000 +08/24/2016,12.700000,14.010000,12.300000,13.450000 +08/25/2016,13.620000,14.090000,13.290000,13.630000 +08/26/2016,13.540000,14.930000,12.130000,13.650000 +08/29/2016,14.090000,14.430000,12.900000,12.940000 +08/30/2016,12.940000,13.600000,12.700000,13.120000 +08/31/2016,13.140000,14.340000,12.970000,13.420000 +09/01/2016,13.070000,14.610000,12.990000,13.480000 +09/02/2016,13.470000,13.900000,11.900000,11.980000 +09/06/2016,12.420000,12.930000,11.850000,12.020000 +09/07/2016,11.890000,12.450000,11.770000,11.940000 +09/08/2016,11.740000,12.600000,11.650000,12.510000 +09/09/2016,12.520000,17.540000,12.520000,17.500000 +09/12/2016,20.130000,20.510000,14.760000,15.160000 +09/13/2016,15.980000,18.970000,15.830000,17.850000 +09/14/2016,17.630000,18.140000,16.340000,18.140000 +09/15/2016,17.970000,18.070000,15.740000,16.300000 +09/16/2016,16.410000,17.100000,15.280000,15.370000 +09/19/2016,15.140000,15.960000,14.600000,15.530000 +09/20/2016,14.980000,16.090000,14.690000,15.920000 +09/21/2016,15.070000,15.650000,12.980000,13.300000 +09/22/2016,13.390000,13.390000,11.760000,12.020000 +09/23/2016,12.000000,12.580000,11.930000,12.290000 +09/26/2016,13.260000,14.630000,13.260000,14.500000 +09/27/2016,13.360000,14.760000,12.970000,13.100000 +09/28/2016,12.900000,13.570000,12.240000,12.390000 +09/29/2016,12.530000,15.690000,12.140000,14.020000 +09/30/2016,14.910000,15.200000,12.530000,13.290000 +10/03/2016,13.750000,14.420000,13.420000,13.570000 +10/04/2016,13.400000,14.570000,12.920000,13.630000 +10/05/2016,13.560000,13.680000,12.700000,12.990000 +10/06/2016,13.110000,13.840000,12.800000,12.840000 +10/07/2016,13.520000,14.150000,12.210000,13.480000 +10/10/2016,14.190000,14.360000,13.290000,13.380000 +10/11/2016,13.710000,16.470000,13.690000,15.360000 +10/12/2016,15.530000,16.340000,15.260000,15.910000 +10/13/2016,16.880000,17.950000,16.140000,16.690000 +10/14/2016,16.490000,16.500000,15.250000,16.120000 +10/17/2016,17.010000,17.110000,16.130000,16.210000 +10/18/2016,15.820000,15.850000,15.030000,15.280000 +10/19/2016,15.450000,15.680000,13.870000,14.410000 +10/20/2016,14.430000,14.720000,13.740000,13.750000 +10/21/2016,14.040000,14.530000,13.270000,13.340000 +10/24/2016,13.190000,13.260000,12.830000,13.020000 +10/25/2016,12.910000,13.860000,12.730000,13.460000 +10/26/2016,13.660000,14.800000,13.660000,14.240000 +10/27/2016,14.370000,15.430000,13.600000,15.360000 +10/28/2016,15.670000,17.350000,14.650000,16.190000 +10/31/2016,16.310000,17.630000,16.250000,17.060000 +11/01/2016,16.540000,20.430000,16.510000,18.560000 +11/02/2016,19.090000,19.820000,18.560000,19.320000 +11/03/2016,19.850000,22.570000,18.840000,22.080000 +11/04/2016,21.860000,23.010000,19.200000,22.510000 +11/07/2016,19.780000,19.860000,18.390000,18.710000 +11/08/2016,18.920000,19.910000,17.700000,18.740000 +11/09/2016,20.700000,21.480000,14.330000,14.380000 +11/10/2016,14.010000,16.300000,13.260000,14.740000 +11/11/2016,14.830000,16.000000,14.150000,14.170000 +11/14/2016,14.690000,15.560000,14.390000,14.480000 +11/15/2016,14.160000,14.650000,13.300000,13.370000 +11/16/2016,13.510000,14.490000,13.510000,13.720000 +11/17/2016,13.370000,13.550000,12.970000,13.350000 +11/18/2016,13.560000,13.740000,12.850000,12.850000 +11/21/2016,13.270000,13.440000,12.160000,12.420000 +11/22/2016,12.260000,12.830000,12.200000,12.410000 +11/23/2016,12.340000,13.010000,12.190000,12.430000 +11/25/2016,12.520000,12.740000,12.310000,12.340000 +11/28/2016,13.400000,13.500000,12.740000,13.150000 +11/29/2016,13.070000,13.550000,12.620000,12.900000 +11/30/2016,12.600000,13.420000,12.230000,13.330000 +12/01/2016,13.400000,14.720000,13.050000,14.070000 +12/02/2016,14.160000,14.480000,12.390000,14.120000 +12/05/2016,13.750000,13.770000,12.140000,12.140000 +12/06/2016,12.190000,12.300000,11.540000,11.790000 +12/07/2016,11.590000,12.240000,11.330000,12.220000 +12/08/2016,12.100000,13.400000,11.300000,12.640000 +12/09/2016,12.590000,12.720000,11.670000,11.750000 +12/12/2016,12.230000,12.780000,12.070000,12.640000 +12/13/2016,12.460000,13.420000,12.340000,12.720000 +12/14/2016,12.880000,13.390000,12.480000,13.190000 +12/15/2016,13.070000,13.240000,12.460000,12.790000 +12/16/2016,12.880000,12.950000,12.150000,12.200000 +12/19/2016,12.500000,12.520000,11.670000,11.710000 +12/20/2016,11.650000,11.750000,11.380000,11.450000 +12/21/2016,11.440000,11.490000,10.930000,11.270000 +12/22/2016,11.320000,11.670000,11.140000,11.430000 +12/23/2016,11.380000,11.810000,11.350000,11.440000 +12/27/2016,12.260000,12.330000,11.840000,11.990000 +12/28/2016,11.890000,13.040000,11.850000,12.950000 +12/29/2016,13.150000,13.710000,12.950000,13.370000 +12/30/2016,13.200000,14.680000,13.050000,14.040000 +01/03/2017,14.070000,14.070000,12.850000,12.850000 +01/04/2017,12.780000,12.800000,11.630000,11.850000 +01/05/2017,11.960000,12.090000,11.400000,11.670000 +01/06/2017,11.700000,11.740000,10.980000,11.320000 +01/09/2017,11.710000,12.080000,11.460000,11.560000 +01/10/2017,11.590000,11.790000,11.310000,11.490000 +01/11/2017,11.560000,12.230000,11.210000,11.260000 +01/12/2017,11.480000,12.600000,11.320000,11.540000 +01/13/2017,11.450000,11.620000,10.940000,11.230000 +01/17/2017,12.200000,12.750000,11.790000,11.870000 +01/18/2017,11.790000,12.810000,11.690000,12.480000 +01/19/2017,12.580000,13.280000,12.170000,12.780000 +01/20/2017,12.580000,12.590000,11.530000,11.540000 +01/23/2017,12.300000,12.620000,11.590000,11.770000 +01/24/2017,11.820000,11.890000,11.040000,11.070000 +01/25/2017,10.790000,11.050000,10.510000,10.810000 +01/26/2017,10.610000,11.010000,10.600000,10.630000 +01/27/2017,10.570000,10.820000,10.300000,10.580000 +01/30/2017,11.100000,12.900000,11.100000,11.880000 +01/31/2017,12.290000,12.990000,11.790000,11.990000 +02/01/2017,11.790000,12.050000,9.970000,11.810000 +02/02/2017,12.370000,12.470000,11.620000,11.930000 +02/03/2017,11.840000,11.840000,10.720000,10.970000 +02/06/2017,11.370000,11.840000,11.090000,11.370000 +02/07/2017,11.390000,11.670000,11.060000,11.290000 +02/08/2017,11.190000,11.820000,11.150000,11.450000 +02/09/2017,11.440000,11.530000,10.740000,10.880000 +02/10/2017,10.850000,10.950000,10.550000,10.850000 +02/13/2017,11.360000,11.400000,11.070000,11.070000 +02/14/2017,11.170000,11.340000,10.730000,10.740000 +02/15/2017,10.840000,12.010000,10.800000,11.970000 +02/16/2017,12.020000,12.860000,11.690000,11.760000 +02/17/2017,11.840000,12.260000,11.370000,11.490000 +02/21/2017,12.050000,12.090000,11.500000,11.570000 +02/22/2017,11.480000,12.070000,11.440000,11.740000 +02/23/2017,11.660000,12.460000,11.540000,11.710000 +02/24/2017,11.810000,12.590000,11.340000,11.470000 +02/27/2017,11.780000,12.140000,11.530000,12.090000 +02/28/2017,12.190000,12.960000,12.130000,12.920000 +03/01/2017,12.310000,12.580000,11.780000,12.540000 +03/02/2017,12.430000,12.710000,11.320000,11.810000 +03/03/2017,11.960000,11.970000,10.940000,10.960000 +03/06/2017,11.590000,11.720000,11.060000,11.240000 +03/07/2017,11.270000,11.580000,11.040000,11.450000 +03/08/2017,11.490000,11.860000,11.090000,11.860000 +03/09/2017,11.750000,12.430000,11.620000,12.300000 +03/10/2017,11.970000,12.090000,11.460000,11.660000 +03/13/2017,12.160000,12.230000,11.290000,11.350000 +03/14/2017,11.390000,12.540000,11.280000,12.300000 +03/15/2017,12.120000,12.250000,10.600000,11.630000 +03/16/2017,11.290000,11.550000,11.160000,11.210000 +03/17/2017,11.380000,11.380000,10.780000,11.280000 +03/20/2017,11.710000,11.720000,11.030000,11.340000 +03/21/2017,11.150000,12.850000,10.920000,12.470000 +03/22/2017,12.950000,13.160000,11.990000,12.810000 +03/23/2017,12.650000,13.170000,12.180000,13.120000 +03/24/2017,12.860000,14.160000,12.270000,12.960000 +03/27/2017,14.780000,15.110000,12.480000,12.500000 +03/28/2017,12.440000,12.670000,11.340000,11.530000 +03/29/2017,11.540000,11.700000,11.030000,11.420000 +03/30/2017,11.370000,11.640000,11.120000,11.540000 +03/31/2017,11.610000,12.540000,11.500000,12.370000 +04/03/2017,12.590000,13.590000,12.270000,12.380000 +04/04/2017,12.710000,13.070000,11.700000,11.790000 +04/05/2017,11.890000,12.890000,10.900000,12.890000 +04/06/2017,13.110000,13.220000,11.700000,12.390000 +04/07/2017,13.170000,13.430000,12.230000,12.870000 +04/10/2017,13.240000,14.110000,12.940000,14.050000 +04/11/2017,14.320000,15.880000,14.170000,15.070000 +04/12/2017,15.160000,16.160000,14.840000,15.770000 +04/13/2017,15.890000,16.220000,14.970000,15.960000 +04/17/2017,16.190000,16.280000,14.600000,14.660000 +04/18/2017,14.500000,15.500000,14.290000,14.420000 +04/19/2017,14.000000,15.150000,13.460000,14.930000 +04/20/2017,14.590000,14.810000,13.830000,14.150000 +04/21/2017,13.850000,15.330000,13.850000,14.630000 +04/24/2017,11.560000,12.010000,10.820000,10.840000 +04/25/2017,10.810000,11.150000,10.220000,10.760000 +04/26/2017,10.610000,10.890000,10.390000,10.850000 +04/27/2017,10.720000,11.080000,10.330000,10.360000 +04/28/2017,10.390000,11.160000,10.290000,10.820000 +05/01/2017,10.920000,11.040000,9.900000,10.110000 +05/02/2017,10.150000,10.590000,10.040000,10.590000 +05/03/2017,10.560000,11.150000,10.400000,10.680000 +05/04/2017,10.710000,11.240000,10.270000,10.460000 +05/05/2017,10.510000,10.980000,9.990000,10.570000 +05/08/2017,10.530000,10.550000,9.670000,9.770000 +05/09/2017,9.870000,10.140000,9.560000,9.960000 +05/10/2017,9.750000,10.240000,9.620000,10.210000 +05/11/2017,10.340000,11.230000,10.320000,10.600000 +05/12/2017,10.720000,10.870000,10.280000,10.400000 +05/15/2017,10.540000,10.880000,10.250000,10.420000 +05/16/2017,10.460000,10.670000,10.180000,10.650000 +05/17/2017,11.890000,15.590000,11.530000,15.590000 +05/18/2017,14.060000,16.300000,14.030000,14.660000 +05/19/2017,14.230000,14.230000,11.720000,12.040000 +05/22/2017,12.290000,12.520000,10.890000,10.930000 +05/23/2017,11.000000,11.000000,10.560000,10.720000 +05/24/2017,10.610000,10.900000,9.880000,10.020000 +05/25/2017,9.820000,10.290000,9.720000,9.990000 +05/26/2017,9.930000,10.480000,9.650000,9.810000 +05/30/2017,10.610000,10.840000,10.140000,10.380000 +05/31/2017,10.100000,11.300000,9.930000,10.410000 +06/01/2017,10.420000,10.540000,9.690000,9.890000 +06/02/2017,10.080000,10.300000,9.580000,9.750000 +06/05/2017,10.080000,10.280000,9.600000,10.070000 +06/06/2017,10.190000,10.770000,9.860000,10.450000 +06/07/2017,10.480000,10.930000,10.120000,10.390000 +06/08/2017,10.270000,10.530000,9.730000,10.160000 +06/09/2017,9.930000,12.110000,9.370000,10.700000 +06/12/2017,11.190000,12.370000,11.190000,11.460000 +06/13/2017,11.120000,11.140000,10.260000,10.420000 +06/14/2017,10.330000,11.260000,10.010000,10.640000 +06/15/2017,11.060000,12.010000,10.740000,10.900000 +06/16/2017,10.630000,11.350000,10.260000,10.380000 +06/19/2017,10.570000,10.600000,10.010000,10.370000 +06/20/2017,10.280000,11.150000,10.240000,10.860000 +06/21/2017,11.030000,11.400000,10.400000,10.750000 +06/22/2017,10.810000,11.010000,10.240000,10.480000 +06/23/2017,10.250000,10.690000,9.850000,10.020000 +06/26/2017,10.130000,10.440000,9.680000,9.900000 +06/27/2017,10.040000,11.310000,9.800000,11.060000 +06/28/2017,11.170000,11.490000,9.760000,10.030000 +06/29/2017,9.790000,15.160000,9.730000,11.440000 +06/30/2017,11.740000,11.850000,10.400000,11.180000 +07/03/2017,11.070000,11.450000,10.280000,11.220000 +07/05/2017,11.200000,12.030000,10.790000,11.070000 +07/06/2017,11.200000,13.050000,11.180000,12.540000 +07/07/2017,12.480000,12.570000,10.980000,11.190000 +07/10/2017,11.260000,11.730000,10.610000,11.110000 +07/11/2017,10.790000,12.140000,10.680000,10.890000 +07/12/2017,10.850000,10.850000,10.080000,10.300000 +07/13/2017,10.070000,10.400000,9.900000,9.900000 +07/14/2017,10.090000,10.140000,9.500000,9.510000 +07/17/2017,9.770000,10.030000,9.710000,9.820000 +07/18/2017,9.860000,10.350000,9.660000,9.890000 +07/19/2017,9.690000,9.940000,9.580000,9.790000 +07/20/2017,9.660000,10.280000,9.500000,9.580000 +07/21/2017,9.520000,9.980000,9.300000,9.360000 +07/24/2017,9.940000,9.970000,9.260000,9.430000 +07/25/2017,9.400000,9.520000,9.040000,9.430000 +07/26/2017,9.250000,9.660000,8.840000,9.600000 +07/27/2017,9.330000,11.500000,9.160000,10.110000 +07/28/2017,10.620000,11.300000,10.260000,10.290000 +07/31/2017,10.530000,10.840000,10.230000,10.260000 +08/01/2017,10.190000,10.560000,9.950000,10.090000 +08/02/2017,10.080000,10.810000,9.800000,10.280000 +08/03/2017,10.470000,10.600000,9.900000,10.440000 +08/04/2017,10.480000,10.500000,9.680000,10.030000 +08/07/2017,10.190000,10.320000,9.760000,9.930000 +08/08/2017,10.040000,11.520000,9.520000,10.960000 +08/09/2017,11.490000,12.630000,11.110000,11.110000 +08/10/2017,11.570000,16.170000,11.560000,16.040000 +08/11/2017,16.170000,17.280000,14.500000,15.510000 +08/14/2017,14.050000,14.050000,12.060000,12.330000 +08/15/2017,11.780000,12.370000,11.450000,12.040000 +08/16/2017,11.590000,12.540000,11.250000,11.740000 +08/17/2017,11.810000,15.770000,11.540000,15.550000 +08/18/2017,15.380000,16.040000,13.320000,14.260000 +08/21/2017,14.590000,14.740000,13.070000,13.190000 +08/22/2017,12.600000,12.940000,11.350000,11.350000 +08/23/2017,11.510000,12.590000,11.390000,12.250000 +08/24/2017,12.060000,12.830000,11.550000,12.230000 +08/25/2017,12.200000,12.450000,11.100000,11.280000 +08/28/2017,12.090000,12.110000,11.230000,11.320000 +08/29/2017,13.330000,14.340000,11.480000,11.700000 +08/30/2017,11.400000,11.980000,10.960000,11.220000 +08/31/2017,11.070000,11.220000,10.340000,10.590000 +09/01/2017,10.330000,10.460000,10.020000,10.130000 +09/05/2017,11.750000,14.060000,11.410000,12.230000 +09/06/2017,12.270000,12.590000,11.350000,11.630000 +09/07/2017,11.930000,12.070000,11.320000,11.550000 +09/08/2017,11.870000,12.600000,11.840000,12.120000 +09/11/2017,11.380000,11.390000,10.510000,10.730000 +09/12/2017,10.660000,10.950000,10.290000,10.580000 +09/13/2017,10.720000,10.860000,10.330000,10.500000 +09/14/2017,10.570000,11.040000,10.280000,10.440000 +09/15/2017,10.510000,10.740000,10.000000,10.170000 +09/18/2017,10.180000,10.420000,9.880000,10.150000 +09/19/2017,10.160000,10.300000,9.850000,10.180000 +09/20/2017,10.040000,10.670000,9.670000,9.780000 +09/21/2017,9.740000,10.210000,9.540000,9.670000 +09/22/2017,9.900000,10.200000,9.500000,9.590000 +09/25/2017,10.080000,11.210000,9.790000,10.210000 +09/26/2017,10.420000,10.680000,9.940000,10.170000 +09/27/2017,9.900000,10.420000,9.630000,9.870000 +09/28/2017,9.740000,10.130000,9.550000,9.550000 +09/29/2017,9.590000,9.830000,9.360000,9.510000 +10/02/2017,9.590000,10.040000,9.370000,9.450000 +10/03/2017,9.300000,9.750000,9.300000,9.510000 +10/04/2017,9.530000,9.880000,9.530000,9.630000 +10/05/2017,9.480000,9.620000,9.130000,9.190000 +10/06/2017,9.230000,10.270000,9.110000,9.650000 +10/09/2017,9.920000,10.530000,9.880000,10.330000 +10/10/2017,10.150000,10.660000,9.940000,10.080000 +10/11/2017,9.950000,10.380000,9.720000,9.850000 +10/12/2017,9.940000,10.330000,9.650000,9.910000 +10/13/2017,9.950000,9.980000,9.440000,9.610000 +10/16/2017,9.950000,10.020000,9.750000,9.910000 +10/17/2017,9.850000,10.460000,9.780000,10.310000 +10/18/2017,10.340000,10.410000,9.870000,10.070000 +10/19/2017,10.220000,11.770000,9.990000,10.050000 +10/20/2017,9.920000,10.040000,9.290000,9.970000 +10/23/2017,10.250000,11.080000,9.940000,11.070000 +10/24/2017,10.890000,11.160000,10.390000,11.160000 +10/25/2017,11.340000,13.200000,10.990000,11.230000 +10/26/2017,11.170000,11.810000,10.600000,11.300000 +10/27/2017,11.120000,11.120000,9.740000,9.800000 +10/30/2017,10.280000,10.890000,10.100000,10.500000 +10/31/2017,10.340000,10.370000,9.900000,10.180000 +11/01/2017,9.790000,10.490000,9.740000,10.200000 +11/02/2017,10.440000,10.890000,9.670000,9.930000 +11/03/2017,9.830000,9.910000,8.990000,9.140000 +11/06/2017,9.630000,9.740000,9.380000,9.400000 +11/07/2017,9.310000,10.310000,9.290000,9.890000 +11/08/2017,9.790000,10.270000,9.500000,9.780000 +11/09/2017,9.940000,12.190000,9.790000,10.500000 +11/10/2017,10.780000,11.580000,10.500000,11.290000 +11/13/2017,11.430000,12.180000,11.000000,11.500000 +11/14/2017,11.530000,12.610000,11.450000,11.590000 +11/15/2017,12.520000,14.510000,12.330000,13.130000 +11/16/2017,12.470000,12.520000,11.380000,11.760000 +11/17/2017,11.750000,12.010000,11.160000,11.430000 +11/20/2017,11.960000,12.080000,10.440000,10.650000 +11/21/2017,10.740000,10.780000,9.670000,9.730000 +11/22/2017,9.600000,9.880000,9.320000,9.880000 +11/24/2017,9.820000,9.960000,8.560000,9.670000 +11/27/2017,10.070000,10.260000,9.790000,9.870000 +11/28/2017,9.720000,10.310000,9.530000,10.030000 +11/29/2017,9.910000,10.930000,9.810000,10.700000 +11/30/2017,10.490000,12.050000,10.250000,11.280000 +12/01/2017,11.190000,14.580000,10.540000,11.430000 +12/04/2017,11.050000,11.860000,10.260000,11.680000 +12/05/2017,11.380000,11.670000,10.650000,11.330000 +12/06/2017,11.630000,11.680000,10.860000,11.020000 +12/07/2017,10.900000,11.320000,10.120000,10.160000 +12/08/2017,10.000000,10.060000,9.430000,9.580000 +12/11/2017,9.740000,10.080000,9.280000,9.340000 +12/12/2017,9.360000,9.920000,9.210000,9.920000 +12/13/2017,9.780000,10.210000,9.650000,10.180000 +12/14/2017,9.980000,10.540000,9.780000,10.490000 +12/15/2017,10.120000,10.200000,9.220000,9.420000 +12/18/2017,9.460000,9.890000,9.240000,9.530000 +12/19/2017,9.400000,10.150000,9.180000,10.030000 +12/20/2017,9.690000,9.850000,8.900000,9.720000 +12/21/2017,9.590000,9.860000,9.200000,9.620000 +12/22/2017,9.370000,10.180000,9.350000,9.900000 +12/26/2017,10.190000,10.460000,10.130000,10.250000 +12/27/2017,10.040000,10.790000,9.710000,10.470000 +12/28/2017,10.290000,10.440000,10.070000,10.180000 +12/29/2017,10.030000,11.060000,9.950000,11.040000 +01/02/2018,10.950000,11.070000,9.520000,9.770000 +01/03/2018,9.560000,9.650000,8.940000,9.150000 +01/04/2018,9.010000,9.310000,8.920000,9.220000 +01/05/2018,9.100000,9.540000,9.000000,9.220000 +01/08/2018,9.610000,9.890000,9.320000,9.520000 +01/09/2018,9.410000,10.090000,9.370000,10.080000 +01/10/2018,10.110000,10.850000,9.820000,9.820000 +01/11/2018,9.690000,10.020000,9.620000,9.880000 +01/12/2018,9.740000,10.310000,9.540000,10.160000 +01/16/2018,10.420000,12.410000,10.400000,11.660000 +01/17/2018,11.350000,12.810000,11.180000,11.910000 +01/18/2018,12.010000,12.400000,11.620000,12.220000 +01/19/2018,12.300000,12.330000,11.180000,11.270000 +01/22/2018,11.590000,11.620000,10.840000,11.030000 +01/23/2018,10.770000,11.570000,10.760000,11.100000 +01/24/2018,11.000000,12.190000,10.890000,11.470000 +01/25/2018,11.270000,12.010000,11.200000,11.580000 +01/26/2018,11.400000,11.600000,11.080000,11.080000 +01/29/2018,11.710000,13.840000,11.680000,13.840000 +01/30/2018,13.930000,15.420000,13.880000,14.790000 +01/31/2018,14.230000,14.440000,13.410000,13.540000 +02/01/2018,13.050000,14.300000,12.500000,13.470000 +02/02/2018,13.640000,17.860000,13.640000,17.310000 +02/05/2018,18.440000,38.800000,16.800000,37.320000 +02/06/2018,37.320000,50.300000,22.420000,29.980000 +02/07/2018,31.380000,31.640000,21.170000,27.730000 +02/08/2018,27.290000,36.170000,24.410000,33.460000 +02/09/2018,32.180000,41.060000,27.730000,29.060000 +02/12/2018,27.250000,29.700000,24.420000,25.610000 +02/13/2018,26.940000,27.820000,24.470000,24.970000 +02/14/2018,23.480000,25.720000,18.990000,19.260000 +02/15/2018,18.390000,20.660000,17.600000,19.130000 +02/16/2018,18.740000,20.990000,17.440000,19.460000 +02/20/2018,20.530000,21.610000,19.750000,20.600000 +02/21/2018,20.760000,21.040000,16.970000,20.020000 +02/22/2018,20.570000,20.610000,18.070000,18.720000 +02/23/2018,17.960000,18.800000,16.470000,16.490000 +02/26/2018,16.530000,16.940000,15.800000,15.800000 +02/27/2018,15.830000,18.980000,15.290000,18.590000 +02/28/2018,18.080000,20.440000,15.650000,19.850000 +03/01/2018,19.960000,25.300000,19.570000,22.470000 +03/02/2018,22.470000,26.220000,19.360000,19.590000 +03/05/2018,21.550000,21.570000,17.940000,18.730000 +03/06/2018,18.250000,19.640000,17.680000,18.360000 +03/07/2018,20.110000,20.490000,17.520000,17.760000 +03/08/2018,17.560000,17.680000,14.910000,16.540000 +03/09/2018,16.410000,16.750000,13.310000,14.640000 +03/12/2018,15.280000,16.350000,15.180000,15.780000 +03/13/2018,15.700000,16.980000,15.030000,16.350000 +03/14/2018,16.590000,17.590000,14.940000,17.230000 +03/15/2018,16.990000,17.410000,15.960000,16.590000 +03/16/2018,16.600000,16.720000,15.230000,15.800000 +03/19/2018,16.630000,21.870000,16.560000,19.020000 +03/20/2018,18.380000,19.310000,18.090000,18.200000 +03/21/2018,17.760000,18.370000,16.260000,17.860000 +03/22/2018,18.130000,23.810000,18.120000,23.340000 +03/23/2018,24.020000,26.010000,21.630000,24.870000 +03/26/2018,23.410000,24.540000,20.710000,21.030000 +03/27/2018,20.330000,24.060000,19.840000,22.500000 +03/28/2018,22.520000,24.940000,21.710000,22.870000 +03/29/2018,22.870000,23.050000,19.600000,19.970000 +04/02/2018,21.070000,25.720000,20.440000,23.620000 +04/03/2018,23.030000,23.380000,20.920000,21.100000 +04/04/2018,21.680000,24.510000,19.860000,20.060000 +04/05/2018,19.760000,20.210000,18.570000,18.940000 +04/06/2018,20.330000,23.120000,18.600000,21.490000 +04/09/2018,21.270000,22.020000,20.340000,21.770000 +04/10/2018,20.510000,21.680000,20.240000,20.470000 +04/11/2018,20.950000,21.660000,19.640000,20.240000 +04/12/2018,19.830000,19.920000,18.160000,18.490000 +04/13/2018,18.270000,18.450000,17.260000,17.410000 +04/16/2018,17.590000,17.660000,16.380000,16.560000 +04/17/2018,16.160000,16.270000,14.570000,15.250000 +04/18/2018,15.300000,16.900000,14.950000,15.600000 +04/19/2018,15.550000,16.920000,15.160000,15.960000 +04/20/2018,16.160000,17.500000,15.190000,16.880000 +04/23/2018,17.290000,17.560000,15.790000,16.340000 +04/24/2018,16.160000,19.660000,15.370000,18.020000 +04/25/2018,18.140000,19.840000,17.750000,17.840000 +04/26/2018,18.070000,18.120000,16.240000,16.240000 +04/27/2018,16.220000,16.770000,15.250000,15.410000 +04/30/2018,15.390000,16.350000,15.130000,15.930000 +05/01/2018,15.780000,16.820000,15.420000,15.490000 +05/02/2018,15.480000,15.970000,14.750000,15.970000 +05/03/2018,15.780000,18.660000,15.430000,15.900000 +05/04/2018,15.940000,16.920000,10.910000,14.770000 +05/07/2018,15.320000,15.520000,14.510000,14.750000 +05/08/2018,14.530000,15.560000,14.520000,14.710000 +05/09/2018,14.540000,14.630000,13.380000,13.420000 +05/10/2018,13.360000,13.630000,12.920000,13.230000 +05/11/2018,13.220000,13.440000,12.650000,12.650000 +05/14/2018,12.950000,13.280000,12.810000,12.930000 +05/15/2018,13.130000,15.010000,12.500000,14.630000 +05/16/2018,14.380000,14.910000,13.210000,13.420000 +05/17/2018,13.540000,13.860000,12.650000,13.430000 +05/18/2018,13.180000,13.870000,13.060000,13.420000 +05/21/2018,13.440000,13.590000,12.780000,13.080000 +05/22/2018,13.030000,13.420000,12.770000,13.220000 +05/23/2018,13.500000,14.600000,12.490000,12.580000 +05/24/2018,12.730000,14.240000,12.530000,12.530000 +05/25/2018,12.440000,13.520000,12.290000,13.220000 +05/29/2018,14.390000,18.780000,14.390000,17.020000 +05/30/2018,16.600000,16.640000,14.650000,14.940000 +05/31/2018,14.930000,16.290000,14.200000,15.430000 +06/01/2018,14.920000,14.930000,13.370000,13.460000 +06/04/2018,13.910000,13.910000,12.690000,12.740000 +06/05/2018,12.910000,13.340000,12.300000,12.400000 +06/06/2018,12.100000,12.560000,11.620000,11.640000 +06/07/2018,11.660000,13.280000,11.220000,12.130000 +06/08/2018,12.540000,13.310000,12.090000,12.180000 +06/11/2018,12.520000,12.690000,12.140000,12.350000 +06/12/2018,12.290000,12.600000,11.880000,12.340000 +06/13/2018,12.130000,12.950000,11.980000,12.940000 +06/14/2018,12.980000,13.070000,11.880000,12.120000 +06/15/2018,12.190000,13.160000,11.930000,11.980000 +06/18/2018,12.790000,13.740000,12.280000,12.310000 +06/19/2018,14.610000,14.680000,13.210000,13.350000 +06/20/2018,12.900000,13.020000,12.250000,12.790000 +06/21/2018,12.540000,15.180000,12.180000,14.640000 +06/22/2018,14.600000,14.600000,13.110000,13.770000 +06/25/2018,15.070000,19.610000,14.560000,17.330000 +06/26/2018,16.710000,17.540000,15.100000,15.920000 +06/27/2018,16.520000,18.190000,14.760000,17.910000 +06/28/2018,17.540000,18.990000,16.400000,16.850000 +06/29/2018,15.730000,16.510000,14.660000,16.090000 +07/02/2018,17.700000,18.080000,15.540000,15.600000 +07/03/2018,15.370000,16.450000,14.680000,16.140000 +07/05/2018,15.620000,16.220000,14.470000,14.970000 +07/06/2018,14.990000,15.450000,13.340000,13.370000 +07/09/2018,13.420000,13.450000,12.600000,12.690000 +07/10/2018,12.520000,13.210000,11.930000,12.640000 +07/11/2018,14.050000,14.150000,13.090000,13.630000 +07/12/2018,13.070000,13.330000,12.420000,12.580000 +07/13/2018,12.390000,12.970000,11.620000,12.180000 +07/16/2018,12.460000,12.970000,12.130000,12.830000 +07/17/2018,12.910000,13.180000,11.850000,12.060000 +07/18/2018,11.870000,12.470000,11.440000,12.100000 +07/19/2018,12.200000,13.090000,11.790000,12.870000 +07/20/2018,13.000000,13.580000,12.490000,12.860000 +07/23/2018,13.470000,13.550000,12.580000,12.620000 +07/24/2018,12.610000,13.210000,11.660000,12.410000 +07/25/2018,12.370000,12.820000,11.800000,12.290000 +07/26/2018,12.450000,12.530000,11.780000,12.140000 +07/27/2018,12.170000,14.260000,11.600000,13.030000 +07/30/2018,13.630000,14.460000,12.980000,14.260000 +07/31/2018,13.980000,14.120000,12.810000,12.830000 +08/01/2018,13.090000,13.630000,12.450000,13.150000 +08/02/2018,13.570000,14.530000,12.170000,12.190000 +08/03/2018,12.430000,12.460000,11.070000,11.640000 +08/06/2018,11.910000,12.150000,11.170000,11.270000 +08/07/2018,11.120000,11.240000,10.520000,10.930000 +08/08/2018,10.930000,11.180000,10.520000,10.850000 +08/09/2018,10.940000,11.310000,10.170000,11.270000 +08/10/2018,11.820000,13.820000,11.590000,13.160000 +08/13/2018,14.500000,15.020000,12.950000,14.780000 +08/14/2018,13.930000,14.220000,13.110000,13.310000 +08/15/2018,13.520000,16.860000,13.440000,14.640000 +08/16/2018,14.180000,14.360000,12.820000,13.450000 +08/17/2018,13.180000,13.960000,12.400000,12.640000 +08/20/2018,12.570000,12.790000,12.260000,12.490000 +08/21/2018,12.470000,12.890000,12.090000,12.860000 +08/22/2018,13.090000,13.290000,11.970000,12.250000 +08/23/2018,12.030000,12.680000,11.650000,12.410000 +08/24/2018,12.130000,12.170000,11.830000,11.990000 +08/27/2018,12.370000,12.480000,12.020000,12.160000 +08/28/2018,12.010000,12.500000,11.870000,12.500000 +08/29/2018,12.340000,12.550000,12.090000,12.250000 +08/30/2018,12.250000,13.950000,12.240000,13.530000 +08/31/2018,13.540000,14.030000,12.820000,12.860000 +09/04/2018,13.130000,14.350000,13.120000,13.160000 +09/05/2018,13.690000,14.300000,13.230000,13.910000 +09/06/2018,14.210000,15.410000,13.720000,14.650000 +09/07/2018,14.720000,15.630000,14.310000,14.880000 +09/10/2018,15.090000,15.200000,13.930000,14.160000 +09/11/2018,13.960000,14.920000,13.210000,13.220000 +09/12/2018,13.070000,13.860000,12.910000,13.140000 +09/13/2018,12.910000,12.910000,12.300000,12.370000 +09/14/2018,12.130000,13.150000,11.930000,12.070000 +09/17/2018,12.720000,13.750000,12.320000,13.680000 +09/18/2018,13.480000,13.480000,12.560000,12.790000 +09/19/2018,12.610000,12.770000,11.660000,11.750000 +09/20/2018,11.820000,11.960000,11.310000,11.800000 +09/21/2018,11.760000,12.030000,11.100000,11.680000 +09/24/2018,12.460000,12.920000,12.180000,12.200000 +09/25/2018,12.280000,12.600000,11.800000,12.420000 +09/26/2018,12.210000,13.130000,11.550000,12.890000 +09/27/2018,12.770000,13.000000,11.940000,12.410000 +09/28/2018,12.590000,13.220000,12.090000,12.120000 +10/01/2018,11.990000,12.400000,11.570000,12.000000 +10/02/2018,12.470000,12.690000,11.610000,12.050000 +10/03/2018,11.660000,12.140000,11.340000,11.610000 +10/04/2018,12.840000,15.840000,12.420000,14.220000 +10/05/2018,14.290000,17.360000,11.720000,14.820000 +10/08/2018,16.050000,18.380000,15.690000,15.690000 +10/09/2018,16.120000,17.490000,15.270000,15.950000 +10/10/2018,16.030000,22.960000,15.830000,22.960000 +10/11/2018,23.070000,28.840000,20.650000,24.980000 +10/12/2018,21.630000,26.800000,20.880000,21.310000 +10/15/2018,21.970000,22.890000,19.470000,21.300000 +10/16/2018,20.280000,20.560000,17.550000,17.620000 +10/17/2018,17.060000,19.550000,17.060000,17.400000 +10/18/2018,18.020000,21.570000,17.510000,20.060000 +10/19/2018,19.240000,21.080000,18.390000,19.890000 +10/22/2018,19.380000,20.890000,18.820000,19.640000 +10/23/2018,22.180000,24.660000,20.180000,20.710000 +10/24/2018,21.600000,26.380000,20.400000,25.230000 +10/25/2018,24.780000,24.780000,22.060000,24.220000 +10/26/2018,24.510000,27.520000,23.330000,24.160000 +10/29/2018,24.480000,27.860000,22.010000,24.700000 +10/30/2018,23.940000,25.550000,23.110000,23.350000 +10/31/2018,22.720000,22.800000,20.390000,21.230000 +11/01/2018,20.960000,21.210000,19.030000,19.340000 +11/02/2018,18.520000,21.610000,18.050000,19.510000 +11/05/2018,20.580000,20.870000,19.640000,19.960000 +11/06/2018,19.840000,20.600000,19.690000,19.910000 +11/07/2018,18.030000,18.050000,16.330000,16.360000 +11/08/2018,16.180000,17.200000,16.090000,16.720000 +11/09/2018,16.870000,18.410000,16.840000,17.360000 +11/12/2018,17.260000,20.710000,17.250000,20.450000 +11/13/2018,19.450000,21.250000,19.110000,20.020000 +11/14/2018,20.520000,22.360000,19.300000,21.250000 +11/15/2018,20.410000,22.970000,19.940000,19.980000 +11/16/2018,20.040000,21.360000,18.100000,18.140000 +11/19/2018,18.780000,20.990000,18.520000,20.100000 +11/20/2018,20.760000,23.810000,20.370000,22.480000 +11/21/2018,21.660000,22.310000,20.110000,20.800000 +11/23/2018,21.230000,22.650000,20.650000,21.520000 +11/26/2018,20.780000,20.800000,18.670000,18.900000 +11/27/2018,19.410000,19.930000,18.700000,19.020000 +11/28/2018,18.870000,19.380000,18.180000,18.490000 +11/29/2018,18.650000,20.480000,18.590000,18.790000 +11/30/2018,19.180000,19.910000,18.030000,18.070000 +12/03/2018,16.040000,17.280000,15.940000,16.440000 +12/04/2018,16.840000,21.940000,16.260000,20.740000 +12/06/2018,23.530000,25.940000,20.940000,21.190000 +12/07/2018,22.420000,24.710000,19.900000,23.230000 +12/10/2018,23.950000,25.940000,22.500000,22.640000 +12/11/2018,22.960000,23.600000,21.390000,21.760000 +12/12/2018,21.910000,21.910000,20.500000,21.460000 +12/13/2018,21.000000,21.570000,20.340000,20.650000 +12/14/2018,21.570000,22.470000,20.950000,21.630000 +12/17/2018,22.360000,25.880000,21.970000,24.520000 +12/18/2018,24.680000,26.140000,23.640000,25.580000 +12/19/2018,25.150000,26.640000,22.500000,25.580000 +12/20/2018,26.090000,30.300000,24.680000,28.380000 +12/21/2018,28.240000,31.350000,25.710000,30.110000 +12/24/2018,29.290000,36.100000,29.160000,36.070000 +12/26/2018,35.500000,36.200000,29.590000,30.410000 +12/27/2018,31.200000,33.800000,29.660000,29.960000 +12/28/2018,29.970000,31.050000,27.430000,28.340000 +12/31/2018,27.590000,27.640000,25.330000,25.420000 +01/02/2019,27.540000,28.530000,23.050000,23.220000 +01/03/2019,25.680000,26.600000,24.050000,25.450000 +01/04/2019,24.360000,24.480000,21.190000,21.380000 +01/07/2019,22.060000,22.710000,20.910000,21.400000 +01/08/2019,20.960000,22.030000,20.090000,20.470000 +01/09/2019,20.440000,22.800000,19.480000,19.980000 +01/10/2019,20.980000,21.320000,19.290000,19.500000 +01/11/2019,19.680000,20.160000,18.120000,18.190000 +01/14/2019,19.840000,20.270000,18.700000,19.070000 +01/15/2019,18.530000,19.200000,17.980000,18.600000 +01/16/2019,18.080000,19.040000,17.760000,19.040000 +01/17/2019,19.510000,19.720000,17.850000,18.060000 +01/18/2019,17.800000,18.180000,17.170000,17.800000 +01/22/2019,18.530000,21.150000,18.200000,20.800000 +01/23/2019,20.850000,22.020000,19.470000,19.520000 +01/24/2019,19.690000,20.250000,18.630000,18.890000 +01/25/2019,18.430000,18.460000,17.310000,17.420000 +01/28/2019,18.560000,20.420000,18.420000,18.870000 +01/29/2019,19.450000,19.930000,18.420000,19.130000 +01/30/2019,19.150000,19.310000,17.540000,17.660000 +01/31/2019,17.390000,17.720000,16.540000,16.570000 +02/01/2019,16.630000,16.830000,16.080000,16.140000 +02/04/2019,16.720000,16.730000,15.600000,15.730000 +02/05/2019,15.790000,15.940000,15.040000,15.570000 +02/06/2019,15.440000,15.870000,15.090000,15.380000 +02/07/2019,15.660000,17.890000,15.510000,16.370000 +02/08/2019,16.810000,17.630000,15.620000,15.720000 +02/11/2019,16.170000,16.500000,15.340000,15.970000 +02/12/2019,15.230000,15.650000,14.950000,15.430000 +02/13/2019,15.460000,15.910000,15.000000,15.650000 +02/14/2019,15.610000,17.270000,15.300000,16.220000 +02/15/2019,16.820000,16.820000,14.790000,14.910000 +02/19/2019,15.650000,16.160000,14.640000,14.880000 +02/20/2019,14.920000,15.190000,13.990000,14.020000 +02/21/2019,14.000000,15.170000,13.850000,14.460000 +02/22/2019,14.460000,14.470000,13.510000,13.510000 +02/25/2019,13.910000,14.900000,13.440000,14.850000 +02/26/2019,15.160000,15.280000,14.520000,15.170000 +02/27/2019,15.530000,16.170000,14.700000,14.700000 +02/28/2019,15.170000,15.240000,14.390000,14.780000 +03/01/2019,14.570000,14.840000,13.410000,13.570000 +03/04/2019,13.770000,16.980000,13.380000,14.630000 +03/05/2019,14.520000,15.390000,14.260000,14.740000 +03/06/2019,14.910000,16.110000,14.740000,15.740000 +03/07/2019,16.330000,17.810000,15.540000,16.590000 +03/08/2019,17.380000,18.330000,16.020000,16.050000 +03/11/2019,16.280000,16.430000,14.330000,14.330000 +03/12/2019,13.970000,14.700000,13.610000,13.770000 +03/13/2019,14.000000,14.050000,13.250000,13.410000 +03/14/2019,13.350000,13.840000,13.160000,13.500000 +03/15/2019,13.210000,13.280000,12.500000,12.880000 +03/18/2019,13.130000,13.800000,13.000000,13.100000 +03/19/2019,12.890000,13.770000,12.370000,13.560000 +03/20/2019,13.540000,14.300000,13.050000,13.910000 +03/21/2019,14.110000,14.560000,13.260000,13.630000 +03/22/2019,13.770000,17.520000,13.620000,16.480000 +03/25/2019,17.760000,17.850000,16.260000,16.330000 +03/26/2019,16.220000,16.300000,14.670000,14.680000 +03/27/2019,14.520000,16.710000,14.510000,15.150000 +03/28/2019,15.380000,15.620000,14.410000,14.430000 +03/29/2019,14.190000,14.430000,13.640000,13.710000 +04/01/2019,13.900000,14.010000,13.320000,13.400000 +04/02/2019,13.620000,13.680000,13.130000,13.360000 +04/03/2019,13.060000,14.270000,12.850000,13.740000 +04/04/2019,13.840000,14.030000,13.400000,13.580000 +04/05/2019,13.460000,13.470000,12.170000,12.820000 +04/08/2019,13.550000,13.770000,13.100000,13.180000 +04/09/2019,13.460000,14.390000,13.310000,14.280000 +04/10/2019,14.090000,14.290000,13.270000,13.300000 +04/11/2019,13.370000,13.580000,12.910000,13.020000 +04/12/2019,12.960000,12.960000,11.950000,12.010000 +04/15/2019,12.460000,13.140000,12.240000,12.320000 +04/16/2019,12.260000,12.470000,11.850000,12.180000 +04/17/2019,12.120000,13.020000,11.030000,12.600000 +04/18/2019,12.800000,13.120000,12.020000,12.090000 +04/22/2019,13.210000,13.360000,12.380000,12.420000 +04/23/2019,12.660000,12.690000,12.080000,12.280000 +04/24/2019,12.530000,13.230000,12.260000,13.140000 +04/25/2019,13.290000,14.300000,12.810000,13.250000 +04/26/2019,13.440000,13.620000,12.490000,12.730000 +04/29/2019,13.040000,13.270000,12.650000,13.110000 +04/30/2019,13.110000,14.050000,12.880000,13.120000 +05/01/2019,12.860000,14.830000,12.740000,14.800000 +05/02/2019,14.350000,15.920000,13.800000,14.420000 +05/03/2019,14.110000,14.150000,12.800000,12.870000 +05/06/2019,12.890000,18.800000,12.890000,15.440000 +05/07/2019,15.900000,21.840000,15.800000,19.320000 +05/08/2019,18.950000,21.740000,18.290000,19.400000 +05/09/2019,21.400000,23.380000,18.870000,19.100000 +05/10/2019,18.790000,20.190000,15.570000,16.040000 +05/13/2019,18.620000,21.320000,18.350000,20.550000 +05/14/2019,19.400000,19.650000,17.450000,18.060000 +05/15/2019,17.570000,19.150000,16.410000,16.440000 +05/16/2019,16.690000,17.130000,15.160000,15.290000 +05/17/2019,15.890000,16.810000,14.860000,15.960000 +05/20/2019,15.880000,17.630000,15.460000,16.310000 +05/21/2019,15.860000,16.220000,14.790000,14.950000 +05/22/2019,15.060000,15.440000,14.420000,14.750000 +05/23/2019,15.930000,18.050000,15.280000,16.920000 +05/24/2019,16.340000,16.520000,15.520000,15.850000 +05/28/2019,16.550000,17.700000,15.900000,17.500000 +05/29/2019,18.550000,19.040000,17.620000,17.900000 +05/30/2019,17.470000,18.110000,16.720000,17.300000 +05/31/2019,19.050000,19.720000,18.010000,18.710000 +06/03/2019,19.410000,19.750000,18.160000,18.860000 +06/04/2019,18.740000,18.740000,16.970000,16.970000 +06/05/2019,17.060000,17.490000,16.040000,16.090000 +06/06/2019,16.250000,16.540000,15.360000,15.930000 +06/07/2019,15.650000,16.440000,15.330000,16.300000 +06/10/2019,16.300000,16.470000,15.840000,15.940000 +06/11/2019,15.840000,16.700000,15.500000,15.990000 +06/12/2019,16.260000,16.430000,15.780000,15.910000 +06/13/2019,16.160000,16.210000,15.610000,15.820000 +06/14/2019,16.000000,16.400000,15.210000,15.280000 +06/17/2019,15.650000,15.760000,15.240000,15.350000 +06/18/2019,14.890000,15.540000,14.620000,15.150000 +06/19/2019,15.050000,15.710000,14.150000,14.330000 +06/20/2019,14.040000,16.030000,13.190000,14.750000 +06/21/2019,14.740000,15.480000,14.420000,15.400000 +06/24/2019,15.460000,15.560000,15.230000,15.260000 +06/25/2019,15.430000,16.680000,15.100000,16.280000 +06/26/2019,16.100000,16.600000,15.470000,16.210000 +06/27/2019,15.660000,16.400000,15.660000,15.820000 +06/28/2019,15.700000,16.130000,15.080000,15.080000 +07/01/2019,13.850000,14.640000,13.800000,14.060000 +07/02/2019,14.160000,14.300000,12.900000,12.930000 +07/03/2019,13.180000,13.190000,12.560000,12.570000 +07/05/2019,13.000000,14.470000,12.040000,13.280000 +07/08/2019,13.730000,14.440000,13.640000,13.960000 +07/09/2019,14.470000,14.710000,13.990000,14.090000 +07/10/2019,14.380000,14.690000,12.980000,13.030000 +07/11/2019,13.010000,13.330000,12.390000,12.930000 +07/12/2019,12.760000,12.820000,12.280000,12.390000 +07/15/2019,12.580000,13.020000,12.490000,12.680000 +07/16/2019,12.610000,13.140000,12.280000,12.860000 +07/17/2019,12.620000,13.970000,12.240000,13.970000 +07/18/2019,14.450000,14.500000,13.190000,13.530000 +07/19/2019,13.310000,14.450000,13.090000,14.450000 +07/22/2019,14.550000,14.700000,13.420000,13.530000 +07/23/2019,13.420000,13.520000,12.550000,12.610000 +07/24/2019,12.800000,13.100000,11.980000,12.070000 +07/25/2019,12.240000,13.540000,11.690000,12.740000 +07/26/2019,12.580000,12.720000,12.010000,12.160000 +07/29/2019,12.150000,13.170000,12.150000,12.830000 +07/30/2019,12.870000,14.180000,12.870000,13.940000 +07/31/2019,13.830000,16.550000,13.460000,16.120000 +08/01/2019,15.410000,19.460000,13.730000,17.870000 +08/02/2019,17.690000,20.110000,17.040000,17.610000 +08/05/2019,19.960000,24.810000,19.910000,24.590000 +08/06/2019,22.290000,22.870000,19.770000,20.170000 +08/07/2019,20.700000,23.670000,18.940000,19.490000 +08/08/2019,19.360000,19.890000,16.820000,16.910000 +08/09/2019,18.140000,19.440000,17.310000,17.970000 +08/12/2019,17.870000,21.260000,17.770000,21.090000 +08/13/2019,21.280000,21.640000,17.520000,17.520000 +08/14/2019,17.810000,22.710000,17.750000,22.100000 +08/15/2019,21.580000,24.100000,20.780000,21.180000 +08/16/2019,20.480000,20.500000,18.410000,18.470000 +08/19/2019,17.930000,18.220000,16.520000,16.880000 +08/20/2019,16.780000,17.700000,16.450000,17.500000 +08/21/2019,17.010000,17.040000,15.510000,15.800000 +08/22/2019,16.120000,17.680000,15.630000,16.680000 +08/23/2019,16.150000,21.070000,16.040000,19.870000 +08/26/2019,20.340000,21.330000,19.060000,19.320000 +08/27/2019,20.180000,21.040000,18.490000,20.310000 +08/28/2019,20.550000,21.640000,19.100000,19.350000 +08/29/2019,19.020000,19.200000,17.600000,17.880000 +08/30/2019,17.940000,19.180000,17.090000,18.980000 +09/03/2019,20.960000,21.150000,19.410000,19.660000 +09/04/2019,18.230000,18.830000,17.260000,17.330000 +09/05/2019,16.920000,17.050000,15.450000,16.270000 +09/06/2019,15.920000,16.060000,14.910000,15.000000 +09/09/2019,15.260000,16.130000,14.950000,15.270000 +09/10/2019,15.530000,16.520000,15.110000,15.200000 +09/11/2019,15.330000,15.520000,14.550000,14.610000 +09/12/2019,14.690000,14.940000,13.850000,14.220000 +09/13/2019,14.160000,14.310000,13.510000,13.740000 +09/16/2019,14.890000,15.290000,14.500000,14.670000 +09/17/2019,14.920000,15.030000,14.400000,14.440000 +09/18/2019,14.610000,15.800000,13.800000,13.950000 +09/19/2019,14.660000,14.660000,13.310000,14.050000 +09/20/2019,13.940000,15.840000,13.350000,15.320000 +09/23/2019,15.350000,16.000000,14.710000,14.910000 +09/24/2019,14.770000,17.620000,14.330000,17.050000 +09/25/2019,17.050000,18.450000,15.690000,15.960000 +09/26/2019,16.230000,17.090000,15.350000,16.070000 +09/27/2019,15.770000,18.690000,15.150000,17.220000 +09/30/2019,17.230000,17.350000,16.200000,16.240000 +10/01/2019,16.020000,18.620000,15.790000,18.560000 +10/02/2019,18.750000,21.460000,18.750000,20.560000 +10/03/2019,20.110000,21.440000,19.030000,19.120000 +10/04/2019,19.420000,19.970000,16.970000,17.040000 +10/07/2019,18.270000,18.520000,16.440000,17.860000 +10/08/2019,17.610000,20.380000,17.420000,20.280000 +10/09/2019,19.940000,20.000000,17.770000,18.640000 +10/10/2019,19.280000,19.800000,17.560000,17.570000 +10/11/2019,17.350000,17.440000,15.110000,15.580000 +10/14/2019,15.660000,16.500000,14.510000,14.570000 +10/15/2019,13.940000,14.430000,13.390000,13.540000 +10/16/2019,13.940000,14.260000,13.600000,13.680000 +10/17/2019,13.790000,14.180000,13.310000,13.790000 +10/18/2019,14.200000,15.160000,13.780000,14.250000 +10/21/2019,14.240000,14.630000,14.000000,14.000000 +10/22/2019,13.990000,14.610000,13.700000,14.460000 +10/23/2019,14.830000,15.120000,14.010000,14.010000 +10/24/2019,13.980000,14.340000,13.400000,13.710000 +10/25/2019,13.530000,13.790000,12.620000,12.650000 +10/28/2019,13.010000,13.140000,12.660000,13.110000 +10/29/2019,13.160000,13.520000,13.070000,13.200000 +10/30/2019,13.230000,13.770000,12.270000,12.330000 +10/31/2019,12.210000,13.950000,12.190000,13.220000 +11/01/2019,12.990000,13.120000,12.250000,12.300000 +11/04/2019,12.680000,13.130000,12.440000,12.830000 +11/05/2019,12.850000,13.280000,12.250000,13.100000 +11/06/2019,13.180000,13.390000,12.600000,12.620000 +11/07/2019,12.590000,12.890000,12.260000,12.730000 +11/08/2019,12.980000,13.050000,12.000000,12.070000 +11/11/2019,13.150000,13.490000,12.660000,12.690000 +11/12/2019,12.640000,13.100000,12.360000,12.680000 +11/13/2019,12.910000,13.900000,12.880000,13.000000 +11/14/2019,13.160000,13.810000,12.930000,13.050000 +11/15/2019,12.950000,12.970000,11.920000,12.050000 +11/18/2019,12.390000,13.100000,12.320000,12.460000 +11/19/2019,12.330000,13.010000,12.160000,12.860000 +11/20/2019,13.420000,14.170000,12.610000,12.780000 +11/21/2019,13.350000,13.860000,12.490000,13.130000 +11/22/2019,12.820000,13.250000,12.330000,12.340000 +11/25/2019,12.510000,12.590000,11.730000,11.870000 +11/26/2019,11.880000,12.040000,11.420000,11.540000 +11/27/2019,11.550000,11.790000,11.440000,11.750000 +11/29/2019,12.500000,12.830000,12.120000,12.620000 +12/02/2019,12.690000,15.270000,12.550000,14.910000 +12/03/2019,14.680000,17.990000,14.610000,15.960000 +12/04/2019,16.380000,16.400000,14.120000,14.800000 +12/05/2019,14.460000,15.370000,14.170000,14.520000 +12/06/2019,14.370000,14.470000,13.190000,13.620000 +12/09/2019,14.250000,16.070000,12.250000,15.860000 +12/10/2019,15.800000,16.900000,14.930000,15.680000 +12/11/2019,15.570000,15.970000,14.980000,14.990000 +12/12/2019,14.940000,15.550000,13.600000,13.940000 +12/13/2019,13.180000,14.350000,12.540000,12.630000 +12/16/2019,12.470000,12.530000,11.710000,12.140000 +12/17/2019,12.230000,12.470000,11.900000,12.290000 +12/18/2019,12.240000,12.700000,11.930000,12.580000 +12/19/2019,12.550000,12.780000,12.430000,12.500000 +12/20/2019,12.550000,12.610000,12.040000,12.510000 +12/23/2019,12.810000,12.900000,12.410000,12.610000 +12/24/2019,12.650000,12.840000,12.560000,12.670000 +12/26/2019,12.740000,12.750000,11.720000,12.650000 +12/27/2019,12.610000,13.720000,11.890000,13.430000 +12/30/2019,13.740000,15.140000,13.440000,14.820000 +12/31/2019,14.840000,15.390000,13.750000,13.780000 +01/02/2020,13.460000,13.720000,12.420000,12.470000 +01/03/2020,15.010000,16.200000,13.130000,14.020000 +01/06/2020,15.450000,16.390000,13.540000,13.850000 +01/07/2020,13.840000,14.460000,13.390000,13.790000 +01/08/2020,15.160000,15.240000,12.830000,13.450000 +01/09/2020,12.950000,13.240000,12.530000,12.540000 +01/10/2020,12.420000,12.870000,12.090000,12.560000 +01/13/2020,12.840000,13.090000,12.320000,12.320000 +01/14/2020,12.720000,13.820000,12.050000,12.390000 +01/15/2020,12.790000,12.830000,11.950000,12.420000 +01/16/2020,12.200000,12.420000,11.780000,12.320000 +01/17/2020,12.210000,12.480000,11.750000,12.100000 +01/21/2020,13.230000,13.330000,12.320000,12.850000 +01/22/2020,12.450000,13.010000,12.310000,12.910000 +01/23/2020,13.260000,14.150000,12.940000,12.980000 +01/24/2020,12.750000,15.980000,12.620000,14.560000 +01/27/2020,17.420000,19.020000,16.820000,18.230000 +01/28/2020,16.940000,18.030000,15.690000,16.280000 +01/29/2020,15.680000,16.650000,14.940000,16.390000 +01/30/2020,17.820000,18.390000,15.300000,15.490000 +01/31/2020,16.250000,19.990000,16.180000,18.840000 +02/03/2020,18.640000,18.880000,17.100000,17.970000 +02/04/2020,16.450000,16.460000,15.630000,16.050000 +02/05/2020,16.290000,16.320000,15.020000,15.150000 +02/06/2020,15.130000,15.660000,14.700000,14.960000 +02/07/2020,15.070000,16.160000,14.810000,15.470000 +02/10/2020,15.880000,16.430000,15.010000,15.040000 +02/11/2020,14.910000,15.270000,14.380000,15.180000 +02/12/2020,14.860000,14.880000,13.730000,13.740000 +02/13/2020,14.430000,15.440000,14.000000,14.150000 +02/14/2020,14.120000,14.540000,13.380000,13.680000 +02/18/2020,14.980000,15.490000,14.530000,14.830000 +02/19/2020,14.660000,14.740000,14.210000,14.380000 +02/20/2020,14.540000,17.210000,14.490000,15.560000 +02/21/2020,17.330000,18.210000,16.190000,17.080000 +02/24/2020,22.250000,26.350000,22.000000,25.030000 +02/25/2020,22.190000,30.250000,22.190000,27.850000 +02/26/2020,26.630000,29.570000,24.760000,27.560000 +02/27/2020,28.950000,39.310000,27.790000,39.160000 +02/28/2020,42.020000,49.480000,39.370000,40.110000 +03/02/2020,34.860000,43.770000,31.500000,33.420000 +03/03/2020,33.640000,41.060000,24.930000,36.820000 +03/04/2020,34.440000,35.580000,30.300000,31.990000 +03/05/2020,33.610000,42.840000,33.540000,39.620000 +03/06/2020,41.460000,54.390000,40.840000,41.940000 +03/09/2020,41.940000,62.120000,41.940000,54.460000 +03/10/2020,49.680000,55.660000,43.560000,47.300000 +03/11/2020,52.240000,55.820000,49.980000,53.900000 +03/12/2020,61.460000,76.830000,59.910000,75.470000 +03/13/2020,71.310000,77.570000,55.170000,57.830000 +03/16/2020,57.830000,83.560000,57.830000,82.690000 +03/17/2020,82.690000,84.830000,70.370000,75.910000 +03/18/2020,69.370000,85.470000,69.370000,76.450000 +03/19/2020,80.620000,84.260000,68.570000,72.000000 +03/20/2020,67.860000,69.510000,57.420000,66.040000 +03/23/2020,74.080000,76.740000,60.460000,61.590000 +03/24/2020,58.760000,61.880000,36.240000,61.670000 +03/25/2020,61.440000,68.860000,58.030000,63.950000 +03/26/2020,65.670000,67.060000,57.660000,61.000000 +03/27/2020,64.950000,69.100000,61.800000,65.540000 +03/30/2020,66.300000,67.690000,56.600000,57.080000 +03/31/2020,56.690000,58.750000,50.880000,53.540000 +04/01/2020,57.380000,60.590000,52.760000,57.060000 +04/02/2020,54.460000,57.240000,50.450000,50.910000 +04/03/2020,51.110000,52.290000,46.740000,46.800000 +04/06/2020,44.170000,45.730000,43.450000,45.240000 +04/07/2020,44.830000,47.510000,43.510000,46.700000 +04/08/2020,45.900000,47.280000,42.530000,43.350000 +04/09/2020,43.000000,45.730000,41.390000,41.670000 +04/13/2020,44.600000,45.040000,41.170000,41.170000 +04/14/2020,40.240000,40.570000,37.310000,37.760000 +04/15/2020,39.400000,43.230000,39.340000,40.840000 +04/16/2020,41.920000,43.020000,39.870000,40.110000 +04/17/2020,39.500000,40.260000,37.630000,38.150000 +04/20/2020,40.680000,43.830000,39.880000,43.830000 +04/21/2020,44.280000,47.770000,43.770000,45.410000 +04/22/2020,44.910000,45.070000,41.410000,41.980000 +04/23/2020,41.300000,42.470000,39.060000,41.380000 +04/24/2020,41.910000,42.080000,35.600000,35.930000 +04/27/2020,36.290000,36.440000,32.510000,33.290000 +04/28/2020,33.210000,35.390000,30.540000,33.570000 +04/29/2020,32.480000,33.190000,30.710000,31.230000 +04/30/2020,30.990000,35.940000,30.930000,34.150000 +05/01/2020,38.170000,39.570000,36.590000,37.190000 +05/04/2020,39.130000,40.320000,35.530000,35.970000 +05/05/2020,34.820000,36.220000,31.950000,33.610000 +05/06/2020,32.690000,35.690000,31.680000,34.120000 +05/07/2020,32.120000,32.280000,30.370000,31.440000 +05/08/2020,30.140000,30.390000,27.890000,27.980000 +05/11/2020,28.460000,31.460000,26.970000,27.570000 +05/12/2020,28.470000,33.040000,26.000000,33.040000 +05/13/2020,32.740000,37.420000,30.770000,35.280000 +05/14/2020,35.160000,39.280000,32.330000,32.610000 +05/15/2020,32.500000,35.130000,31.040000,31.890000 +05/18/2020,30.710000,31.080000,28.350000,29.300000 +05/19/2020,28.730000,30.740000,28.370000,30.530000 +05/20/2020,29.520000,29.830000,27.830000,27.990000 +05/21/2020,28.970000,30.200000,27.670000,29.530000 +05/22/2020,31.360000,31.550000,28.030000,28.160000 +05/26/2020,27.720000,28.580000,27.180000,28.010000 +05/27/2020,27.620000,30.530000,25.920000,27.620000 +05/28/2020,27.820000,29.890000,27.430000,28.590000 +05/29/2020,29.300000,30.160000,27.290000,27.510000 +06/01/2020,28.940000,30.600000,28.110000,28.230000 +06/02/2020,28.400000,28.520000,26.660000,26.840000 +06/03/2020,26.750000,26.980000,25.040000,25.660000 +06/04/2020,26.230000,26.430000,24.380000,25.810000 +06/05/2020,24.790000,25.090000,23.540000,24.520000 +06/08/2020,25.560000,25.980000,24.650000,25.810000 +06/09/2020,25.930000,27.700000,25.710000,27.570000 +06/10/2020,26.730000,29.010000,26.060000,27.570000 +06/11/2020,30.450000,42.580000,29.490000,40.790000 +06/12/2020,37.680000,44.160000,34.970000,36.090000 +06/15/2020,44.090000,44.440000,34.280000,34.400000 +06/16/2020,34.280000,37.450000,31.730000,33.670000 +06/17/2020,33.280000,35.170000,32.250000,33.470000 +06/18/2020,33.830000,36.250000,32.240000,32.940000 +06/19/2020,32.070000,35.120000,30.400000,35.120000 +06/22/2020,35.220000,35.390000,31.640000,31.770000 +06/23/2020,31.710000,31.710000,29.260000,31.370000 +06/24/2020,31.050000,37.120000,30.950000,33.840000 +06/25/2020,36.590000,36.930000,31.590000,32.220000 +06/26/2020,33.010000,36.250000,31.040000,34.730000 +06/29/2020,35.050000,36.310000,31.780000,31.780000 +06/30/2020,32.540000,32.940000,29.560000,30.430000 +07/01/2020,30.960000,31.760000,28.200000,28.620000 +07/02/2020,28.330000,28.440000,25.900000,27.680000 +07/06/2020,27.760000,28.330000,24.920000,27.940000 +07/07/2020,28.770000,29.630000,27.250000,29.430000 +07/08/2020,28.950000,30.200000,27.240000,28.080000 +07/09/2020,28.180000,31.480000,26.110000,29.260000 +07/10/2020,30.860000,30.910000,27.130000,27.290000 +07/13/2020,27.850000,32.450000,26.870000,32.190000 +07/14/2020,31.140000,33.670000,29.210000,29.520000 +07/15/2020,29.150000,30.090000,27.170000,27.760000 +07/16/2020,28.410000,29.290000,26.980000,28.000000 +07/17/2020,27.150000,27.540000,25.410000,25.680000 +07/20/2020,26.940000,27.080000,24.350000,24.460000 +07/21/2020,24.080000,25.650000,23.610000,24.840000 +07/22/2020,24.560000,26.260000,24.130000,24.320000 +07/23/2020,23.970000,26.950000,23.600000,26.080000 +07/24/2020,27.960000,28.580000,25.530000,25.840000 +07/27/2020,26.600000,26.940000,24.550000,24.740000 +07/28/2020,24.860000,25.850000,24.050000,25.440000 +07/29/2020,25.160000,25.420000,23.730000,24.100000 +07/30/2020,25.040000,28.290000,24.640000,24.760000 +07/31/2020,24.790000,26.410000,23.550000,24.460000 +08/03/2020,25.750000,26.010000,22.170000,24.280000 +08/04/2020,24.010000,24.760000,22.920000,23.760000 +08/05/2020,23.440000,23.610000,22.860000,22.990000 +08/06/2020,23.030000,24.110000,20.970000,22.650000 +08/07/2020,23.450000,24.020000,22.020000,22.210000 +08/10/2020,22.880000,23.520000,21.460000,22.130000 +08/11/2020,21.850000,24.930000,20.280000,24.030000 +08/12/2020,22.820000,22.880000,21.540000,22.280000 +08/13/2020,22.200000,22.920000,21.450000,22.130000 +08/14/2020,22.270000,23.550000,21.790000,22.050000 +08/17/2020,22.520000,22.820000,21.340000,21.350000 +08/18/2020,21.690000,22.550000,21.180000,21.510000 +08/19/2020,21.600000,22.980000,20.990000,22.540000 +08/20/2020,24.100000,24.600000,22.370000,22.720000 +08/21/2020,22.580000,24.470000,22.060000,22.540000 +08/24/2020,22.870000,23.180000,21.250000,22.370000 +08/25/2020,22.160000,23.430000,21.530000,22.030000 +08/26/2020,22.140000,23.270000,20.920000,23.270000 +08/27/2020,23.420000,27.090000,21.440000,24.470000 +08/28/2020,24.590000,26.300000,22.640000,22.960000 +08/31/2020,23.910000,26.500000,21.770000,26.410000 +09/01/2020,25.860000,26.590000,25.020000,26.120000 +09/02/2020,26.010000,27.070000,25.530000,26.570000 +09/03/2020,26.280000,35.940000,25.660000,33.600000 +09/04/2020,34.620000,38.280000,29.500000,30.750000 +09/08/2020,30.610000,35.930000,30.520000,31.460000 +09/09/2020,31.680000,31.780000,28.120000,28.810000 +09/10/2020,28.670000,30.560000,27.590000,29.710000 +09/11/2020,28.630000,29.730000,26.510000,26.870000 +09/14/2020,25.860000,26.790000,25.380000,25.850000 +09/15/2020,25.920000,26.000000,24.920000,25.590000 +09/16/2020,25.310000,26.590000,24.840000,26.040000 +09/17/2020,28.220000,28.920000,26.260000,26.460000 +09/18/2020,26.650000,28.100000,25.280000,25.830000 +09/21/2020,28.040000,31.180000,27.390000,27.780000 +09/22/2020,28.610000,28.780000,26.480000,26.860000 +09/23/2020,27.020000,29.730000,25.190000,28.580000 +09/24/2020,29.540000,30.490000,27.940000,28.510000 +09/25/2020,28.170000,30.430000,26.020000,26.380000 +09/28/2020,27.150000,27.190000,24.900000,26.190000 +09/29/2020,26.810000,27.430000,25.980000,26.270000 +09/30/2020,26.690000,27.120000,25.060000,26.370000 +10/01/2020,25.780000,27.110000,25.330000,26.700000 +10/02/2020,28.870000,29.900000,26.930000,27.630000 +10/05/2020,29.520000,29.690000,27.270000,27.960000 +10/06/2020,28.050000,30.000000,26.010000,29.480000 +10/07/2020,29.260000,29.760000,27.940000,28.060000 +10/08/2020,27.650000,27.990000,24.880000,26.360000 +10/09/2020,26.200000,26.220000,24.030000,25.000000 +10/12/2020,25.650000,25.650000,24.140000,25.070000 +10/13/2020,25.670000,26.930000,25.160000,26.070000 +10/14/2020,25.720000,27.230000,25.530000,26.400000 +10/15/2020,27.100000,29.060000,26.820000,26.970000 +10/16/2020,27.160000,27.460000,26.190000,27.410000 +10/19/2020,27.360000,29.690000,27.040000,29.180000 +10/20/2020,28.810000,29.600000,28.290000,29.350000 +10/21/2020,29.120000,30.550000,28.370000,28.650000 +10/22/2020,30.100000,30.120000,27.680000,28.110000 +10/23/2020,28.470000,28.670000,27.260000,27.550000 +10/26/2020,29.380000,33.680000,29.220000,32.460000 +10/27/2020,32.040000,33.770000,31.850000,33.350000 +10/28/2020,34.690000,40.770000,34.680000,40.280000 +10/29/2020,38.800000,41.160000,35.630000,37.590000 +10/30/2020,40.810000,41.090000,36.500000,38.020000 +11/02/2020,38.570000,38.780000,36.130000,37.130000 +11/03/2020,36.440000,36.440000,34.190000,35.550000 +11/04/2020,36.790000,36.850000,28.030000,29.570000 +11/05/2020,27.560000,28.140000,26.040000,27.580000 +11/06/2020,27.870000,29.440000,24.560000,24.860000 +11/09/2020,24.800000,25.820000,22.410000,25.750000 +11/10/2020,25.360000,26.770000,24.350000,24.800000 +11/11/2020,25.010000,25.120000,22.570000,23.450000 +11/12/2020,24.390000,27.270000,23.530000,25.350000 +11/13/2020,24.940000,25.030000,22.740000,23.100000 +11/16/2020,23.660000,24.080000,22.430000,22.450000 +11/17/2020,22.840000,24.090000,22.340000,22.710000 +11/18/2020,22.860000,23.920000,21.660000,23.840000 +11/19/2020,23.620000,24.520000,22.560000,23.110000 +11/20/2020,23.430000,23.730000,22.130000,23.700000 +11/23/2020,23.660000,23.960000,22.450000,22.660000 +11/24/2020,22.040000,22.480000,20.800000,21.640000 +11/25/2020,21.650000,22.500000,21.130000,21.250000 +11/27/2020,21.520000,21.600000,19.510000,20.840000 +11/30/2020,22.640000,22.890000,20.480000,20.570000 +12/01/2020,20.210000,20.920000,20.000000,20.770000 +12/02/2020,21.000000,21.250000,20.040000,21.170000 +12/03/2020,21.240000,21.880000,20.720000,21.280000 +12/04/2020,21.050000,21.150000,19.970000,20.790000 +12/07/2020,22.040000,22.620000,21.170000,21.300000 +12/08/2020,21.650000,22.250000,20.520000,20.680000 +12/09/2020,20.660000,22.930000,20.100000,22.270000 +12/10/2020,22.120000,23.460000,21.530000,22.520000 +12/11/2020,22.490000,25.140000,22.480000,23.310000 +12/14/2020,22.670000,24.820000,21.950000,24.720000 +12/15/2020,24.000000,24.070000,22.730000,22.890000 +12/16/2020,22.510000,23.670000,22.290000,22.500000 +12/17/2020,21.980000,22.270000,21.520000,21.930000 +12/18/2020,22.150000,23.770000,21.570000,21.570000 +12/21/2020,24.250000,31.460000,24.230000,25.160000 +12/22/2020,25.240000,25.560000,23.530000,24.230000 +12/23/2020,23.490000,23.680000,22.130000,23.310000 +12/24/2020,22.470000,22.830000,21.390000,21.530000 +12/28/2020,22.110000,22.120000,21.150000,21.700000 +12/29/2020,21.610000,23.720000,20.990000,23.080000 +12/30/2020,22.580000,23.150000,22.410000,22.770000 +12/31/2020,22.990000,23.250000,21.240000,22.750000 +01/04/2021,23.040000,29.190000,22.560000,26.970000 +01/05/2021,26.940000,28.600000,24.800000,25.340000 +01/06/2021,25.480000,26.770000,22.140000,25.070000 +01/07/2021,23.670000,23.910000,22.250000,22.370000 +01/08/2021,22.430000,23.340000,21.420000,21.560000 +01/11/2021,23.310000,24.810000,23.230000,24.080000 +01/12/2021,23.490000,25.150000,22.830000,23.330000 +01/13/2021,23.070000,24.180000,21.920000,22.210000 +01/14/2021,22.220000,23.470000,21.660000,23.250000 +01/15/2021,23.520000,25.800000,23.080000,24.340000 +01/19/2021,23.030000,23.560000,22.530000,23.240000 +01/20/2021,22.820000,22.860000,21.370000,21.580000 +01/21/2021,21.340000,22.220000,21.090000,21.320000 +01/22/2021,22.240000,23.730000,21.270000,21.910000 +01/25/2021,22.310000,26.630000,22.200000,23.190000 +01/26/2021,23.910000,23.940000,22.550000,23.020000 +01/27/2021,23.820000,37.210000,23.710000,37.210000 +01/28/2021,33.250000,36.290000,27.390000,30.210000 +01/29/2021,35.160000,37.510000,29.240000,33.090000 +02/01/2021,31.450000,33.960000,29.030000,30.240000 +02/02/2021,28.010000,28.080000,25.310000,25.560000 +02/03/2021,24.590000,25.430000,22.910000,22.910000 +02/04/2021,23.440000,23.440000,21.680000,21.770000 +02/05/2021,21.990000,22.160000,20.860000,20.870000 +02/08/2021,21.890000,22.070000,21.230000,21.240000 +02/09/2021,21.570000,22.260000,20.650000,21.630000 +02/10/2021,21.640000,23.850000,19.690000,21.990000 +02/11/2021,22.090000,23.250000,21.110000,21.250000 +02/12/2021,21.600000,22.450000,19.950000,19.970000 +02/16/2021,21.130000,22.460000,20.880000,21.460000 +02/17/2021,22.020000,23.440000,21.090000,21.500000 +02/18/2021,21.980000,24.230000,21.800000,22.490000 +02/19/2021,23.100000,23.190000,20.840000,22.050000 +02/22/2021,24.460000,25.090000,21.960000,23.450000 +02/23/2021,22.820000,27.010000,22.500000,23.110000 +02/24/2021,23.760000,25.040000,21.310000,21.340000 +02/25/2021,21.730000,31.160000,21.520000,28.890000 +02/26/2021,28.730000,30.820000,25.230000,27.950000 +03/01/2021,25.200000,25.390000,23.170000,23.350000 +03/02/2021,23.580000,24.600000,22.800000,24.100000 +03/03/2021,22.800000,26.790000,22.450000,26.670000 +03/04/2021,26.520000,31.900000,24.930000,28.570000 +03/05/2021,29.480000,30.030000,24.330000,24.660000 +03/08/2021,27.610000,28.390000,24.070000,25.470000 +03/09/2021,25.110000,25.250000,22.900000,24.030000 +03/10/2021,23.760000,23.870000,22.380000,22.560000 +03/11/2021,22.500000,22.500000,21.450000,21.910000 +03/12/2021,22.570000,22.990000,20.630000,20.690000 +03/15/2021,21.840000,21.860000,19.870000,20.030000 +03/16/2021,20.140000,20.310000,19.330000,19.790000 +03/17/2021,20.100000,20.950000,19.180000,19.230000 +03/18/2021,18.950000,22.600000,18.950000,21.580000 +03/19/2021,21.430000,23.170000,19.900000,20.950000 +03/22/2021,21.910000,22.290000,18.870000,18.880000 +03/23/2021,19.460000,21.580000,18.800000,20.300000 +03/24/2021,20.640000,21.490000,19.300000,21.200000 +03/25/2021,20.800000,23.550000,19.810000,19.810000 +03/26/2021,19.320000,21.490000,18.680000,18.860000 +03/29/2021,20.400000,21.600000,19.420000,20.740000 +03/30/2021,20.760000,21.750000,19.470000,19.610000 +03/31/2021,19.800000,20.110000,18.850000,19.400000 +04/01/2021,18.600000,18.640000,17.290000,17.330000 +04/05/2021,18.160000,18.400000,17.350000,17.910000 +04/06/2021,18.070000,18.300000,17.370000,18.120000 +04/07/2021,17.990000,18.170000,16.870000,17.160000 +04/08/2021,16.920000,17.360000,16.550000,16.950000 +04/09/2021,17.050000,17.340000,16.200000,16.690000 +04/12/2021,17.430000,17.910000,16.810000,16.910000 +04/13/2021,16.990000,17.860000,16.430000,16.650000 +04/14/2021,16.710000,17.690000,15.380000,16.990000 +04/15/2021,16.780000,16.920000,15.940000,16.570000 +04/16/2021,16.650000,16.880000,16.050000,16.250000 +04/19/2021,17.040000,18.610000,16.780000,17.290000 +04/20/2021,17.360000,19.700000,17.240000,18.680000 +04/21/2021,18.480000,19.290000,16.910000,17.500000 +04/22/2021,17.280000,19.900000,16.990000,18.710000 +04/23/2021,18.560000,18.780000,16.800000,17.330000 +04/26/2021,17.940000,18.170000,16.870000,17.640000 +04/27/2021,17.620000,18.160000,16.970000,17.560000 +04/28/2021,17.470000,17.840000,16.670000,17.280000 +04/29/2021,16.880000,18.870000,16.770000,17.610000 +04/30/2021,17.670000,19.250000,17.640000,18.610000 +05/03/2021,18.650000,19.120000,17.800000,18.310000 +05/04/2021,18.160000,21.850000,18.110000,19.480000 +05/05/2021,18.840000,19.580000,17.890000,19.150000 +05/06/2021,18.410000,20.600000,18.210000,18.390000 +05/07/2021,18.450000,18.570000,16.680000,16.690000 +05/10/2021,17.340000,19.750000,17.070000,19.660000 +05/11/2021,21.170000,23.730000,20.710000,21.840000 +05/12/2021,22.420000,28.380000,21.660000,27.590000 +05/13/2021,26.030000,28.930000,22.230000,23.130000 +05/14/2021,21.770000,22.100000,18.660000,18.810000 +05/17/2021,19.890000,21.580000,19.670000,19.720000 +05/18/2021,18.890000,21.450000,18.810000,21.340000 +05/19/2021,22.460000,25.960000,21.880000,22.180000 +05/20/2021,22.330000,23.500000,20.190000,20.670000 +05/21/2021,20.420000,20.890000,19.530000,20.150000 +05/24/2021,20.500000,20.510000,18.380000,18.400000 +05/25/2021,18.350000,19.290000,16.870000,18.840000 +05/26/2021,18.370000,18.920000,17.350000,17.360000 +05/27/2021,18.030000,18.170000,16.520000,16.740000 +05/28/2021,16.800000,16.860000,15.900000,16.760000 +06/01/2021,17.240000,18.530000,15.680000,17.900000 +06/02/2021,17.860000,18.310000,16.740000,17.480000 +06/03/2021,17.730000,19.270000,17.450000,18.040000 +06/04/2021,18.090000,18.420000,16.180000,16.420000 +06/07/2021,17.340000,17.350000,15.780000,16.420000 +06/08/2021,16.580000,17.750000,15.150000,17.070000 +06/09/2021,17.180000,17.960000,15.550000,17.890000 +06/10/2021,18.180000,18.290000,16.010000,16.100000 +06/11/2021,16.180000,16.200000,15.150000,15.650000 +06/14/2021,16.040000,17.040000,15.040000,16.390000 +06/15/2021,16.270000,17.350000,16.140000,17.020000 +06/16/2021,16.990000,19.110000,16.420000,18.150000 +06/17/2021,18.490000,19.220000,16.710000,17.750000 +06/18/2021,16.960000,21.040000,16.920000,20.700000 +06/21/2021,21.740000,21.820000,17.810000,17.890000 +06/22/2021,17.910000,18.320000,15.760000,16.660000 +06/23/2021,16.250000,16.840000,14.860000,16.320000 +06/24/2021,15.990000,16.050000,14.190000,15.970000 +06/25/2021,16.040000,16.170000,15.210000,15.620000 +06/28/2021,16.070000,16.460000,15.390000,15.760000 +06/29/2021,15.690000,16.310000,14.100000,16.020000 +06/30/2021,16.180000,17.310000,15.580000,15.830000 +07/01/2021,15.620000,16.010000,15.310000,15.480000 +07/02/2021,15.530000,15.540000,14.250000,15.070000 +07/06/2021,15.770000,17.940000,15.730000,16.440000 +07/07/2021,16.430000,17.640000,16.080000,16.200000 +07/08/2021,17.740000,21.290000,17.740000,19.000000 +07/09/2021,17.880000,18.130000,16.080000,16.180000 +07/12/2021,16.850000,17.520000,16.140000,16.170000 +07/13/2021,16.390000,17.230000,15.940000,17.120000 +07/14/2021,17.340000,17.510000,15.950000,16.330000 +07/15/2021,16.700000,18.090000,16.560000,17.010000 +07/16/2021,16.800000,18.700000,16.030000,18.450000 +07/19/2021,19.610000,25.090000,19.270000,22.500000 +07/20/2021,20.890000,22.970000,19.370000,19.730000 +07/21/2021,19.730000,19.820000,17.810000,17.910000 +07/22/2021,17.590000,18.450000,17.400000,17.690000 +07/23/2021,16.980000,17.480000,16.330000,17.200000 +07/26/2021,18.670000,19.390000,17.530000,17.580000 +07/27/2021,18.620000,20.440000,18.250000,19.360000 +07/28/2021,19.410000,19.620000,17.520000,18.310000 +07/29/2021,17.910000,18.010000,17.190000,17.700000 +07/30/2021,19.690000,19.720000,17.530000,18.240000 +08/02/2021,18.160000,19.870000,17.990000,19.460000 +08/03/2021,19.170000,20.440000,17.700000,18.040000 +08/04/2021,18.230000,18.900000,17.670000,17.970000 +08/05/2021,17.730000,17.840000,17.230000,17.280000 +08/06/2021,17.460000,17.500000,16.140000,16.150000 +08/09/2021,17.120000,17.390000,16.590000,16.720000 +08/10/2021,16.820000,17.050000,16.340000,16.790000 +08/11/2021,16.810000,17.090000,15.870000,16.060000 +08/12/2021,16.330000,16.420000,15.490000,15.590000 +08/13/2021,15.680000,15.720000,15.190000,15.450000 +08/16/2021,17.050000,17.710000,16.020000,16.120000 +08/17/2021,17.310000,19.560000,16.710000,17.910000 +08/18/2021,17.560000,21.640000,17.310000,21.570000 +08/19/2021,23.120000,24.740000,20.370000,21.670000 +08/20/2021,22.740000,23.900000,18.180000,18.560000 +08/23/2021,18.830000,18.950000,16.950000,17.150000 +08/24/2021,16.960000,17.510000,16.940000,17.220000 +08/25/2021,17.420000,17.500000,16.460000,16.790000 +08/26/2021,17.460000,19.270000,17.160000,18.840000 +08/27/2021,17.950000,18.220000,16.110000,16.390000 +08/30/2021,16.770000,16.800000,15.980000,16.190000 +08/31/2021,15.980000,17.070000,15.910000,16.480000 +09/01/2021,16.060000,16.710000,15.680000,16.110000 +09/02/2021,16.270000,16.980000,15.730000,16.410000 +09/03/2021,16.270000,17.060000,16.080000,16.410000 +09/07/2021,16.940000,18.390000,16.890000,18.140000 +09/08/2021,18.970000,19.640000,17.780000,17.960000 +09/09/2021,19.440000,19.540000,17.170000,18.800000 +09/10/2021,17.940000,21.130000,16.990000,20.950000 +09/13/2021,19.640000,21.180000,18.760000,19.370000 +09/14/2021,19.580000,20.470000,18.390000,19.460000 +09/15/2021,19.300000,20.270000,18.010000,18.180000 +09/16/2021,18.410000,19.760000,17.650000,18.690000 +09/17/2021,18.370000,21.510000,18.350000,20.810000 +09/20/2021,24.250000,28.790000,23.900000,25.710000 +09/21/2021,23.410000,25.600000,21.710000,24.360000 +09/22/2021,22.720000,23.400000,20.750000,20.870000 +09/23/2021,19.910000,20.210000,18.420000,18.630000 +09/24/2021,19.330000,20.410000,17.630000,17.750000 +09/27/2021,17.780000,19.320000,17.740000,18.760000 +09/28/2021,19.740000,24.820000,19.710000,23.250000 +09/29/2021,22.070000,23.790000,21.450000,22.560000 +09/30/2021,21.480000,24.710000,20.600000,23.140000 +10/01/2021,24.780000,24.890000,20.640000,21.150000 +10/04/2021,22.900000,24.580000,21.880000,22.960000 +10/05/2021,22.920000,23.170000,20.620000,21.300000 +10/06/2021,22.950000,24.400000,20.990000,21.000000 +10/07/2021,20.540000,20.760000,19.070000,19.540000 +10/08/2021,19.460000,19.940000,18.200000,18.770000 +10/11/2021,19.930000,20.450000,18.110000,20.000000 +10/12/2021,20.620000,20.810000,18.970000,19.850000 +10/13/2021,20.140000,20.230000,18.440000,18.640000 +10/14/2021,18.010000,18.080000,16.800000,16.860000 +10/15/2021,16.640000,16.850000,15.720000,16.300000 +10/18/2021,17.290000,17.930000,16.270000,16.310000 +10/19/2021,16.090000,16.310000,15.570000,15.700000 +10/20/2021,15.820000,15.890000,15.290000,15.490000 +10/21/2021,16.060000,16.110000,14.920000,15.010000 +10/22/2021,15.350000,16.390000,14.840000,15.430000 +10/25/2021,16.140000,16.330000,15.100000,15.240000 +10/26/2021,15.020000,16.710000,14.900000,15.980000 +10/27/2021,15.790000,17.290000,15.540000,16.980000 +10/28/2021,17.060000,17.160000,16.230000,16.530000 +10/29/2021,17.400000,18.060000,16.130000,16.260000 +11/01/2021,16.850000,17.700000,16.320000,16.410000 +11/02/2021,16.540000,16.650000,15.890000,16.030000 +11/03/2021,16.110000,16.390000,14.900000,15.100000 +11/04/2021,15.060000,16.140000,14.730000,15.440000 +11/05/2021,15.590000,17.020000,14.950000,16.480000 +11/08/2021,17.230000,17.690000,16.440000,17.220000 +11/09/2021,17.430000,18.570000,17.210000,17.780000 +11/10/2021,17.740000,19.900000,17.220000,18.730000 +11/11/2021,18.340000,18.390000,17.270000,17.660000 +11/12/2021,17.490000,17.690000,16.150000,16.290000 +11/15/2021,17.030000,17.460000,16.490000,16.490000 +11/16/2021,16.860000,17.080000,16.030000,16.370000 +11/17/2021,16.360000,17.190000,16.280000,17.110000 +11/18/2021,16.810000,18.150000,16.380000,17.590000 +11/19/2021,17.360000,19.010000,17.230000,17.910000 +11/22/2021,18.200000,19.590000,17.350000,19.170000 +11/23/2021,20.240000,20.910000,19.030000,19.380000 +11/24/2021,19.170000,20.960000,18.520000,18.580000 +11/26/2021,26.620000,28.990000,23.880000,28.620000 +11/29/2021,25.310000,25.690000,21.710000,22.960000 +11/30/2021,26.230000,28.560000,23.710000,27.190000 +12/01/2021,24.920000,32.610000,22.380000,31.120000 +12/02/2021,29.440000,30.680000,27.150000,27.950000 +12/03/2021,26.950000,35.320000,25.890000,30.670000 +12/06/2021,28.990000,30.820000,26.750000,27.180000 +12/07/2021,24.580000,24.690000,21.580000,21.890000 +12/08/2021,21.740000,23.110000,19.850000,19.900000 +12/09/2021,20.310000,22.120000,19.940000,21.580000 +12/10/2021,21.270000,21.300000,18.690000,18.690000 +12/13/2021,19.290000,21.180000,18.960000,20.310000 +12/14/2021,19.670000,23.000000,19.670000,21.890000 +12/15/2021,21.600000,23.470000,19.020000,19.290000 +12/16/2021,18.560000,22.130000,18.190000,20.570000 +12/17/2021,20.700000,23.260000,20.490000,21.570000 +12/20/2021,25.890000,27.390000,22.850000,22.870000 +12/21/2021,22.280000,22.680000,20.900000,21.010000 +12/22/2021,21.040000,21.360000,18.590000,18.630000 +12/23/2021,18.810000,18.930000,17.620000,17.960000 +12/27/2021,19.370000,19.410000,17.550000,17.680000 +12/28/2021,17.780000,18.470000,17.510000,17.540000 +12/29/2021,17.630000,18.000000,16.710000,16.950000 +12/30/2021,17.300000,17.790000,16.620000,17.330000 +12/31/2021,17.630000,18.270000,16.990000,17.220000 +01/03/2022,17.600000,18.540000,16.560000,16.600000 +01/04/2022,16.570000,17.810000,16.340000,16.910000 +01/05/2022,17.070000,20.170000,16.580000,19.730000 +01/06/2022,20.290000,21.060000,19.080000,19.610000 +01/07/2022,19.850000,20.800000,18.570000,18.760000 +01/10/2022,19.580000,23.330000,19.290000,19.400000 +01/11/2022,19.620000,21.000000,18.200000,18.410000 +01/12/2022,18.170000,18.690000,17.360000,17.620000 +01/13/2022,18.060000,20.610000,17.450000,20.310000 +01/14/2022,20.110000,22.070000,19.050000,19.190000 +01/18/2022,21.180000,23.200000,21.180000,22.790000 +01/19/2022,23.120000,23.990000,21.850000,23.850000 +01/20/2022,23.460000,25.890000,21.680000,25.590000 +01/21/2022,25.380000,29.790000,25.310000,28.850000 +01/24/2022,28.200000,38.940000,28.020000,29.900000 +01/25/2022,32.290000,35.850000,29.130000,31.160000 +01/26/2022,29.350000,33.040000,26.900000,31.960000 +01/27/2022,32.190000,33.000000,28.420000,30.490000 +01/28/2022,30.270000,32.820000,27.280000,27.660000 +01/31/2022,28.360000,29.410000,24.710000,24.830000 +02/01/2022,24.570000,25.330000,21.960000,21.960000 +02/02/2022,21.560000,22.730000,20.460000,22.090000 +02/03/2022,22.630000,25.810000,22.300000,24.350000 +02/04/2022,23.770000,26.260000,22.070000,23.220000 +02/07/2022,24.090000,24.820000,22.020000,22.860000 +02/08/2022,23.090000,23.480000,21.320000,21.440000 +02/09/2022,21.270000,21.300000,19.930000,19.960000 +02/10/2022,20.370000,24.770000,20.180000,23.910000 +02/11/2022,24.390000,30.990000,23.330000,27.360000 +02/14/2022,29.170000,32.040000,28.330000,28.330000 +02/15/2022,28.090000,28.090000,25.330000,25.700000 +02/16/2022,25.190000,27.090000,23.880000,24.290000 +02/17/2022,24.830000,28.370000,24.760000,28.110000 +02/18/2022,26.660000,29.710000,26.380000,27.750000 +02/22/2022,31.800000,32.040000,28.400000,28.810000 +02/23/2022,28.040000,31.070000,27.200000,31.020000 +02/24/2022,37.500000,37.790000,29.450000,30.320000 +02/25/2022,31.680000,32.000000,26.930000,27.590000 +02/28/2022,32.440000,33.510000,28.430000,30.150000 +03/01/2022,29.450000,35.190000,29.440000,33.320000 +03/02/2022,34.200000,34.410000,30.120000,30.740000 +03/03/2022,30.520000,32.010000,29.310000,30.480000 +03/04/2022,31.900000,34.650000,31.470000,31.980000 +03/07/2022,35.880000,36.550000,32.590000,36.450000 +03/08/2022,36.190000,37.520000,32.780000,35.130000 +03/09/2022,33.740000,34.120000,31.390000,32.450000 +03/10/2022,33.030000,34.030000,30.230000,30.230000 +03/11/2022,30.430000,31.040000,28.840000,30.750000 +03/14/2022,31.030000,33.180000,30.060000,31.770000 +03/15/2022,33.130000,33.830000,29.570000,29.830000 +03/16/2022,29.020000,29.800000,26.290000,26.670000 +03/17/2022,26.510000,27.470000,25.250000,25.670000 +03/18/2022,26.360000,26.820000,23.850000,23.870000 +03/21/2022,25.140000,25.360000,22.990000,23.530000 +03/22/2022,24.020000,24.020000,22.700000,22.940000 +03/23/2022,23.040000,24.030000,22.640000,23.570000 +03/24/2022,23.610000,23.790000,21.490000,21.670000 +03/25/2022,21.870000,22.860000,20.800000,20.810000 +03/28/2022,22.140000,23.330000,19.540000,19.630000 +03/29/2022,19.700000,19.730000,18.670000,18.900000 +03/30/2022,19.380000,20.510000,18.720000,19.330000 +03/31/2022,19.680000,21.480000,19.540000,20.560000 +04/01/2022,20.620000,20.860000,19.410000,19.630000 +04/04/2022,20.750000,20.780000,18.450000,18.570000 +04/05/2022,18.790000,21.570000,18.550000,21.030000 +04/06/2022,21.270000,24.780000,21.240000,22.100000 +04/07/2022,21.970000,23.820000,21.120000,21.550000 +04/08/2022,21.250000,22.340000,20.280000,21.160000 +04/11/2022,23.090000,24.420000,22.090000,24.370000 +04/12/2022,24.940000,25.380000,22.270000,24.260000 +04/13/2022,23.520000,24.450000,21.370000,21.820000 +04/14/2022,21.720000,22.700000,20.850000,22.700000 +04/18/2022,24.520000,24.600000,21.980000,22.170000 +04/19/2022,22.550000,22.920000,20.360000,21.370000 +04/20/2022,21.130000,21.320000,19.750000,20.320000 +04/21/2022,20.240000,23.280000,19.810000,22.680000 +04/22/2022,22.710000,28.270000,22.620000,28.210000 +04/25/2022,30.040000,31.600000,26.800000,27.020000 +04/26/2022,27.380000,33.810000,27.060000,33.520000 +04/27/2022,31.110000,32.770000,29.820000,31.600000 +04/28/2022,29.910000,32.000000,28.000000,29.990000 +04/29/2022,28.970000,34.340000,28.540000,33.400000 +05/02/2022,33.350000,36.640000,31.740000,32.340000 +05/03/2022,31.760000,32.820000,29.060000,29.250000 +05/04/2022,29.120000,29.420000,24.940000,25.420000 +05/05/2022,25.970000,33.200000,25.780000,31.200000 +05/06/2022,32.230000,35.340000,29.830000,30.190000 +05/09/2022,31.900000,35.480000,31.900000,34.750000 +05/10/2022,33.660000,34.840000,32.240000,32.990000 +05/11/2022,32.870000,34.390000,30.690000,32.560000 +05/12/2022,33.740000,34.760000,31.700000,31.770000 +05/13/2022,31.090000,31.200000,28.780000,28.870000 +05/16/2022,30.010000,30.230000,27.360000,27.470000 +05/17/2022,27.070000,27.170000,25.510000,26.100000 +05/18/2022,26.740000,31.490000,26.210000,30.960000 +05/19/2022,31.240000,33.110000,29.060000,29.350000 +05/20/2022,28.780000,32.910000,28.060000,29.430000 +05/23/2022,28.980000,30.390000,28.290000,28.480000 +05/24/2022,29.430000,31.070000,29.040000,29.450000 +05/25/2022,29.330000,30.230000,28.160000,28.370000 +05/26/2022,28.420000,28.460000,27.110000,27.500000 +05/27/2022,27.500000,27.540000,25.570000,25.720000 +05/30/2022,26.160000,26.810000,26.080000,26.540000 +05/31/2022,27.470000,28.350000,25.940000,26.190000 +06/01/2022,26.050000,27.730000,25.380000,25.690000 +06/02/2022,25.730000,26.500000,24.330000,24.720000 +06/03/2022,24.910000,25.960000,24.760000,24.790000 +06/06/2022,25.370000,25.810000,24.820000,25.070000 +06/07/2022,25.540000,26.240000,23.880000,24.020000 +06/08/2022,24.370000,24.780000,23.740000,23.960000 +06/09/2022,24.290000,26.240000,23.820000,26.090000 +06/10/2022,26.260000,29.630000,26.050000,27.750000 +06/13/2022,31.370000,35.050000,31.290000,34.020000 +06/14/2022,33.010000,34.000000,32.060000,32.690000 +06/15/2022,32.390000,32.770000,27.760000,29.620000 +06/16/2022,30.350000,34.820000,30.350000,32.950000 +06/17/2022,32.840000,33.310000,30.470000,31.130000 +06/20/2022,32.060000,32.160000,30.980000,31.030000 +06/21/2022,30.630000,30.650000,29.330000,30.190000 +06/22/2022,31.450000,31.570000,28.780000,28.950000 +06/23/2022,29.290000,29.770000,28.740000,29.050000 +06/24/2022,29.070000,29.720000,26.830000,27.230000 +06/27/2022,28.300000,28.660000,26.930000,26.950000 +06/28/2022,26.900000,28.680000,26.470000,28.360000 +06/29/2022,28.800000,29.360000,27.850000,28.160000 +06/30/2022,29.420000,30.220000,28.280000,28.710000 +07/01/2022,29.530000,29.590000,26.690000,26.700000 +07/04/2022,27.960000,28.100000,27.460000,27.530000 +07/05/2022,27.370000,29.820000,27.300000,27.540000 +07/06/2022,27.840000,28.070000,26.430000,26.730000 +07/07/2022,26.730000,26.790000,25.660000,26.080000 +07/08/2022,26.410000,26.610000,24.430000,24.640000 +07/11/2022,26.420000,26.740000,25.790000,26.170000 +07/12/2022,27.140000,27.750000,25.820000,27.290000 +07/13/2022,27.350000,29.060000,26.230000,26.820000 +07/14/2022,27.470000,28.450000,26.200000,26.400000 +07/15/2022,26.720000,26.720000,24.130000,24.230000 +07/18/2022,24.830000,25.910000,24.380000,25.300000 +07/19/2022,25.120000,25.410000,24.230000,24.500000 +07/20/2022,24.230000,24.730000,23.400000,23.880000 +07/21/2022,24.070000,24.670000,22.920000,23.110000 +07/22/2022,23.300000,23.810000,22.410000,23.030000 +07/25/2022,24.330000,24.570000,23.190000,23.360000 +07/26/2022,23.950000,25.310000,23.820000,24.690000 +07/27/2022,24.270000,24.410000,23.020000,23.240000 +07/28/2022,23.330000,23.540000,22.220000,22.330000 +07/29/2022,22.130000,22.160000,21.210000,21.330000 +08/01/2022,22.410000,23.270000,22.260000,22.840000 +08/02/2022,24.080000,24.680000,22.670000,23.930000 +08/03/2022,23.860000,23.920000,21.680000,21.950000 +08/04/2022,22.060000,22.660000,21.440000,21.440000 +08/05/2022,21.500000,22.580000,20.760000,21.150000 +08/08/2022,21.740000,22.010000,20.830000,21.290000 +08/09/2022,21.410000,22.230000,21.410000,21.770000 +08/10/2022,22.280000,22.340000,19.540000,19.740000 +08/11/2022,19.840000,20.850000,19.710000,20.200000 +08/12/2022,20.340000,20.350000,19.120000,19.530000 +08/15/2022,20.740000,21.160000,19.810000,19.950000 +08/16/2022,20.230000,20.390000,19.500000,19.690000 +08/17/2022,19.740000,20.630000,19.410000,19.900000 +08/18/2022,20.510000,20.610000,19.430000,19.560000 +08/19/2022,20.160000,21.270000,20.080000,20.600000 +08/22/2022,22.410000,24.620000,22.390000,23.800000 +08/23/2022,24.130000,24.210000,23.070000,24.110000 +08/24/2022,24.370000,24.860000,22.730000,22.820000 +08/25/2022,22.410000,23.130000,21.770000,21.780000 +08/26/2022,22.070000,25.900000,21.670000,25.560000 +08/29/2022,26.860000,27.670000,25.470000,26.210000 +08/30/2022,25.750000,27.690000,25.130000,26.210000 +08/31/2022,25.860000,26.620000,25.310000,25.870000 +09/01/2022,26.880000,27.450000,25.250000,25.560000 +09/02/2022,25.510000,26.280000,23.190000,25.470000 +09/05/2022,26.510000,26.850000,25.840000,25.990000 +09/06/2022,25.460000,27.800000,25.330000,26.910000 +09/07/2022,26.930000,27.150000,24.540000,24.640000 +09/08/2022,24.700000,25.900000,23.560000,23.610000 +09/09/2022,23.490000,23.570000,22.640000,22.790000 +09/12/2022,23.580000,24.230000,23.160000,23.870000 +09/13/2022,23.670000,28.150000,23.530000,27.270000 +09/14/2022,26.730000,27.560000,26.160000,26.160000 +09/15/2022,26.100000,26.930000,25.420000,26.270000 +09/16/2022,27.470000,28.450000,26.140000,26.300000 +09/19/2022,27.690000,27.950000,25.560000,25.760000 +09/20/2022,25.650000,27.810000,25.610000,27.160000 +09/21/2022,28.030000,30.180000,25.550000,27.990000 +09/22/2022,28.160000,28.380000,26.710000,27.350000 +09/23/2022,27.680000,32.310000,27.580000,29.920000 +09/26/2022,31.740000,32.880000,29.830000,32.260000 +09/27/2022,31.200000,34.140000,30.300000,32.600000 +09/28/2022,34.500000,34.880000,30.030000,30.180000 +09/29/2022,31.670000,33.460000,31.160000,31.840000 +09/30/2022,31.610000,33.250000,29.390000,31.620000 +10/03/2022,33.000000,33.060000,29.630000,30.100000 +10/04/2022,29.520000,29.620000,28.560000,29.070000 +10/05/2022,29.360000,30.110000,28.500000,28.550000 +10/06/2022,28.600000,30.740000,28.560000,30.520000 +10/07/2022,30.370000,32.020000,29.880000,31.360000 +10/10/2022,32.930000,33.990000,32.050000,32.450000 +10/11/2022,33.560000,34.430000,32.450000,33.630000 +10/12/2022,33.540000,34.530000,33.110000,33.570000 +10/13/2022,33.600000,33.870000,31.630000,31.940000 +10/14/2022,31.890000,32.980000,31.140000,32.020000 +10/17/2022,32.270000,32.590000,30.700000,31.370000 +10/18/2022,31.100000,31.930000,30.420000,30.500000 +10/19/2022,30.940000,31.900000,30.760000,30.760000 +10/20/2022,31.300000,31.320000,29.760000,29.980000 +10/21/2022,30.210000,30.440000,29.240000,29.690000 +10/24/2022,30.650000,30.950000,29.780000,29.850000 +10/25/2022,29.800000,30.000000,28.220000,28.460000 +10/26/2022,28.440000,28.520000,27.270000,27.280000 +10/27/2022,27.510000,27.670000,26.940000,27.390000 +10/28/2022,27.430000,27.590000,25.750000,25.750000 +10/31/2022,26.910000,27.070000,25.840000,25.880000 +11/01/2022,25.960000,26.350000,25.660000,25.810000 +11/02/2022,26.040000,26.620000,25.390000,25.860000 +11/03/2022,25.980000,26.870000,25.100000,25.300000 +11/04/2022,25.630000,25.710000,24.000000,24.550000 +11/07/2022,25.670000,25.670000,24.340000,24.350000 +11/08/2022,24.710000,26.160000,24.240000,25.540000 +11/09/2022,25.340000,26.350000,25.020000,26.090000 +11/10/2022,26.510000,26.590000,22.840000,23.530000 +11/11/2022,23.890000,23.910000,22.370000,22.520000 +11/14/2022,23.990000,24.330000,22.860000,23.730000 +11/15/2022,23.770000,26.220000,23.180000,24.540000 +11/16/2022,24.290000,24.720000,23.990000,24.110000 +11/17/2022,24.050000,25.180000,23.810000,23.930000 +11/18/2022,24.030000,24.120000,22.980000,23.120000 +11/21/2022,24.050000,24.120000,22.300000,22.360000 +11/22/2022,22.590000,22.710000,21.280000,21.290000 +11/23/2022,21.490000,21.780000,20.320000,20.350000 +11/24/2022,20.500000,20.540000,20.310000,20.420000 +11/25/2022,20.610000,21.110000,20.460000,20.500000 +11/28/2022,22.090000,22.500000,21.650000,22.210000 +11/29/2022,22.090000,22.570000,21.830000,21.890000 +11/30/2022,21.700000,22.630000,20.310000,20.580000 +12/01/2022,20.830000,21.060000,19.800000,19.840000 +12/02/2022,20.420000,20.960000,18.950000,19.060000 +12/05/2022,20.300000,21.290000,19.780000,20.750000 +12/06/2022,20.690000,22.600000,20.380000,22.170000 +12/07/2022,22.320000,23.010000,22.180000,22.680000 +12/08/2022,22.810000,23.280000,22.060000,22.290000 +12/09/2022,22.550000,23.210000,22.180000,22.830000 +12/12/2022,24.400000,25.050000,24.180000,25.000000 +12/13/2022,25.240000,25.840000,21.460000,22.550000 +12/14/2022,22.830000,23.470000,21.070000,21.140000 +12/15/2022,21.520000,23.670000,21.250000,22.830000 +12/16/2022,23.260000,23.830000,22.090000,22.620000 +12/19/2022,22.630000,22.860000,21.610000,22.420000 +12/20/2022,23.170000,23.390000,21.350000,21.480000 +12/21/2022,21.250000,21.290000,19.940000,20.070000 +12/22/2022,20.080000,24.300000,20.010000,21.970000 +12/23/2022,22.170000,22.640000,20.780000,20.870000 +12/27/2022,21.670000,22.800000,21.590000,21.650000 +12/28/2022,21.470000,22.260000,20.960000,22.140000 +12/29/2022,22.250000,22.310000,21.360000,21.440000 +12/30/2022,21.830000,22.400000,21.590000,21.670000 +01/03/2023,23.090000,23.760000,22.730000,22.900000 +01/04/2023,22.930000,23.270000,21.940000,22.010000 +01/05/2023,22.200000,22.920000,21.970000,22.460000 +01/06/2023,22.690000,22.900000,21.000000,21.130000 +01/09/2023,21.750000,21.980000,21.270000,21.970000 +01/10/2023,22.220000,22.460000,20.580000,20.580000 +01/11/2023,20.800000,21.250000,20.620000,21.090000 +01/12/2023,21.560000,21.800000,18.830000,18.830000 +01/13/2023,19.000000,19.410000,18.010000,18.350000 +01/16/2023,19.440000,19.630000,19.410000,19.490000 +01/17/2023,19.890000,20.220000,19.210000,19.360000 +01/18/2023,19.280000,20.580000,18.710000,20.340000 +01/19/2023,20.430000,21.710000,20.170000,20.520000 +01/20/2023,20.280000,20.700000,19.410000,19.850000 +01/23/2023,20.210000,20.330000,19.550000,19.810000 +01/24/2023,19.890000,20.470000,18.910000,19.200000 +01/25/2023,19.560000,20.900000,18.990000,19.080000 +01/26/2023,19.050000,19.480000,18.670000,18.730000 +01/27/2023,18.900000,19.000000,17.970000,18.510000 +01/30/2023,19.760000,20.250000,19.540000,19.940000 +01/31/2023,20.120000,20.700000,19.130000,19.400000 +02/01/2023,19.620000,20.040000,17.700000,17.870000 +02/02/2023,17.740000,19.250000,17.060000,18.730000 +02/03/2023,18.570000,19.300000,17.930000,18.330000 +02/06/2023,19.230000,19.810000,19.210000,19.430000 +02/07/2023,19.540000,19.990000,18.430000,18.660000 +02/08/2023,18.880000,20.120000,18.550000,19.630000 +02/09/2023,19.240000,21.080000,19.020000,20.710000 +02/10/2023,20.740000,21.940000,20.440000,20.530000 +02/13/2023,21.660000,21.690000,20.330000,20.340000 +02/14/2023,20.720000,20.750000,18.480000,18.910000 +02/15/2023,19.370000,19.410000,18.110000,18.230000 +02/16/2023,18.260000,20.270000,18.230000,20.170000 +02/17/2023,20.940000,21.300000,19.820000,20.020000 +02/20/2023,21.060000,21.280000,20.960000,21.230000 +02/21/2023,21.800000,23.340000,21.800000,22.870000 +02/22/2023,23.030000,23.630000,22.020000,22.290000 +02/23/2023,21.960000,22.430000,20.890000,21.140000 +02/24/2023,21.350000,22.900000,21.320000,21.670000 +02/27/2023,21.990000,22.020000,20.680000,20.950000 +02/28/2023,21.300000,21.370000,20.100000,20.700000 +03/01/2023,20.390000,21.320000,20.220000,20.580000 +03/02/2023,21.410000,21.420000,19.550000,19.590000 +03/03/2023,19.760000,19.760000,18.160000,18.490000 +03/06/2023,19.050000,19.190000,18.490000,18.610000 +03/07/2023,18.640000,19.740000,18.510000,19.590000 +03/08/2023,19.710000,20.010000,19.000000,19.110000 +03/09/2023,19.330000,23.140000,18.880000,22.610000 +03/10/2023,23.340000,28.970000,21.790000,24.800000 +03/13/2023,24.050000,30.810000,23.850000,26.520000 +03/14/2023,26.850000,27.240000,22.270000,23.730000 +03/15/2023,23.210000,29.910000,23.190000,26.140000 +03/16/2023,26.190000,27.490000,22.970000,22.990000 +03/17/2023,22.920000,26.140000,22.580000,25.510000 +03/20/2023,27.770000,28.910000,24.000000,24.150000 +03/21/2023,24.160000,24.160000,21.290000,21.380000 +03/22/2023,21.800000,22.380000,19.940000,22.260000 +03/23/2023,21.540000,24.910000,20.160000,22.610000 +03/24/2023,22.110000,25.210000,21.600000,21.740000 +03/27/2023,22.050000,22.930000,20.570000,20.600000 +03/28/2023,20.530000,21.400000,19.910000,19.970000 +03/29/2023,19.390000,19.450000,19.090000,19.120000 +03/30/2023,19.120000,20.080000,18.850000,19.020000 +03/31/2023,19.210000,19.430000,18.520000,18.700000 +04/03/2023,19.790000,19.830000,18.540000,18.550000 +04/04/2023,18.790000,20.030000,18.580000,19.000000 +04/05/2023,19.420000,20.080000,19.000000,19.080000 +04/06/2023,19.300000,19.880000,18.350000,18.400000 +04/10/2023,19.390000,20.050000,18.930000,18.970000 +04/11/2023,19.080000,19.280000,18.560000,19.100000 +04/12/2023,19.380000,19.980000,18.250000,19.090000 +04/13/2023,18.830000,19.060000,17.770000,17.800000 +04/14/2023,17.940000,18.120000,17.070000,17.070000 +04/17/2023,17.580000,17.790000,16.900000,16.950000 +04/18/2023,16.940000,17.340000,16.580000,16.830000 +04/19/2023,17.300000,17.720000,16.170000,16.460000 +04/20/2023,16.850000,17.690000,16.330000,17.170000 +04/21/2023,17.510000,17.710000,16.580000,16.770000 +04/24/2023,18.220000,18.240000,16.740000,16.890000 +04/25/2023,17.620000,19.860000,17.330000,18.760000 +04/26/2023,18.660000,19.610000,17.870000,18.840000 +04/27/2023,18.430000,18.430000,16.720000,17.030000 +04/28/2023,17.210000,17.650000,15.720000,15.780000 +05/01/2023,16.410000,16.620000,15.530000,16.080000 +05/02/2023,16.270000,19.810000,16.260000,17.780000 +05/03/2023,17.820000,18.830000,17.190000,18.340000 +05/04/2023,19.170000,21.330000,18.670000,20.090000 +05/05/2023,19.500000,19.630000,16.690000,17.190000 +05/08/2023,17.730000,17.880000,16.830000,16.980000 +05/09/2023,17.290000,17.860000,17.220000,17.710000 +05/10/2023,17.580000,18.310000,16.360000,16.940000 +05/11/2023,16.800000,18.190000,16.630000,16.930000 +05/12/2023,16.830000,17.920000,16.380000,17.030000 +05/15/2023,17.440000,18.160000,17.080000,17.120000 +05/16/2023,17.540000,18.300000,17.260000,17.990000 +05/17/2023,17.960000,18.260000,16.680000,16.870000 +05/18/2023,16.920000,17.150000,16.050000,16.050000 +05/19/2023,16.130000,17.360000,15.850000,16.810000 +05/22/2023,17.450000,18.130000,16.820000,17.210000 +05/23/2023,17.350000,19.310000,17.300000,18.530000 +05/24/2023,18.800000,20.810000,18.800000,20.030000 +05/25/2023,19.540000,19.950000,18.700000,19.140000 +05/26/2023,19.070000,19.560000,17.270000,17.950000 +05/29/2023,17.530000,17.600000,17.340000,17.460000 +05/30/2023,17.560000,18.340000,16.980000,17.460000 +05/31/2023,18.040000,18.400000,17.120000,17.940000 +06/01/2023,17.240000,17.590000,15.580000,15.650000 +06/02/2023,15.650000,15.650000,14.420000,14.600000 +06/05/2023,15.280000,15.290000,14.660000,14.730000 +06/06/2023,14.910000,14.970000,13.950000,13.960000 +06/07/2023,14.140000,14.290000,13.770000,13.940000 +06/08/2023,14.140000,14.210000,13.530000,13.650000 +06/09/2023,13.780000,14.140000,13.500000,13.830000 +06/12/2023,14.440000,15.020000,14.320000,15.010000 +06/13/2023,14.990000,15.060000,14.470000,14.610000 +06/14/2023,14.480000,14.730000,13.830000,13.880000 +06/15/2023,14.090000,14.520000,13.790000,14.500000 +06/16/2023,14.490000,14.540000,13.480000,13.540000 +06/19/2023,14.090000,14.190000,14.010000,14.190000 +06/20/2023,14.360000,14.670000,13.860000,13.880000 +06/21/2023,13.880000,13.890000,13.100000,13.200000 +06/22/2023,13.880000,13.980000,12.730000,12.910000 +06/23/2023,13.240000,13.800000,12.880000,13.440000 +06/26/2023,14.430000,14.710000,13.780000,14.250000 +06/27/2023,14.110000,14.340000,13.590000,13.740000 +06/28/2023,13.900000,13.960000,13.360000,13.430000 +06/29/2023,13.640000,13.850000,13.410000,13.540000 +06/30/2023,13.510000,13.590000,12.960000,13.590000 +07/03/2023,13.850000,13.850000,13.470000,13.570000 +07/04/2023,13.540000,13.710000,13.520000,13.700000 +07/05/2023,14.190000,14.740000,14.050000,14.180000 +07/06/2023,14.850000,17.080000,14.790000,15.440000 +07/07/2023,15.970000,16.060000,14.330000,14.830000 +07/10/2023,16.080000,16.210000,15.040000,15.070000 +07/11/2023,15.020000,15.250000,14.630000,14.840000 +07/12/2023,14.820000,14.820000,13.510000,13.540000 +07/13/2023,13.440000,13.610000,13.120000,13.610000 +07/14/2023,13.720000,13.760000,13.220000,13.340000 +07/17/2023,13.780000,14.000000,13.430000,13.480000 +07/18/2023,13.610000,13.670000,13.290000,13.300000 +07/19/2023,13.320000,13.840000,13.120000,13.760000 +07/20/2023,13.960000,14.230000,13.580000,13.990000 +07/21/2023,13.870000,13.890000,13.370000,13.600000 +07/24/2023,14.290000,14.300000,13.730000,13.910000 +07/25/2023,14.020000,14.090000,13.820000,13.860000 +07/26/2023,13.860000,14.160000,13.150000,13.190000 +07/27/2023,13.140000,15.020000,12.740000,14.410000 +07/28/2023,14.030000,14.180000,13.270000,13.330000 +07/31/2023,13.980000,14.090000,13.570000,13.630000 +08/01/2023,13.750000,14.300000,13.750000,13.930000 +08/02/2023,15.700000,16.480000,14.950000,16.090000 +08/03/2023,16.770000,17.420000,15.720000,15.920000 +08/04/2023,16.010000,17.390000,14.570000,17.100000 +08/07/2023,16.900000,17.360000,15.770000,15.770000 +08/08/2023,16.280000,18.140000,15.960000,15.990000 +08/09/2023,15.810000,16.870000,15.380000,15.960000 +08/10/2023,15.580000,16.860000,14.600000,15.850000 +08/11/2023,15.530000,16.510000,14.840000,14.840000 +08/14/2023,15.880000,16.060000,14.770000,14.820000 +08/15/2023,14.950000,16.570000,14.910000,16.460000 +08/16/2023,16.540000,16.930000,15.800000,16.780000 +08/17/2023,16.960000,18.130000,16.400000,17.890000 +08/18/2023,17.800000,18.880000,17.140000,17.300000 +08/21/2023,18.030000,18.110000,16.880000,17.130000 +08/22/2023,16.960000,17.580000,16.610000,16.970000 +08/23/2023,16.640000,17.100000,15.910000,15.980000 +08/24/2023,15.570000,17.320000,15.480000,17.200000 +08/25/2023,17.210000,17.360000,15.450000,15.680000 +08/28/2023,16.240000,16.280000,15.000000,15.080000 +08/29/2023,15.080000,15.300000,14.340000,14.450000 +08/30/2023,14.530000,14.700000,13.830000,13.880000 +08/31/2023,13.980000,14.000000,13.440000,13.570000 +09/01/2023,13.560000,13.560000,13.020000,13.090000 +09/04/2023,13.620000,13.820000,13.510000,13.820000 +09/05/2023,14.150000,14.470000,13.700000,14.010000 +09/06/2023,14.270000,15.300000,14.130000,14.450000 +09/07/2023,14.810000,15.690000,14.400000,14.400000 +09/08/2023,14.220000,14.870000,13.580000,13.840000 +09/11/2023,14.170000,14.330000,13.740000,13.800000 +09/12/2023,14.020000,14.420000,13.710000,14.230000 +09/13/2023,14.420000,14.680000,13.410000,13.480000 +09/14/2023,13.390000,13.460000,12.790000,12.820000 +09/15/2023,12.700000,14.170000,12.680000,13.790000 +09/18/2023,14.400000,14.750000,13.860000,14.000000 +09/19/2023,14.110000,14.880000,13.860000,14.110000 +09/20/2023,14.180000,15.150000,13.570000,15.140000 +09/21/2023,15.490000,17.540000,15.100000,17.540000 +09/22/2023,17.310000,17.410000,15.930000,17.200000 +09/25/2023,17.250000,18.410000,16.790000,16.900000 +09/26/2023,18.030000,19.500000,17.170000,18.940000 +09/27/2023,18.290000,19.710000,18.030000,18.220000 +09/28/2023,18.220000,18.770000,17.060000,17.340000 +09/29/2023,16.870000,17.740000,15.830000,17.520000 +10/02/2023,17.310000,18.550000,16.930000,17.610000 +10/03/2023,17.810000,20.480000,17.520000,19.780000 +10/04/2023,20.720000,20.880000,18.300000,18.580000 +10/05/2023,18.670000,19.580000,18.260000,18.490000 +10/06/2023,18.730000,19.930000,17.190000,17.450000 +10/09/2023,19.540000,19.600000,17.560000,17.700000 +10/10/2023,17.700000,17.860000,16.510000,17.030000 +10/11/2023,16.950000,17.780000,16.090000,16.090000 +10/12/2023,16.080000,18.080000,15.440000,16.690000 +10/13/2023,16.530000,20.780000,16.500000,19.320000 +10/16/2023,19.100000,19.570000,17.140000,17.210000 +10/17/2023,17.410000,18.540000,16.970000,17.880000 +10/18/2023,18.360000,20.150000,17.880000,19.220000 +10/19/2023,19.730000,21.400000,18.550000,21.400000 +10/20/2023,21.590000,21.830000,20.420000,21.710000 +10/23/2023,21.830000,23.080000,19.480000,20.370000 +10/24/2023,20.030000,20.240000,18.650000,18.970000 +10/25/2023,19.390000,21.240000,18.860000,20.190000 +10/26/2023,21.780000,21.960000,20.220000,20.680000 +10/27/2023,20.390000,22.070000,19.720000,21.270000 +10/30/2023,21.130000,21.160000,19.550000,19.750000 +10/31/2023,19.860000,19.860000,17.970000,18.140000 +11/01/2023,18.020000,18.420000,16.630000,16.870000 +11/02/2023,16.590000,16.620000,15.580000,15.660000 +11/03/2023,15.700000,15.830000,14.910000,14.910000 +11/06/2023,15.390000,15.580000,14.840000,14.890000 +11/07/2023,15.100000,15.170000,14.710000,14.810000 +11/08/2023,14.910000,15.090000,14.300000,14.450000 +11/09/2023,14.610000,15.570000,14.130000,15.290000 +11/10/2023,15.090000,15.450000,14.160000,14.170000 +11/13/2023,15.160000,15.190000,14.580000,14.760000 +11/14/2023,14.830000,14.860000,13.910000,14.160000 +11/15/2023,14.210000,14.350000,13.970000,14.180000 +11/16/2023,14.120000,14.420000,13.680000,14.320000 +11/17/2023,14.180000,14.190000,13.670000,13.800000 +11/20/2023,14.260000,14.310000,13.390000,13.410000 +11/21/2023,13.450000,14.310000,13.130000,13.350000 +11/22/2023,13.080000,13.250000,12.820000,12.850000 +11/23/2023,12.840000,12.870000,12.750000,12.800000 +11/24/2023,13.030000,13.170000,12.450000,12.460000 +11/27/2023,13.140000,13.280000,12.640000,12.690000 +11/28/2023,12.780000,14.300000,12.560000,12.690000 +11/29/2023,12.710000,13.100000,12.480000,12.980000 +11/30/2023,13.070000,13.390000,12.820000,12.920000 +12/01/2023,12.940000,12.960000,12.480000,12.630000 +12/04/2023,13.280000,13.700000,12.980000,13.080000 +12/05/2023,13.260000,13.760000,12.810000,12.850000 +12/06/2023,12.780000,13.030000,12.640000,12.970000 +12/07/2023,13.170000,13.280000,12.950000,13.060000 +12/08/2023,13.140000,13.240000,12.350000,12.350000 +12/11/2023,13.050000,13.140000,12.610000,12.630000 +12/12/2023,12.690000,12.740000,11.810000,12.070000 +12/13/2023,12.200000,12.460000,11.820000,12.190000 +12/14/2023,11.960000,12.740000,11.840000,12.480000 +12/15/2023,12.120000,12.540000,12.010000,12.280000 +12/18/2023,12.620000,12.640000,12.400000,12.560000 +12/19/2023,12.600000,12.600000,12.330000,12.530000 +12/20/2023,12.630000,13.930000,12.290000,13.670000 +12/21/2023,13.400000,14.490000,13.340000,13.650000 +12/22/2023,13.720000,13.960000,13.000000,13.030000 +12/26/2023,13.770000,13.800000,12.960000,12.990000 +12/27/2023,13.020000,13.040000,12.370000,12.430000 +12/28/2023,12.440000,12.650000,12.380000,12.470000 +12/29/2023,12.550000,13.190000,12.360000,12.450000 +01/02/2024,13.220000,14.230000,13.100000,13.200000 +01/03/2024,13.350000,14.220000,13.330000,14.040000 +01/04/2024,13.930000,14.200000,13.640000,14.130000 +01/05/2024,14.240000,14.580000,13.290000,13.350000 +01/08/2024,14.000000,14.180000,13.020000,13.080000 +01/09/2024,13.200000,13.450000,12.740000,12.760000 +01/10/2024,12.860000,12.950000,12.670000,12.690000 +01/11/2024,12.640000,13.310000,12.350000,12.440000 +01/12/2024,12.660000,13.080000,12.470000,12.700000 +01/15/2024,13.230000,13.340000,13.200000,13.250000 +01/16/2024,14.120000,14.350000,13.520000,13.840000 +01/17/2024,14.590000,15.400000,14.380000,14.790000 +01/18/2024,14.850000,14.890000,13.890000,14.130000 +01/19/2024,13.800000,14.580000,13.280000,13.300000 +01/22/2024,13.770000,13.840000,13.170000,13.190000 +01/23/2024,13.200000,13.290000,12.530000,12.550000 +01/24/2024,12.660000,13.180000,12.410000,13.140000 +01/25/2024,13.180000,13.580000,13.060000,13.450000 +01/26/2024,13.730000,14.100000,13.200000,13.260000 +01/29/2024,13.980000,15.350000,13.590000,13.600000 +01/30/2024,13.690000,13.740000,13.230000,13.310000 +01/31/2024,13.420000,14.610000,13.180000,14.350000 +02/01/2024,14.210000,14.630000,13.870000,13.880000 +02/02/2024,13.950000,14.230000,13.390000,13.850000 +02/05/2024,14.370000,14.530000,13.580000,13.670000 +02/06/2024,13.570000,13.780000,12.980000,13.060000 +02/07/2024,13.060000,13.130000,12.810000,12.830000 +02/08/2024,12.950000,13.170000,12.740000,12.790000 +02/09/2024,12.790000,13.010000,12.690000,12.930000 +02/12/2024,13.480000,13.940000,13.340000,13.930000 +02/13/2024,13.960000,17.940000,13.430000,15.850000 +02/14/2024,15.380000,15.470000,14.220000,14.380000 +02/15/2024,14.270000,14.640000,13.940000,14.010000 +02/16/2024,13.940000,14.710000,13.750000,14.240000 +02/19/2024,14.720000,14.780000,14.650000,14.710000 +02/20/2024,15.090000,15.910000,15.070000,15.420000 +02/21/2024,15.540000,16.120000,15.220000,15.340000 +02/22/2024,14.280000,14.640000,14.120000,14.540000 +02/23/2024,14.310000,14.310000,13.640000,13.750000 +02/26/2024,14.170000,14.200000,13.660000,13.740000 +02/27/2024,13.630000,13.750000,13.410000,13.430000 +02/28/2024,13.520000,13.900000,13.440000,13.840000 +02/29/2024,14.140000,14.150000,13.300000,13.400000 +03/01/2024,13.340000,13.660000,13.080000,13.110000 +03/04/2024,13.490000,13.580000,13.320000,13.490000 +03/05/2024,13.750000,15.100000,13.750000,14.460000 +03/06/2024,14.270000,14.930000,13.890000,14.500000 +03/07/2024,14.980000,14.980000,14.250000,14.440000 +03/08/2024,14.220000,15.530000,13.970000,14.740000 +03/11/2024,15.510000,16.040000,15.130000,15.220000 +03/12/2024,14.970000,15.200000,13.810000,13.840000 +03/13/2024,13.890000,14.040000,13.670000,13.750000 +03/14/2024,13.620000,15.330000,13.420000,14.400000 +03/15/2024,14.330000,15.530000,14.140000,14.410000 +03/18/2024,14.750000,14.850000,14.260000,14.330000 +03/19/2024,14.500000,14.860000,13.800000,13.820000 +03/20/2024,13.830000,14.170000,13.010000,13.040000 +03/21/2024,12.980000,13.080000,12.400000,12.920000 +03/22/2024,12.920000,13.150000,12.580000,13.060000 +03/25/2024,13.670000,13.670000,13.110000,13.190000 +03/26/2024,13.120000,13.430000,12.840000,13.240000 +03/27/2024,13.130000,13.340000,12.660000,12.780000 +03/28/2024,12.930000,13.100000,12.840000,13.010000 +04/01/2024,13.610000,14.150000,13.550000,13.650000 +04/02/2024,13.740000,15.430000,13.680000,14.610000 +04/03/2024,15.000000,15.180000,14.250000,14.330000 +04/04/2024,14.290000,16.920000,13.740000,16.350000 +04/05/2024,16.450000,16.750000,15.530000,16.030000 +04/08/2024,16.240000,16.500000,15.110000,15.190000 +04/09/2024,15.340000,16.630000,14.940000,14.980000 +04/10/2024,15.240000,16.620000,14.590000,15.800000 +04/11/2024,16.020000,17.610000,14.910000,14.910000 +04/12/2024,14.910000,19.200000,14.910000,17.310000 +04/15/2024,16.940000,19.460000,16.260000,19.230000 +04/16/2024,19.490000,19.560000,17.640000,18.400000 +04/17/2024,18.240000,19.110000,17.540000,18.210000 +04/18/2024,17.910000,18.370000,17.210000,18.000000 +04/19/2024,21.330000,21.360000,18.170000,18.710000 +04/22/2024,18.590000,18.720000,16.690000,16.940000 +04/23/2024,16.720000,16.760000,15.690000,15.690000 +04/24/2024,15.760000,16.380000,15.580000,15.970000 +04/25/2024,16.250000,17.550000,15.270000,15.370000 +04/26/2024,15.490000,16.060000,14.920000,15.030000 +04/29/2024,15.370000,15.420000,14.630000,14.670000 +04/30/2024,14.820000,15.900000,14.670000,15.650000 +05/01/2024,15.750000,16.220000,14.350000,15.390000 +05/02/2024,15.140000,16.090000,14.600000,14.680000 +05/03/2024,14.510000,14.580000,13.480000,13.490000 +05/06/2024,13.980000,14.020000,13.440000,13.490000 +05/07/2024,13.520000,13.640000,13.160000,13.230000 +05/08/2024,13.240000,13.510000,12.940000,13.000000 +05/09/2024,13.080000,13.290000,12.680000,12.690000 +05/10/2024,12.770000,12.960000,12.500000,12.550000 +05/13/2024,13.260000,13.660000,13.250000,13.600000 +05/14/2024,13.710000,14.030000,13.270000,13.420000 +05/15/2024,13.730000,13.940000,12.380000,12.450000 +05/16/2024,12.520000,12.670000,12.330000,12.420000 +05/17/2024,12.280000,12.480000,11.910000,11.990000 +05/20/2024,12.270000,12.590000,12.070000,12.150000 +05/21/2024,12.300000,12.560000,11.840000,11.860000 +05/22/2024,12.050000,12.810000,11.780000,12.290000 +05/23/2024,11.530000,13.370000,11.520000,12.770000 +05/24/2024,12.860000,12.890000,11.890000,11.930000 +05/27/2024,12.410000,12.490000,12.350000,12.360000 +05/28/2024,12.510000,13.440000,12.360000,12.920000 +05/29/2024,13.750000,14.320000,13.690000,14.280000 +05/30/2024,14.820000,14.880000,13.670000,14.470000 +05/31/2024,14.500000,14.870000,12.840000,12.920000 +06/03/2024,13.080000,14.310000,13.000000,13.110000 +06/04/2024,13.510000,14.080000,13.110000,13.160000 +06/05/2024,13.140000,13.250000,12.600000,12.630000 +06/06/2024,12.750000,12.980000,12.540000,12.580000 +06/07/2024,12.690000,13.080000,12.110000,12.220000 +06/10/2024,13.090000,13.280000,12.620000,12.740000 +06/11/2024,12.850000,13.470000,12.780000,12.850000 +06/12/2024,13.100000,13.150000,11.940000,12.040000 +06/13/2024,12.050000,12.680000,11.880000,11.940000 +06/14/2024,12.220000,13.450000,12.120000,12.660000 +06/17/2024,13.070000,13.290000,12.500000,12.750000 +06/18/2024,12.700000,12.740000,12.240000,12.300000 +06/19/2024,12.320000,12.550000,12.320000,12.480000 +06/20/2024,12.500000,13.550000,12.180000,13.280000 +06/21/2024,13.220000,13.780000,12.990000,13.200000 +06/24/2024,13.850000,13.880000,13.150000,13.330000 +06/25/2024,13.480000,13.520000,12.840000,12.840000 +06/26/2024,12.810000,13.240000,12.370000,12.550000 +06/27/2024,12.690000,12.770000,12.210000,12.240000 +06/28/2024,12.240000,12.760000,11.870000,12.440000 +07/01/2024,12.980000,13.260000,12.100000,12.220000 +07/02/2024,12.670000,12.880000,11.850000,12.030000 +07/03/2024,12.130000,12.230000,11.950000,12.090000 +07/04/2024,12.100000,12.350000,12.090000,12.260000 +07/05/2024,12.370000,12.610000,11.840000,12.480000 +07/08/2024,12.910000,12.910000,12.310000,12.370000 +07/09/2024,12.480000,12.610000,12.350000,12.510000 +07/10/2024,12.510000,12.920000,12.390000,12.850000 +07/11/2024,12.880000,13.330000,12.230000,12.920000 +07/12/2024,12.870000,12.890000,12.110000,12.460000 +07/15/2024,12.780000,13.260000,12.750000,13.120000 +07/16/2024,13.380000,13.470000,12.950000,13.190000 +07/17/2024,13.600000,14.880000,13.540000,14.480000 +07/18/2024,14.270000,16.430000,14.080000,15.930000 +07/19/2024,16.440000,17.190000,10.620000,16.520000 +07/22/2024,16.790000,16.890000,14.750000,14.910000 +07/23/2024,15.210000,15.350000,13.900000,14.720000 +07/24/2024,15.350000,18.460000,15.180000,18.040000 +07/25/2024,18.410000,19.360000,16.420000,18.460000 +07/26/2024,17.970000,18.050000,16.370000,16.390000 +07/29/2024,16.590000,17.210000,16.230000,16.600000 +07/30/2024,16.640000,18.320000,16.260000,17.690000 +07/31/2024,16.660000,16.770000,15.710000,16.360000 +08/01/2024,16.200000,19.480000,15.950000,18.590000 +08/02/2024,20.520000,29.660000,20.010000,23.390000 +08/05/2024,23.390000,65.730000,23.390000,38.570000 +08/06/2024,33.710000,34.770000,24.020000,27.710000 +08/07/2024,24.770000,29.760000,21.970000,27.850000 +08/08/2024,28.340000,29.470000,23.360000,23.790000 +08/09/2024,23.780000,24.520000,20.260000,20.370000 +08/12/2024,20.790000,21.190000,18.890000,20.710000 +08/13/2024,20.060000,20.790000,17.950000,18.120000 +08/14/2024,18.410000,18.490000,16.120000,16.190000 +08/15/2024,16.270000,16.680000,14.770000,15.230000 +08/16/2024,15.290000,15.760000,14.650000,14.800000 +08/19/2024,15.940000,16.070000,14.460000,14.650000 +08/20/2024,14.890000,15.930000,14.780000,15.880000 +08/21/2024,16.250000,17.170000,15.920000,16.270000 +08/22/2024,16.270000,18.060000,15.760000,17.550000 +08/23/2024,17.120000,17.210000,15.610000,15.860000 +08/26/2024,16.270000,16.670000,15.810000,16.150000 +08/27/2024,16.210000,16.810000,15.370000,15.430000 +08/28/2024,15.510000,17.890000,15.460000,17.110000 +08/29/2024,16.540000,16.570000,15.190000,15.650000 +08/30/2024,15.670000,16.040000,14.780000,15.000000 +09/02/2024,15.870000,15.990000,15.480000,15.550000 +09/03/2024,15.760000,21.990000,15.710000,20.720000 +09/04/2024,23.200000,23.310000,19.340000,21.320000 +09/05/2024,20.750000,21.530000,19.210000,19.900000 +09/06/2024,21.980000,23.760000,18.830000,22.380000 +09/09/2024,21.320000,21.410000,19.290000,19.450000 +09/10/2024,19.860000,20.740000,18.900000,19.080000 +09/11/2024,19.410000,21.410000,17.550000,17.690000 +09/12/2024,17.620000,18.590000,16.890000,17.070000 +09/13/2024,17.030000,17.180000,16.230000,16.560000 +09/16/2024,17.160000,17.690000,16.910000,17.140000 +09/17/2024,17.160000,18.080000,16.670000,17.610000 +09/18/2024,17.580000,19.390000,17.110000,18.230000 +09/19/2024,17.210000,17.270000,16.210000,16.330000 +09/20/2024,16.350000,16.680000,15.810000,16.150000 +09/23/2024,16.710000,16.950000,15.750000,15.890000 +09/24/2024,15.870000,16.670000,15.270000,15.390000 +09/25/2024,15.820000,15.820000,15.170000,15.410000 +09/26/2024,15.060000,15.830000,14.900000,15.370000 +09/27/2024,15.640000,16.970000,15.200000,16.960000 +09/30/2024,17.010000,17.790000,16.470000,16.730000 +10/01/2024,16.960000,20.730000,16.610000,19.260000 +10/02/2024,19.650000,20.360000,18.580000,18.900000 +10/03/2024,19.630000,20.750000,19.160000,20.490000 +10/04/2024,20.480000,20.480000,18.480000,19.210000 +10/07/2024,20.760000,23.030000,20.650000,22.640000 +10/08/2024,22.920000,23.140000,21.140000,21.420000 +10/09/2024,21.980000,22.010000,20.710000,20.860000 +10/10/2024,20.910000,21.390000,20.640000,20.930000 +10/11/2024,20.870000,21.160000,20.140000,20.460000 +10/14/2024,20.860000,20.860000,19.690000,19.700000 +10/15/2024,19.610000,20.890000,19.440000,20.640000 +10/16/2024,20.770000,21.010000,19.450000,19.580000 +10/17/2024,19.550000,19.650000,18.880000,19.110000 +10/18/2024,19.300000,19.320000,17.990000,18.030000 +10/21/2024,18.780000,19.340000,18.360000,18.370000 +10/22/2024,18.790000,19.440000,18.050000,18.200000 +10/23/2024,18.210000,20.470000,18.180000,19.240000 +10/24/2024,18.870000,20.240000,18.630000,19.080000 +10/25/2024,19.220000,20.510000,18.230000,20.330000 +10/28/2024,19.110000,19.880000,18.910000,19.800000 +10/29/2024,19.750000,20.530000,19.060000,19.340000 +10/30/2024,19.330000,20.440000,19.300000,20.350000 +10/31/2024,21.440000,23.420000,21.120000,23.160000 +11/01/2024,22.960000,23.090000,21.160000,21.880000 +11/04/2024,22.500000,23.070000,21.730000,21.980000 +11/05/2024,21.980000,22.060000,20.200000,20.490000 +11/06/2024,16.060000,16.820000,15.440000,16.270000 +11/07/2024,15.860000,15.860000,15.130000,15.200000 +11/08/2024,15.130000,15.330000,14.660000,14.940000 +11/11/2024,15.330000,15.560000,14.890000,14.970000 +11/12/2024,15.090000,15.370000,14.690000,14.710000 +11/13/2024,15.090000,15.260000,13.770000,14.020000 +11/14/2024,14.170000,14.320000,13.590000,14.310000 +11/15/2024,15.020000,17.550000,14.560000,16.140000 +11/18/2024,16.600000,17.000000,15.350000,15.580000 +11/19/2024,15.440000,17.930000,15.370000,16.350000 +11/20/2024,16.190000,18.790000,16.040000,17.160000 +11/21/2024,17.100000,17.990000,15.730000,16.870000 +11/22/2024,16.670000,17.560000,15.240000,15.240000 +11/25/2024,15.230000,15.720000,14.540000,14.600000 +11/26/2024,14.950000,15.030000,13.880000,14.100000 +11/27/2024,14.280000,15.130000,13.960000,14.100000 +11/28/2024,14.070000,14.070000,13.870000,13.900000 +11/29/2024,14.000000,14.150000,13.490000,13.510000 +12/02/2024,14.080000,14.100000,13.300000,13.340000 +12/03/2024,13.380000,13.770000,13.190000,13.300000 +12/04/2024,13.160000,13.610000,12.890000,13.450000 +12/05/2024,13.460000,13.700000,13.260000,13.540000 +12/06/2024,13.620000,13.740000,12.700000,12.770000 +12/09/2024,13.360000,14.230000,13.350000,14.190000 +12/10/2024,14.300000,14.540000,13.860000,14.180000 +12/11/2024,14.420000,14.430000,13.520000,13.580000 +12/12/2024,13.730000,13.950000,13.390000,13.920000 +12/13/2024,13.570000,14.250000,13.240000,13.810000 +12/16/2024,14.370000,14.690000,13.990000,14.690000 +12/17/2024,14.980000,15.940000,14.780000,15.870000 +12/18/2024,15.570000,28.320000,14.820000,27.620000 +12/19/2024,21.610000,24.120000,20.160000,24.090000 +12/20/2024,24.140000,26.510000,17.820000,18.360000 +12/23/2024,18.090000,20.020000,16.740000,16.780000 +12/24/2024,16.970000,17.040000,14.270000,14.270000 +12/26/2024,14.990000,15.930000,14.550000,14.730000 +12/27/2024,15.380000,18.450000,15.290000,15.950000 +12/30/2024,17.210000,19.220000,16.440000,17.400000 +12/31/2024,17.390000,17.810000,16.680000,17.350000 +01/02/2025,17.210000,19.500000,16.960000,17.930000 +01/03/2025,17.660000,17.940000,16.110000,16.130000 +01/06/2025,16.770000,16.870000,15.710000,16.040000 +01/07/2025,16.480000,18.900000,15.790000,17.820000 +01/08/2025,17.910000,19.500000,17.370000,17.700000 +01/09/2025,18.510000,18.520000,17.950000,18.070000 +01/10/2025,18.290000,20.310000,18.050000,19.540000 +01/13/2025,21.180000,22.040000,19.150000,19.190000 +01/14/2025,18.790000,19.660000,18.240000,18.710000 +01/15/2025,19.080000,19.140000,15.960000,16.120000 +01/16/2025,15.870000,16.600000,15.640000,16.600000 +01/17/2025,16.190000,16.230000,15.530000,15.970000 +01/20/2025,16.460000,16.590000,15.800000,15.810000 +01/21/2025,16.290000,16.290000,14.930000,15.060000 +01/22/2025,14.890000,15.290000,14.590000,15.100000 +01/23/2025,15.280000,15.390000,14.590000,15.020000 +01/24/2025,15.020000,15.160000,14.580000,14.850000 +01/27/2025,18.830000,22.510000,17.570000,17.900000 +01/28/2025,18.290000,18.390000,16.250000,16.410000 +01/29/2025,16.420000,18.080000,16.170000,16.560000 +01/30/2025,15.930000,16.420000,15.320000,15.840000 +01/31/2025,15.450000,17.090000,14.900000,16.430000 +02/03/2025,20.360000,20.420000,17.660000,18.620000 +02/04/2025,18.780000,19.110000,16.780000,17.210000 +02/05/2025,17.540000,17.750000,15.770000,15.770000 +02/06/2025,15.880000,16.150000,14.990000,15.500000 +02/07/2025,15.380000,16.660000,14.790000,16.540000 +02/10/2025,16.580000,16.610000,15.700000,15.810000 +02/11/2025,16.130000,16.420000,15.750000,16.020000 +02/12/2025,15.910000,17.180000,15.640000,15.890000 +02/13/2025,15.970000,16.330000,14.980000,15.100000 +02/14/2025,15.080000,15.420000,14.740000,14.770000 +02/17/2025,15.380000,15.570000,15.340000,15.370000 +02/18/2025,15.570000,16.030000,15.350000,15.350000 +02/19/2025,15.140000,15.960000,15.050000,15.270000 +02/20/2025,15.610000,16.630000,15.120000,15.660000 +02/21/2025,15.630000,19.030000,15.280000,18.210000 +02/24/2025,18.080000,20.240000,17.310000,18.980000 +02/25/2025,19.090000,21.480000,18.850000,19.430000 +02/26/2025,18.960000,20.060000,17.830000,19.100000 +02/27/2025,18.250000,21.470000,17.670000,21.130000 +02/28/2025,21.210000,22.400000,19.050000,19.630000 +03/03/2025,19.830000,24.310000,19.250000,22.780000 +03/04/2025,22.960000,26.350000,21.710000,23.510000 +03/05/2025,23.030000,24.840000,21.370000,21.930000 +03/06/2025,22.600000,25.920000,22.390000,24.870000 +03/07/2025,24.850000,26.560000,23.090000,23.370000 +03/10/2025,24.700000,29.560000,24.680000,27.860000 +03/11/2025,27.940000,29.570000,26.180000,26.920000 +03/12/2025,26.880000,26.910000,23.890000,24.230000 +03/13/2025,24.920000,26.130000,23.460000,24.660000 +03/14/2025,24.350000,24.360000,21.480000,21.770000 +03/17/2025,22.890000,22.950000,20.320000,20.510000 +03/18/2025,20.830000,22.570000,20.410000,21.700000 +03/19/2025,21.840000,22.100000,19.420000,19.900000 +03/20/2025,19.520000,21.170000,19.300000,19.800000 +03/21/2025,20.020000,21.140000,19.150000,19.280000 +03/24/2025,19.130000,19.140000,17.460000,17.480000 +03/25/2025,17.580000,17.770000,17.020000,17.150000 +03/26/2025,17.230000,19.070000,16.970000,18.330000 +03/27/2025,18.360000,19.280000,17.950000,18.690000 +03/28/2025,19.080000,22.180000,18.920000,21.650000 +03/31/2025,24.110000,24.800000,21.670000,22.280000 +04/01/2025,22.060000,23.520000,21.580000,21.770000 +04/02/2025,22.300000,23.660000,20.680000,21.510000 +04/03/2025,26.380000,30.020000,24.930000,30.020000 +04/04/2025,30.120000,45.610000,29.990000,45.310000 +04/07/2025,60.130000,60.130000,38.580000,46.980000 +04/08/2025,44.040000,57.520000,36.480000,52.330000 +04/09/2025,50.980000,57.960000,31.900000,33.620000 +04/10/2025,34.440000,54.870000,34.440000,40.720000 +04/11/2025,40.800000,46.120000,36.850000,37.560000 +04/14/2025,34.760000,35.170000,29.750000,30.890000 +04/15/2025,30.010000,31.450000,28.290000,30.120000 +04/16/2025,33.240000,34.960000,29.480000,32.640000 +04/17/2025,30.790000,32.550000,29.570000,29.650000 +04/21/2025,32.750000,35.750000,31.790000,33.820000 +04/22/2025,32.610000,32.680000,30.080000,30.570000 +04/23/2025,28.750000,30.290000,27.110000,28.450000 +04/24/2025,28.690000,29.660000,26.360000,26.470000 +04/25/2025,26.220000,27.200000,24.840000,24.840000 +04/28/2025,25.750000,26.930000,24.700000,25.150000 +04/29/2025,24.760000,25.990000,23.760000,24.170000 +04/30/2025,24.350000,28.170000,24.230000,24.700000 +05/01/2025,23.940000,25.180000,23.300000,24.600000 +05/02/2025,23.630000,24.320000,22.340000,22.680000 +05/05/2025,24.250000,24.630000,22.810000,23.640000 +05/06/2025,23.970000,25.110000,23.900000,24.760000 +05/07/2025,24.560000,25.620000,23.290000,23.550000 +05/08/2025,22.840000,23.610000,21.880000,22.480000 +05/09/2025,22.400000,22.820000,21.830000,21.900000 +05/12/2025,19.840000,20.440000,18.140000,18.390000 +05/13/2025,18.690000,18.850000,17.650000,18.220000 +05/14/2025,18.100000,18.820000,18.060000,18.620000 +05/15/2025,19.190000,19.380000,17.770000,17.830000 +05/16/2025,17.960000,17.960000,17.150000,17.240000 +05/19/2025,19.840000,19.920000,17.920000,18.140000 +05/20/2025,18.460000,18.680000,17.700000,18.090000 +05/21/2025,18.770000,21.050000,17.770000,20.870000 +05/22/2025,20.620000,22.070000,19.640000,20.280000 +05/23/2025,20.140000,25.530000,19.830000,22.290000 +05/26/2025,20.750000,20.830000,20.300000,20.570000 +05/27/2025,20.630000,21.010000,18.950000,18.960000 +05/28/2025,19.210000,19.430000,18.680000,19.310000 +05/29/2025,18.250000,20.200000,18.110000,19.180000 +05/30/2025,19.610000,20.550000,18.570000,18.570000 +06/02/2025,19.810000,20.450000,18.360000,18.360000 +06/03/2025,18.830000,19.210000,17.640000,17.690000 +06/04/2025,17.680000,18.070000,17.410000,17.610000 +06/05/2025,17.680000,18.800000,17.080000,18.480000 +06/06/2025,18.160000,18.350000,16.650000,16.770000 +06/09/2025,17.690000,17.720000,16.820000,17.160000 +06/10/2025,17.500000,17.990000,16.680000,16.950000 +06/11/2025,17.040000,18.090000,16.230000,17.260000 +06/12/2025,17.870000,18.870000,17.430000,18.020000 +06/13/2025,21.760000,22.000000,18.880000,20.820000 +06/16/2025,19.780000,20.220000,18.670000,19.110000 +06/17/2025,20.530000,21.790000,19.550000,21.600000 +06/18/2025,20.900000,21.580000,19.590000,20.140000 +06/19/2025,21.510000,22.750000,21.180000,22.170000 +06/20/2025,20.740000,21.070000,19.110000,20.620000 +06/23/2025,21.150000,22.510000,19.820000,19.830000 +06/24/2025,18.190000,18.720000,17.330000,17.480000 +06/25/2025,17.280000,17.510000,16.680000,16.760000 +06/26/2025,16.670000,16.780000,16.110000,16.590000 +06/27/2025,16.310000,17.290000,16.120000,16.320000 +06/30/2025,17.190000,17.430000,16.550000,16.730000 +07/01/2025,16.980000,17.480000,16.510000,16.830000 +07/02/2025,16.750000,17.370000,16.540000,16.640000 +07/03/2025,16.650000,16.830000,16.140000,16.380000 +07/04/2025,16.930000,17.670000,16.920000,17.480000 +07/07/2025,17.830000,18.500000,17.510000,17.790000 +07/08/2025,17.410000,17.440000,16.540000,16.810000 +07/09/2025,16.760000,16.760000,15.760000,15.940000 +07/10/2025,16.230000,16.240000,15.700000,15.780000 +07/11/2025,16.410000,17.240000,15.980000,16.400000 +07/14/2025,17.730000,17.850000,16.910000,17.200000 +07/15/2025,16.890000,17.390000,16.560000,17.380000 +07/16/2025,17.660000,19.480000,16.690000,17.160000 +07/17/2025,17.160000,17.370000,16.480000,16.520000 +07/18/2025,16.430000,16.810000,16.280000,16.410000 +07/21/2025,16.870000,16.990000,16.300000,16.650000 +07/22/2025,16.750000,17.480000,16.430000,16.500000 +07/23/2025,16.230000,16.320000,15.320000,15.370000 +07/24/2025,15.390000,15.540000,14.950000,15.390000 +07/25/2025,15.330000,15.390000,14.920000,14.930000 +07/28/2025,15.150000,15.540000,15.000000,15.030000 +07/29/2025,14.950000,16.120000,14.700000,15.980000 +07/30/2025,15.870000,17.270000,15.440000,15.480000 +07/31/2025,14.990000,17.170000,14.740000,16.720000 +08/01/2025,17.400000,21.900000,17.390000,20.380000 +08/04/2025,19.560000,19.580000,17.480000,17.520000 +08/05/2025,17.210000,18.940000,17.110000,17.850000 +08/06/2025,17.220000,17.880000,16.560000,16.770000 +08/07/2025,16.410000,17.640000,15.980000,16.570000 +08/08/2025,16.480000,16.520000,15.150000,15.150000 +08/11/2025,15.810000,16.360000,15.520000,16.250000 +08/12/2025,16.090000,16.560000,14.660000,14.730000 +08/13/2025,14.620000,14.810000,14.300000,14.490000 +08/14/2025,14.660000,15.390000,14.570000,14.830000 +08/15/2025,14.430000,15.180000,14.400000,15.090000 +08/18/2025,15.730000,15.950000,14.950000,14.990000 +08/19/2025,15.230000,15.910000,14.760000,15.570000 +08/20/2025,15.950000,17.190000,15.570000,15.690000 +08/21/2025,15.720000,17.240000,15.650000,16.600000 +08/22/2025,16.810000,16.830000,14.210000,14.220000 +08/25/2025,15.050000,15.190000,14.240000,14.790000 +08/26/2025,15.750000,15.750000,14.620000,14.620000 +08/27/2025,14.660000,15.230000,14.660000,14.850000 +08/28/2025,14.420000,14.690000,14.120000,14.430000 +08/29/2025,14.310000,15.970000,14.310000,15.360000 +09/01/2025,16.170000,16.790000,15.080000,16.120000 +09/02/2025,16.650000,19.380000,16.550000,17.170000 +09/03/2025,17.400000,17.570000,16.340000,16.350000 +09/04/2025,16.220000,16.350000,15.280000,15.300000 +09/05/2025,15.230000,16.920000,14.740000,15.180000 +09/08/2025,15.580000,15.650000,14.990000,15.110000 +09/09/2025,15.020000,15.820000,14.970000,15.040000 +09/10/2025,14.980000,15.630000,14.630000,15.350000 +09/11/2025,15.190000,15.240000,14.650000,14.710000 +09/12/2025,14.620000,14.970000,14.410000,14.760000 +09/15/2025,15.140000,15.840000,14.920000,15.690000 +09/16/2025,15.600000,16.380000,15.440000,16.360000 +09/17/2025,16.420000,16.750000,15.260000,15.720000 +09/18/2025,14.930000,15.800000,14.330000,15.700000 +09/19/2025,15.760000,16.130000,15.290000,15.450000 +09/22/2025,16.140000,16.350000,15.780000,16.100000 +09/23/2025,16.100000,17.070000,15.950000,16.640000 +09/24/2025,16.570000,17.210000,16.180000,16.180000 +09/25/2025,16.550000,17.740000,16.320000,16.740000 +09/26/2025,16.890000,17.050000,15.290000,15.290000 +09/29/2025,15.840000,16.290000,15.740000,16.120000 +09/30/2025,16.490000,16.700000,16.020000,16.280000 +10/01/2025,17.280000,17.280000,15.980000,16.290000 +10/02/2025,16.120000,16.920000,15.930000,16.630000 +10/03/2025,16.350000,17.060000,16.200000,16.650000 +10/06/2025,16.740000,17.090000,16.290000,16.370000 +10/07/2025,16.580000,17.550000,16.190000,17.240000 +10/08/2025,17.170000,17.200000,16.230000,16.300000 +10/09/2025,16.310000,17.270000,16.260000,16.430000 +10/10/2025,16.360000,22.440000,16.230000,21.660000 +10/13/2025,19.450000,20.770000,18.610000,19.030000 +10/14/2025,21.460000,22.940000,19.180000,20.810000 +10/15/2025,20.020000,22.440000,19.110000,20.640000 +10/16/2025,20.490000,25.430000,19.850000,25.310000 +10/17/2025,28.410000,28.990000,20.730000,20.780000 +10/20/2025,20.530000,21.020000,18.230000,18.230000 +10/21/2025,18.650000,18.890000,17.400000,17.870000 +10/22/2025,17.840000,21.010000,17.730000,18.600000 +10/23/2025,18.360000,19.350000,17.080000,17.300000 +10/24/2025,17.020000,17.220000,16.020000,16.370000 +10/27/2025,15.730000,16.070000,15.620000,15.790000 +10/28/2025,15.950000,16.550000,15.660000,16.420000 +10/29/2025,16.340000,17.580000,16.260000,16.920000 +10/30/2025,16.260000,17.410000,15.730000,16.910000 +10/31/2025,16.430000,18.540000,15.960000,17.440000 +11/03/2025,18.060000,18.830000,17.000000,17.170000 +11/04/2025,19.730000,20.480000,17.900000,19.000000 +11/05/2025,19.370000,20.020000,17.310000,18.010000 +11/06/2025,18.360000,20.310000,17.640000,19.500000 +11/07/2025,19.520000,22.720000,19.080000,19.080000 +11/10/2025,18.580000,18.820000,17.600000,17.600000 +11/11/2025,17.900000,18.010000,17.250000,17.280000 +11/12/2025,17.210000,18.060000,17.100000,17.510000 +11/13/2025,17.610000,21.310000,17.510000,20.000000 +11/14/2025,21.330000,23.030000,19.560000,19.830000 +11/17/2025,19.580000,23.440000,19.540000,22.380000 +11/18/2025,23.540000,25.840000,22.910000,24.690000 +11/19/2025,24.520000,24.790000,21.930000,23.660000 +11/20/2025,20.780000,28.270000,19.280000,26.420000 +11/21/2025,25.970000,27.840000,22.540000,23.430000 +11/24/2025,22.690000,23.680000,20.410000,20.520000 +11/25/2025,20.550000,21.770000,18.390000,18.560000 +11/26/2025,18.250000,18.700000,16.930000,17.190000 +11/27/2025,17.220000,17.360000,17.050000,17.210000 +11/28/2025,17.410000,18.520000,15.780000,16.350000 +12/01/2025,18.050000,18.330000,16.580000,17.240000 +12/02/2025,17.280000,17.310000,16.390000,16.590000 +12/03/2025,16.430000,17.280000,15.930000,16.080000 +12/04/2025,16.230000,16.630000,15.680000,15.780000 +12/05/2025,15.580000,16.180000,15.280000,15.410000 +12/08/2025,16.150000,17.090000,16.100000,16.660000 +12/09/2025,16.660000,17.200000,16.450000,16.930000 +12/10/2025,16.940000,17.660000,15.560000,15.770000 +12/11/2025,16.840000,16.880000,14.850000,14.850000 +12/12/2025,14.990000,17.850000,14.850000,15.740000 +12/15/2025,16.510000,17.350000,15.990000,16.500000 +12/16/2025,17.280000,17.610000,16.190000,16.480000 +12/17/2025,16.450000,18.000000,15.820000,17.620000 +12/18/2025,17.610000,17.680000,15.930000,16.870000 +12/19/2025,16.310000,16.530000,14.910000,14.910000 +12/22/2025,15.160000,15.260000,14.030000,14.080000 +12/23/2025,14.090000,14.450000,13.640000,14.000000 +12/24/2025,14.090000,14.160000,13.380000,13.470000 +12/26/2025,14.120000,14.290000,13.520000,13.600000 +12/29/2025,14.690000,15.080000,13.990000,14.200000 +12/30/2025,14.430000,14.620000,14.040000,14.330000 +12/31/2025,14.770000,15.170000,14.380000,14.950000 +01/02/2026,14.850000,15.420000,14.460000,14.510000 +01/05/2026,15.140000,15.270000,14.650000,14.900000 +01/06/2026,15.000000,15.210000,14.630000,14.750000 +01/07/2026,14.950000,15.480000,14.830000,15.380000 +01/08/2026,15.690000,15.850000,15.150000,15.450000 +01/09/2026,15.680000,15.810000,14.430000,14.490000 +01/12/2026,16.060000,16.660000,15.030000,15.120000 +01/13/2026,15.360000,16.500000,14.750000,15.980000 +01/14/2026,16.330000,18.100000,16.220000,16.750000 +01/15/2026,16.520000,16.540000,15.300000,15.840000 +01/16/2026,15.440000,16.290000,15.300000,15.860000 +01/19/2026,18.630000,19.590000,18.280000,18.840000 +01/20/2026,19.940000,20.990000,18.640000,20.090000 +01/21/2026,19.310000,20.810000,16.670000,16.900000 +01/22/2026,16.650000,16.670000,15.270000,15.640000 +01/23/2026,15.680000,16.210000,15.300000,16.090000 +01/26/2026,16.900000,17.390000,15.800000,16.150000 +01/27/2026,16.020000,16.370000,15.740000,16.350000 +01/28/2026,16.090000,17.180000,16.050000,16.350000 +01/29/2026,16.040000,19.740000,16.020000,16.880000 +01/30/2026,18.720000,19.270000,16.670000,17.440000 +02/02/2026,19.950000,19.960000,16.080000,16.340000 +02/03/2026,16.160000,20.370000,16.050000,18.000000 +02/04/2026,17.630000,21.240000,17.470000,18.640000 +02/05/2026,19.240000,23.100000,19.060000,21.770000 +02/06/2026,21.240000,21.490000,17.270000,17.760000 +02/09/2026,17.950000,19.200000,16.900000,17.360000 +02/10/2026,17.470000,17.970000,17.140000,17.790000 +02/11/2026,17.870000,18.960000,16.750000,17.650000 +02/12/2026,17.440000,21.210000,17.080000,20.820000 +02/13/2026,21.480000,22.400000,18.920000,20.600000 +02/16/2026,20.730000,21.620000,20.370000,21.200000 +02/17/2026,21.740000,22.960000,19.760000,20.290000 +02/18/2026,19.780000,20.340000,18.480000,19.620000 +02/19/2026,19.340000,21.110000,19.230000,20.230000 +02/20/2026,20.040000,21.210000,18.760000,19.090000 +02/23/2026,20.490000,22.040000,19.500000,21.010000 +02/24/2026,21.240000,22.080000,19.230000,19.550000 +02/25/2026,19.590000,19.620000,17.860000,17.930000 +02/26/2026,18.070000,20.540000,17.500000,18.630000 +02/27/2026,19.280000,21.740000,18.770000,19.860000 +03/02/2026,24.660000,25.240000,20.370000,21.440000 +03/03/2026,24.570000,28.150000,22.180000,23.570000 +03/04/2026,24.390000,24.870000,20.400000,21.150000 +03/05/2026,22.110000,25.840000,20.550000,23.750000 +03/06/2026,23.200000,29.930000,22.920000,29.490000 +03/09/2026,35.120000,35.300000,24.760000,25.500000 +03/10/2026,24.390000,26.010000,22.190000,24.930000 +03/11/2026,24.900000,26.230000,23.750000,24.230000 +03/12/2026,25.480000,27.330000,24.600000,27.290000 +03/13/2026,27.850000,28.470000,24.670000,27.190000 +03/16/2026,25.880000,26.420000,23.230000,23.510000 +03/17/2026,24.560000,24.580000,21.870000,22.370000 +03/18/2026,21.510000,25.130000,21.470000,25.090000 +03/19/2026,25.600000,27.520000,23.540000,24.060000 +03/20/2026,24.460000,29.280000,23.680000,26.780000 +03/23/2026,30.040000,31.040000,20.280000,26.150000 +03/24/2026,25.910000,27.940000,25.640000,26.950000 +03/25/2026,25.790000,26.670000,24.820000,25.330000 +03/26/2026,26.490000,28.490000,26.120000,27.440000 +03/27/2026,27.540000,31.650000,27.540000,31.050000 +03/30/2026,30.790000,31.520000,29.330000,30.610000 +03/31/2026,29.530000,29.640000,25.080000,25.250000 +04/01/2026,24.300000,25.350000,23.500000,24.540000 +04/02/2026,26.780000,27.890000,23.870000,23.870000 +04/06/2026,24.930000,25.300000,23.780000,24.170000 +04/07/2026,25.090000,28.000000,24.340000,25.780000 +04/08/2026,20.970000,22.170000,19.910000,21.040000 +04/09/2026,21.250000,21.630000,19.450000,19.490000 +04/10/2026,19.710000,20.280000,18.830000,19.230000 +04/13/2026,21.170000,21.580000,18.960000,19.120000 +04/14/2026,18.730000,18.760000,17.890000,18.360000 +04/15/2026,18.180000,18.500000,17.400000,18.170000 +04/16/2026,18.040000,19.090000,17.760000,17.940000 +04/17/2026,18.180000,18.240000,16.870000,17.480000 +04/20/2026,19.580000,19.990000,18.770000,18.870000 +04/21/2026,19.180000,20.850000,18.750000,19.500000 +04/22/2026,19.030000,19.540000,18.680000,18.920000 +04/23/2026,19.420000,21.560000,18.700000,19.310000 +04/24/2026,18.890000,19.350000,18.460000,18.710000 +04/27/2026,19.210000,19.270000,18.020000,18.020000 +04/28/2026,18.300000,19.430000,17.780000,17.830000 +04/29/2026,17.830000,19.000000,17.810000,18.810000 +04/30/2026,18.680000,18.730000,16.870000,16.890000 +05/01/2026,17.010000,17.390000,16.440000,16.990000 +05/04/2026,17.380000,19.080000,17.150000,18.290000 +05/05/2026,17.950000,18.020000,17.200000,17.380000 +05/06/2026,17.150000,17.460000,16.180000,17.390000 +05/07/2026,17.530000,17.600000,16.850000,17.080000 +05/08/2026,17.370000,17.530000,16.820000,17.190000 +05/11/2026,18.210000,18.470000,17.900000,18.380000 +05/12/2026,18.770000,19.100000,17.920000,17.990000 +05/13/2026,17.980000,18.400000,17.760000,17.870000 +05/14/2026,17.860000,18.080000,17.200000,17.260000 +05/15/2026,18.070000,19.270000,17.800000,18.430000 +05/18/2026,19.250000,19.440000,17.700000,17.820000 +05/19/2026,18.010000,18.360000,17.660000,18.060000 +05/20/2026,18.170000,18.180000,17.130000,17.440000 +05/21/2026,17.580000,17.870000,16.600000,16.760000 +05/22/2026,16.830000,17.390000,16.460000,16.700000 +05/25/2026,16.810000,16.870000,16.530000,16.590000 +05/26/2026,16.920000,17.230000,16.560000,17.010000 +05/27/2026,17.010000,17.180000,16.290000,16.290000 +05/28/2026,16.760000,16.850000,15.610000,15.740000 +05/29/2026,15.810000,15.880000,15.220000,15.320000 +06/01/2026,15.880000,16.340000,15.710000,16.050000 +06/02/2026,16.280000,16.290000,15.710000,15.770000 +06/03/2026,15.970000,16.630000,15.940000,16.060000 +06/04/2026,16.330000,16.800000,15.180000,15.400000 +06/05/2026,15.870000,21.570000,15.560000,21.510000 +06/08/2026,20.290000,20.350000,17.940000,18.920000 +06/09/2026,18.190000,23.340000,17.520000,19.870000 +06/10/2026,20.100000,22.660000,20.060000,22.220000 +06/11/2026,21.250000,22.590000,19.360000,19.440000 +06/12/2026,19.510000,19.850000,17.590000,17.680000 +06/15/2026,16.780000,16.850000,15.980000,16.200000 +06/16/2026,16.200000,16.440000,15.770000,16.410000 +06/17/2026,16.080000,18.840000,16.020000,18.440000 +06/18/2026,17.230000,17.600000,16.350000,16.400000 +06/19/2026,17.040000,17.270000,16.720000,16.780000 +06/22/2026,17.480000,17.920000,16.490000,17.280000 +06/23/2026,19.670000,20.540000,18.610000,19.490000 +06/24/2026,19.130000,20.340000,18.040000,18.630000 +06/25/2026,18.110000,19.950000,17.720000,18.890000 +06/26/2026,19.700000,20.720000,18.200000,18.410000 +06/29/2026,18.600000,19.450000,17.490000,17.650000 +06/30/2026,17.540000,17.750000,16.270000,16.450000 +07/01/2026,17.110000,17.300000,15.970000,16.590000 +07/02/2026,17.050000,17.210000,15.790000,16.150000 +07/03/2026,15.780000,16.010000,15.750000,15.810000 diff --git a/research/band_walk.py b/research/band_walk.py new file mode 100644 index 000000000..12beed7c3 --- /dev/null +++ b/research/band_walk.py @@ -0,0 +1,100 @@ +"""Band-walk study on SPY 5m (10y): the corridor between SMA9 and lower BB. + +Walk definition: 3+ consecutive 5m closes below SMA9 with %B < 0.35. +Measured: + A. persistence: bars until first close back above SMA9 + B. the 'SMA9 kiss' short: during an active walk, bar HIGH touches SMA9 + -> short next bar open; exit on first close above SMA9 (walk over) or EOD + C. what follows walk END (close back above SMA9): next 30/60min drift +""" +import math +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") +SLIP = 0.0002 + +df = pd.read_csv(os.path.join(OUT, "SPY_5m_full.csv")) +df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) +df = df.sort_values("ts").reset_index(drop=True) +d5 = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].reset_index(drop=True) +c = d5["close"] +d5["sma9"] = c.rolling(9).mean() +mid = c.rolling(20).mean() +sd = c.rolling(20).std() +d5["pctb"] = (c - (mid - 2 * sd)) / (4 * sd) +d5["day"] = d5["ts"].dt.date + +o = d5["open"].values +h = d5["high"].values +cl = d5["close"].values +sma9 = d5["sma9"].values +pctb = d5["pctb"].values +day = d5["day"].values +n = len(d5) +WARM = np.datetime64("2016-06-01") +ts = d5["ts"].values + +below = (cl < sma9) & (pctb < 0.35) + +# ---- A: walk persistence ---- +walks = [] # (start_i, end_i) end = first close > sma9 (or day end) +i = 1 +while i < n - 1: + if ts[i] < WARM or math.isnan(sma9[i]): + i += 1 + continue + if below[i] and below[i - 1] and i - 2 >= 0 and below[i - 2] and day[i] == day[i - 2]: + s = i - 2 + j = i + while j + 1 < n and day[j + 1] == day[s] and not (cl[j + 1] > sma9[j + 1]): + j += 1 + walks.append((s, min(j + 1, n - 1))) + i = j + 2 + else: + i += 1 + +lengths = [e - s for s, e in walks] +rets = [cl[e] / cl[s] - 1 for s, e in walks] +print(f"A. WALKS: {len(walks)} over 10y ({len(walks)/2500:.1f}/day avg)") +print(f" length until close>SMA9: median {np.median(lengths):.0f} bars, " + f"mean {np.mean(lengths):.1f}, p90 {np.percentile(lengths, 90):.0f} " + f"(= {np.percentile(lengths,90)*5:.0f} min)") +print(f" price drift start->end: mean {np.mean(rets):+.3%} " + f"(negative = walk kept paying the short side)") + +# ---- B: SMA9-kiss short during walk ---- +kiss = [] +for s, e in walks: + for k in range(s + 1, e): + if h[k] >= sma9[k] and cl[k] < sma9[k]: # touched from below, rejected + entry = o[k + 1] * (1 - SLIP) + xi = e # exit at walk end close + ret = entry / (cl[xi] * (1 + SLIP)) - 1 # short return + kiss.append(ret) + break # first kiss per walk only +a = np.array(kiss) +if len(a): + wins = a[a > 0] + losses = a[a <= 0] + pf = wins.sum() / abs(losses.sum()) if losses.sum() != 0 else float("inf") + print(f"\nB. SMA9-KISS SHORT (first kiss per walk, exit at walk end): n={len(a)}") + print(f" WR={(a>0).mean():.1%} avg={a.mean():+.3%} med={np.median(a):+.3%} PF={pf:.2f}") + +# ---- C: after the walk ends ---- +after30, after60 = [], [] +for s, e in walks: + if e + 6 < n and day[e + 6] == day[e]: + after30.append(cl[e + 6] / cl[e] - 1) + if e + 12 < n and day[e + 12] == day[e]: + after60.append(cl[e + 12] / cl[e] - 1) +for lbl, arr in [("+30min", after30), ("+60min", after60)]: + b = np.array(arr) + print(f"\nC. after walk END {lbl}: n={len(b)} P(up)={ (b>0).mean():.1%} avg={b.mean():+.3%}" + if lbl == "+30min" else + f" after walk END {lbl}: n={len(b)} P(up)={(b>0).mean():.1%} avg={b.mean():+.3%}") diff --git a/research/book_state.json b/research/book_state.json new file mode 100644 index 000000000..a24e72c32 --- /dev/null +++ b/research/book_state.json @@ -0,0 +1,18 @@ +{ + "start_date": "2026-07-02", + "note": "AGG-MAX weights locked 2026-07-13: A 55% equity MR via TQQQ, B 10% GLD/USO trend, C 20% crypto down-spike H2 (BTC/ETH/DOGE/LINK), D 15% cash/crisis. A-signals still computed on QQQ; executed in TQQQ.", + "open": [], + "closed": [ + {"sleeve": "A", "strategy": "IBS", "symbol": "QQQ", "entry_date": "2026-07-02", "entry_px": 725.71, + "exit_date": "2026-07-09", "exit_px": 718.19, "ret": -0.01036, "grade": null, + "note": "pre-grade signal from 7/1 close; exit IBS 0.93 at 7/8 close, filled 7/9 open 718.33 less 2bp slip; worst mark -2.24%"}, + {"sleeve": "A", "strategy": "IBS", "symbol": "TQQQ", "signal_symbol": "QQQ", + "entry_date": "2026-07-14", "entry_px": 75.22, + "exit_date": "2026-07-22", "exit_px": 69.63, "ret": -0.0743, "grade": 2.0, + "note": "IBS 0.19 at 7/13 close, grade +2 GREEN. Exit: QQQ IBS=0.85 at 7/21 close -> sell 7/22 open 69.77 less 2bp slip = 69.63. Worst mark -10.2% (7/20). QQQ dropped 711->696 mid-hold, SMA20 crossed below SMA50 during trade."}, + {"sleeve": "A", "strategy": "IBS", "symbol": "TQQQ", "signal_symbol": "QQQ", + "entry_date": "2026-07-27", "entry_px": 66.07, + "exit_date": "2026-07-31", "exit_px": 65.73, "ret": -0.0051, "grade": 2.0, + "note": "IBS 0.17 at 7/24 close, grade +2 GREEN (Fri+vol). 5DayLow also fired. Gapped up from Fri close 64.00 to 66.06 open + 2bp = 66.07. Exit: QQQ IBS=0.867 at 7/30 close -> sell 7/31 open 65.74 less 2bp = 65.73. Worst mark -12.6% (7/29, TQQQ 57.75). QQQ 684->662->688 during hold."} + ] +} diff --git a/research/case_study_jul1.py b/research/case_study_jul1.py new file mode 100644 index 000000000..132fa6ba8 --- /dev/null +++ b/research/case_study_jul1.py @@ -0,0 +1,163 @@ +"""Case study: SPY session of 2026-07-01 across 5m/15m/30m/1h. + +Reconstructs the day event-by-event and checks it against every statistical +finding from this project (top timing, contraction, volume, multi-TF state, +which strategy signals fired). +""" +import math +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") +DAY = pd.Timestamp("2026-07-01").date() + + +def wilder_rsi(close, period=14): + d = close.diff() + ag = d.clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + al = (-d).clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + return 100 - 100 / (1 + ag / al) + + +df = pd.read_csv(os.path.join(OUT, "SPY_5m_full.csv")) +df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) +df = df.sort_values("ts").reset_index(drop=True) + +# keep last ~10 sessions for indicator warmup, RTH only for indicators +rth = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].copy() +rth = rth.reset_index(drop=True) +c = rth["close"] +rth["rsi14"] = wilder_rsi(c) +mid = c.rolling(20).mean() +sd = c.rolling(20).std() +rth["bb_up"] = mid + 2 * sd +rth["bb_lo"] = mid - 2 * sd +rth["day"] = rth["ts"].dt.date +pv = rth["vwap"] * rth["volume"] +rth["svwap"] = pv.groupby(rth["day"]).cumsum() / rth["volume"].groupby(rth["day"]).cumsum() +rth["vol_avg20"] = rth["volume"].rolling(20).mean() + +d5 = rth[rth["day"] == DAY].reset_index(drop=True) +prev = rth[rth["day"] < DAY] +prev_day = prev[prev["day"] == prev["day"].max()] +print(f"=== SPY 2026-07-01 RTH: {len(d5)} 5m bars ===") +print(f"open {d5['open'].iloc[0]:.2f} high {d5['high'].max():.2f} " + f"low {d5['low'].min():.2f} close {d5['close'].iloc[-1]:.2f} " + f"prev close {prev_day['close'].iloc[-1]:.2f}") + +hi_i = d5["high"].idxmax() +lo_i = d5["low"].idxmin() +print(f"HIGH of day {d5['high'][hi_i]:.2f} in bar {d5['ts'][hi_i].strftime('%H:%M')}-" + f"{(d5['ts'][hi_i] + pd.Timedelta(minutes=5)).strftime('%H:%M')} ET") +print(f"LOW of day {d5['low'][lo_i]:.2f} in bar {d5['ts'][lo_i].strftime('%H:%M')}-" + f"{(d5['ts'][lo_i] + pd.Timedelta(minutes=5)).strftime('%H:%M')} ET") + +# ---- event timeline: BB breaks, VWAP crosses, RSI extremes, volume spikes ---- +print("\n--- Event timeline (5m, RTH-computed indicators) ---") +above_vwap_prev = None +for i, r in d5.iterrows(): + t = r["ts"].strftime("%H:%M") + events = [] + if r["close"] >= r["bb_up"]: + events.append(f"close ABOVE upper BB (rsi={r['rsi14']:.0f})") + if r["close"] <= r["bb_lo"]: + events.append(f"close BELOW lower BB (rsi={r['rsi14']:.0f})") + if r["rsi14"] >= 75: + events.append(f"RSI14={r['rsi14']:.0f}") + if r["rsi14"] <= 25: + events.append(f"RSI14={r['rsi14']:.0f}") + av = r["close"] > r["svwap"] + if above_vwap_prev is not None and av != above_vwap_prev: + events.append("crossed " + ("ABOVE" if av else "BELOW") + f" VWAP ({r['svwap']:.2f})") + above_vwap_prev = av + if r["vol_avg20"] and r["volume"] > 3 * r["vol_avg20"]: + events.append(f"VOLUME {r['volume']/r['vol_avg20']:.1f}x avg " + f"({'red' if r['close']{r['close']:.2f})") + if events: + print(f" {t} " + "; ".join(events)) + +# ---- claims check ---- +print("\n--- Findings check ---") +# 1. top timing +top_end = d5["ts"][hi_i] + pd.Timedelta(minutes=5) +print(f"1. Top printed in bar ending {top_end.strftime('%H:%M')} " + f"(minute {top_end.minute:02d}) — 'just after round time' zone is :35-:45") +# 2. contraction into top +if hi_i >= 6: + last3 = (d5["high"] - d5["low"])[hi_i - 3:hi_i].mean() + prior = (d5["high"] - d5["low"])[hi_i - 6:hi_i - 3].mean() + print(f"2. Range into top: last3/prior3 = {last3/prior:.2f} " + f"({'contracting' if last3 < prior else 'expanding'})") +# 3. volume at/after top vs before +if hi_i >= 6 and hi_i + 3 < len(d5): + vb = d5["volume"][hi_i - 6:hi_i].mean() + print(f"3. Volume: top bar {d5['volume'][hi_i]/vb:.2f}x prior-6 avg, " + f"2 bars after {d5['volume'][hi_i+1:hi_i+3].mean()/vb:.2f}x") +# 4. biggest 5m drop of the day +d5["ret"] = d5["close"] / d5["close"].shift(1) - 1 +worst = d5["ret"].idxmin() +print(f"4. Sharpest 5m drop: {d5['ret'][worst]:+.2%} in bar " + f"{d5['ts'][worst].strftime('%H:%M')}-{(d5['ts'][worst]+pd.Timedelta(minutes=5)).strftime('%H:%M')} ET, " + f"volume {d5['volume'][worst]/d5['vol_avg20'][worst]:.1f}x avg") + +# ---- higher TF state at the top ---- +def agg(df5, step): + minutes = (df5["ts"].dt.hour * 60 + df5["ts"].dt.minute) - (9 * 60 + 30) + grp = np.minimum(minutes // step, (390 // step) - 1) + key = df5["day"].astype(str) + "_" + grp.astype(str) + g = df5.groupby(key, sort=False) + out = pd.DataFrame({"ts": g["ts"].first(), "open": g["open"].first(), + "high": g["high"].max(), "low": g["low"].min(), + "close": g["close"].last(), "volume": g["volume"].sum()}) + return out.reset_index(drop=True).sort_values("ts").reset_index(drop=True) + + +print("\n--- Higher-timeframe state at the daily high ---") +for step, name in [(15, "15m"), (30, "30m"), (60, "1h")]: + a = agg(rth, step) + a["rsi14"] = wilder_rsi(a["close"]) + m = a["close"].rolling(20).mean() + s = a["close"].rolling(20).std() + a["pctb"] = (a["close"] - (m - 2 * s)) / (4 * s) + before_top = a[a["ts"] <= d5["ts"][hi_i]] + r = before_top.iloc[-1] + print(f" {name:>3s}: RSI14={r['rsi14']:.0f} %B={r['pctb']:.2f} at {r['ts'].strftime('%H:%M')}") + +# ---- daily context and which strategies signal ---- +daily = pd.read_csv(os.path.join(OUT, "SPY_daily.csv"), parse_dates=["date"]) +qdaily = pd.read_csv(os.path.join(OUT, "QQQ_daily.csv"), parse_dates=["date"]) +for nm, dd in [("SPY", daily), ("QQQ", qdaily)]: + dd = dd.sort_values("date").reset_index(drop=True) + r = dd.iloc[-1] + assert r["date"].date() == DAY, r["date"] + rng = r["high"] - r["low"] + ibs = (r["close"] - r["low"]) / rng if rng > 0 else 0.5 + lc5 = dd["close"].rolling(5).min().iloc[-1] + dr = dd["close"].pct_change().iloc[-1] + volx = (dd["volume"] / dd["volume"].rolling(20).mean()).iloc[-1] + cc = dd["close"] + rsi2 = wilder_rsi(cc, 2).iloc[-1] + sma20 = cc.rolling(20).mean().iloc[-1] + weekday = r["date"].weekday() + print(f"\n--- {nm} daily bar 2026-07-01: O {r['open']:.2f} H {r['high']:.2f} " + f"L {r['low']:.2f} C {r['close']:.2f} ({dr:+.2%}) ---") + print(f" IBS={ibs:.2f} close{'<=' if r['close']<=lc5 else '>'}5d-low " + f"RSI2={rsi2:.0f} vol={volx:.2f}x dist20={(r['close']/sma20-1):+.1%} " + f"weekday={'Mon Tue Wed Thu Fri'.split()[weekday]}") + sigs = [] + if ibs < 0.20: + sigs.append("IBS<0.20 LONG") + if r["close"] <= lc5 and ibs < 0.25: + sigs.append("5DayLow+IBS LONG") + if weekday == 0 and r["close"] < r["open"]: + sigs.append("TT-A LONG") + if sigs: + veto = " — but VOLUME VETO (>1.2x)" if volx > 1.2 else "" + print(f" SIGNALS for next open: {', '.join(sigs)}{veto}") + else: + print(" no long signals for next open") diff --git a/research/clean_table.py b/research/clean_table.py new file mode 100644 index 000000000..39718a6f0 --- /dev/null +++ b/research/clean_table.py @@ -0,0 +1,86 @@ +"""Consolidated Excel-style performance table for the daily strategy suite.""" +import os + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) + +RUNS = [ + ("DoubleSeven", "SPY", "S1_DoubleSeven_SPY"), + ("DoubleSeven", "QQQ", "S1_DoubleSeven_QQQ"), + ("IBS<.20/.70", "SPY", "S4_IBS_SPY_e20_x70"), + ("IBS<.20/.70", "QQQ", "S4_IBS_QQQ_e20_x70"), + ("5DayLow-A", "SPY", "S9_5DayLow_A_SPY"), + ("5DayLow-A", "QQQ", "S9_5DayLow_A_QQQ"), + ("TripleRSI", "SPY", "S7_TripleRSI_SPY"), + ("TT-A (Mon)", "SPY", "S6_TT_A_SPY"), + ("TT-C (Mon)", "SPY", "S6_TT_C_SPY"), + ("LowerBand-B", "QQQ", "S5_LowerBand_QQQ_B_sma300"), + ("IBS+RSI21", "SPY", "S8_IBSRSI21_SPY"), + ("RSI2-Mod-A", "SPY", "S3_RSI2Mod_SPY_A_nostop"), +] + + +def dd_stats(eq): + peak = eq.cummax() + dd = eq / peak - 1 + maxdd = dd.min() + # episodes: contiguous dd<0 stretches -> depth of each + depths = [] + cur = 0.0 + in_ep = False + for v in dd.values: + if v < 0: + in_ep = True + cur = min(cur, v) + elif in_ep: + depths.append(cur) + cur = 0.0 + in_ep = False + if in_ep: + depths.append(cur) + depths = np.array(depths) if depths else np.array([0.0]) + return maxdd, depths.mean(), np.median(depths) + + +rows = [] +for name, sym, rid in RUNS: + eq = pd.read_csv(os.path.join(OUT, f"equity_{rid}.csv"), index_col=0, parse_dates=True).iloc[:, 0] + tr = pd.read_csv(os.path.join(OUT, f"trades_{rid}.csv")) + days = (eq.index[-1] - eq.index[0]).days + ann = (eq.iloc[-1] / eq.iloc[0]) ** (365.25 / days) - 1 + rets = tr["ret"].values + wins, losses = rets[rets > 0], rets[rets <= 0] + wr = len(wins) / len(rets) + pf = wins.sum() / abs(losses.sum()) if losses.sum() != 0 else float("inf") + maxdd, avgdd, meddd = dd_stats(eq) + rows.append([name, sym, "1D", ann * 100, wr * 100, pf, maxdd * 100, avgdd * 100, + meddd * 100, rets.mean() * 100, np.median(rets) * 100, + tr["hold_days"].mean(), len(rets)]) + +# buy & hold benchmarks +for sym in ["SPY", "QQQ"]: + d = pd.read_csv(os.path.join(OUT, f"{sym}_daily.csv"), parse_dates=["date"]) + d = d[d["date"] >= "2017-04-01"] + eq = pd.Series(d["close"].values, index=d["date"]) + days = (eq.index[-1] - eq.index[0]).days + ann = (eq.iloc[-1] / eq.iloc[0]) ** (365.25 / days) - 1 + maxdd, avgdd, meddd = dd_stats(eq) + rows.append([f"Buy&Hold", sym, "1D", ann * 100, np.nan, np.nan, maxdd * 100, + avgdd * 100, meddd * 100, np.nan, np.nan, np.nan, np.nan]) + +hdr = (f"{'Strategy':<12s}{'Sym':<5s}{'TF':<4s}{'Ann%':>6s}{'WR%':>6s}{'PF':>6s}" + f"{'MaxDD':>7s}{'AvgDD':>7s}{'MedDD':>7s}{'AvgTr':>7s}{'MedTr':>7s}{'Hold':>6s}{'#Tr':>5s}") +print(hdr) +print("-" * len(hdr)) +for r in rows: + def f(x, w, dec=1): + return f"{'--':>{w}s}" if x is None or (isinstance(x, float) and np.isnan(x)) else f"{x:>{w}.{dec}f}" + print(f"{r[0]:<12s}{r[1]:<5s}{r[2]:<4s}" + f(r[3], 6) + f(r[4], 6) + f(r[5], 6, 2) + + f(r[6], 7) + f(r[7], 7, 2) + f(r[8], 7, 2) + f(r[9], 7, 3) + f(r[10], 7, 3) + + f(r[11], 6) + (f"{'--':>5s}" if np.isnan(r[12]) else f"{int(r[12]):>5d}")) +print("-" * len(hdr)) +print("Window 2017-04-01 -> 2026-07-01 | daily bars, signals at close, fills next open") +print("slippage 0.02%/side | Ann/DD/Tr columns in % | Hold in trading days") +print("AvgDD/MedDD = avg/median depth of each drawdown episode (peak-to-recovery)") diff --git a/research/commodity_gauntlet.py b/research/commodity_gauntlet.py new file mode 100644 index 000000000..c487e7ee7 --- /dev/null +++ b/research/commodity_gauntlet.py @@ -0,0 +1,75 @@ +"""Commodity trend-following gauntlet: GLD, USO, SLV, UNG. +- MA-cross long/flat, parameter sweep: (5,20),(10,40),(20,50),(20,100),(50,200) +- Time-split 2016-2021 / 2022-2026 for the 10/40 base case +- USO 2020-episode check: performance excluding Feb-Jun 2020 +Costs 0.02%/side. +""" +import os + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +SLIP = 0.0002 + + +def run(d, fast, slow, start=None, end=None, skip=None): + d = d.copy() + c = d["close"] + d["f"] = c.rolling(fast).mean() + d["s"] = c.rolling(slow).mean() + o_, cl_, f_, s_, dt = d["open"].values, c.values, d["f"].values, d["s"].values, d["date"].values + rets, in_pos, e = [], False, None + for i in range(slow + 1, len(d) - 1): + if start is not None and dt[i] < np.datetime64(start): + continue + if end is not None and dt[i] >= np.datetime64(end): + break + if skip and np.datetime64(skip[0]) <= dt[i] < np.datetime64(skip[1]): + if in_pos: + rets.append((o_[i + 1] * (1 - SLIP)) / e - 1) + in_pos = False + continue + if in_pos: + if f_[i] < s_[i]: + rets.append((o_[i + 1] * (1 - SLIP)) / e - 1) + in_pos = False + elif f_[i] > s_[i] and f_[i - 1] <= s_[i - 1]: + e = o_[i + 1] * (1 + SLIP) + in_pos = True + return np.array(rets) + + +def line(rets): + if not len(rets): + return "no trades" + eq = np.cumprod(1 + rets) + wins, losses = rets[rets > 0], rets[rets <= 0] + pf = wins.sum() / abs(losses.sum()) if losses.sum() != 0 else 99 + return f"n={len(rets):>3d} PF={pf:>5.2f} total={eq[-1]-1:>+8.1%}" + + +DATA = {s: pd.read_csv(os.path.join(OUT, f"{s}_daily.csv"), parse_dates=["date"]).sort_values("date").reset_index(drop=True) + for s in ["GLD", "USO", "SLV", "UNG"]} + +print("=== parameter sweep (full window, long/flat) ===") +print(f"{'pair':<10s}" + "".join(f"{s:>32s}" for s in DATA)) +for fast, slow in [(5, 20), (10, 40), (20, 50), (20, 100), (50, 200)]: + row = f"{f'{fast}/{slow}':<10s}" + for s, d in DATA.items(): + row += f"{line(run(d, fast, slow)):>32s}" + print(row) + +print("\n=== time-split, 10/40 ===") +for s, d in DATA.items(): + a = run(d, 10, 40, end="2022-01-01") + b = run(d, 10, 40, start="2022-01-01") + print(f"{s}: 2016-2021 {line(a)} | 2022-2026 {line(b)}") + +print("\n=== USO 10/40 excluding Feb-Jun 2020 (the roll-catastrophe episode) ===") +print("USO ex-2020:", line(run(DATA["USO"], 10, 40, skip=("2020-02-01", "2020-07-01")))) +print("USO full :", line(run(DATA["USO"], 10, 40))) + +print("\n=== buy&hold reference (full window) ===") +for s, d in DATA.items(): + print(f"{s}: {d['close'].iloc[-1]/d['close'].iloc[40]-1:+.1%}") diff --git a/research/conditional_ibs_interaction.py b/research/conditional_ibs_interaction.py new file mode 100644 index 000000000..2e2f0fff0 --- /dev/null +++ b/research/conditional_ibs_interaction.py @@ -0,0 +1,108 @@ +"""IBS interaction with conditional open states. + +Does the down-down state sharpen IBS signals? If IBS<0.15 AND we're in a +consecutive-down + gap-down state, does the win rate go up? +Also: IBS on gap-fill days — does low IBS predict gap fill on gap-down days? +""" +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + + +def load_daily(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_daily.csv")) + df["ts"] = pd.to_datetime(df["date"]) + df = df.sort_values("ts").reset_index(drop=True) + df["ibs"] = (df["close"] - df["low"]) / (df["high"] - df["low"]) + df["pc"] = df["close"].shift(1) + df["gap"] = df["open"] / df["pc"] - 1 + df["fwd1"] = df["close"].shift(-1) / df["open"].shift(-1) - 1 # next day O→C + df["fwd1_green"] = df["close"].shift(-1) > df["close"] # next day closes above today's close + df["prev_dn"] = df["close"] < df["close"].shift(1) + df["prev2_dn"] = df["close"].shift(1) < df["close"].shift(2) + df["prev3_dn"] = df["close"].shift(2) < df["close"].shift(3) + df["oc"] = df["close"] / df["open"] - 1 + df["day_dn"] = df["close"] < df["open"] + # next day gap + df["fwd_gap"] = df["open"].shift(-1) / df["close"] - 1 + df["fwd_gap_dn"] = df["fwd_gap"] < 0 + return df.dropna(subset=["ibs", "fwd1", "prev_dn", "prev2_dn"]) + + +for sym in ["SPY", "QQQ"]: + d = load_daily(sym) + print(f"\n{'='*70}") + print(f" {sym} — IBS × Conditional States (n={len(d)})") + print(f"{'='*70}") + + print(f"\n 1. IBS < 0.15 signal × context (next-day O→C)") + print(f" {'context':<35s}{'n':>5s}{'P(+)':>6s}{'avg':>10s}{'med':>10s}") + lo_ibs = d.ibs < 0.15 + for lbl, mask in [ + ("IBS<0.15 (baseline)", lo_ibs), + ("IBS<0.15 + prev down", lo_ibs & d.prev_dn), + ("IBS<0.15 + 2+ down", lo_ibs & d.prev_dn & d.prev2_dn), + ("IBS<0.15 + 3+ down", lo_ibs & d.prev_dn & d.prev2_dn & d.prev3_dn), + ("IBS<0.15 + gap down today", lo_ibs & (d.gap < 0)), + ("IBS<0.15 + down + gap dn", lo_ibs & d.prev_dn & (d.gap < 0)), + ("IBS<0.15 + 2+down + gap dn", lo_ibs & d.prev_dn & d.prev2_dn & (d.gap < 0)), + ("IBS<0.15 + today down (O→C)", lo_ibs & d.day_dn), + ("IBS<0.15 + gap dn + day dn", lo_ibs & (d.gap < 0) & d.day_dn), + ]: + S = d[mask].dropna(subset=["fwd1"]) + if len(S) < 15: + continue + print(f" {lbl:<35s}{len(S):>5d}{S.fwd1.gt(0).mean():>6.0%}" + f"{S.fwd1.mean()*100:>+9.3f}%{S.fwd1.median()*100:>+9.3f}%") + + print(f"\n 2. IBS < 0.15 × next-day gap direction → next-day O→C") + for lbl, mask in [ + ("IBS<0.15 + next gap down", lo_ibs & d.fwd_gap_dn), + ("IBS<0.15 + next gap up", lo_ibs & (~d.fwd_gap_dn)), + ]: + S = d[mask].dropna(subset=["fwd1"]) + if len(S) < 15: + continue + print(f" {lbl:<35s}{len(S):>5d}{S.fwd1.gt(0).mean():>6.0%}" + f"{S.fwd1.mean()*100:>+9.3f}%{S.fwd1.median()*100:>+9.3f}%") + + # IBS at various thresholds combined with down context + print(f"\n 3. IBS threshold sweep × 'prev down + gap down today'") + ctx = d.prev_dn & (d.gap < 0) + print(f" {'IBS threshold':<20s}{'n':>5s}{'P(+)':>6s}{'avg':>10s}") + for thr in [0.10, 0.15, 0.20, 0.25, 0.30, 0.40, 0.50]: + S = d[ctx & (d.ibs < thr)].dropna(subset=["fwd1"]) + if len(S) < 15: + continue + print(f" IBS < {thr:<13.2f}{len(S):>5d}{S.fwd1.gt(0).mean():>6.0%}" + f"{S.fwd1.mean()*100:>+9.3f}%") + + # Without the down context (baseline) + print(f" (baseline without context:)") + for thr in [0.10, 0.15, 0.20, 0.25, 0.30]: + S = d[d.ibs < thr].dropna(subset=["fwd1"]) + if len(S) < 15: + continue + print(f" IBS < {thr:<13.2f}{len(S):>5d}{S.fwd1.gt(0).mean():>6.0%}" + f"{S.fwd1.mean()*100:>+9.3f}%") + + # Halves + print(f"\n 4. HALVES: IBS<0.15 × context") + d["half"] = [1 if str(x) < "2021" else 2 for x in d["ts"].dt.year] + print(f" {'state':<35s}{'half':>5s}{'n':>5s}{'P(+)':>6s}{'avg':>10s}") + for lbl, mask in [ + ("IBS<0.15 baseline", lo_ibs), + ("IBS<0.15 + prev dn + gap dn", lo_ibs & d.prev_dn & (d.gap < 0)), + ("IBS<0.15 + 2+dn + gap dn", lo_ibs & d.prev_dn & d.prev2_dn & (d.gap < 0)), + ]: + for hf in [1, 2]: + S = d[mask & (d.half == hf)].dropna(subset=["fwd1"]) + if len(S) < 10: + continue + print(f" {lbl:<35s}{hf:>5d}{len(S):>5d}{S.fwd1.gt(0).mean():>6.0%}" + f"{S.fwd1.mean()*100:>+9.3f}%") diff --git a/research/conditional_open.py b/research/conditional_open.py new file mode 100644 index 000000000..f1b6e5010 --- /dev/null +++ b/research/conditional_open.py @@ -0,0 +1,84 @@ +"""Conditional probabilities of the open: {prev day up/down} x {gap up/down}. + +Outcomes per state (SPY+QQQ, 5m bars 2016-2026): + P(open->close up), avg open->close, P(close green vs prev close), + P(recovers to prev close intraday at any point), + time-of-day of session HIGH and LOW: P(first 30m), P(first hour), P(last hour), median. +Also gap-magnitude buckets for the down-down state (the user's lead case). +""" +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + + +def load(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_5m_full.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].sort_values("ts") + df["day"] = df["ts"].dt.date + df["mins"] = (df["ts"].dt.hour * 60 + df["ts"].dt.minute) - 570 # mins since open + return df + + +def daystats(df): + rows = [] + for dy, g in df.groupby("day"): + if len(g) < 60: + continue + o = g["open"].iloc[0]; c = g["close"].iloc[-1] + hi_i = g["high"].idxmax(); lo_i = g["low"].idxmin() + rows.append(dict(day=dy, o=o, c=c, h=g["high"].max(), l=g["low"].min(), + t_hi=g.loc[hi_i, "mins"], t_lo=g.loc[lo_i, "mins"])) + d = pd.DataFrame(rows).sort_values("day").reset_index(drop=True) + d["pc"] = d["c"].shift(1) # prev close + d["prev_dn"] = d["c"].shift(1) < d["c"].shift(2) + d["gap"] = d["o"] / d["pc"] - 1 + d["oc"] = d["c"] / d["o"] - 1 + d["green"] = d["c"] > d["pc"] + d["touch_pc"] = d["h"] >= d["pc"] # recovered to prev close at some point (for gap-down) + return d.dropna(subset=["pc", "gap"]) + + +def timeprofile(S, col): + a = S[col].values + return (f"P(1st30m) {np.mean(a<=30):.0%} P(1st hr) {np.mean(a<=60):.0%} " + f"P(last hr) {np.mean(a>=330):.0%} med {np.median(a):.0f}m") + + +for sym in ["SPY", "QQQ"]: + d = daystats(load(sym)) + print(f"\n================ {sym} (n={len(d)} days) ================") + print(f"{'STATE':<28s}{'n':>5s}{'P(O->C up)':>11s}{'avg O->C':>10s}{'P(green)':>10s}") + states = [ + ("prev DOWN + gap DOWN", (d.prev_dn) & (d.gap < 0)), + ("prev DOWN + gap UP", (d.prev_dn) & (d.gap >= 0)), + ("prev UP + gap DOWN", (~d.prev_dn) & (d.gap < 0)), + ("prev UP + gap UP", (~d.prev_dn) & (d.gap >= 0)), + ] + for lbl, m in states: + S = d[m] + print(f"{lbl:<28s}{len(S):>5d}{S['oc'].gt(0).mean():>11.0%}{S['oc'].mean()*100:>+9.3f}%{S['green'].mean():>10.0%}") + print("\n TIME OF SESSION HIGH / LOW by state:") + for lbl, m in states: + S = d[m] + print(f" {lbl:<26s} HIGH: {timeprofile(S,'t_hi')}") + print(f" {'':<26s} LOW: {timeprofile(S,'t_lo')}") + # the lead case detail: prev down + gap down, magnitude buckets + print("\n LEAD CASE prev-DOWN + gap-DOWN by gap size:") + D = d[(d.prev_dn) & (d.gap < 0)].copy() + D["b"] = pd.cut(D.gap * 100, [-99, -1.0, -0.5, -0.2, 0], labels=["<-1%", "-1..-0.5%", "-0.5..-0.2%", "-0.2..0%"]) + for b, S in D.groupby("b", observed=True): + if len(S) < 15: + continue + print(f" gap {b:<12s} n={len(S):>4d} P(O->C up) {S['oc'].gt(0).mean():.0%} avg {S['oc'].mean()*100:+.3f}% " + f"P(green) {S['green'].mean():.0%} P(touch prevC) {S['touch_pc'].mean():.0%} " + f"HIGH med {S['t_hi'].median():.0f}m LOW med {S['t_lo'].median():.0f}m") + # halves stability for the lead case + D["half"] = [1 if str(x) < "2021-07-01" else 2 for x in D["day"]] + for hf, S in D.groupby("half"): + print(f" half {hf}: n={len(S)} P(O->C up) {S['oc'].gt(0).mean():.0%} avg {S['oc'].mean()*100:+.3f}%") diff --git a/research/conditional_open_v2.py b/research/conditional_open_v2.py new file mode 100644 index 000000000..01da234f2 --- /dev/null +++ b/research/conditional_open_v2.py @@ -0,0 +1,186 @@ +"""Conditional open v2: sharpeners for the prev-DOWN + gap-DOWN recovery signal. + +Tests two questions on SPY+QQQ 5m bars (2016-2026): +1. FIRST-30-MIN DIRECTION: on down-down days, does a first-half-hour flush (price + drops further) vs immediate bounce (price rises) meaningfully split the 57% base? +2. VOLUME TELL: does relative volume in the first 30 min (quiet vs loud) separate + recovery days from trapdoor days? + +Also: what about a combined state (direction × volume)? +""" +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + + +def load(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_5m_full.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].sort_values("ts") + df["day"] = df["ts"].dt.date + df["mins"] = (df["ts"].dt.hour * 60 + df["ts"].dt.minute) - 570 + return df + + +def daystats(df): + rows = [] + for dy, g in df.groupby("day"): + if len(g) < 60: + continue + o = g["open"].iloc[0]; c = g["close"].iloc[-1] + hi_i = g["high"].idxmax(); lo_i = g["low"].idxmin() + + first30 = g[g["mins"] < 30] + if len(first30) < 4: + continue + f30_close = first30["close"].iloc[-1] + f30_ret = f30_close / o - 1 + f30_low = first30["low"].min() + f30_high = first30["high"].max() + f30_vol = first30["volume"].sum() + + rest = g[g["mins"] >= 30] + rest_vol = rest["volume"].sum() if len(rest) > 0 else 0 + day_vol = g["volume"].sum() + + first60 = g[g["mins"] < 60] + f60_close = first60["close"].iloc[-1] if len(first60) >= 8 else np.nan + f60_ret = f60_close / o - 1 if not np.isnan(f60_close) else np.nan + + rows.append(dict( + day=dy, o=o, c=c, h=g["high"].max(), l=g["low"].min(), + t_hi=g.loc[hi_i, "mins"], t_lo=g.loc[lo_i, "mins"], + f30_ret=f30_ret, f30_vol=f30_vol, f30_low=f30_low, f30_high=f30_high, + f60_ret=f60_ret, + day_vol=day_vol, + )) + d = pd.DataFrame(rows).sort_values("day").reset_index(drop=True) + d["pc"] = d["c"].shift(1) + d["prev_dn"] = d["c"].shift(1) < d["c"].shift(2) + d["gap"] = d["o"] / d["pc"] - 1 + d["oc"] = d["c"] / d["o"] - 1 + d["green"] = d["c"] > d["pc"] + d["touch_pc"] = d["h"] >= d["pc"] + d["avg_vol20"] = d["day_vol"].rolling(20).mean() + d["f30_rvol"] = d["f30_vol"] / (d["avg_vol20"].shift(1) * (30/390)) + return d.dropna(subset=["pc", "gap", "f30_rvol"]) + + +for sym in ["SPY", "QQQ"]: + d = daystats(load(sym)) + DD = d[(d.prev_dn) & (d.gap < 0)].copy() + print(f"\n{'='*60}") + print(f" {sym} — prev-DOWN + gap-DOWN (n={len(DD)})") + print(f"{'='*60}") + print(f" Baseline: P(O→C up)={DD.oc.gt(0).mean():.0%} avg O→C={DD.oc.mean()*100:+.3f}%\n") + + # === TEST 1: first-30-min direction === + print(" TEST 1: First-30-min direction") + print(f" {'state':<28s}{'n':>5s}{'P(O→C up)':>11s}{'avg O→C':>10s}{'P(green)':>9s}{'medLOW':>8s}{'medHI':>8s}") + for lbl, mask in [ + ("flush (f30 < -0.1%)", DD.f30_ret < -0.001), + ("flush (f30 < -0.2%)", DD.f30_ret < -0.002), + ("flush (f30 < -0.3%)", DD.f30_ret < -0.003), + ("mild down (-0.1..0%)", (DD.f30_ret >= -0.001) & (DD.f30_ret < 0)), + ("bounce (f30 > 0%)", DD.f30_ret >= 0), + ("bounce (f30 > +0.1%)", DD.f30_ret >= 0.001), + ("bounce (f30 > +0.2%)", DD.f30_ret >= 0.002), + ]: + S = DD[mask] + if len(S) < 15: + continue + print(f" {lbl:<28s}{len(S):>5d}{S.oc.gt(0).mean():>11.0%}" + f"{S.oc.mean()*100:>+9.3f}%{S.green.mean():>9.0%}" + f"{S.t_lo.median():>7.0f}m{S.t_hi.median():>7.0f}m") + + # === TEST 2: first-30-min volume (quiet vs loud) === + print(f"\n TEST 2: First-30-min relative volume (vs 20d avg proportional)") + med_rvol = DD.f30_rvol.median() + print(f" median f30 rVol = {med_rvol:.2f}") + print(f" {'state':<28s}{'n':>5s}{'P(O→C up)':>11s}{'avg O→C':>10s}{'P(green)':>9s}") + for lbl, mask in [ + ("quiet (rVol < 0.8)", DD.f30_rvol < 0.8), + ("quiet (rVol < 1.0)", DD.f30_rvol < 1.0), + ("normal (0.8-1.5)", (DD.f30_rvol >= 0.8) & (DD.f30_rvol < 1.5)), + ("loud (rVol > 1.5)", DD.f30_rvol >= 1.5), + ("loud (rVol > 2.0)", DD.f30_rvol >= 2.0), + ("loud (rVol > 3.0)", DD.f30_rvol >= 3.0), + ]: + S = DD[mask] + if len(S) < 15: + continue + print(f" {lbl:<28s}{len(S):>5d}{S.oc.gt(0).mean():>11.0%}" + f"{S.oc.mean()*100:>+9.3f}%{S.green.mean():>9.0%}") + + # === TEST 3: combined (direction × volume) === + print(f"\n TEST 3: Combined first-30-min direction × volume") + print(f" {'state':<40s}{'n':>5s}{'P(O→C up)':>11s}{'avg O→C':>10s}{'P(green)':>9s}") + combos = [ + ("flush + quiet", (DD.f30_ret < -0.001) & (DD.f30_rvol < 1.0)), + ("flush + loud", (DD.f30_ret < -0.001) & (DD.f30_rvol >= 1.5)), + ("bounce + quiet", (DD.f30_ret >= 0) & (DD.f30_rvol < 1.0)), + ("bounce + loud", (DD.f30_ret >= 0) & (DD.f30_rvol >= 1.5)), + ("deep flush + quiet", (DD.f30_ret < -0.002) & (DD.f30_rvol < 1.0)), + ("deep flush + loud", (DD.f30_ret < -0.002) & (DD.f30_rvol >= 1.5)), + ] + for lbl, mask in combos: + S = DD[mask] + if len(S) < 15: + continue + print(f" {lbl:<40s}{len(S):>5d}{S.oc.gt(0).mean():>11.0%}" + f"{S.oc.mean()*100:>+9.3f}%{S.green.mean():>9.0%}") + + # === TEST 4: first-hour direction (60 min) for completeness === + print(f"\n TEST 4: First-hour direction (60 min)") + DD60 = DD.dropna(subset=["f60_ret"]) + print(f" {'state':<28s}{'n':>5s}{'P(O→C up)':>11s}{'avg O→C':>10s}") + for lbl, mask in [ + ("f60 < -0.3%", DD60.f60_ret < -0.003), + ("f60 < -0.2%", DD60.f60_ret < -0.002), + ("f60 -0.2..0%", (DD60.f60_ret >= -0.002) & (DD60.f60_ret < 0)), + ("f60 > 0%", DD60.f60_ret >= 0), + ("f60 > +0.2%", DD60.f60_ret >= 0.002), + ("f60 > +0.3%", DD60.f60_ret >= 0.003), + ]: + S = DD60[mask] + if len(S) < 15: + continue + print(f" {lbl:<28s}{len(S):>5d}{S.oc.gt(0).mean():>11.0%}" + f"{S.oc.mean()*100:>+9.3f}%") + + # === TEST 5: gap magnitude interaction with first-30-min === + print(f"\n TEST 5: Gap size × first-30-min direction") + DD["gapb"] = pd.cut(DD.gap * 100, [-99, -0.5, -0.2, 0], labels=["<-0.5%", "-0.5..-0.2%", "-0.2..0%"]) + DD["f30d"] = np.where(DD.f30_ret < -0.001, "flush", np.where(DD.f30_ret >= 0, "bounce", "flat")) + print(f" {'gap':<14s}{'f30':<10s}{'n':>5s}{'P(O→C up)':>11s}{'avg O→C':>10s}") + for gb in ["<-0.5%", "-0.5..-0.2%", "-0.2..0%"]: + for fd in ["flush", "flat", "bounce"]: + S = DD[(DD.gapb == gb) & (DD.f30d == fd)] + if len(S) < 10: + continue + print(f" {gb:<14s}{fd:<10s}{len(S):>5d}{S.oc.gt(0).mean():>11.0%}" + f"{S.oc.mean()*100:>+9.3f}%") + + # === HALVES STABILITY for best cells === + print(f"\n HALVES STABILITY (2016-20 / 2021-26):") + DD["half"] = [1 if str(x) < "2021-01-01" else 2 for x in DD["day"]] + print(f" {'state':<40s}{'half':>5s}{'n':>5s}{'P(O→C up)':>11s}{'avg':>10s}") + checks = [ + ("all down-down", DD.index == DD.index), + ("flush f30<-0.1%", DD.f30_ret < -0.001), + ("bounce f30>0%", DD.f30_ret >= 0), + ("flush+quiet", (DD.f30_ret < -0.001) & (DD.f30_rvol < 1.0)), + ("flush+loud", (DD.f30_ret < -0.001) & (DD.f30_rvol >= 1.5)), + ] + for lbl, mask in checks: + for hf in [1, 2]: + S = DD[mask & (DD.half == hf)] + if len(S) < 10: + continue + print(f" {lbl:<40s}{hf:>5d}{len(S):>5d}{S.oc.gt(0).mean():>11.0%}" + f"{S.oc.mean()*100:>+9.3f}%") diff --git a/research/conditional_open_v3.py b/research/conditional_open_v3.py new file mode 100644 index 000000000..ee2a7a860 --- /dev/null +++ b/research/conditional_open_v3.py @@ -0,0 +1,169 @@ +"""Conditional open v3: tradeable return from the 30-min mark onward. + +The v2 study found that first-30-min direction splits down-down days into +70% recovery (bounce) vs 33% (flush). But a trader can't capture the open → +close return — they observe the first 30 min and THEN buy. So what's the +return from 10:00 to close? That's the real edge. + +Also: what about buying at the 30-min low (the flush low) on flush days? +Does a reversal trade work on the subset that does recover? +""" +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + + +def load(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_5m_full.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].sort_values("ts") + df["day"] = df["ts"].dt.date + df["mins"] = (df["ts"].dt.hour * 60 + df["ts"].dt.minute) - 570 + return df + + +def daystats_extended(df): + rows = [] + for dy, g in df.groupby("day"): + if len(g) < 60: + continue + o = g["open"].iloc[0]; c = g["close"].iloc[-1] + + first30 = g[g["mins"] < 30] + after30 = g[g["mins"] >= 30] + if len(first30) < 4 or len(after30) < 40: + continue + + f30_close = first30["close"].iloc[-1] + f30_ret = f30_close / o - 1 + f30_low = first30["low"].min() + f30_high = first30["high"].max() + f30_vol = first30["volume"].sum() + + a30_close = after30["close"].iloc[-1] # = close + a30_ret = a30_close / f30_close - 1 # return from 10:00 to close + + first60 = g[g["mins"] < 60] + after60 = g[g["mins"] >= 60] + if len(first60) >= 8 and len(after60) >= 40: + f60_close = first60["close"].iloc[-1] + f60_ret = f60_close / o - 1 + a60_ret = after60["close"].iloc[-1] / f60_close - 1 + else: + f60_ret = np.nan; a60_ret = np.nan + + hi_i = g["high"].idxmax(); lo_i = g["low"].idxmin() + day_vol = g["volume"].sum() + after30_hi = after30["high"].max() + after30_lo = after30["low"].min() + after30_mfe_long = after30_hi / f30_close - 1 + after30_mae_long = after30_lo / f30_close - 1 + + rows.append(dict( + day=dy, o=o, c=c, h=g["high"].max(), l=g["low"].min(), + t_hi=g.loc[hi_i, "mins"], t_lo=g.loc[lo_i, "mins"], + f30_ret=f30_ret, f30_close=f30_close, f30_vol=f30_vol, + f60_ret=f60_ret, + a30_ret=a30_ret, a60_ret=a60_ret, + a30_mfe=after30_mfe_long, a30_mae=after30_mae_long, + day_vol=day_vol, + )) + d = pd.DataFrame(rows).sort_values("day").reset_index(drop=True) + d["pc"] = d["c"].shift(1) + d["prev_dn"] = d["c"].shift(1) < d["c"].shift(2) + d["gap"] = d["o"] / d["pc"] - 1 + d["oc"] = d["c"] / d["o"] - 1 + d["avg_vol20"] = d["day_vol"].rolling(20).mean() + d["f30_rvol"] = d["f30_vol"] / (d["avg_vol20"].shift(1) * (30/390)) + return d.dropna(subset=["pc", "gap", "f30_rvol"]) + + +for sym in ["SPY", "QQQ"]: + d = daystats_extended(load(sym)) + DD = d[(d.prev_dn) & (d.gap < 0)].copy() + print(f"\n{'='*70}") + print(f" {sym} — TRADEABLE RETURNS from 10:00 AM → close") + print(f"{'='*70}") + + print(f"\n TRADE: buy at 10:00 AM (after observing first 30 min)") + print(f" {'state':<28s}{'n':>5s}{'P(+)':>6s}{'avg 10→C':>10s}{'med 10→C':>10s}{'avgMFE':>8s}{'avgMAE':>8s}") + for lbl, mask in [ + ("ALL down-down", DD.index == DD.index), + ("flush (f30 < -0.1%)", DD.f30_ret < -0.001), + ("flush (f30 < -0.2%)", DD.f30_ret < -0.002), + ("flush (f30 < -0.3%)", DD.f30_ret < -0.003), + ("mild down (-0.1..0%)", (DD.f30_ret >= -0.001) & (DD.f30_ret < 0)), + ("bounce (f30 > 0%)", DD.f30_ret >= 0), + ("bounce (f30 > +0.1%)", DD.f30_ret >= 0.001), + ("bounce (f30 > +0.2%)", DD.f30_ret >= 0.002), + ]: + S = DD[mask] + if len(S) < 15: + continue + print(f" {lbl:<28s}{len(S):>5d}{S.a30_ret.gt(0).mean():>6.0%}" + f"{S.a30_ret.mean()*100:>+9.3f}%{S.a30_ret.median()*100:>+9.3f}%" + f"{S.a30_mfe.mean()*100:>+7.2f}%{S.a30_mae.mean()*100:>+7.2f}%") + + print(f"\n TRADE: buy at 10:30 AM (after observing first hour)") + DD60 = DD.dropna(subset=["a60_ret"]) + print(f" {'state':<28s}{'n':>5s}{'P(+)':>6s}{'avg 10:30→C':>12s}") + for lbl, mask in [ + ("ALL down-down", DD60.index == DD60.index), + ("f60 < -0.3%", DD60.f60_ret < -0.003), + ("f60 < -0.2%", DD60.f60_ret < -0.002), + ("f60 -0.2..0%", (DD60.f60_ret >= -0.002) & (DD60.f60_ret < 0)), + ("f60 > 0%", DD60.f60_ret >= 0), + ("f60 > +0.2%", DD60.f60_ret >= 0.002), + ("f60 > +0.3%", DD60.f60_ret >= 0.003), + ]: + S = DD60[mask] + if len(S) < 15: + continue + print(f" {lbl:<28s}{len(S):>5d}{S.a60_ret.gt(0).mean():>6.0%}" + f"{S.a60_ret.mean()*100:>+11.3f}%") + + # Race analysis: +0.20% vs -0.20% within remaining session for the bounce state + print(f"\n RACE: ±0.20% from 10:00 on bounce days (f30 > 0%)") + BOUNCE = DD[DD.f30_ret >= 0] + hit_up = (BOUNCE.a30_mfe >= 0.002).sum() + hit_dn = (BOUNCE.a30_mae <= -0.002).sum() + both = ((BOUNCE.a30_mfe >= 0.002) & (BOUNCE.a30_mae <= -0.002)).sum() + n = len(BOUNCE) + print(f" n={n} hit +0.20%: {hit_up} ({hit_up/n:.0%}) hit -0.20%: {hit_dn} ({hit_dn/n:.0%})") + print(f" hit both: {both} (can't determine order from OHLC)") + + # Race at ±0.15% + hit_up15 = (BOUNCE.a30_mfe >= 0.0015).sum() + hit_dn15 = (BOUNCE.a30_mae <= -0.0015).sum() + print(f" at ±0.15%: hit +: {hit_up15} ({hit_up15/n:.0%}) hit -: {hit_dn15} ({hit_dn15/n:.0%})") + + # Halves for the tradeable return + print(f"\n HALVES: tradeable 10:00→close return") + DD["half"] = [1 if str(x) < "2021-01-01" else 2 for x in DD["day"]] + print(f" {'state':<28s}{'half':>5s}{'n':>5s}{'P(+)':>6s}{'avg':>10s}") + for lbl, mask in [ + ("ALL down-down", DD.index == DD.index), + ("bounce f30>0%", DD.f30_ret >= 0), + ("flush f30<-0.1%", DD.f30_ret < -0.001), + ]: + for hf in [1, 2]: + S = DD[mask & (DD.half == hf)] + if len(S) < 10: + continue + print(f" {lbl:<28s}{hf:>5d}{len(S):>5d}{S.a30_ret.gt(0).mean():>6.0%}" + f"{S.a30_ret.mean()*100:>+9.3f}%") + + # Year breakdown for bounce state + print(f"\n YEAR: bounce (f30>0%) tradeable 10→close") + DD["year"] = [str(x)[:4] for x in DD["day"]] + BOUNCE = DD[DD.f30_ret >= 0] + print(f" {'year':<6s}{'n':>5s}{'P(+)':>6s}{'avg':>10s}") + for yr, S in BOUNCE.groupby("year"): + if len(S) < 10: + continue + print(f" {yr:<6s}{len(S):>5d}{S.a30_ret.gt(0).mean():>6.0%}{S.a30_ret.mean()*100:>+9.3f}%") diff --git a/research/conditional_open_v4.py b/research/conditional_open_v4.py new file mode 100644 index 000000000..e47c231a6 --- /dev/null +++ b/research/conditional_open_v4.py @@ -0,0 +1,226 @@ +"""Conditional probabilities v4: broader state exploration. + +Tests: +1. Consecutive down days (2, 3, 4+) → P(recovery), avg return +2. Day-of-week × gap direction +3. Gap-fill mechanics: P(gap fills by time bucket), conditional on gap size +4. Prior day's range (wide vs narrow) × gap direction +5. Open→first-hour high/low as stop/target for a structured trade +""" +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + + +def load(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_5m_full.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].sort_values("ts") + df["day"] = df["ts"].dt.date + df["mins"] = (df["ts"].dt.hour * 60 + df["ts"].dt.minute) - 570 + return df + + +def daystats(df): + rows = [] + for dy, g in df.groupby("day"): + if len(g) < 60: + continue + o = g["open"].iloc[0]; c = g["close"].iloc[-1] + hi = g["high"].max(); lo = g["low"].min() + hi_i = g["high"].idxmax(); lo_i = g["low"].idxmin() + + first30 = g[g["mins"] < 30] + first60 = g[g["mins"] < 60] + first120 = g[g["mins"] < 120] + last60 = g[g["mins"] >= 330] + + f30_hi = first30["high"].max() if len(first30) > 0 else np.nan + f30_lo = first30["low"].min() if len(first30) > 0 else np.nan + f60_hi = first60["high"].max() if len(first60) > 0 else np.nan + f60_lo = first60["low"].min() if len(first60) > 0 else np.nan + f120_hi = first120["high"].max() if len(first120) > 0 else np.nan + f120_lo = first120["low"].min() if len(first120) > 0 else np.nan + last60_hi = last60["high"].max() if len(last60) > 0 else np.nan + last60_lo = last60["low"].min() if len(last60) > 0 else np.nan + + day_vol = g["volume"].sum() + f30_vol = first30["volume"].sum() if len(first30) > 0 else 0 + + rows.append(dict( + day=dy, o=o, c=c, h=hi, l=lo, day_range=(hi-lo)/o, + t_hi=g.loc[hi_i, "mins"], t_lo=g.loc[lo_i, "mins"], + f30_hi=f30_hi, f30_lo=f30_lo, f60_hi=f60_hi, f60_lo=f60_lo, + f120_hi=f120_hi, last60_hi=last60_hi, last60_lo=last60_lo, + f120_lo=f120_lo, + day_vol=day_vol, f30_vol=f30_vol, + dow=pd.Timestamp(dy).dayofweek, + )) + d = pd.DataFrame(rows).sort_values("day").reset_index(drop=True) + d["pc"] = d["c"].shift(1) + d["prev_dn"] = d["c"].shift(1) < d["c"].shift(2) + d["prev2_dn"] = d["c"].shift(2) < d["c"].shift(3) + d["prev3_dn"] = d["c"].shift(3) < d["c"].shift(4) + d["gap"] = d["o"] / d["pc"] - 1 + d["oc"] = d["c"] / d["o"] - 1 + d["green"] = d["c"] > d["pc"] + d["prev_range"] = d["day_range"].shift(1) + d["prev_range_med"] = d["prev_range"].rolling(60).median() + d["prev_range_wide"] = d["prev_range"] > d["prev_range_med"] + d["gap_fill"] = np.where(d.gap < 0, d.h >= d.pc, d.l <= d.pc) + d["gap_fill_f30"] = np.where(d.gap < 0, d.f30_hi >= d.pc, d.f30_lo <= d.pc) + d["gap_fill_f60"] = np.where(d.gap < 0, d.f60_hi >= d.pc, d.f60_lo <= d.pc) + d["gap_fill_f120"] = np.where(d.gap < 0, d.f120_hi >= d.pc, + np.where(d.f120_lo.notna(), d.f120_lo <= d.pc, False)) + return d.dropna(subset=["pc", "gap", "prev2_dn"]) + + +for sym in ["SPY", "QQQ"]: + d = daystats(load(sym)) + print(f"\n{'='*70}") + print(f" {sym} (n={len(d)} days)") + print(f"{'='*70}") + + # === 1. Consecutive down days === + print(f"\n 1. CONSECUTIVE DOWN DAYS → next day") + print(f" {'state':<30s}{'n':>5s}{'P(O→C up)':>11s}{'avg O→C':>10s}{'P(green)':>9s}{'avg gap':>9s}") + for lbl, mask in [ + ("1 down day", (d.prev_dn) & (~d.prev2_dn)), + ("2 consecutive down", (d.prev_dn) & (d.prev2_dn) & (~d.prev3_dn)), + ("3+ consecutive down", (d.prev_dn) & (d.prev2_dn) & (d.prev3_dn)), + ("1 down + gap down", (d.prev_dn) & (~d.prev2_dn) & (d.gap < 0)), + ("2 down + gap down", (d.prev_dn) & (d.prev2_dn) & (~d.prev3_dn) & (d.gap < 0)), + ("3+ down + gap down", (d.prev_dn) & (d.prev2_dn) & (d.prev3_dn) & (d.gap < 0)), + ("1 down + gap up", (d.prev_dn) & (~d.prev2_dn) & (d.gap >= 0)), + ("2 down + gap up", (d.prev_dn) & (d.prev2_dn) & (~d.prev3_dn) & (d.gap >= 0)), + ("3+ down + gap up", (d.prev_dn) & (d.prev2_dn) & (d.prev3_dn) & (d.gap >= 0)), + ]: + S = d[mask] + if len(S) < 20: + continue + print(f" {lbl:<30s}{len(S):>5d}{S.oc.gt(0).mean():>11.0%}" + f"{S.oc.mean()*100:>+9.3f}%{S.green.mean():>9.0%}" + f"{S.gap.mean()*100:>+8.3f}%") + + # === 2. Day of week × direction === + print(f"\n 2. DAY OF WEEK (down-down days only)") + DD = d[(d.prev_dn) & (d.gap < 0)] + dow_names = ["Mon", "Tue", "Wed", "Thu", "Fri"] + print(f" {'day':<6s}{'n':>5s}{'P(O→C up)':>11s}{'avg O→C':>10s}") + for dw in range(5): + S = DD[DD.dow == dw] + if len(S) < 15: + continue + print(f" {dow_names[dw]:<6s}{len(S):>5d}{S.oc.gt(0).mean():>11.0%}" + f"{S.oc.mean()*100:>+9.3f}%") + + # === 3. Gap-fill timing === + print(f"\n 3. GAP-FILL TIMING (gap-down days)") + GD = d[d.gap < 0].copy() + GD["gapb"] = pd.cut(GD.gap * 100, [-99, -0.5, -0.2, -0.05, 0], + labels=["<-0.5%", "-0.5..-0.2%", "-0.2..-0.05%", "tiny"]) + print(f" {'gap size':<16s}{'n':>5s}{'fill 30m':>9s}{'fill 1h':>8s}{'fill 2h':>8s}{'fill day':>9s}{'avg O→C':>10s}") + for gb, S in GD.groupby("gapb", observed=True): + if len(S) < 30: + continue + print(f" {gb:<16s}{len(S):>5d}{S.gap_fill_f30.mean():>9.0%}{S.gap_fill_f60.mean():>8.0%}" + f"{S.gap_fill_f120.mean():>8.0%}{S.gap_fill.mean():>9.0%}" + f"{S.oc.mean()*100:>+9.3f}%") + + # Same for gap-up days + print(f"\n GAP-FILL TIMING (gap-up days)") + GU = d[d.gap > 0].copy() + GU["gapb"] = pd.cut(GU.gap * 100, [0, 0.05, 0.2, 0.5, 99], + labels=["tiny", "0.05..0.2%", "0.2..0.5%", ">0.5%"]) + print(f" {'gap size':<16s}{'n':>5s}{'fill 30m':>9s}{'fill 1h':>8s}{'fill 2h':>8s}{'fill day':>9s}{'avg O→C':>10s}") + for gb, S in GU.groupby("gapb", observed=True): + if len(S) < 30: + continue + print(f" {gb:<16s}{len(S):>5d}{S.gap_fill_f30.mean():>9.0%}{S.gap_fill_f60.mean():>8.0%}" + f"{S.gap_fill_f120.mean():>8.0%}{S.gap_fill.mean():>9.0%}" + f"{S.oc.mean()*100:>+9.3f}%") + + # === 4. Prior day's range × gap direction === + print(f"\n 4. PRIOR DAY RANGE (wide vs narrow) × gap direction") + DR = d.dropna(subset=["prev_range_wide"]) + print(f" {'state':<30s}{'n':>5s}{'P(O→C up)':>11s}{'avg O→C':>10s}") + for lbl, mask in [ + ("narrow prev + gap down", (~DR.prev_range_wide) & (DR.gap < 0)), + ("wide prev + gap down", (DR.prev_range_wide) & (DR.gap < 0)), + ("narrow prev + gap up", (~DR.prev_range_wide) & (DR.gap >= 0)), + ("wide prev + gap up", (DR.prev_range_wide) & (DR.gap >= 0)), + ("narrow + down + gap dn", (~DR.prev_range_wide) & (DR.prev_dn) & (DR.gap < 0)), + ("wide + down + gap dn", (DR.prev_range_wide) & (DR.prev_dn) & (DR.gap < 0)), + ]: + S = DR[mask] + if len(S) < 20: + continue + print(f" {lbl:<30s}{len(S):>5d}{S.oc.gt(0).mean():>11.0%}" + f"{S.oc.mean()*100:>+9.3f}%") + + # === 5. Structured open trade: open→first-hour-low as stop, first-hour-high as target === + print(f"\n 5. STRUCTURED OPENING TRADE on down-down days") + print(f" Buy at open, stop = first-hour low, target = first-hour high") + DD = d[(d.prev_dn) & (d.gap < 0)].copy() + DD["stop_dist"] = (DD.f60_lo - DD.o) / DD.o + DD["tgt_dist"] = (DD.f60_hi - DD.o) / DD.o + DD["rr"] = DD.tgt_dist / DD.stop_dist.abs() + DD_clean = DD[(DD.stop_dist < 0) & (DD.tgt_dist > 0)] # normal days + print(f" n={len(DD_clean)} avg stop dist: {DD_clean.stop_dist.mean()*100:+.3f}%" + f" avg target dist: {DD_clean.tgt_dist.mean()*100:+.3f}%" + f" avg R:R = {DD_clean.rr.mean():.2f}") + print(f" P(close > open): {DD_clean.oc.gt(0).mean():.0%}" + f" P(close > midpoint): {(DD_clean.c > (DD_clean.o + DD_clean.f60_lo)/2).mean():.0%}") + + # what if we use yesterday's close as target on gap-down? + DD["pc_dist"] = (DD.pc - DD.o) / DD.o + DD_gf = DD[DD.pc_dist > 0] # gap is down so prev close is above open + print(f"\n Alternative: buy open, target = prev close (gap fill)") + print(f" n={len(DD_gf)} avg target (prevC-open)/open: {DD_gf.pc_dist.mean()*100:+.3f}%" + f" P(fills): {DD_gf.gap_fill.mean():.0%}" + f" avg O→C: {DD_gf.oc.mean()*100:+.3f}%") + + # === 6. 2-day pattern: down close + gap down + bounce = trade? === + print(f"\n 6. TWO-DAY COMBO: today = down-down + bounce → tomorrow") + # Build: flag days where prev day was down-down AND bounced (oc > 0) + d["prev_dd_bounce"] = (d.prev_dn) & (d.gap.shift(0) < 0) # this doesn't work, need prev day's OC + # Actually need: was yesterday a down-down day that closed up? + d["prev_oc"] = d["oc"].shift(1) + d["prev_gap"] = d["gap"].shift(1) + d["prev_dd"] = (d["prev_dn"].shift(1) == True) & (d["prev_gap"] < 0) if "prev_gap" in d.columns else False + combo = d[(d["prev_oc"].shift(0) > 0) & (d.prev_dn) & (d.gap.shift(0) != d.gap.shift(0))] # placeholder + # Simpler: yesterday was down-down and recovered (O→C up), today's behavior + yest_dd_bounce = (d.prev_dn.shift(1) == True) & (d.gap.shift(1) < 0) & (d.oc.shift(1) > 0) + yest_dd_fail = (d.prev_dn.shift(1) == True) & (d.gap.shift(1) < 0) & (d.oc.shift(1) <= 0) + print(f" {'yesterday state':<30s}{'n':>5s}{'P(O→C up)':>11s}{'avg O→C':>10s}{'P(green)':>9s}") + for lbl, mask in [ + ("dd bounce → today", yest_dd_bounce), + ("dd fail → today", yest_dd_fail), + ]: + S = d[mask].dropna(subset=["oc"]) + if len(S) < 15: + continue + print(f" {lbl:<30s}{len(S):>5d}{S.oc.gt(0).mean():>11.0%}" + f"{S.oc.mean()*100:>+9.3f}%{S.green.mean():>9.0%}") + + # === HALVES for notable cells === + print(f"\n HALVES STABILITY:") + d["half"] = [1 if str(x) < "2021-01-01" else 2 for x in d["day"]] + print(f" {'state':<30s}{'half':>5s}{'n':>5s}{'P(O→C up)':>11s}{'avg':>10s}") + DD = d[(d.prev_dn) & (d.gap < 0)] + checks = [ + ("2+ down + gap down", (d.prev_dn) & (d.prev2_dn) & (d.gap < 0)), + ("3+ down + gap down", (d.prev_dn) & (d.prev2_dn) & (d.prev3_dn) & (d.gap < 0)), + ] + for lbl, mask in checks: + for hf in [1, 2]: + S = d[mask & (d.half == hf)] + if len(S) < 10: + continue + print(f" {lbl:<30s}{hf:>5d}{len(S):>5d}{S.oc.gt(0).mean():>11.0%}" + f"{S.oc.mean()*100:>+9.3f}%") diff --git a/research/confluence.py b/research/confluence.py new file mode 100644 index 000000000..056779875 --- /dev/null +++ b/research/confluence.py @@ -0,0 +1,77 @@ +"""Task 3: daily confluence rules on QQQ + volume-filter split tests. + +A. Confluence backtests (same engine, daily QQQ, next-open fills): + - IBS<0.20 alone / 5-day-low-close alone / both (confluence) + - confluence with looser IBS (0.25) +B. Volume splits (signal-quality analysis, not a backtest): + For TT-A and 5DayLow-A entry signals, split by signal-day volume vs 20d avg + and compare 2-session binary WR and avg move. +""" +import math +import os + +import numpy as np +import pandas as pd + +from engine import load_symbol, run_bt, compute_stats + +OUT = os.path.dirname(os.path.abspath(__file__)) +df = load_symbol("QQQ") +df["vol20"] = df["volume"].rolling(20).mean() +df["volx"] = df["volume"] / df["vol20"] + + +def nn(*vals): + return all(not (isinstance(v, float) and math.isnan(v)) for v in vals) + + +RUNS = [ + ("IBS20_alone", dict( + entry_fn=lambda r: r.ibs < 0.20, + exit_fn=lambda r: nn(r.prev_close) and r.close > r.prev_close)), + ("5DayLow_alone", dict( + entry_fn=lambda r: nn(r.lc5) and r.close <= r.lc5, + exit_fn=lambda r: nn(r.prev_close) and r.close > r.prev_close)), + ("CONF_ibs20_5dl", dict( + entry_fn=lambda r: nn(r.lc5) and r.ibs < 0.20 and r.close <= r.lc5, + exit_fn=lambda r: nn(r.prev_close) and r.close > r.prev_close)), + ("CONF_ibs25_5dl", dict( + entry_fn=lambda r: nn(r.lc5) and r.ibs < 0.25 and r.close <= r.lc5, + exit_fn=lambda r: nn(r.prev_close) and r.close > r.prev_close)), + ("CONF_ibs20_5dl_volhi", dict( + entry_fn=lambda r: nn(r.lc5, r.volx) and r.ibs < 0.20 and r.close <= r.lc5 and r.volx > 1.2, + exit_fn=lambda r: nn(r.prev_close) and r.close > r.prev_close)), +] + +print("=== A. Confluence backtests (QQQ daily, next-open fills) ===") +print(f"{'run':<22s} {'CAGR':>7s} {'maxDD':>7s} {'Sharpe':>6s} {'WR':>6s} {'PF':>5s} {'#tr':>5s} {'avgtr':>8s}") +for run_id, kw in RUNS: + eq, trades = run_bt(df, **kw) + st = compute_stats(eq, trades, run_id) + print(f"{run_id:<22s} {st['cagr']:>7.1%} {st['maxdd']:>7.1%} {st['sharpe']:>6.2f} " + f"{st['wr']:>6.1%} {st['pf']:>5.2f} {st['n_trades']:>5d} {st['avg_trade']:>8.3%}") + +# ---- B. volume splits on signal quality ---- +print("\n=== B. Volume splits: 2-session binary WR from next-open entry ===") +o = df["open"].values +c = df["close"].values +n = len(df) +sig_defs = { + "TT_A (Mon down)": (df["weekday"] == 0) & (df["close"] < df["open"]), + "5DayLow+IBS25": (df["ibs"] < 0.25) & (df["close"] <= df["lc5"]), + "IBS<0.20": df["ibs"] < 0.20, +} +warm = df["date"] >= pd.Timestamp("2017-04-01") +print(f"{'signal':<18s} {'vol split':<12s} {'n':>5s} {'WR2d':>6s} {'avg2d':>8s}") +for name, sig in sig_defs.items(): + for split, mask in [("volx>1.2", df["volx"] > 1.2), ("volx<=1.2", df["volx"] <= 1.2)]: + rows = df.index[(sig & mask & warm).fillna(False)] + rets = [] + for i in rows: + if i + 2 < n: + entry = o[i + 1] * 1.0002 + rets.append(c[i + 2] / entry - 1) + if not rets: + continue + a = np.array(rets) + print(f"{name:<18s} {split:<12s} {len(a):>5d} {(a>0).mean():>6.1%} {a.mean():>8.3%}") diff --git a/research/context_dictionary.py b/research/context_dictionary.py new file mode 100644 index 000000000..a8dd23080 --- /dev/null +++ b/research/context_dictionary.py @@ -0,0 +1,108 @@ +"""Context dictionary: what conditions are present when IBS<0.20 signals WIN? + +For every historical IBS trade on QQQ AND SPY, tag 12 context features at +signal time; report WR(feature) vs WR(~feature) per symbol; rank by agreement +(same sign on both symbols) and combined magnitude. +""" +import math +import os + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) + + +def wilder_rsi(close, period=14): + d = close.diff() + ag = d.clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + al = (-d).clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + return 100 - 100 / (1 + ag / al) + + +def prep(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_daily.csv"), parse_dates=["date"]) + df = df.sort_values("date").reset_index(drop=True) + c, h, l = df["close"], df["high"], df["low"] + df["volx"] = df["volume"] / df["volume"].rolling(20).mean() + tr = np.maximum(h - l, np.maximum((h - c.shift(1)).abs(), (l - c.shift(1)).abs())) + df["atr14"] = tr.rolling(14).mean() + df["range_x"] = (h - l) / df["atr14"] + df["rsi14"] = wilder_rsi(c) + m20 = c.rolling(20).mean() + s20 = c.rolling(20).std() + df["pctb"] = (c - (m20 - 2 * s20)) / (4 * s20) + df["sma20"] = m20 + df["sma50"] = c.rolling(50).mean() + df["hi20"] = c.rolling(20).max() + df["ret1"] = c.pct_change() + df["dn3"] = (df["ret1"] < 0) & (df["ret1"].shift(1) < 0) & (df["ret1"].shift(2) < 0) + df["ret10"] = c / c.shift(10) - 1 + df["rv20"] = np.log(c / c.shift(1)).rolling(20).std() + df["rv_med"] = df["rv20"].expanding().median() + df["weekday"] = df["date"].dt.weekday + rng = h - l + df["ibs"] = np.where(rng > 0, (c - l) / rng, 0.5) + return df + + +DFS = {s: prep(s) for s in ["QQQ", "SPY"]} +IDX = {s: {d: i for i, d in enumerate(DFS[s]["date"])} for s in DFS} + +# cross-asset: symbol's day return minus the other symbol's day return +for s, other in [("QQQ", "SPY"), ("SPY", "QQQ")]: + a, b = DFS[s], DFS[other] + merged = a[["date", "ret1"]].merge(b[["date", "ret1"]], on="date", suffixes=("", "_o")) + a["rel_ret"] = merged["ret1"] - merged["ret1_o"] + +FEATURES = [ + ("quiet volume (<=1.2x)", lambda r: r.volx <= 1.2), + ("violent day (range>1.5xATR)", lambda r: r.range_x > 1.5), + ("3+ consecutive red closes", lambda r: bool(r.dn3)), + ("downtrend (close -0.03), + ("RSI14 < 35", lambda r: r.rsi14 < 35), + ("below lower BB (%B<0)", lambda r: r.pctb < 0), + ("SMA20 > SMA50 (uptrend)", lambda r: r.sma20 > r.sma50), + ("high-vol regime (rv>med)", lambda r: r.rv20 > r.rv_med), + ("lagging other index >0.5%", lambda r: r.rel_ret < -0.005), + ("signal on Friday", lambda r: r.weekday == 4), + ("deep IBS (<0.10)", lambda r: r.ibs < 0.10), +] + +res = {} +for sym in ["QQQ", "SPY"]: + tr = pd.read_csv(os.path.join(OUT, f"trades_S4_IBS_{sym}_e20_x70.csv"), parse_dates=["entry_date"]) + df = DFS[sym] + rows = list(df.itertuples(index=False)) + recs = [] + for t in tr.itertuples(): + i = IDX[sym].get(t.entry_date) + if i is None or i == 0: + continue + recs.append((rows[i - 1], t.ret > 0)) + base = np.mean([w for _, w in recs]) + res[sym] = {"base": base, "n": len(recs), "feat": {}} + for name, fn in FEATURES: + wt = [w for r, w in recs if fn(r)] + wf = [w for r, w in recs if not fn(r)] + if len(wt) >= 15 and len(wf) >= 15: + res[sym]["feat"][name] = (np.mean(wt) - np.mean(wf), np.mean(wt), len(wt)) + +print(f"IBS<0.20 trades — QQQ n={res['QQQ']['n']} (base WR {res['QQQ']['base']:.1%}), " + f"SPY n={res['SPY']['n']} (base WR {res['SPY']['base']:.1%})\n") +hdr = f"{'condition at signal':<34s}{'QQQ dWR':>9s}{'SPY dWR':>9s}{'agree':>7s}{'nQ':>5s}" +print(hdr) +print("-" * len(hdr)) +ranked = [] +for name, _ in FEATURES: + q = res["QQQ"]["feat"].get(name) + s = res["SPY"]["feat"].get(name) + if q is None or s is None: + continue + agree = (q[0] > 0) == (s[0] > 0) + ranked.append((name, q[0], s[0], agree, q[2], min(abs(q[0]), abs(s[0])) if agree else 0)) +ranked.sort(key=lambda x: -x[5]) +for name, qg, sg, agree, nq, _ in ranked: + print(f"{name:<34s}{qg:>+9.1%}{sg:>+9.1%}{'YES' if agree else 'no':>7s}{nq:>5d}") +print("\ndWR = WR(condition true) - WR(condition false). 'agree' = same sign both symbols.") diff --git a/research/corridor_discovery.py b/research/corridor_discovery.py new file mode 100644 index 000000000..7bf7de5f1 --- /dev/null +++ b/research/corridor_discovery.py @@ -0,0 +1,202 @@ +"""DISCOVERY MODE (not the gauntlet): the SMA9 / lower-Bollinger corridor. + +The zone the user named: close BELOW SMA9 but ABOVE the lower Bollinger band — +"weak but not broken", the band price rides before it releases. + +We MAP, we do not judge: + - forward MFE (max favorable) / MAE (max adverse) over 6 & 12 bars, let winners run + - median favorable move, P(reach +0.2/0.3/0.5%) up AND down + - response surface across: dwell (bars coiling in zone) x compression (BB width), + position in corridor (near SMA9 vs near lower BB), time of day + - RELEASE events: after coiling, first close back above SMA9 (up-release) vs + first close below lower BB (down-break) -> forward distribution +Baselines from all bars. SPY + QQQ 5m, both halves shown (not used to kill). +BB = SMA20 +/- 2*std(ddof=0) to match charting platforms. SMA9 = 9-SMA. +""" +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") +H1, H2 = 6, 12 # 30 / 60 min + + +def wilder_rsi(c, n=14): + d = np.diff(c, prepend=c[0]); up = np.where(d > 0, d, 0.0); dn = np.where(d < 0, -d, 0.0) + au = np.zeros_like(c); ad = np.zeros_like(c); au[n] = up[1:n+1].mean(); ad[n] = dn[1:n+1].mean() + for i in range(n+1, len(c)): + au[i] = (au[i-1]*(n-1)+up[i])/n; ad[i] = (ad[i-1]*(n-1)+dn[i])/n + rs = np.divide(au, ad, out=np.full_like(c, np.inf), where=ad > 0) + return 100 - 100/(1+rs) + + +def load(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_5m_full.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].sort_values("ts").reset_index(drop=True) + df["day"] = df["ts"].dt.date + c = df["close"] + df["sma9"] = c.rolling(9).mean() + df["sma20"] = c.rolling(20).mean() + sd = c.rolling(20).std(ddof=0) + df["lbb"] = df["sma20"] - 2*sd + df["ubb"] = df["sma20"] + 2*sd + df["bbw"] = (df["ubb"] - df["lbb"]) / df["sma20"] + df["rsi"] = wilder_rsi(c.values) + pv = df["vwap"] * df["volume"] + df["svwap"] = pv.groupby(df["day"]).cumsum() / df["volume"].groupby(df["day"]).cumsum() + return df + + +def fwd(i, H, c, h, l, de): + """forward MFE up, MAE dn, drift, over min(H, to end of day).""" + end = min(i + H, de) + if end <= i: + return np.nan, np.nan, np.nan + seg_h = h[i+1:end+1]; seg_l = l[i+1:end+1] + mfe = seg_h.max()/c[i] - 1 + mae = seg_l.min()/c[i] - 1 + drift = c[end]/c[i] - 1 + return mfe, mae, drift + + +def pct(a): + return np.array(a) + + +def run(sym): + df = load(sym) + c = df["close"].values; h = df["high"].values; l = df["low"].values + s9 = df["sma9"].values; lbb = df["lbb"].values; ubb = df["ubb"].values + bbw = df["bbw"].values; rsi = df["rsi"].values; vw = df["svwap"].values + day = df["day"].values; ts = df["ts"].values + tod = (df["ts"].dt.hour*60 + df["ts"].dt.minute).values + n = len(df) + rows_of = {} + for i, dy in enumerate(day): + rows_of.setdefault(dy, []).append(i) + de_of = {dy: idxs[-1] for dy, idxs in rows_of.items()} + WARM = np.datetime64("2016-06-01") + + # compression terciles (global) + valid_bbw = bbw[~np.isnan(bbw)] + q33, q67 = np.nanpercentile(valid_bbw, [33, 67]) + + # corridor state + dwell + in_zone = (~np.isnan(s9)) & (~np.isnan(lbb)) & (s9 > lbb) & (c < s9) & (c > lbb) + dwell = np.zeros(n, int) + for i in range(1, n): + if day[i] == day[i-1] and in_zone[i]: + dwell[i] = dwell[i-1] + 1 if in_zone[i-1] else 1 + elif in_zone[i]: + dwell[i] = 1 + + # ---- baseline forward dist from all bars ---- + base_mfe = []; base_mae = []; base_drift = [] + for i in range(30, n-1, 3): + if ts[i] < WARM: + continue + de = de_of[day[i]] + m, a, d = fwd(i, H2, c, h, l, de) + if not np.isnan(m): + base_mfe.append(m); base_mae.append(a); base_drift.append(d) + bmfe, bmae, bdr = pct(base_mfe), pct(base_mae), pct(base_drift) + + # ---- in-zone events ---- + recs = [] + for i in range(30, n-1): + if ts[i] < WARM or not in_zone[i]: + continue + de = de_of[day[i]] + m, a, d = fwd(i, H2, c, h, l, de) + if np.isnan(m): + continue + posn = (c[i]-lbb[i])/(s9[i]-lbb[i]) # 0=lbb,1=sma9 + comp = "tight" if bbw[i] < q33 else ("wide" if bbw[i] > q67 else "mid") + dwb = "1-2" if dwell[i] <= 2 else ("3-5" if dwell[i] <= 5 else ("6-10" if dwell[i] <= 10 else "11+")) + tb = "AM" if tod[i] < 690 else ("MID" if tod[i] < 810 else "PM") + recs.append(dict(mfe=m, mae=a, drift=d, posn=posn, comp=comp, dwb=dwb, tb=tb, + rsi=rsi[i], half=1 if ts[i] < np.datetime64("2021-07-01") else 2)) + E = pd.DataFrame(recs) + + print(f"\n============================ {sym} ============================") + print(f"in-corridor bars: {len(E):,} | compression terciles bbw q33={q33:.4f} q67={q67:.4f}") + print(f"BASELINE (all bars, 60min fwd): MFEup med {np.median(bmfe)*100:.3f}% MAEdn med {np.median(bmae)*100:.3f}% " + f"drift med {np.median(bdr)*100:+.3f}% P(MFE>=+0.3%) {(bmfe>=0.003).mean():.0%} P(MAE<=-0.3%) {(bmae<=-0.003).mean():.0%}") + + def summ(lbl, S): + if len(S) < 150: + print(f" {lbl:<22s} n={len(S)} (thin)"); return + m = S["mfe"].values; a = S["mae"].values; d = S["drift"].values + print(f" {lbl:<22s} n={len(S):>6d} MFEup {np.median(m)*100:5.3f}% MAEdn {np.median(a)*100:6.3f}% " + f"drift {np.median(d)*100:+5.3f}% P+0.3 {(m>=0.003).mean():4.0%} P-0.3 {(a<=-0.003).mean():4.0%} " + f"skew {(m>=0.003).mean()-(a<=-0.003).mean():+3.0%}") + + print("\n RESPONSE SURFACE — position in corridor (0=lowerBB .. 1=SMA9):") + summ("near lowerBB (<0.33)", E[E.posn < 0.33]) + summ("middle (0.33-0.67)", E[(E.posn >= 0.33) & (E.posn <= 0.67)]) + summ("near SMA9 (>0.67)", E[E.posn > 0.67]) + + print("\n RESPONSE SURFACE — dwell (bars coiling in zone) x compression:") + for dwb in ["1-2", "3-5", "6-10", "11+"]: + for comp in ["tight", "mid", "wide"]: + summ(f"dwell {dwb} / {comp}", E[(E.dwb == dwb) & (E.comp == comp)]) + + print("\n RESPONSE SURFACE — time of day:") + for tb in ["AM", "MID", "PM"]: + summ(f"{tb}", E[E.tb == tb]) + + print("\n TIGHT-COMPRESSION coil (bbw tight, dwell>=6) split by half:") + coil = E[(E.comp == "tight") & (E.dwb.isin(["6-10", "11+"]))] + summ("tight coil ALL", coil) + summ(" half 1", coil[coil.half == 1]) + summ(" half 2", coil[coil.half == 2]) + + # ---- RELEASE events ---- + rel = [] + for i in range(31, n-1): + if ts[i] < WARM: + continue + # need to be in corridor with dwell>=3 at bar i-1, then release at i + if not (in_zone[i-1] and dwell[i-1] >= 3 and day[i] == day[i-1]): + continue + de = de_of[day[i]] + up = c[i] > s9[i-1] # closed back above prior SMA9 (up-release) + dn = c[i] < lbb[i-1] # closed below prior lower BB (down-break) + if not (up or dn): + continue + m, a, d = fwd(i, H2, c, h, l, de) + if np.isnan(m): + continue + comp = "tight" if bbw[i-1] < q33 else ("wide" if bbw[i-1] > q67 else "mid") + rel.append(dict(dir="UP" if up else "DOWN", mfe=m, mae=a, drift=d, comp=comp, + half=1 if ts[i] < np.datetime64("2021-07-01") else 2)) + R = pd.DataFrame(rel) + print("\n RELEASE from coil (dwell>=3), forward 60min, signed to release dir:") + def rsumm(lbl, S, sgn): + if len(S) < 80: + print(f" {lbl:<26s} n={len(S)} (thin)"); return + # signed: favorable = release direction + fav = S["mfe"].values if sgn > 0 else -S["mae"].values + adv = -S["mae"].values if sgn > 0 else S["mfe"].values + dr = S["drift"].values * sgn + print(f" {lbl:<26s} n={len(S):>5d} favMFE {np.median(fav)*100:5.3f}% advMAE {np.median(adv)*100:5.3f}% " + f"drift {np.median(dr)*100:+5.3f}% P(fav>=+0.3%) {(fav>=0.003).mean():4.0%}") + if len(R): + rsumm("UP-release ALL", R[R.dir == "UP"], +1) + rsumm(" UP tight-comp", R[(R.dir == "UP") & (R.comp == "tight")], +1) + rsumm(" UP half1", R[(R.dir == "UP") & (R.half == 1)], +1) + rsumm(" UP half2", R[(R.dir == "UP") & (R.half == 2)], +1) + rsumm("DOWN-break ALL", R[R.dir == "DOWN"], -1) + rsumm(" DOWN tight-comp", R[(R.dir == "DOWN") & (R.comp == "tight")], -1) + n_up = (R.dir == "UP").sum(); n_dn = (R.dir == "DOWN").sum() + print(f" release direction base rate: UP {n_up/(n_up+n_dn):.0%} / DOWN {n_dn/(n_up+n_dn):.0%} (n={n_up+n_dn})") + return E, R + + +for sym in ["SPY", "QQQ"]: + run(sym) diff --git a/research/corridor_drill.py b/research/corridor_drill.py new file mode 100644 index 000000000..65f7ffb6b --- /dev/null +++ b/research/corridor_drill.py @@ -0,0 +1,107 @@ +"""DRILL the one positive-skew basin: long coil (dwell>=11 in corridor) + WIDE bands. +De-overlap: EVENT = the bar where dwell first reaches 11 while bbw is wide (>q67). +Then race forward 12 bars (60min): does +T hit before -T? Characterize the move. +Split both halves x both symbols. Also a convex-payoff proxy (defined-risk long). +""" +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + + +def load(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_5m_full.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].sort_values("ts").reset_index(drop=True) + df["day"] = df["ts"].dt.date + c = df["close"] + df["sma9"] = c.rolling(9).mean() + df["sma20"] = c.rolling(20).mean() + sd = c.rolling(20).std(ddof=0) + df["lbb"] = df["sma20"] - 2*sd + df["ubb"] = df["sma20"] + 2*sd + df["bbw"] = (df["ubb"] - df["lbb"]) / df["sma20"] + return df + + +def race(i, c, h, l, de, T, H=12): + up = c[i]*(1+T); dn = c[i]*(1-T) + end = min(i+H, de) + for j in range(i+1, end+1): + hu = h[j] >= up; du = l[j] <= dn + if hu and du: + return 0 # ambiguous same-bar + if hu: + return 1 + if du: + return -1 + return 0 + + +def run(sym): + df = load(sym) + c = df["close"].values; h = df["high"].values; l = df["low"].values + s9 = df["sma9"].values; lbb = df["lbb"].values; bbw = df["bbw"].values + day = df["day"].values; ts = df["ts"].values + tod = (df["ts"].dt.hour*60 + df["ts"].dt.minute).values + n = len(df) + de_of = {} + for i, dy in enumerate(day): + de_of[dy] = i + WARM = np.datetime64("2016-06-01") + q67 = np.nanpercentile(bbw[~np.isnan(bbw)], 67) + + in_zone = (~np.isnan(s9)) & (~np.isnan(lbb)) & (s9 > lbb) & (c < s9) & (c > lbb) + dwell = np.zeros(n, int) + for i in range(1, n): + if day[i] == day[i-1] and in_zone[i]: + dwell[i] = dwell[i-1]+1 if in_zone[i-1] else 1 + elif in_zone[i]: + dwell[i] = 1 + + ev = [] + for i in range(30, n-1): + if ts[i] < WARM: + continue + # de-overlapped entry: dwell crosses to >=11 (was <11 prior bar), wide bands + if in_zone[i] and dwell[i] >= 11 and dwell[i-1] < 11 and bbw[i] > q67: + de = de_of[day[i]] + if de - i < 4: + continue + end = min(i+12, de) + mfe = h[i+1:end+1].max()/c[i]-1 + mae = l[i+1:end+1].min()/c[i]-1 + drift = c[end]/c[i]-1 + r2 = race(i, c, h, l, de, 0.002) + r3 = race(i, c, h, l, de, 0.003) + ev.append(dict(mfe=mfe, mae=mae, drift=drift, r2=r2, r3=r3, + am=tod[i] < 690, + half=1 if ts[i] < np.datetime64("2021-07-01") else 2)) + E = pd.DataFrame(ev) + print(f"\n===== {sym} (de-overlapped long-coil+wide events: n={len(E)}) =====") + + def rep(lbl, S): + if len(S) < 20: + print(f" {lbl:<16s} n={len(S)} (thin)"); return + m = S["mfe"].values; a = S["mae"].values; d = S["drift"].values + r2 = S["r2"].values; r3 = S["r3"].values + w2 = (r2 == 1).sum(); l2 = (r2 == -1).sum() + w3 = (r3 == 1).sum(); l3 = (r3 == -1).sum() + print(f" {lbl:<16s} n={len(S):>4d} MFE {np.median(m)*100:5.3f}% MAE {np.median(a)*100:6.3f}% " + f"drift {d.mean()*100:+5.3f}% race0.2 {w2}/{l2} ({w2/max(w2+l2,1):.0%}up) " + f"race0.3 {w3}/{l3} ({w3/max(w3+l3,1):.0%}up)") + rep("ALL", E) + rep("half 1", E[E.half == 1]) + rep("half 2", E[E.half == 2]) + rep("AM only", E[E.am]) + rep("half1 AM", E[(E.half == 1) & E.am]) + rep("half2 AM", E[(E.half == 2) & E.am]) + return E + + +for sym in ["SPY", "QQQ"]: + run(sym) diff --git a/research/crypto_spike_replication.py b/research/crypto_spike_replication.py new file mode 100644 index 000000000..88fa173d4 --- /dev/null +++ b/research/crypto_spike_replication.py @@ -0,0 +1,79 @@ +"""Replication of harrisonm23-byte/Crypto_Data_Project on Alpaca crypto data (2021+). +Rules unchanged from their README: vol >= 2x trailing 30d mean = spike day; +red spike -> fwd close-to-close H=2; green spike -> H=10; excess vs unconditional. +De-overlapped per-coin trade backtest net 20bps. Core = their coins on Alpaca +(BTC/ETH/DOGE/LINK); extension = 6 Alpaca coins outside their universe. +Result 2026-07-11: core down t=3.05 / up t=2.25 (replicates); extension down t=1.39, +up DEAD -> deploy down-spike H2 only. Env: ALPACA_API_KEY/SECRET. See CODEX.md IV. +""" + +import json, os, urllib.parse, urllib.request +import numpy as np, pandas as pd +from datetime import datetime, timedelta, timezone +KEY=os.environ["ALPACA_API_KEY"]; SEC=os.environ["ALPACA_API_SECRET"] +end=(datetime.now(timezone.utc)-timedelta(minutes=16)).strftime("%Y-%m-%dT%H:%M:%SZ") + +def fetch(sym): + out=[]; page=None + while True: + p={"symbols":sym,"timeframe":"1Day","start":"2021-01-01","end":end,"limit":"1000"} + if page: p["page_token"]=page + url="https://data.alpaca.markets/v1beta3/crypto/us/bars?"+urllib.parse.urlencode(p) + r=urllib.request.Request(url,headers={"APCA-API-KEY-ID":KEY,"APCA-API-SECRET-KEY":SEC}) + with urllib.request.urlopen(r,timeout=30) as resp: d=json.loads(resp.read()) + out += d.get("bars",{}).get(sym,[]) + page = d.get("next_page_token") + if not page: break + df=pd.DataFrame(out) + df["t"]=pd.to_datetime(df["t"]); df=df.sort_values("t").reset_index(drop=True) + return df + +coins=["BTC/USD","ETH/USD","DOGE/USD","LINK/USD","AVAX/USD","SHIB/USD","LTC/USD","BCH/USD","UNI/USD","AAVE/USD"] +frames={} +for s in coins: + try: + df=fetch(s) + if len(df)>400: frames[s]=df + except Exception: pass +print("universe:", {k:len(v) for k,v in frames.items()}) + +def study(universe, label): + rows=[]; ev_down=[]; ev_up=[]; base2=[]; base10=[] + for s in universe: + df=frames[s].copy() + c=df["c"].values; o=df["o"].values; v=df["v"].values + vm=pd.Series(v).rolling(30).mean().values + vr=v/vm + f2=np.full(len(df),np.nan); f10=np.full(len(df),np.nan) + f2[:-2]=c[2:]/c[:-2]-1 + f10[:-10]=c[10:]/c[:-10]-1 + for i in range(30,len(df)): + if not np.isnan(f2[i]): base2.append(f2[i]) + if not np.isnan(f10[i]): base10.append(f10[i]) + if np.isnan(vr[i]) or vr[i]<2.0: continue + if c[i]=o[i] and not np.isnan(f10[i]): ev_up.append(f10[i]) + for name,H,cond in [("down",2,lambda i: c[i]=o[i])]: + last=-999 + for i in range(30,len(df)-H): + if np.isnan(vr[i]) or vr[i]<2.0 or not cond(i): continue + if i-last0).mean():.0%}") + +core=[s for s in ["BTC/USD","ETH/USD","DOGE/USD","LINK/USD"] if s in frames] +study(core, "REPLICATION CORE (their coins on Alpaca, 2021+)") +ext=[s for s in frames if s not in core] +if ext: study(ext, "EXTENSION (out-of-universe coins)") diff --git a/research/engine.py b/research/engine.py new file mode 100644 index 000000000..6d16e8d73 --- /dev/null +++ b/research/engine.py @@ -0,0 +1,216 @@ +"""Daily-bar backtesting engine for the 10-strategy suite. + +Execution model: +- Signals evaluated at close of day t using completed bars only. +- Entries/exits fill at day t+1 open (exit_fill='open'), or at day t close + (exit_fill='close', used only for the theoretical same-close variants). +- Slippage: 0.02% per side (buy fills higher, sell fills lower). Commission 0. +- Stop-loss (when enabled): checked intraday from the entry day onward. + If open gaps below stop -> fill at open; else if low breaches stop -> fill + at stop price. Slippage applied on top. +- Long-only, one position per run, 100% of strategy equity per trade. +""" +import math +import os + +import numpy as np +import pandas as pd + +SLIP = 0.0002 +STAT_START = pd.Timestamp("2017-04-01") # all indicators (incl SMA300) warmed up +DATA_DIR = os.path.dirname(os.path.abspath(__file__)) + + +def wilder_rsi(close, period): + delta = close.diff() + gain = delta.clip(lower=0.0) + loss = (-delta).clip(lower=0.0) + ag = gain.ewm(alpha=1 / period, adjust=False).mean() + al = loss.ewm(alpha=1 / period, adjust=False).mean() + rsi = 100 - 100 / (1 + ag / al) + rsi[al == 0] = 100.0 + return rsi + + +def load_symbol(sym): + df = pd.read_csv(os.path.join(DATA_DIR, f"{sym}_daily.csv"), parse_dates=["date"]) + df = df.sort_values("date").reset_index(drop=True) + c, h, l, o = df["close"], df["high"], df["low"], df["open"] + df["sma5"] = c.rolling(5).mean() + df["sma10"] = c.rolling(10).mean() + df["sma200"] = c.rolling(200).mean() + df["sma300"] = c.rolling(300).mean() + df["rsi2"] = wilder_rsi(c, 2) + df["cumrsi2"] = df["rsi2"] + df["rsi2"].shift(1) + df["rsi5"] = wilder_rsi(c, 5) + df["rsi5_1"] = df["rsi5"].shift(1) + df["rsi5_2"] = df["rsi5"].shift(2) + df["rsi5_3"] = df["rsi5"].shift(3) + df["rsi21"] = wilder_rsi(c, 21) + rng = (h - l) + df["ibs"] = np.where(rng > 0, (c - l) / rng, 0.5) + df["lc7"] = c.rolling(7).min() + df["hc7"] = c.rolling(7).max() + df["lc5"] = c.rolling(5).min() + df["ll5"] = l.rolling(5).min() + df["hh10"] = h.rolling(10).max() + df["avg_range25"] = rng.rolling(25).mean() + df["lower_band"] = df["hh10"] - 2.5 * df["avg_range25"] + df["ret1"] = c / c.shift(1) - 1 + df["prev_close"] = c.shift(1) + df["prev2_close"] = c.shift(2) + df["prev_high"] = h.shift(1) + df["prev_low"] = l.shift(1) + df["weekday"] = df["date"].dt.weekday # 0 = Monday + return df + + +def run_bt(df, entry_fn, exit_fn=None, stop_pct=None, max_hold=None, + exit_fill="open", entry_fill="open", regime_fn=None, slip=SLIP, + stat_start=STAT_START): + """Event-driven daily backtest. Returns (equity Series, trades DataFrame).""" + dates = df["date"].values + o = df["open"].values + h = df["high"].values + l = df["low"].values + c = df["close"].values + rows = list(df.itertuples(index=False)) + n = len(df) + + equity = 1.0 + shares = 0.0 + in_pos = False + pending_entry = False + pending_exit = False + exit_reason = None + entry_px = entry_date = None + hold = 0 + eq = np.full(n, np.nan) + trades = [] + + start_i = int(np.searchsorted(dates, np.datetime64(stat_start))) + + def close_trade(i, px, reason): + nonlocal equity, in_pos, shares, pending_exit, hold + equity = shares * px + trades.append(dict(entry_date=pd.Timestamp(entry_date), exit_date=pd.Timestamp(dates[i]), + entry_px=entry_px, exit_px=px, ret=px / entry_px - 1, + hold_days=hold, reason=reason)) + in_pos = False + shares = 0.0 + pending_exit = False + hold = 0 + + for i in range(start_i, n): + # --- open: fills from yesterday's signals --- + if in_pos and pending_exit: + close_trade(i, o[i] * (1 - slip), exit_reason) + elif (not in_pos) and pending_entry: + entry_px = o[i] * (1 + slip) + entry_date = dates[i] + shares = equity / entry_px + in_pos = True + hold = 0 + pending_entry = False + + # --- intraday: stop loss --- + if in_pos and stop_pct is not None: + stop_px = entry_px * (1 - stop_pct) + if o[i] <= stop_px: + close_trade(i, o[i] * (1 - slip), "stop_gap") + elif l[i] <= stop_px: + close_trade(i, stop_px * (1 - slip), "stop") + + # --- close: mark equity, evaluate signals --- + if in_pos: + hold += 1 + r = rows[i] + if in_pos: + want_exit = False + reason = None + if exit_fn is not None and exit_fn(r): + want_exit, reason = True, "signal" + if not want_exit and max_hold is not None and hold >= max_hold: + want_exit, reason = True, "time" + if not want_exit and regime_fn is not None and regime_fn(r): + want_exit, reason = True, "regime" + if want_exit: + if exit_fill == "close": + close_trade(i, c[i] * (1 - slip), reason) + else: + pending_exit = True + exit_reason = reason + elif not pending_entry: + blocked = regime_fn is not None and regime_fn(r) + if not blocked and entry_fn(r): + if entry_fill == "close": + entry_px = c[i] * (1 + slip) + entry_date = dates[i] + shares = equity / entry_px + in_pos = True + hold = 0 + else: + pending_entry = True + + eq[i] = shares * c[i] if in_pos else equity + + eq_series = pd.Series(eq[start_i:], index=pd.DatetimeIndex(dates[start_i:]), name="equity") + return eq_series, pd.DataFrame(trades) + + +def compute_stats(eq, trades, label=""): + days = (eq.index[-1] - eq.index[0]).days + total = eq.iloc[-1] / eq.iloc[0] - 1 + cagr = (1 + total) ** (365.25 / days) - 1 if days > 0 else 0.0 + dr = eq.pct_change().dropna() + sharpe = dr.mean() / dr.std() * math.sqrt(252) if dr.std() > 0 else 0.0 + dn = dr[dr < 0] + sortino = dr.mean() / dn.std() * math.sqrt(252) if len(dn) > 1 and dn.std() > 0 else 0.0 + peak = eq.cummax() + maxdd = ((eq - peak) / peak).min() + ntr = len(trades) + if ntr: + rets = trades["ret"].values + wins = rets[rets > 0] + losses = rets[rets <= 0] + wr = len(wins) / ntr + pf = wins.sum() / abs(losses.sum()) if losses.sum() != 0 else float("inf") + avg_tr, med_tr = rets.mean(), float(np.median(rets)) + avg_hold = trades["hold_days"].mean() + best, worst = rets.max(), rets.min() + in_mkt_days = trades["hold_days"].sum() + else: + wr = pf = avg_tr = med_tr = avg_hold = best = worst = in_mkt_days = 0.0 + exposure = in_mkt_days / len(eq) if len(eq) else 0.0 + yearly = eq.resample("YE").last().pct_change() + first_year = eq.resample("YE").last() + if len(first_year) > 0: + yearly.iloc[0] = first_year.iloc[0] / eq.iloc[0] - 1 + return dict(label=label, cagr=cagr, total=total, maxdd=maxdd, sharpe=sharpe, + sortino=sortino, wr=wr, pf=pf, avg_trade=avg_tr, med_trade=med_tr, + avg_hold=avg_hold, n_trades=ntr, exposure=exposure, + best=best, worst=worst, + yearly={str(k.year): float(v) for k, v in yearly.items() if not math.isnan(v)}) + + +SUBPERIODS = [ + ("2000-2007", "2000-01-01", "2008-01-01"), + ("2008-2009", "2008-01-01", "2010-01-01"), + ("2010-2019", "2010-01-01", "2020-01-01"), + ("2020-2021", "2020-01-01", "2022-01-01"), + ("2022", "2022-01-01", "2023-01-01"), + ("2023-present", "2023-01-01", "2027-01-01"), +] + + +def subperiod_stats(eq, trades): + out = {} + for name, a, b in SUBPERIODS: + a, b = pd.Timestamp(a), pd.Timestamp(b) + sl = eq[(eq.index >= a) & (eq.index < b)] + if len(sl) < 20: + out[name] = None + continue + tr = trades[(trades["exit_date"] >= a) & (trades["exit_date"] < b)] if len(trades) else trades + out[name] = compute_stats(sl, tr, name) + return out diff --git a/research/entry_timing.py b/research/entry_timing.py new file mode 100644 index 000000000..e7007568d --- /dev/null +++ b/research/entry_timing.py @@ -0,0 +1,115 @@ +"""Entry-timing test: does intraday confirmation improve the daily QQQ longs? + +For each historical trade of S4_IBS_QQQ_e20_x70 and S9_5DayLow_A_QQQ, keep the +exit fill fixed (from the original backtest) and re-price the ENTRY: + + base : buy 9:30 open (the original backtest's assumption) + V1 : first 5m close > session VWAP (from 9:35 on) -> buy next bar open; + fallback: buy 12:00 bar open if never confirmed by noon + V1s : same, but skip the trade entirely if not confirmed by noon + V2 : just wait -- buy 10:00 bar open unconditionally + V3 : dip limit at open-0.25% filled if touched before 10:30, else buy + 10:30 bar open + +Slippage 0.02% on market fills; limit fills at limit price. +""" +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") +SLIP = 0.0002 + +df = pd.read_csv(os.path.join(OUT, "QQQ_5m_full.csv")) +df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) +df = df.sort_values("ts").reset_index(drop=True) +d5 = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].reset_index(drop=True) +d5["day"] = d5["ts"].dt.date +pv = d5["vwap"] * d5["volume"] +d5["svwap"] = pv.groupby(d5["day"]).cumsum() / d5["volume"].groupby(d5["day"]).cumsum() + +o = d5["open"].values +h = d5["high"].values +l = d5["low"].values +c = d5["close"].values +vw = d5["svwap"].values +tod = (d5["ts"].dt.hour * 60 + d5["ts"].dt.minute).values + +day_rows = {} +for i, dy in enumerate(d5["day"].values): + day_rows.setdefault(dy, []).append(i) + + +def entries_for_day(dy): + rows = day_rows.get(dy) + if not rows or len(rows) < 40: + return None + i0 = rows[0] + out = {"base": o[i0] * (1 + SLIP)} + # V1 / V1s + conf = None + for k in rows[1:]: + if tod[k] >= 12 * 60: + break + if c[k] > vw[k] and k + 1 <= rows[-1]: + conf = o[k + 1] * (1 + SLIP) + break + fb = next((k for k in rows if tod[k] >= 12 * 60), None) + out["V1"] = conf if conf is not None else (o[fb] * (1 + SLIP) if fb else None) + out["V1s"] = conf + # V2: 10:00 open + k10 = next((k for k in rows if tod[k] >= 10 * 60), None) + out["V2"] = o[k10] * (1 + SLIP) if k10 else None + # V3: dip limit -0.25% before 10:30, else 10:30 open + lim = o[i0] * (1 - 0.0025) + filled = None + for k in rows: + if tod[k] >= 10 * 60 + 30: + break + if l[k] <= lim: + filled = lim + break + k1030 = next((k for k in rows if tod[k] >= 10 * 60 + 30), None) + out["V3"] = filled if filled is not None else (o[k1030] * (1 + SLIP) if k1030 else None) + return out + + +for csv, label in [("trades_S4_IBS_QQQ_e20_x70.csv", "IBS<0.20 QQQ"), + ("trades_S9_5DayLow_A_QQQ.csv", "5DayLow+IBS QQQ")]: + tr = pd.read_csv(os.path.join(OUT, csv), parse_dates=["entry_date", "exit_date"]) + variants = {v: [] for v in ["base", "V1", "V1s", "V2", "V3"]} + counts = {"n": 0, "V1_confirmed": 0, "V1_fallback": 0, "V1s_skipped": 0, "V3_limit": 0} + for t in tr.itertuples(): + e = entries_for_day(t.entry_date.date()) + if e is None: + continue + counts["n"] += 1 + if e["V1s"] is not None: + counts["V1_confirmed"] += 1 + else: + counts["V1_fallback"] += 1 + counts["V1s_skipped"] += 1 + base_i0 = e["base"] / (1 + SLIP) + if e["V3"] == base_i0 * (1 - 0.0025): + counts["V3_limit"] += 1 + for v in variants: + if e[v] is None: + continue + variants[v].append((t.exit_px / e[v] - 1, e[v])) + print(f"\n===== {label}: {counts['n']} trades with 5m data =====") + print(f"V1 confirmed by noon: {counts['V1_confirmed']} " + f"({counts['V1_confirmed']/counts['n']:.0%}), fallback: {counts['V1_fallback']}; " + f"V3 limit filled: {counts['V3_limit']} ({counts['V3_limit']/counts['n']:.0%})") + base_avg = np.mean([r for r, _ in variants["base"]]) + print(f"{'variant':<6s} {'n':>4s} {'WR':>6s} {'avg ret':>8s} {'vs base':>8s} {'total':>8s}") + for v, rows in variants.items(): + if not rows: + continue + a = np.array([r for r, _ in rows]) + total = np.prod(1 + a) - 1 + print(f"{v:<6s} {len(a):>4d} {(a>0).mean():>6.1%} {a.mean():>8.3%} " + f"{(a.mean()-base_avg)*1e4:>+7.1f}bp {total:>8.1%}") diff --git a/research/exhaustion_5m.py b/research/exhaustion_5m.py new file mode 100644 index 000000000..ea5935e6c --- /dev/null +++ b/research/exhaustion_5m.py @@ -0,0 +1,231 @@ +"""Test the 5m exhaustion-top setup and its microstructure claims. + +Signal (5m bar, RTH): close >= upper BB(20,2) AND RSI14 > 80 AND close > session VWAP. +De-duplicated: first bar of each cluster (no signal in prior 6 bars). + +Claims tested: + 1. Round-time reversal: the local top after the signal prints at :00/:30 marks. + 2. Candles shrink into the top (range contraction), volume expands on reversal. + 3. Win should be scored at higher-TF checkpoints (next 15m/30m close, the 30m + after that), not the next 5m candle. + 4. Multi-TF confirmation: 30m RSI and prior-day daily %B state change outcomes. +""" +import math +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") +rng_seed = np.random.RandomState(42) + + +def wilder_rsi(close, period): + d = close.diff() + ag = d.clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + al = (-d).clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + return 100 - 100 / (1 + ag / al) + + +# ---------- load 5m ---------- +df = pd.read_csv(os.path.join(OUT, "SPY_5m_full.csv")) +df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) +keep = (df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55)) +df = df[keep].sort_values("ts").reset_index(drop=True) +c = df["close"] +df["rsi14"] = wilder_rsi(c, 14) +mid = c.rolling(20).mean() +sd = c.rolling(20).std() +df["bb_up"] = mid + 2 * sd +df["day"] = df["ts"].dt.date +pv = df["vwap"] * df["volume"] +df["svwap"] = pv.groupby(df["day"]).cumsum() / df["volume"].groupby(df["day"]).cumsum() +df["range"] = df["high"] - df["low"] + +ts = df["ts"].values +o = df["open"].values +h = df["high"].values +l = df["low"].values +cl = df["close"].values +vol = df["volume"].values.astype(float) +rgn = df["range"].values +minute_end = ((df["ts"].dt.hour * 60 + df["ts"].dt.minute + 5) % 60).values +tod_end = (df["ts"].dt.hour * 60 + df["ts"].dt.minute + 5).values # minutes after midnight +day_arr = df["day"].values +n = len(df) + +sig = (df["close"] >= df["bb_up"]) & (df["rsi14"] > 80) & (df["close"] > df["svwap"]) +sig = sig.fillna(False).values +# de-dup: first of cluster +sig_idx = [] +last = -99 +for i in np.flatnonzero(sig): + if i - last > 6: + sig_idx.append(i) + last = i +sig_idx = np.array(sig_idx) +print(f"raw signal bars: {sig.sum()}, de-duplicated clusters: {len(sig_idx)} " + f"over {df['day'].nunique()} sessions ({len(sig_idx)/df['day'].nunique():.2f}/day)") + +W = 12 # 60-minute window for the local top + + +def local_top(i): + j_end = min(i + W, n - 1) + if day_arr[j_end] != day_arr[i]: # clamp to same session + j_end = i + int(np.argmax(day_arr[i:j_end + 1] != day_arr[i])) - 1 + win = h[i:j_end + 1] + if len(win) < 4: + return None + return i + int(np.argmax(win)) + + +# ---------- 1. round-time top ---------- +def top_minute_dist(indices): + mins, tods = [], [] + for i in indices: + t = local_top(i) + if t is not None: + mins.append(minute_end[t]) + tods.append(tod_end[t]) + return np.array(mins), np.array(tods) + + +sig_min, sig_tod = top_minute_dist(sig_idx) +base_sample = rng_seed.choice(np.arange(30, n - 20), size=20000, replace=False) +base_min, _ = top_minute_dist(base_sample) + +round_share_sig = np.isin(sig_min, [0, 30]).mean() +round_share_base = np.isin(base_min, [0, 30]).mean() +print(f"\n1. ROUND-TIME TOPS (bar-END minute of the local top within 60min after signal)") +print(f" tops ending on :00/:30 — signal: {round_share_sig:.1%} (n={len(sig_min)}), " + f"baseline: {round_share_base:.1%}, uniform: 16.7%") +print(" minute-of-hour histogram (signal tops):") +for m in range(0, 60, 5): + cnt = (sig_min == m).mean() + b = (base_min == m).mean() + print(f" :{m:02d} {cnt:>5.1%} (baseline {b:>5.1%}) {'#' * int(cnt * 200)}") +print(" time-of-day of tops (top half-hours):") +tod_ser = pd.Series(sig_tod // 30 * 30) +top_slots = tod_ser.value_counts(normalize=True).head(6) +for slot, share in top_slots.items(): + print(f" {int(slot)//60:02d}:{int(slot)%60:02d} {share:.1%}") + +# ---------- 2. contraction into top / volume on reversal ---------- +ctr, volx_top, volx_rev = [], [], [] +for i in sig_idx: + t = local_top(i) + if t is None or t < i + 3 or t + 2 >= n or day_arr[t + 2] != day_arr[t]: + continue + pre = rgn[max(t - 6, i):t - 2].mean() if t - 3 > i else np.nan + last3 = rgn[t - 3:t].mean() + if pre and not math.isnan(pre) and pre > 0: + ctr.append(last3 / pre) + vbase = vol[max(t - 6, i):t].mean() + if vbase > 0: + volx_top.append(vol[t] / vbase) + volx_rev.append(vol[t + 1:t + 3].mean() / vbase) +ctr, volx_top, volx_rev = map(np.array, (ctr, volx_top, volx_rev)) +print(f"\n2. INTO-THE-TOP MICROSTRUCTURE (n={len(ctr)})") +print(f" range of last 3 bars into top vs prior bars: median ratio {np.median(ctr):.2f} " + f"({(ctr < 1).mean():.0%} of cases contracting)") +print(f" volume at top bar vs prior 6-bar avg: median {np.median(volx_top):.2f}x") +print(f" volume of 2 bars AFTER top vs prior avg: median {np.median(volx_rev):.2f}x " + f"({(volx_rev > 1).mean():.0%} of cases expanding)") + +# ---------- 3. higher-TF checkpoint scoring (short from signal) ---------- +def next_boundary_close(i, step_min): + """Index of first bar (after entry bar i+1) whose END is a step_min boundary.""" + for j in range(i + 1, min(i + 40, n)): + if day_arr[j] != day_arr[i]: + return None + if tod_end[j] % step_min == 0 and j > i + 1: + return j + return None + + +chk = {"next 5m close": [], "next 15m close": [], "next 30m close": [], + "30m after that": [], "+60min": [], "+120min": []} +mfe = {30: [], 60: [], 120: []} +for i in sig_idx: + if i + 25 >= n or day_arr[i + 25] != day_arr[i]: + continue + entry = o[i + 1] + chk["next 5m close"].append(entry / cl[i + 1] - 1) + j15 = next_boundary_close(i, 15) + j30 = next_boundary_close(i, 30) + if j15: chk["next 15m close"].append(entry / cl[j15] - 1) + if j30: + chk["next 30m close"].append(entry / cl[j30] - 1) + j30b = j30 + 6 + if j30b < n and day_arr[j30b] == day_arr[i]: + chk["30m after that"].append(entry / cl[j30b] - 1) + chk["+60min"].append(entry / cl[i + 13] - 1) + chk["+120min"].append(entry / cl[i + 25] - 1) + for wmin, arr in mfe.items(): + wbars = wmin // 5 + arr.append(entry / l[i + 1:i + 1 + wbars].min() - 1) + +print(f"\n3. SHORT FROM SIGNAL, SCORED AT HIGHER-TF CHECKPOINTS (entry next 5m open)") +print(f" {'checkpoint':<16s} {'n':>5s} {'WR':>6s} {'avg':>8s} {'med':>8s}") +for k, arr in chk.items(): + a = np.array(arr) + print(f" {k:<16s} {len(a):>5d} {(a>0).mean():>6.1%} {a.mean():>8.3%} {np.median(a):>8.3%}") +print(" max favorable excursion (deepest low below entry within window):") +for wmin, arr in mfe.items(): + a = np.array(arr) + print(f" within {wmin:>3d}min: P(>=0.10%)={ (a>=0.001).mean():.0%} " + f"P(>=0.20%)={(a>=0.002).mean():.0%} P(>=0.30%)={(a>=0.003).mean():.0%}") + +# ---------- 4. multi-TF confirmation splits ---------- +m30 = pd.read_csv(os.path.join(OUT, "SPY_30m_full.csv")) +m30["ts"] = pd.to_datetime(m30["timestamps"]).dt.tz_convert(NY) +keep = (m30["ts"].dt.time >= dtime(9, 30)) & (m30["ts"].dt.time <= dtime(15, 30)) +m30 = m30[keep].sort_values("ts").reset_index(drop=True) +m30["rsi14"] = wilder_rsi(m30["close"], 14) +m30_end = m30["ts"] + pd.Timedelta(minutes=30) + +daily = pd.read_csv(os.path.join(OUT, "SPY_daily.csv"), parse_dates=["date"]) +dc = daily["close"] +dmid = dc.rolling(20).mean() +dsd = dc.rolling(20).std() +daily["pctb"] = (dc - (dmid - 2 * dsd)) / (4 * dsd) + +m30_ends = m30_end.values +m30_rsi = m30["rsi14"].values +d_dates = daily["date"].values +d_pctb = daily["pctb"].values + +sig_ts = ts[sig_idx] +res30 = [] +for i in sig_idx: + j30 = next_boundary_close(i, 30) + if j30 is None or i + 1 >= n: + res30.append(np.nan) + else: + res30.append(o[i + 1] / cl[j30] - 1) +res30 = np.array(res30) + +k = np.searchsorted(m30_ends, sig_ts, side="right") - 1 +rsi30_at_sig = np.where(k >= 0, m30_rsi[k], np.nan) +sig_days = pd.to_datetime(pd.Series(sig_ts)).dt.tz_localize(None).dt.normalize().values +kd = np.searchsorted(d_dates, sig_days) - 1 +pctb_prev = np.where(kd >= 0, d_pctb[kd], np.nan) + +print(f"\n4. MULTI-TIMEFRAME SPLITS (outcome = short return at next 30m close)") +ok = ~np.isnan(res30) +for name, mask in [ + ("30m RSI14 > 70", rsi30_at_sig > 70), + ("30m RSI14 <= 70", rsi30_at_sig <= 70), + ("prev-day %B > 0.8", pctb_prev > 0.8), + ("prev-day %B <= 0.8", pctb_prev <= 0.8), + ("BOTH 30m>70 & day %B>.8", (rsi30_at_sig > 70) & (pctb_prev > 0.8)), +]: + a = res30[ok & mask] + if len(a) >= 15: + print(f" {name:<26s} n={len(a):>4d} WR={(a>0).mean():>6.1%} avg={a.mean():>+8.3%}") + else: + print(f" {name:<26s} n={len(a):>4d} (too few)") diff --git a/research/float_cache.json b/research/float_cache.json new file mode 100644 index 000000000..8f1857f38 --- /dev/null +++ b/research/float_cache.json @@ -0,0 +1,11 @@ +{ + "SCKT": 5415431, + "QMCO": 38959887, + "STIM": 28286761, + "GRI": 89823, + "PLAG": 11638505, + "WXM": 10017800, + "AIFA": 3231310, + "MSGY": 340625, + "NIQ": 56159130 +} \ No newline at end of file diff --git a/research/four_rules_scan.py b/research/four_rules_scan.py new file mode 100644 index 000000000..11cad9ce3 --- /dev/null +++ b/research/four_rules_scan.py @@ -0,0 +1,263 @@ +"""Encode R1-R4 from the July-1 case study, scan 10y of SPY 5m, and split +outcomes by higher-timeframe companion indicators. + +R1 fade : >=2nd RSI-overbought touch of day + high stalls under round $5 level, + above VWAP -> short next open +R2 long : 15m#1 red, 15m#2 closes above #1 open, close>VWAP at 10:00 -> long +R3 fade : post-decline retest, EMA9/SMA9 compressed just above VWAP, + EMA9 crosses below SMA9 -> short next open +R4 cont : close=2.5x avg -> short next open +Outcomes at higher-TF checkpoints + EOD; splits by 15m/30m/1h/daily state. +""" +import math +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + + +def wilder_rsi(close, period=14): + d = close.diff() + ag = d.clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + al = (-d).clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + return 100 - 100 / (1 + ag / al) + + +df = pd.read_csv(os.path.join(OUT, "SPY_5m_full.csv")) +df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) +df = df.sort_values("ts").reset_index(drop=True) +d5 = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].reset_index(drop=True) +c = d5["close"] +d5["rsi14"] = wilder_rsi(c) +d5["ema9"] = c.ewm(span=9, adjust=False).mean() +d5["sma9"] = c.rolling(9).mean() +mid = c.rolling(20).mean() +sd = c.rolling(20).std() +d5["bb_lo"] = mid - 2 * sd +d5["bb_up"] = mid + 2 * sd +d5["day"] = d5["ts"].dt.date +pv = d5["vwap"] * d5["volume"] +d5["svwap"] = pv.groupby(d5["day"]).cumsum() / d5["volume"].groupby(d5["day"]).cumsum() +d5["vol20"] = d5["volume"].rolling(20).mean() + +ts = d5["ts"].values +o = d5["open"].values +h = d5["high"].values +lo_ = d5["low"].values +cl = d5["close"].values +vw = d5["svwap"].values +ema9 = d5["ema9"].values +sma9 = d5["sma9"].values +rsi = d5["rsi14"].values +bblo = d5["bb_lo"].values +volx = (d5["volume"] / d5["vol20"]).values +day_arr = d5["day"].values +tod_end = (d5["ts"].dt.hour * 60 + d5["ts"].dt.minute + 5).values +n = len(d5) + +# day boundaries +day_start = {} +day_end = {} +for i, dy in enumerate(day_arr): + if dy not in day_start: + day_start[dy] = i + day_end[dy] = i + +# ---------- higher-TF frames ---------- +def aggregate(step): + minutes = (d5["ts"].dt.hour * 60 + d5["ts"].dt.minute) - 570 + grp = np.minimum(minutes // step, (390 // step) - 1) + key = d5["day"].astype(str) + "_" + grp.astype(str) + g = d5.groupby(key, sort=False) + a = pd.DataFrame({"ts": g["ts"].first(), "close": g["close"].last(), + "end": g["ts"].last() + pd.Timedelta(minutes=5)}) + a = a.reset_index(drop=True).sort_values("ts").reset_index(drop=True) + a["rsi14"] = wilder_rsi(a["close"]) + m = a["close"].rolling(20).mean() + s = a["close"].rolling(20).std() + a["pctb"] = (a["close"] - (m - 2 * s)) / (4 * s) + e12 = a["close"].ewm(span=12, adjust=False).mean() + e26 = a["close"].ewm(span=26, adjust=False).mean() + macd = e12 - e26 + a["hist"] = macd - macd.ewm(span=9, adjust=False).mean() + return a + + +TF = {} +for step, name in [(15, "15m"), (30, "30m"), (60, "1h")]: + a = aggregate(step) + TF[name] = (a["end"].values, a[["rsi14", "pctb", "hist"]].values) + +daily = pd.read_csv(os.path.join(OUT, "SPY_daily.csv"), parse_dates=["date"]) +dc = daily["close"] +dm = dc.rolling(20).mean() +ds = dc.rolling(20).std() +daily["pctb"] = (dc - (dm - 2 * ds)) / (4 * ds) +daily["rsi14"] = wilder_rsi(dc) +d_dates = daily["date"].values +d_feat = daily[["pctb", "rsi14"]].values + + +def tf_state(sig_ts): + out = {} + for name, (ends, feats) in TF.items(): + k = np.searchsorted(ends, sig_ts, side="right") - 1 + out[name] = feats[k] if k >= 0 else (np.nan,) * 3 + dayn = pd.Timestamp(sig_ts).tz_localize(None).normalize() + kd = np.searchsorted(d_dates, np.datetime64(dayn)) - 1 + out["daily"] = d_feat[kd] if kd >= 0 else (np.nan, np.nan) + return out + + +# ---------- signal scans ---------- +WARM = np.datetime64("2016-06-01") +sig_lists = {"R1_fade": [], "R2_long": [], "R3_fade": [], "R4_cont": []} + +cur_day = None +touch_count = 0 +in_touch = False +last_sig = {k: -99 for k in sig_lists} +for i in range(1, n): + if ts[i] < WARM or math.isnan(rsi[i]) or math.isnan(sma9[i]): + continue + dy = day_arr[i] + if dy != cur_day: + cur_day = dy + touch_count = 0 + in_touch = False + # RSI touch counting + if rsi[i] >= 65 and not in_touch: + touch_count += 1 + in_touch = True + elif rsi[i] < 58: + in_touch = False + ds_i = day_start[dy] + day_hi = h[ds_i:i + 1].max() + + px = cl[i] + # R1: >=2nd touch, stall under round $5, above VWAP + round_lvl = math.ceil(day_hi / 5) * 5 + if (touch_count >= 2 and in_touch and rsi[i] >= 65 and px > vw[i] + and 0 < round_lvl - day_hi <= 0.0015 * px and i - last_sig["R1_fade"] > 12): + sig_lists["R1_fade"].append(i) + last_sig["R1_fade"] = i + # R2: at the 9:55-10:00 bar (6th bar of day) + if i - ds_i == 5: + o1 = o[ds_i] + c1 = cl[ds_i + 2] + c2 = cl[i] + if c1 < o1 and c2 > o1 and c2 > vw[i]: + sig_lists["R2_long"].append(i) + # R3: compression + bearish cross above VWAP, post-decline + spread = max(ema9[i], sma9[i]) - min(ema9[i], sma9[i]) + above = min(ema9[i], sma9[i]) - vw[i] + crossed = ema9[i] < sma9[i] and ema9[i - 1] >= sma9[i - 1] + if (crossed and spread < 0.0003 * px and 0 < above < 0.0015 * px + and px > vw[i] and px < day_hi * (1 - 0.002) and i - last_sig["R3_fade"] > 12): + sig_lists["R3_fade"].append(i) + last_sig["R3_fade"] = i + # R4: breakdown confirmation + if (px < vw[i] and px < bblo[i] and volx[i] >= 2.5 and i - last_sig["R4_cont"] > 12): + sig_lists["R4_cont"].append(i) + last_sig["R4_cont"] = i + + +def next_boundary(i, step_min): + for j in range(i + 2, min(i + 40, n)): + if day_arr[j] != day_arr[i]: + return None + if tod_end[j] % step_min == 0: + return j + return None + + +def outcomes(i, side): + """side=+1 long, -1 short; entry next 5m open.""" + if i + 2 >= n or day_arr[i + 1] != day_arr[i]: + return None + e = o[i + 1] + res = {} + j15 = next_boundary(i, 15) + j30 = next_boundary(i, 30) + res["15m_ck"] = side * (cl[j15] / e - 1) if j15 else np.nan + res["30m_ck"] = side * (cl[j30] / e - 1) if j30 else np.nan + if j30 and j30 + 6 < n and day_arr[j30 + 6] == day_arr[i]: + res["30m_next"] = side * (cl[j30 + 6] / e - 1) + else: + res["30m_next"] = np.nan + de = day_end[day_arr[i]] + res["EOD"] = side * (cl[de] / e - 1) + if side < 0: + w = lo_[i + 1:min(i + 13, de + 1)] + res["MFE60"] = (e / w.min() - 1) if len(w) else np.nan + else: + w = h[i + 1:min(i + 13, de + 1)] + res["MFE60"] = (w.max() / e - 1) if len(w) else np.nan + return res + + +SPLITS = { + "R1_fade": [("30m RSI>65", lambda s: s["30m"][0] > 65), + ("1h %B>0.9", lambda s: s["1h"][1] > 0.9), + ("15m MACD hist<0", lambda s: s["15m"][2] < 0), + ("daily %B>0.8", lambda s: s["daily"][0] > 0.8)], + "R2_long": [("30m RSI<35", lambda s: s["30m"][0] < 35), + ("daily %B<0.3", lambda s: s["daily"][0] < 0.3), + ("1h %B<0.2", lambda s: s["1h"][1] < 0.2), + ("15m MACD hist>0", lambda s: s["15m"][2] > 0)], + "R3_fade": [("30m RSI>60", lambda s: s["30m"][0] > 60), + ("15m MACD hist<0", lambda s: s["15m"][2] < 0), + ("1h %B>0.8", lambda s: s["1h"][1] > 0.8), + ("daily %B>0.8", lambda s: s["daily"][0] > 0.8)], + "R4_cont": [("15m MACD hist<0", lambda s: s["15m"][2] < 0), + ("30m RSI<40", lambda s: s["30m"][0] < 40), + ("1h %B<0.3", lambda s: s["1h"][1] < 0.3), + ("daily %B>0.8", lambda s: s["daily"][0] > 0.8)], +} +SIDE = {"R1_fade": -1, "R2_long": +1, "R3_fade": -1, "R4_cont": -1} + +for rule, idxs in sig_lists.items(): + side = SIDE[rule] + rows = [] + for i in idxs: + oc = outcomes(i, side) + if oc is None: + continue + st = tf_state(ts[i]) + rows.append((i, oc, st)) + print(f"\n=== {rule} ({len(rows)} signals, {'short' if side<0 else 'long'}) ===") + if not rows: + continue + for ck in ["15m_ck", "30m_ck", "30m_next", "EOD", "MFE60"]: + a = np.array([r[1][ck] for r in rows]) + a = a[~np.isnan(a)] + if len(a): + print(f" {ck:<9s} n={len(a):>4d} WR={(a>0).mean():>6.1%} avg={a.mean():>+8.3%}") + print(" --- higher-TF companion splits (outcome=EOD) ---") + eod = np.array([r[1]["EOD"] for r in rows]) + for name, fn in SPLITS[rule]: + mask = np.array([bool(fn(r[2])) if not any(np.isnan(np.atleast_1d(v)).any() + for v in r[2].values()) else False for r in rows]) + at, af = eod[mask], eod[~mask] + at, af = at[~np.isnan(at)], af[~np.isnan(af)] + if len(at) >= 10 and len(af) >= 10: + print(f" {name:<18s} TRUE: n={len(at):>4d} WR={(at>0).mean():>6.1%} avg={at.mean():+.3%}" + f" FALSE: n={len(af):>4d} WR={(af>0).mean():>6.1%} avg={af.mean():+.3%}") + else: + print(f" {name:<18s} n_true={len(at)} (too few for split)") + +# July 1 stamps +print("\n=== July 1 higher-TF stamps at each rule's firing (if fired) ===") +for rule, idxs in sig_lists.items(): + for i in idxs: + if day_arr[i] == pd.Timestamp("2026-07-01").date(): + st = tf_state(ts[i]) + t = pd.Timestamp(ts[i]).strftime("%H:%M") + print(f" {rule} at {t} ET: 15m(rsi={st['15m'][0]:.0f},hist={st['15m'][2]:+.2f}) " + f"30m(rsi={st['30m'][0]:.0f},%B={st['30m'][1]:.2f}) " + f"1h(%B={st['1h'][1]:.2f}) daily(%B={st['daily'][0]:.2f})") diff --git a/research/four_setups_jul1.py b/research/four_setups_jul1.py new file mode 100644 index 000000000..b1a47ec80 --- /dev/null +++ b/research/four_setups_jul1.py @@ -0,0 +1,108 @@ +"""Verify the user's four observed July-1 setups against 5m data (ET times). + +1. ~12:15-12:25 ET: failed break of resistance + Nth touch of RSI-overbought -> reversal +2. ~10:00 ET: 2nd 15m candle closes far above 1st 15m candle's open (opening recovery) +3. ~15:30 ET: EMA9/SMA9/price converge into VWAP from below and fail +4. ~15:50 ET: closes below VWAP + lower BB + MAs cross below VWAP + volume expands +""" +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") +DAY = pd.Timestamp("2026-07-01").date() + + +def wilder_rsi(close, period=14): + d = close.diff() + ag = d.clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + al = (-d).clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + return 100 - 100 / (1 + ag / al) + + +df = pd.read_csv(os.path.join(OUT, "SPY_5m_full.csv")) +df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) +df = df.sort_values("ts").reset_index(drop=True) +rth = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].reset_index(drop=True) +rth["rsi14"] = wilder_rsi(rth["close"]) +rth["ema9"] = rth["close"].ewm(span=9, adjust=False).mean() +rth["sma9"] = rth["close"].rolling(9).mean() +rth["day"] = rth["ts"].dt.date +pv = rth["vwap"] * rth["volume"] +rth["svwap"] = pv.groupby(rth["day"]).cumsum() / rth["volume"].groupby(rth["day"]).cumsum() +mid = rth["close"].rolling(20).mean() +sd = rth["close"].rolling(20).std() +rth["bb_lo"] = mid - 2 * sd +d = rth[rth["day"] == DAY].reset_index(drop=True) + +# prior day high (resistance) +prev = rth[rth["day"] < DAY] +prev_hi = prev[prev["day"] == prev["day"].max()]["high"].max() + +print("--- 1. The top: RSI-touch count and resistance test (12:00-12:30 ET) ---") +print(f"prior-day (Jun 30) high: {prev_hi:.2f}; overhead round number: 750.00") +hi = d["high"].cummax() +touches = [] +in_touch = False +for i, r in d.iterrows(): + if r["rsi14"] >= 68 and not in_touch: + touches.append((r["ts"].strftime("%H:%M"), r["rsi14"], r["high"])) + in_touch = True + elif r["rsi14"] < 64: + in_touch = False +print("RSI14 overbought touches (>=68, reset <64):") +for k, (t, rsi, h) in enumerate(touches, 1): + print(f" touch {k}: {t} ET rsi={rsi:.0f} bar high={h:.2f}") +top_i = d["high"].idxmax() +print(f"day high 749.43 at 12:20-12:25 ET vs prior-day high {prev_hi:.2f} -> " + f"{'FAILED to clear' if d['high'].max() <= prev_hi else 'cleared'} " + f"(shortfall {prev_hi - d['high'].max():+.2f})") + +print("\n--- 2. Opening 15m structure (9:30-10:00 ET) ---") +c1 = d.iloc[0:3] # 9:30-9:45 +c2 = d.iloc[3:6] # 9:45-10:00 +o1, c1c = c1["open"].iloc[0], c1["close"].iloc[-1] +o2, c2c = c2["open"].iloc[0], c2["close"].iloc[-1] +print(f"15m #1 (9:30-45): O {o1:.2f} L {c1['low'].min():.2f} C {c1c:.2f} " + f"({'red' if c1c {'ENGULFED' if c2c > o1 else 'no'}") +vwap_10 = d["svwap"].iloc[5] +print(f"at 10:00 ET: close {c2c:.2f} vs VWAP {vwap_10:.2f} " + f"({'above' if c2c > vwap_10 else 'below'})") + +print("\n--- 3. Convergence failure (~15:30 ET) ---") +for i in range(66, 74): + r = d.iloc[i] + t = r["ts"].strftime("%H:%M") + spread = max(r["ema9"], r["sma9"], r["svwap"]) - min(r["ema9"], r["sma9"], r["svwap"]) + print(f" {t} close={r['close']:.2f} ema9={r['ema9']:.2f} sma9={r['sma9']:.2f} " + f"vwap={r['svwap']:.2f} spread={spread:.2f}" + + (" <- max convergence" if spread < 0.15 else "")) + +print("\n--- 4. Breakdown confirmation (15:40-15:55 ET) ---") +va = d["volume"].rolling(20).mean() +for i in range(74, 78): + r = d.iloc[i] + t = r["ts"].strftime("%H:%M") + marks = [] + if r["close"] < r["svwap"]: marks.append("close dtime(15, 55))] +if len(ext): + print(f"\nafter-hours follow-through: 16:00 close {ext['close'].iloc[0]:.2f} -> " + f"19:55 {ext['close'].iloc[-1]:.2f} (low {ext['low'].min():.2f})") +entry4 = d["close"].iloc[75] # 15:45 close as proxy short entry after 15:40 signal +print(f"R4 short from 15:45 close {entry4:.2f}: to RTH close {d['close'].iloc[-1]:.2f} " + f"({entry4/d['close'].iloc[-1]-1:+.2%}), to AH low {ext['low'].min():.2f} " + f"({entry4/ext['low'].min()-1:+.2%})") diff --git a/research/gauntlet_pass.py b/research/gauntlet_pass.py new file mode 100644 index 000000000..024e4244b --- /dev/null +++ b/research/gauntlet_pass.py @@ -0,0 +1,101 @@ +"""Gauntlet pass: +1. Gap-up continuation (gap>+0.5% -> long open, exit close): QQQ replication + time-split +2. Turn-of-month FIXED (first pass had a slicing bug) +3. Same-day gap-fill probability FIXED (full session, not first 30m) +4. Grade v2 (v1 + Friday +1 + SKEW-rising +0.5) time-split vs v1 +""" +import os + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) + + +def wilson_lo(k, n, z=1.96): + if n == 0: + return 0.0 + p = k / n + den = 1 + z * z / n + ctr = p + z * z / (2 * n) + mg = z * np.sqrt(p * (1 - p) / n + z * z / (4 * n * n)) + return (ctr - mg) / den + + +HALVES = [("2016-2021", "2016-06-01", "2022-01-01"), ("2022-2026", "2022-01-01", "2027-01-01")] + +print("=== 1. GAP-UP CONTINUATION (gap>+0.5%, long open -> close, 0.02%/side) ===") +print(f"{'symbol/half':<18s}{'n':>5s}{'WR':>8s}{'WR_lo95':>9s}{'avg':>9s}") +for sym in ["SPY", "QQQ"]: + d = pd.read_csv(os.path.join(OUT, f"{sym}_daily.csv"), parse_dates=["date"]) + d = d.sort_values("date").reset_index(drop=True) + d["gap"] = d["open"] / d["close"].shift(1) - 1 + d["oc"] = d["close"] * (1 - 0.0002) / (d["open"] * (1 + 0.0002)) - 1 + for label, lo_d, hi_d in HALVES: + g = d[(d["date"] >= lo_d) & (d["date"] < hi_d) & (d["gap"] > 0.005)] + a = g["oc"].values + k = (a > 0).sum() + print(f"{sym+' '+label:<18s}{len(a):>5d}{k/len(a):>8.1%}{wilson_lo(k,len(a)):>9.1%}{a.mean():>+9.3%}") + +print("\n=== 2. TURN-OF-MONTH (fixed) ===") +for sym in ["SPY", "QQQ"]: + d = pd.read_csv(os.path.join(OUT, f"{sym}_daily.csv"), parse_dates=["date"]) + d = d[d["date"] >= "2016-06-01"].sort_values("date").reset_index(drop=True) + d["ret"] = d["close"].pct_change() + d["tom"] = False + for m, g in d.groupby(d["date"].dt.to_period("M")): + pos = g.index.tolist() + for i in pos[:3] + pos[-2:]: + d.loc[i, "tom"] = True + tom, rest = d.loc[d["tom"], "ret"].dropna(), d.loc[~d["tom"], "ret"].dropna() + print(f" {sym}: ToM avg {tom.mean():+.4%}/day (n={len(tom)}, P(up)={(tom>0).mean():.1%}) " + f"vs rest {rest.mean():+.4%}/day (n={len(rest)}, P(up)={(rest>0).mean():.1%})") + +print("\n=== 3. SAME-DAY GAP FILL (fixed: full session) ===") +d = pd.read_csv(os.path.join(OUT, "SPY_daily.csv"), parse_dates=["date"]) +d = d[d["date"] >= "2016-06-01"].sort_values("date").reset_index(drop=True) +d["gap"] = d["open"] / d["close"].shift(1) - 1 +d["pc"] = d["close"].shift(1) +d = d.dropna() +for lo_b, hi_b, lbl in [(-9, -0.005, "gap<-0.5%"), (-0.005, -0.001, "-0.5..-0.1"), + (0.001, 0.005, "+0.1..0.5"), (0.005, 9, "gap>+0.5%")]: + g = d[(d["gap"] >= lo_b) & (d["gap"] < hi_b)] + if lo_b >= 0: + filled = (g["low"] <= g["pc"]).mean() + else: + filled = (g["high"] >= g["pc"]).mean() + print(f" {lbl:<11s} n={len(g):>4d} P(fill same day)={filled:.1%}") + +print("\n=== 4. GRADE v2 vs v1 time-split (IBS trades) ===") +import context_dictionary as cd # noqa: E402 (prints its own table once) +sk = pd.read_csv(os.path.join(OUT, "SKEW_History.csv")) +sk["date"] = pd.to_datetime(sk["DATE"]) +sk["chg5"] = sk["SKEW"] - sk["SKEW"].shift(5) +skmap = dict(zip(sk["date"], sk["chg5"])) + + +def g1(r): + return ((r.volx <= 1.2) + (r.sma20 > r.sma50) + - (r.rsi14 < 35) - bool(r.dn3) - (r.range_x > 1.5)) + + +def g2(r): + sk5 = skmap.get(r.date, 0) + return g1(r) + (r.weekday == 4) + 0.5 * (sk5 > 2 if not np.isnan(sk5) else 0) + + +print(f"{'cell':<26s}{'n':>5s}{'WR':>8s}{'WR_lo95':>9s}{'avg':>9s}") +for sym in ["QQQ", "SPY"]: + tr = pd.read_csv(os.path.join(OUT, f"trades_S4_IBS_{sym}_e20_x70.csv"), parse_dates=["entry_date"]) + df = cd.DFS[sym] + rows = list(df.itertuples(index=False)) + recs = [(rows[cd.IDX[sym][t.entry_date] - 1], t.ret, t.entry_date) + for t in tr.itertuples() if cd.IDX[sym].get(t.entry_date, 0) > 0] + for label, lo_d, hi_d in HALVES: + sel = [ret for r, ret, dte in recs + if pd.Timestamp(lo_d) <= dte < pd.Timestamp(hi_d) and g2(r) >= 2.5] + a = np.array(sel) + if len(a): + k = (a > 0).sum() + print(f"{sym+' v2>=2.5 '+label:<26s}{len(a):>5d}{k/len(a):>8.1%}" + f"{wilson_lo(k, len(a)):>9.1%}{a.mean():>+9.3%}") diff --git a/research/hist_plateau.py b/research/hist_plateau.py new file mode 100644 index 000000000..db64b18e7 --- /dev/null +++ b/research/hist_plateau.py @@ -0,0 +1,113 @@ +"""Does the MACD-histogram plateau ('large bars then flatness') carry info? + +Signal: >=4 consecutive rising positive histogram bars, then the first +non-rising bar (the plateau tick). Mirror for negative/falling (red) runs. +Measured on SPY 5m RTH, 10y: forward 15/30/60min returns, P(up), and +whether a local price top forms within 30min (fade content). +Context split: did the run start from a bounce off a 2h low (like today)? +""" +import math +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + +df = pd.read_csv(os.path.join(OUT, "SPY_5m_full.csv")) +df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) +df = df.sort_values("ts").reset_index(drop=True) +d5 = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].reset_index(drop=True) +c = d5["close"] +e12 = c.ewm(span=12, adjust=False).mean() +e26 = c.ewm(span=26, adjust=False).mean() +macd = e12 - e26 +sig = macd.ewm(span=9, adjust=False).mean() +d5["hist"] = macd - sig +d5["day"] = d5["ts"].dt.date + +H = d5["hist"].values +cl = d5["close"].values +h = d5["high"].values +l = d5["low"].values +day = d5["day"].values +ts = d5["ts"].values +n = len(d5) +WARM = np.datetime64("2016-06-01") + +results = {"green_plateau": [], "red_plateau": []} +for i in range(30, n - 13): + if ts[i] < WARM or day[i + 12] != day[i] or day[i - 6] != day[i]: + continue + # green: 4 rising positive bars then first non-rising + if (H[i] <= H[i - 1] and H[i - 1] > H[i - 2] > H[i - 3] > H[i - 4] + and H[i - 1] > 0 and H[i - 4] > 0): + bounce = l[i - 24:i - 4].min() >= l[i - 4:i].min() if i >= 24 else False + r15 = cl[i + 3] / cl[i] - 1 + r30 = cl[i + 6] / cl[i] - 1 + r60 = cl[i + 12] / cl[i] - 1 + # fade content: does price dip -0.10% before making +0.10%? + dip_first = None + for k in range(i + 1, min(i + 13, n)): + if day[k] != day[i]: + break + if l[k] <= cl[i] * 0.999: + dip_first = True + break + if h[k] >= cl[i] * 1.001: + dip_first = False + break + results["green_plateau"].append((r15, r30, r60, dip_first, bounce)) + # red mirror + if (H[i] >= H[i - 1] and H[i - 1] < H[i - 2] < H[i - 3] < H[i - 4] + and H[i - 1] < 0 and H[i - 4] < 0): + r15 = cl[i + 3] / cl[i] - 1 + r30 = cl[i + 6] / cl[i] - 1 + r60 = cl[i + 12] / cl[i] - 1 + pop_first = None + for k in range(i + 1, min(i + 13, n)): + if day[k] != day[i]: + break + if h[k] >= cl[i] * 1.001: + pop_first = True + break + if l[k] <= cl[i] * 0.999: + pop_first = False + break + results["red_plateau"].append((r15, r30, r60, pop_first, False)) + +for name, rows in results.items(): + if not rows: + continue + r15 = np.array([x[0] for x in rows]) + r30 = np.array([x[1] for x in rows]) + r60 = np.array([x[2] for x in rows]) + first = [x[3] for x in rows if x[3] is not None] + print(f"=== {name}: n={len(rows)} (~{len(rows)/2500:.1f}/day) ===") + print(f" +15m: P(up)={ (r15>0).mean():.1%} avg={r15.mean():+.4%}") + print(f" +30m: P(up)={ (r30>0).mean():.1%} avg={r30.mean():+.4%}") + print(f" +60m: P(up)={ (r60>0).mean():.1%} avg={r60.mean():+.4%}") + if name == "green_plateau": + print(f" P(-0.10% dip before +0.10% pop) within 60m: {np.mean(first):.1%} (n={len(first)})") + b = np.array([x[4] for x in rows]) + r30b, r30nb = r30[b], r30[~b] + if b.sum() >= 30: + print(f" bounce-context (like today): n={b.sum()} +30m avg={r30b.mean():+.4%} " + f"P(up)={(r30b>0).mean():.1%}") + print(f" other context: n={(~b).sum()} +30m avg={r30nb.mean():+.4%} " + f"P(up)={(r30nb>0).mean():.1%}") + else: + print(f" P(+0.10% pop before -0.10% dip) within 60m: {np.mean(first):.1%} (n={len(first)})") + +# baseline +base_mask = (ts >= WARM) +idxs = np.arange(30, n - 13)[::7] +b30 = [] +for i in idxs: + if ts[i] >= WARM and day[i + 6] == day[i]: + b30.append(cl[i + 6] / cl[i] - 1) +b30 = np.array(b30) +print(f"\nbaseline any-bar +30m: P(up)={(b30>0).mean():.1%} avg={b30.mean():+.4%} (n={len(b30)})") diff --git a/research/intraday_variants.py b/research/intraday_variants.py new file mode 100644 index 000000000..d7e521cda --- /dev/null +++ b/research/intraday_variants.py @@ -0,0 +1,111 @@ +"""Task 2: winners (Double Seven, IBS, Five-Day-Low) on QQQ 30m and 1h bars. + +RTH bars only, next-bar-open fills, 0.02%/side slippage, positions may hold +overnight (consistent with the daily versions). 1h bars aggregated from 30m +starting at 09:30 (last bar of day is the 15:30-16:00 half hour). +""" +import math +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +from engine import run_bt, compute_stats + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") +STAT_START = pd.Timestamp("2016-06-01") # warmup: 200 bars = ~15 sessions (30m) + + +def load_30m(): + df = pd.read_csv(os.path.join(OUT, "QQQ_30m_full.csv")) + ts = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df["ts"] = ts + keep = (ts.dt.time >= dtime(9, 30)) & (ts.dt.time <= dtime(15, 30)) + df = df[keep].sort_values("ts").reset_index(drop=True) + return df + + +def agg_1h(df30): + # group: 9:30-10:30, ..., 14:30-15:30, 15:30-16:00 + t = df30["ts"] + minutes = (t.dt.hour * 60 + t.dt.minute) - (9 * 60 + 30) + grp = np.minimum(minutes // 60, 6) + key = t.dt.date.astype(str) + "_" + grp.astype(str) + g = df30.groupby(key, sort=False) + out = pd.DataFrame({ + "ts": g["ts"].first(), "open": g["open"].first(), "high": g["high"].max(), + "low": g["low"].min(), "close": g["close"].last(), "volume": g["volume"].sum(), + }).reset_index(drop=True).sort_values("ts").reset_index(drop=True) + return out + + +def add_ind(df): + c, h, l = df["close"], df["high"], df["low"] + df["date"] = df["ts"].dt.tz_localize(None) # engine uses 'date' + df["sma200"] = c.rolling(200).mean() + rng = h - l + df["ibs"] = np.where(rng > 0, (c - l) / rng, 0.5) + df["lc7"] = c.rolling(7).min() + df["hc7"] = c.rolling(7).max() + df["lc5"] = c.rolling(5).min() + df["prev_close"] = c.shift(1) + return df + + +def nn(*vals): + return all(not (isinstance(v, float) and math.isnan(v)) for v in vals) + + +BARS = {"30m": add_ind(load_30m()), "1h": add_ind(agg_1h(load_30m()))} +BPD = {"30m": 13, "1h": 7} # bars per session + +RUNS = [] +for tf in ["30m", "1h"]: + RUNS.append((f"D7_{tf}", tf, dict( + entry_fn=lambda r: nn(r.sma200, r.lc7) and r.close > r.sma200 and r.close <= r.lc7, + exit_fn=lambda r: r.close >= r.hc7))) + RUNS.append((f"D7_{tf}_nofilter", tf, dict( + entry_fn=lambda r: nn(r.lc7) and r.close <= r.lc7, + exit_fn=lambda r: r.close >= r.hc7))) + for lo, hi in [(0.20, 0.70), (0.25, 0.75), (0.10, 0.80)]: + RUNS.append((f"IBS_{tf}_e{int(lo*100)}_x{int(hi*100)}", tf, dict( + entry_fn=(lambda lo_: lambda r: r.ibs < lo_)(lo), + exit_fn=(lambda hi_: lambda r: r.ibs > hi_)(hi)))) + RUNS.append((f"5BarLow_IBS_{tf}", tf, dict( + entry_fn=lambda r: nn(r.lc5) and r.ibs < 0.25 and r.close <= r.lc5, + exit_fn=lambda r: nn(r.prev_close) and r.close > r.prev_close))) + +print(f"{'run':<22s} {'CAGR':>7s} {'maxDD':>7s} {'Sharpe':>6s} {'WR':>6s} {'PF':>5s} " + f"{'#tr':>6s} {'avgtr':>8s} {'avghold':>8s}") +summary = [] +for run_id, tf, kw in RUNS: + df = BARS[tf] + eq, trades = run_bt(df, stat_start=STAT_START, **kw) + # Sharpe: eq is per-bar; annualize by bars/yr + days = (eq.index[-1] - eq.index[0]).days + total = eq.iloc[-1] / eq.iloc[0] - 1 + cagr = (1 + total) ** (365.25 / days) - 1 + dr = eq.pct_change().dropna() + ann_bars = BPD[tf] * 252 + sharpe = dr.mean() / dr.std() * math.sqrt(ann_bars) if dr.std() > 0 else 0 + peak = eq.cummax() + maxdd = ((eq - peak) / peak).min() + n = len(trades) + if n: + rets = trades["ret"].values + wins, losses = rets[rets > 0], rets[rets <= 0] + wr = len(wins) / n + pf = wins.sum() / abs(losses.sum()) if losses.sum() != 0 else float("inf") + avg = rets.mean() + ah = trades["hold_days"].mean() # in bars + else: + wr = pf = avg = ah = 0 + print(f"{run_id:<22s} {cagr:>7.1%} {maxdd:>7.1%} {sharpe:>6.2f} {wr:>6.1%} {pf:>5.2f} " + f"{n:>6d} {avg:>8.3%} {ah:>6.1f}b") + if n: + trades.to_csv(os.path.join(OUT, f"trades_INTRA_{run_id}.csv"), index=False) + summary.append((run_id, cagr, wr, pf, n)) +print("\navghold in bars; window 2016-06 -> 2026-07; slippage 0.02%/side per trade") diff --git a/research/leveraged_suite.py b/research/leveraged_suite.py new file mode 100644 index 000000000..b7c024d03 --- /dev/null +++ b/research/leveraged_suite.py @@ -0,0 +1,97 @@ +"""Daily strategy suite on TQQQ and SQQQ, clean-table output.""" +import math +import os + +import numpy as np +import pandas as pd + +from engine import load_symbol, run_bt + +OUT = os.path.dirname(os.path.abspath(__file__)) + + +def nn(*vals): + return all(not (isinstance(v, float) and math.isnan(v)) for v in vals) + + +STRATS = [ + ("DoubleSeven", dict( + entry_fn=lambda r: nn(r.sma200, r.lc7) and r.close > r.sma200 and r.close <= r.lc7, + exit_fn=lambda r: r.close >= r.hc7)), + ("D7-NoFilter", dict( + entry_fn=lambda r: nn(r.lc7) and r.close <= r.lc7, + exit_fn=lambda r: r.close >= r.hc7)), + ("IBS<.20/.70", dict( + entry_fn=lambda r: r.ibs < 0.20, + exit_fn=lambda r: r.ibs > 0.70)), + ("5DayLow-A", dict( + entry_fn=lambda r: nn(r.lc5) and r.ibs < 0.25 and r.close <= r.lc5, + exit_fn=lambda r: nn(r.prev_close) and r.close > r.prev_close)), + ("TT-A (Mon)", dict( + entry_fn=lambda r: r.weekday == 0 and r.close < r.open, + exit_fn=None, max_hold=1)), + ("TT-C (Mon)", dict( + entry_fn=lambda r: (r.weekday == 0 and nn(r.prev_close, r.prev2_close) + and r.close < r.prev_close and r.prev_close < r.prev2_close), + exit_fn=lambda r: nn(r.prev_high) and r.close > r.prev_high, max_hold=5)), + ("LowerBand-A", dict( + entry_fn=lambda r: nn(r.lower_band) and r.close < r.lower_band and r.ibs < 0.30, + exit_fn=lambda r: nn(r.prev_high) and r.close > r.prev_high)), +] + + +def dd_stats(eq): + peak = eq.cummax() + dd = eq / peak - 1 + depths, cur, in_ep = [], 0.0, False + for v in dd.values: + if v < 0: + in_ep, cur = True, min(cur, v) + elif in_ep: + depths.append(cur) + cur, in_ep = 0.0, False + if in_ep: + depths.append(cur) + depths = np.array(depths) if depths else np.array([0.0]) + return dd.min(), depths.mean(), np.median(depths) + + +rows = [] +for sym in ["TQQQ", "SQQQ"]: + df = load_symbol(sym) + for name, kw in STRATS: + eq, tr = run_bt(df, **kw) + if not len(tr): + rows.append([name, sym, None] + [np.nan] * 10) + continue + days = (eq.index[-1] - eq.index[0]).days + ann = (eq.iloc[-1] / eq.iloc[0]) ** (365.25 / days) - 1 + rets = tr["ret"].values + wins, losses = rets[rets > 0], rets[rets <= 0] + wr = len(wins) / len(rets) + pf = wins.sum() / abs(losses.sum()) if losses.sum() != 0 else float("inf") + maxdd, avgdd, meddd = dd_stats(eq) + rows.append([name, sym, ann * 100, wr * 100, pf, maxdd * 100, avgdd * 100, + meddd * 100, rets.mean() * 100, np.median(rets) * 100, + tr["hold_days"].mean(), len(rets)]) + # buy & hold + d = df[df["date"] >= "2017-04-01"] + eq = pd.Series(d["close"].values, index=d["date"]) + days = (eq.index[-1] - eq.index[0]).days + ann = (eq.iloc[-1] / eq.iloc[0]) ** (365.25 / days) - 1 + maxdd, avgdd, meddd = dd_stats(eq) + rows.append(["Buy&Hold", sym, ann * 100, np.nan, np.nan, maxdd * 100, avgdd * 100, + meddd * 100, np.nan, np.nan, np.nan, np.nan]) + +hdr = (f"{'Strategy':<12s}{'Sym':<6s}{'Ann%':>7s}{'WR%':>6s}{'PF':>6s}{'MaxDD':>7s}" + f"{'AvgDD':>7s}{'MedDD':>7s}{'AvgTr':>7s}{'MedTr':>7s}{'Hold':>6s}{'#Tr':>5s}") +print(hdr) +print("-" * len(hdr)) +for r in rows: + def f(x, w, dec=1): + return f"{'--':>{w}s}" if x is None or (isinstance(x, float) and np.isnan(x)) else f"{x:>{w}.{dec}f}" + n_str = f"{'--':>5s}" if (r[11] is None or (isinstance(r[11], float) and np.isnan(r[11]))) else f"{int(r[11]):>5d}" + print(f"{r[0]:<12s}{r[1]:<6s}" + f(r[2], 7) + f(r[3], 6) + f(r[4], 6, 2) + f(r[5], 7) + + f(r[6], 7, 2) + f(r[7], 7, 2) + f(r[8], 7, 3) + f(r[9], 7, 3) + f(r[10], 6) + n_str) +print("-" * len(hdr)) +print("Window 2017-04-01 -> 2026-07-01 | daily bars, fill next open, slippage 0.02%/side") diff --git a/research/momentum_backtest.py b/research/momentum_backtest.py new file mode 100644 index 000000000..1e18735a2 --- /dev/null +++ b/research/momentum_backtest.py @@ -0,0 +1,376 @@ +#!/usr/bin/env python3 +"""Momentum first-pullback historical backtest (spec v1). + +Stage 1 (scan): full-market daily-bar sweep for morning-gap candidates. + No-lookahead criteria: open >= 1.10 * prev_close (>=10% gain AT THE OPEN, + which subsumes the gap-up pillar), open $2-$20, 50d avg volume computable. + Full-day volume >= 5x avg50 is used only as a loose pre-gate: the morning + gate below is a strict subset of it, so no candidate that would pass the + honest gate is lost, and it saves thousands of 1-min requests. +Stage 2 (replay): pull 1-min bars per candidate day; require cumulative + volume by 09:45 ET >= 5x avg50 (the real, no-lookahead relvol pillar), + then run the frozen state machine from momentum_paper.replay. +Stage 3 (stats): distribution + initial-condition analysis, cost stress. + +Known infidelities (accepted, reported): +- Float pillar NOT applied: FMP float is current-only; offerings/splits make + it unreliable backwards. All backtest trades are float-unknown. +- Survivorship: universe is today's active assets; delisted pumps missing. +- Stocks that opened flat and squeezed later in the morning are not scanned + (open-gap is the only no-lookahead daily filter available). Conservative. + +Usage: python3 momentum_backtest.py [scan|replay|stats|all] +Caches under SCRATCH; delete a stage's cache file to re-run it. +""" +import json +import os +import sys +import time +from datetime import datetime, timedelta + +import requests + +from momentum_paper import replay, minute_bars, et_hhmm, HDR, DATA + +TRADE_API = "https://paper-api.alpaca.markets" +SCRATCH = os.environ.get( + "MOMO_SCRATCH", + "/tmp/claude-0/-home-user-Kronos/2f0190a1-7250-5bf8-81dd-e6806ae4a3ce/scratchpad/momo_bt", +) +HERE = os.path.dirname(os.path.abspath(__file__)) +SCAN_START = os.environ.get("MOMO_START", "2025-08-11") +SCAN_END = os.environ.get("MOMO_END", "2026-08-08") +# ~4 extra months of runway so the 50-day volume average is warm at SCAN_START +HIST_START = (datetime.strptime(SCAN_START, "%Y-%m-%d") + - timedelta(days=130)).strftime("%Y-%m-%d") +MAX_PER_DAY = 6 +CHUNK = 200 + +os.makedirs(SCRATCH, exist_ok=True) + + +def get_retry(url, **params): + last = None + for k in range(8): + try: + r = requests.get(url, headers=HDR, params=params, timeout=120) + except requests.exceptions.RequestException as e: # timeouts, conn resets + last = e + time.sleep(3 * (k + 1)) + continue + if r.status_code == 429 or r.status_code >= 500: + time.sleep(4 * (k + 1)) + continue + r.raise_for_status() + return r.json() + raise RuntimeError(f"retries exhausted for {url}: {last}") + + +def assets(): + # MOMO_UNIVERSE lets a caller supply an explicit symbol list (e.g. the + # DELISTED universe, for measuring survivorship bias). + override = os.environ.get("MOMO_UNIVERSE") + if override: + syms = json.load(open(override)) + print(f"assets: {len(syms)} symbols from {override}", flush=True) + return syms + path = os.path.join(SCRATCH, "assets.json") + if os.path.exists(path): + return json.load(open(path)) + js = get_retry(f"{TRADE_API}/v2/assets", status="active", asset_class="us_equity") + bad_name = ("warrant", "unit", "right", " etf", " etn", "depositary") + syms = [] + for a in js: + s = a["symbol"] + if not a.get("tradable") or a.get("exchange") == "OTC": + continue + if "." in s or "/" in s: + continue + if len(s) == 5 and s[-1] in "WRU": + continue + name = (a.get("name") or "").lower() + if any(b in name for b in bad_name): + continue + syms.append(s) + json.dump(syms, open(path, "w")) + print(f"assets: {len(syms)} scannable symbols", flush=True) + return syms + + +def scan(): + path = os.path.join(SCRATCH, "candidates.json") + if os.path.exists(path): + return json.load(open(path)) + syms = assets() + nchunks = (len(syms) + CHUNK - 1) // CHUNK + print(f"scanning {len(syms)} symbols {SCAN_START}..{SCAN_END}", flush=True) + # checkpoint so a mid-scan network failure doesn't discard completed chunks + ck_path = os.path.join(SCRATCH, "scan_partial.json") + ck = json.load(open(ck_path)) if os.path.exists(ck_path) else {"done": [], "cands": []} + cands = ck["cands"] + for i in range(0, len(syms), CHUNK): + if i in ck["done"]: + continue + params = dict(symbols=",".join(syms[i:i + CHUNK]), timeframe="1Day", + start=HIST_START, end=SCAN_END, adjustment="all", + feed="sip", limit=10000, sort="asc") + allbars = {} + while True: + j = get_retry(f"{DATA}/v2/stocks/bars", **params) + for s, bs in (j.get("bars") or {}).items(): + allbars.setdefault(s, []).extend(bs) + tok = j.get("next_page_token") + if not tok: + break + params["page_token"] = tok + for s, bs in allbars.items(): + for k in range(1, len(bs)): + d = bs[k]["t"][:10] + if d < SCAN_START: + continue + o, pc = bs[k]["o"], bs[k - 1]["c"] + if not (2.0 <= o <= 20.0) or pc <= 0 or o < pc * 1.10: + continue + hist = [b["v"] for b in bs[max(0, k - 51):k]] + if len(hist) < 30: + continue + avg50 = sum(hist[-50:]) / len(hist[-50:]) + if avg50 <= 0 or bs[k]["v"] < 5 * avg50: + continue # loose pre-gate (morning gate is stricter) + cands.append({"symbol": s, "day": d, + "gap_pct": round((o / pc - 1) * 100, 1), + "open_px": o, "prev_close": pc, + "avg50": round(avg50, 1)}) + ck["done"].append(i) + ck["cands"] = cands + json.dump(ck, open(ck_path, "w")) + print(f" chunk {i // CHUNK + 1}/{nchunks}: {len(cands)} raw candidates", + flush=True) + byday = {} + for c in cands: + byday.setdefault(c["day"], []).append(c) + kept = [] + for d, lst in byday.items(): + lst.sort(key=lambda x: -x["gap_pct"]) + for r, c in enumerate(lst[:MAX_PER_DAY], 1): + c["rank_day"] = r + kept.append(c) + kept.sort(key=lambda x: (x["day"], x["rank_day"])) + json.dump(kept, open(path, "w"), indent=1) + print(f"scan done: {len(cands)} raw, {len(kept)} kept (cap {MAX_PER_DAY}/day, " + f"{len(byday)} days with candidates)", flush=True) + return kept + + +def replays(): + path = os.path.join(SCRATCH, "results.json") + done = json.load(open(path)) if os.path.exists(path) else {"items": []} + seen = {(x["symbol"], x["day"]) for x in done["items"]} + cands = scan() + for n, c in enumerate(cands): + if (c["symbol"], c["day"]) in seen: + continue + try: + bars = minute_bars(c["symbol"], c["day"]) + cum = 0 + for b in bars: + if et_hhmm(b["t"]) < "09:45": + cum += b["v"] + else: + break + det = dict(c) + det["relvol_0945"] = round(cum / c["avg50"], 1) if c["avg50"] else 0.0 + if cum < 5 * c["avg50"]: + item = {"symbol": c["symbol"], "day": c["day"], + "gate_fail": "morning_relvol", "pillars": det} + else: + res = replay(c["symbol"], c["day"], det, bars=bars) + item = res if res is not None else { + "symbol": c["symbol"], "day": c["day"], + "no_pattern": True, "pillars": det} + item["day"] = c["day"] + except Exception as e: # keep going; log the failure + item = {"symbol": c["symbol"], "day": c["day"], "error": str(e)[:200]} + done["items"].append(item) + if (n + 1) % 50 == 0: + json.dump(done, open(path, "w")) + print(f" replay {n + 1}/{len(cands)}", flush=True) + time.sleep(0.1) + json.dump(done, open(path, "w")) + print(f"replay done: {len(done['items'])} items", flush=True) + return done + + +def pctl(xs, q): + xs = sorted(xs) + if not xs: + return float("nan") + i = (len(xs) - 1) * q + lo, hi = int(i), min(int(i) + 1, len(xs) - 1) + return xs[lo] + (xs[hi] - xs[lo]) * (i - lo) + + +def dist_line(name, xs): + if not xs: + return f"{name}: n=0" + mean = sum(xs) / len(xs) + return (f"{name}: n={len(xs)} mean={mean:+.2f} p25={pctl(xs, .25):+.2f} " + f"med={pctl(xs, .5):+.2f} p75={pctl(xs, .75):+.2f} " + f"min={min(xs):+.2f} max={max(xs):+.2f}") + + +def enrich(t): + p = t.get("pillars", {}) + hh, mm = t["entry_time_et"].split(":") + sq, sl = t["squeeze_high"], t["swing_low"] + den = sq - sl + return { + "gap_pct": p.get("gap_pct"), + "relvol_0945": p.get("relvol_0945"), + "open_px": p.get("open_px"), + "entry_min": int(hh) * 60 + int(mm) - 420, # minutes after 07:00 ET + "squeeze_pct": (sq / sl - 1) * 100 if sl else None, + "retrace_pct": (sq - t["stop"]) / den * 100 if den > 0 else None, + "risk_pct": (t["entry_px_raw"] - t["stop"]) / t["entry_px_raw"] * 100, + } + + +def stress_r(t, s): + e = t["entry_px_raw"] * (1 + s) + x = t["exit_px_raw"] * (1 - s) + den = e - t["stop"] * 0.99 + return (x - e) / den if den > 0 else None + + +def stats(): + done = json.load(open(os.path.join(SCRATCH, "results.json"))) + items = done["items"] + trades = [x for x in items if x.get("exit_reason")] + dqs = [x for x in items if x.get("no_trade")] + gate = [x for x in items if x.get("gate_fail")] + nopat = [x for x in items if x.get("no_pattern")] + errs = [x for x in items if x.get("error")] + + L = [] + L.append(f"# Momentum First-Pullback Backtest v1 ({SCAN_START} -> {SCAN_END})") + L.append("") + L.append(f"Universe: active US equities (survivorship-biased), open-gap >=10%, " + f"open $2-20, morning(<=09:45) volume >=5x 50d avg, top {MAX_PER_DAY} " + f"gaps/day. Float pillar NOT applied (no historical float).") + L.append(f"Fills: entry +0.5%, exits -0.5%, stops filled 1% through. " + f"Spec: momentum_spec_v1.md (frozen before this backtest).") + L.append("") + L.append(f"Funnel: {len(items)} candidate-days -> {len(gate)} failed morning " + f"relvol, {len(nopat)} no completed pattern, {len(dqs)} pullback DQ, " + f"{len(errs)} data errors, {len(trades)} TRADES") + dq_counts = {} + for d in dqs: + dq_counts[d["dq_reason"]] = dq_counts.get(d["dq_reason"], 0) + 1 + L.append(f"DQ breakdown: {dq_counts}") + L.append("") + + rs = [t["r_multiple"] for t in trades if t.get("r_multiple") is not None] + rets = [t["ret_pct"] for t in trades] + wins = sum(1 for t in trades if t["ret_pct"] > 0) + L.append("## Distribution (after 0.5%/side slippage)") + L.append(f"Win rate: {wins}/{len(trades)} = " + f"{100 * wins / len(trades):.1f}%" if trades else "no trades") + L.append(dist_line("R-multiple", rs)) + L.append(dist_line("Return % ", rets)) + if rs: + L.append(f"Sum R = {sum(rs):+.1f} over {len(rs)} trades " + f"(expectancy {sum(rs) / len(rs):+.3f} R/trade)") + L.append("") + + L.append("## Exit reasons") + by_reason = {} + for t in trades: + by_reason.setdefault(t["exit_reason"], []).append(t) + for r, ts in sorted(by_reason.items(), key=lambda kv: -len(kv[1])): + xrs = [t["r_multiple"] for t in ts if t.get("r_multiple") is not None] + mr = sum(xrs) / len(xrs) if xrs else float("nan") + mret = sum(t["ret_pct"] for t in ts) / len(ts) + L.append(f" {r:<14} n={len(ts):>4} meanR={mr:+.2f} mean%={mret:+.2f}") + L.append("") + + L.append("## Cost stress (slippage per side)") + for s in (0.0, 0.0025, 0.005, 0.01): + srs = [v for v in (stress_r(t, s) for t in trades) if v is not None] + if srs: + w = sum(1 for v in srs if v > 0) + L.append(f" {s * 100:.2f}%/side: expectancy {sum(srs) / len(srs):+.3f} " + f"R/trade, sum {sum(srs):+.1f}, WR {100 * w / len(srs):.0f}%") + L.append("") + + L.append("## Initial-condition analysis (quartiles of each metric, EXPLORATORY)") + L.append("(multiple comparisons - treat as hypothesis-generating, not conclusions)") + en = [(t, enrich(t)) for t in trades] + for cond in ("gap_pct", "relvol_0945", "open_px", "entry_min", + "squeeze_pct", "retrace_pct", "risk_pct"): + vals = [(e[cond], t) for t, e in en if e.get(cond) is not None] + if len(vals) < 8: + continue + vals.sort(key=lambda v: v[0]) + L.append(f"### {cond}") + qn = len(vals) // 4 + for qi in range(4): + seg = vals[qi * qn:(qi + 1) * qn if qi < 3 else len(vals)] + xs = [v for v, _ in seg] + trs = [t["r_multiple"] for _, t in seg if t.get("r_multiple") is not None] + w = sum(1 for _, t in seg if t["ret_pct"] > 0) + mr = sum(trs) / len(trs) if trs else float("nan") + L.append(f" Q{qi + 1} [{min(xs):.1f}..{max(xs):.1f}]: n={len(seg)} " + f"WR={100 * w / len(seg):.0f}% meanR={mr:+.2f} " + f"medR={pctl(trs, .5):+.2f}") + L.append("") + + L.append("## Time-half split") + mid = (datetime.strptime(SCAN_START, "%Y-%m-%d") + ( + datetime.strptime(SCAN_END, "%Y-%m-%d") + - datetime.strptime(SCAN_START, "%Y-%m-%d")) / 2).strftime("%Y-%m-%d") + for label, sel in (("H1 (2025-08..2026-02)", lambda t: t["day"] < mid), + ("H2 (2026-02..2026-08)", lambda t: t["day"] >= mid)): + ts = [t for t in trades if sel(t)] + trs = [t["r_multiple"] for t in ts if t.get("r_multiple") is not None] + if ts: + w = sum(1 for t in ts if t["ret_pct"] > 0) + L.append(f" {label}: n={len(ts)} WR={100 * w / len(ts):.0f}% " + f"expectancy {sum(trs) / len(trs):+.3f} R/trade") + L.append("") + + L.append("## Concentration check") + by_sym = {} + for t in trades: + if t.get("r_multiple") is not None: + by_sym.setdefault(t["symbol"], []).append(t["r_multiple"]) + sym_sum = sorted(((sum(v), k) for k, v in by_sym.items()), reverse=True) + top5 = sym_sum[:5] + L.append(" Top-5 symbols by summed R: " + + ", ".join(f"{k} {v:+.1f}" for v, k in top5)) + if rs: + excl = {k for _, k in top5} + rest = [t["r_multiple"] for t in trades + if t.get("r_multiple") is not None and t["symbol"] not in excl] + if rest: + L.append(f" Excluding top-5 winners: expectancy " + f"{sum(rest) / len(rest):+.3f} R/trade over {len(rest)} trades") + + out = "\n".join(L) + print(out) + tag = os.environ.get("MOMO_TAG", "v1") + with open(os.path.join(HERE, f"momentum_bt_{tag}_results.md"), "w") as f: + f.write(out + "\n") + + +def main(): + cmd = sys.argv[1] if len(sys.argv) > 1 else "all" + if cmd in ("scan", "all"): + scan() + if cmd in ("replay", "all"): + replays() + if cmd in ("stats", "all"): + stats() + + +if __name__ == "__main__": + main() diff --git a/research/momentum_bt_is_results.md b/research/momentum_bt_is_results.md new file mode 100644 index 000000000..7486d5530 --- /dev/null +++ b/research/momentum_bt_is_results.md @@ -0,0 +1,73 @@ +# Momentum First-Pullback Backtest v1 (2025-08-11 -> 2026-08-08) + +Universe: active US equities (survivorship-biased), open-gap >=10%, open $2-20, morning(<=09:45) volume >=5x 50d avg, top 6 gaps/day. Float pillar NOT applied (no historical float). +Fills: entry +0.5%, exits -0.5%, stops filled 1% through. Spec: momentum_spec_v1.md (frozen before this backtest). + +Funnel: 1352 candidate-days -> 373 failed morning relvol, 50 no completed pattern, 831 pullback DQ, 0 data errors, 98 TRADES +DQ breakdown: {'closed below 9EMA': 34, 'retrace>50%': 536, 'heavy red vol in pullback': 144, 'closed below VWAP': 117} + +## Distribution (after 0.5%/side slippage) +Win rate: 32/98 = 32.7% +R-multiple: n=98 mean=-0.10 p25=-1.07 med=-0.60 p75=+0.20 min=-1.28 max=+9.13 +Return % : n=98 mean=-1.04 p25=-4.84 med=-2.49 p75=+1.18 min=-18.67 max=+28.88 +Sum R = -9.7 over 98 trades (expectancy -0.099 R/trade) + +## Exit reasons + stop n= 38 meanR=-1.11 mean%=-6.07 + topping_tail n= 26 meanR=+0.76 mean%=+3.38 + material_red n= 20 meanR=+0.87 mean%=+4.47 + heavy_red n= 7 meanR=+0.05 mean%=-1.14 + ema_break n= 6 meanR=-0.76 mean%=-6.32 + slowdown n= 1 meanR=-0.49 mean%=-2.70 + +## Cost stress (slippage per side) + 0.00%/side: expectancy +0.170 R/trade, sum +16.7, WR 35% + 0.25%/side: expectancy +0.024 R/trade, sum +2.3, WR 33% + 0.50%/side: expectancy -0.100 R/trade, sum -9.8, WR 33% + 1.00%/side: expectancy -0.297 R/trade, sum -29.1, WR 26% + +## Initial-condition analysis (quartiles of each metric, EXPLORATORY) +(multiple comparisons - treat as hypothesis-generating, not conclusions) +### gap_pct + Q1 [10.2..24.7]: n=24 WR=38% meanR=+0.32 medR=-0.45 + Q2 [25.0..41.5]: n=24 WR=42% meanR=-0.27 medR=-0.47 + Q3 [41.5..87.0]: n=24 WR=25% meanR=-0.15 medR=-0.62 + Q4 [87.9..1200.7]: n=26 WR=27% meanR=-0.28 medR=-0.67 +### relvol_0945 + Q1 [5.3..10.6]: n=24 WR=29% meanR=-0.11 medR=-0.90 + Q2 [11.0..41.0]: n=24 WR=38% meanR=+0.04 medR=-0.55 + Q3 [42.5..211.3]: n=24 WR=29% meanR=-0.06 medR=-0.46 + Q4 [217.5..19053.3]: n=26 WR=35% meanR=-0.25 medR=-0.67 +### open_px + Q1 [2.0..3.6]: n=24 WR=33% meanR=+0.28 medR=-0.88 + Q2 [3.8..6.5]: n=24 WR=29% meanR=-0.34 medR=-0.68 + Q3 [6.5..8.9]: n=24 WR=38% meanR=-0.08 medR=-0.50 + Q4 [8.9..19.4]: n=26 WR=31% meanR=-0.24 medR=-0.45 +### entry_min + Q1 [3.0..11.0]: n=24 WR=25% meanR=-0.57 medR=-1.04 + Q2 [11.0..37.0]: n=24 WR=29% meanR=-0.21 medR=-0.55 + Q3 [38.0..76.0]: n=24 WR=29% meanR=+0.10 medR=-0.60 + Q4 [77.0..162.0]: n=26 WR=46% meanR=+0.25 medR=-0.20 +### squeeze_pct + Q1 [10.1..12.0]: n=24 WR=29% meanR=+0.21 medR=-0.41 + Q2 [12.1..15.9]: n=24 WR=38% meanR=-0.09 medR=-0.65 + Q3 [16.1..26.9]: n=24 WR=33% meanR=-0.12 medR=-0.47 + Q4 [27.1..372.1]: n=26 WR=31% meanR=-0.37 medR=-1.04 +### retrace_pct + Q1 [5.6..22.7]: n=24 WR=38% meanR=-0.23 medR=-0.58 + Q2 [22.9..32.3]: n=24 WR=42% meanR=+0.16 medR=-0.33 + Q3 [32.6..37.5]: n=24 WR=25% meanR=-0.18 medR=-0.73 + Q4 [37.6..50.0]: n=26 WR=27% meanR=-0.15 medR=-0.65 +### risk_pct + Q1 [0.2..2.0]: n=24 WR=38% meanR=+0.38 medR=-0.54 + Q2 [2.1..3.5]: n=24 WR=38% meanR=-0.14 medR=-0.67 + Q3 [3.6..5.7]: n=24 WR=21% meanR=-0.40 medR=-0.53 + Q4 [6.0..18.4]: n=26 WR=35% meanR=-0.23 medR=-0.77 + +## Time-half split + H1 (2025-08..2026-02): n=36 WR=36% expectancy -0.105 R/trade + H2 (2026-02..2026-08): n=62 WR=31% expectancy -0.096 R/trade + +## Concentration check + Top-5 symbols by summed R: EDBL +8.3, GSIT +5.8, IOTR +5.4, ATPC +3.0, PMI +2.5 + Excluding top-5 winners: expectancy -0.377 R/trade over 92 trades diff --git a/research/momentum_bt_oos_results.md b/research/momentum_bt_oos_results.md new file mode 100644 index 000000000..a45a3fb22 --- /dev/null +++ b/research/momentum_bt_oos_results.md @@ -0,0 +1,73 @@ +# Momentum First-Pullback Backtest v1 (2024-08-01 -> 2025-08-01) + +Universe: active US equities (survivorship-biased), open-gap >=10%, open $2-20, morning(<=09:45) volume >=5x 50d avg, top 6 gaps/day. Float pillar NOT applied (no historical float). +Fills: entry +0.5%, exits -0.5%, stops filled 1% through. Spec: momentum_spec_v1.md (frozen before this backtest). + +Funnel: 1213 candidate-days -> 447 failed morning relvol, 27 no completed pattern, 668 pullback DQ, 0 data errors, 71 TRADES +DQ breakdown: {'closed below VWAP': 104, 'retrace>50%': 438, 'heavy red vol in pullback': 102, 'closed below 9EMA': 23, 'trigger outside window': 1} + +## Distribution (after 0.5%/side slippage) +Win rate: 22/71 = 31.0% +R-multiple: n=71 mean=-0.10 p25=-1.05 med=-0.42 p75=+0.11 min=-1.28 max=+5.28 +Return % : n=71 mean=-1.27 p25=-4.28 med=-2.22 p75=+0.69 min=-12.38 max=+28.83 +Sum R = -7.4 over 71 trades (expectancy -0.105 R/trade) + +## Exit reasons + material_red n= 25 meanR=+0.46 mean%=+1.12 + stop n= 23 meanR=-1.12 mean%=-5.82 + topping_tail n= 17 meanR=+0.25 mean%=+1.59 + ema_break n= 3 meanR=-0.70 mean%=-7.38 + heavy_red n= 2 meanR=+2.50 mean%=+6.18 + slowdown n= 1 meanR=-0.39 mean%=-1.42 + +## Cost stress (slippage per side) + 0.00%/side: expectancy +0.211 R/trade, sum +15.0, WR 37% + 0.25%/side: expectancy +0.035 R/trade, sum +2.5, WR 32% + 0.50%/side: expectancy -0.105 R/trade, sum -7.4, WR 31% + 1.00%/side: expectancy -0.320 R/trade, sum -22.7, WR 23% + +## Initial-condition analysis (quartiles of each metric, EXPLORATORY) +(multiple comparisons - treat as hypothesis-generating, not conclusions) +### gap_pct + Q1 [11.0..24.8]: n=17 WR=24% meanR=-0.41 medR=-0.81 + Q2 [25.0..48.9]: n=17 WR=41% meanR=+0.32 medR=-0.42 + Q3 [50.0..85.5]: n=17 WR=35% meanR=-0.07 medR=-0.26 + Q4 [87.2..388.9]: n=20 WR=25% meanR=-0.24 medR=-0.31 +### relvol_0945 + Q1 [5.3..15.1]: n=17 WR=41% meanR=-0.10 medR=-0.67 + Q2 [15.8..53.0]: n=17 WR=29% meanR=-0.09 medR=-0.30 + Q3 [53.7..195.9]: n=17 WR=24% meanR=-0.39 medR=-1.04 + Q4 [196.1..10550.6]: n=20 WR=30% meanR=+0.12 medR=-0.30 +### open_px + Q1 [2.0..4.1]: n=17 WR=35% meanR=-0.28 medR=-0.39 + Q2 [4.2..6.5]: n=17 WR=35% meanR=-0.20 medR=-0.71 + Q3 [6.6..11.4]: n=17 WR=35% meanR=+0.58 medR=-0.16 + Q4 [11.8..19.9]: n=20 WR=20% meanR=-0.46 medR=-0.65 +### entry_min + Q1 [3.0..12.0]: n=17 WR=24% meanR=-0.53 medR=-0.76 + Q2 [15.0..35.0]: n=17 WR=35% meanR=+0.04 medR=-0.25 + Q3 [35.0..67.0]: n=17 WR=24% meanR=-0.11 medR=-0.39 + Q4 [70.0..157.0]: n=20 WR=40% meanR=+0.14 medR=-0.44 +### squeeze_pct + Q1 [10.3..12.5]: n=17 WR=35% meanR=+0.00 medR=-0.77 + Q2 [12.6..18.3]: n=17 WR=24% meanR=-0.33 medR=-0.47 + Q3 [18.7..32.6]: n=17 WR=29% meanR=-0.08 medR=-0.27 + Q4 [35.0..277.5]: n=20 WR=35% meanR=-0.03 medR=-0.26 +### retrace_pct + Q1 [1.6..22.6]: n=17 WR=53% meanR=+0.21 medR=+0.01 + Q2 [25.0..34.5]: n=17 WR=24% meanR=-0.17 medR=-0.32 + Q3 [35.3..40.5]: n=17 WR=24% meanR=-0.29 medR=-1.05 + Q4 [41.7..49.9]: n=20 WR=25% meanR=-0.16 medR=-0.41 +### risk_pct + Q1 [0.1..1.3]: n=17 WR=47% meanR=+0.54 medR=-0.47 + Q2 [1.4..3.4]: n=17 WR=18% meanR=-0.53 medR=-1.10 + Q3 [3.9..5.9]: n=17 WR=35% meanR=-0.01 medR=-0.26 + Q4 [6.1..22.4]: n=20 WR=25% meanR=-0.37 medR=-0.39 + +## Time-half split + H1 (2025-08..2026-02): n=34 WR=26% expectancy +0.016 R/trade + H2 (2026-02..2026-08): n=37 WR=35% expectancy -0.215 R/trade + +## Concentration check + Top-5 symbols by summed R: PRHI +5.3, CING +4.0, UCFI +3.5, LTBR +3.1, TPST +2.7 + Excluding top-5 winners: expectancy -0.392 R/trade over 66 trades diff --git a/research/momentum_bt_v1_results.md b/research/momentum_bt_v1_results.md new file mode 100644 index 000000000..2103355e1 --- /dev/null +++ b/research/momentum_bt_v1_results.md @@ -0,0 +1,73 @@ +# Momentum First-Pullback Backtest v1 (2025-08-11 -> 2026-08-08) + +Universe: active US equities (survivorship-biased), open-gap >=10%, open $2-20, morning(<=09:45) volume >=5x 50d avg, top 6 gaps/day. Float pillar NOT applied (no historical float). +Fills: entry +0.5%, exits -0.5%, stops filled 1% through. Spec: momentum_spec_v1.md (frozen before this backtest). + +Funnel: 1357 candidate-days -> 370 failed morning relvol, 50 no completed pattern, 838 pullback DQ, 0 data errors, 99 TRADES +DQ breakdown: {'closed below 9EMA': 35, 'retrace>50%': 541, 'heavy red vol in pullback': 145, 'closed below VWAP': 117} + +## Distribution (after 0.5%/side slippage) +Win rate: 32/99 = 32.3% +R-multiple: n=99 mean=-0.10 p25=-1.07 med=-0.62 p75=+0.19 min=-1.28 max=+9.13 +Return % : n=99 mean=-1.06 p25=-4.80 med=-2.66 p75=+1.08 min=-18.67 max=+28.88 +Sum R = -10.4 over 99 trades (expectancy -0.105 R/trade) + +## Exit reasons + stop n= 38 meanR=-1.11 mean%=-6.11 + topping_tail n= 25 meanR=+0.82 mean%=+3.71 + material_red n= 21 meanR=+0.80 mean%=+4.10 + heavy_red n= 8 meanR=-0.05 mean%=-1.37 + ema_break n= 6 meanR=-0.76 mean%=-6.32 + slowdown n= 1 meanR=-0.49 mean%=-2.70 + +## Cost stress (slippage per side) + 0.00%/side: expectancy +0.163 R/trade, sum +16.2, WR 34% + 0.25%/side: expectancy +0.017 R/trade, sum +1.7, WR 32% + 0.50%/side: expectancy -0.105 R/trade, sum -10.4, WR 32% + 1.00%/side: expectancy -0.302 R/trade, sum -29.9, WR 25% + +## Initial-condition analysis (quartiles of each metric, EXPLORATORY) +(multiple comparisons - treat as hypothesis-generating, not conclusions) +### gap_pct + Q1 [10.2..24.4]: n=24 WR=33% meanR=+0.17 medR=-0.59 + Q2 [24.7..39.9]: n=24 WR=42% meanR=-0.15 medR=-0.47 + Q3 [41.5..76.3]: n=24 WR=29% meanR=-0.10 medR=-0.53 + Q4 [87.0..1200.7]: n=27 WR=26% meanR=-0.31 medR=-0.67 +### relvol_0945 + Q1 [5.3..11.0]: n=24 WR=29% meanR=-0.11 medR=-0.90 + Q2 [11.5..41.0]: n=24 WR=38% meanR=+0.07 medR=-0.55 + Q3 [42.5..211.3]: n=24 WR=29% meanR=-0.07 medR=-0.46 + Q4 [217.5..19053.3]: n=27 WR=33% meanR=-0.28 medR=-0.68 +### open_px + Q1 [2.0..3.6]: n=24 WR=33% meanR=+0.28 medR=-0.88 + Q2 [3.8..6.4]: n=24 WR=29% meanR=-0.34 medR=-0.68 + Q3 [6.4..8.9]: n=24 WR=33% meanR=-0.12 medR=-0.58 + Q4 [8.9..19.7]: n=27 WR=33% meanR=-0.22 medR=-0.40 +### entry_min + Q1 [3.0..11.0]: n=24 WR=25% meanR=-0.57 medR=-1.04 + Q2 [11.0..37.0]: n=24 WR=29% meanR=-0.21 medR=-0.57 + Q3 [38.0..73.0]: n=24 WR=29% meanR=+0.10 medR=-0.60 + Q4 [75.0..162.0]: n=27 WR=44% meanR=+0.22 medR=-0.30 +### squeeze_pct + Q1 [10.1..12.0]: n=24 WR=29% meanR=+0.23 medR=-0.41 + Q2 [12.0..15.8]: n=24 WR=38% meanR=-0.09 medR=-0.65 + Q3 [15.9..25.9]: n=24 WR=33% meanR=-0.15 medR=-0.49 + Q4 [26.8..372.1]: n=27 WR=30% meanR=-0.37 medR=-1.04 +### retrace_pct + Q1 [5.6..22.7]: n=24 WR=38% meanR=-0.20 medR=-0.58 + Q2 [22.9..32.3]: n=24 WR=42% meanR=+0.16 medR=-0.33 + Q3 [32.6..37.6]: n=24 WR=25% meanR=-0.20 medR=-0.85 + Q4 [37.8..50.0]: n=27 WR=26% meanR=-0.17 medR=-0.68 +### risk_pct + Q1 [0.2..2.1]: n=24 WR=42% meanR=+0.44 medR=-0.37 + Q2 [2.1..3.4]: n=24 WR=29% meanR=-0.46 medR=-0.74 + Q3 [3.5..5.6]: n=24 WR=21% meanR=-0.20 medR=-0.55 + Q4 [5.7..18.4]: n=27 WR=37% meanR=-0.19 medR=-0.66 + +## Time-half split + H1 (2025-08..2026-02): n=38 WR=34% expectancy -0.147 R/trade + H2 (2026-02..2026-08): n=61 WR=31% expectancy -0.078 R/trade + +## Concentration check + Top-5 symbols by summed R: EDBL +8.3, GSIT +5.8, IOTR +5.4, ATPC +3.0, PMI +2.5 + Excluding top-5 winners: expectancy -0.380 R/trade over 93 trades diff --git a/research/momentum_daytrading_notes.md b/research/momentum_daytrading_notes.md new file mode 100644 index 000000000..a9e65bafd --- /dev/null +++ b/research/momentum_daytrading_notes.md @@ -0,0 +1,167 @@ +# Momentum Day Trading Strategy — Structured Notes + +Source: Ross Cameron (Warrior Trading), "Growing a $2k Account to $65,662.04 in 30 Days," ~59 min. +Notes reconstructed from transcript across multiple pulls; gap status noted at the end. + +--- + +## Framing + +- 30-day small-account challenge: $2,000 → ~$65,000, two red days in the period. +- Stated stop date: day 30. Profits donated to charity ($427k raised, 40 children's hospitals). +- Explicit caveat repeated at open and close: results are not typical; practice in a simulator before risking capital. +- Core self-description: "manager of risk and hunter of volatility." He needs movement to make money, so he accepts volatility but caps downside per trade. + +--- + +## Step 1 — Stock Selection (the "five pillars") + +Four pillars measure **demand**; one measures **supply**. A 400–500% single-day move requires an imbalance between the two. + +| # | Pillar | Threshold | Type | +|---|--------|-----------|------| +| 1 | Relative volume | ≥ 5× the 50-day average | Demand | +| 2 | Total volume | Higher is better; ~25M shares cited as strong, not required | Demand | +| 3 | Percentage gain | ≥ 10% on the day; 30%+ preferred | Demand | +| 4 | Price | $2–$20 | Demand | +| 5 | Float | < 20M shares; lower is better | Supply | + +**Supporting filters** + +- **Gap-up:** opening at least 2% above the prior close — usually implies a catalyst. +- **Catalyst:** breaking news is the typical demand driver. He will waive this pillar only if the stock is the obvious #1 leading gainer in the market. +- **Hot sector:** crypto, biotech, AI, Chinese tech. +- **Time window:** 7:00–10:00 a.m. + +**The funnel:** relative volume ≥ 5× alone cuts ~10,000 tradables to ~100; ≥ 20× cuts to roughly 20. Adding float, gain, and price filters narrows to a handful per day. + +**Worked example (YXT):** ~2.87M share float, 44M shares of volume against 500 shares the prior day (~14,000× relative volume), +500% on the day, started around $2–3. No clear catalyst — the one pillar it missed. + +**Float logic — why it matters.** Contrast with Shopify the same day: 1.3B share float, +36% on earnings, but on under 1M shares — less than 1/1000th of the float. Not enough buyers to hold a 36% gain once holders sell, and it faded to +16%. On YXT the entire float could have turned over many times and the stock still held, which caps upside resistance and becomes partly self-fulfilling. + +--- + +## Step 2 — Entry Pattern: the First Pullback + +Let the stock squeeze (it will hit the scanners), then wait for the retrace. **Do not chase.** + +**Four disqualifiers — the pullback should NOT:** + +1. Retrace more than 50% of the initial move +2. Show high volume on red candles (want heavy volume on green, light on red) +3. Break below VWAP +4. Break below the 9 EMA + +**Candle wicks:** +- **Topping tail** (large upper wick) = bearish, sign of rejection. Avoid buying back into an area that already saw heavy selling. +- **Bottoming tail** = bullish. +- Preferred shape: price stalls at the top and dips back without a pronounced upper wick. + +**Entry trigger:** the *crossing candle* — the first candle to make a new high by breaking above the prior candle's high, wick included. That break marks the momentum shift. + +**Stop:** the low of the pullback. This is the whole reason to wait — entering mid-squeeze puts the stop far below, entering after the pullback defines risk tightly. + +**Target:** minimum 2:1 profit-to-loss. + +**Discipline note:** a stock can meet all five pillars and still never offer a valid pattern. No pattern, no trade. + +--- + +## Step 3 — Execution on Level 2 + +- **Half-dollar and whole-dollar psychology:** $7.50 → $8.00 → $8.50 → $9.00. Stocks respect these levels as support and resistance. +- **Timing the crossing candle:** candles close on the minute. He entered at 8:18:59, anticipating the close of the second red candle and a crossing candle around $7.65. + +**The YXT trade, fully specified:** + +| Element | Value | +|---|---| +| Entry | $7.60 | +| Hard stop | $7.45 (15¢) | +| Size | 5,000 shares | +| Risk | $750 | +| Target | $8.00, optimistic $8.50 | +| Potential | ~$2,000–$4,500 | +| Best exit | $10.10, then $9.79, then $9.00 | + +His own framing of the decision: risking $750 to make $2,000–$4,500 is only correct *if you know your accuracy* and can take the next ten setups. A single trade's ratio means nothing in isolation. + +--- + +## Step 4 — Exits + +### Exit indicators (hold until one appears) + +1. **A large sell order sitting on Level 2.** A briefly flashing order isn't enough — spoofing is illegal but happens. It has to sit there and feel real. +2. **Hidden seller / iceberg** — heavy buying but price won't advance, because someone is quietly unloading. +3. **Large burst of red on the tape** — surge of selling, possible false breakout. +4. **Dramatic reversal after a pop** — forms a topping tail and a false breakout. +5. **Buying slowing down**, visible on time and sales. +6. **A topping-tail candle or a red candle.** + +**Do not cap winners.** He will not sell merely because he's up 20¢, even with a 50¢–$1 target. But an indicator gets respected whether he's up 5¢ or $5. + +### Rules for walking away (four) + +1. **Gave back half the day's profit.** Below half, he can no longer see the glass as half full, and emotional compromise follows. +2. **Hit max daily loss** — set roughly equal to average daily gain (~$10k lifetime average, ~$19k over the trailing 30 days, so ~$20k comfort zone). Principle: never lose more than you can make on one good day. +3. **The good window has closed.** His metrics show losses between 10:00 and 11:00 a.m., so 10:00 a.m. is a hard stop regardless of how a setup looks. +4. **No quality stocks.** Some days nothing meets even four of five pillars. He averaged about one no-trade day per week during the challenge. + +**Annie Duke, *Quit*:** the right moment to walk away almost always feels too soon. Waiting until it feels right means waiting too long. + +--- + +## Step 5 — Track and Data-Mine Every Trade + +Habit started in a school class using a paper ledger; carried into his first funded account in 2001. + +**What review surfaces — his own examples:** + +- *Biggest loser (INLF):* entered anticipating a crossing candle, then held far too long past the point he should have sold. Compounding factors — first trade on the ticker after missing several pullbacks, stock extended, 10:30 a.m., FOMO after stepping away and coming back. Called it a rookie mistake. +- *A tolerable loss (YXT):* thesis was clear, setup didn't work, no regret. +- *A bad loss:* chased the entry, should have been in lower. + +**Dimensions he sorts by:** time of day, price, volume, profitability by stock. His finding for the period: entry precision and exit discipline, not stock selection. "Getting a little stubborn in the small account has cost me." + +--- + +## Risk / Accuracy Math + +Break-even win rate = **1 / (1 + R)**, where R is reward per unit risked. + +| Risk : Reward | Break-even accuracy | +|---|---| +| 1 : 1 | 50% | +| 1 : 2 | 33% | +| 1 : 3 | 25% | +| 1 : 4 | 20% | + +Rows 1 and 2 are from the video; rows 3 and 4 are derived (the slide was not recovered). One later summary reported a "2:1 → 67%" row — that is an inverted reading and contradicts his stated recommendation; disregard it. + +--- + +## The Equity-Curve Argument + +Three trader profiles he sketches: + +- **Break-even trader:** steady progress, then one day gives it all back. Repeat. +- **Slow bleeder:** small profits accumulating while the account actually declines. +- **Profitable trader:** same setups, but shallower drawdowns and more spacing between losses. + +The difference between break-even and profitable is not a better strategy — it's walking away sooner on bad days. Profits are a byproduct of process and confidence; trade in a way that builds self-confidence rather than erodes it. + +**On simplicity:** most traders struggle by overcomplicating. Get good at one pattern — the first pullback — before adding the one-minute/five-minute/ten-second variants, ABCD, cup and handle, or inverted head and shoulders. Duke's brother taught her only the highest-probability poker hands; that became her foundation. + +--- + +## Reconstruction Notes + +**Fully recovered:** stock selection and pillars; pullback pattern and disqualifiers; crossing-candle entry; Level 2 execution and the YXT trade parameters; all six exit indicators; all four walk-away rules; the Duke principle; metrics review. + +**Not recovered:** the full profit/loss ratio slide beyond the 1:1 and 1:2 rows. Derivable from the formula above. + +**Corrections applied:** +- YXT starting price transcribed as "$23 a share" — actually "two, three a share," consistent with the $3–4 figure given elsewhere. +- One summary pass reported "two rules for walking away" including a daily profit goal; the transcript gives four, and no profit goal among them. Discarded as reconstruction. +- The "2:1 → 67% accuracy" row is inverted relative to his usage of "2:1"; excluded. diff --git a/research/momentum_exit_system.py b/research/momentum_exit_system.py new file mode 100644 index 000000000..25e5f9dc7 --- /dev/null +++ b/research/momentum_exit_system.py @@ -0,0 +1,163 @@ +#!/usr/bin/env python3 +"""Exit-system search: initial stop x trail activation x trail width. + +Structure per trade (all levels measured off the RAW entry price): + 1. INITIAL STOP at -S% until the trade proves itself. + 2. ACTIVATION at +A% (or the v2 dip-conditioned level): once the high + touches it, the stop converts to a TRAILING stop. + 3. TRAIL of T% below the running high thereafter. Stop only ratchets up. + 4. Time exit at 10:00 ET (or close). + +Selection protocol to limit multiple-comparison damage: + - The grid is scored on the IS window ONLY (2025-08..2026-08), which is + already in-sample for the v2 schedule. + - The chosen config is then reported on OOS (2024-08..2025-08) untouched + by selection, and must hold up there to count. + - Every result is re-run with fill degradation ("thru") because a tight + trail is the most execution-sensitive thing in this whole project. + +Usage: MOMO_OOS=... MOMO_IS=... python3 momentum_exit_system.py +""" +import json +import os + +from momentum_faithful import SCHEDULE, THRESHOLDS, FLAT +from momentum_v2_exits import pctl + +HERE = os.path.dirname(os.path.abspath(__file__)) +S_OOS, S_IS = os.environ["MOMO_OOS"], os.environ["MOMO_IS"] + + +def load(scratch, first_only=False): + it = json.load(open(os.path.join(scratch, "res_faithful.json")))["items"] + return [x for x in it if x.get("n_dq_before", 0) == 0] if first_only else it + + +def simulate(tr, stop_pct, act, trail, slip=0.005, thru=0.0, cut=FLAT): + """stop_pct: initial stop % below entry (None = no stop). + act: activation as % above entry, or 'dip' for the v2 schedule level. + trail: trailing % below running high (None = sell at activation).""" + raw = tr["entry_px_raw"] + fill = raw * (1 + slip) + stop = raw * (1 - stop_pct / 100) if stop_pct is not None else None + armed = False + hi = None + dip, tgt = 0.0, SCHEDULE[0] + + def out(px): + return (px / fill - 1) * 100 + + for b in tr["path"]: + if cut != "close" and b["t"] >= cut: + return out(b["o"] * (1 - slip)) + # stop check first (conservative: adverse before favourable) + if stop is not None and b["l"] <= stop: + return out(stop * (1 - thru) * (1 - slip)) + if not armed: + if act == "dip": + dip = max(dip, (1 - b["l"] / raw) * 100) + for th in THRESHOLDS: + if dip >= th: + tgt = min(tgt, SCHEDULE[th]) + break + lvl = raw * (1 + tgt / 100) + else: + lvl = raw * (1 + act / 100) + if b["h"] >= lvl: + if trail is None: + return out(lvl) # plain target sale + armed = True + hi = b["h"] + stop = max(stop or 0, hi * (1 - trail / 100)) + continue + hi = max(hi, b["h"]) + stop = max(stop, hi * (1 - trail / 100)) + return out(tr["path"][-1]["c"] * (1 - slip)) + + +def stats(rs): + rs = sorted(rs) + w = sum(1 for x in rs if x > 0) + return {"n": len(rs), "wr": 100 * w / len(rs), "mean": sum(rs) / len(rs), + "med": pctl(rs, .5), "p10": pctl(rs, .1), "p25": pctl(rs, .25), + "p75": pctl(rs, .75), "p90": pctl(rs, .9), "max": max(rs), + "min": min(rs)} + + +def main(): + IS, OOS = load(S_IS), load(S_OOS) + STOPS = [None, 20, 15, 12, 10, 8, 6] + ACTS = ["dip", 4, 6, 8, 10, 15] + TRAILS = [None, 2, 3, 5, 8, 12] + THRU = 0.02 # realistic-ish default for the search + + grid = [] + for s in STOPS: + for a in ACTS: + for t in TRAILS: + r_is = [simulate(x, s, a, t, thru=THRU) for x in IS] + st = stats(r_is) + grid.append((st["mean"], s, a, t, st)) + grid.sort(reverse=True, key=lambda g: g[0]) + + L = ["# Exit-system search (initial stop x activation x trail)", "", + f"Scored on IS n={len(IS)}; OOS n={len(OOS)} held out of selection.", + f"Fills: 0.5%/side + {THRU * 100:.0f}% slip through stops. Flat 10:00 ET.", "", + "## Top 15 configurations by IS mean"] + L.append(f" {'stop':>6}{'act':>6}{'trail':>7}{'IS mean':>9}{'IS med':>8}" + f"{'IS WR':>7}{'OOS mean':>10}{'OOS med':>9}{'OOS WR':>8}{'OOSp10':>8}") + for mean, s, a, t, st in grid[:15]: + ro = stats([simulate(x, s, a, t, thru=THRU) for x in OOS]) + L.append(f" {str(s):>6}{str(a):>6}{str(t):>7}{mean:>+9.2f}{st['med']:>+8.1f}" + f"{st['wr']:>6.0f}%{ro['mean']:>+10.2f}{ro['med']:>+9.1f}" + f"{ro['wr']:>7.0f}%{ro['p10']:>+8.1f}") + + # the selected config = best on IS + _, bs, ba, bt, _ = grid[0] + L.append(f"\n## SELECTED ON IS: stop {bs}, activation {ba}, trail {bt}") + L.append(f" {'window':<8}{'n':>5}{'WR':>6}{'mean':>9}{'p10':>8}{'p25':>8}" + f"{'med':>8}{'p75':>8}{'p90':>8}{'max':>9}{'min':>9}") + for lab, ds in (("IS", IS), ("OOS", OOS), ("POOL", IS + OOS)): + st = stats([simulate(x, bs, ba, bt, thru=THRU) for x in ds]) + L.append(f" {lab:<8}{st['n']:>5}{st['wr']:>5.0f}%{st['mean']:>+9.2f}" + f"{st['p10']:>+8.1f}{st['p25']:>+8.1f}{st['med']:>+8.1f}" + f"{st['p75']:>+8.1f}{st['p90']:>+8.1f}{st['max']:>+9.1f}{st['min']:>+9.1f}") + + L.append("\n## Robustness of the selected config") + L.append(f" {'variant':<28}{'IS':>9}{'OOS':>9}{'POOL':>9}") + for lab, kw in (("0.5% slip, 0% thru", dict(slip=.005, thru=0)), + ("0.5% slip, 2% thru", dict(slip=.005, thru=.02)), + ("0.5% slip, 5% thru", dict(slip=.005, thru=.05)), + ("1.0% slip, 2% thru", dict(slip=.01, thru=.02)), + ("1.0% slip, 5% thru", dict(slip=.01, thru=.05)), + ("hold to close, 2% thru", dict(slip=.005, thru=.02, cut="close"))): + vals = [sum(simulate(x, bs, ba, bt, **kw) for x in ds) / len(ds) + for ds in (IS, OOS, IS + OOS)] + L.append(f" {lab:<28}{vals[0]:>+9.2f}{vals[1]:>+9.2f}{vals[2]:>+9.2f}") + + # neighbourhood: is the peak a spike or a plateau? + L.append("\n## Neighbourhood of the selection (POOL mean, 2% thru)") + L.append(" " + "stop/trail".ljust(12) + "".join(f"{str(t):>8}" for t in TRAILS)) + for s in STOPS: + row = [] + for t in TRAILS: + r = [simulate(x, s, ba, t, thru=THRU) for x in IS + OOS] + row.append(sum(r) / len(r)) + L.append(f" {str(s):<12}" + "".join(f"{v:>+8.2f}" for v in row)) + + # first-pullback subset under the selected config + L.append("\n## Selected config on 1st-pullback entries only") + for lab, sc in (("IS", S_IS), ("OOS", S_OOS)): + g = load(sc, first_only=True) + st = stats([simulate(x, bs, ba, bt, thru=THRU) for x in g]) + L.append(f" {lab}: n={st['n']} WR={st['wr']:.0f}% mean={st['mean']:+.2f}% " + f"med={st['med']:+.1f}% p10={st['p10']:+.1f}% max={st['max']:+.1f}%") + + txt = "\n".join(L) + print(txt) + with open(os.path.join(HERE, "momentum_exit_system_results.md"), "w") as f: + f.write(txt + "\n") + + +if __name__ == "__main__": + main() diff --git a/research/momentum_exit_system_results.md b/research/momentum_exit_system_results.md new file mode 100644 index 000000000..9d5e8f7ed --- /dev/null +++ b/research/momentum_exit_system_results.md @@ -0,0 +1,51 @@ +# Exit-system search (initial stop x activation x trail) + +Scored on IS n=189; OOS n=120 held out of selection. +Fills: 0.5%/side + 2% slip through stops. Flat 10:00 ET. + +## Top 15 configurations by IS mean + stop act trail IS mean IS med IS WR OOS mean OOS med OOS WR OOSp10 + None 4 3 +1.21 +0.4 54% +1.25 +1.0 58% -6.6 + None dip 2 +1.16 +3.9 62% +1.20 +4.7 65% -22.8 + None 15 2 +1.14 +9.5 57% -0.07 +8.4 58% -27.3 + None dip 5 +1.09 +2.0 57% +0.27 +1.8 61% -22.8 + None 6 2 +1.09 +2.1 79% +1.51 +3.1 80% -17.0 + None dip 3 +1.07 +3.1 60% +0.76 +3.8 65% -22.8 + None 15 3 +1.04 +8.4 57% -0.42 +7.9 58% -27.3 + None 4 None +0.97 +3.5 87% +0.94 +3.5 87% -6.6 + None 15 12 +0.85 -0.2 48% -2.75 +0.3 53% -27.3 + None 6 3 +0.81 +1.4 76% +0.86 +2.3 77% -17.0 + None dip 8 +0.70 +0.3 52% -0.68 +0.2 52% -22.8 + None 10 2 +0.66 +5.4 63% -0.43 +5.7 65% -26.7 + None dip 12 +0.62 -2.1 40% -2.65 -2.8 42% -22.8 + None 6 None +0.58 +5.5 79% +0.67 +5.5 80% -17.0 + None 4 5 +0.52 -1.1 41% +0.70 -0.4 48% -6.6 + +## SELECTED ON IS: stop None, activation 4, trail 3 + window n WR mean p10 p25 med p75 p90 max min + IS 189 54% +1.21 -4.8 -1.5 +0.4 +3.1 +8.2 +233.8 -36.3 + OOS 120 58% +1.25 -6.6 -1.4 +1.0 +5.0 +8.5 +71.5 -33.0 + POOL 309 56% +1.23 -5.5 -1.4 +0.5 +3.8 +8.4 +233.8 -36.3 + +## Robustness of the selected config + variant IS OOS POOL + 0.5% slip, 0% thru +3.04 +3.07 +3.05 + 0.5% slip, 2% thru +1.21 +1.25 +1.23 + 0.5% slip, 5% thru -1.53 -1.48 -1.51 + 1.0% slip, 2% thru +0.20 +0.24 +0.22 + 1.0% slip, 5% thru -2.51 -2.46 -2.49 + hold to close, 2% thru +0.87 +0.96 +0.90 + +## Neighbourhood of the selection (POOL mean, 2% thru) + stop/trail None 2 3 5 8 12 + None +0.96 +0.91 +1.23 +0.59 -0.18 -1.81 + 20 -0.01 -0.02 +0.32 -0.28 -0.93 -2.47 + 15 -0.39 -0.45 -0.07 -0.58 -1.30 -2.77 + 12 -0.49 -0.75 -0.35 -0.81 -1.44 -2.95 + 10 -0.71 -1.06 -0.64 -1.04 -1.67 -3.07 + 8 -1.15 -1.40 -0.91 -1.27 -1.72 -2.89 + 6 -1.65 -1.72 -1.17 -1.42 -1.85 -2.78 + +## Selected config on 1st-pullback entries only + IS: n=39 WR=56% mean=-1.08% med=+0.6% p10=-5.5% max=+13.5% + OOS: n=29 WR=62% mean=+3.63% med=+2.6% p10=-7.2% max=+71.5% diff --git a/research/momentum_faithful.py b/research/momentum_faithful.py new file mode 100644 index 000000000..59487b156 --- /dev/null +++ b/research/momentum_faithful.py @@ -0,0 +1,296 @@ +#!/usr/bin/env python3 +"""Spec-faithful momentum scan + replay (per momentum_daytrading_notes.md). + +Fixes three restrictions that were MY additions, not the source's: + 1. EVERY pullback is evaluated, not just the day's first. If a pullback is + disqualified we discard it and wait for the next one, which is what the + notes describe ("no pattern, no trade" = wait, not one-strike-out). + 2. Qualification is INTRADAY: a ticker becomes tradable the moment it is + >=+10% vs prior close on >=5x relative volume inside 07:00-10:00 ET, + so stocks that open flat and squeeze on news are included. + 3. No 6-per-day candidate cap. + +No lookahead: the daily-bar prescan only decides which tickers to pull minute +data for (the same population a live scanner would flag). All qualification +and entry logic is re-derived bar-by-bar from the minute data, and no entry +is taken before the bar at which the ticker actually qualifies. + +Exits: spec v2 dip-conditioned take-profit (momentum_spec_v2.md). + +Usage: MOMO_SCRATCH=... MOMO_START=... MOMO_END=... MOMO_TAG=... + python3 momentum_faithful.py [scan|replay|stats|all] +""" +import json +import os +import sys +import time +from datetime import datetime, timedelta + +from momentum_backtest import get_retry, assets, CHUNK, SCRATCH, DATA +from momentum_paper import et_hhmm, et_offset +from momentum_v2_exits import SCHEDULE, THRESHOLDS, pctl + +HERE = os.path.dirname(os.path.abspath(__file__)) +TAG = os.environ.get("MOMO_TAG", "faithful") +SCAN_START = os.environ.get("MOMO_START", "2024-08-01") +SCAN_END = os.environ.get("MOMO_END", "2025-08-01") +HIST_START = (datetime.strptime(SCAN_START, "%Y-%m-%d") + - timedelta(days=130)).strftime("%Y-%m-%d") + +PRICE_MIN, PRICE_MAX = 2.0, 20.0 +MIN_GAIN = 10.0 # % above prior close, measured intraday +MIN_RELVOL = 5.0 # cumulative volume so far vs 50d average +ENTRY_START, ENTRY_END, FLAT = "07:00", "09:45", "10:00" +SQUEEZE_PCT = 0.10 +MAX_RETRACE = 0.50 +SLIP = 0.005 +os.makedirs(SCRATCH, exist_ok=True) + + +def scan(): + """Daily prescan: which tickers touched +10% intraday on heavy volume.""" + path = os.path.join(SCRATCH, "cand_faithful.json") + if os.path.exists(path): + return json.load(open(path)) + syms = assets() + ck_path = os.path.join(SCRATCH, "scanf_partial.json") + ck = json.load(open(ck_path)) if os.path.exists(ck_path) else {"done": [], "c": []} + cands = ck["c"] + n = (len(syms) + CHUNK - 1) // CHUNK + for i in range(0, len(syms), CHUNK): + if i in ck["done"]: + continue + params = dict(symbols=",".join(syms[i:i + CHUNK]), timeframe="1Day", + start=HIST_START, end=SCAN_END, adjustment="all", + feed="sip", limit=10000, sort="asc") + allb = {} + while True: + j = get_retry(f"{DATA}/v2/stocks/bars", **params) + for s, bs in (j.get("bars") or {}).items(): + allb.setdefault(s, []).extend(bs) + tok = j.get("next_page_token") + if not tok: + break + params["page_token"] = tok + for s, bs in allb.items(): + for k in range(1, len(bs)): + d = bs[k]["t"][:10] + if d < SCAN_START: + continue + b, pc = bs[k], bs[k - 1]["c"] + if pc <= 0: + continue + # touched +10% intraday, and traded in the price band + if b["h"] < pc * 1.10: + continue + if not (PRICE_MIN <= b["h"] <= PRICE_MAX * 1.5): + continue + if b["l"] > PRICE_MAX or b["h"] < PRICE_MIN: + continue + hist = [x["v"] for x in bs[max(0, k - 51):k]] + if len(hist) < 30: + continue + avg50 = sum(hist[-50:]) / len(hist[-50:]) + if avg50 <= 0 or b["v"] < MIN_RELVOL * avg50: + continue + cands.append({"symbol": s, "day": d, "prev_close": pc, + "avg50": round(avg50, 1)}) + ck["done"].append(i) + ck["c"] = cands + json.dump(ck, open(ck_path, "w")) + print(f" chunk {i // CHUNK + 1}/{n}: {len(cands)} candidates", flush=True) + json.dump(cands, open(path, "w")) + print(f"scan done: {len(cands)} candidate-days", flush=True) + return cands + + +def minute_bars(sym, day): + off = et_offset(day) + return get_retry( + f"{DATA}/v2/stocks/{sym}/bars", + timeframe="1Min", adjustment="raw", feed="sip", limit=10000, + start=f"{day}T{4 - off:02d}:00:00Z", end=f"{day}T{16 - off:02d}:00:00Z", + ).get("bars") or [] + + +def replay(c, bars): + """Return (trade|None, reason). Evaluates EVERY pullback in the window.""" + prev_close = c["prev_close"] + cum_v = 0 + cum_pv = 0.0 + ema = None + k = 2 / 10 + qualified = False + leg_low = None # low of the current up-leg + leg_high = None # running high of the current up-leg + green_vols = [] + pull = [] # candles in the pullback under evaluation + pull_dead = False # this pullback is disqualified; wait for next leg + n_dq = 0 + for i, b in enumerate(bars): + t = et_hhmm(b["t"]) + cum_pv += (b["h"] + b["l"] + b["c"]) / 3 * b["v"] + cum_v += b["v"] + vwap = cum_pv / cum_v if cum_v else b["c"] + ema = b["c"] if ema is None else b["c"] * k + ema * (1 - k) + if t < ENTRY_START: + continue + if t >= FLAT: + break + # ---- qualification, re-derived live ---- + if not qualified: + if (b["h"] >= prev_close * (1 + MIN_GAIN / 100) + and PRICE_MIN <= b["c"] <= PRICE_MAX + and cum_v >= MIN_RELVOL * c["avg50"]): + qualified = True + leg_low = b["l"] + leg_high = b["h"] + green_vols = [b["v"]] + continue + # ---- track legs and pullbacks ---- + # Crossing candle per the SOURCE definition: the first candle to break + # the PRIOR candle's high, after a pullback of >= 2 completed candles + # (a one-minute hesitation is not a pullback). Checked before the + # new-leg-high branch so a mid-pullback crossing triggers the entry. + if (pull and not pull_dead and len(pull) >= 2 + and b["h"] > pull[-1]["h"] and t <= ENTRY_END): + raw = pull[-1]["h"] + 0.01 + stop = min(x["l"] for x in pull) + if raw > stop: + return {"symbol": c["symbol"], "day": c["day"], + "entry_time_et": t, "entry_px_raw": round(raw, 4), + "stop": round(stop, 4), "n_dq_before": n_dq, + "pullback_candles": len(pull), + "path": [{"t": et_hhmm(x["t"]), "o": x["o"], "h": x["h"], + "l": x["l"], "c": x["c"]} for x in bars[i:]]}, "entry" + if b["h"] > leg_high: + # squeeze continues (or resumes after a <2-candle hesitation or a + # disqualified pullback; n_dq is counted at disqualification time) + leg_high = b["h"] + pull = [] + pull_dead = False + if b["c"] > b["o"]: + green_vols.append(b["v"]) + continue + # candle failed to make a new high -> part of a pullback + if pull_dead: + leg_low = min(leg_low, b["l"]) + continue + pull.append(b) + leg_low = min(leg_low, b["l"]) + den = leg_high - leg_low + low_p = min(x["l"] for x in pull) + mg = sum(green_vols) / len(green_vols) if green_vols else 0 + red = b["c"] < b["o"] + if leg_high < leg_low * (1 + SQUEEZE_PCT) and den <= 0: + pass + if den > 0 and (leg_high - low_p) / den > MAX_RETRACE: + pull_dead, n_dq = True, n_dq + 1 + elif red and mg and b["v"] > 1.25 * mg: + pull_dead, n_dq = True, n_dq + 1 + elif b["c"] < vwap: + pull_dead, n_dq = True, n_dq + 1 + elif b["c"] < ema: + pull_dead, n_dq = True, n_dq + 1 + if pull_dead: + # the failed pullback's low starts the next leg + leg_low = low_p + return None, ("never_qualified" if not qualified else "no_valid_pattern") + + +def v2_exit(tr, slip=SLIP): + raw = tr["entry_px_raw"] + fill = raw * (1 + slip) + dip, tgt, out, xt = 0.0, SCHEDULE[0], None, None + for b in tr["path"]: + if b["t"] >= FLAT: + out, xt = b["o"] * (1 - slip), b["t"] + break + dip = max(dip, (1 - b["l"] / raw) * 100) + for th in THRESHOLDS: + if dip >= th: + tgt = min(tgt, SCHEDULE[th]) + break + target = raw * (1 + tgt / 100) + if b["h"] >= target: + out, xt = target, b["t"] + break + if out is None: + out, xt = tr["path"][-1]["c"] * (1 - slip), tr["path"][-1]["t"] + return (out / fill - 1) * 100, xt + + +def replays(): + path = os.path.join(SCRATCH, os.environ.get("MOMO_RESFILE", "res_faithful.json")) + done = json.load(open(path)) if os.path.exists(path) else {"items": [], "seen": []} + seen = {tuple(x) for x in done["seen"]} + cands = scan() + for n, c in enumerate(cands): + key = (c["symbol"], c["day"]) + if key in seen: + continue + try: + tr, why = replay(c, minute_bars(c["symbol"], c["day"])) + if tr: + done["items"].append(tr) + except Exception as e: + print(f" err {key}: {str(e)[:80]}", flush=True) + seen.add(key) + done["seen"].append(list(key)) + if (n + 1) % 100 == 0: + json.dump(done, open(path, "w")) + print(f" replay {n + 1}/{len(cands)} -> {len(done['items'])} entries", + flush=True) + time.sleep(0.03) + json.dump(done, open(path, "w")) + print(f"replay done: {len(done['items'])} entries", flush=True) + return done + + +def stats(): + done = json.load(open(os.path.join(SCRATCH, "res_faithful.json"))) + trades = done["items"] + days = sorted({t["day"] for t in trades}) + L = [f"# Spec-faithful momentum + v2 exits — {TAG} ({SCAN_START}..{SCAN_END})", "", + f"Entries: {len(trades)} over {len(days)} distinct days " + f"({len(trades) / max(len(days), 1):.1f}/trading day, " + f"~{len(trades) / 52:.1f}/week)", ""] + for slip in (0.005, 0.01): + r = [v2_exit(t, slip)[0] for t in trades] + w = [x for x in r if x > 0] + l = [x for x in r if x <= 0] + L.append(f"## {slip * 100:.1f}%/side") + L.append(f" n={len(r)} WR={100 * len(w) / len(r):.0f}% " + f"mean={sum(r) / len(r):+.2f}% med={pctl(r, .5):+.2f}%") + L.append(f" winners {len(w)} avg +{sum(w) / len(w):.1f}% | " + f"losers {len(l)} avg {sum(l) / len(l):.1f}% | worst {min(r):.1f}%") + L.append("") + r = [v2_exit(t)[0] for t in trades] + by = {} + for t, x in zip(trades, r): + by.setdefault(t["symbol"], []).append(x) + top5 = {k for _, k in sorted(((sum(v), k) for k, v in by.items()), reverse=True)[:5]} + rest = [x for t, x in zip(trades, r) if t["symbol"] not in top5] + L.append(f"ex-top5: n={len(rest)} mean={sum(rest) / len(rest):+.2f}%") + mid = days[len(days) // 2] + for lab, sel in (("H1", lambda t: t["day"] < mid), ("H2", lambda t: t["day"] >= mid)): + seg = [x for t, x in zip(trades, r) if sel(t)] + if seg: + L.append(f"{lab}: n={len(seg)} mean={sum(seg) / len(seg):+.2f}%") + nd = [t.get("n_dq_before", 0) for t in trades] + L.append(f"\nentries taken after >=1 failed pullback: " + f"{sum(1 for x in nd if x > 0)}/{len(nd)}") + out = "\n".join(L) + print(out) + with open(os.path.join(HERE, f"momentum_faithful_{TAG}.md"), "w") as f: + f.write(out + "\n") + + +if __name__ == "__main__": + cmd = sys.argv[1] if len(sys.argv) > 1 else "all" + if cmd in ("scan", "all"): + scan() + if cmd in ("replay", "all"): + replays() + if cmd in ("stats", "all"): + stats() diff --git a/research/momentum_faithful_is.md b/research/momentum_faithful_is.md new file mode 100644 index 000000000..17ddafc22 --- /dev/null +++ b/research/momentum_faithful_is.md @@ -0,0 +1,17 @@ +# Spec-faithful momentum + v2 exits — is (2025-08-11..2026-08-08) + +Entries: 189 over 140 distinct days (1.4/trading day, ~3.6/week) + +## 0.5%/side + n=189 WR=64% mean=+0.44% med=+3.48% + winners 121 avg +9.7% | losers 68 avg -16.0% | worst -45.6% + +## 1.0%/side + n=189 WR=62% mean=-0.24% med=+2.97% + winners 117 avg +9.4% | losers 72 avg -15.9% | worst -46.1% + +ex-top5: n=182 mean=-0.14% +H1: n=87 mean=+0.25% +H2: n=102 mean=+0.60% + +entries taken after >=1 failed pullback: 150/189 diff --git a/research/momentum_faithful_oos.md b/research/momentum_faithful_oos.md new file mode 100644 index 000000000..eb58b330d --- /dev/null +++ b/research/momentum_faithful_oos.md @@ -0,0 +1,17 @@ +# Spec-faithful momentum + v2 exits — oos (2024-08-01..2025-08-01) + +Entries: 120 over 94 distinct days (1.3/trading day, ~2.3/week) + +## 0.5%/side + n=120 WR=68% mean=+0.99% med=+3.48% + winners 81 avg +9.5% | losers 39 avg -16.7% | worst -56.3% + +## 1.0%/side + n=120 WR=64% mean=+0.32% med=+2.97% + winners 77 avg +9.4% | losers 43 avg -16.0% | worst -56.7% + +ex-top5: n=110 mean=-0.18% +H1: n=54 mean=+2.48% +H2: n=66 mean=-0.23% + +entries taken after >=1 failed pullback: 91/120 diff --git a/research/momentum_live.py b/research/momentum_live.py new file mode 100644 index 000000000..dd406e73e --- /dev/null +++ b/research/momentum_live.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python3 +"""Nightly momentum runner — spec v5 (see momentum_spec_v5.md). + +Scans the day's gainers, applies the five pillars with INTRADAY qualification, +replays the morning bar-by-bar for a valid pullback + crossing candle, applies +the v4 selection filter (pullback width >= 8%, price < $8.30) and the v4 exit +(no stop, arm at +2%, trail 0.25 x ATR14, flat 10:00 ET). + +Logs every entry to momentum_v4_log.json, including entries that FAIL the v4 +filter (flagged, excluded from headline stats) so the filter itself keeps +being measured forward. + +Run after the close: ALPACA_API_KEY=... ALPACA_API_SECRET=... \ + python3 momentum_live.py [YYYY-MM-DD] +""" +import json +import os +import sys +from datetime import datetime, timedelta + +from momentum_paper import (movers, daily_bars, load_json, et_hhmm, HDR, DATA, + FLOAT_CACHE_PATH, MAX_FLOAT, PRICE_MIN, PRICE_MAX, + MIN_RELVOL, get) +from momentum_faithful import replay, minute_bars + +HERE = os.path.dirname(os.path.abspath(__file__)) +LOG = os.path.join(HERE, "momentum_v5_log.json") + +ARM_PCT = 2.0 # trail activates at +2% above entry (spec v5) +ATR_K = 0.25 # trail = 0.25 x ATR(14, 1-min) below running high (v5) +MIN_RISK_PCT = 8.0 # v4 selection: pullback width +MAX_PRICE = 8.30 # v4 selection: price ceiling +FLAT = "10:00" +SLIP = 0.005 + + +def v5_exit(tr, slip=SLIP, thru=0.02): + """Returns (ret_pct, exit_time, reason).""" + raw = tr["entry_px_raw"] + fill = raw * (1 + slip) + trs, prevc = [], None + armed, hi, stop = False, None, None + for b in tr["path"]: + if b["t"] >= FLAT: + return (b["o"] * (1 - slip) / fill - 1) * 100, b["t"], "time_1000" + if stop is not None and b["l"] <= stop: + px = stop * (1 - thru) * (1 - slip) + return (px / fill - 1) * 100, b["t"], "atr_trail" + if prevc is not None: + trs.append(max(b["h"] - b["l"], abs(b["h"] - prevc), abs(b["l"] - prevc))) + prevc = b["c"] + if not armed: + if b["h"] >= raw * (1 + ARM_PCT / 100): + armed, hi = True, b["h"] + else: + continue + else: + hi = max(hi, b["h"]) + if len(trs) >= 5: + atr = sum(trs[-14:]) / len(trs[-14:]) + cand = hi - ATR_K * atr + stop = cand if stop is None else max(stop, cand) + last = tr["path"][-1] + return (last["c"] * (1 - slip) / fill - 1) * 100, last["t"], "data_end" + + +def main(): + now = datetime.utcnow() + day = sys.argv[1] if len(sys.argv) > 1 else now.strftime("%Y-%m-%d") + end_s = (now - timedelta(minutes=16)).strftime("%Y-%m-%dT%H:%M:%SZ") + floats = load_json(FLOAT_CACHE_PATH, {}) + log = load_json(LOG, {"spec": "momentum_spec_v5.md", "trades": [], "scans": []}) + if any(s["day"] == day for s in log["scans"]): + print(f"already scanned {day}") + return + + print(f"=== MOMENTUM v5 SCAN {day} ===") + taken, skipped = [], [] + for rank, g in enumerate(movers(25), 1): + sym, px = g["symbol"], g["price"] + if not (PRICE_MIN <= px <= PRICE_MAX): + continue + bars = daily_bars(sym, 60, end_s) + if len(bars) < 31 or bars[-1]["t"][:10] != day: + continue + prev_close = bars[-2]["c"] + avg50 = sum(b["v"] for b in bars[-51:-1]) / len(bars[-51:-1]) + if avg50 <= 0 or bars[-1]["v"] < MIN_RELVOL * avg50: + continue + flt = floats.get(sym) + if flt is not None and flt >= MAX_FLOAT: + continue + try: + tr, why = replay({"symbol": sym, "day": day, "prev_close": prev_close, + "avg50": avg50}, minute_bars(sym, day)) + except Exception as e: + print(f" {sym}: error {str(e)[:60]}") + continue + if not tr: + continue + risk = (tr["entry_px_raw"] - tr["stop"]) / tr["entry_px_raw"] * 100 + ret, xt, reason = v5_exit(tr) + rec = {"symbol": sym, "day": day, "entry_time_et": tr["entry_time_et"], + "entry_px_raw": tr["entry_px_raw"], "pullback_low": tr["stop"], + "risk_pct": round(risk, 2), "n_dq_before": tr.get("n_dq_before", 0), + "float": flt, "gainer_rank": rank, + "exit_time_et": xt, "exit_reason": reason, "ret_pct": round(ret, 2), + "v5_qualified": bool(risk >= MIN_RISK_PCT + and tr["entry_px_raw"] < MAX_PRICE)} + (taken if rec["v5_qualified"] else skipped).append(rec) + log["trades"].append(rec) + tagline = "TAKE " if rec["v5_qualified"] else "skip " + print(f" {tagline}{sym:<6} in {tr['entry_time_et']} @ {tr['entry_px_raw']:.2f} " + f"risk {risk:.1f}% -> out {xt} {reason} {ret:+.2f}%") + + log["scans"].append({"day": day, "taken": len(taken), "skipped": len(skipped)}) + json.dump(log, open(LOG, "w"), indent=1) + + q = [t for t in log["trades"] if t["v5_qualified"]] + if q: + r = [t["ret_pct"] for t in q] + w = sum(1 for x in r if x > 0) + print(f"\nv5 running: {len(q)} trades, {w} wins ({100 * w / len(q):.0f}%), " + f"mean {sum(r) / len(r):+.2f}%/trade") + else: + print("\nv5 running: no qualified trades yet") + + +if __name__ == "__main__": + main() diff --git a/research/momentum_master_table.csv b/research/momentum_master_table.csv new file mode 100644 index 000000000..36d6d0e0d --- /dev/null +++ b/research/momentum_master_table.csv @@ -0,0 +1,310 @@ +window,day,symbol,entry_time_et,entry_min_after_7,entry_px,prev_close,gain_at_entry_pct,avg50_vol,float_shares,pullback_low,pullback_width_pct,n_rejected_pullbacks_before,mfe_by_10_pct,mae_by_10_pct,ret_at_10_pct,mfe_day_pct,mae_day_pct,ret_close_pct,hit_p5,hit_p10,hit_p20,hit_p50,ret_v5exit_pct,v5_exit_reason,first_pullback,price_lt_8_30,pullback_width_ge_8,v5_qualified +OOS_2024_25,2024-08-06,TENX,08:30,90,5.44,2.92,86.3,19446.0,,5.31,2.39,14,2.6,-24.1,-23.0,2.6,-34.9,-30.7,0,0,0,0,-1.05,atr_trail,0,1,0,0 +OOS_2024_25,2024-08-13,CXAI,08:00,60,2.61,1.47,77.6,474349.5,,2.54,2.68,2,13.8,-16.8,8.4,44.1,-16.8,1.9,1,1,1,0,-1.45,atr_trail,0,1,0,0 +OOS_2024_25,2024-08-15,CING,07:59,59,4.35,1.845,135.8,71821.1,,4.13,5.06,2,27.8,-53.1,-1.8,56.3,-53.1,13.1,1,1,1,1,0.38,atr_trail,0,1,0,0 +OOS_2024_25,2024-08-16,RILY,09:45,165,6.76,5.04,34.1,1621532.6,,6.63,1.92,0,0.1,-7.2,-5.5,0.1,-21.7,-13.6,0,0,0,0,-6.43,time_1000,1,1,0,0 +OOS_2024_25,2024-08-27,XWEL,07:28,28,2.07,1.8,15.0,31399.6,,2.05,0.97,2,11.6,-12.6,-7.2,11.6,-12.6,-10.6,1,1,0,0,0.89,atr_trail,0,1,0,0 +OOS_2024_25,2024-08-29,LUCY,08:14,74,4.95,3.31,49.5,561715.2,,4.8,3.03,0,41.4,-2.6,27.9,41.4,-4.0,1.8,1,1,1,0,11.02,atr_trail,1,1,0,0 +OOS_2024_25,2024-08-30,TOVX,08:56,116,6.26,4.7,33.2,174100.0,,6.1,2.56,4,14.2,-7.0,1.4,14.2,-20.9,-5.4,1,1,0,0,0.16,atr_trail,0,1,0,0 +OOS_2024_25,2024-09-04,DVLT,07:35,35,2.3,1.36,69.1,183509.2,,2.22,3.48,2,8.7,-35.7,-11.7,41.3,-35.7,33.9,1,1,1,0,0.38,atr_trail,0,1,0,0 +OOS_2024_25,2024-09-09,SINT,08:09,69,5.16,2.82,83.0,73850.8,,4.78,7.36,2,35.3,-4.2,22.1,35.3,-18.4,-16.5,1,1,1,0,14.5,atr_trail,0,1,0,0 +OOS_2024_25,2024-09-16,ZNTL,09:30,150,5.05,3.24,55.9,860895.1,,4.87,3.56,2,7.7,-10.7,-6.8,7.7,-27.7,-26.5,1,0,0,0,2.74,atr_trail,0,1,0,0 +OOS_2024_25,2024-09-23,BDTX,07:37,37,7.11,4.76,49.4,550043.4,,7,1.55,4,3.4,-37.3,-29.1,3.4,-37.3,-36.6,0,0,0,0,-0.2,atr_trail,0,1,0,0 +OOS_2024_25,2024-09-23,PBK,09:40,160,4.17,3.33,25.2,19365.1,,4.16,0.24,2,7.9,-6.5,-2.2,7.9,-6.5,4.1,1,0,0,0,3.65,atr_trail,0,1,0,0 +OOS_2024_25,2024-09-26,KTTA,07:33,33,6.04,3.845,57.1,21307.5,,5.85,3.15,2,24.2,-29.8,10.2,24.2,-29.8,-4.0,1,1,1,0,4.56,atr_trail,0,1,0,0 +OOS_2024_25,2024-09-30,TTEC,07:59,59,5.65,4.05,39.5,464816.7,,5.61,0.71,2,4.8,-20.2,2.7,5.3,-20.2,4.1,1,0,0,0,-0.22,atr_trail,0,1,0,0 +OOS_2024_25,2024-10-01,SGMT,09:10,130,3.85,2.77,39.0,334483.1,,3.77,2.08,2,3.1,-14.8,-12.2,3.1,-22.3,-19.0,0,0,0,0,-1.39,atr_trail,0,1,0,0 +OOS_2024_25,2024-10-14,TONX,08:52,112,11.26,7.91,42.4,414908.2,,10.8803,3.37,2,43.3,-4.5,11.1,43.3,-4.5,13.4,1,1,1,0,0.33,atr_trail,0,0,0,0 +OOS_2024_25,2024-10-17,NIXX,08:38,98,11.41,2.37,381.4,47554.2,,10.57,7.36,8,4.1,-56.7,-48.5,4.1,-77.1,-76.8,0,0,0,0,-1.59,atr_trail,0,0,0,0 +OOS_2024_25,2024-10-25,UPXI,09:01,121,9.41,3,213.7,173830.1,,8.98,4.57,2,62.8,-8.6,31.8,69.1,-24.2,-12.9,1,1,1,1,16.69,atr_trail,0,0,0,0 +OOS_2024_25,2024-10-30,CNTN,08:22,82,3.99,2.03,96.6,38325.2,,3.6,9.77,2,60.2,-11.3,33.2,60.2,-22.8,-12.8,1,1,1,1,47.14,atr_trail,0,1,1,1 +OOS_2024_25,2024-11-01,NAGE,09:44,164,4.37,3.49,25.2,268755.2,,4.26,2.52,0,19.9,-1.6,17.0,37.1,-1.6,36.4,1,1,1,0,3.41,atr_trail,1,1,0,0 +OOS_2024_25,2024-11-05,CHGA,07:02,2,4.459,2.24,99.1,132481.2,,4.13,7.38,0,21.8,-24.6,-10.5,21.8,-28.0,-19.0,1,1,1,0,6.25,atr_trail,1,1,0,0 +OOS_2024_25,2024-11-11,AWX,09:34,154,3.1,2.6,19.2,3288.2,,3.09,0.32,0,3.9,-2.2,0.0,4.2,-5.5,3.5,0,0,0,0,0.41,atr_trail,1,1,0,0 +OOS_2024_25,2024-11-14,UAVS,08:52,112,3.35,1.61,108.1,3486768.9,,3.23,3.58,2,45.7,-17.6,37.7,45.7,-17.6,8.4,1,1,1,0,0.79,atr_trail,0,1,0,0 +OOS_2024_25,2024-11-15,AREN,07:29,29,2.17,0.57,280.7,183700.6,,2.07,4.61,0,9.7,-33.6,-19.8,9.7,-43.3,-20.7,1,0,0,0,4.76,atr_trail,1,1,0,0 +OOS_2024_25,2024-11-21,SPAI,08:29,89,6.51,3.2,103.4,1200427.3,,6.16,5.38,4,7.5,-29.6,-28.3,7.5,-37.0,-33.0,1,0,0,0,0.5,atr_trail,0,1,0,0 +OOS_2024_25,2024-11-25,RGTI,09:05,125,2.67,1.74,53.4,9918826.0,,2.63,1.5,2,18.0,-11.2,8.2,26.2,-11.2,3.4,1,1,1,0,0.04,atr_trail,0,1,0,0 +OOS_2024_25,2024-11-26,SMTK,07:53,53,9.61,5.43,77.0,87779.8,,9.08,5.52,4,7.4,-41.1,-35.3,7.4,-41.1,-24.6,1,0,0,0,-1.08,atr_trail,0,0,0,0 +OOS_2024_25,2024-11-26,TOYO,08:08,68,5.8,2.9,100.0,29738.4,,5.4617,5.83,2,16.6,-14.7,-3.3,16.6,-23.3,-8.4,1,1,0,0,6.38,atr_trail,0,1,0,0 +OOS_2024_25,2024-11-27,UMAC,09:00,120,8.26,5.36,54.1,140980.9,,7.52,8.96,2,38.6,-6.8,33.2,41.3,-13.0,19.9,1,1,1,0,-1.01,atr_trail,0,1,1,1 +OOS_2024_25,2024-11-29,UMAC,08:55,115,13.919,9.89,40.7,1277358.1,,13.63,2.08,2,9.6,-6.3,0.9,42.9,-8.0,29.2,1,1,1,0,-0.05,atr_trail,0,0,0,0 +OOS_2024_25,2024-12-02,MOB,08:00,60,2.18,1.86,17.2,89238.9,,2.16,0.92,2,22.0,-7.3,0.9,30.7,-7.3,11.0,1,1,1,0,8.79,atr_trail,0,1,0,0 +OOS_2024_25,2024-12-02,SNTI,07:26,26,3.36,2.16,55.6,19730.8,,3.05,9.23,2,231.8,-32.4,225.6,404.2,-32.4,197.6,1,1,1,1,19.42,atr_trail,0,1,1,1 +OOS_2024_25,2024-12-05,RKDA,08:14,74,7.6,2.697,181.8,16390.1,,6.8,10.53,2,23.0,-16.3,-1.0,35.7,-33.6,-28.8,1,1,1,0,2.32,atr_trail,0,1,1,1 +OOS_2024_25,2024-12-05,TARA,08:37,97,6.1,3.54,72.3,202851.6,,5.68,6.89,8,88.5,-2.0,31.3,88.5,-2.5,-1.1,1,1,1,1,14.2,atr_trail,0,1,0,0 +OOS_2024_25,2024-12-06,CHGA,07:34,34,5.8,2.66,118.0,825493.2,,5.6,3.45,6,22.1,-48.7,-13.1,22.1,-48.7,-29.8,1,1,1,0,8.36,atr_trail,0,1,0,0 +OOS_2024_25,2024-12-09,MGX,09:40,160,2.86,1.85,54.6,386447.2,,2.8,2.1,2,10.1,-5.6,-0.0,56.3,-8.7,43.0,1,1,1,1,5.34,atr_trail,0,1,0,0 +OOS_2024_25,2024-12-09,ZEO,07:16,16,3.2,1.35,137.0,90423.0,,3.06,4.38,2,7.8,-30.6,-25.9,7.8,-31.2,-16.6,1,0,0,0,1.17,atr_trail,0,1,0,0 +OOS_2024_25,2024-12-10,CPIX,07:03,3,2.65,0.9786,170.8,226931.4,,2.57,3.02,0,22.6,-27.9,-0.8,22.6,-27.9,-8.3,1,1,1,0,-0.69,atr_trail,1,1,0,0 +OOS_2024_25,2024-12-11,CADL,07:20,20,12.2,4.61,164.6,403164.7,,11.51,5.66,2,19.7,-33.5,0.9,19.7,-49.8,-36.4,1,1,0,0,10.16,atr_trail,0,0,0,0 +OOS_2024_25,2024-12-17,ALP,07:48,48,10.4,3.25,220.0,53075.2,,9.62,7.5,4,8.3,-61.6,-22.1,23.9,-61.6,-12.9,1,1,1,0,4.16,atr_trail,0,0,0,0 +OOS_2024_25,2024-12-18,VNCE,09:36,156,2.094,1.58,32.5,13684.7,,2.02,3.53,0,12.2,-14.0,6.0,41.8,-14.0,28.0,1,1,1,0,6.94,atr_trail,1,1,0,0 +OOS_2024_25,2024-12-19,TPET,08:51,111,2.9,0.8205,253.4,212760.7,,2.58,11.03,0,58.3,-34.5,12.4,58.3,-51.7,-49.0,1,1,1,1,19.88,atr_trail,1,1,1,1 +OOS_2024_25,2024-12-20,HUMA,09:01,121,6.37,3.46,84.1,3122667.4,,6.24,2.04,2,6.3,-20.1,-17.1,6.3,-30.1,-27.8,1,0,0,0,-1.18,atr_trail,0,1,0,0 +OOS_2024_25,2024-12-20,MYSZ,08:13,73,6.51,1.35,382.2,148211.7,,5.81,10.75,6,22.0,-31.2,5.7,22.0,-39.8,-35.5,1,1,1,0,2.64,atr_trail,0,1,1,1 +OOS_2024_25,2024-12-23,OCC,08:43,103,2.6105,2.1,24.3,7972.3,,2.6005,0.38,2,12.2,-6.1,2.8,168.1,-6.1,27.2,1,1,1,1,3.42,atr_trail,0,1,0,0 +OOS_2024_25,2024-12-26,MGIH,09:43,163,5.3,1.53,246.4,23524.9,,5.29,0.19,8,28.9,-9.8,-6.4,28.9,-44.3,-44.3,1,1,1,0,22.25,atr_trail,0,1,0,0 +OOS_2024_25,2024-12-27,AMBO,09:42,162,5.29,2.24,136.2,88026.6,,5.28,0.19,4,4.9,-36.9,-32.7,4.9,-43.3,-39.9,0,0,0,0,0.01,atr_trail,0,1,0,0 +OOS_2024_25,2024-12-30,ORBS,07:22,22,2.96,1.6,85.0,48085.4,,2.7,8.78,2,33.1,-46.3,-20.9,33.1,-46.3,-12.8,1,1,1,0,17.81,atr_trail,0,1,1,1 +OOS_2024_25,2025-01-06,GFAI,08:44,104,2.83,1.93,46.6,1349513.7,,2.77,2.12,2,25.4,-7.4,16.4,37.1,-7.4,5.3,1,1,1,0,1.89,atr_trail,0,1,0,0 +OOS_2024_25,2025-01-07,ARBE,08:34,94,4.6412,4,16.0,3064225.7,,4.58,1.32,2,11.2,-9.5,-6.1,11.2,-22.2,-19.4,1,1,0,0,-1.28,atr_trail,0,1,0,0 +OOS_2024_25,2025-01-07,IMRX,07:28,28,3.6,2.36,52.5,559526.1,,3.49,3.06,4,56.7,-36.1,-19.4,56.7,-36.1,-34.7,1,1,1,1,-0.6,atr_trail,0,1,0,0 +OOS_2024_25,2025-01-13,PHIO,08:21,81,3.66,1.69,116.6,425626.1,,3.36,8.2,6,59.6,-8.2,42.9,167.5,-8.2,76.8,1,1,1,1,5.53,atr_trail,0,1,1,1 +OOS_2024_25,2025-01-14,AIFF,08:33,93,4.11,1.9,116.3,168033.0,,3.82,7.06,6,41.1,-16.8,13.9,41.1,-30.7,-26.3,1,1,1,0,-0.02,atr_trail,0,1,0,0 +OOS_2024_25,2025-01-23,VNCE,08:42,102,4.2001,2.35,78.7,302940.1,,4.04,3.81,4,12.9,-4.8,1.3,32.6,-9.0,-6.4,1,1,1,0,1.92,atr_trail,0,1,0,0 +OOS_2024_25,2025-01-27,FMST,07:44,44,2.24,1.84,21.7,49779.1,,2.22,0.89,4,33.9,-15.2,-3.1,33.9,-20.3,-9.8,1,1,1,0,26.67,atr_trail,0,1,0,0 +OOS_2024_25,2025-02-05,ACB,09:40,160,5.16,3.68,40.2,727363.2,,5.03,2.52,6,7.2,-2.5,1.4,10.3,-2.5,4.5,1,1,0,0,-0.62,atr_trail,0,1,0,0 +OOS_2024_25,2025-02-05,KTTA,07:02,2,4.47,2.08,114.9,47995.7,,4,10.51,0,3.4,-34.7,-27.1,3.4,-40.3,-38.9,0,0,0,0,-1.18,atr_trail,1,1,1,1 +OOS_2024_25,2025-02-14,OSTX,07:54,54,3.47,1.99,74.4,592612.7,,3.33,4.03,0,19.3,-36.8,-32.0,19.3,-38.0,-37.7,1,1,0,0,13.94,atr_trail,1,1,0,0 +OOS_2024_25,2025-02-18,SLDB,07:25,25,7.21,4.03,78.9,612961.2,,6.86,4.85,0,16.9,-44.4,-15.7,16.9,-44.4,-25.9,1,1,0,0,10.91,atr_trail,1,1,0,0 +OOS_2024_25,2025-02-19,SINT,07:26,26,5.69,2.82,101.8,112940.3,,5.34,6.15,4,4.7,-22.3,-17.2,7.4,-25.3,-17.8,1,0,0,0,0.85,atr_trail,0,1,0,0 +OOS_2024_25,2025-02-24,ATCH,07:22,22,5.33,2.35,126.8,136966.8,,5.09,4.5,4,29.3,-50.3,29.1,147.5,-50.3,4.3,1,1,1,1,6.03,atr_trail,0,1,0,0 +OOS_2024_25,2025-02-24,GSUN,09:36,156,3.94,2.65,48.7,20970.9,,3.63,7.87,4,33.2,-22.3,-8.4,33.2,-23.4,-21.3,1,1,1,0,25.7,atr_trail,0,1,0,0 +OOS_2024_25,2025-03-13,CRVO,08:23,83,7.59,6.17,23.0,3322833.0,,7.52,0.92,2,9.5,-10.4,-5.4,9.5,-26.0,-20.3,1,0,0,0,3.88,atr_trail,0,1,0,0 +OOS_2024_25,2025-03-13,MGTX,09:37,157,8.31,6.41,29.6,310760.7,,8.18,1.56,0,1.1,-10.9,-9.1,1.1,-10.9,-3.6,0,0,0,0,-10.05,time_1000,1,0,0,0 +OOS_2024_25,2025-03-19,ATER,09:38,158,3.05,2.11,44.5,90513.6,,2.86,6.23,10,12.1,-7.9,10.5,14.8,-13.1,-10.5,1,1,0,0,-0.38,atr_trail,0,1,0,0 +OOS_2024_25,2025-03-19,LSE,07:24,24,16.25,7.77,109.1,50755.8,,15.58,4.12,2,3.4,-33.2,-16.0,3.4,-33.2,-22.6,0,0,0,0,-0.52,atr_trail,0,0,0,0 +OOS_2024_25,2025-03-28,ALP,07:03,3,13.19,4.71,180.0,113000.6,,12.7,3.71,0,2.4,-29.4,-23.8,2.4,-33.9,-27.1,0,0,0,0,-1.57,atr_trail,1,0,0,0 +OOS_2024_25,2025-03-31,MYSZ,09:36,156,2.59,1.79,44.7,321590.6,,2.42,6.56,2,17.4,-5.8,1.2,17.4,-45.9,-44.8,1,1,0,0,6.82,atr_trail,0,1,0,0 +OOS_2024_25,2025-04-03,VBIO,07:27,27,5.62,3.25,72.9,777912.6,,5.34,4.98,2,3.7,-30.1,-11.7,3.7,-32.7,-12.9,0,0,0,0,-1.29,atr_trail,0,1,0,0 +OOS_2024_25,2025-04-07,DFDV,08:49,109,10.15,0.5714,1676.3,80661.6,,9.75,3.94,2,76.2,-16.3,85.8,377.5,-16.3,264.5,1,1,1,1,2.71,atr_trail,0,0,0,0 +OOS_2024_25,2025-04-07,NWTG,09:38,158,3.26,1.86,75.3,2794152.9,,3.1,4.91,0,1.2,-20.9,-3.1,7.4,-26.1,-15.3,1,0,0,0,-4.02,time_1000,1,1,0,0 +OOS_2024_25,2025-04-09,PHIO,08:56,116,2.2,1.01,117.8,438328.3,,2.12,3.64,2,24.5,-25.5,-4.6,24.5,-39.5,-30.5,1,1,1,0,1.81,atr_trail,0,1,0,0 +OOS_2024_25,2025-04-21,UPXI,08:17,77,5.87,2.295,155.8,86627.0,,5.15,12.27,2,147.9,-4.9,119.4,274.8,-4.9,65.4,1,1,1,1,8.92,atr_trail,0,1,1,1 +OOS_2024_25,2025-04-22,OBIO,07:35,35,4.14,2.84,45.8,57393.9,,3.83,7.49,2,3.1,-33.6,-32.4,3.1,-38.9,-31.6,0,0,0,0,-1.08,atr_trail,0,1,0,0 +OOS_2024_25,2025-04-23,ENSC,08:07,67,3.9663,1.87,112.1,83929.3,,3.51,11.5,0,30.9,-11.3,-10.0,30.9,-17.8,-8.2,1,1,1,0,8.09,atr_trail,1,1,1,1 +OOS_2024_25,2025-04-23,XXI,09:39,159,14.22,10.62,33.9,19142.8,,13.7,3.66,4,5.2,-8.6,-2.4,25.4,-10.6,16.3,1,1,1,0,0.8,atr_trail,0,0,0,0 +OOS_2024_25,2025-04-28,GLMD,08:16,76,3.01,1.57,91.7,1087298.0,,2.84,5.65,4,9.0,-28.2,-26.2,9.0,-46.5,-43.9,1,0,0,0,0.91,atr_trail,0,1,0,0 +OOS_2024_25,2025-05-05,AIFF,08:44,104,4.86,3.27,48.6,822087.5,,4.7199,2.88,2,3.9,-23.7,-20.4,3.9,-31.5,-30.7,0,0,0,0,-0.08,atr_trail,0,1,0,0 +OOS_2024_25,2025-05-05,GPUS,07:19,19,3.76,1.37,174.5,80503.7,,3.31,11.97,0,31.4,-59.8,21.3,141.5,-59.8,110.1,1,1,1,1,2.56,atr_trail,1,1,1,1 +OOS_2024_25,2025-05-06,KTTA,07:28,28,3.25,1.42,128.9,2186347.5,,3.09,4.92,2,8.6,-46.5,-5.2,16.6,-55.4,-53.5,1,1,0,0,3.86,atr_trail,0,1,0,0 +OOS_2024_25,2025-05-09,TASK,09:30,150,16.3599,9.372,74.6,347853.5,,16.31,0.31,2,1.6,-0.5,1.0,4.2,-0.5,3.0,0,0,0,0,0.03,time_1000,0,0,0,0 +OOS_2024_25,2025-05-12,CTMX,08:18,78,2.07,0.9284,123.0,2765557.0,,1.98,4.35,0,31.9,-16.9,-11.1,31.9,-20.3,-1.0,1,1,1,0,25.27,atr_trail,1,1,0,0 +OOS_2024_25,2025-05-14,LUCY,07:54,54,3.16,1.98,59.6,551910.2,,3.04,3.8,2,15.2,-15.8,-12.7,15.2,-25.0,-9.8,1,1,0,0,5.16,atr_trail,0,1,0,0 +OOS_2024_25,2025-05-20,NRXS,08:26,86,6.71,2.27,195.6,30089.1,,5.87,12.52,4,4.5,-29.7,-25.3,4.5,-48.0,-43.1,0,0,0,0,0.43,atr_trail,0,1,1,1 +OOS_2024_25,2025-05-28,SPRO,07:23,23,2.55,0.682,273.9,137990.5,,2.45,3.92,4,14.9,-43.9,-22.9,14.9,-43.9,-6.7,1,1,0,0,10.19,atr_trail,0,1,0,0 +OOS_2024_25,2025-05-29,ALZN,08:12,72,5.51,3.32,66.0,155344.4,,5.05,8.35,2,64.1,-4.7,25.6,64.1,-5.4,-1.6,1,1,1,1,15.08,atr_trail,0,1,1,1 +OOS_2024_25,2025-05-29,ZEO,07:09,9,3.69,1.58,133.5,484232.5,,3.36,8.94,2,5.4,-28.7,-26.6,5.4,-28.7,-3.8,1,0,0,0,1.19,atr_trail,0,1,1,1 +OOS_2024_25,2025-05-30,GITS,08:55,115,3.09,0.95,225.3,65305.8,,2.62,15.21,0,25.6,-27.2,-22.0,25.6,-38.5,-24.6,1,1,1,0,18.58,atr_trail,1,1,1,1 +OOS_2024_25,2025-05-30,RRGB,09:35,155,5.45,3.13,74.1,285068.4,,5.1629,5.27,4,4.8,-14.9,-8.6,4.8,-14.9,-5.9,0,0,0,0,0.53,atr_trail,0,1,0,0 +OOS_2024_25,2025-06-12,SOAR,08:22,82,3.78,1.908,98.1,532020.7,,3.45,8.73,2,12.2,-20.1,-15.6,12.2,-45.8,-43.7,1,1,0,0,7.39,atr_trail,0,1,1,1 +OOS_2024_25,2025-06-16,DWSN,07:03,3,6.34,1.37,362.8,6020.0,,5.5,13.25,0,143.7,-48.1,-36.5,143.7,-62.0,-55.2,1,1,1,1,125.58,atr_trail,1,1,1,1 +OOS_2024_25,2025-06-16,LSE,08:10,70,10.9653,5.1,115.0,14069.5,,9.6503,11.99,4,10.5,-43.9,-36.2,10.5,-43.9,-40.2,1,1,0,0,3.03,atr_trail,0,0,1,0 +OOS_2024_25,2025-06-18,DFSC,09:41,161,11.16,5.76,93.8,276749.1,,11.15,0.09,0,37.7,0.4,18.1,37.7,-17.5,-0.5,1,1,1,0,17.82,atr_trail,1,0,0,0 +OOS_2024_25,2025-06-24,INM,07:45,45,4.44,2.45,81.2,1667123.7,,4.31,2.93,2,23.9,-36.9,1.6,23.9,-36.9,-14.6,1,1,1,0,9.33,atr_trail,0,1,0,0 +OOS_2024_25,2025-06-24,XBIO,08:17,77,3.32,2.74,21.2,12209.4,,3.25,2.11,4,3.0,-14.8,-9.6,3.0,-20.2,-3.6,0,0,0,0,-1.34,atr_trail,0,1,0,0 +OOS_2024_25,2025-06-25,GCTK,09:03,123,11.29,6.21,81.8,89378.7,,10.52,6.82,2,40.8,-14.3,-10.1,40.8,-31.2,-30.7,1,1,1,0,0.46,atr_trail,0,0,0,0 +OOS_2024_25,2025-06-25,SRFM,09:43,163,5.05,3.6,40.3,1994485.1,,5.04,0.2,2,10.3,-9.1,-4.6,10.3,-53.9,-49.5,1,1,0,0,5.7,atr_trail,0,1,0,0 +OOS_2024_25,2025-06-27,BBLG,07:12,12,10.98,4.16,163.9,46599.0,,10,8.93,4,6.7,-62.3,-55.8,6.7,-62.3,-58.3,1,0,0,0,1.93,atr_trail,0,0,1,0 +OOS_2024_25,2025-06-27,LCFY,08:54,114,5.04,2.55,97.6,22171.3,,4.15,17.66,2,177.4,-8.5,124.0,177.4,-8.5,62.7,1,1,1,1,27.48,atr_trail,0,1,1,1 +OOS_2024_25,2025-07-01,CLRO,07:02,2,15.36,5.75,167.1,30024.7,,14.5,5.6,0,25.5,-46.3,-20.1,25.5,-46.3,-33.9,1,1,1,0,18.82,atr_trail,1,0,0,0 +OOS_2024_25,2025-07-02,ORIO,08:40,100,2.79,1.21,130.6,2959722.0,,2.64,5.38,4,43.4,-8.2,5.7,43.4,-16.8,-9.0,1,1,1,0,22.55,atr_trail,0,1,0,0 +OOS_2024_25,2025-07-07,LGPS,08:38,98,2.44,0.7801,212.8,225475.1,,2.18,10.66,0,23.4,-38.5,-30.7,23.4,-48.4,-30.3,1,1,1,0,16.43,atr_trail,1,1,1,1 +OOS_2024_25,2025-07-07,MBIO,09:17,137,3.68,1.19,209.2,1145871.5,,3.35,8.97,4,74.5,-9.2,46.5,90.2,-12.2,-7.9,1,1,1,1,7.52,atr_trail,0,1,1,1 +OOS_2024_25,2025-07-08,NDRA,07:51,51,10.08,3.4566,191.6,191027.0,,9.49,5.85,6,18.7,-49.0,-7.9,18.7,-49.0,-19.0,1,1,0,0,5.71,atr_trail,0,0,0,0 +OOS_2024_25,2025-07-08,UCFI,09:08,128,15.01,5.97,151.4,34208.3,,13.059,13.0,0,31.2,-39.4,-39.0,31.2,-49.2,-33.2,1,1,1,0,24.8,atr_trail,1,0,1,0 +OOS_2024_25,2025-07-09,GAME,09:36,156,2.29,1.54,48.7,1027948.9,,2.16,5.68,0,25.3,-5.7,-3.7,25.3,-22.7,-3.5,1,1,1,0,12.38,atr_trail,1,1,0,0 +OOS_2024_25,2025-07-11,GAUZ,07:28,28,9.51,5.95,59.8,49522.6,,8.76,7.89,6,6.7,-34.1,-29.4,6.7,-34.1,-32.5,1,0,0,0,1.78,atr_trail,0,0,0,0 +OOS_2024_25,2025-07-14,DARE,08:20,80,9.47,2.515,276.5,193893.7,,7.13,24.71,0,9.8,-33.6,-28.9,9.8,-68.1,-67.1,1,0,0,0,0.64,atr_trail,1,0,1,0 +OOS_2024_25,2025-07-16,DTST,07:19,19,4.65,3.38,37.6,78307.6,,4.58,1.51,2,7.5,-9.5,-6.7,17.0,-9.5,14.0,1,1,0,0,3.82,atr_trail,0,1,0,0 +OOS_2024_25,2025-07-16,GAME,09:44,164,2.3952,1.51,58.6,3774932.4,,2.31,3.56,4,3.1,-12.3,-7.0,17.7,-12.3,-2.7,1,1,0,0,-0.42,atr_trail,0,1,0,0 +OOS_2024_25,2025-07-18,UAVS,09:25,145,2.06,1.47,40.1,3792605.9,,1.98,3.88,2,13.1,-5.3,6.8,15.0,-15.0,1.5,1,1,0,0,0.27,atr_trail,0,1,0,0 +OOS_2024_25,2025-07-21,HSDT,07:32,32,17.39,8.9,95.4,186309.7,,16.5,5.12,2,10.5,-34.5,-29.3,10.5,-47.0,-45.1,1,1,0,0,3.53,atr_trail,0,0,0,0 +OOS_2024_25,2025-07-23,GPRO,08:45,105,2.56,1.37,86.9,4637759.8,,2.5,2.34,4,5.5,-25.0,-21.9,5.5,-43.0,-39.8,1,0,0,0,1.57,atr_trail,0,1,0,0 +OOS_2024_25,2025-07-23,KOSS,08:49,109,6.58,5.71,15.2,91635.3,,6.5,1.22,0,30.5,-12.5,7.6,30.5,-12.5,-2.0,1,1,1,0,-1.38,atr_trail,1,1,0,0 +OOS_2024_25,2025-07-24,LIDR,08:10,70,2.81,1.13,148.7,1169708.5,,2.63,6.41,0,70.8,-7.1,27.0,70.8,-7.1,6.4,1,1,1,1,3.59,atr_trail,1,1,0,0 +OOS_2024_25,2025-07-24,VLN,09:44,164,3.25,2.9,12.1,398622.7,,3.2,1.54,2,0.0,-3.7,-2.7,0.0,-8.3,-4.0,0,0,0,0,-3.68,time_1000,0,1,0,0 +OOS_2024_25,2025-07-25,PHIO,07:56,56,3.47,2.51,38.2,405005.9,,3.31,4.61,2,19.6,-27.9,-4.9,19.6,-27.9,-22.2,1,1,0,0,12.38,atr_trail,0,1,0,0 +OOS_2024_25,2025-07-28,CRVO,07:49,49,15.01,8.98,67.1,158819.5,,14.56,3.0,0,11.3,-34.2,-22.4,11.3,-42.8,-42.2,1,1,0,0,0.69,atr_trail,1,0,0,0 +OOS_2024_25,2025-07-30,BGLC,09:15,135,8.91,4.46,99.8,1326486.8,,8.56,3.93,6,6.2,-23.1,-21.7,6.2,-33.8,-20.3,1,0,0,0,2.16,atr_trail,0,0,0,0 +OOS_2024_25,2025-07-30,REPL,07:23,23,6.14,3.75,63.7,5168054.7,,6.1,0.65,4,15.1,-32.4,2.4,31.4,-32.4,23.0,1,1,1,0,0.23,atr_trail,0,1,0,0 +IS_2025_26,2025-08-14,BMRA,08:53,113,4.9,3.03,61.7,56985.7,,4.76,2.86,4,6.9,-27.6,-21.8,6.9,-30.4,-29.0,1,0,0,0,0.55,atr_trail,0,1,0,0 +IS_2025_26,2025-08-15,VBIO,08:49,109,4.79,3.5,36.9,92650.1,,4.55,5.01,2,24.8,-18.6,-16.1,24.8,-26.7,-23.2,1,1,1,0,16.25,atr_trail,0,1,0,0 +IS_2025_26,2025-08-18,GDRX,09:45,165,4.86,3.73,30.3,1645514.7,,4.7099,3.09,0,4.9,-2.3,1.7,11.3,-4.5,5.1,1,1,0,0,1.04,atr_trail,1,1,0,0 +IS_2025_26,2025-08-19,LASE,07:24,24,5.1,2.46,107.3,461189.4,,4.95,2.94,6,4.7,-24.7,-15.5,4.7,-24.7,-21.8,0,0,0,0,0.92,atr_trail,0,1,0,0 +IS_2025_26,2025-08-21,CATO,09:44,164,3.41,2.84,20.1,38209.2,,3.3782,0.93,2,7.9,-1.5,5.4,17.3,-1.8,11.7,1,1,0,0,2.25,atr_trail,0,1,0,0 +IS_2025_26,2025-08-22,LIMN,07:04,4,4.22,2.78,51.8,697891.5,,4.13,2.13,0,3.6,-29.4,-18.5,3.6,-29.4,-19.4,0,0,0,0,-0.61,atr_trail,1,1,0,0 +IS_2025_26,2025-08-26,ALLR,09:05,125,2.05,0.9413,117.8,430425.3,,2.01,1.95,0,11.2,-7.3,-1.9,14.6,-32.2,-29.8,1,1,0,0,0.44,atr_trail,1,1,0,0 +IS_2025_26,2025-08-27,FLNT,08:44,104,3.07,2.2,39.5,114834.4,,2.96,3.58,2,2.3,-22.8,-13.4,2.3,-28.3,-22.8,0,0,0,0,-1.82,atr_trail,0,1,0,0 +IS_2025_26,2025-08-28,CWD,07:44,44,2.97,1.7,74.7,1952742.6,,2.83,4.71,2,16.8,-42.8,-2.0,58.9,-42.8,43.1,1,1,1,1,-0.23,atr_trail,0,1,0,0 +IS_2025_26,2025-08-29,IPDN,09:44,164,3.55,1.93,83.9,1999639.1,,3.44,3.1,2,10.7,-18.0,6.6,205.4,-18.0,88.7,1,1,1,1,-0.71,atr_trail,0,1,0,0 +IS_2025_26,2025-09-02,UUU,07:35,35,5.55,2.613,112.4,43943.3,,5.24,5.59,4,22.3,-27.7,-4.5,27.9,-27.7,6.8,1,1,1,0,0.42,atr_trail,0,1,0,0 +IS_2025_26,2025-09-03,AIHS,07:47,47,3.89,2.4,62.1,35120.5,,3.69,5.14,0,83.5,-37.3,75.1,112.3,-37.3,-1.0,1,1,1,1,8.91,atr_trail,1,1,0,0 +IS_2025_26,2025-09-03,BTBD,09:11,131,4.26,1.85,130.3,2680384.3,,4.14,2.82,4,5.6,-18.3,-14.3,5.6,-34.3,-29.8,1,0,0,0,-1.69,atr_trail,0,1,0,0 +IS_2025_26,2025-09-03,SINT,07:18,18,6.15,4.57,34.6,137775.6,,5.96,3.09,0,16.7,-25.2,-5.0,16.7,-25.2,-14.0,1,1,0,0,10.43,atr_trail,1,1,0,0 +IS_2025_26,2025-09-04,BBLG,07:21,21,2.98,2.07,44.0,618586.2,,2.86,4.03,2,26.2,-29.2,24.8,38.6,-29.2,-4.7,1,1,1,0,1.27,atr_trail,0,1,0,0 +IS_2025_26,2025-09-04,CIGL,08:17,77,2.99,1.47,103.4,348441.1,,2.79,6.69,2,58.5,-15.4,1.3,58.5,-15.4,-3.3,1,1,1,1,4.08,atr_trail,0,1,0,0 +IS_2025_26,2025-09-10,GLE,07:42,42,3.82,0.7503,409.1,1006175.8,,3.24,15.18,2,23.6,-58.4,-55.8,23.6,-74.1,-72.5,1,1,1,0,5.74,atr_trail,0,1,1,1 +IS_2025_26,2025-09-12,GCTK,07:12,12,13.71,4.87,181.5,682240.5,,12.65,7.73,4,5.7,-61.3,-33.9,5.7,-61.3,-21.8,1,0,0,0,0.79,atr_trail,0,0,0,0 +IS_2025_26,2025-09-15,AZIO,07:04,4,8.68,4.08,112.7,120749.8,,7.72,11.06,0,5.9,-59.2,-59.7,5.9,-70.5,-68.3,1,0,0,0,0.67,atr_trail,1,0,1,0 +IS_2025_26,2025-09-15,FEED,08:05,65,12.15,6.49,87.2,101111.8,,10.82,10.95,0,26.7,-27.1,8.1,43.2,-27.1,-11.9,1,1,1,0,1.96,atr_trail,1,0,1,0 +IS_2025_26,2025-09-19,AGMH,07:09,9,6.87,2.23,208.1,662756.6,,6.48,5.68,2,26.2,-34.9,8.1,163.5,-34.9,45.6,1,1,1,1,5.36,atr_trail,0,1,0,0 +IS_2025_26,2025-09-23,DMRA,07:18,18,6.2,3,106.7,117115.0,,5.87,5.32,2,12.7,-50.2,-35.6,12.7,-50.2,-32.9,1,1,0,0,0.38,atr_trail,0,1,0,0 +IS_2025_26,2025-09-24,CLPT,09:39,159,18.01,12.16,48.1,353920.3,,17.2576,4.18,4,4.8,-2.6,1.5,16.3,-3.4,8.8,1,1,0,0,-0.6,atr_trail,0,0,0,0 +IS_2025_26,2025-10-06,CRML,09:41,161,13.14,7.98,64.7,5257781.5,,12.88,1.98,2,7.8,-3.8,0.8,26.9,-30.4,-12.1,1,1,1,0,1.18,atr_trail,0,0,0,0 +IS_2025_26,2025-10-08,UPC,07:06,6,13.27,5.17,156.7,133326.8,,11.86,10.63,0,16.0,-50.4,-40.2,16.0,-50.4,-29.3,1,1,0,0,-1.56,atr_trail,1,0,1,0 +IS_2025_26,2025-10-10,GWH,07:36,36,3.95,1.72,129.7,442839.0,,3.8,3.8,10,24.1,-47.1,-10.1,34.9,-47.1,6.1,1,1,1,0,-1.15,atr_trail,0,1,0,0 +IS_2025_26,2025-10-13,CHNR,07:38,38,10.71,4.9771,115.2,158013.3,,9.88,7.75,6,7.4,-47.5,-36.6,7.4,-47.5,-35.9,1,0,0,0,2.13,atr_trail,0,0,0,0 +IS_2025_26,2025-10-13,STI,07:21,21,13.45,5.49,145.0,2003904.8,,12.74,5.28,4,0.4,-50.6,-28.4,105.9,-50.6,47.2,1,1,1,1,-29.11,time_1000,0,0,0,0 +IS_2025_26,2025-10-15,COOT,07:19,19,4.74,0.965,391.2,2133171.7,,4.56,3.8,8,7.4,-39.5,-16.7,7.4,-46.8,-43.7,1,0,0,0,-0.37,atr_trail,0,1,0,0 +IS_2025_26,2025-10-15,OMER,08:49,109,8.9,4.1,117.1,950301.4,,8.6299,3.03,0,50.0,-2.1,15.8,50.0,-2.1,16.3,1,1,1,1,6.32,atr_trail,1,0,0,0 +IS_2025_26,2025-10-16,WHWK,08:55,115,4.22,2.1,101.0,118537.1,,3.93,6.87,4,7.6,-34.6,-30.3,7.6,-41.9,-39.4,1,0,0,0,3.22,atr_trail,0,1,0,0 +IS_2025_26,2025-10-17,ARTV,07:11,11,6.37,2.77,130.0,520017.2,,6.13,3.77,2,10.8,-24.0,-12.4,15.5,-24.0,-6.0,1,1,0,0,6.8,atr_trail,0,1,0,0 +IS_2025_26,2025-10-20,GSIT,09:24,144,7.75,5.08,52.6,241751.0,,7.42,4.26,0,73.3,-5.3,73.5,134.2,-5.3,67.7,1,1,1,1,1.54,atr_trail,1,1,0,0 +IS_2025_26,2025-10-20,REPL,08:10,70,9.01,4.5,100.2,3664918.1,,8.83,2.0,4,10.0,-7.3,0.2,14.2,-7.3,-0.6,1,1,0,0,-1.54,atr_trail,0,0,0,0 +IS_2025_26,2025-10-21,BOF,07:11,11,3.05,2.095,45.6,80958.0,,2.94,3.61,2,10.5,-30.5,-7.5,10.5,-30.5,-8.9,1,1,0,0,0.85,atr_trail,0,1,0,0 +IS_2025_26,2025-10-22,FLWS,09:06,126,8.06,5.15,56.5,523358.4,,7.88,2.23,2,10.2,-30.9,-30.8,10.2,-47.8,-45.7,1,1,0,0,4.45,atr_trail,0,1,0,0 +IS_2025_26,2025-10-23,IMCC,09:21,141,3.13,1.86,68.3,71105.9,,2.91,7.03,4,7.0,-47.9,-45.0,7.0,-51.1,-47.6,1,0,0,0,2.2,atr_trail,0,1,0,0 +IS_2025_26,2025-10-27,RECT,08:17,77,8.29,3.48,138.2,13938.2,,7.36,11.22,2,21.1,-53.4,-49.7,21.1,-66.0,-58.5,1,1,1,0,15.21,atr_trail,0,1,1,1 +IS_2025_26,2025-10-30,CVU,09:22,142,3.88,2.36,64.4,51980.5,,3.74,3.61,2,19.8,-11.6,-3.1,19.8,-34.3,-27.8,1,1,0,0,2.25,atr_trail,0,1,0,0 +IS_2025_26,2025-11-03,PHIO,08:41,101,4.37,2.05,113.2,116556.0,,3.96,9.38,10,8.7,-24.7,-22.1,8.7,-60.6,-57.4,1,0,0,0,4.07,atr_trail,0,1,1,1 +IS_2025_26,2025-11-03,XNDU,08:41,101,13.68,11.1556,22.6,132567.4,,13.6,0.58,6,2.3,-4.6,-3.5,2.3,-11.0,-8.6,0,0,0,0,-0.92,atr_trail,0,0,0,0 +IS_2025_26,2025-11-06,STGW,07:32,32,8.32,4.81,73.0,1099607.5,,8.06,3.12,0,6.9,-35.1,-20.7,6.9,-35.1,-32.2,1,0,0,0,2.3,atr_trail,1,0,0,0 +IS_2025_26,2025-11-10,DMRA,09:15,135,20.65,4.95,317.2,3177948.3,,19.34,6.34,2,21.4,-9.8,13.9,25.3,-27.1,-20.6,1,1,1,0,5.85,atr_trail,0,0,0,0 +IS_2025_26,2025-11-10,MOVE,08:41,101,11.98,3.513,241.0,373705.0,,10.28,14.19,0,57.7,-19.3,11.9,77.2,-19.3,-3.2,1,1,1,1,8.42,atr_trail,1,0,1,0 +IS_2025_26,2025-11-13,MGRX,07:28,28,2.66,1.76,51.1,246211.0,,2.55,4.14,4,8.3,-28.9,-25.2,8.3,-63.2,-56.0,1,0,0,0,-2.14,atr_trail,0,1,0,0 +IS_2025_26,2025-11-20,AUID,08:29,89,2.46,1.62,51.9,128335.4,,2.37,3.66,2,3.7,-22.4,-13.0,3.7,-33.3,-30.5,0,0,0,0,-0.65,atr_trail,0,1,0,0 +IS_2025_26,2025-12-01,QTTB,07:23,23,3.99,2.19,82.2,263012.3,,3.8,4.76,2,59.6,-41.9,45.0,59.6,-41.9,-2.8,1,1,1,1,2.13,atr_trail,0,1,0,0 +IS_2025_26,2025-12-02,PLRZ,08:00,60,5.18,3.16,63.9,58259.4,,4.62,10.81,0,61.4,-32.8,53.5,61.4,-32.8,38.8,1,1,1,1,11.94,atr_trail,1,1,1,1 +IS_2025_26,2025-12-05,FRNM,09:05,125,12.01,10.7,12.2,3939.8,,11.95,0.5,2,5.7,-1.7,4.6,8.2,-2.1,1.6,1,0,0,0,-0.04,atr_trail,0,0,0,0 +IS_2025_26,2025-12-09,SNTI,07:23,23,3.47,2.39,45.2,189917.4,,3.22,7.2,2,15.3,-32.6,-24.6,15.3,-56.3,-55.6,1,1,0,0,5.26,atr_trail,0,1,0,0 +IS_2025_26,2025-12-10,BBGI,09:15,135,7.04,4.05,73.8,23770.2,,6.51,7.53,2,38.9,-19.5,22.9,274.6,-19.5,160.7,1,1,1,1,0.79,atr_trail,0,1,0,0 +IS_2025_26,2025-12-10,NXDR,09:38,158,2.62,2.01,30.3,2057830.1,,2.56,2.29,2,14.1,-3.8,-2.7,14.1,-15.6,-1.1,1,1,0,0,9.43,atr_trail,0,1,0,0 +IS_2025_26,2025-12-11,BGDE,08:28,88,10.31,6.7,53.9,527395.0,,9.82,4.75,2,6.7,-24.0,-3.8,53.2,-43.0,-40.8,1,1,1,1,2.13,atr_trail,0,0,0,0 +IS_2025_26,2025-12-11,PETS,08:51,111,2.44,1.77,37.9,157372.6,,2.33,4.51,4,29.9,-6.2,24.6,66.0,-6.2,20.9,1,1,1,1,-1.74,atr_trail,0,1,0,0 +IS_2025_26,2025-12-16,AMCI,09:39,159,13.72,7.27,88.7,2527795.6,,13.71,0.07,8,5.7,-14.7,-3.6,14.8,-19.5,2.4,1,1,0,0,1.35,atr_trail,0,0,0,0 +IS_2025_26,2025-12-18,LONA,09:39,159,7.8599,4.135,90.1,23690.5,,7.55,3.94,4,6.4,-9.0,-7.5,6.4,-16.8,-14.6,1,0,0,0,2.38,atr_trail,0,1,0,0 +IS_2025_26,2025-12-19,RDAC,07:44,44,13.91,10.39,33.9,20900.6,,13.53,2.73,2,24.4,-15.0,-8.4,24.4,-35.3,-24.5,1,1,1,0,-0.66,atr_trail,0,0,0,0 +IS_2025_26,2025-12-23,BBLG,08:09,69,2.55,1.87,36.4,35715.2,,2.4,5.88,2,2.0,-27.8,-18.0,2.0,-27.8,-23.9,0,0,0,0,-18.85,time_1000,0,1,0,0 +IS_2025_26,2025-12-24,ELOG,08:52,112,2.65,1.42,86.6,17857.3,,2.5,5.66,2,20.8,-26.8,-23.7,20.8,-52.8,-32.1,1,1,1,0,2.0,atr_trail,0,1,0,0 +IS_2025_26,2025-12-24,SOBR,09:34,154,2.31,1.3,77.7,63670.3,,2.21,4.33,0,22.5,-6.9,12.2,27.7,-16.0,-13.9,1,1,1,0,7.44,atr_trail,1,1,0,0 +IS_2025_26,2025-12-29,BNAI,09:34,154,2.17,1.2,80.8,1137080.9,,2.12,2.3,0,14.7,-8.8,-5.3,34.1,-14.3,18.9,1,1,1,0,5.12,atr_trail,1,1,0,0 +IS_2025_26,2025-12-31,ANGH,07:28,28,4.13,2.32,78.0,48627.2,,4.02,2.66,6,6.3,-19.6,-8.4,6.3,-19.6,-7.0,1,0,0,0,1.87,atr_trail,0,1,0,0 +IS_2025_26,2025-12-31,INBS,09:10,130,5.09,4.1,24.1,40455.1,,4.95,2.75,4,62.7,-2.6,57.8,154.2,-2.6,95.7,1,1,1,1,-1.35,atr_trail,0,1,0,0 +IS_2025_26,2026-01-02,IRWD,09:37,157,5.0,3.37,48.4,2681381.1,,4.85,3.0,4,15.6,-0.8,0.8,15.6,-16.0,-15.0,1,1,0,0,11.19,atr_trail,0,1,0,0 +IS_2025_26,2026-01-05,MNTS,09:25,145,9.91,5.74,72.6,522866.6,,9.59,3.23,2,18.1,-6.1,-0.3,18.1,-27.9,-11.2,1,1,0,0,6.42,atr_trail,0,0,0,0 +IS_2025_26,2026-01-06,ALMS,08:36,96,16.46,8.31,98.1,1101956.2,,15.92,3.28,6,35.8,-0.7,14.6,35.8,-7.2,0.5,1,1,1,0,4.4,atr_trail,0,0,0,0 +IS_2025_26,2026-01-08,ACON,07:39,39,8.65,5.75,50.4,59654.4,,8.49,1.85,4,9.1,-29.8,0.6,9.1,-29.8,-6.1,1,0,0,0,4.18,atr_trail,0,0,0,0 +IS_2025_26,2026-01-08,FLYX,08:20,80,5.5,3.14,75.2,21013.3,,5.23,4.91,0,61.5,-4.5,29.5,61.5,-4.5,28.7,1,1,1,1,12.95,atr_trail,1,1,0,0 +IS_2025_26,2026-01-12,OM,09:07,127,6.47,4.56,41.9,602488.4,,6.26,3.25,2,6.5,-19.3,-15.8,6.5,-19.3,-14.4,1,0,0,0,2.38,atr_trail,0,1,0,0 +IS_2025_26,2026-01-13,WATT,09:33,153,7.61,5.53,37.6,71563.1,,7.25,4.73,4,7.8,-32.7,-30.1,7.8,-36.9,-31.8,1,0,0,0,3.11,atr_trail,0,1,0,0 +IS_2025_26,2026-01-15,SPHL,07:11,11,4.19,2.25,86.2,107370.9,,3.85,8.11,2,196.2,-31.2,65.9,499.3,-31.2,344.6,1,1,1,1,9.3,atr_trail,0,1,1,1 +IS_2025_26,2026-01-20,CRVS,09:01,121,13.36,8.05,66.0,1413894.2,,13.0201,2.54,2,24.3,-5.0,15.6,65.9,-5.0,58.2,1,1,1,1,4.35,atr_trail,0,0,0,0 +IS_2025_26,2026-01-20,TWG,07:10,10,8.15,3.48,134.2,814016.8,,7.33,10.06,2,38.8,-50.4,-11.6,38.8,-50.4,-32.4,1,1,1,0,7.95,atr_trail,0,1,1,1 +IS_2025_26,2026-01-21,PAVM,09:06,126,16.19,6.19,161.6,22367.8,,15.65,3.34,4,51.3,-1.3,23.7,75.7,-28.5,-26.7,1,1,1,1,17.2,atr_trail,0,0,0,0 +IS_2025_26,2026-01-21,SLGB,07:20,20,3.8,1.23,208.9,226809.0,,3.4,10.53,4,18.9,-56.6,-20.5,18.9,-56.6,-48.9,1,1,0,0,4.8,atr_trail,0,1,1,1 +IS_2025_26,2026-01-22,SXTP,07:13,13,2.98,2,49.0,83581.3,,2.83,5.03,2,189.3,-31.9,148.7,189.3,-31.9,69.5,1,1,1,1,18.79,atr_trail,0,1,0,0 +IS_2025_26,2026-01-23,BGL,07:13,13,5.59,4.26,31.2,812008.2,,5.4,3.4,2,17.9,-15.9,-7.0,17.9,-33.1,-26.1,1,1,0,0,1.27,atr_trail,0,1,0,0 +IS_2025_26,2026-01-23,MOVE,09:33,153,22.7198,5.133,342.6,1623426.2,,21.25,6.47,8,5.2,-19.8,-16.4,5.2,-33.9,-25.1,1,0,0,0,-0.66,atr_trail,0,0,0,0 +IS_2025_26,2026-01-26,GXAI,07:59,59,2.41,1.12,115.2,181876.9,,2.25,6.64,2,10.0,-53.9,-31.1,10.0,-53.9,-37.8,1,0,0,0,0.87,atr_trail,0,1,0,0 +IS_2025_26,2026-01-27,CYN,07:32,32,3.18,2.08,52.9,364101.5,,3.04,4.4,4,15.7,-35.2,-34.3,15.7,-38.7,-36.2,1,1,0,0,7.57,atr_trail,0,1,0,0 +IS_2025_26,2026-01-28,PDYN,08:22,82,9.3,6.52,42.6,1922708.4,,9.1,2.15,4,7.0,-11.7,-10.9,7.0,-20.9,-19.8,1,0,0,0,2.05,atr_trail,0,0,0,0 +IS_2025_26,2026-02-02,SWVL,07:20,20,2.63,1.81,45.3,23643.8,,2.45,6.84,6,30.8,-29.3,-20.3,30.8,-29.3,-18.6,1,1,1,0,0.87,atr_trail,0,1,0,0 +IS_2025_26,2026-02-03,NPT,08:04,64,8.5,5.7,49.1,58950.7,,8.25,2.94,4,254.7,-34.4,-9.4,254.7,-34.4,-3.1,1,1,1,1,214.02,atr_trail,0,0,0,0 +IS_2025_26,2026-02-05,RNAZ,08:32,92,13.39,8.58,56.1,67492.2,,12.7171,5.03,4,3.8,-21.4,-18.9,3.8,-32.2,-25.3,0,0,0,0,-0.43,atr_trail,0,0,0,0 +IS_2025_26,2026-02-23,VNDA,09:41,161,8.56,5.76,48.6,2031498.4,,8.35,2.45,0,6.2,-2.2,2.0,6.2,-8.8,-4.0,1,0,0,0,0.7,atr_trail,1,0,0,0 +IS_2025_26,2026-03-04,VCIG,08:45,105,19.76,8.03,146.1,28353.0,,18.06,8.6,8,68.5,-26.1,-26.6,68.5,-66.2,-64.2,1,1,1,1,21.76,atr_trail,0,0,1,0 +IS_2025_26,2026-03-05,MTEK,09:26,146,2.94,1.83,60.7,91531.0,,2.74,6.8,0,7.5,-29.6,-25.2,7.5,-31.3,-28.9,1,0,0,0,2.54,atr_trail,1,1,0,0 +IS_2025_26,2026-03-10,INKT,07:03,3,19.25,10.45,84.2,9590.0,,18.3,4.94,0,6.0,-30.0,-20.6,6.0,-34.0,-30.1,1,0,0,0,-0.1,atr_trail,1,0,0,0 +IS_2025_26,2026-03-12,LCUT,07:24,24,3.89,2.986,30.3,22807.7,,3.8,2.31,4,5.7,-20.3,-18.3,5.7,-20.3,-10.5,1,0,0,0,1.56,atr_trail,0,1,0,0 +IS_2025_26,2026-03-12,POLA,08:07,67,2.61,1.94,34.5,1711979.2,,2.49,4.6,0,4.6,-18.4,-11.5,4.6,-18.4,-11.1,0,0,0,0,0.8,atr_trail,1,1,0,0 +IS_2025_26,2026-03-13,BIAF,09:39,159,2.16,1.07,101.9,600345.6,,2.05,5.09,0,15.7,-4.6,7.2,26.4,-6.9,-2.8,1,1,1,0,6.51,atr_trail,1,1,0,0 +IS_2025_26,2026-03-16,AIRS,08:58,118,2.84,1.85,53.5,1177901.9,,2.77,2.46,0,14.8,-10.6,-9.2,14.8,-12.3,-1.0,1,1,0,0,2.83,atr_trail,1,1,0,0 +IS_2025_26,2026-03-19,CHNR,07:47,47,5.72,3.3,73.3,39717.0,,5.47,4.37,2,15.2,-33.6,-14.9,15.2,-33.6,-23.1,1,1,0,0,10.54,atr_trail,0,1,0,0 +IS_2025_26,2026-03-19,SER,09:30,150,2.13,1.28,66.4,1791059.4,,2.06,3.29,4,13.6,-2.3,0.5,32.9,-5.2,17.8,1,1,1,0,8.73,atr_trail,0,1,0,0 +IS_2025_26,2026-03-20,CODX,08:29,89,3.79,2.65,43.0,136531.8,,3.55,6.33,6,7.9,-11.6,-9.5,7.9,-34.8,-32.2,1,0,0,0,-1.32,atr_trail,0,1,0,0 +IS_2025_26,2026-03-23,FLZH,07:45,45,3.61,2.18,65.6,114752.3,,3.44,4.71,2,20.2,-31.5,8.0,100.3,-31.5,70.1,1,1,1,1,3.6,atr_trail,0,1,0,0 +IS_2025_26,2026-03-24,ANNA,09:43,163,8.14,5.455,49.2,2748467.8,,7.94,2.46,2,3.7,-4.7,-2.6,5.9,-14.0,-8.5,1,0,0,0,-0.5,atr_trail,0,1,0,0 +IS_2025_26,2026-03-30,ELAB,07:18,18,3.37,1.67,101.8,984867.9,,3.28,2.67,4,44.8,-7.1,3.0,44.8,-10.7,4.5,1,1,1,0,5.98,atr_trail,0,1,0,0 +IS_2025_26,2026-04-01,CYCN,07:16,16,2.7,1.55,74.2,69306.0,,2.44,9.63,2,194.8,-0.7,157.0,214.1,-0.7,131.5,1,1,1,1,14.85,atr_trail,0,1,1,1 +IS_2025_26,2026-04-01,RENX,09:35,155,2.9,1.78,62.9,1679811.5,,2.76,4.83,4,18.6,-7.6,3.6,20.0,-20.3,-10.1,1,1,0,0,0.61,atr_trail,0,1,0,0 +IS_2025_26,2026-04-02,SKYQ,07:31,31,4.6,2.53,81.8,261245.6,,4.4,4.35,6,42.4,-7.2,-2.9,42.4,-18.5,9.8,1,1,1,0,19.01,atr_trail,0,1,0,0 +IS_2025_26,2026-04-06,PRFX,07:05,5,3.73,2.1,77.6,285708.3,,3.5696,4.3,0,2.1,-39.4,-28.2,2.1,-39.4,-32.2,0,0,0,0,-1.65,atr_trail,1,1,0,0 +IS_2025_26,2026-04-07,BGDE,09:34,154,3.4,2.59,31.3,213306.3,,3.2001,5.88,4,1.5,-11.2,-3.7,1.5,-20.6,-15.0,0,0,0,0,-4.63,time_1000,0,1,0,0 +IS_2025_26,2026-04-08,MTEX,08:04,64,7.37,6.24,18.1,4121.7,,7.36,0.14,0,15.3,-1.4,7.2,15.3,-16.6,-9.2,1,1,0,0,3.09,atr_trail,1,1,0,0 +IS_2025_26,2026-04-10,SQFT,07:02,2,4.18,2.82,48.2,10268.1,,4.06,2.87,0,4.1,-18.2,-9.1,4.1,-19.1,-7.4,0,0,0,0,0.24,atr_trail,1,1,0,0 +IS_2025_26,2026-04-13,ALMU,09:26,146,13.97,10.76,29.8,578960.6,,13.8,1.22,2,11.5,-0.5,5.8,18.5,-0.5,9.2,1,1,0,0,0.81,atr_trail,0,0,0,0 +IS_2025_26,2026-04-13,IMA,07:20,20,6.67,4.9018,36.1,38507.2,,6.38,4.35,2,6.0,-21.7,-12.9,6.0,-21.7,-9.3,1,0,0,0,1.98,atr_trail,0,1,0,0 +IS_2025_26,2026-04-14,ROLR,08:08,68,6.81,5.09,33.8,233959.6,,6.53,4.11,0,74.7,-2.8,23.8,74.7,-2.8,11.6,1,1,1,1,11.98,atr_trail,1,1,0,0 +IS_2025_26,2026-04-15,BIRD,08:16,76,3.05,2.49,22.5,129688.6,,2.83,7.21,2,317.0,-9.2,277.3,697.0,-9.2,432.5,1,1,1,1,8.69,atr_trail,0,1,0,0 +IS_2025_26,2026-04-16,BTOG,09:06,126,6.12,2.765,121.3,62032.7,,5.42,11.44,2,2.9,-46.1,-35.6,2.9,-63.6,-57.7,0,0,0,0,-2.72,atr_trail,0,1,1,1 +IS_2025_26,2026-04-16,MYSE,07:12,12,4.8,1.44,233.3,811893.4,,4.63,3.54,2,33.5,-16.0,-10.2,33.5,-38.3,-30.0,1,1,1,0,26.73,atr_trail,0,1,0,0 +IS_2025_26,2026-04-17,EFOI,09:41,161,7.16,2.09,242.6,20764.0,,7.15,0.14,4,32.7,-1.1,12.7,37.4,-13.4,-8.3,1,1,1,0,25.81,atr_trail,0,1,0,0 +IS_2025_26,2026-04-20,ENVB,08:50,110,4.44,1.82,144.0,669610.9,,4.22,4.95,4,22.3,-14.0,12.5,22.3,-21.3,-19.1,1,1,1,0,5.1,atr_trail,0,1,0,0 +IS_2025_26,2026-04-23,CPIX,09:21,141,5.67,2.407,135.6,90245.5,,5.26,7.23,4,8.5,-22.4,-20.3,8.5,-35.4,-30.7,1,0,0,0,4.23,atr_trail,0,1,0,0 +IS_2025_26,2026-04-23,TRT,08:16,76,10.76,8.26,30.3,71430.8,,10.55,1.95,6,30.1,-8.6,23.7,52.0,-8.6,28.3,1,1,1,1,1.03,atr_trail,0,0,0,0 +IS_2025_26,2026-04-24,LIDR,09:38,158,2.92,1.69,72.8,3126296.1,,2.76,5.48,0,4.5,-16.1,-8.2,4.5,-26.4,-25.7,0,0,0,0,0.4,atr_trail,1,1,0,0 +IS_2025_26,2026-04-27,GLND,09:00,120,8.41,6.21,35.4,1031610.6,,8.16,2.97,0,0.2,-22.0,-20.9,0.2,-37.2,-35.7,0,0,0,0,-21.71,time_1000,1,0,0,0 +IS_2025_26,2026-04-27,OGN,08:20,80,13.18,11.24,17.3,6084653.1,,13.16,0.15,0,0.6,-0.2,0.1,0.6,-0.2,-0.1,0,0,0,0,-0.92,time_1000,1,0,0,0 +IS_2025_26,2026-04-27,SGMT,07:48,48,8.39,5.86,43.2,385930.0,,8.2301,1.91,2,7.3,-15.0,-1.1,11.7,-15.0,-3.2,1,1,0,0,3.2,atr_trail,0,0,0,0 +IS_2025_26,2026-04-29,RDAC,07:16,16,6.31,4.9,28.8,3410.3,,6.3,0.16,2,61.3,-0.7,61.3,280.2,-0.7,205.1,1,1,1,1,1.85,atr_trail,0,1,0,0 +IS_2025_26,2026-04-29,SAGT,07:48,48,2.41,1.7,41.8,192859.6,,2.29,4.98,2,40.7,-3.3,2.5,40.7,-12.0,-10.0,1,1,1,0,5.33,atr_trail,0,1,0,0 +IS_2025_26,2026-04-30,FATN,08:05,65,3.65,2.48,47.2,216165.3,,3.59,1.64,4,3.0,-12.3,-11.5,3.0,-22.7,-16.4,0,0,0,0,-0.8,atr_trail,0,1,0,0 +IS_2025_26,2026-04-30,HCAI,07:32,32,9.72,5.47,77.7,513698.1,,9.2,5.35,2,46.8,-4.3,30.3,48.7,-4.3,9.9,1,1,1,0,14.72,atr_trail,0,0,0,0 +IS_2025_26,2026-05-04,CLNN,08:20,80,8.92,6.14,45.3,82671.7,,8.21,7.96,2,9.6,-25.9,-23.9,9.6,-29.3,-10.7,1,0,0,0,3.47,atr_trail,0,0,0,0 +IS_2025_26,2026-05-04,RLYB,08:11,71,14.3,9.41,52.0,174709.7,,14.08,1.54,10,1.0,-7.7,-4.5,2.1,-7.7,-1.9,0,0,0,0,-5.5,time_1000,0,0,0,0 +IS_2025_26,2026-05-05,BLZE,09:32,152,7.79,4.64,67.9,846089.6,,7.44,4.49,6,8.1,-3.7,1.3,8.1,-8.2,-2.8,1,0,0,0,-1.06,atr_trail,0,1,0,0 +IS_2025_26,2026-05-06,PMAX,09:04,124,2.69,2.12,26.9,457260.9,,2.65,1.49,4,16.7,-6.7,10.8,78.9,-6.7,50.9,1,1,1,1,1.94,atr_trail,0,1,0,0 +IS_2025_26,2026-05-07,ATRA,08:10,70,7.91,5.15,53.6,260970.6,,7.54,4.68,0,13.5,-12.6,-10.9,57.4,-14.0,17.5,1,1,1,1,8.26,atr_trail,1,1,0,0 +IS_2025_26,2026-05-08,TRAW,07:38,38,2.36,1.7,38.8,159978.2,,2.25,4.66,2,9.3,-19.1,-6.7,9.3,-24.2,-7.4,1,0,0,0,0.23,atr_trail,0,1,0,0 +IS_2025_26,2026-05-11,CLIK,07:13,13,4.51,2.23,102.2,1781433.3,,4.35,3.55,0,17.5,-40.8,-39.9,17.5,-60.8,-50.1,1,1,0,0,5.26,atr_trail,1,1,0,0 +IS_2025_26,2026-05-11,ODYS,08:44,104,10.24,4.46,129.6,19523.1,,9.12,10.94,0,32.5,-26.2,-20.2,32.5,-59.6,-53.7,1,1,1,0,10.18,atr_trail,1,0,1,0 +IS_2025_26,2026-05-13,WHWK,09:41,161,4.7477,3.92,21.1,199922.3,,4.59,3.32,2,5.9,-3.1,-1.6,8.6,-3.7,3.8,1,0,0,0,0.6,atr_trail,0,1,0,0 +IS_2025_26,2026-05-14,MOBX,09:42,162,3.78,1.74,117.2,4294592.9,,3.77,0.26,4,12.4,-20.6,-16.2,12.4,-34.4,-16.1,1,1,0,0,7.29,atr_trail,0,1,0,0 +IS_2025_26,2026-05-15,AUUD,08:23,83,2.3,1.22,88.5,2070533.6,,2.24,2.61,10,3.9,-19.6,-10.5,3.9,-24.3,-15.7,0,0,0,0,0.23,atr_trail,0,1,0,0 +IS_2025_26,2026-05-15,SLE,08:34,94,6.32,4.07,55.3,16919.2,,6.0701,3.95,6,12.3,-14.4,-6.3,12.3,-14.4,-5.1,1,1,0,0,0.1,atr_trail,0,1,0,0 +IS_2025_26,2026-05-18,GOVX,07:19,19,2.645,1.23,115.0,254879.0,,2.56,3.21,2,87.1,-0.9,51.2,87.1,-32.7,-11.2,1,1,1,1,19.02,atr_trail,0,1,0,0 +IS_2025_26,2026-05-19,AMST,09:35,155,2.61,0.7861,232.0,828859.2,,2.51,3.83,2,2.3,-20.3,-14.2,2.3,-36.8,-33.3,0,0,0,0,-1.73,atr_trail,0,1,0,0 +IS_2025_26,2026-05-27,QTTB,09:37,157,11.11,7.09,56.7,325662.9,,11.1,0.09,2,17.0,-8.7,15.1,18.5,-8.7,18.2,1,1,0,0,2.07,atr_trail,0,0,0,0 +IS_2025_26,2026-05-27,VTIX,09:45,165,3.5068,3,16.9,291050.8,,3.4201,2.47,4,7.2,-2.2,6.5,30.0,-7.3,23.2,1,1,1,0,-1.51,atr_trail,0,1,0,0 +IS_2025_26,2026-05-28,SPRC,09:01,121,11.73,4.39,167.2,414104.7,,10.76,8.27,2,33.4,-9.6,12.5,33.4,-13.9,10.0,1,1,1,0,7.67,atr_trail,0,0,1,0 +IS_2025_26,2026-05-29,OLOX,07:19,19,9.4399,4.92,91.9,129850.7,,8.8,6.78,4,31.3,-10.9,5.2,31.3,-16.8,-8.9,1,1,1,0,0.33,atr_trail,0,0,0,0 +IS_2025_26,2026-05-29,PRFX,09:34,154,5.29,1.37,286.1,1068325.7,,4.95,6.43,6,1.9,-16.6,-9.4,1.9,-55.4,-46.5,0,0,0,0,-10.26,time_1000,0,1,0,0 +IS_2025_26,2026-06-01,ANY,07:51,51,3.65,1.9,92.1,156278.3,,3.45,5.48,2,19.0,-17.5,-7.1,32.3,-21.6,10.7,1,1,1,0,13.61,atr_trail,0,1,0,0 +IS_2025_26,2026-06-03,LASE,09:30,150,3.61,2.42,49.2,7474977.4,,3.5,3.05,6,24.4,-9.7,20.2,24.4,-16.3,-14.4,1,1,1,0,5.63,atr_trail,0,1,0,0 +IS_2025_26,2026-06-03,XOS,07:02,2,8.64,2.23,287.4,703090.9,,8.44,2.31,0,0.6,-35.1,-31.7,0.6,-37.5,-15.2,0,0,0,0,-32.39,time_1000,1,0,0,0 +IS_2025_26,2026-06-04,FOXX,09:28,148,5.09,2.86,78.0,307706.6,,5,1.77,4,52.1,-2.9,21.6,55.2,-2.9,3.5,1,1,1,1,25.41,atr_trail,0,1,0,0 +IS_2025_26,2026-06-05,BESS,08:49,109,4.07,3.05,33.4,154151.8,,3.97,2.46,6,51.4,-10.6,-3.2,51.4,-20.1,-11.1,1,1,1,1,42.32,atr_trail,0,1,0,0 +IS_2025_26,2026-06-05,CMND,08:56,116,4.55,2.91,56.4,1684536.8,,4.28,5.93,4,7.0,-22.0,-15.8,7.0,-28.4,-14.7,1,0,0,0,2.0,atr_trail,0,1,0,0 +IS_2025_26,2026-06-08,SUNE,07:29,29,2.49,1.13,120.4,338125.1,,2.32,6.83,2,39.4,-12.0,16.1,279.5,-12.4,117.3,1,1,1,1,-0.33,atr_trail,0,1,0,0 +IS_2025_26,2026-06-09,AZI,07:51,51,5.73,1.13,407.1,67367.9,,4.41,23.04,4,119.5,-52.0,-22.4,119.5,-71.4,-70.2,1,1,1,1,66.42,atr_trail,0,1,1,1 +IS_2025_26,2026-06-09,CCTG,07:22,22,2.71,0.4792,465.5,893285.4,,2.5,7.75,2,130.6,-29.9,87.1,130.6,-44.6,-25.5,1,1,1,1,3.08,atr_trail,0,1,0,0 +IS_2025_26,2026-06-09,CHAI,07:19,19,5.61,0.82,584.1,1359255.2,,5.14,8.38,4,4.1,-48.7,-35.7,4.1,-70.2,-68.2,0,0,0,0,0.23,atr_trail,0,1,1,1 +IS_2025_26,2026-06-10,DSY,07:54,54,9.8597,1.84,435.9,18066.9,,7.25,26.47,2,15.6,-52.7,-10.3,101.8,-52.7,-32.2,1,1,1,1,2.4,atr_trail,0,0,1,0 +IS_2025_26,2026-06-10,VSME,07:17,17,4.6,0.8234,458.7,916695.5,,4.26,7.39,4,42.8,-39.3,-27.0,42.8,-58.7,-58.7,1,1,1,0,7.17,atr_trail,0,1,0,0 +IS_2025_26,2026-06-11,PPCB,09:45,165,6.4,1.35,374.1,143447.5,,5.82,9.06,14,5.9,-28.1,-24.5,6.1,-62.3,-59.8,1,0,0,0,0.35,atr_trail,0,1,1,1 +IS_2025_26,2026-06-12,CUPR,09:13,133,4.26,2.41,76.8,413276.9,,4,6.1,2,93.2,-24.9,61.5,93.2,-24.9,-10.6,1,1,1,1,11.82,atr_trail,0,1,0,0 +IS_2025_26,2026-06-12,MF,08:13,73,9.87,4.79,106.1,220015.0,,8.81,10.74,0,15.9,-47.8,-24.7,15.9,-47.8,-22.0,1,1,0,0,8.9,atr_trail,1,0,1,0 +IS_2025_26,2026-06-15,CAST,07:14,14,5.61,1.55,261.9,5110540.2,,5.36,4.46,2,6.2,-29.1,-25.3,6.2,-41.9,-34.9,1,0,0,0,1.95,atr_trail,0,1,0,0 +IS_2025_26,2026-06-15,JRSH,08:29,89,8.26,3.46,138.7,138027.1,,7.3,11.62,0,20.6,-48.3,-46.0,20.6,-56.3,-54.4,1,1,1,0,13.65,atr_trail,1,1,1,1 +IS_2025_26,2026-06-17,CLWT,07:11,11,4.52,1.2,276.7,504198.0,,3.96,12.39,0,17.0,-53.1,-51.3,17.0,-65.9,-65.0,1,1,0,0,10.17,atr_trail,1,1,1,1 +IS_2025_26,2026-06-22,NXTS,09:34,154,13.2,5.08,159.8,255633.4,,12.5,5.3,6,48.3,-4.8,27.1,80.3,-6.2,-0.9,1,1,1,1,34.59,atr_trail,0,0,0,0 +IS_2025_26,2026-06-24,CCXI,08:39,99,12.16,10.4199,16.7,20268.5,,12.02,1.15,6,10.9,-2.1,4.9,10.9,-2.7,1.2,1,1,0,0,-0.39,atr_trail,0,0,0,0 +IS_2025_26,2026-06-25,ILLR,09:44,164,3.47,0.7691,351.2,457143.6,,3.23,6.92,6,52.7,-1.2,30.0,52.7,-22.2,-14.1,1,1,1,1,42.81,atr_trail,0,1,0,0 +IS_2025_26,2026-06-25,KUST,07:42,42,3.12,1.42,119.7,232576.8,,2.66,14.74,0,9.3,-41.3,-38.1,9.3,-59.3,-55.8,1,0,0,0,4.35,atr_trail,1,1,1,1 +IS_2025_26,2026-06-25,MIMI,08:48,108,4.21,2.71,55.4,937871.8,,3.96,5.94,4,19.7,-16.6,-14.4,19.7,-25.7,-23.8,1,1,0,0,11.56,atr_trail,0,1,0,0 +IS_2025_26,2026-06-29,NNBR,07:24,24,4.1497,2.76,50.4,986452.5,,3.91,5.78,2,18.6,-13.5,-10.5,18.6,-17.8,-13.2,1,1,0,0,-0.51,atr_trail,0,1,0,0 +IS_2025_26,2026-06-29,UPC,09:29,149,17.48,2.96,490.5,503087.6,,14.33,18.02,6,7.8,-25.5,-15.0,7.8,-39.9,-30.8,1,0,0,0,1.38,atr_trail,0,0,1,0 +IS_2025_26,2026-06-30,CELZ,09:14,134,2.8,0.8102,245.6,100496.1,,2.46,12.14,2,68.6,-20.7,35.4,68.6,-51.1,-50.0,1,1,1,1,-2.23,atr_trail,0,1,1,1 +IS_2025_26,2026-07-09,VRAX,08:07,67,8.31,3.18,161.3,978123.8,,7.9,4.93,2,58.7,-8.2,54.3,58.7,-29.4,-25.5,1,1,1,1,-1.95,atr_trail,0,0,0,0 +IS_2025_26,2026-07-10,GMM,07:14,14,4.17,1.85,125.4,1927378.1,,3.9001,6.47,2,57.8,-7.9,2.9,57.8,-22.3,4.1,1,1,1,1,14.59,atr_trail,0,1,0,0 +IS_2025_26,2026-07-13,AGEN,07:33,33,4.99,3.35,49.0,796877.3,,4.82,3.41,6,40.5,-6.8,39.7,74.3,-6.8,25.7,1,1,1,1,0.65,atr_trail,0,1,0,0 +IS_2025_26,2026-07-21,UTZ,09:23,143,14.0838,7.45,89.0,1979131.0,,14.07,0.1,6,0.4,-0.2,-0.1,0.4,-0.2,0.1,0,0,0,0,-1.06,time_1000,0,0,0,0 +IS_2025_26,2026-07-21,VIVK,09:20,140,3.66,1.73,111.6,370819.7,,3.14,14.21,0,136.9,-13.9,118.8,163.1,-32.0,-30.1,1,1,1,1,44.52,atr_trail,1,1,1,1 +IS_2025_26,2026-07-22,INM,07:46,46,3.24,1.54,110.4,2045988.5,,3.03,6.48,4,2.2,-40.7,-34.6,2.2,-54.0,-48.1,0,0,0,0,-1.86,atr_trail,0,1,0,0 +IS_2025_26,2026-07-22,ZCMD,09:11,131,2.37,1.47,61.2,2383490.1,,2.27,4.22,4,76.4,-11.8,132.1,404.6,-11.8,104.2,1,1,1,1,4.5,atr_trail,0,1,0,0 +IS_2025_26,2026-07-23,DOMO,09:10,130,4.32,3.15,37.1,1795826.9,,4.28,0.93,2,2.8,-6.7,-4.6,2.8,-13.7,-8.6,0,0,0,0,-0.5,atr_trail,0,1,0,0 +IS_2025_26,2026-07-23,EHGO,09:33,153,4.12,1.76,134.1,7706099.6,,3.88,5.83,0,20.6,-31.6,-28.9,20.6,-46.4,-34.2,1,1,1,0,14.77,atr_trail,1,1,0,0 +IS_2025_26,2026-07-23,JEM,07:38,38,6.46,3.53,83.0,505584.1,,5.9,8.67,4,5.3,-35.4,-31.5,5.3,-38.1,-27.2,1,0,0,0,1.02,atr_trail,0,1,1,1 +IS_2025_26,2026-07-24,VIVK,08:37,97,3.24,2.12,52.8,3773409.5,,3.14,3.09,4,21.0,-13.6,-9.0,21.0,-21.9,-11.4,1,1,1,0,-0.59,atr_trail,0,1,0,0 +IS_2025_26,2026-07-27,DFNS,07:45,45,7.75,4.35,78.2,721498.3,,7.4801,3.48,8,1.8,-21.2,-15.8,106.3,-21.2,69.9,1,1,1,1,-16.6,time_1000,0,1,0,0 +IS_2025_26,2026-07-27,ENTX,08:47,107,3.31,2.05,61.5,1241171.7,,3.14,5.14,2,18.4,-16.3,11.8,26.9,-16.3,19.3,1,1,1,0,13.34,atr_trail,0,1,0,0 +IS_2025_26,2026-07-28,FIRY,09:05,125,12.36,8.36,47.8,279050.7,,12.24,0.97,8,17.1,-10.0,-5.3,17.1,-25.6,-22.6,1,1,0,0,-0.73,atr_trail,0,0,0,0 +IS_2025_26,2026-07-29,AMIX,09:43,163,6.71,2.75,144.0,512455.6,,5.98,10.88,14,8.0,-26.5,-19.1,8.0,-41.4,-32.0,1,0,0,0,2.71,atr_trail,0,1,1,1 +IS_2025_26,2026-07-30,NUWE,08:36,96,5.51,1.89,191.5,379593.3,,5.19,5.81,4,16.2,-12.9,1.1,16.2,-32.8,-21.2,1,1,0,0,3.37,atr_trail,0,1,0,0 +IS_2025_26,2026-07-31,FCUV,09:23,143,10.21,1.88,443.1,2214084.4,,9.7,5.0,2,72.3,-17.5,63.6,72.3,-17.5,20.3,1,1,1,1,-1.71,atr_trail,0,0,0,0 +IS_2025_26,2026-08-03,EZRA,09:00,120,3.69,1.82,102.7,143383.4,,3.4,7.86,2,24.7,-22.5,4.4,24.7,-36.3,-30.1,1,1,1,0,-1.37,atr_trail,0,1,0,0 +IS_2025_26,2026-08-03,HYFM,07:56,56,3.61,0.54,568.5,52022.5,,2.95,18.28,2,14.1,-34.9,-35.7,14.1,-59.8,-43.2,1,1,0,0,8.34,atr_trail,0,1,1,1 +IS_2025_26,2026-08-05,GTE,09:05,125,10.45,6.83,53.0,306850.0,,10.3369,1.08,4,10.3,-9.2,4.0,10.3,-13.8,-9.7,1,1,0,0,0.12,atr_trail,0,0,0,0 +IS_2025_26,2026-08-05,INLF,09:45,165,8.35,3.18,162.6,2658555.7,,7.83,6.23,4,3.0,-24.0,-29.3,13.5,-35.3,-26.1,1,1,0,0,-30.04,time_1000,0,0,0,0 diff --git a/research/momentum_master_table.py b/research/momentum_master_table.py new file mode 100644 index 000000000..636c82f8e --- /dev/null +++ b/research/momentum_master_table.py @@ -0,0 +1,116 @@ +#!/usr/bin/env python3 +"""Master table of ALL Cameron-faithful base entries. No performance filtering. + +One row per entry produced by the faithful scanner (momentum_faithful.py) over +both historical windows. Descriptive columns + boolean flags for every +after-the-fact filter, so subsets are always visible next to the base. + +Output: momentum_master_table.csv + a per-group summary. + +Usage: MOMO_OOS=... MOMO_IS=... python3 momentum_master_table.py +""" +import csv +import json +import os + +from momentum_live import v5_exit +from momentum_v2_exits import pctl + +HERE = os.path.dirname(os.path.abspath(__file__)) +WINDOWS = {"OOS_2024_25": os.environ["MOMO_OOS"], "IS_2025_26": os.environ["MOMO_IS"]} +FLOATS = json.load(open(os.path.join(HERE, "float_cache.json"))) \ + if os.path.exists(os.path.join(HERE, "float_cache.json")) else {} + + +def rows(): + out = [] + for win, sc in WINDOWS.items(): + cands = {(c["symbol"], c["day"]): c + for c in json.load(open(os.path.join(sc, "cand_faithful.json")))} + for t in json.load(open(os.path.join(sc, "res_faithful.json")))["items"]: + c = cands.get((t["symbol"], t["day"])) + if c is None: + continue + e = t["entry_px_raw"] + path = t["path"] + pre10 = [b for b in path if b["t"] < "10:00"] or path[:1] + at10 = next((b["o"] for b in path if b["t"] >= "10:00"), path[-1]["c"]) + mfe10 = (max(b["h"] for b in pre10) / e - 1) * 100 + mae10 = (min(b["l"] for b in pre10) / e - 1) * 100 + mfe_d = (max(b["h"] for b in path) / e - 1) * 100 + mae_d = (min(b["l"] for b in path) / e - 1) * 100 + hh, mm = t["entry_time_et"].split(":") + width = (e - t["stop"]) / e * 100 + ret_v5, _, v5_reason = v5_exit(t) + r = { + "window": win, "day": t["day"], "symbol": t["symbol"], + "entry_time_et": t["entry_time_et"], + "entry_min_after_7": int(hh) * 60 + int(mm) - 420, + "entry_px": round(e, 4), + "prev_close": c["prev_close"], + "gain_at_entry_pct": round((e / c["prev_close"] - 1) * 100, 1), + "avg50_vol": c["avg50"], + "float_shares": FLOATS.get(t["symbol"], ""), + "pullback_low": t["stop"], + "pullback_width_pct": round(width, 2), + "n_rejected_pullbacks_before": t.get("n_dq_before", 0), + "mfe_by_10_pct": round(mfe10, 1), + "mae_by_10_pct": round(mae10, 1), + "ret_at_10_pct": round((at10 / e - 1) * 100, 1), + "mfe_day_pct": round(mfe_d, 1), + "mae_day_pct": round(mae_d, 1), + "ret_close_pct": round((path[-1]["c"] / e - 1) * 100, 1), + "hit_p5": int(mfe_d >= 5), "hit_p10": int(mfe_d >= 10), + "hit_p20": int(mfe_d >= 20), "hit_p50": int(mfe_d >= 50), + "ret_v5exit_pct": round(ret_v5, 2), + "v5_exit_reason": v5_reason, + # ---- flags: filters are COLUMNS, never row-removal ---- + "first_pullback": int(t.get("n_dq_before", 0) == 0), + "price_lt_8_30": int(e < 8.3), + "pullback_width_ge_8": int(width >= 8), + "v5_qualified": int(e < 8.3 and width >= 8), + } + out.append(r) + out.sort(key=lambda r: (r["day"], r["symbol"])) + return out + + +def summarize(rs, label): + if not rs: + return f" {label:<26} n=0" + n = len(rs) + v5r = [r["ret_v5exit_pct"] for r in rs] + w = sum(1 for x in v5r if x > 0) + return (f" {label:<26}{n:>5}{n / 104:>7.1f}" + f"{pctl([r['mfe_by_10_pct'] for r in rs], .5):>+8.1f}" + f"{pctl([r['mae_by_10_pct'] for r in rs], .5):>+8.1f}" + f"{100 * sum(r['hit_p10'] for r in rs) / n:>6.0f}%" + f"{100 * sum(r['hit_p20'] for r in rs) / n:>6.0f}%" + f"{sum(v5r) / n:>+9.2f}{pctl(v5r, .5):>+8.1f}{100 * w / n:>5.0f}%") + + +def main(): + rs = rows() + path = os.path.join(HERE, "momentum_master_table.csv") + with open(path, "w", newline="") as f: + wtr = csv.DictWriter(f, fieldnames=list(rs[0].keys())) + wtr.writeheader() + wtr.writerows(rs) + print(f"wrote {path}: {len(rs)} base entries " + f"({sum(1 for r in rs if r['window'].startswith('OOS'))} OOS, " + f"{sum(1 for r in rs if r['window'].startswith('IS'))} IS)\n") + hdr = (f" {'group':<26}{'n':>5}{'/wk':>7}{'medMFE10':>8}{'medMAE10':>8}" + f"{'hit10':>7}{'hit20':>7}{'v5exMean':>9}{'v5exMed':>8}{'WR':>6}") + print(hdr) + print(summarize(rs, "ALL base entries")) + print(summarize([r for r in rs if r["first_pullback"]], "first pullback")) + print(summarize([r for r in rs if r["price_lt_8_30"]], "price < 8.30")) + print(summarize([r for r in rs if r["pullback_width_ge_8"]], "width >= 8%")) + print(summarize([r for r in rs if r["v5_qualified"]], "v5 subset")) + print(summarize([r for r in rs if not r["v5_qualified"]], "NOT v5 (the skipped)")) + for win in ("OOS_2024_25", "IS_2025_26"): + print(summarize([r for r in rs if r["window"] == win], win)) + + +if __name__ == "__main__": + main() diff --git a/research/momentum_movement.py b/research/momentum_movement.py new file mode 100644 index 000000000..4ed8801cd --- /dev/null +++ b/research/momentum_movement.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 +"""Raw post-entry movement analysis for momentum first-pullback entries. + +For every entered trade in the backtest, measures pure price movement from the +raw entry price (no slippage, no exit mechanics): max favorable / adverse +excursion and checkpoints at 10:00 ET and the 16:00 ET close, plus which came +first, k*R or the pullback low (touch-based, R = entry - stop). + +Entry-bar note: the entry occurs intrabar; the entry bar's full high/low are +included in excursions (partially pre-entry - unavoidable at 1-min data). +Ties (kR and stop touched in the same bar) count as stop-first (conservative). +""" +import json +import os + +from momentum_paper import et_hhmm, et_offset, get, DATA + +SCRATCH = os.environ.get( + "MOMO_SCRATCH", + "/tmp/claude-0/-home-user-Kronos/2f0190a1-7250-5bf8-81dd-e6806ae4a3ce/scratchpad/momo_bt", +) +HERE = os.path.dirname(os.path.abspath(__file__)) + + +def day_bars(sym, day): + off = et_offset(day) + return get( + f"{DATA}/v2/stocks/{sym}/bars", + timeframe="1Min", adjustment="raw", feed="sip", limit=10000, + start=f"{day}T{4 - off:02d}:00:00Z", + end=f"{day}T{16 - off:02d}:00:00Z", + ).get("bars") or [] + + +def pctl(xs, q): + xs = sorted(xs) + if not xs: + return float("nan") + i = (len(xs) - 1) * q + lo, hi = int(i), min(int(i) + 1, len(xs) - 1) + return xs[lo] + (xs[hi] - xs[lo]) * (i - lo) + + +def dline(name, xs): + m = sum(xs) / len(xs) + return (f"{name:<22} mean={m:+7.2f} p25={pctl(xs, .25):+7.2f} " + f"med={pctl(xs, .5):+7.2f} p75={pctl(xs, .75):+7.2f} " + f"min={min(xs):+7.2f} max={max(xs):+8.2f}") + + +def main(): + done = json.load(open(os.path.join(SCRATCH, "results.json"))) + trades = [x for x in done["items"] if x.get("exit_reason")] + rows = [] + for t in trades: + bars = day_bars(t["symbol"], t["day"]) + idx = next((i for i, b in enumerate(bars) + if et_hhmm(b["t"]) == t["entry_time_et"]), None) + if idx is None: + continue + e, stop = t["entry_px_raw"], t["stop"] + risk = e - stop + post = bars[idx:] + w10 = [b for b in post if et_hhmm(b["t"]) < "10:00"] + row = {"symbol": t["symbol"], "day": t["day"]} + if w10: + row["mfe10"] = (max(b["h"] for b in w10) / e - 1) * 100 + row["mae10"] = (min(b["l"] for b in w10) / e - 1) * 100 + row["at10"] = (w10[-1]["c"] / e - 1) * 100 + row["mfeD"] = (max(b["h"] for b in post) / e - 1) * 100 + row["maeD"] = (min(b["l"] for b in post) / e - 1) * 100 + row["close"] = (post[-1]["c"] / e - 1) * 100 + first = {} + for k in (1, 2, 3): + first[k] = None + tgt = e + k * risk + for b in post: + hit_t = b["h"] >= tgt + hit_s = b["l"] <= stop + if hit_s: # ties conservative + first[k] = "stop" + break + if hit_t: + first[k] = "target" + break + row["race"] = first + rows.append(row) + + n = len(rows) + print(f"Post-entry movement, {n} entries (raw prices, no slippage, " + f"no exit rules)\n") + print("Within the 7:00-10:00 window (% from entry):") + print(dline(" max favorable (MFE)", [r["mfe10"] for r in rows if "mfe10" in r])) + print(dline(" max adverse (MAE)", [r["mae10"] for r in rows if "mae10" in r])) + print(dline(" price at 10:00", [r["at10"] for r in rows if "at10" in r])) + print("\nFull day, entry -> 16:00 close (% from entry):") + print(dline(" max favorable (MFE)", [r["mfeD"] for r in rows])) + print(dline(" max adverse (MAE)", [r["maeD"] for r in rows])) + print(dline(" close vs entry", [r["close"] for r in rows])) + + print("\nShare of entries whose day-MFE reached at least:") + for th in (2, 5, 10, 20, 50): + c = sum(1 for r in rows if r["mfeD"] >= th) + print(f" +{th:>2}%: {c}/{n} = {100 * c / n:.0f}%") + print("Share of entries whose day-MAE went at least as low as:") + for th in (-2, -5, -10, -20): + c = sum(1 for r in rows if r["maeD"] <= th) + print(f" {th:>3}%: {c}/{n} = {100 * c / n:.0f}%") + + print("\nRace vs the pullback low (touch-based, R = entry - stop):") + for k in (1, 2, 3): + tg = sum(1 for r in rows if r["race"][k] == "target") + st = sum(1 for r in rows if r["race"][k] == "stop") + nei = n - tg - st + print(f" +{k}R first: {tg}/{n} = {100 * tg / n:.0f}% " + f"stop first: {st}/{n} = {100 * st / n:.0f}% " + f"neither touched: {nei}") + + json.dump(rows, open(os.path.join(SCRATCH, "movement.json"), "w"), indent=1) + + +if __name__ == "__main__": + main() diff --git a/research/momentum_oos_summary.md b/research/momentum_oos_summary.md new file mode 100644 index 000000000..effa353dc --- /dev/null +++ b/research/momentum_oos_summary.md @@ -0,0 +1,105 @@ +# Momentum first-pullback — out-of-sample test of exit schemes (2026-08-12) + +Specs v2 and v3 were written and committed BEFORE the out-of-sample window was +touched (commits 4d72621, bc9f889). Pass/fail criteria were declared in those +files in advance. + +- IN-SAMPLE (IS): 2025-08-11 .. 2026-08-08, n=98 entries +- OUT-OF-SAMPLE (OOS): 2024-08-01 .. 2025-08-01, n=71 entries +- Entries are IDENTICAL across all exit schemes (v1 entry logic untouched). + +## 1. v1 entry logic replicates out-of-sample + + IS OOS + trades 99 71 + win rate 32.3% 31.0% + expectancy -0.105 R -0.105 R + funnel 7% of cands 6% of cands + +The v1 indicator-exit result reproduced to three decimals on data it had never +seen. The entry engine and the cost problem are both stable and real. + +## 2. Exit-scheme comparison (mean return per trade, 0.5%/side) + + scheme IS OOS OOS criteria + ------------------------------------------------------------ + v2 dip-conditioned TP +5.23% +3.61% ALL 5 PASS + control flat +10% +2.98% -0.66% FAIL (a,b,c,d) + v3-dipcond ladder +1.19% +1.04% FAIL (c) + v3-nostop ladder +1.03% +0.31% FAIL (b,c) + v3-pbstop ladder -1.54% -1.81% FAIL (a,b,c,d) + v1 indicator exits -1.06% -1.05% FAIL + +v2 OOS detail: n=71, WR 75%, mean +3.61%, median +7.46%, p25 +1.08%, +worst -36.9%. At 1.0%/side: +2.99%. Excluding top-5 symbols: +2.41%. +H1 +5.39%, H2 +2.07%. All five pre-registered criteria met. + +## 3. The laddered scale-out (v3) does not work here + +Selling 25% at +5% caps the tranche that has to pay for the losers, and the +breakeven ratchet after B1 converts many would-be winners into ~-0.4% scratches +(v3 median return IS +4.94%, OOS -0.37%). The ratchet also fires exactly during +the deep post-entry shakeout the movement study documented, so it exits before +the recovery it was waiting for. Both windows agree. + +v3-pbstop is the worst scheme tested in both windows. That is the third +independent measurement pointing at the same conclusion: on this pattern, a +stop at the pullback low is the single most damaging choice. + +## 4. The conditioning, not the numbers, is load-bearing + +Perturbing the v2 schedule on OOS data (mean %/trade, 0.5%/side): + + frozen 20/15/12/8/4 +3.61 + shift -4 +3.66 shift +2 +3.24 + shift -2 +3.71 shift +4 +3.37 + steeper 30/20/12/6/2 +5.18 flatter 14/12/10/8/6 +1.55 + REMOVE conditioning (flat 12) +0.32 + REMOVE conditioning (flat 8) -0.01 + REMOVE conditioning (flat 10) -0.66 + +Every perturbation that KEEPS the dip-conditioning stays positive; every +variant that REMOVES it collapses to zero. The specific breakpoints are not +what is producing the result, which is the opposite of what a curve-fit looks +like. The flat +10% control passed IS and failed OOS - i.e. the control was +the fitted thing, and the conditioning is what survived. + +Mechanism: lowering the profit bar after a dip converts "dipped, partially +recovered" trades into small wins instead of letting them ride to a large +time-exit loss. It is a direct application of the recovery matrix (recovery +probability decays with dip depth). + +## 5. Survivorship check — measured, not assumed + +The universe is Alpaca ACTIVE assets, so pumps that later delisted are absent. +A no-stop scheme is maximally exposed to that. Measured directly by rescanning +the DELISTED universe over the same OOS window: + + inactive US equities 19,198 + non-OTC, clean symbols 1,322 + five-pillar candidate days 36 + valid first-pullback entries 2 + v2 result on those entries GV +14.4%, NCI +14.4% (mean +14.4%) + +Both delisted entries were WINNERS. Including them would have raised the OOS +mean, not lowered it. n=2 is too small to be conclusive, but the specific fear +- that the missing population is full of catastrophic no-stop losses - is not +supported by what is measurable. + +## 6. Status and what is NOT established + +v2 meets every pre-registered bar on unseen data, with a mechanism story, a +fragility test that points the right way, and a survivorship probe that came +back clean. That is the strongest evidence any candidate in this project has +produced. + +Still not established: +- Real fill quality. Every number assumes a resting limit fills AT the target + and entries pay 0.5%. Forward paper log is the only honest read. +- 25% of trades lose, 18% lose >=10%, and the worst was -36.9% with NO stop. + Position sizing must assume a full-loss tail. +- Halt behaviour is not modelled beyond the bar data. +- Two windows, n=169 combined, one pattern, one asset class. + +Next: run v2 exits in the nightly forward log alongside v1 so live fills +accumulate against both. diff --git a/research/momentum_paper.py b/research/momentum_paper.py new file mode 100644 index 000000000..d8bfe1c0f --- /dev/null +++ b/research/momentum_paper.py @@ -0,0 +1,355 @@ +#!/usr/bin/env python3 +"""Momentum first-pullback paper trader (Sleeve E candidate). + +Run after the close each weekday. Scans the day's gainers for five-pillar +candidates, replays the morning's 1-min bars through the frozen mechanical +rules in momentum_spec_v1.md, and appends any trades to momentum_paper_log.json. + +Fully mechanical: no discretionary inputs, so post-close replay is honest. +Floats come from research/float_cache.json (symbol -> float shares), populated +from FMP shares-float lookups at scan time. + +Usage: ALPACA_API_KEY=... ALPACA_API_SECRET=... python3 momentum_paper.py [YYYY-MM-DD] +""" +import json +import os +import sys +from datetime import datetime, timedelta + +import requests + +KEY = os.environ["ALPACA_API_KEY"] +SEC = os.environ["ALPACA_API_SECRET"] +HDR = {"APCA-API-KEY-ID": KEY, "APCA-API-SECRET-KEY": SEC} +DATA = "https://data.alpaca.markets" +HERE = os.path.dirname(os.path.abspath(__file__)) +LOG_PATH = os.path.join(HERE, "momentum_paper_log.json") +FLOAT_CACHE_PATH = os.path.join(HERE, "float_cache.json") + +SLIP = 0.005 # 0.5%/side +ENTRY_START = "07:00" +ENTRY_END = "09:45" +FLAT_TIME = "10:00" +SQUEEZE_PCT = 0.10 +MAX_RETRACE = 0.50 +PRICE_MIN, PRICE_MAX = 2.0, 20.0 +MIN_GAIN = 10.0 +MIN_RELVOL = 5.0 +MAX_FLOAT = 20_000_000 +MIN_GAP = 2.0 + + +def et_offset(date_str): + """US Eastern UTC offset (hours) for a YYYY-MM-DD date; covers 2024-2027.""" + for a, b in (("2024-03-10", "2024-11-03"), ("2025-03-09", "2025-11-02"), + ("2026-03-08", "2026-11-01"), ("2027-03-14", "2027-11-07")): + if a <= date_str < b: + return -4 + return -5 + + +def et_hhmm(ts): + dt = datetime.strptime(ts[:16], "%Y-%m-%dT%H:%M") + timedelta(hours=et_offset(ts[:10])) + return dt.strftime("%H:%M") + + +def get(url, **params): + r = requests.get(url, headers=HDR, params=params, timeout=30) + r.raise_for_status() + return r.json() + + +def movers(top=25): + return get(f"{DATA}/v1beta1/screener/stocks/movers", top=top).get("gainers", []) + + +def daily_bars(sym, limit, end_s): + # Alpaca defaults start to the current day when omitted, which would return + # a single bar; always pass an explicit lookback window. + start_s = (datetime.utcnow() - timedelta(days=200)).strftime("%Y-%m-%dT00:00:00Z") + bars = get( + f"{DATA}/v2/stocks/{sym}/bars", + timeframe="1Day", limit=limit, adjustment="all", feed="sip", + start=start_s, end=end_s, sort="desc", + ).get("bars") or [] + return bars[::-1] # chronological for callers + + +def minute_bars(sym, day): + off = et_offset(day) + want_end = f"{day}T{10 - off:02d}:16:00Z" # 10:16 ET buffer + cap = (datetime.utcnow() - timedelta(minutes=16)).strftime("%Y-%m-%dT%H:%M:%SZ") + return get( + f"{DATA}/v2/stocks/{sym}/bars", + timeframe="1Min", adjustment="raw", feed="sip", limit=10000, + start=f"{day}T{4 - off:02d}:00:00Z", # 04:00 ET + end=min(want_end, cap), + ).get("bars") or [] + + +def load_json(path, default): + if os.path.exists(path): + with open(path) as f: + return json.load(f) + return default + + +def check_pillars(sym, day, pct_gain, price, rank, floats, end_s): + """Return (passes, detail dict). Uses daily bars for relvol + gap.""" + d = {"symbol": sym, "day": day, "pct_gain": round(pct_gain, 1), "price": price, + "gainer_rank": rank} + # common stock only: skip preferreds/warrants/units/rights (mirror backtest) + if "." in sym or "/" in sym or (len(sym) == 5 and sym[-1] in "WRU"): + d["reject"] = "not common stock" + return False, d + if not (PRICE_MIN <= price <= PRICE_MAX): + return False, d + if pct_gain < MIN_GAIN: + return False, d + bars = daily_bars(sym, 55, end_s) + if len(bars) < 2 or bars[-1]["t"][:10] != day: + d["reject"] = "no daily bar for scan day" + return False, d + today, prior = bars[-1], bars[-2] + gap = (today["o"] / prior["c"] - 1) * 100 + d["gap_pct"] = round(gap, 1) + hist = [b["v"] for b in bars[:-1]] + avg_vol = sum(hist[-50:]) / len(hist[-50:]) + relvol = today["v"] / avg_vol if avg_vol else 0 + d["relvol"] = round(relvol, 1) + d["volume"] = today["v"] + flt = floats.get(sym) + d["float"] = flt + if gap < MIN_GAP: + d["reject"] = "gap" + return False, d + if relvol < MIN_RELVOL: + d["reject"] = "relvol" + return False, d + if flt is not None and flt >= MAX_FLOAT: + d["reject"] = "float" + return False, d + d["float_unknown"] = flt is None + d["catalyst_waived"] = rank <= 3 + return True, d + + +def replay(sym, day, detail, bars=None): + """State machine per momentum_spec_v1.md. Returns trade dict or None.""" + if bars is None: + bars = minute_bars(sym, day) + if len(bars) < 10: + return None + swing_low = None + squeeze_high = None + squeeze_active = False + move_green_vols = [] + pullback = [] # candles since squeeze_high + disqualified = False + dq_reason = None + entered = False + trade = None + cum_pv = 0.0 + cum_v = 0 + ema = None + ema_k = 2 / (9 + 1) + prev = None + in_window_yet = False + + for b in bars: + t_et = et_hhmm(b["t"]) + typ = (b["h"] + b["l"] + b["c"]) / 3 + cum_pv += typ * b["v"] + cum_v += b["v"] + vwap = cum_pv / cum_v if cum_v else b["c"] + ema = b["c"] if ema is None else b["c"] * ema_k + ema * (1 - ema_k) + + # VWAP/9EMA accumulate from 04:00 ET, but move detection starts at 07:00 + # ET (source watches scanners 07:00-10:00; pre-7:00 wiggles are not "the + # first pullback"). + if t_et < ENTRY_START: + prev = b + continue + if not in_window_yet: + in_window_yet = True + swing_low = b["l"] + swing_low = min(swing_low, b["l"]) + + if entered: + tr = trade + stop = tr["stop"] + risk = tr["entry_px_raw"] - stop + reason = None + exit_px = None + if b["l"] <= stop: + reason, exit_px = "stop", stop * 0.99 + else: + body = abs(b["c"] - b["o"]) + rng = b["h"] - b["l"] + wick = b["h"] - max(b["c"], b["o"]) + red = b["c"] < b["o"] + if rng > 0 and wick >= 2 * body and wick >= 0.5 * rng: + reason, exit_px = "topping_tail", b["c"] + elif red and prev is not None and prev["c"] > prev["o"] and b["v"] >= 2 * prev["v"]: + reason, exit_px = "heavy_red", b["c"] + elif red and body >= 0.5 * risk: + reason, exit_px = "material_red", b["c"] + elif b["c"] < ema: + reason, exit_px = "ema_break", b["c"] + else: + tr["slow_run"] = ( + tr.get("slow_run", 0) + 1 + if b["v"] < 0.5 * tr["entry_bar_vol"] else 0 + ) + if tr["slow_run"] >= 3 and b["c"] <= tr["slow_anchor"]: + reason, exit_px = "slowdown", b["c"] + if tr["slow_run"] == 1: + tr["slow_anchor"] = b["c"] + if reason is None and t_et >= FLAT_TIME: + reason, exit_px = "time", b["o"] + if reason: + fill = exit_px * (1 - SLIP) + tr["exit_time_et"] = t_et + tr["exit_reason"] = reason + tr["exit_px_raw"] = round(exit_px, 4) + tr["exit_px"] = round(fill, 4) + tr["ret_pct"] = round((fill / tr["entry_px"] - 1) * 100, 2) + tr["r_multiple"] = round( + (fill - tr["entry_px"]) / (tr["entry_px"] - stop * 0.99), 2 + ) if tr["entry_px"] > stop * 0.99 else None + tr.pop("slow_run", None) + tr.pop("slow_anchor", None) + return tr + prev = b + continue + + crossing = ( + squeeze_active and not disqualified and pullback + and b["h"] > pullback[-1]["h"] + ) + if crossing and len(pullback) >= 2: + # crossing candle -> entry + if ENTRY_START <= t_et <= ENTRY_END: + raw = pullback[-1]["h"] + 0.01 + stop = min(c["l"] for c in pullback) + if raw > stop: + trade = { + "symbol": sym, "date": day, + "entry_time_et": t_et, + "entry_px_raw": round(raw, 4), + "entry_px": round(raw * (1 + SLIP), 4), + "stop": round(stop, 4), + "squeeze_high": round(squeeze_high, 4), + "swing_low": round(swing_low, 4), + "entry_bar_vol": b["v"], + "pillars": detail, + } + entered = True + prev = b + continue + else: + disqualified, dq_reason = True, "trigger outside window" + if squeeze_high is None or (b["h"] > squeeze_high and (not pullback or crossing)): + # squeeze start/continuation, or resumption after a <2-candle dip + squeeze_high = b["h"] + pullback = [] + if b["c"] > b["o"]: + move_green_vols.append(b["v"]) + if squeeze_high >= swing_low * (1 + SQUEEZE_PCT): + squeeze_active = True + elif squeeze_active and not disqualified: + pullback.append(b) + retrace_den = squeeze_high - swing_low + retrace = (squeeze_high - min(c["l"] for c in pullback)) / retrace_den if retrace_den > 0 else 0 + mean_green = sum(move_green_vols) / len(move_green_vols) if move_green_vols else 0 + red = b["c"] < b["o"] + if retrace > MAX_RETRACE: + disqualified, dq_reason = True, "retrace>50%" + elif red and mean_green and b["v"] > 1.25 * mean_green: + disqualified, dq_reason = True, "heavy red vol in pullback" + elif b["c"] < vwap: + disqualified, dq_reason = True, "closed below VWAP" + elif b["c"] < ema: + disqualified, dq_reason = True, "closed below 9EMA" + prev = b + + if entered and trade and "exit_reason" not in trade: + last = bars[-1] + fill = last["c"] * (1 - SLIP) + trade["exit_time_et"] = et_hhmm(last["t"]) + trade["exit_reason"] = "data_end" + trade["exit_px_raw"] = round(last["c"], 4) + trade["exit_px"] = round(fill, 4) + trade["ret_pct"] = round((fill / trade["entry_px"] - 1) * 100, 2) + trade.pop("slow_run", None) + trade.pop("slow_anchor", None) + return trade + if disqualified: + return {"symbol": sym, "date": day, "no_trade": True, "dq_reason": dq_reason, + "pillars": detail} + return None + + +def main(): + now = datetime.utcnow() + day = sys.argv[1] if len(sys.argv) > 1 else now.strftime("%Y-%m-%d") + end_s = (now - timedelta(minutes=16)).strftime("%Y-%m-%dT%H:%M:%SZ") + floats = load_json(FLOAT_CACHE_PATH, {}) + log = load_json(LOG_PATH, {"spec": "momentum_spec_v1.md", "trades": [], "scans": []}) + + close_gate = f"{16 - et_offset(day):02d}:16" # 16 min past the 16:00 ET close + if day == now.strftime("%Y-%m-%d") and now.strftime("%H:%M") < close_gate: + print(f"{day} session incomplete (now {now.strftime('%H:%M')} UTC); " + "run after 20:16 UTC for the full replay. Preview of live movers:") + for rank, g in enumerate(movers(10), 1): + print(f" {rank:>2} {g['symbol']:<7} +{g['percent_change']:.0f}% px={g['price']}") + return + + if any(s["day"] == day for s in log["scans"]): + print(f"already scanned {day}; skipping (delete entry to re-run)") + return + + gainers = movers(25) + print(f"=== MOMENTUM SCAN {day} ({len(gainers)} gainers) ===") + candidates = [] + for rank, g in enumerate(gainers, 1): + ok, detail = check_pillars(g["symbol"], day, g["percent_change"], g["price"], + rank, floats, end_s) + if ok: + candidates.append(detail) + fu = " FLOAT?" if detail.get("float_unknown") else "" + print(f" CANDIDATE {detail['symbol']}: +{detail['pct_gain']}% " + f"relvol={detail['relvol']}x gap={detail['gap_pct']}%{fu}") + + results = [] + for det in candidates: + res = replay(det["symbol"], day, det) + if res is None: + print(f" {det['symbol']}: no valid pattern (no pullback completed / no trigger)") + elif res.get("no_trade"): + print(f" {det['symbol']}: DQ - {res['dq_reason']}") + results.append(res) + else: + print(f" TRADE {res['symbol']}: in {res['entry_time_et']} @ {res['entry_px']} " + f"stop {res['stop']} -> out {res['exit_time_et']} @ {res['exit_px']} " + f"[{res['exit_reason']}] ret {res['ret_pct']}% R={res.get('r_multiple')}") + results.append(res) + + log["scans"].append({"day": day, "n_gainers": len(gainers), + "n_candidates": len(candidates)}) + log["trades"].extend(results) + with open(LOG_PATH, "w") as f: + json.dump(log, f, indent=1) + + real = [t for t in log["trades"] if not t.get("no_trade")] + if real: + rs = [t["r_multiple"] for t in real if t.get("r_multiple") is not None] + wins = sum(1 for t in real if t["ret_pct"] > 0) + print(f"\nRunning: {len(real)} trades, {wins} wins " + f"({100 * wins / len(real):.0f}%), sum R = {sum(rs):+.2f}") + else: + print("\nRunning: no trades yet") + + +if __name__ == "__main__": + main() diff --git a/research/momentum_paper_log.json b/research/momentum_paper_log.json new file mode 100644 index 000000000..f33fb05c9 --- /dev/null +++ b/research/momentum_paper_log.json @@ -0,0 +1,524 @@ +{ + "spec": "momentum_spec_v1.md", + "trades": [ + { + "symbol": "PLAG", + "date": "2026-08-11", + "no_trade": true, + "dq_reason": "retrace>50%", + "pillars": { + "symbol": "PLAG", + "day": "2026-08-11", + "pct_gain": 927.0, + "price": 5.81, + "gainer_rank": 1, + "gap_pct": 89.1, + "relvol": 128.6, + "volume": 198673672, + "float": 11638505, + "float_unknown": false, + "catalyst_waived": true, + "float_fail": false + } + }, + { + "symbol": "WXM", + "date": "2026-08-11", + "no_trade": true, + "dq_reason": "retrace>50%", + "pillars": { + "symbol": "WXM", + "day": "2026-08-11", + "pct_gain": 97.5, + "price": 7.9, + "gainer_rank": 3, + "gap_pct": 168.0, + "relvol": 320.6, + "volume": 42123708, + "float": 10017800, + "float_unknown": false, + "catalyst_waived": true, + "float_fail": false + } + }, + { + "symbol": "QMCO", + "date": "2026-08-11", + "entry_time_et": "09:34", + "entry_px_raw": 16.31, + "entry_px": 16.3916, + "stop": 15.509, + "squeeze_high": 16.5, + "swing_low": 13.25, + "entry_bar_vol": 144576, + "pillars": { + "symbol": "QMCO", + "day": "2026-08-11", + "pct_gain": 64.7, + "price": 19.4, + "gainer_rank": 6, + "gap_pct": 23.3, + "relvol": 13.1, + "volume": 16440850, + "float": 38959887, + "float_unknown": false, + "catalyst_waived": false, + "float_fail": true + }, + "exit_time_et": "09:38", + "exit_reason": "heavy_red", + "exit_px_raw": 16.1301, + "exit_px": 16.0494, + "ret_pct": -2.09, + "r_multiple": -0.33 + }, + { + "symbol": "AIFA", + "date": "2026-08-11", + "no_trade": true, + "dq_reason": "closed below 9EMA", + "pillars": { + "symbol": "AIFA", + "day": "2026-08-11", + "pct_gain": 50.7, + "price": 3.18, + "gainer_rank": 8, + "gap_pct": 8.1, + "relvol": 82.1, + "volume": 7117426, + "float": 3231310, + "float_unknown": false, + "catalyst_waived": false, + "float_fail": false + } + }, + { + "symbol": "MSGY", + "date": "2026-08-11", + "no_trade": true, + "dq_reason": "heavy red vol in pullback", + "pillars": { + "symbol": "MSGY", + "day": "2026-08-11", + "pct_gain": 48.2, + "price": 3.43, + "gainer_rank": 10, + "gap_pct": 18.8, + "relvol": 278.6, + "volume": 40487113, + "float": 340625, + "float_unknown": false, + "catalyst_waived": false, + "float_fail": false + } + }, + { + "symbol": "STIM", + "date": "2026-08-11", + "entry_time_et": "07:58", + "entry_px_raw": 2.41, + "entry_px": 2.422, + "stop": 2.38, + "squeeze_high": 2.48, + "swing_low": 2.18, + "entry_bar_vol": 9069, + "pillars": { + "symbol": "STIM", + "day": "2026-08-11", + "pct_gain": 47, + "price": 3.19, + "gainer_rank": 11, + "gap_pct": 26.0, + "relvol": 16.4, + "volume": 28820236, + "float": 28286761, + "float_unknown": false, + "catalyst_waived": false, + "float_fail": true + }, + "exit_time_et": "08:00", + "exit_reason": "heavy_red", + "exit_px_raw": 2.445, + "exit_px": 2.4328, + "ret_pct": 0.44, + "r_multiple": 0.16 + }, + { + "symbol": "NIQ", + "date": "2026-08-11", + "no_trade": true, + "dq_reason": "trigger outside window", + "pillars": { + "symbol": "NIQ", + "day": "2026-08-11", + "pct_gain": 42.0, + "price": 16.58, + "gainer_rank": 13, + "gap_pct": 17.4, + "relvol": 6.8, + "volume": 9821260, + "float": 56159130, + "float_unknown": false, + "catalyst_waived": false, + "float_fail": true + } + }, + { + "symbol": "GRI", + "date": "2026-08-11", + "entry_time_et": "09:39", + "entry_px_raw": 1.94, + "entry_px": 1.9497, + "stop": 1.9, + "squeeze_high": 1.96, + "swing_low": 1.76, + "entry_bar_vol": 11868, + "pillars": { + "symbol": "GRI", + "day": "2026-08-11", + "pct_gain": 29.4, + "price": 2.2, + "gainer_rank": 25, + "gap_pct": 9.4, + "relvol": 86.9, + "volume": 6485619, + "float": 89823, + "float_unknown": false, + "catalyst_waived": false, + "float_fail": false + }, + "exit_time_et": "09:40", + "exit_reason": "stop", + "exit_px_raw": 1.881, + "exit_px": 1.8716, + "ret_pct": -4.01, + "r_multiple": -1.14 + }, + { + "symbol": "BOXL", + "date": "2026-08-12", + "no_trade": true, + "dq_reason": "closed below VWAP", + "pillars": { + "symbol": "BOXL", + "day": "2026-08-12", + "pct_gain": 168.6, + "price": 7.87, + "gainer_rank": 2, + "gap_pct": 55.8, + "relvol": 91.1, + "volume": 64468826, + "float": null, + "float_unknown": true, + "catalyst_waived": true + } + }, + { + "symbol": "QNTU", + "date": "2026-08-12", + "no_trade": true, + "dq_reason": "retrace>50%", + "pillars": { + "symbol": "QNTU", + "day": "2026-08-12", + "pct_gain": 53.2, + "price": 16.52, + "gainer_rank": 11, + "gap_pct": 12.6, + "relvol": 5.1, + "volume": 135231, + "float": null, + "float_unknown": true, + "catalyst_waived": false + } + }, + { + "symbol": "XHLD", + "date": "2026-08-12", + "no_trade": true, + "dq_reason": "retrace>50%", + "pillars": { + "symbol": "XHLD", + "day": "2026-08-12", + "pct_gain": 49.9, + "price": 5.35, + "gainer_rank": 16, + "gap_pct": 10.6, + "relvol": 6.6, + "volume": 21349322, + "float": null, + "float_unknown": true, + "catalyst_waived": false + } + }, + { + "symbol": "XHG", + "date": "2026-08-13", + "no_trade": true, + "dq_reason": "retrace>50%", + "pillars": { + "symbol": "XHG", + "day": "2026-08-13", + "pct_gain": 348.1, + "price": 4.1, + "gainer_rank": 1, + "gap_pct": 533.9, + "relvol": 2424.6, + "volume": 85017077, + "float": null, + "float_unknown": true, + "catalyst_waived": true + } + }, + { + "symbol": "FGI", + "date": "2026-08-13", + "no_trade": true, + "dq_reason": "retrace>50%", + "pillars": { + "symbol": "FGI", + "day": "2026-08-13", + "pct_gain": 147.8, + "price": 11.72, + "gainer_rank": 4, + "gap_pct": 79.1, + "relvol": 2021.4, + "volume": 101581484, + "float": null, + "float_unknown": true, + "catalyst_waived": false + } + }, + { + "symbol": "DFSC", + "date": "2026-08-13", + "no_trade": true, + "dq_reason": "retrace>50%", + "pillars": { + "symbol": "DFSC", + "day": "2026-08-13", + "pct_gain": 86.3, + "price": 2.31, + "gainer_rank": 6, + "gap_pct": 108.1, + "relvol": 1512.2, + "volume": 112562726, + "float": null, + "float_unknown": true, + "catalyst_waived": false + } + }, + { + "symbol": "CURI", + "date": "2026-08-13", + "entry_time_et": "09:39", + "entry_px_raw": 3.89, + "entry_px": 3.9094, + "stop": 3.79, + "squeeze_high": 3.9, + "swing_low": 3.43, + "entry_bar_vol": 117800, + "pillars": { + "symbol": "CURI", + "day": "2026-08-13", + "pct_gain": 42.5, + "price": 3.99, + "gainer_rank": 21, + "gap_pct": 27.9, + "relvol": 47.5, + "volume": 20256402, + "float": null, + "float_unknown": true, + "catalyst_waived": false + }, + "exit_time_et": "09:46", + "exit_reason": "stop", + "exit_px_raw": 3.7521, + "exit_px": 3.7333, + "ret_pct": -4.5, + "r_multiple": -1.12 + }, + { + "symbol": "WETO", + "date": "2026-08-14", + "no_trade": true, + "dq_reason": "retrace>50%", + "pillars": { + "symbol": "WETO", + "day": "2026-08-14", + "pct_gain": 127.7, + "price": 8.22, + "gainer_rank": 3, + "gap_pct": 195.0, + "relvol": 152.4, + "volume": 58666250, + "float": null, + "float_unknown": true, + "catalyst_waived": true + } + }, + { + "symbol": "CAPR", + "date": "2026-08-14", + "no_trade": true, + "dq_reason": "retrace>50%", + "pillars": { + "symbol": "CAPR", + "day": "2026-08-14", + "pct_gain": 58.0, + "price": 6.65, + "gainer_rank": 7, + "gap_pct": 81.9, + "relvol": 17.9, + "volume": 65827448, + "float": null, + "float_unknown": true, + "catalyst_waived": false + } + }, + { + "symbol": "HHS", + "date": "2026-08-14", + "no_trade": true, + "dq_reason": "retrace>50%", + "pillars": { + "symbol": "HHS", + "day": "2026-08-14", + "pct_gain": 53.0, + "price": 4.3, + "gainer_rank": 9, + "gap_pct": 50.5, + "relvol": 704.6, + "volume": 4639677, + "float": null, + "float_unknown": true, + "catalyst_waived": false + } + }, + { + "symbol": "AEYE", + "date": "2026-08-14", + "entry_time_et": "09:34", + "entry_px_raw": 6.63, + "entry_px": 6.6631, + "stop": 6.6, + "squeeze_high": 6.74, + "swing_low": 5.8782, + "entry_bar_vol": 1738, + "pillars": { + "symbol": "AEYE", + "day": "2026-08-14", + "pct_gain": 37.5, + "price": 7.99, + "gainer_rank": 17, + "gap_pct": 6.5, + "relvol": 8.2, + "volume": 955341, + "float": null, + "float_unknown": true, + "catalyst_waived": false + }, + "exit_time_et": "09:35", + "exit_reason": "stop", + "exit_px_raw": 6.534, + "exit_px": 6.5013, + "ret_pct": -2.43, + "r_multiple": -1.25 + }, + { + "symbol": "EMAT", + "date": "2026-08-14", + "no_trade": true, + "dq_reason": "retrace>50%", + "pillars": { + "symbol": "EMAT", + "day": "2026-08-14", + "pct_gain": 34.1, + "price": 3.03, + "gainer_rank": 23, + "gap_pct": 8.0, + "relvol": 29.9, + "volume": 3509457, + "float": null, + "float_unknown": true, + "catalyst_waived": false + } + }, + { + "symbol": "XOS", + "date": "2026-08-18", + "entry_time_et": "07:15", + "entry_px_raw": 5.18, + "entry_px": 5.2059, + "stop": 5.05, + "squeeze_high": 5.26, + "swing_low": 4.5, + "entry_bar_vol": 1370567, + "pillars": { + "symbol": "XOS", + "day": "2026-08-18", + "pct_gain": 112.4, + "price": 4.44, + "gainer_rank": 6, + "gap_pct": 116.7, + "relvol": 97.2, + "volume": 107893680, + "float": null, + "float_unknown": true, + "catalyst_waived": false + }, + "exit_time_et": "07:16", + "exit_reason": "stop", + "exit_px_raw": 4.9995, + "exit_px": 4.9745, + "ret_pct": -4.44, + "r_multiple": -1.12 + }, + { + "symbol": "SLE", + "date": "2026-08-18", + "no_trade": true, + "dq_reason": "retrace>50%", + "pillars": { + "symbol": "SLE", + "day": "2026-08-18", + "pct_gain": 82.1, + "price": 5.5, + "gainer_rank": 9, + "gap_pct": 106.0, + "relvol": 106.8, + "volume": 49319644, + "float": null, + "float_unknown": true, + "catalyst_waived": false + } + } + ], + "scans": [ + { + "day": "2026-08-11", + "n_gainers": 25, + "n_candidates": 8 + }, + { + "day": "2026-08-12", + "n_gainers": 25, + "n_candidates": 3 + }, + { + "day": "2026-08-13", + "n_gainers": 25, + "n_candidates": 7 + }, + { + "day": "2026-08-14", + "n_gainers": 25, + "n_candidates": 5 + }, + { + "day": "2026-08-18", + "n_gainers": 25, + "n_candidates": 2 + } + ] +} \ No newline at end of file diff --git a/research/momentum_recovery_curve.md b/research/momentum_recovery_curve.md new file mode 100644 index 000000000..287314d8e --- /dev/null +++ b/research/momentum_recovery_curve.md @@ -0,0 +1,114 @@ +# Drawdown -> recovery curve (threshold-free) — 291 ticker-days, + 2201 retracement episodes (every dip below a running high counts). + +## A. Distribution of ALL retracement depths (no minimum) + med 6.82% p75 15.11% p90 35.24% p95 44.80% p99 64.40% max 87.0% + episodes per ticker-day reaching at least X%: + >=1%:7.1 >=2%:6.5 >=3%:5.8 >=4%:5.1 >=5%:4.6 >=6%:4.1 >=8%:3.3 >=10%:2.8 >=12%:2.3 >=15%:1.9 >=20%:1.5 >=25%:1.2 >=30%:1.0 + +## B. THE RECOVERY CURVE P(new high | retracement reached >= X%) + X% n_ev event-wtd 95% CI day-wtd n_days t.rec med + 1 2066 86.1% [ 84.5, 87.4]% 67.7% 289 1m + 2 1892 84.9% [ 83.0, 86.4]% 66.6% 288 1m + 3 1686 83.0% [ 81.1, 84.7]% 64.2% 288 2m + 4 1496 80.9% [ 78.9, 82.8]% 61.1% 288 2m + 5 1341 78.7% [ 76.3, 80.7]% 58.0% 288 3m + 6 1205 76.3% [ 73.7, 78.5]% 55.3% 288 4m + 8 969 70.8% [ 67.9, 73.3]% 49.5% 288 7m + 10 807 65.4% [ 62.2, 68.4]% 45.3% 286 9m + 12 680 59.3% [ 55.7, 62.5]% 39.9% 285 15m + 15 554 51.1% [ 47.2, 54.6]% 32.6% 279 21m + 20 431 40.4% [ 35.5, 45.1]% 25.0% 271 25m + 25 345 32.5% [ 27.7, 37.0]% 20.4% 245 32m + 30 285 26.7% [ 21.7, 31.6]% 17.9% 224 42m + +## C. Conditional on NO recovery (terminal episode, depth >= X) + X% n terminal depth med/p75 close vs peak med + 1 287 37.5%/49.0% -30.9% + 2 286 37.6%/49.0% -30.9% + 3 286 37.6%/49.0% -30.9% + 4 286 37.6%/49.0% -30.9% + 5 286 37.6%/49.0% -30.9% + 6 286 37.6%/49.0% -30.9% + 8 283 37.6%/49.1% -30.9% + 10 279 37.6%/49.1% -31.2% + 12 277 37.8%/49.2% -31.7% + 15 271 38.0%/49.5% -31.9% + 20 257 39.2%/50.5% -33.2% + 25 233 41.1%/50.9% -34.0% + 30 209 42.2%/51.7% -36.5% + +## D. After recovery at reporting scale X: next-leg advance + (next >=X% retracement's peak vs the recovered peak) + X= 2%: n=1021 advance med +3.8% p25 +1.7% p75 +7.3% + X= 5%: n= 790 advance med +4.8% p25 +2.4% p75 +9.0% + X= 8%: n= 516 advance med +7.3% p25 +3.3% p75 +14.0% + X=10%: n= 372 advance med +9.1% p25 +4.0% p75 +16.8% + X=15%: n= 169 advance med +13.2% p25 +5.8% p75 +25.0% + X=20%: n= 69 advance med +16.1% p25 +6.9% p75 +34.9% + +## E. Window split of the event-weighted curve + OOS: X2:85%(694) X5:79%(504) X8:72%(383) X10:68%(324) X15:53%(223) X20:45%(184) + IS: X2:85%(1198) X5:79%(837) X8:70%(586) X10:64%(483) X15:50%(331) X20:37%(247) + +## D2. Next-leg advance: full percentiles (added on request) + + X% n p5 p10 p25 med p75 p90 p95 p99 max mean + 2 1021 +0.4 +0.7 +1.7 +3.8 +7.3 +13.4 +18.1 +30.7 +61.2 +5.7 + 5 790 +0.5 +1.0 +2.4 +4.8 +9.0 +15.7 +19.6 +32.8 +61.2 +7.0 + 8 516 +0.6 +1.3 +3.3 +7.3 +14.0 +19.9 +24.9 +39.2 +61.2 +9.5 + 10 372 +0.6 +1.5 +4.0 +9.1 +16.8 +24.6 +30.2 +42.3 +61.2 +11.5 + 15 169 +0.6 +2.0 +5.8 +13.2 +25.0 +37.5 +49.7 +61.3 +69.5 +17.4 + 20 69 +1.1 +2.8 +6.9 +16.1 +34.9 +49.5 +60.0 +97.7 +120.9 +23.3 + +Share of legs advancing >= threshold: + X% n >=2% >=5% >=10% >=20% >=50% >=100% + 2 1021 71% 39% 15% 3% 0% 0% + 5 790 79% 49% 21% 5% 0% 0% + 8 516 83% 62% 37% 10% 0% 0% + 10 372 85% 69% 47% 17% 0% 0% + 15 169 90% 77% 59% 36% 5% 0% + 20 69 91% 83% 67% 41% 10% 1% + +Windows: med/p90 OOS vs IS agree within ~1pt at X2/X5/X10; X20 thin (30/39). +Note: advance is measured next-peak vs recovered-peak, so it is positive by +construction; p5 ~ +0.5% means 1 in 20 legs barely extends past the old high. + +## D3. Order differentiation (added on request) + +P(recover) and next-leg advance by ORDER of the retracement within the day, +at fixed reporting scales: + +X=2%: k=1 85% | k=2 83% | k=3 78% | k4+ 81% adv med +3.6/+4.2/+3.8/+3.5 +X=5%: k=1 78% | k=2 79% | k=3 78% | k4+ 78% adv med +4.1/+5.3/+4.0/+4.8 +X=10%: k=1 68% | k=2 62% | k=3 65% | k4+ 71% adv med +7.3/+7.0/+9.1/+8.7 + +Depth-band control (X=5 events): within every depth band, order is flat +(e.g. 20%+: 41/46/39% for k=1/2/3). ORDER CARRIES NO MEASURABLE +INFORMATION ONCE DEPTH IS KNOWN; depth is the sufficient statistic among +the variables measured. + +CAUTION on the depth-band numbers (5-8%: ~99-100% recover; 12-20%: ~90-96%; +20%+: ~40%): banding on an episode's FINAL depth is ex-post conditioning - +an episode "ends" shallow mostly because it recovered, and failures keep +deepening (terminal med 37%). The knowable-in-real-time object remains the +survival curve P(recover | depth has REACHED X), section B. The band table's +legitimate reading: failures are almost never shallow - if a retracement is +going to kill the day, it does so by cutting deep, not by stalling small. + +## D4. Conditional next-junction given previous junction (n=1910 pairs) + +T1. P(next depth | current depth): + cur|next <5 5-10 10-20 >=20 n med next + <5 56% 21% 11% 12% 856 4.1% + 5-10 36% 23% 23% 18% 527 7.7% + 10-20 25% 27% 22% 25% 353 9.4% + >=20 21% 24% 17% 39% 174 12.1% + +T2. by current depth: P(next recovers) 90/89/83/76%; next depth med 4.1->12.1% +T3. by leg advance: P(next recovers) flat 85-91%; next depth med rises 4.6->11.3% +rank corr: depth~next_depth +0.38 | advance~next_depth +0.28 | depth~advance +0.22 + +Depth clusters (volatility clustering): deep junctions beget deep junctions, +and larger legs precede deeper next dips. Recovery odds remain governed by +the junction's own depth; the clustering shifts WHICH depths arrive next. diff --git a/research/momentum_recovery_curve.py b/research/momentum_recovery_curve.py new file mode 100644 index 000000000..6fb25ed15 --- /dev/null +++ b/research/momentum_recovery_curve.py @@ -0,0 +1,211 @@ +#!/usr/bin/env python3 +"""Threshold-free drawdown/recovery analysis on the corrected Cameron entries. + +Episodes are defined WITHOUT any minimum size: an episode begins the moment +price trades below the running high and ends when a new high is made +(recovered) or the session ends (terminal). Every retracement, however +small, is an event; depth grids below are REPORTING cuts, never event +definitions. Within a ticker-day, every interim episode recovers by +construction; at most one terminal episode per day fails. + +Primary object: the recovery curve + P(new high | retracement reached >= X%) for a grid of X +with event-weighted and ticker-day-weighted versions, a ticker-day cluster +bootstrap 95% CI, conditional rebound/leg magnitudes, time-to-recovery from +the X-crossing, and conditional terminal loss when recovery never comes. + +Bar-order convention: within a bar the low is applied before the high +(depth measured through the bar that recovers). Descriptive only. + +Usage: MOMO_OOS=... MOMO_IS=... python3 momentum_recovery_curve.py +""" +import json +import os +import random + +from momentum_v2_exits import pctl + +HERE = os.path.dirname(os.path.abspath(__file__)) +WINDOWS = {"OOS": os.environ["MOMO_OOS"], "IS": os.environ["MOMO_IS"]} +GRID = [1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 25, 30] + + +def tmin(hhmm): + h, m = hhmm.split(":") + return int(h) * 60 + int(m) + + +def episodes_for(t): + """Zero-threshold decomposition of one post-entry path.""" + path = t["path"] + t0 = tmin(path[0]["t"]) + peak = path[0]["h"] + peak_t = 0 + eps = [] + cur = None + for b in path: + mt = tmin(b["t"]) - t0 + # low first (convention) + if b["l"] < peak and (cur is None or b["l"] < cur["trough"]): + if cur is None: + cur = {"peak": peak, "peak_t": peak_t, "trough": b["l"], + "trough_t": mt, "cross_t": {}} + else: + cur["trough"], cur["trough_t"] = b["l"], mt + d = (cur["peak"] - cur["trough"]) / cur["peak"] * 100 + for X in GRID: + if d >= X and X not in cur["cross_t"]: + cur["cross_t"][X] = mt + if b["h"] > peak: + if cur is not None: + cur["recovered"] = True + cur["rec_t"] = mt + eps.append(cur) + cur = None + peak, peak_t = b["h"], mt + if cur is not None: + cur["recovered"] = False + cur["close_px"] = path[-1]["c"] + eps.append(cur) + for ep in eps: + ep["depth"] = (ep["peak"] - ep["trough"]) / ep["peak"] * 100 + ep["peak_pct"] = (ep["peak"] / t["entry_px_raw"] - 1) * 100 + return eps + + +def scale_next_leg(t, X): + """At reporting scale X: after each recovered >=X% retracement, how much + higher is the NEXT >=X% retracement's peak vs the recovered peak.""" + path = t["path"] + peak = path[0]["h"] + events = [] # (peak, recovered) + cur_peak = peak + in_pb = False + trough = None + out = [] + for b in path: + if not in_pb: + if b["h"] > cur_peak: + cur_peak = b["h"] + if b["l"] <= cur_peak * (1 - X / 100): + in_pb = True + trough = b["l"] + pb_peak = cur_peak + else: + trough = min(trough, b["l"]) + if b["h"] > pb_peak: + events.append(pb_peak) + in_pb = False + cur_peak = b["h"] + # advances between consecutive recovered event peaks + for a, b2 in zip(events, events[1:]): + out.append((b2 / a - 1) * 100) + return out + + +def main(): + trades = [] + for win, sc in WINDOWS.items(): + for t in json.load(open(os.path.join(sc, "res_cameron.json")))["items"]: + t = dict(t) + t["window"] = win + trades.append(t) + per_day = [(t, episodes_for(t)) for t in trades] + all_eps = [(t, ep) for t, eps in per_day for ep in eps] + + L = [f"# Drawdown -> recovery curve (threshold-free) — {len(trades)} ticker-days,", + f" {len(all_eps)} retracement episodes (every dip below a running high counts).", ""] + + depths = [ep["depth"] for _, ep in all_eps] + L.append("## A. Distribution of ALL retracement depths (no minimum)") + L.append(f" med {pctl(depths, .5):.2f}% p75 {pctl(depths, .75):.2f}% " + f"p90 {pctl(depths, .9):.2f}% p95 {pctl(depths, .95):.2f}% " + f"p99 {pctl(depths, .99):.2f}% max {max(depths):.1f}%") + L.append(" episodes per ticker-day reaching at least X%:") + row = " " + for X in GRID: + cnt = sum(1 for _, ep in all_eps if ep["depth"] >= X) / len(trades) + row += f" >={X}%:{cnt:.1f}" + L.append(row) + L.append("") + + L.append("## B. THE RECOVERY CURVE P(new high | retracement reached >= X%)") + L.append(f" {'X%':>4} {'n_ev':>6} {'event-wtd':>10} {'95% CI':>15} " + f"{'day-wtd':>8} {'n_days':>7} {'t.rec med':>10}") + rng = random.Random(7) + day_eps = [[ep for ep in eps] for _, eps in per_day] + for X in GRID: + qual = [(ti, ep) for ti, (_, eps) in enumerate(per_day) for ep in eps + if ep["depth"] >= X] + if len(qual) < 10: + continue + rec = sum(1 for _, ep in qual if ep["recovered"]) + p_ev = rec / len(qual) + # day-weighted + dvals = [] + for _, eps in per_day: + q = [ep for ep in eps if ep["depth"] >= X] + if q: + dvals.append(sum(1 for ep in q if ep["recovered"]) / len(q)) + p_day = sum(dvals) / len(dvals) + # cluster bootstrap over ticker-days + boots = [] + for _ in range(1000): + tot = recb = 0 + for _ in range(len(day_eps)): + eps = day_eps[rng.randrange(len(day_eps))] + for ep in eps: + if ep["depth"] >= X: + tot += 1 + recb += ep["recovered"] + if tot: + boots.append(recb / tot) + boots.sort() + lo, hi = boots[int(0.025 * len(boots))], boots[int(0.975 * len(boots))] + trec = [ep["rec_t"] - ep["cross_t"][X] for _, ep in qual + if ep["recovered"] and X in ep["cross_t"]] + L.append(f" {X:>4} {len(qual):>6} {100 * p_ev:>9.1f}% " + f"[{100 * lo:>5.1f},{100 * hi:>5.1f}]% {100 * p_day:>7.1f}% " + f"{len(dvals):>7} {pctl(trec, .5) if trec else float('nan'):>9.0f}m") + L.append("") + + L.append("## C. Conditional on NO recovery (terminal episode, depth >= X)") + L.append(f" {'X%':>4} {'n':>5} {'terminal depth med/p75':>24} {'close vs peak med':>19}") + for X in GRID: + fails = [ep for _, ep in all_eps if not ep["recovered"] and ep["depth"] >= X] + if len(fails) < 5: + continue + dd = [ep["depth"] for ep in fails] + cl = [(ep["close_px"] / ep["peak"] - 1) * 100 for ep in fails] + L.append(f" {X:>4} {len(fails):>5} {pctl(dd, .5):>12.1f}%/{pctl(dd, .75):.1f}% " + f"{pctl(cl, .5):>18.1f}%") + L.append("") + + L.append("## D. After recovery at reporting scale X: next-leg advance") + L.append(" (next >=X% retracement's peak vs the recovered peak)") + for X in (2, 5, 8, 10, 15, 20): + legs = [v for t in trades for v in scale_next_leg(t, X)] + if len(legs) < 10: + continue + L.append(f" X={X:>2}%: n={len(legs):>4} advance med {pctl(legs, .5):+6.1f}% " + f"p25 {pctl(legs, .25):+6.1f}% p75 {pctl(legs, .75):+6.1f}%") + L.append("") + + L.append("## E. Window split of the event-weighted curve") + for win in ("OOS", "IS"): + sub = [(t, ep) for t, ep in all_eps if t["window"] == win] + row = f" {win}: " + for X in (2, 5, 8, 10, 15, 20): + q = [ep for _, ep in sub if ep["depth"] >= X] + if len(q) >= 10: + row += f"X{X}:{100 * sum(e['recovered'] for e in q) / len(q):.0f}%({len(q)}) " + L.append(row) + + txt = "\n".join(L) + print(txt) + with open(os.path.join(HERE, "momentum_recovery_curve.md"), "w") as f: + f.write(txt + "\n") + + +if __name__ == "__main__": + main() diff --git a/research/momentum_runner_forensics.md b/research/momentum_runner_forensics.md new file mode 100644 index 000000000..f0c7a0d4e --- /dev/null +++ b/research/momentum_runner_forensics.md @@ -0,0 +1,58 @@ +# Runner forensics — what separates the monsters + +## A. Post-entry dip depth vs how far it ran AFTER the target filled + (all faithful entries that reached their target) + dip bucket n med run p75 p90 max >50% med giveback + no dip (<2%) 17 +26.1 +56.0 +183.8 +320.1 29% -33.6 + 2-5% 41 +17.6 +37.6 +68.0 +225.9 17% -31.9 + 5-10% 45 +20.5 +48.2 +127.3 +611.7 24% -26.4 + 10-20% 41 +21.5 +64.1 +182.7 +367.3 27% -37.0 + >=20% 41 +11.5 +37.3 +92.6 +153.3 22% -43.4 + +## B. Trailing stop width on a 25% runner (mean %/trade, 0.5%/side) + + ALL entries: OOS n=120 IS n=189 pooled n=309 + variant OOS IS POOL pool@1% poolWR poolMax + sell all (baseline) +0.99 +0.44 +0.65 -0.02 65% +19.4 + trail 3% +1.51 +1.09 +1.26 +0.50 65% +71.0 + trail 5% +1.21 +0.80 +0.96 +0.20 65% +69.2 + trail 8% +0.84 +0.52 +0.65 -0.11 65% +66.6 + trail 10% +0.53 +0.33 +0.41 -0.34 65% +64.8 + trail 12% +0.22 +0.26 +0.25 -0.50 65% +63.1 + trail 15% +0.50 +0.27 +0.36 -0.39 62% +60.4 + trail 20% -0.05 +0.08 +0.03 -0.72 56% +56.1 + flat 10:00 +0.25 +0.26 +0.25 -0.50 54% +77.0 + + 1st-pullback only: OOS n=29 IS n=39 pooled n=68 + variant OOS IS POOL pool@1% poolWR poolMax + sell all (baseline) +5.70 +1.25 +3.15 +2.49 74% +19.4 + trail 3% +6.67 +1.23 +3.55 +2.79 74% +24.3 + trail 5% +6.24 +0.94 +3.20 +2.44 74% +23.4 + trail 8% +5.67 +0.76 +2.85 +2.10 74% +22.1 + trail 10% +5.24 +0.81 +2.70 +1.95 74% +21.2 + trail 12% +4.91 +0.62 +2.45 +1.70 74% +20.3 + trail 15% +4.95 +0.66 +2.49 +1.74 69% +31.1 + trail 20% +4.06 -0.19 +1.62 +0.88 60% +28.3 + flat 10:00 +2.03 -0.17 +0.77 +0.04 54% +34.8 + +## C. What else predicts a big run after the target? + entry_min: + Q1 [2.0..28.0] n=46 med run +13.3% p90 +155.8% >50%: 24% + Q2 [28.0..65.0] n=46 med run +14.3% p90 +89.7% >50%: 22% + Q3 [67.0..111.0] n=46 med run +24.3% p90 +98.3% >50%: 20% + Q4 [112.0..164.0] n=47 med run +19.9% p90 +130.1% >50%: 28% + price: + Q1 [2.1..3.2] n=46 med run +16.8% p90 +148.8% >50%: 26% + Q2 [3.2..4.6] n=46 med run +20.2% p90 +128.1% >50%: 24% + Q3 [4.6..8.3] n=46 med run +22.3% p90 +142.8% >50%: 30% + Q4 [8.3..20.6] n=47 med run +15.1% p90 +55.0% >50%: 13% + risk_pct: + Q1 [0.1..3.4] n=46 med run +18.1% p90 +90.4% >50%: 17% + Q2 [3.5..5.0] n=46 med run +12.7% p90 +73.2% >50%: 17% + Q3 [5.0..7.7] n=46 med run +16.3% p90 +128.8% >50%: 24% + Q4 [7.7..26.5] n=47 med run +23.9% p90 +145.2% >50%: 34% + n_dq: + Q1 [0.0..2.0] n=46 med run +14.4% p90 +84.1% >50%: 20% + Q2 [2.0..2.0] n=46 med run +25.7% p90 +160.0% >50%: 26% + Q3 [2.0..4.0] n=46 med run +19.1% p90 +168.0% >50%: 28% + Q4 [4.0..10.0] n=47 med run +17.3% p90 +77.1% >50%: 19% diff --git a/research/momentum_runner_forensics.py b/research/momentum_runner_forensics.py new file mode 100644 index 000000000..65fabf9df --- /dev/null +++ b/research/momentum_runner_forensics.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python3 +"""What separates the monsters? Forensics on post-target behaviour. + +Clue from the winners table: stocks that went on to run huge barely pulled +back after the target filled (DFDV -6.3%, TRON +5.2%, OGEN -4.3%), while duds +gave back 30-50%. That argues for a TIGHT trailing stop on a runner tranche, +not the wide ones already tested (20-50%, all worse than selling out). + +Sections: + A. Does post-entry DIP DEPTH predict the size of the subsequent run? + B. Tight trailing stops (3-15%) on a 25% runner. + C. Other conditioners: entry time, relative volume, price, prior-day gap. + +Usage: MOMO_OOS=... MOMO_IS=... python3 momentum_runner_forensics.py +""" +import json +import os + +from momentum_faithful import SCHEDULE, THRESHOLDS, FLAT, SLIP +from momentum_v2_exits import pctl + +HERE = os.path.dirname(os.path.abspath(__file__)) +SCRATCHES = {"OOS": os.environ["MOMO_OOS"], "IS": os.environ["MOMO_IS"]} + + +def load(scratch, first_only=False): + items = json.load(open(os.path.join(scratch, "res_faithful.json")))["items"] + if first_only: + items = [x for x in items if x.get("n_dq_before", 0) == 0] + return items + + +def target_fill(tr): + """Walk to the target fill. Returns (idx, target_px, dip_at_fill) or None.""" + raw = tr["entry_px_raw"] + dip, tgt = 0.0, SCHEDULE[0] + for i, b in enumerate(tr["path"]): + if b["t"] >= FLAT: + return None + dip = max(dip, (1 - b["l"] / raw) * 100) + for th in THRESHOLDS: + if dip >= th: + tgt = min(tgt, SCHEDULE[th]) + break + T = raw * (1 + tgt / 100) + if b["h"] >= T: + return i, T, dip + return None + + +def run_with(tr, mode, frac=0.25, slip=SLIP): + raw = tr["entry_px_raw"] + fill = raw * (1 + slip) + tf = target_fill(tr) + if tf is None: # never reached target -> time/close exit on full size + for b in tr["path"]: + if b["t"] >= FLAT: + return (b["o"] * (1 - slip) / fill - 1) * 100 + return (tr["path"][-1]["c"] * (1 - slip) / fill - 1) * 100 + i, T, _ = tf + if mode is None: + return (T / fill - 1) * 100 + proceeds = (1 - frac) * T + rem, hi = frac, tr["path"][i]["h"] + for b in tr["path"][i + 1:]: + hi = max(hi, b["h"]) + if isinstance(mode, tuple): + stop = hi * (1 - mode[1]) + if b["l"] <= stop: + proceeds += rem * stop * (1 - slip) + rem = 0.0 + break + if mode == "flat10" and b["t"] >= FLAT: + proceeds += rem * b["o"] * (1 - slip) + rem = 0.0 + break + if rem > 0: + proceeds += rem * tr["path"][-1]["c"] * (1 - slip) + return (proceeds / fill - 1) * 100 + + +def main(): + out = ["# Runner forensics — what separates the monsters", ""] + allt = {k: load(v) for k, v in SCRATCHES.items()} + pooled = allt["OOS"] + allt["IS"] + + # ---- A. dip depth vs subsequent run ---- + out.append("## A. Post-entry dip depth vs how far it ran AFTER the target filled") + out.append(" (all faithful entries that reached their target)") + out.append(f" {'dip bucket':<16}{'n':>5}{'med run':>9}{'p75':>8}{'p90':>8}" + f"{'max':>9}{'>50%':>7}{'med giveback':>14}") + rows = [] + for t in pooled: + tf = target_fill(t) + if tf is None: + continue + i, T, dip = tf + after = t["path"][i + 1:] + if not after: + continue + runup = (max(b["h"] for b in after) / T - 1) * 100 + give = (min(b["l"] for b in after) / T - 1) * 100 + rows.append((dip, runup, give)) + buckets = [("no dip (<2%)", 0, 2), ("2-5%", 2, 5), ("5-10%", 5, 10), + ("10-20%", 10, 20), (">=20%", 20, 999)] + for lab, lo, hi in buckets: + g = [r for r in rows if lo <= r[0] < hi] + if not g: + continue + ru = sorted(r[1] for r in g) + gv = sorted(r[2] for r in g) + big = sum(1 for x in ru if x >= 50) + out.append(f" {lab:<16}{len(g):>5}{pctl(ru, .5):>+9.1f}{pctl(ru, .75):>+8.1f}" + f"{pctl(ru, .9):>+8.1f}{max(ru):>+9.1f}{100 * big / len(g):>6.0f}%" + f"{pctl(gv, .5):>+14.1f}") + out.append("") + + # ---- B. tight trails ---- + out.append("## B. Trailing stop width on a 25% runner (mean %/trade, 0.5%/side)") + modes = [("sell all (baseline)", None)] + \ + [(f"trail {p}%", ("trail", p / 100)) for p in (3, 5, 8, 10, 12, 15, 20)] + \ + [("flat 10:00", "flat10")] + for setname, sel in (("ALL entries", False), ("1st-pullback only", True)): + sets = {k: load(v, first_only=sel) for k, v in SCRATCHES.items()} + pl = sets["OOS"] + sets["IS"] + out.append(f"\n {setname}: OOS n={len(sets['OOS'])} IS n={len(sets['IS'])} " + f"pooled n={len(pl)}") + out.append(f" {'variant':<22}{'OOS':>8}{'IS':>8}{'POOL':>8}" + f"{'pool@1%':>9}{'poolWR':>8}{'poolMax':>9}") + for name, mode in modes: + vals = {} + for k in ("OOS", "IS"): + r = [run_with(t, mode) for t in sets[k]] + vals[k] = sum(r) / len(r) if r else float("nan") + rp = [run_with(t, mode) for t in pl] + rp10 = [run_with(t, mode, slip=0.01) for t in pl] + w = sum(1 for v in rp if v > 0) + out.append(f" {name:<22}{vals['OOS']:>+8.2f}{vals['IS']:>+8.2f}" + f"{sum(rp) / len(rp):>+8.2f}{sum(rp10) / len(rp10):>+9.2f}" + f"{100 * w / len(rp):>7.0f}%{max(rp):>+9.1f}") + out.append("") + + # ---- C. other conditioners on the run size ---- + out.append("## C. What else predicts a big run after the target?") + feats = [] + for t in pooled: + tf = target_fill(t) + if tf is None: + continue + i, T, dip = tf + after = t["path"][i + 1:] + if not after: + continue + runup = (max(b["h"] for b in after) / T - 1) * 100 + hh, mm = t["entry_time_et"].split(":") + feats.append({ + "runup": runup, "dip": dip, + "entry_min": int(hh) * 60 + int(mm) - 420, + "price": t["entry_px_raw"], + "risk_pct": (t["entry_px_raw"] - t["stop"]) / t["entry_px_raw"] * 100, + "n_dq": t.get("n_dq_before", 0), + }) + for f in ("entry_min", "price", "risk_pct", "n_dq"): + vals = sorted(feats, key=lambda x: x[f]) + q = len(vals) // 4 + out.append(f" {f}:") + for qi in range(4): + seg = vals[qi * q:(qi + 1) * q if qi < 3 else len(vals)] + ru = sorted(x["runup"] for x in seg) + big = sum(1 for x in ru if x >= 50) + out.append(f" Q{qi + 1} [{seg[0][f]:.1f}..{seg[-1][f]:.1f}] n={len(seg)} " + f"med run {pctl(ru, .5):+.1f}% p90 {pctl(ru, .9):+.1f}% " + f">50%: {100 * big / len(seg):.0f}%") + txt = "\n".join(out) + print(txt) + with open(os.path.join(HERE, "momentum_runner_forensics.md"), "w") as f: + f.write(txt + "\n") + + +if __name__ == "__main__": + main() diff --git a/research/momentum_runner_results.md b/research/momentum_runner_results.md new file mode 100644 index 000000000..5348da443 --- /dev/null +++ b/research/momentum_runner_results.md @@ -0,0 +1,33 @@ +# Runner-tranche test — first-pullback entries only +Sell 75% at the v2 dip-conditioned target; the last 25% rides. +All figures %/trade after 0.5%/side slippage (last column 1.0%). + +### OOS (n=29) + variant WR p25 med p75 p90 max mean @1% + v2 sell all (baseline) 79% +3.5 +7.5 +14.4 +14.4 +19.4 +5.70 +5.05 + 25% runner, trail 20% 69% -0.8 +6.5 +10.7 +16.0 +17.4 +4.06 +3.32 + 25% runner, trail 30% 66% -3.4 +4.7 +7.6 +13.3 +20.6 +2.30 +1.58 + 25% runner, trail 40% 62% -4.0 +3.2 +7.5 +10.5 +16.8 +1.04 +0.34 + 25% runner, trail 50% 55% -4.0 +1.2 +6.3 +10.8 +15.9 +0.18 -0.52 + 25% runner, flat 10:00 59% -3.7 +2.9 +7.8 +15.2 +18.8 +2.03 +1.31 + 25% runner, to close 55% -4.0 +1.2 +6.3 +11.7 +32.6 +0.70 +0.00 + +### IS (n=39) + variant WR p25 med p75 p90 max mean @1% + v2 sell all (baseline) 69% -4.6 +3.5 +11.4 +14.4 +19.4 +1.25 +0.58 + 25% runner, trail 20% 54% -4.6 +0.6 +7.8 +11.6 +28.3 -0.19 -0.93 + 25% runner, trail 30% 49% -5.1 -0.4 +6.2 +12.9 +26.2 -0.87 -1.60 + 25% runner, trail 40% 44% -6.5 -2.0 +5.5 +13.7 +25.1 -1.91 -2.63 + 25% runner, trail 50% 44% -8.6 -2.1 +5.5 +13.2 +25.1 -1.98 -2.70 + 25% runner, flat 10:00 51% -8.4 +0.4 +8.8 +16.7 +34.8 -0.17 -0.91 + 25% runner, to close 41% -9.6 -2.1 +5.4 +12.8 +25.1 -2.80 -3.52 + +### POOLED OOS+IS (n=68) + variant WR p25 med p75 p90 max mean @1% + v2 sell all (baseline) 74% -0.9 +7.5 +11.4 +14.4 +19.4 +3.15 +2.49 + 25% runner, trail 20% 60% -1.5 +4.1 +9.0 +14.3 +28.3 +1.62 +0.88 + 25% runner, trail 30% 56% -4.0 +1.9 +6.8 +13.3 +26.2 +0.48 -0.24 + 25% runner, trail 40% 51% -5.9 +0.2 +6.5 +12.9 +25.1 -0.65 -1.36 + 25% runner, trail 50% 49% -6.3 -0.8 +6.2 +12.8 +25.1 -1.06 -1.77 + 25% runner, flat 10:00 54% -6.1 +0.7 +8.2 +16.1 +34.8 +0.77 +0.04 + 25% runner, to close 47% -8.2 -0.8 +5.9 +12.9 +32.6 -1.31 -2.02 diff --git a/research/momentum_runner_test.py b/research/momentum_runner_test.py new file mode 100644 index 000000000..e40c93c13 --- /dev/null +++ b/research/momentum_runner_test.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +"""Runner-tranche test on first-pullback entries. + +Question: 49/53 winners kept rising after the v2 target filled (avg +53.6% +further). Can any part of that be captured by letting a fraction ride? + +Sells (1-F) of the position at the v2 dip-conditioned target, then holds the +remaining F under one of several rules: + trail X% - trailing stop X% below the running high, until 10:00 or close + flat10 - hold to the 10:00 ET time exit + close - hold to the 16:00 close + +Baseline is v2 with the whole position sold at the target. +Run on 1st-pullback entries only (n_dq_before == 0), per window and pooled. + +Usage: MOMO_SCRATCH= python3 momentum_runner_test.py +""" +import json +import os + +from momentum_faithful import SCHEDULE, THRESHOLDS, FLAT, SLIP +from momentum_v2_exits import pctl + +B = os.environ.get("MOMO_BASE", os.path.dirname(os.path.abspath(__file__))) +SCRATCHES = {"OOS": os.environ["MOMO_OOS"], "IS": os.environ["MOMO_IS"]} + + +def entries(scratch): + items = json.load(open(os.path.join(scratch, "res_faithful.json")))["items"] + return [x for x in items if x.get("n_dq_before", 0) == 0] + + +def run(tr, mode, frac=0.25, slip=SLIP): + """mode: None (sell all), ('trail', pct), 'flat10', 'close'.""" + raw = tr["entry_px_raw"] + fill = raw * (1 + slip) + dip, tgt = 0.0, SCHEDULE[0] + proceeds, rem, hi = 0.0, 1.0, None + filled = False + for b in tr["path"]: + if not filled: + if b["t"] >= FLAT: # target never hit + proceeds += rem * b["o"] * (1 - slip) + rem = 0.0 + break + dip = max(dip, (1 - b["l"] / raw) * 100) + for th in THRESHOLDS: + if dip >= th: + tgt = min(tgt, SCHEDULE[th]) + break + T = raw * (1 + tgt / 100) + if b["h"] >= T: + if mode is None: + proceeds += rem * T + rem = 0.0 + break + proceeds += (1 - frac) * T + rem = frac + hi = b["h"] + filled = True + continue + # runner leg + hi = max(hi, b["h"]) + if isinstance(mode, tuple): # trailing stop + stop = hi * (1 - mode[1]) + if b["l"] <= stop: + proceeds += rem * stop * (1 - slip) + rem = 0.0 + break + if mode == "flat10" and b["t"] >= FLAT: + proceeds += rem * b["o"] * (1 - slip) + rem = 0.0 + break + if rem > 0: + proceeds += rem * tr["path"][-1]["c"] * (1 - slip) + return (proceeds / fill - 1) * 100 + + +MODES = [ + ("v2 sell all (baseline)", None), + ("25% runner, trail 20%", ("trail", 0.20)), + ("25% runner, trail 30%", ("trail", 0.30)), + ("25% runner, trail 40%", ("trail", 0.40)), + ("25% runner, trail 50%", ("trail", 0.50)), + ("25% runner, flat 10:00", "flat10"), + ("25% runner, to close", "close"), +] + + +def report(label, trades, out): + out.append(f"\n### {label} (n={len(trades)})") + out.append(f" {'variant':<26}{'WR':>5}{'p25':>8}{'med':>8}{'p75':>8}" + f"{'p90':>8}{'max':>9}{'mean':>8}{'@1%':>8}") + for name, mode in MODES: + r = sorted(run(t, mode) for t in trades) + r10 = [run(t, mode, slip=0.01) for t in trades] + w = sum(1 for v in r if v > 0) + out.append(f" {name:<26}{100 * w / len(r):>4.0f}%" + + "".join(f"{pctl(r, q):>+8.1f}" for q in (.25, .5, .75, .9)) + + f"{max(r):>+9.1f}{sum(r) / len(r):>+8.2f}" + + f"{sum(r10) / len(r10):>+8.2f}") + + +def main(): + out = ["# Runner-tranche test — first-pullback entries only", + "Sell 75% at the v2 dip-conditioned target; the last 25% rides.", + "All figures %/trade after 0.5%/side slippage (last column 1.0%)."] + pooled = [] + for tag, sc in SCRATCHES.items(): + e = entries(sc) + pooled += e + report(tag, e, out) + report("POOLED OOS+IS", pooled, out) + txt = "\n".join(out) + print(txt) + with open(os.path.join(B, "momentum_runner_results.md"), "w") as f: + f.write(txt + "\n") + + +if __name__ == "__main__": + main() diff --git a/research/momentum_spec_v1.md b/research/momentum_spec_v1.md new file mode 100644 index 000000000..1c6ca65ef --- /dev/null +++ b/research/momentum_spec_v1.md @@ -0,0 +1,73 @@ +# Momentum First-Pullback — Mechanical Spec v1 (pre-registered 2026-08-11) + +Sleeve E candidate. Source: momentum_daytrading_notes.md (Ross Cameron first-pullback). +This file freezes the MECHANICAL translation before any paper results exist. +Threshold choices marked [MECH] are our judgment calls where the source uses discretion; +they may be revised only by backtest evidence, never by peeking at forward results. + +## Universe scan (daily, after close, via Alpaca screener + FMP float) + +Pillars (all required unless noted): +1. Relative volume >= 5x 50-day average +2. Day gain >= +10% +3. Price $2-$20 at scan time +4. Float < 20M shares (FMP shares-float; if unavailable, flag float_unknown and log + the trade separately - does not count toward gauntlet n) +5. Gap-up >= +2% vs prior close +Catalyst pillar: not checkable mechanically; waived when the stock is a top-3 gainer +on the day (per source: waived for the obvious leading gainer). + +## Session replay (1-min bars, SIP, 04:00 ET premarket onward) + +- VWAP: cumulative from 04:00 ET. 9EMA: on 1-min closes. +- Entry window: 07:00-09:45 ET. Hard flat: 10:00 ET. +- [MECH] Move detection starts at 07:00 ET (source watches scanners from 07:00; + pre-7:00 premarket wiggles do not consume the "first pullback"). VWAP/9EMA still + accumulate from 04:00. +- Initial move: swing_low = low since 07:00; squeeze active when running high + >= swing_low * 1.10. +- Pullback: begins when a candle fails to make a new session high. Track pullback_low. +- Disqualifiers (any -> no trade on this ticker today; FIRST pullback only): + a. Retrace > 50% of (squeeze_high - swing_low) + b. [MECH] Red pullback candle with volume > 1.25x mean green-candle volume of the + initial move (source: "high volume on red candles") + c. Any pullback candle CLOSES below VWAP + d. Any pullback candle CLOSES below 9EMA +- Entry trigger: after >= 2 pullback candles, first candle whose high breaks the prior + candle's high. Fill = prior candle's high + $0.01, + 0.5% slippage. +- Stop: pullback_low. Assumed fill 1% below stop (gap/halt risk). + +## Exits (evaluated on each completed 1-min candle, first hit wins) + +1. STOP: bar low <= stop -> filled at stop * 0.99. +2. [MECH] TOPPING TAIL: upper wick >= 2x body AND upper wick >= 50% of bar range + -> exit at close. +3. [MECH] HEAVY RED (tape-burst proxy): red candle with volume >= 2x the preceding + green candle's volume -> exit at close. +4. [MECH] MATERIAL RED (source: "a red candle" respected with discretion): red candle + with body >= 0.5x entry risk (entry - stop) -> exit at close. +5. [MECH] BUYING SLOWDOWN: 3 consecutive bars, each volume < 0.5x entry-bar volume, + with no net price gain across them -> exit at close. +6. 9EMA BREAK: close below 9EMA -> exit at close. +7. TIME: flat at 10:00 ET open, no exceptions. +- No profit cap (per source). 2:1 is a selection concept, not an auto-target. +- All exits less 0.5% slippage. One trade per ticker per day; first valid pullback only. + +## Paper accounting + +- Log in R-multiples: R = (exit - entry) / (entry - stop), plus raw %. +- Notional: risk 1% of a nominal $10,000 sleeve-E paper account per trade ($100 risk). +- NOT in AGG-MAX book weights until adapted gauntlet passes: + cross-ticker replication (survives dropping top-5 winners), both time halves in + backtest, n >= 100 combined, costs survive 1% round-trip stress. +- Data honesty: replay uses post-close data but rules are 100% mechanical and frozen + here; no discretionary element exists that could exploit hindsight. + +## Known infidelities vs source (accepted) + +- No Level 2 / tape exits (3 of 6 source indicators) -> our exits are strictly worse + than the source's skilled execution. If edge survives anyway, strong result. +- No halt modeling in fills beyond the 1%-through-stop assumption. +- No news/catalyst read; hot-sector pillar unchecked. +- Walk-away rules 1-2 (give back half day's profit / max daily loss) inactive at + 1-trade-per-ticker paper scale; revisit if concurrency added. diff --git a/research/momentum_spec_v2.md b/research/momentum_spec_v2.md new file mode 100644 index 000000000..4dea79afd --- /dev/null +++ b/research/momentum_spec_v2.md @@ -0,0 +1,69 @@ +# Momentum First-Pullback — Spec v2 (dip-conditioned take-profit) + +PRE-REGISTERED 2026-08-12, BEFORE any out-of-sample data was examined. +Origin: user-proposed exit scheme, designed after reading the v1 recovery matrix +(2025-08..2026-08 sample). That makes the v1 window IN-SAMPLE for this spec. +The out-of-sample test window is 2024-08-01 .. 2025-08-01 and has NOT been +looked at in any form prior to this file being written. + +## What is unchanged from v1 + +Universe, five pillars, first-pullback detection, the four pullback +disqualifiers, and the crossing-candle ENTRY are all exactly as in +momentum_spec_v1.md. Only the exit changes. + +## What changes: the exit + +v1 exits: stop at pullback low + six mechanized indicators. Median stop sat +~3.5% below entry and was touched first in 55-68% of entries. + +v2 exits: +1. NO STOP AT THE PULLBACK LOW. The position is held through the post-entry + shakeout. This is the load-bearing change and the main risk. +2. TAKE-PROFIT is a resting limit at a % above the raw entry price, which + RATCHETS DOWN as the running post-entry dip deepens: + + running dip below entry -> take-profit target + ------------------------------------------------ + none yet (0%) -> +20% + >= 2% -> +15% + >= 5% -> +12% + >= 10% -> +8% + >= 20% -> +4% + + The target only ever moves DOWN, never back up. Rationale (from the v1 + recovery matrix): recovery probability decays with dip depth, so the + profit bar is lowered to match what the survivors actually deliver. +3. TIME EXIT: flat at 10:00 ET at the bar open. No overnight, no afternoon. + +## Fill conventions (identical to v1 so results are comparable) + +- Entry: raw crossing price + 0.5% (market order into momentum). +- Take-profit: filled AT the limit price (resting limit, no spread paid). +- Time exit: bar open - 0.5%. +- Within a single 1-min bar, the dip adjustment is applied BEFORE the target + check (conservative: a same-bar dip can only lower the fill). + +## Pre-registered pass/fail for the out-of-sample window + +Declared BEFORE seeing OOS results. v2 is promoted to the nightly forward log +only if ALL of the following hold on 2024-08-01..2025-08-01: + a. mean return/trade > 0 at 0.5%/side slippage + b. still > 0 at 1.0%/side slippage + c. still > 0 after excluding the top-5 symbols by summed return + d. both OOS halves individually > 0 + e. n >= 50 entries +Anything less is recorded as-is and v2 stays out of the book. + +## Known risks, stated up front + +- NO-STOP EXPOSURE. Worst in-sample trade was -38.9% (10:00 flat). A halt that + reopens far lower, or an offering priced overnight, is uncapped by this spec + intraday. Position sizing must assume a full-loss tail. +- SURVIVORSHIP BIAS CUTS DEEPEST HERE. The backtest universe is today's active + tickers; pumps that delisted are absent, and a no-stop scheme is maximally + exposed to exactly that missing population. The forward paper log is the + only unbiased read. +- The schedule's five breakpoints were chosen by eye on in-sample data. The + flat +10% control (no tuning) is carried through every test as the honest + baseline: if v2 only beats the control in-sample, the breakpoints are fitted. diff --git a/research/momentum_spec_v3.md b/research/momentum_spec_v3.md new file mode 100644 index 000000000..1eea7fabc --- /dev/null +++ b/research/momentum_spec_v3.md @@ -0,0 +1,74 @@ +# Momentum First-Pullback — Spec v3 (laddered scale-out + ratcheting stop) + +PRE-REGISTERED 2026-08-12, BEFORE any out-of-sample data was examined. +Origin: user-proposed. "Take profit at intervals, and set a new stop loss +below a previously crossed basecamp take-profit level." + +Entries are UNCHANGED from v1/v2 (five pillars, first pullback, crossing +candle). Only the exit differs. + +## The ladder + +Basecamps, as % above the raw entry price. Each crossing sells 25% of the +original position at a resting limit: + + B1 = +5% B2 = +10% B3 = +20% B4 = +35% + +Any shares still held at 10:00 ET are sold at the bar open (time exit). + +## The ratchet + +The stop applies only to shares still held, and only moves UP: + + before B1 crossed -> initial stop (see variants) + after B1 crossed -> stop at entry (breakeven) + after B2 crossed -> stop at B1 (+5%) + after B3 crossed -> stop at B2 (+10%) + after B4 crossed -> stop at B3 (+20%) + +## Variants tested (all pre-registered here, before OOS) + +PRIMARY v3-nostop : no initial stop. Holds through the post-entry shakeout + exactly like v2 until B1 is crossed, then ratchets. +SECONDARY v3-pbstop : initial stop at the pullback low (the v1 stop). +SECONDARY v3-dipcond : no initial stop, and the ladder is dip-conditioned - + if the running dip reaches 10%, remaining basecamps are + halved (B->B/2) to match decayed recovery odds. + +The v3-pbstop variant exists to re-test the v1 stop under a laddered exit, +since the v1 evidence (stop touched first 55-68% of entries) and the v2 +evidence (removing it flipped the sign) both point at the initial stop as the +load-bearing choice. Reporting all three keeps that comparison explicit. + +## Fill conventions (identical to v1/v2 for comparability) + +- Entry: raw crossing price + 0.5%. +- Basecamp: filled AT the limit price (resting limit, no spread paid). +- Stop: filled 1% through the stop level, then -0.5% slippage. +- Time exit: bar open - 0.5%. +- Within one 1-min bar the stop is checked BEFORE basecamp crossings, using + the stop level in force at the start of that bar (conservative: adverse + first, and a basecamp crossed in the same bar cannot retroactively protect + the shares). +- Return is the position-weighted average across all tranches. + +## Pre-registered pass/fail (identical battery to v2) + +On 2024-08-01 .. 2025-08-01, a variant is promotable only if ALL hold: + a. mean return/trade > 0 at 0.5%/side slippage + b. still > 0 at 1.0%/side slippage + c. still > 0 after excluding the top-5 symbols by summed return + d. both OOS halves individually > 0 + e. n >= 50 entries + +## Honest status of the parameters + +The four basecamp levels and the 25% tranche size were NOT fitted by search. +They were chosen once, by hand, informed by the published v1 movement stats +(median winner offered ~+23% intraday; 81% of entries touched +10%; 59% +touched +20%; 23% touched +50%). That still counts as in-sample-informed, +because those statistics came from the 2025-08..2026-08 entries. The +2024-08..2025-08 window remains untouched and is the honest test. + +Carried through every comparison as baselines: v1 indicator exits, v2 +dip-conditioned target, and the untuned flat +10% control. diff --git a/research/momentum_spec_v4.md b/research/momentum_spec_v4.md new file mode 100644 index 000000000..e53858ac1 --- /dev/null +++ b/research/momentum_spec_v4.md @@ -0,0 +1,86 @@ +# Momentum — Spec v4: the deployable exit system (2026-08-12) + +Supersedes v1/v2/v3 exits. Entries unchanged (five pillars, first-pullback +pattern, crossing candle, per momentum_daytrading_notes.md and the faithful +scan in momentum_faithful.py). + +## The system + +SELECT (both required, measured at the entry bar): + - PULLBACK WIDTH: (entry - pullback_low) / entry >= 8% + - PRICE: entry price < $8.30 + +ENTER: crossing candle, market, assume +0.5% slippage. + +STOP: NONE at entry. This is not an oversight - a fixed initial stop was + tested at 6/8/10/12/15/20% and EVERY level reduced returns monotonically + (momentum_exit_system_results.md). These stocks dip below the entry and + then recover; a hard stop sells the dip. + +ARM: when price touches +4% above entry, a trailing stop activates. + +TRAIL: 0.75 x ATR(14, 1-min) below the running high. Ratchets up only. + Volatility-scaled, not a fixed percentage - a quiet $3 name and a violent + $7 name get different room, which is the point. + +TIME EXIT: flat at 10:00 ET, at the bar open. Hold-to-close is equivalent + (+7.14 vs +7.96) and adds tail risk, so 10:00 stands. + +## Measured performance + +Selection was done on IS; OOS was held out of every choice above. + + window n WR mean p10 p25 med p75 p90 max min + IS 20 70% +5.00 -1.8 -1.2 +3.1 +6.3 +14.0 +51.1 -36.3 + OOS 21 71% +10.78 -1.4 -1.0 +5.9 +12.1 +21.0 +103.8 -27.8 + POOL 41 71% +7.96 -1.5 -1.0 +4.1 +11.7 +21.0 +103.8 -36.3 + + ~20 trades/year. 12 losers of 41. Average win +14.1%, average loss -6.9%. + +Robustness (POOL mean %/trade): + 0% slip-through +10.10 | 2% +7.96 | 5% +4.76 + 1% entry slip + 2% through +6.89 | + 5% through +3.72 + arm at +2% +8.85 | arm at +8% +5.13 + trail k=0.5 +10.44 | k=0.75 +7.96 | k=1.0 +6.40 + hold to close +7.14 +Positive in both windows under every variant tested. + +## Against the goal + +ACHIEVED - capture the high-daily-return names: max trade +103.8%, p90 +21.0%, + average win +14.1%. The fixed-target exit capped these at +19.4%; the + volatility trail does not cap them at all. +ACHIEVED - limit downside without limiting upside: p10 -1.5%, p25 -1.0%, + average loss -6.9%, and this WITHOUT an initial stop. Downside control + comes from the arm-then-trail structure plus the 10:00 flat, which is what + let the upside stay uncapped. +PARTIALLY ACHIEVED - consistent double-digit returns per trade. Pooled mean + reaches +10.10% at 0% slip-through and +10.44% at trail k=0.5, and OOS + alone is +10.78%. But the IS window is +5.00%, so double digits is NOT + consistent across both windows. Median trade is +4.1%, not double digit. + Honest statement: this system produces a high-single-digit mean with a + double-digit average WIN, not a double-digit median trade. + +## What the price action actually offers (the ceiling) + +Perfect-foresight exit at each trade's post-entry high, by 10:00: + all entries mean +25.6%, median +14.0% + this subset mean +53.2% +v4 captures ~15% of the perfect-foresight ceiling on the selected subset. +Configurations reaching a double-digit mean in BOTH windows exist only at +risk_pct >= 12%, where n=17 pooled (~8 trades/year) - too thin to deploy. +That is the honest frontier: more selectivity buys a higher mean and costs +sample size, and beyond risk>=8% the sample stops supporting the claim. + +## Risks + +- NO STOP. Worst trade -36.3%. Two of 41 lost more than 25%, both gap-throughs + inside a single minute bar. Size assuming a full-loss tail. +- FILL QUALITY IS THE BINDING CONSTRAINT. At 5% slip-through the mean falls to + +4.76%. An ATR trail on a $3 small cap can sit inside the spread. Only live + fills settle this. +- n=41 over two years. Both windows agree in sign and the effect is monotone + in selectivity, but this is a small sample and the selection grid was + searched, so some optimism is baked in. +- Survivorship: the delisted-universe probe found 2 entries, both winners, so + no evidence of a hidden disaster population - but n=2. diff --git a/research/momentum_spec_v5.md b/research/momentum_spec_v5.md new file mode 100644 index 000000000..f005b3e0e --- /dev/null +++ b/research/momentum_spec_v5.md @@ -0,0 +1,79 @@ +# Momentum — Spec v5: DEPLOYED exit system (2026-08-12) + +Supersedes v1-v4. Entries unchanged (five pillars, intraday qualification, +first-pullback pattern, crossing candle — momentum_faithful.py). + +## The system + +SELECT (both, measured at the entry bar): + - PULLBACK WIDTH (entry - pullback_low) / entry >= 8% + - PRICE entry < $8.30 + +ENTER crossing candle, market. Assume +0.5% slippage. + +STOP NONE at entry. Fixed initial stops were tested at 6/8/10/12/15/20% + and every level reduced returns monotonically. These stocks dip below + the entry and then recover; a hard stop sells the dip. + +ARM when price touches +2% above entry, a trailing stop activates. + +TRAIL 0.25 x ATR(14, 1-min) below the running high. Ratchets up only. + Median realised stop distance 1.84% of price (p10 1.10%, p90 3.27%). + +FLAT 10:00 ET at the bar open. + +## Performance + + window n WR mean p10 p25 med p75 p90 max min + IS 20 90% +11.03 -0.0 +2.3 +6.8 +12.4 +18.1 +66.4 -2.7 + OOS 21 90% +16.75 +0.4 +2.6 +8.1 +18.6 +27.5 +125.6 -1.2 + POOL 41 90% +13.96 +0.2 +2.6 +7.9 +15.2 +27.5 +125.6 -2.7 + + 4 losers of 41, average loss -1.8%, worst -2.7%. + 37 winners, average +15.7%. ~20 trades/year. + +## Why arming at +2% is the load-bearing change vs v4 + +v4 armed at +4% and trailed 0.75 ATR; its worst trades were -36.3% and -27.8%. +Those were trades that dipped hard and NEVER reached the +4% arm, so nothing +was protecting them and they rode to the 10:00 exit. Arming at +2% means +essentially every entry arms before it can collapse, converting the left tail +from catastrophic losses into scratches. That single change is what took the +worst case from -36.3% to -2.7% while leaving the upside untouched +(max +125.6%). + +## Fill sensitivity — the one real caveat + +"thru" = extra % the fill slips beyond the stop level. + + thru IS OOS POOL + 0% +13.30 +19.13 +16.29 + 2% +11.03 +16.75 +13.96 <- deployed assumption + 5% +7.63 +13.18 +10.47 + 10% +1.97 +7.22 +4.66 + 15% -3.70 +1.26 -1.16 + 1.0% entry slip + 2% thru: POOL +12.83 + +Double digits in BOTH windows holds while slip-through stays under ~3%. +At 5% the pool is still +10.47 but IS falls to single digits. This is the +number the forward log exists to measure. + +## Honest notes on how this was found + +- The STRUCTURE (wide-pullback + cheap filter, no initial stop, ATR trail) + was selected on IS with OOS held out, and verified OOS. +- The final parameters (k=0.25, arm +2%) were chosen while looking at BOTH + windows. That is not a clean out-of-sample test of those two numbers. + Mitigating evidence: the response is monotone and same-signed in both + windows across the whole sweep, i.e. a trend, not a spike — + k 0.10 0.15 0.25 0.40 0.50 0.75 1.00 + IS +12.57 +12.06 +11.03 +9.49 +8.46 +5.89 +4.48 + OOS +18.34 +17.81 +16.75 +15.27 +14.21 +11.66 +9.24 +- Tighter k keeps improving, which is exactly what an unrealistic-fill + artifact looks like. k=0.10 implies a 0.73% stop distance, inside the + spread on many $2-8 names. k=0.25 (1.84% median distance) is the tightest + point that is defensibly executable, so that is the deployed value rather + than the grid optimum. +- n=41 over two years (~20/yr). Small. +- No stop means a halt or a gap through the trail is uncapped in principle; + none of the 41 produced a loss worse than -2.7%, but size for a tail. diff --git a/research/momentum_spec_v6.md b/research/momentum_spec_v6.md new file mode 100644 index 000000000..5d62079e5 --- /dev/null +++ b/research/momentum_spec_v6.md @@ -0,0 +1,76 @@ +# Momentum — Spec v6: junction-process policy (FROZEN 2026-08-15) + +Frozen BEFORE any code for it runs and BEFORE the blind window is opened. +Reframe: the corrected Cameron setup QUALIFIES a ticker-day; positions are +taken at measured junctions (retracements from the running high), not held +from the crossing candle. + +## Rules + +QUALIFY Corrected Cameron scan (five pillars, intraday qualification + 07:00-10:00, $2-20, >=2-candle pullback, prior-candle-high crossing + per momentum_faithful.py). The moment the first valid crossing + fires is the qualification event. No position is taken there. + Junction tracking begins at that bar; the running high starts at + that bar's high. + +JUNCTION When flat: price retraces >=10% from the running high, the ticker + is ARMED. (Recovery curve: 65% recover; median payoff from -10% + +19.8%; ~2.8 such junctions/day.) + +ENTER While armed: the first 1-min bar whose high breaks the PRIOR bar's + high. Fill at prior bar's high + $0.01, +0.5% slippage. This is a + confirmation entry: the bottom finds us; we never buy a falling + knife. Max 4 entries per ticker-day. + +SIZE 1.0 unit base. 0.5 unit if the just-completed junction reached + >=20% depth (depth clustering: P(next >=20% | current >=20%) = 39%). + +EXIT In position: when price retraces >=10% from the post-entry running + high, sell at that crossing. Fill = crossing price, 2% slip-through, + -0.5% slippage. Then the ticker re-arms (the ongoing retracement + counts toward the next junction) and may re-enter on confirmation. + +ABANDON Any retracement (flat or in position) reaching >=25% from its + running high: if in position, exit at the -25% crossing (2% thru, + -0.5% slip); either way the ticker is DONE for the day. + (Recovery odds <=33% beyond 25%; terminal state median -37%.) + +FLAT Session close, -0.5% slippage, if still holding. + +## Provenance of every number (measured, not searched) + +10% junction: EV table peak zone (+5.5%/junction median-based); 25% abandon: +recovery odds collapse; 20% sizing cut: depth clustering +0.38; confirmation +entry: additional-fall table (recovered episodes dip med 5-6% past a naive +crossing buy; failures dip 24-36% past it). + +## Validation protocol (binding) + +1. BLIND WINDOW: 2023-08-01 .. 2024-08-01, never used anywhere in this + project. Scanned and scored with zero parameter changes. That result is + the verdict. +2. 2024-26 windows reported as IN-SAMPLE CONTEXT (every v6 parameter was + measured on them). +3. Master-table reporting: every qualified ticker-day appears; filters and + variants are columns, never row removal. +4. No changes after seeing blind results. Failures are recorded. +5. Fill sensitivity reported at 0/2/5% slip-through in all tables. + +## Deferred variants (to be pre-registered separately BEFORE testing) + +v6.1 LADDER ENTRY: replace confirmation entry with incremental fills on the +way down (e.g. thirds at -5/-10/-15). Measured context: ladder beats lump +entry on price, but failures fill 2.92 rungs vs 1.77 for recoveries +(adverse selection). Spec to be written and frozen before it is scored. + +## Known weaknesses at freeze time + +- The 10/25/20 depths come from 2024-26 measurements; only the blind window + tests the framework on unseen data. +- Confirmation entries pay for safety by chasing: entry lands above the + trough by an unmeasured amount; the backtest measures that cost. +- Fill quality on 1-min triggers in thin names remains the binding + assumption of every result in this project. +- Junction stats were measured on FULL sessions including afternoon; the + policy trades the full session, where afternoon liquidity is thinner. diff --git a/research/momentum_stepped_trail.py b/research/momentum_stepped_trail.py new file mode 100644 index 000000000..09db053e1 --- /dev/null +++ b/research/momentum_stepped_trail.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 +"""Stepped (profit-scaled) trailing stop. + +Rationale: a single tight trail protects the duds but strangles the runners, +which routinely pull back 10-20% mid-flight. A single wide trail lets runners +breathe but gives back too much on everything else. A STEPPED trail does both: +tight while the trade is unproven, progressively wider as profit accumulates. + +Ladder form: [(profit_threshold_%, trail_%), ...] applied to the running +high; the widest tier whose threshold is met wins. Stop only ratchets up. +No initial stop (the grid search showed every fixed initial stop hurts). +Activation: the trail arms once price touches +ACT% above raw entry. + +Selection on IS, verification on OOS. Fill degradation ("thru") applied to +every stop fill because tight trails are execution-sensitive. + +Usage: MOMO_OOS=... MOMO_IS=... python3 momentum_stepped_trail.py +""" +import json +import os + +from momentum_exit_system import load, stats +from momentum_faithful import FLAT +from momentum_v2_exits import pctl + +HERE = os.path.dirname(os.path.abspath(__file__)) +S_OOS, S_IS = os.environ["MOMO_OOS"], os.environ["MOMO_IS"] + + +def simulate(tr, ladder, act=4, slip=0.005, thru=0.02, cut=FLAT): + raw = tr["entry_px_raw"] + fill = raw * (1 + slip) + armed = False + hi = None + stop = None + for b in tr["path"]: + if cut != "close" and b["t"] >= cut: + return (b["o"] * (1 - slip) / fill - 1) * 100 + if stop is not None and b["l"] <= stop: + return (stop * (1 - thru) * (1 - slip) / fill - 1) * 100 + if not armed: + if b["h"] >= raw * (1 + act / 100): + armed = True + hi = b["h"] + else: + continue + else: + hi = max(hi, b["h"]) + gain = (hi / raw - 1) * 100 + trail = ladder[0][1] + for thr, tw in ladder: + if gain >= thr: + trail = tw + cand = hi * (1 - trail / 100) + stop = cand if stop is None else max(stop, cand) + return (tr["path"][-1]["c"] * (1 - slip) / fill - 1) * 100 + + +LADDERS = { + "flat 3%": [(0, 3)], + "flat 8%": [(0, 8)], + "3->8 @10": [(0, 3), (10, 8)], + "3->10 @10": [(0, 3), (10, 10)], + "3->8@10->15@25": [(0, 3), (10, 8), (25, 15)], + "3->10@10->20@30": [(0, 3), (10, 10), (30, 20)], + "3->12@15->25@40": [(0, 3), (15, 12), (40, 25)], + "2->8@8->15@20": [(0, 2), (8, 8), (20, 15)], + "2->10@10->20@25->30@60": [(0, 2), (10, 10), (25, 20), (60, 30)], + "5->15@20->30@50": [(0, 5), (20, 15), (50, 30)], + "3->8@10->15@25->25@50": [(0, 3), (10, 8), (25, 15), (50, 25)], +} + +FILTERS = { + "ALL": lambda x: True, + "wide pullback (risk>=7.7%)": + lambda x: (x["entry_px_raw"] - x["stop"]) / x["entry_px_raw"] * 100 >= 7.7, + "price<8.3 & risk>=7.7": + lambda x: x["entry_px_raw"] < 8.3 + and (x["entry_px_raw"] - x["stop"]) / x["entry_px_raw"] * 100 >= 7.7, +} + + +def main(): + IS, OOS = load(S_IS), load(S_OOS) + L = ["# Stepped trailing stop", "", + "No initial stop. Trail arms at +4%, widens as profit builds.", + "Fills 0.5%/side, 2% slip through stops, flat 10:00 ET.", ""] + for fname, f in FILTERS.items(): + i_, o = [x for x in IS if f(x)], [x for x in OOS if f(x)] + p = i_ + o + L.append(f"## {fname} (IS {len(i_)}, OOS {len(o)}, pool {len(p)})") + L.append(f" {'ladder':<26}{'IS':>8}{'OOS':>8}{'POOL':>8}{'med':>7}" + f"{'p25':>7}{'p90':>8}{'max':>9}{'WR':>6}{'@5%thru':>9}") + for lab, lad in LADDERS.items(): + ri = [simulate(x, lad) for x in i_] + ro = [simulate(x, lad) for x in o] + rp = [simulate(x, lad) for x in p] + r5 = [simulate(x, lad, thru=0.05) for x in p] + st = stats(rp) + L.append(f" {lab:<26}{sum(ri) / len(ri):>+8.2f}{sum(ro) / len(ro):>+8.2f}" + f"{st['mean']:>+8.2f}{st['med']:>+7.1f}{st['p25']:>+7.1f}" + f"{st['p90']:>+8.1f}{st['max']:>+9.1f}{st['wr']:>5.0f}%" + f"{sum(r5) / len(r5):>+9.2f}") + L.append("") + txt = "\n".join(L) + print(txt) + with open(os.path.join(HERE, "momentum_stepped_trail_results.md"), "w") as f: + f.write(txt + "\n") + + +if __name__ == "__main__": + main() diff --git a/research/momentum_stepped_trail_results.md b/research/momentum_stepped_trail_results.md new file mode 100644 index 000000000..9b465308e --- /dev/null +++ b/research/momentum_stepped_trail_results.md @@ -0,0 +1,47 @@ +# Stepped trailing stop + +No initial stop. Trail arms at +4%, widens as profit builds. +Fills 0.5%/side, 2% slip through stops, flat 10:00 ET. + +## ALL (IS 189, OOS 120, pool 309) + ladder IS OOS POOL med p25 p90 max WR @5%thru + flat 3% +1.21 +1.25 +1.23 +0.5 -1.4 +8.4 +233.8 56% -1.51 + flat 8% -0.16 -0.21 -0.18 -2.9 -5.7 +11.4 +216.6 39% -2.76 + 3->8 @10 +0.78 +0.68 +0.74 +0.3 -1.5 +7.0 +216.6 53% -1.94 + 3->10 @10 +0.53 +0.19 +0.40 -0.1 -1.6 +5.0 +209.7 49% -2.26 + 3->8@10->15@25 +0.71 +0.32 +0.56 +0.3 -1.5 +6.8 +192.5 53% -2.11 + 3->10@10->20@30 +0.17 -0.21 +0.02 -0.1 -1.6 +4.8 +175.3 49% -2.63 + 3->12@15->25@40 +1.54 +0.09 +0.98 +0.4 -1.5 +7.0 +158.1 55% -1.71 + 2->8@8->15@20 -0.27 +0.78 +0.13 +0.3 -0.9 +5.7 +56.2 56% -2.54 + 2->10@10->20@25->30@60 -0.56 +0.15 -0.28 +0.4 -0.8 +4.2 +65.5 57% -2.94 + 5->15@20->30@50 -0.25 +0.16 -0.09 -0.8 -3.1 +7.8 +140.9 43% -2.76 + 3->8@10->15@25->25@50 +0.41 +0.01 +0.26 +0.3 -1.5 +6.8 +158.1 53% -2.39 + +## wide pullback (risk>=7.7%) (IS 35, OOS 27, pool 62) + ladder IS OOS POOL med p25 p90 max WR @5%thru + flat 3% +2.28 +6.31 +4.04 +2.3 -0.4 +13.1 +71.5 73% +0.92 + flat 8% -1.23 +4.46 +1.25 -2.5 -4.8 +11.5 +62.6 47% -1.78 + 3->8 @10 +1.82 +4.59 +3.03 +1.2 -0.5 +10.8 +62.6 71% -0.06 + 3->10 @10 +1.48 +4.06 +2.60 +0.8 -0.6 +9.5 +59.1 61% -0.47 + 3->8@10->15@25 +2.34 +4.07 +3.09 +1.2 -0.5 +8.2 +50.2 71% +0.00 + 3->10@10->20@30 +1.64 +2.99 +2.23 +0.8 -0.6 +9.5 +41.4 61% -0.83 + 3->12@15->25@40 +6.47 +3.07 +4.99 +1.9 -0.4 +7.5 +154.5 71% +1.97 + 2->8@8->15@20 +2.72 +7.18 +4.66 +1.5 +0.1 +19.2 +55.9 76% +1.53 + 2->10@10->20@25->30@60 +1.98 +3.92 +2.82 +1.8 +0.1 +8.3 +65.5 77% -0.26 + 5->15@20->30@50 +1.00 +5.29 +2.87 +0.7 -2.3 +10.5 +65.5 53% -0.22 + 3->8@10->15@25->25@50 +1.85 +2.99 +2.34 +1.2 -0.5 +8.2 +32.6 71% -0.72 + +## price<8.3 & risk>=7.7 (IS 22, OOS 22, pool 44) + ladder IS OOS POOL med p25 p90 max WR @5%thru + flat 3% +1.97 +6.74 +4.35 +2.7 -0.3 +13.0 +71.5 73% +1.25 + flat 8% -0.48 +5.69 +2.61 +1.2 -4.3 +12.8 +62.6 57% -0.44 + 3->8 @10 +2.02 +5.15 +3.59 +1.9 -0.3 +10.2 +62.6 73% +0.51 + 3->10 @10 +1.66 +4.70 +3.18 +1.3 -0.6 +9.5 +59.1 61% +0.12 + 3->8@10->15@25 +2.85 +4.67 +3.76 +1.9 -0.3 +10.2 +50.2 73% +0.68 + 3->10@10->20@30 +1.93 +3.39 +2.66 +1.3 -0.6 +9.5 +41.4 61% -0.39 + 3->12@15->25@40 +8.41 +3.25 +5.83 +2.6 -0.3 +7.5 +154.5 70% +2.86 + 2->8@8->15@20 +2.02 +8.36 +5.19 +1.6 -0.2 +24.5 +55.9 73% +2.06 + 2->10@10->20@25->30@60 +1.84 +4.74 +3.29 +2.1 +0.0 +8.8 +65.5 75% +0.22 + 5->15@20->30@50 +0.86 +6.31 +3.59 +1.6 -2.1 +17.3 +65.5 61% +0.51 + 3->8@10->15@25->25@50 +2.06 +3.35 +2.71 +1.9 -0.3 +10.2 +32.6 73% -0.34 + diff --git a/research/momentum_transitions.md b/research/momentum_transitions.md new file mode 100644 index 000000000..5daabe1f7 --- /dev/null +++ b/research/momentum_transitions.md @@ -0,0 +1,70 @@ +# Post-entry state sequences — corrected Cameron entries (n=291) +Pullback threshold T=5% of the running high (measurement convention). +All figures descriptive; nothing optimized. + +## 1. First level touched after entry (race among +-2/5/10%) + first touch 2: 45 (15%) + first touch 5: 0 (0%) + first touch 10: 0 (0%) + first touch -2: 144 (49%) + first touch -5: 0 (0%) + first touch -10: 0 (0%) + first touch ambiguous: 100 (34%) + first touch none: 2 (1%) + +## 2. Conditional races (u/d same bar counted adverse) + reached +5% (n=233): next +10% first 42% | fell to +0% first 58% | neither 0% + reached +10% (n=186): next +20% first 46% | fell to +0% first 53% | neither 1% + reached +10% (n=186): next +15% first 40% | fell to +5% first 60% | neither 0% + reached +2% (n=263): next +5% first 44% | fell to -2% first 56% | neither 0% + +## 3. How many >=5% pullbacks occur per ticker-day + 0 pullbacks: 3 (1%) + 1 pullbacks: 62 (21%) + 2 pullbacks: 47 (16%) + 3 pullbacks: 40 (14%) + 4 pullbacks: 36 (12%) + 5 pullbacks: 28 (10%) + 6 pullbacks: 16 (5%) + mean 4.5 pullback events/day + +## 4. Expansion legs (size of each squeeze) + leg 1 = entry->first peak; leg k = trough(k-1)->peak k + leg 1: n=288 gain med +2.9% p25 +1.3% p75 +6.1% dur med 0min + leg 2: n=226 gain med +18.0% p25 +12.0% p75 +28.0% dur med 3min + leg 3: n=179 gain med +19.0% p25 +12.9% p75 +32.9% dur med 3min + leg 4+: n=609 gain med +19.0% p25 +13.5% p75 +29.0% dur med 4min + +## 5. Pullback events by order (the transition table) + PB# n P(new high) depth med p25 p75 peak@ med t.peak t.rec + 1 288 78% 11.6% 7.8% 26.9% +2.9% 0m 4m + 2 226 79% 14.0% 7.8% 30.6% +8.7% 6m 5m + 3 179 78% 14.0% 8.6% 28.4% +16.2% 20m 5m + 4+ 609 78% 13.1% 8.5% 24.8% +47.2% 104m 4m + (depth = % off the peak; peak@ = peak level vs entry; t.peak = + minutes entry->peak; t.rec = minutes pullback-start->new high) + +## 6. Failed pullbacks: where they end up + PB1 failures n=62: depth by close med 36.9% p75 46.5% max 78.0% + PB2 failures n=47: depth by close med 39.3% p75 50.7% max 84.4% + PB3 failures n=40: depth by close med 37.4% p75 49.1% max 70.6% + PB4+ failures n=137: depth by close med 37.5% p75 49.0% max 87.0% + +## 7. Path dependence checks + P(PB2 new high | PB1 shallow (<8%)): 79% (n=77) + P(PB2 new high | PB1 deep (>=8%)): 79% (n=149) + P(new high) by pullback START time (all PB orders): + start 0-60min: 78% (n=829) + start 60-120: 76% (n=172) + start 120-240: 82% (n=187) + start 240+: 72% (n=114) + +## 8. Sensitivity: same transition probs at T=8% + PB1: n=288 P(new high) 70% + PB2: n=202 P(new high) 72% + PB3: n=143 P(new high) 69% + PB4+: n=369 P(new high) 74% + +## 9. Window stability (T=5%) + OOS: PB1 81% (n=108) PB2 77% (n=88) PB3 78% (n=68) PB4+ 77% (n=223) + IS: PB1 77% (n=180) PB2 80% (n=138) PB3 77% (n=111) PB4+ 78% (n=386) diff --git a/research/momentum_transitions.py b/research/momentum_transitions.py new file mode 100644 index 000000000..328246797 --- /dev/null +++ b/research/momentum_transitions.py @@ -0,0 +1,290 @@ +#!/usr/bin/env python3 +"""Post-entry state-sequence analysis on the CORRECTED Cameron entries. + +Descriptive only: transition probabilities and movement percentiles. +No thresholds are searched, no exits simulated, no subsets optimized. + +State machine (measurement convention, declared not optimized): + EXPANSION: price tracking its running high (from the entry bar onward). + PULLBACK k: begins when price first trades >= T% below the running high + (T = 5% main tables; T = 8% sensitivity line). + RECOVERY: the pullback resolves when price exceeds the pre-pullback peak + (a NEW HIGH). If the close arrives first, the pullback FAILED. +All prices relative to the raw entry price; times in minutes after entry. +Full session used (entry -> 16:00) so afternoon behaviour is visible. + +Usage: MOMO_OOS=... MOMO_IS=... python3 momentum_transitions.py +""" +import json +import os + +from momentum_v2_exits import pctl + +HERE = os.path.dirname(os.path.abspath(__file__)) +WINDOWS = {"OOS": os.environ["MOMO_OOS"], "IS": os.environ["MOMO_IS"]} + + +def tmin(hhmm): + h, m = hhmm.split(":") + return int(h) * 60 + int(m) + + +def load(): + out = [] + for win, sc in WINDOWS.items(): + for t in json.load(open(os.path.join(sc, "res_cameron.json")))["items"]: + t = dict(t) + t["window"] = win + out.append(t) + return out + + +def sequence(t, T): + """Decompose one path into expansion/pullback events.""" + e = t["entry_px_raw"] + path = t["path"] + t0 = tmin(path[0]["t"]) + run_max, run_t = path[0]["h"], 0 + events = [] + cur = None # active pullback dict + for b in path: + mt = tmin(b["t"]) - t0 + if cur is None: + if b["h"] > run_max: + run_max, run_t = b["h"], mt + if b["l"] <= run_max * (1 - T / 100): + cur = {"peak": run_max, "peak_pct": (run_max / e - 1) * 100, + "peak_t": run_t, "start_t": mt, + "trough": b["l"], "trough_t": mt} + else: + if b["l"] < cur["trough"]: + cur["trough"], cur["trough_t"] = b["l"], mt + if b["h"] > cur["peak"]: + cur["recovered"] = True + cur["rec_t"] = mt + events.append(cur) + run_max, run_t = b["h"], mt + cur = None + if cur is not None: + cur["recovered"] = False + cur["close_px"] = path[-1]["c"] + events.append(cur) + for k, ev in enumerate(events, 1): + ev["k"] = k + ev["depth_pct"] = (ev["peak"] - ev["trough"]) / ev["peak"] * 100 + # expansion sizes: entry->peak1, trough_k->peak_{k+1} + exps = [] + if events: + exps.append({"k": 1, "gain_pct": (events[0]["peak"] / e - 1) * 100, + "dur": events[0]["peak_t"]}) + for k in range(1, len(events)): + if events[k - 1]["recovered"]: + exps.append({"k": k + 1, + "gain_pct": (events[k]["peak"] / events[k - 1]["trough"] - 1) * 100, + "dur": events[k]["peak_t"] - events[k - 1]["trough_t"]}) + return events, exps + + +def first_touch_race(trades): + LV = [2, 5, 10, -2, -5, -10] + counts = {lv: 0 for lv in LV} + counts["ambiguous"] = 0 + counts["none"] = 0 + for t in trades: + e = t["entry_px_raw"] + first = None + for b in t["path"]: + up = [lv for lv in LV if lv > 0 and b["h"] >= e * (1 + lv / 100)] + dn = [lv for lv in LV if lv < 0 and b["l"] <= e * (1 + lv / 100)] + if up and dn: + first = "ambiguous" + break + if up: + first = min(up) # smallest positive level crossed first + break + if dn: + first = max(dn) # shallowest negative level + break + counts[first if first is not None else "none"] += 1 + return counts + + +def after_level(trades, lv, target, floor): + """Among trades touching +lv%: race from that moment between +target% + and a fall to floor% (0 = back to entry).""" + n = hit_t = hit_f = neither = 0 + for t in trades: + e = t["entry_px_raw"] + i0 = next((i for i, b in enumerate(t["path"]) + if b["h"] >= e * (1 + lv / 100)), None) + if i0 is None: + continue + n += 1 + res = None + for b in t["path"][i0 + 1:]: + u = b["h"] >= e * (1 + target / 100) + d = b["l"] <= e * (1 + floor / 100) + if u and d: + res = "f" # conservative: adverse first + break + if u: + res = "t" + break + if d: + res = "f" + break + if res == "t": + hit_t += 1 + elif res == "f": + hit_f += 1 + else: + neither += 1 + return n, hit_t, hit_f, neither + + +def main(): + trades = load() + L = [f"# Post-entry state sequences — corrected Cameron entries (n={len(trades)})", + "Pullback threshold T=5% of the running high (measurement convention).", + "All figures descriptive; nothing optimized.", ""] + + # 1. first-touch race + L.append("## 1. First level touched after entry (race among +-2/5/10%)") + c = first_touch_race(trades) + n = len(trades) + for k in (2, 5, 10, -2, -5, -10, "ambiguous", "none"): + L.append(f" first touch {str(k):>10}: {c[k]:>4} ({100 * c[k] / n:.0f}%)") + L.append("") + + # 2/3. conditional races + L.append("## 2. Conditional races (u/d same bar counted adverse)") + for lv, tgt, fl in ((5, 10, 0), (10, 20, 0), (10, 15, 5), (2, 5, -2)): + nn, ht, hf, ne = after_level(trades, lv, tgt, fl) + L.append(f" reached +{lv}% (n={nn}): next +{tgt}% first {100 * ht / nn:.0f}% | " + f"fell to {fl:+d}% first {100 * hf / nn:.0f}% | neither {100 * ne / nn:.0f}%") + L.append("") + + # sequence decomposition at T=5 + T = 5 + per_k = {} + exp_k = {} + n_events = [] + for t in trades: + evs, exps = sequence(t, T) + n_events.append(sum(1 for e in evs)) + for e in evs: + per_k.setdefault(min(e["k"], 4), []).append(e) + for x in exps: + exp_k.setdefault(min(x["k"], 4), []).append(x) + + L.append(f"## 3. How many >={T}% pullbacks occur per ticker-day") + for i in range(0, 7): + cnt = sum(1 for x in n_events if x == i) + if cnt: + L.append(f" {i} pullbacks: {cnt:>4} ({100 * cnt / len(trades):.0f}%)") + L.append(f" mean {sum(n_events) / len(trades):.1f} pullback events/day") + L.append("") + + L.append("## 4. Expansion legs (size of each squeeze)") + L.append(" leg 1 = entry->first peak; leg k = trough(k-1)->peak k") + for k in sorted(exp_k): + g = [x["gain_pct"] for x in exp_k[k]] + d = [x["dur"] for x in exp_k[k]] + lab = f"{k}" if k < 4 else "4+" + L.append(f" leg {lab}: n={len(g):>3} gain med {pctl(g, .5):+6.1f}% " + f"p25 {pctl(g, .25):+6.1f}% p75 {pctl(g, .75):+6.1f}% " + f"dur med {pctl(d, .5):.0f}min") + L.append("") + + L.append("## 5. Pullback events by order (the transition table)") + L.append(f" {'PB#':<5}{'n':>4}{'P(new high)':>12}{'depth med':>11}{'p25':>7}" + f"{'p75':>7}{'peak@ med':>10}{'t.peak':>8}{'t.rec':>7}") + for k in sorted(per_k): + evs = per_k[k] + rec = [e for e in evs if e["recovered"]] + dep = [e["depth_pct"] for e in evs] + pk = [e["peak_pct"] for e in evs] + tp = [e["peak_t"] for e in evs] + tr = [e["rec_t"] - e["start_t"] for e in rec] + lab = f"{k}" if k < 4 else "4+" + L.append(f" {lab:<5}{len(evs):>4}{100 * len(rec) / len(evs):>11.0f}%" + f"{pctl(dep, .5):>10.1f}%{pctl(dep, .25):>6.1f}%{pctl(dep, .75):>6.1f}%" + f"{pctl(pk, .5):>+9.1f}%{pctl(tp, .5):>7.0f}m{pctl(tr, .5) if tr else float('nan'):>6.0f}m") + L.append(" (depth = % off the peak; peak@ = peak level vs entry; t.peak =") + L.append(" minutes entry->peak; t.rec = minutes pullback-start->new high)") + L.append("") + + L.append("## 6. Failed pullbacks: where they end up") + for k in sorted(per_k): + fails = [e for e in per_k[k] if not e["recovered"]] + if not fails: + continue + dep = [e["depth_pct"] for e in fails] + lab = f"{k}" if k < 4 else "4+" + L.append(f" PB{lab} failures n={len(fails)}: depth by close med " + f"{pctl(dep, .5):.1f}% p75 {pctl(dep, .75):.1f}% max {max(dep):.1f}%") + L.append("") + + L.append("## 7. Path dependence checks") + # does PB1 depth predict PB2 recovery? + pb2 = per_k.get(2, []) + if pb2: + # link back: need PB1 depth per trade; rebuild quickly + deep, shallow = [], [] + for t in trades: + evs, _ = sequence(t, T) + if len(evs) >= 2 and evs[0]["recovered"]: + (deep if evs[0]["depth_pct"] >= 8 else shallow).append(evs[1]) + for lab, g in (("PB1 shallow (<8%)", shallow), ("PB1 deep (>=8%)", deep)): + if g: + r = sum(1 for e in g if e["recovered"]) + L.append(f" P(PB2 new high | {lab}): {100 * r / len(g):.0f}% (n={len(g)})") + # time-of-day deterioration + L.append(" P(new high) by pullback START time (all PB orders):") + allev = [e for v in per_k.values() for e in v] + for lo, hi, lab in ((0, 60, "0-60min"), (60, 120, "60-120"), (120, 240, "120-240"), + (240, 600, "240+")): + g = [e for e in allev if lo <= e["start_t"] < hi] + if g: + r = sum(1 for e in g if e["recovered"]) + L.append(f" start {lab:>8}: {100 * r / len(g):>3.0f}% (n={len(g)})") + L.append("") + + # sensitivity at T=8 + per_k8 = {} + for t in trades: + evs, _ = sequence(t, 8) + for e in evs: + per_k8.setdefault(min(e["k"], 4), []).append(e) + L.append("## 8. Sensitivity: same transition probs at T=8%") + for k in sorted(per_k8): + evs = per_k8[k] + r = sum(1 for e in evs if e["recovered"]) + lab = f"{k}" if k < 4 else "4+" + L.append(f" PB{lab}: n={len(evs):>3} P(new high) {100 * r / len(evs):.0f}%") + L.append("") + + # window stability of headline transitions + L.append("## 9. Window stability (T=5%)") + for win in ("OOS", "IS"): + sub = [t for t in trades if t["window"] == win] + pk = {} + for t in sub: + evs, _ = sequence(t, T) + for e in evs: + pk.setdefault(min(e["k"], 4), []).append(e) + line = f" {win}: " + for k in sorted(pk): + evs = pk[k] + r = sum(1 for e in evs if e["recovered"]) + line += f"PB{k if k < 4 else '4+'} {100 * r / len(evs):.0f}% (n={len(evs)}) " + L.append(line) + + txt = "\n".join(L) + print(txt) + with open(os.path.join(HERE, "momentum_transitions.md"), "w") as f: + f.write(txt + "\n") + + +if __name__ == "__main__": + main() diff --git a/research/momentum_v2_exits.py b/research/momentum_v2_exits.py new file mode 100644 index 000000000..cb2a81c9c --- /dev/null +++ b/research/momentum_v2_exits.py @@ -0,0 +1,176 @@ +#!/usr/bin/env python3 +"""Apply spec-v2 dip-conditioned take-profit exits to backtest entries. + +Reads the entries produced by momentum_backtest.py (same entry logic as v1), +re-pulls each day's 1-min bars, and simulates the v2 exit rules from +momentum_spec_v2.md: no stop, take-profit ratcheting down with the running +post-entry dip, flat at 10:00 ET. + +Reports the pre-registered pass/fail battery: slippage stress, top-5 +exclusion, half-split, plus the untuned flat-target control. + +Usage: MOMO_SCRATCH=... MOMO_TAG=oos python3 momentum_v2_exits.py +""" +import json +import os +from datetime import datetime + +from momentum_paper import et_hhmm, et_offset, get, DATA + +SCRATCH = os.environ["MOMO_SCRATCH"] +HERE = os.path.dirname(os.path.abspath(__file__)) +TAG = os.environ.get("MOMO_TAG", "v1") + +# Spec v2, frozen: running dip below entry (%) -> take-profit target (%). +SCHEDULE = {0: 20, 2: 15, 5: 12, 10: 8, 20: 4} +THRESHOLDS = (20, 10, 5, 2) # checked high-to-low +CONTROL = {0: 10, 2: 10, 5: 10, 10: 10, 20: 10} # untuned baseline +CUTOFF = "10:00" + + +def day_bars(sym, day): + off = et_offset(day) + return get( + f"{DATA}/v2/stocks/{sym}/bars", + timeframe="1Min", adjustment="raw", feed="sip", limit=10000, + start=f"{day}T{4 - off:02d}:00:00Z", + end=f"{day}T{16 - off:02d}:00:00Z", + ).get("bars") or [] + + +def pctl(xs, q): + xs = sorted(xs) + if not xs: + return float("nan") + i = (len(xs) - 1) * q + lo, hi = int(i), min(int(i) + 1, len(xs) - 1) + return xs[lo] + (xs[hi] - xs[lo]) * (i - lo) + + +def load_entries(): + """Cache post-entry bar paths so slippage variants don't re-fetch.""" + cache_path = os.path.join(SCRATCH, "v2_paths.json") + if os.path.exists(cache_path): + return json.load(open(cache_path)) + done = json.load(open(os.path.join(SCRATCH, "results.json"))) + out = [] + for t in done["items"]: + if not t.get("exit_reason"): + continue + bars = day_bars(t["symbol"], t["day"]) + idx = next((i for i, b in enumerate(bars) + if et_hhmm(b["t"]) == t["entry_time_et"]), None) + if idx is None: + continue + out.append({ + "symbol": t["symbol"], "day": t["day"], + "entry_px_raw": t["entry_px_raw"], + "stop": t["stop"], # v1 pullback low, used by v3-pbstop variant + "path": [{"t": et_hhmm(b["t"]), "o": b["o"], "h": b["h"], "l": b["l"], + "c": b["c"]} for b in bars[idx:]], + }) + json.dump(out, open(cache_path, "w")) + return out + + +def simulate(entries, schedule, slip): + rets = [] + for e in entries: + raw = e["entry_px_raw"] + fill = raw * (1 + slip) + dip, tgt_pct, out = 0.0, schedule[0], None + for b in e["path"]: + if b["t"] >= CUTOFF: + out = b["o"] * (1 - slip) + break + dip = max(dip, (1 - b["l"] / raw) * 100) + for th in THRESHOLDS: + if dip >= th: + tgt_pct = min(tgt_pct, schedule[th]) + break + target = raw * (1 + tgt_pct / 100) + if b["h"] >= target: + out = target # resting limit + break + if out is None: + out = e["path"][-1]["c"] * (1 - slip) + rets.append({"symbol": e["symbol"], "day": e["day"], + "ret": (out / fill - 1) * 100}) + return rets + + +def summarize(rets): + xs = [r["ret"] for r in rets] + w = sum(1 for x in xs if x > 0) + return (f"n={len(xs):>3} WR={100 * w / len(xs):>3.0f}% mean={sum(xs) / len(xs):+6.2f}% " + f"med={pctl(xs, .5):+6.2f}% p25={pctl(xs, .25):+6.2f}% min={min(xs):+7.2f}%") + + +def main(): + entries = load_entries() + L = [f"# Momentum spec-v2 exits — {TAG}", "", + f"Entries: {len(entries)} (v1 entry logic, v2 exits per momentum_spec_v2.md)", + f"Schedule: {SCHEDULE} | flat {CUTOFF} ET | no stop", ""] + + base = simulate(entries, SCHEDULE, 0.005) + ctrl = simulate(entries, CONTROL, 0.005) + L.append("## Headline (0.5%/side)") + L.append(f" v2 schedule : {summarize(base)}") + L.append(f" flat+10 ctrl: {summarize(ctrl)}") + L.append("") + + L.append("## (b) Slippage stress") + for s in (0.0025, 0.005, 0.01): + L.append(f" {s * 100:.2f}%/side: {summarize(simulate(entries, SCHEDULE, s))}") + L.append("") + + by_sym = {} + for r in base: + by_sym.setdefault(r["symbol"], []).append(r["ret"]) + top5 = sorted(((sum(v), k) for k, v in by_sym.items()), reverse=True)[:5] + excl = {k for _, k in top5} + rest = [r for r in base if r["symbol"] not in excl] + L.append("## (c) Concentration") + L.append(" top-5 by summed return: " + + ", ".join(f"{k} {v:+.1f}%" for v, k in top5)) + if rest: + L.append(f" excluding top-5: {summarize(rest)}") + L.append("") + + days = sorted({r["day"] for r in base}) + mid = days[len(days) // 2] if days else None + L.append("## (d) Half split") + for lab, sel in (("H1", lambda r: r["day"] < mid), + ("H2", lambda r: r["day"] >= mid)): + seg = [r for r in base if sel(r)] + if seg: + L.append(f" {lab} (<{mid} / >=): {summarize(seg)}") + L.append("") + + xs = [r["ret"] for r in base] + checks = [ + ("a. mean > 0 @0.5%", sum(xs) / len(xs) > 0), + ("b. mean > 0 @1.0%", (lambda v: sum(v) / len(v) > 0)( + [r["ret"] for r in simulate(entries, SCHEDULE, 0.01)])), + ("c. mean > 0 ex-top5", bool(rest) and + sum(r["ret"] for r in rest) / len(rest) > 0), + ("d. both halves > 0", all( + sum(r["ret"] for r in seg) / len(seg) > 0 + for seg in ([r for r in base if r["day"] < mid], + [r for r in base if r["day"] >= mid]) if seg)), + ("e. n >= 50", len(xs) >= 50), + ] + L.append("## Pre-registered criteria") + for name, ok in checks: + L.append(f" [{'PASS' if ok else 'FAIL'}] {name}") + L.append("") + L.append(f"ALL CRITERIA MET: {all(ok for _, ok in checks)}") + + out = "\n".join(L) + print(out) + with open(os.path.join(HERE, f"momentum_v2_{TAG}_results.md"), "w") as f: + f.write(out + "\n") + + +if __name__ == "__main__": + main() diff --git a/research/momentum_v3_exits.py b/research/momentum_v3_exits.py new file mode 100644 index 000000000..7f3386537 --- /dev/null +++ b/research/momentum_v3_exits.py @@ -0,0 +1,141 @@ +#!/usr/bin/env python3 +"""Spec-v3 laddered scale-out with ratcheting stop, plus v2 and control. + +Runs every pre-registered exit scheme over the SAME entries so the comparison +is like-for-like, and prints the pass/fail battery for each. + +Usage: MOMO_SCRATCH=... MOMO_TAG=oos python3 momentum_v3_exits.py +""" +import json +import os + +from momentum_v2_exits import (SCHEDULE, THRESHOLDS, CONTROL, CUTOFF, + load_entries, pctl, simulate as simulate_v2) + +HERE = os.path.dirname(os.path.abspath(__file__)) +TAG = os.environ.get("MOMO_TAG", "v1") + +BASECAMPS = (5, 10, 20, 35) # % above raw entry +TRANCHE = 0.25 +RATCHET = {0: None, 1: 0.0, 2: 5.0, 3: 10.0, 4: 20.0} # crossings -> stop % + + +def simulate_v3(entries, slip, initial_stop=None, dip_conditioned=False): + """initial_stop: None (hold through dip) or 'pullback' (v1 stop).""" + out_rows = [] + for e in entries: + raw = e["entry_px_raw"] + fill = raw * (1 + slip) + stop_px = e.get("stop") if initial_stop == "pullback" else None + crossed = 0 + remaining = 1.0 + proceeds = 0.0 + dip = 0.0 + for b in e["path"]: + if b["t"] >= CUTOFF: + proceeds += remaining * b["o"] * (1 - slip) + remaining = 0.0 + break + # 1) stop first (conservative), at the level in force entering the bar + if stop_px is not None and b["l"] <= stop_px: + proceeds += remaining * stop_px * 0.99 * (1 - slip) + remaining = 0.0 + break + dip = max(dip, (1 - b["l"] / raw) * 100) + # 2) basecamp crossings + while crossed < len(BASECAMPS) and remaining > 1e-9: + lvl = BASECAMPS[crossed] + if dip_conditioned and dip >= 10: + lvl = lvl / 2.0 + target = raw * (1 + lvl / 100) + if b["h"] < target: + break + sell = min(TRANCHE, remaining) + proceeds += sell * target + remaining -= sell + crossed += 1 + r = RATCHET[crossed] + if r is not None: + lvl_stop = raw * (1 + r / 100) + stop_px = lvl_stop if stop_px is None else max(stop_px, lvl_stop) + if remaining <= 1e-9: + break + if remaining > 1e-9: + proceeds += remaining * e["path"][-1]["c"] * (1 - slip) + out_rows.append({"symbol": e["symbol"], "day": e["day"], + "ret": (proceeds / fill - 1) * 100}) + return out_rows + + +def summarize(rets): + xs = [r["ret"] for r in rets] + w = sum(1 for x in xs if x > 0) + return (f"n={len(xs):>3} WR={100 * w / len(xs):>3.0f}% mean={sum(xs) / len(xs):+6.2f}% " + f"med={pctl(xs, .5):+6.2f}% p25={pctl(xs, .25):+6.2f}% min={min(xs):+7.2f}%") + + +def battery(entries, fn, L, name): + base = fn(0.005) + xs = [r["ret"] for r in base] + hi = [r["ret"] for r in fn(0.01)] + by_sym = {} + for r in base: + by_sym.setdefault(r["symbol"], []).append(r["ret"]) + top5 = {k for _, k in sorted(((sum(v), k) for k, v in by_sym.items()), + reverse=True)[:5]} + rest = [r for r in base if r["symbol"] not in top5] + days = sorted({r["day"] for r in base}) + mid = days[len(days) // 2] + halves = [[r for r in base if r["day"] < mid], + [r for r in base if r["day"] >= mid]] + checks = [ + ("a mean>0 @0.5%", sum(xs) / len(xs) > 0), + ("b mean>0 @1.0%", sum(hi) / len(hi) > 0), + ("c ex-top5>0", bool(rest) and sum(r["ret"] for r in rest) / len(rest) > 0), + ("d halves>0", all(sum(r["ret"] for r in h) / len(h) > 0 for h in halves if h)), + ("e n>=50", len(xs) >= 50), + ] + L.append(f"### {name}") + L.append(f" 0.5%/side : {summarize(base)}") + L.append(f" 1.0%/side : {summarize(fn(0.01))}") + if rest: + L.append(f" ex-top5 : {summarize(rest)}") + for i, h in enumerate(halves, 1): + if h: + L.append(f" H{i} : {summarize(h)}") + L.append(" " + " ".join(f"[{'P' if ok else 'F'}] {n}" for n, ok in checks)) + L.append(f" ALL PASS: {all(ok for _, ok in checks)}") + L.append("") + return all(ok for _, ok in checks) + + +def main(): + entries = load_entries() + L = [f"# Momentum exit-scheme comparison — {TAG}", "", + f"Entries: {len(entries)} (identical across all schemes; v1 entry logic)", + f"Ladder {BASECAMPS} @ {int(TRANCHE * 100)}% each, ratchet {RATCHET}, " + f"flat {CUTOFF} ET", ""] + + schemes = [ + ("v3-nostop (PRIMARY)", lambda s: simulate_v3(entries, s)), + ("v3-pbstop", lambda s: simulate_v3(entries, s, initial_stop="pullback")), + ("v3-dipcond", lambda s: simulate_v3(entries, s, dip_conditioned=True)), + ("v2 dip-conditioned target", lambda s: simulate_v2(entries, SCHEDULE, s)), + ("control flat +10%", lambda s: simulate_v2(entries, CONTROL, s)), + ] + verdicts = {} + for name, fn in schemes: + verdicts[name] = battery(entries, fn, L, name) + + L.append("## Summary") + for name, ok in verdicts.items(): + L.append(f" {'PASS' if ok else 'fail'} {name}") + + out = "\n".join(L) + print(out) + with open(os.path.join(HERE, f"momentum_v3_{TAG}_results.md"), "w") as f: + f.write(out + "\n") + + +if __name__ == "__main__": + main() diff --git a/research/momentum_v3_is_results.md b/research/momentum_v3_is_results.md new file mode 100644 index 000000000..4e20fc50c --- /dev/null +++ b/research/momentum_v3_is_results.md @@ -0,0 +1,56 @@ +# Momentum exit-scheme comparison — is + +Entries: 98 (identical across all schemes; v1 entry logic) +Ladder (5, 10, 20, 35) @ 25% each, ratchet {0: None, 1: 0.0, 2: 5.0, 3: 10.0, 4: 20.0}, flat 10:00 ET + +### v3-nostop (PRIMARY) + 0.5%/side : n= 98 WR= 53% mean= +1.03% med= +4.94% p25= -0.37% min= -38.87% + 1.0%/side : n= 98 WR= 53% mean= +0.26% med= +4.16% p25= -1.23% min= -39.48% + ex-top5 : n= 92 WR= 50% mean= +0.14% med= +0.45% p25= -0.37% min= -38.87% + H1 : n= 47 WR= 55% mean= +2.40% med= +4.94% p25= -0.37% min= -29.72% + H2 : n= 51 WR= 51% mean= -0.23% med= +1.27% p25= -0.37% min= -38.87% + [P] a mean>0 @0.5% [P] b mean>0 @1.0% [P] c ex-top5>0 [F] d halves>0 [P] e n>=50 + ALL PASS: False + +### v3-pbstop + 0.5%/side : n= 98 WR= 28% mean= -1.54% med= -3.11% p25= -5.78% min= -19.97% + 1.0%/side : n= 98 WR= 28% mean= -2.41% med= -4.07% p25= -6.72% min= -20.77% + ex-top5 : n= 92 WR= 23% mean= -2.60% med= -3.50% p25= -6.08% min= -19.97% + H1 : n= 47 WR= 34% mean= -0.12% med= -2.62% p25= -4.88% min= -11.65% + H2 : n= 51 WR= 22% mean= -2.85% med= -3.70% p25= -6.70% min= -19.97% + [F] a mean>0 @0.5% [F] b mean>0 @1.0% [F] c ex-top5>0 [F] d halves>0 [P] e n>=50 + ALL PASS: False + +### v3-dipcond + 0.5%/side : n= 98 WR= 52% mean= +1.19% med= +2.46% p25= -0.84% min= -38.87% + 1.0%/side : n= 98 WR= 52% mean= +0.41% med= +1.64% p25= -1.69% min= -39.48% + ex-top5 : n= 92 WR= 49% mean= +0.31% med= -0.37% p25= -0.99% min= -38.87% + H1 : n= 47 WR= 49% mean= +3.20% med= -0.37% p25= -0.37% min= -24.35% + H2 : n= 51 WR= 55% mean= -0.66% med= +3.07% p25= -0.99% min= -38.87% + [P] a mean>0 @0.5% [P] b mean>0 @1.0% [P] c ex-top5>0 [F] d halves>0 [P] e n>=50 + ALL PASS: False + +### v2 dip-conditioned target + 0.5%/side : n= 98 WR= 82% mean= +5.23% med= +7.46% p25= +3.48% min= -38.87% + 1.0%/side : n= 98 WR= 80% mean= +4.60% med= +6.93% p25= +2.97% min= -39.48% + ex-top5 : n= 92 WR= 80% mean= +4.41% med= +7.46% p25= +3.40% min= -38.87% + H1 : n= 47 WR= 89% mean= +7.31% med= +7.46% p25= +3.48% min= -24.35% + H2 : n= 51 WR= 75% mean= +3.31% med= +7.46% p25= -2.48% min= -38.87% + [P] a mean>0 @0.5% [P] b mean>0 @1.0% [P] c ex-top5>0 [P] d halves>0 [P] e n>=50 + ALL PASS: True + +### control flat +10% + 0.5%/side : n= 98 WR= 78% mean= +2.98% med= +9.45% p25= +3.32% min= -38.87% + 1.0%/side : n= 98 WR= 76% mean= +2.36% med= +8.91% p25= +2.43% min= -39.48% + ex-top5 : n= 89 WR= 75% mean= +2.43% med= +9.45% p25= +0.97% min= -38.87% + H1 : n= 47 WR= 79% mean= +3.33% med= +9.45% p25= +5.21% min= -29.72% + H2 : n= 51 WR= 76% mean= +2.66% med= +9.45% p25= +5.36% min= -38.87% + [P] a mean>0 @0.5% [P] b mean>0 @1.0% [P] c ex-top5>0 [P] d halves>0 [P] e n>=50 + ALL PASS: True + +## Summary + fail v3-nostop (PRIMARY) + fail v3-pbstop + fail v3-dipcond + PASS v2 dip-conditioned target + PASS control flat +10% diff --git a/research/momentum_v3_oos_results.md b/research/momentum_v3_oos_results.md new file mode 100644 index 000000000..35d0865c2 --- /dev/null +++ b/research/momentum_v3_oos_results.md @@ -0,0 +1,56 @@ +# Momentum exit-scheme comparison — oos + +Entries: 71 (identical across all schemes; v1 entry logic) +Ladder (5, 10, 20, 35) @ 25% each, ratchet {0: None, 1: 0.0, 2: 5.0, 3: 10.0, 4: 20.0}, flat 10:00 ET + +### v3-nostop (PRIMARY) + 0.5%/side : n= 71 WR= 46% mean= +0.31% med= -0.37% p25= -0.37% min= -36.92% + 1.0%/side : n= 71 WR= 46% mean= -0.47% med= -1.23% p25= -1.23% min= -37.55% + ex-top5 : n= 65 WR= 42% mean= -1.03% med= -0.37% p25= -0.37% min= -36.92% + H1 : n= 33 WR= 45% mean= +0.20% med= -0.37% p25= -0.37% min= -28.86% + H2 : n= 38 WR= 47% mean= +0.41% med= -0.37% p25= -0.37% min= -36.92% + [P] a mean>0 @0.5% [F] b mean>0 @1.0% [F] c ex-top5>0 [P] d halves>0 [P] e n>=50 + ALL PASS: False + +### v3-pbstop + 0.5%/side : n= 71 WR= 23% mean= -1.81% med= -3.15% p25= -6.17% min= -19.98% + 1.0%/side : n= 71 WR= 23% mean= -2.68% med= -4.11% p25= -7.10% min= -20.78% + ex-top5 : n= 66 WR= 17% mean= -3.23% med= -3.35% p25= -6.39% min= -19.98% + H1 : n= 33 WR= 12% mean= -3.28% med= -4.23% p25= -6.53% min= -11.07% + H2 : n= 38 WR= 32% mean= -0.53% med= -2.29% p25= -5.00% min= -19.98% + [F] a mean>0 @0.5% [F] b mean>0 @1.0% [F] c ex-top5>0 [F] d halves>0 [P] e n>=50 + ALL PASS: False + +### v3-dipcond + 0.5%/side : n= 71 WR= 48% mean= +1.04% med= -0.37% p25= -0.99% min= -36.92% + 1.0%/side : n= 71 WR= 48% mean= +0.26% med= -1.23% p25= -1.85% min= -37.55% + ex-top5 : n= 65 WR= 43% mean= -0.26% med= -0.37% p25= -0.99% min= -36.92% + H1 : n= 33 WR= 52% mean= +1.03% med= +3.07% p25= -0.37% min= -25.38% + H2 : n= 38 WR= 45% mean= +1.05% med= -0.37% p25= -0.99% min= -36.92% + [P] a mean>0 @0.5% [P] b mean>0 @1.0% [F] c ex-top5>0 [P] d halves>0 [P] e n>=50 + ALL PASS: False + +### v2 dip-conditioned target + 0.5%/side : n= 71 WR= 75% mean= +3.61% med= +7.46% p25= +1.08% min= -36.92% + 1.0%/side : n= 71 WR= 75% mean= +2.99% med= +6.93% p25= +0.34% min= -37.55% + ex-top5 : n= 65 WR= 72% mean= +2.41% med= +7.46% p25= -3.68% min= -36.92% + H1 : n= 33 WR= 88% mean= +5.39% med= +7.46% p25= +3.48% min= -25.38% + H2 : n= 38 WR= 63% mean= +2.07% med= +7.46% p25=-11.10% min= -36.92% + [P] a mean>0 @0.5% [P] b mean>0 @1.0% [P] c ex-top5>0 [P] d halves>0 [P] e n>=50 + ALL PASS: True + +### control flat +10% + 0.5%/side : n= 71 WR= 62% mean= -0.66% med= +9.45% p25=-12.49% min= -36.92% + 1.0%/side : n= 71 WR= 62% mean= -1.31% med= +8.91% p25=-13.36% min= -37.55% + ex-top5 : n= 64 WR= 58% mean= -1.77% med= +9.45% p25=-13.58% min= -36.92% + H1 : n= 33 WR= 64% mean= -0.63% med= +9.45% p25=-13.37% min= -30.27% + H2 : n= 38 WR= 61% mean= -0.68% med= +9.45% p25=-11.59% min= -36.92% + [F] a mean>0 @0.5% [F] b mean>0 @1.0% [F] c ex-top5>0 [F] d halves>0 [P] e n>=50 + ALL PASS: False + +## Summary + fail v3-nostop (PRIMARY) + fail v3-pbstop + fail v3-dipcond + PASS v2 dip-conditioned target + fail control flat +10% diff --git a/research/momentum_v4_log.json b/research/momentum_v4_log.json new file mode 100644 index 000000000..431d391a7 --- /dev/null +++ b/research/momentum_v4_log.json @@ -0,0 +1,11 @@ +{ + "spec": "momentum_spec_v4.md", + "trades": [], + "scans": [ + { + "day": "2026-08-12", + "taken": 0, + "skipped": 0 + } + ] +} \ No newline at end of file diff --git a/research/momentum_v5_log.json b/research/momentum_v5_log.json new file mode 100644 index 000000000..8ab7876fd --- /dev/null +++ b/research/momentum_v5_log.json @@ -0,0 +1,134 @@ +{ + "spec": "momentum_spec_v5.md", + "trades": [ + { + "symbol": "FGI", + "day": "2026-08-13", + "entry_time_et": "07:03", + "entry_px_raw": 8.18, + "pullback_low": 7.8, + "risk_pct": 4.65, + "n_dq_before": 0, + "float": null, + "gainer_rank": 4, + "exit_time_et": "07:09", + "exit_reason": "atr_trail", + "ret_pct": -0.92, + "v5_qualified": false + }, + { + "symbol": "DFSC", + "day": "2026-08-13", + "entry_time_et": "09:18", + "entry_px_raw": 2.1997, + "pullback_low": 2.1, + "risk_pct": 4.53, + "n_dq_before": 2, + "float": null, + "gainer_rank": 6, + "exit_time_et": "09:24", + "exit_reason": "atr_trail", + "ret_pct": 6.69, + "v5_qualified": false + }, + { + "symbol": "CURI", + "day": "2026-08-13", + "entry_time_et": "09:34", + "entry_px_raw": 3.78, + "pullback_low": 3.65, + "risk_pct": 3.44, + "n_dq_before": 6, + "float": null, + "gainer_rank": 21, + "exit_time_et": "09:40", + "exit_reason": "atr_trail", + "ret_pct": -0.46, + "v5_qualified": false + }, + { + "symbol": "WETO", + "day": "2026-08-14", + "entry_time_et": "07:46", + "entry_px_raw": 11.4, + "pullback_low": 10.8103, + "risk_pct": 5.17, + "n_dq_before": 1, + "float": null, + "gainer_rank": 3, + "exit_time_et": "09:57", + "exit_reason": "atr_trail", + "ret_pct": 8.39, + "v5_qualified": false + }, + { + "symbol": "XOS", + "day": "2026-08-18", + "entry_time_et": "07:15", + "entry_px_raw": 5.18, + "pullback_low": 5.05, + "risk_pct": 2.51, + "n_dq_before": 1, + "float": null, + "gainer_rank": 6, + "exit_time_et": "07:21", + "exit_reason": "atr_trail", + "ret_pct": 0.22, + "v5_qualified": false + }, + { + "symbol": "SLE", + "day": "2026-08-18", + "entry_time_et": "09:05", + "entry_px_raw": 5.39, + "pullback_low": 5.02, + "risk_pct": 6.86, + "n_dq_before": 0, + "float": null, + "gainer_rank": 9, + "exit_time_et": "09:11", + "exit_reason": "atr_trail", + "ret_pct": 5.15, + "v5_qualified": false + }, + { + "symbol": "IPST", + "day": "2026-08-17", + "entry_time_et": "07:22", + "entry_px_raw": 6.51, + "pullback_low": 6.27, + "risk_pct": 3.69, + "n_dq_before": 1, + "float": null, + "gainer_rank": null, + "reconstructed": true, + "exit_time_et": "07:28", + "exit_reason": "atr_trail", + "ret_pct": -0.13, + "v5_qualified": false + } + ], + "scans": [ + { + "day": "2026-08-13", + "taken": 0, + "skipped": 3 + }, + { + "day": "2026-08-14", + "taken": 0, + "skipped": 1 + }, + { + "day": "2026-08-18", + "taken": 0, + "skipped": 2 + }, + { + "day": "2026-08-17", + "taken": 0, + "skipped": 1, + "reconstructed": true + } + ] +} \ No newline at end of file diff --git a/research/momentum_v5_trades.md b/research/momentum_v5_trades.md new file mode 100644 index 000000000..97e8c889c --- /dev/null +++ b/research/momentum_v5_trades.md @@ -0,0 +1,54 @@ +# Momentum v5 — full trade roster (regenerated) + +Selection: pullback width >= 8% of entry AND entry < $8.30. +Exit: no stop; trail arms at +2%, 0.25 x ATR(14,1m); flat 10:00 ET. +Fills: entry +0.5%, trail-stop 2% through +0.5%, time exit -0.5%. + +| # | Window | Symbol | Date | Entry | Px | Width% | Exit | Reason | Ret% | +|---|--------|--------|------|-------|-----|--------|------|--------|------| +| 1 | OOS | CNTN | 2024-10-30 | 08:22 | 3.99 | 9.8 | 08:28 | atr_trail | +47.14 | +| 2 | OOS | UMAC | 2024-11-27 | 09:00 | 8.26 | 9.0 | 09:06 | atr_trail | -1.01 | +| 3 | OOS | SNTI | 2024-12-02 | 07:26 | 3.36 | 9.2 | 07:32 | atr_trail | +19.42 | +| 4 | OOS | RKDA | 2024-12-05 | 08:14 | 7.60 | 10.5 | 08:20 | atr_trail | +2.32 | +| 5 | OOS | TPET | 2024-12-19 | 08:51 | 2.90 | 11.0 | 08:57 | atr_trail | +19.88 | +| 6 | OOS | ORBS | 2024-12-30 | 07:22 | 2.96 | 8.8 | 07:28 | atr_trail | +17.81 | +| 7 | OOS | PHIO | 2025-01-13 | 08:21 | 3.66 | 8.2 | 08:27 | atr_trail | +5.53 | +| 8 | OOS | KTTA | 2025-02-05 | 07:02 | 4.47 | 10.5 | 07:08 | atr_trail | -1.18 | +| 9 | OOS | UPXI | 2025-04-21 | 08:17 | 5.87 | 12.3 | 08:23 | atr_trail | +8.92 | +| 10 | OOS | ENSC | 2025-04-23 | 08:07 | 3.97 | 11.5 | 08:13 | atr_trail | +8.09 | +| 11 | OOS | GPUS | 2025-05-05 | 07:19 | 3.76 | 12.0 | 07:25 | atr_trail | +2.56 | +| 12 | OOS | NRXS | 2025-05-20 | 08:26 | 6.71 | 12.5 | 08:32 | atr_trail | +0.43 | +| 13 | OOS | ZEO | 2025-05-29 | 07:09 | 3.69 | 8.9 | 07:15 | atr_trail | +1.19 | +| 14 | OOS | ALZN | 2025-05-29 | 08:12 | 5.51 | 8.3 | 08:18 | atr_trail | +15.08 | +| 15 | OOS | GITS | 2025-05-30 | 08:55 | 3.09 | 15.2 | 09:01 | atr_trail | +18.58 | +| 16 | OOS | SOAR | 2025-06-12 | 08:22 | 3.78 | 8.7 | 08:28 | atr_trail | +7.39 | +| 17 | OOS | DWSN | 2025-06-16 | 07:03 | 6.34 | 13.2 | 07:09 | atr_trail | +125.58 | +| 18 | OOS | LCFY | 2025-06-27 | 08:54 | 5.04 | 17.7 | 09:00 | atr_trail | +27.48 | +| 19 | OOS | LGPS | 2025-07-07 | 08:38 | 2.44 | 10.7 | 08:44 | atr_trail | +16.43 | +| 20 | OOS | MBIO | 2025-07-07 | 09:17 | 3.68 | 9.0 | 09:23 | atr_trail | +7.52 | +| 21 | IS | GLE | 2025-09-10 | 07:42 | 3.82 | 15.2 | 07:48 | atr_trail | +5.74 | +| 22 | IS | RECT | 2025-10-27 | 08:17 | 8.29 | 11.2 | 08:23 | atr_trail | +15.21 | +| 23 | IS | PHIO | 2025-11-03 | 08:41 | 4.37 | 9.4 | 08:47 | atr_trail | +4.07 | +| 24 | IS | PLRZ | 2025-12-02 | 08:00 | 5.18 | 10.8 | 08:06 | atr_trail | +11.94 | +| 25 | IS | SPHL | 2026-01-15 | 07:11 | 4.19 | 8.1 | 07:17 | atr_trail | +9.30 | +| 26 | IS | TWG | 2026-01-20 | 07:10 | 8.15 | 10.1 | 07:16 | atr_trail | +7.95 | +| 27 | IS | SLGB | 2026-01-21 | 07:20 | 3.80 | 10.5 | 07:26 | atr_trail | +4.80 | +| 28 | IS | CYCN | 2026-04-01 | 07:16 | 2.70 | 9.6 | 07:22 | atr_trail | +14.85 | +| 29 | IS | BTOG | 2026-04-16 | 09:06 | 6.12 | 11.4 | 09:12 | atr_trail | -2.72 | +| 30 | IS | CHAI | 2026-06-09 | 07:19 | 5.61 | 8.4 | 07:25 | atr_trail | +0.23 | +| 31 | IS | AZI | 2026-06-09 | 07:51 | 5.73 | 23.0 | 07:57 | atr_trail | +66.42 | +| 32 | IS | PPCB | 2026-06-11 | 09:45 | 6.40 | 9.1 | 09:51 | atr_trail | +0.35 | +| 33 | IS | JRSH | 2026-06-15 | 08:29 | 8.26 | 11.6 | 08:35 | atr_trail | +13.65 | +| 34 | IS | CLWT | 2026-06-17 | 07:11 | 4.52 | 12.4 | 07:17 | atr_trail | +10.17 | +| 35 | IS | KUST | 2026-06-25 | 07:42 | 3.12 | 14.7 | 07:48 | atr_trail | +4.35 | +| 36 | IS | CELZ | 2026-06-30 | 09:14 | 2.80 | 12.1 | 09:20 | atr_trail | -2.23 | +| 37 | IS | VIVK | 2026-07-21 | 09:20 | 3.66 | 14.2 | 09:26 | atr_trail | +44.52 | +| 38 | IS | JEM | 2026-07-23 | 07:38 | 6.46 | 8.7 | 07:44 | atr_trail | +1.02 | +| 39 | IS | AMIX | 2026-07-29 | 09:43 | 6.71 | 10.9 | 09:49 | atr_trail | +2.71 | +| 40 | IS | HYFM | 2026-08-03 | 07:56 | 3.61 | 18.3 | 08:02 | atr_trail | +8.34 | + +**IS**: n=20, WR=90%, mean=+11.03%, median=+7.95%, worst=-2.72%, best=+66.42% + +**OOS**: n=20, WR=90%, mean=+17.46%, median=+8.92%, worst=-1.18%, best=+125.58% + +**POOL**: n=40, WR=90%, mean=+14.25%, median=+8.09%, worst=-2.72%, best=+125.58% diff --git a/research/momentum_v5_trades.py b/research/momentum_v5_trades.py new file mode 100644 index 000000000..45731999b --- /dev/null +++ b/research/momentum_v5_trades.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +"""Regenerate the v5 per-trade roster from the faithful-engine results. + +Loads res_faithful.json from the IS and OOS scratch dirs, applies the v5 +selection filter (pullback width >= 8%, entry < $8.30) and the v5 exit +(momentum_live.v5_exit), and writes the full trade-by-trade table to +momentum_v5_trades.md. +""" +import json +import os + +from momentum_live import v5_exit, MIN_RISK_PCT, MAX_PRICE + +HERE = os.path.dirname(os.path.abspath(__file__)) +BASE = os.environ["MOMO_BASE"] # dir containing momo_f_is/ and momo_f_oos/ + + +def load(window): + p = os.path.join(BASE, f"momo_f_{window}", "res_faithful.json") + return json.load(open(p))["items"] + + +rows = [] +for window in ("is", "oos"): + for t in load(window): + risk = (t["entry_px_raw"] - t["stop"]) / t["entry_px_raw"] * 100 + if risk < MIN_RISK_PCT or t["entry_px_raw"] >= MAX_PRICE: + continue + ret, xt, reason = v5_exit(t) + rows.append({"window": window.upper(), "symbol": t["symbol"], + "day": t["day"], "in_t": t["entry_time_et"], + "in_px": t["entry_px_raw"], "width": round(risk, 1), + "out_t": xt, "reason": reason, "ret": round(ret, 2)}) + +rows.sort(key=lambda r: (r["day"], r["in_t"])) +L = ["# Momentum v5 — full trade roster (regenerated)", "", + "Selection: pullback width >= 8% of entry AND entry < $8.30.", + "Exit: no stop; trail arms at +2%, 0.25 x ATR(14,1m); flat 10:00 ET.", + "Fills: entry +0.5%, trail-stop 2% through +0.5%, time exit -0.5%.", "", + "| # | Window | Symbol | Date | Entry | Px | Width% | Exit | Reason | Ret% |", + "|---|--------|--------|------|-------|-----|--------|------|--------|------|"] +for i, r in enumerate(rows, 1): + L.append(f"| {i} | {r['window']} | {r['symbol']} | {r['day']} | {r['in_t']} | " + f"{r['in_px']:.2f} | {r['width']} | {r['out_t']} | {r['reason']} | " + f"{r['ret']:+.2f} |") + +for w in ("IS", "OOS", None): + seg = [r for r in rows if w is None or r["window"] == w] + if not seg: + continue + rets = sorted(r["ret"] for r in seg) + wins = sum(1 for r in seg if r["ret"] > 0) + lab = w or "POOL" + L.append("") + L.append(f"**{lab}**: n={len(seg)}, WR={100 * wins / len(seg):.0f}%, " + f"mean={sum(rets) / len(rets):+.2f}%, median={rets[len(rets) // 2]:+.2f}%, " + f"worst={rets[0]:+.2f}%, best={rets[-1]:+.2f}%") + +out = "\n".join(L) +print(out) +open(os.path.join(HERE, "momentum_v5_trades.md"), "w").write(out + "\n") diff --git a/research/momentum_v6.py b/research/momentum_v6.py new file mode 100644 index 000000000..65afd679e --- /dev/null +++ b/research/momentum_v6.py @@ -0,0 +1,133 @@ +#!/usr/bin/env python3 +"""Spec v6 simulator — junction-process policy (momentum_spec_v6.md, frozen). + +Consumes res_cameron.json entry records (the qualification event and the +bar path from that moment). Implements: arm at -10% from running high, +confirmation entry (prior-bar-high break), exit at -10% from post-entry +high, abandon at -25%, size cut after >=20% junctions, max 4 entries, +flat at close. Parameters are the frozen spec's; none are configurable +except slip-through for the mandated sensitivity report. + +Usage: MOMO_SCRATCHES="name1=path1,name2=path2" python3 momentum_v6.py +""" +import json +import os + +from momentum_v2_exits import pctl + +HERE = os.path.dirname(os.path.abspath(__file__)) + +ARM = 0.10 # junction depth that arms entry / triggers exit +ABANDON = 0.25 # done-for-the-day depth +SIZE_CUT_DEPTH = 0.20 +MAX_ENTRIES = 4 +SLIP = 0.005 + + +def v6_day(path, thru=0.02): + """Run one qualified ticker-day. Returns list of (size, ret_pct).""" + trades = [] + run_high = path[0]["h"] + armed = False + in_pos = False + prev_bar = path[0] + junction_depth = 0.0 # depth of the retracement currently in progress + last_junction_depth = 0.0 + entry_px = pos_high = size = None + n_entries = 0 + done = False + for b in path[1:]: + if done: + break + if not in_pos: + if b["h"] > run_high: + run_high = b["h"] + if not armed: + junction_depth = 0.0 + depth = (run_high - min(b["l"], run_high)) / run_high + junction_depth = max(junction_depth, depth) + if junction_depth >= ABANDON: + done = True + break + if depth >= ARM: + armed = True + if armed and n_entries < MAX_ENTRIES and b["h"] > prev_bar["h"]: + raw = prev_bar["h"] + 0.01 + entry_px = raw * (1 + SLIP) + size = 0.5 if last_junction_depth >= SIZE_CUT_DEPTH else 1.0 + in_pos = True + armed = False + n_entries += 1 + last_junction_depth = junction_depth + pos_high = b["h"] + else: + pos_high = max(pos_high, b["h"]) + depth = (pos_high - min(b["l"], pos_high)) / pos_high + if depth >= ABANDON: + px = pos_high * (1 - ABANDON) * (1 - thru) * (1 - SLIP) + trades.append((size, (px / entry_px - 1) * 100)) + in_pos = False + done = True + break + if depth >= ARM: + px = pos_high * (1 - ARM) * (1 - thru) * (1 - SLIP) + trades.append((size, (px / entry_px - 1) * 100)) + in_pos = False + # the ongoing retracement counts toward the next junction + run_high = pos_high + junction_depth = depth + armed = True + prev_bar = b + if in_pos: + px = path[-1]["c"] * (1 - SLIP) + trades.append((size, (px / entry_px - 1) * 100)) + return trades + + +def score(scratch, thru=0.02): + items = json.load(open(os.path.join(scratch, "res_cameron.json")))["items"] + day_rets = {} + all_trades = [] + for t in items: + tr = v6_day(t["path"], thru) + all_trades.extend(tr) + day_rets.setdefault(t["day"], []).extend(tr) + # per ticker-day-entry record: capital = 1 unit per trade of its size + per_day = [] + for d, tr in day_rets.items(): + if tr: + cap = sum(s for s, _ in tr) + per_day.append(sum(s * r for s, r in tr) / cap if cap else 0.0) + return all_trades, per_day, len(items), len(day_rets) + + +def main(): + scratches = dict(kv.split("=") for kv in os.environ["MOMO_SCRATCHES"].split(",")) + L = ["# Spec v6 results", ""] + for name, sc in scratches.items(): + L.append(f"## {name}") + for thru in (0.0, 0.02, 0.05): + trades, per_day, n_items, n_days = score(sc, thru) + r = [x for _, x in trades] + if not r: + L.append(f" thru {thru:.0%}: no trades") + continue + w = sum(1 for x in r if x > 0) + wd = sum(1 for x in per_day if x > 0) + L.append(f" thru {thru:.0%}: qual-days {n_items} | trades {len(r)} " + f"({len(r) / max(n_days, 1):.1f}/day) | per-trade mean " + f"{sum(r) / len(r):+.2f}% med {pctl(r, .5):+.2f}% WR {100 * w / len(r):.0f}% " + f"p10 {pctl(r, .1):+.1f}% p90 {pctl(r, .9):+.1f}%") + L.append(f" per-day mean {sum(per_day) / len(per_day):+.2f}% " + f"med {pctl(per_day, .5):+.2f}% WR {100 * wd / len(per_day):.0f}% " + f"p10 {pctl(per_day, .1):+.1f}% p90 {pctl(per_day, .9):+.1f}% " + f"worst {min(per_day):+.1f}% best {max(per_day):+.1f}%") + L.append("") + txt = "\n".join(L) + print(txt) + with open(os.path.join(HERE, "momentum_v6_results.md"), "w") as f: + f.write(txt + "\n") + + +if __name__ == "__main__": + main() diff --git a/research/momentum_v6_results.md b/research/momentum_v6_results.md new file mode 100644 index 000000000..c5a902eb5 --- /dev/null +++ b/research/momentum_v6_results.md @@ -0,0 +1,18 @@ +# Spec v6 results + +## OOS_2024_25 + thru 0%: qual-days 109 | trades 328 (3.9/day) | per-trade mean -3.20% med -5.25% WR 27% p10 -10.4% p90 +8.5% + per-day mean -3.57% med -3.56% WR 19% p10 -8.1% p90 +2.0% worst -18.4% best +11.7% + thru 2%: qual-days 109 | trades 328 (3.9/day) | per-trade mean -5.10% med -7.03% WR 21% p10 -12.2% p90 +6.3% + per-day mean -5.45% med -5.49% WR 12% p10 -9.8% p90 +0.3% worst -20.0% best +9.5% + thru 5%: qual-days 109 | trades 328 (3.9/day) | per-trade mean -7.93% med -9.87% WR 15% p10 -14.9% p90 +3.1% + per-day mean -8.27% med -8.38% WR 3% p10 -12.4% p90 -2.5% worst -22.5% best +6.1% + +## IS_2025_26 + thru 0%: qual-days 182 | trades 548 (4.0/day) | per-trade mean -2.71% med -5.23% WR 28% p10 -10.2% p90 +7.5% + per-day mean -3.16% med -3.70% WR 19% p10 -8.0% p90 +3.2% worst -17.7% best +17.8% + thru 2%: qual-days 182 | trades 548 (4.0/day) | per-trade mean -4.54% med -7.12% WR 22% p10 -12.0% p90 +5.5% + per-day mean -4.91% med -5.61% WR 15% p10 -9.9% p90 +1.3% worst -19.3% best +15.5% + thru 5%: qual-days 182 | trades 548 (4.0/day) | per-trade mean -7.28% med -9.97% WR 16% p10 -14.7% p90 +3.0% + per-day mean -7.54% med -7.99% WR 8% p10 -12.6% p90 -0.7% worst -21.8% best +11.9% + diff --git a/research/morning_and_anomalies.py b/research/morning_and_anomalies.py new file mode 100644 index 000000000..599cffa92 --- /dev/null +++ b/research/morning_and_anomalies.py @@ -0,0 +1,82 @@ +"""B. Morning moves: gap & first-30m behavior -> rest of day (SPY, 10y). +C. Published anomalies on our data: overnight-vs-intraday drift, turn-of-month. +""" +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + +# ---------- B. morning moves ---------- +d5 = pd.read_csv(os.path.join(OUT, "SPY_5m_full.csv")) +d5["ts"] = pd.to_datetime(d5["timestamps"]).dt.tz_convert(NY) +d5 = d5[(d5["ts"].dt.time >= dtime(9, 30)) & (d5["ts"].dt.time <= dtime(15, 55))].sort_values("ts").reset_index(drop=True) +d5["day"] = d5["ts"].dt.date + +days = [] +prev_close = None +for dy, g in d5.groupby("day", sort=True): + g = g.reset_index(drop=True) + if len(g) < 70: + prev_close = g["close"].iloc[-1] if len(g) else prev_close + continue + o = g["open"].iloc[0] + c30 = g["close"].iloc[5] # 10:00 close + eod = g["close"].iloc[-1] + lo_am = g["low"].iloc[0:6].min() + hi_am = g["high"].iloc[0:6].max() + row = dict(day=dy, open=o, c30=c30, eod=eod, + gap=(o / prev_close - 1) if prev_close else np.nan, + r30=c30 / o - 1, rest=eod / c30 - 1, + oc=eod / o - 1, + gap_filled=(lo_am <= prev_close if prev_close and o > prev_close + else (hi_am >= prev_close if prev_close else np.nan))) + days.append(row) + prev_close = eod +D = pd.DataFrame(days).dropna(subset=["gap"]) +D = D[D["day"] >= pd.Timestamp("2016-06-01").date()] +print(f"B. MORNING MOVES — SPY, {len(D)} days") + +print("\n gap size -> rest of day (open->close):") +D["gapb"] = pd.cut(D["gap"] * 100, [-9, -0.5, -0.1, 0.1, 0.5, 9], + labels=["gap<-0.5%", "-0.5..-0.1", "flat", "+0.1..0.5", "gap>+0.5%"]) +for b, g in D.groupby("gapb", observed=True): + print(f" {b:<11s} n={len(g):>4d} P(oc up)={(g['oc']>0).mean():>6.1%} avg oc={g['oc'].mean():>+7.3%}" + f" P(gap filled same day)={g['gap_filled'].mean():>6.1%}") + +print("\n first 30 min -> rest of day (10:00 -> close), by gap context:") +D["r30b"] = np.where(D["r30"] > 0.002, "30m up>0.2%", np.where(D["r30"] < -0.002, "30m dn>0.2%", "30m flat")) +for (gb, rb), g in D.groupby(["gapb", "r30b"], observed=True): + if len(g) < 80: + continue + print(f" {str(gb):<11s} + {rb:<12s} n={len(g):>4d} P(rest up)={(g['rest']>0).mean():>6.1%} " + f"avg rest={g['rest'].mean():>+7.3%}") + +# ---------- C. anomalies ---------- +print("\nC. PUBLISHED ANOMALIES ON OUR DATA") +for sym in ["SPY", "QQQ"]: + dd = pd.read_csv(os.path.join(OUT, f"{sym}_daily.csv"), parse_dates=["date"]) + dd = dd[dd["date"] >= "2016-06-01"].reset_index(drop=True) + on = dd["open"] / dd["close"].shift(1) - 1 # overnight + ic = dd["close"] / dd["open"] - 1 # intraday + yrs = (dd["date"].iloc[-1] - dd["date"].iloc[0]).days / 365.25 + on_t = np.prod(1 + on.dropna()) ** (1 / yrs) - 1 + ic_t = np.prod(1 + ic.dropna()) ** (1 / yrs) - 1 + print(f" {sym}: OVERNIGHT (close->open) ann = {on_t:+.1%} INTRADAY (open->close) ann = {ic_t:+.1%}") + + dd["tom"] = False + dates = dd["date"].dt.to_period("M") + for m in dates.unique(): + idxs = dd.index[dates == m] + if len(idxs) >= 5: + dd.loc[idxs[-2]:, "tom"] = True # last 2 of month + dd.loc[idxs[:3], "tom"] = True # first 3 of month + dd.loc[dd.index[-2:], "tom"] = True + r = dd["close"].pct_change() + tom, rest = r[dd["tom"]], r[~dd["tom"]] + print(f" TURN-OF-MONTH (last2+first3): avg {tom.mean():+.4%}/day (n={len(tom)}) " + f"vs rest {rest.mean():+.4%}/day (n={len(rest)})") diff --git a/research/options_lens.py b/research/options_lens.py new file mode 100644 index 000000000..b1e8fcafe --- /dev/null +++ b/research/options_lens.py @@ -0,0 +1,96 @@ +"""Options-overlay lens: fixed-horizon directional stats for high-WR signals. + +For each selected run's entries (next-open fill incl. slippage), compute: +- P(close > entry) at 1, 2, 3, 5 sessions after entry day +- P(max favorable excursion >= +1%, +2%) within 3 sessions (intraday highs) +- median / mean return at each horizon +Also prints the full WR ranking (Wilson lower bound) across all runs. +""" +import glob +import math +import os + +import numpy as np +import pandas as pd + +from engine import load_symbol + +OUT = os.path.dirname(os.path.abspath(__file__)) +DATA = {s: load_symbol(s) for s in ["SPY", "QQQ"]} +IDX = {s: {d: i for i, d in enumerate(DATA[s]["date"])} for s in DATA} + + +def wilson_lo(k, n, z=1.96): + if n == 0: + return 0.0 + p = k / n + den = 1 + z * z / n + ctr = p + z * z / (2 * n) + mg = z * math.sqrt(p * (1 - p) / n + z * z / (4 * n * n)) + return (ctr - mg) / den + + +# ---- full WR ranking across all runs ---- +rows = [] +for path in sorted(glob.glob(os.path.join(OUT, "trades_*.csv"))): + run = os.path.basename(path)[7:-4] + tr = pd.read_csv(path) + n = len(tr) + k = int((tr["ret"] > 0).sum()) + rows.append((run, n, k / n if n else 0, wilson_lo(k, n))) +rows.sort(key=lambda r: -r[3]) +print("=== Win-rate ranking (sorted by Wilson 95% lower bound) ===") +print(f"{'run':<28s} {'n':>5s} {'WR':>7s} {'WR_lo95':>8s}") +for run, n, wr, lo in rows[:15]: + print(f"{run:<28s} {n:>5d} {wr:>7.1%} {lo:>8.1%}") + +# ---- fixed-horizon options lens for selected runs ---- +DEEP = [ + ("S1_DoubleSeven_QQQ", "QQQ"), + ("S1_DoubleSeven_SPY", "SPY"), + ("S7_TripleRSI_SPY", "SPY"), + ("S6_TT_C_SPY", "SPY"), + ("S6_TT_C_QQQ", "QQQ"), + ("S5_LowerBand_QQQ_B_sma300", "QQQ"), + ("S4_IBS_QQQ_e20_x70", "QQQ"), + ("S9_5DayLow_A_QQQ", "QQQ"), + ("S6_TT_A_QQQ", "QQQ"), +] +HORIZONS = [1, 2, 3, 5] + +print("\n=== Fixed-horizon directional stats (from next-open entry fill) ===") +hdr = f"{'run':<28s} {'n':>4s} " + " ".join(f"{'P+' + str(h) + 'd':>6s}" for h in HORIZONS) +hdr += f" {'med3d':>7s} {'avg3d':>7s} {'MFE>=1%':>8s} {'MFE>=2%':>8s}" +print(hdr) +for run, sym in DEEP: + path = os.path.join(OUT, f"trades_{run}.csv") + if not os.path.exists(path): + continue + tr = pd.read_csv(path, parse_dates=["entry_date"]) + df = DATA[sym] + closes = df["close"].values + highs = df["high"].values + n_bars = len(df) + res = {h: [] for h in HORIZONS} + mfe3 = [] + for t in tr.itertuples(): + i = IDX[sym].get(t.entry_date) + if i is None: + continue + for h in HORIZONS: + j = i + h - 1 # close of h-th session, entry day = session 1 + if j < n_bars: + res[h].append(closes[j] / t.entry_px - 1) + j3 = min(i + 2, n_bars - 1) + mfe3.append(highs[i:j3 + 1].max() / t.entry_px - 1) + n = len(mfe3) + r3 = np.array(res[3]) + mfe3 = np.array(mfe3) + line = f"{run:<28s} {n:>4d} " + line += " ".join(f"{(np.array(res[h]) > 0).mean():>6.0%}" for h in HORIZONS) + line += f" {np.median(r3):>+7.2%} {r3.mean():>+7.2%}" + line += f" {(mfe3 >= 0.01).mean():>8.0%} {(mfe3 >= 0.02).mean():>8.0%}" + print(line) + +print("\nP+Nd = fraction of entries with close above entry fill N sessions later") +print("MFE = max intraday high within 3 sessions of entry (spike-exit opportunity)") diff --git a/research/options_sim.py b/research/options_sim.py new file mode 100644 index 000000000..60ffdc8c6 --- /dev/null +++ b/research/options_sim.py @@ -0,0 +1,129 @@ +"""Simulate options structures on TT-A/QQQ and FiveDayLow-A/QQQ signal dates. + +Structures per signal: + A. Long ATM call, weekly expiry (T=4-5 trading days), exit at the strategy's + fixed horizon (TT-A: Wednesday close; 5DL: day-3 close). + A2. Same, but "spike exit": if intraday high reaches +1% over entry within + the horizon, exit there (mid-session); else exit at horizon close. + B. Short put spread: short ATM put / long 2% OTM put, same expiry, exit at + the same horizon. + +Pricing: Black-Scholes, r=4%, IV = 20d realized vol * iv_mult, with a +spot-vol beta at exit: IV_exit = IV_entry * clamp(1 - 3*underlying_ret, .6, 1.4). +Costs: 2% of premium round-trip haircut on every leg. +No real options data — treat results as structural comparison, not P&L forecast. +""" +import math +import os + +import numpy as np +import pandas as pd + +from engine import load_symbol + +OUT = os.path.dirname(os.path.abspath(__file__)) +R = 0.04 +COST = 0.02 # round-trip, fraction of each leg's premium + + +def N(x): + return 0.5 * (1 + math.erf(x / math.sqrt(2))) + + +def bs(S, K, T, iv, kind): + if T <= 0: + intr = max(S - K, 0.0) if kind == "c" else max(K - S, 0.0) + return intr + d1 = (math.log(S / K) + (R + iv * iv / 2) * T) / (iv * math.sqrt(T)) + d2 = d1 - iv * math.sqrt(T) + if kind == "c": + return S * N(d1) - K * math.exp(-R * T) * N(d2) + return K * math.exp(-R * T) * N(-d2) - S * N(-d1) + + +def iv_exit(iv0, ret): + return iv0 * min(1.4, max(0.6, 1 - 3 * ret)) + + +df = load_symbol("QQQ") +df["rv20"] = np.log(df["close"] / df["close"].shift(1)).rolling(20).std() * math.sqrt(252) +idx = {d: i for i, d in enumerate(df["date"])} +o = df["open"].values +h = df["high"].values +c = df["close"].values +rv = df["rv20"].values +nb = len(df) + +SIGNALS = { + # (trades csv, horizon sessions incl entry day, expiry sessions from entry) + "TT_A_QQQ": ("trades_S6_TT_A_QQQ.csv", 2, 4), + "5DayLow_A_QQQ": ("trades_S9_5DayLow_A_QQQ.csv", 3, 5), +} + + +def simulate(sig, iv_mult): + path, hor, expiry = SIGNALS[sig] + tr = pd.read_csv(os.path.join(OUT, path), parse_dates=["entry_date"]) + res = {"call": [], "call_spike": [], "putspread": []} + for t in tr.itertuples(): + i = idx.get(t.entry_date) + if i is None or i + hor - 1 >= nb or math.isnan(rv[i]): + continue + S0 = o[i] + iv0 = rv[i] * iv_mult + K = S0 + K2 = 0.98 * S0 + T0 = expiry / 252.0 + j = i + hor - 1 + S1 = c[j] + ret = S1 / S0 - 1 + T1 = max(expiry - hor, 0) / 252.0 + ive = iv_exit(iv0, ret) + + # A. long ATM call, horizon exit + c0 = bs(S0, K, T0, iv0, "c") + c1 = bs(S1, K, T1, ive, "c") + pnl = (c1 * (1 - COST / 2) - c0 * (1 + COST / 2)) / c0 + res["call"].append(pnl) + + # A2. spike exit at +1% if touched + spike_i = None + for kdx in range(i, j + 1): + if h[kdx] >= S0 * 1.01: + spike_i = kdx + break + if spike_i is not None: + elapsed = (spike_i - i) + 0.5 + Ts = max(expiry - elapsed, 0.1) / 252.0 + Ss = S0 * 1.01 + cs = bs(Ss, K, Ts, iv_exit(iv0, 0.01), "c") + pnl2 = (cs * (1 - COST / 2) - c0 * (1 + COST / 2)) / c0 + else: + pnl2 = pnl + res["call_spike"].append(pnl2) + + # B. short put spread (short ATM, long 2% OTM) + p0s = bs(S0, K, T0, iv0, "p") + p0l = bs(S0, K2, T0, iv0, "p") + credit = (p0s - p0l) * (1 - COST / 2) + p1s = bs(S1, K, T1, ive, "p") + p1l = bs(S1, K2, T1, ive, "p") + cost_to_close = (p1s - p1l) * (1 + COST / 2) + max_risk = (K - K2) - credit + res["putspread"].append((credit - cost_to_close) / max_risk) + return res + + +print(f"{'signal':<16s} {'structure':<12s} {'ivx':>4s} {'n':>4s} {'WR':>6s} " + f"{'avg':>8s} {'med':>8s} {'p25':>8s} {'p75':>8s} {'sum':>8s}") +for sig in SIGNALS: + for iv_mult in [1.0, 1.2, 1.4]: + res = simulate(sig, iv_mult) + for struct, pnls in res.items(): + a = np.array(pnls) + print(f"{sig:<16s} {struct:<12s} {iv_mult:>4.1f} {len(a):>4d} {(a>0).mean():>6.0%} " + f"{a.mean():>8.1%} {np.median(a):>8.1%} {np.percentile(a,25):>8.1%} " + f"{np.percentile(a,75):>8.1%} {a.sum():>8.0%}") + print() +print("call/call_spike: P&L as % of premium paid. putspread: P&L as % of max risk.") +print("ivx = IV / 20d realized vol multiplier. sum = cumulative % over ~9.25y of signals.") diff --git a/research/orb_test.py b/research/orb_test.py new file mode 100644 index 000000000..8b0e67f03 --- /dev/null +++ b/research/orb_test.py @@ -0,0 +1,115 @@ +"""ORB (opening range breakout) exactly as the video describes: +15-min opening range; first 5m CLOSE beyond the range = signal; enter next +bar open; stop = opposite side of range; TP at 1R / 2R / none; always flat +at EOD. One trade per day (first breakout). Costs 0.02%/side. +Variants: long / short / both; volume filter on breakout bar. +""" +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") +SLIP = 0.0002 + + +def load(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_5m_full.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df.sort_values("ts").reset_index(drop=True) + d5 = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].reset_index(drop=True) + d5["day"] = d5["ts"].dt.date + d5["vol20"] = d5["volume"].rolling(20).mean() + return d5 + + +def run_orb(d5, direction, tp_r, vol_filter=False): + trades = [] + for dy, g in d5.groupby("day", sort=True): + g = g.reset_index(drop=True) + if len(g) < 20: + continue + rng_hi = g["high"].iloc[0:3].max() + rng_lo = g["low"].iloc[0:3].min() + rng = rng_hi - rng_lo + if rng <= 0: + continue + side = None + for k in range(3, len(g) - 1): + if g["close"].iloc[k] > rng_hi and direction in ("long", "both"): + side, sig_k = +1, k + break + if g["close"].iloc[k] < rng_lo and direction in ("short", "both"): + side, sig_k = -1, k + break + if side is None: + continue + if vol_filter: + va = g["vol20"].iloc[sig_k] + if not va or g["volume"].iloc[sig_k] < 1.5 * va: + continue + e = g["open"].iloc[sig_k + 1] * (1 + SLIP * side) + stop = rng_lo if side > 0 else rng_hi + risk = abs(e - stop) + if risk <= 0: + continue + tp = e + side * tp_r * risk if tp_r else None + ret = None + for k in range(sig_k + 1, len(g)): + lo_, hi_ = g["low"].iloc[k], g["high"].iloc[k] + if side > 0: + if lo_ <= stop: + ret = (stop * (1 - SLIP)) / e - 1 + break + if tp and hi_ >= tp: + ret = (tp * (1 - SLIP)) / e - 1 + break + else: + if hi_ >= stop: + ret = -((stop * (1 + SLIP)) / e - 1) + break + if tp and lo_ <= tp: + ret = -((tp * (1 + SLIP)) / e - 1) + break + if ret is None: + x = g["close"].iloc[-1] + ret = side * ((x * (1 - SLIP * side)) / e - 1) + trades.append(ret) + return np.array(trades) + + +for sym in ["SPY", "QQQ"]: + d5 = load(sym) + d5 = d5[d5["ts"] >= pd.Timestamp("2016-06-01", tz=NY)] + years = (d5["ts"].iloc[-1] - d5["ts"].iloc[0]).days / 365.25 + print(f"===== {sym} ORB (15-min range, close-confirmed, stop=far side, EOD flat) =====") + print(f"{'config':<26s}{'n':>6s}{'WR%':>7s}{'avg%':>8s}{'PF':>6s}{'ann%':>7s}{'maxDD%':>8s}") + for direction in ["long", "short", "both"]: + for tp_r in [1, 2, None]: + a = run_orb(d5, direction, tp_r) + if not len(a): + continue + eq = np.cumprod(1 + a) + ann = eq[-1] ** (1 / years) - 1 + peak = np.maximum.accumulate(eq) + mdd = ((eq - peak) / peak).min() + wins, losses = a[a > 0], a[a <= 0] + pf = wins.sum() / abs(losses.sum()) if losses.sum() != 0 else 99 + lbl = f"{direction}, TP={'EOD' if tp_r is None else str(tp_r)+'R'}" + print(f"{lbl:<26s}{len(a):>6d}{(a>0).mean()*100:>7.1f}{a.mean()*100:>8.3f}" + f"{pf:>6.2f}{ann*100:>7.1f}{mdd*100:>8.1f}") + # their "strong breakout" tease: volume filter on best-guess config + a = run_orb(d5, "both", 2, vol_filter=True) + if len(a): + eq = np.cumprod(1 + a) + ann = eq[-1] ** (1 / years) - 1 + peak = np.maximum.accumulate(eq) + mdd = ((eq - peak) / peak).min() + wins, losses = a[a > 0], a[a <= 0] + pf = wins.sum() / abs(losses.sum()) if losses.sum() != 0 else 99 + print(f"{'both, TP=2R, vol>1.5x':<26s}{len(a):>6d}{(a>0).mean()*100:>7.1f}" + f"{a.mean()*100:>8.3f}{pf:>6.2f}{ann*100:>7.1f}{mdd*100:>8.1f}") + print() diff --git a/research/paper_tracker.py b/research/paper_tracker.py new file mode 100644 index 000000000..7e1641aa5 --- /dev/null +++ b/research/paper_tracker.py @@ -0,0 +1,84 @@ +"""Running paper-trading returns tracker. + +Re-run any time. Reads book_state.json (positions + closed trades), marks open +positions to latest Alpaca daily close, prints per-sleeve and total running +returns. Update book_state.json as the bot opens/closes trades (or by hand). + +Env: ALPACA_API_KEY / ALPACA_API_SECRET (paper). No keys are stored in this file. +""" +import json +import os +import urllib.parse +import urllib.request +from datetime import datetime, timedelta, timezone + +HERE = os.path.dirname(os.path.abspath(__file__)) +STATE = os.path.join(HERE, "book_state.json") +KEY = os.environ.get("ALPACA_API_KEY", "") +SEC = os.environ.get("ALPACA_API_SECRET", "") + + +def latest_close(sym): + end = (datetime.now(timezone.utc) - timedelta(minutes=16)).strftime("%Y-%m-%dT%H:%M:%SZ") + is_crypto = "/" in sym + if is_crypto: + p = {"symbols": sym, "timeframe": "1Day", "start": "2026-06-01", "end": end, "limit": "50"} + url = "https://data.alpaca.markets/v1beta3/crypto/us/bars?" + urllib.parse.urlencode(p) + else: + p = {"timeframe": "1Day", "start": "2026-06-01", "end": end, "limit": "50", + "feed": "sip", "adjustment": "all"} + url = f"https://data.alpaca.markets/v2/stocks/{sym}/bars?" + urllib.parse.urlencode(p) + r = urllib.request.Request(url, headers={"APCA-API-KEY-ID": KEY, "APCA-API-SECRET-KEY": SEC}) + with urllib.request.urlopen(r, timeout=30) as resp: + data = json.loads(resp.read()) + bars = data["bars"][sym] if is_crypto else data.get("bars", []) + return bars[-1]["c"] if bars else None + + +def load_state(): + if os.path.exists(STATE): + return json.load(open(STATE)) + return {"sleeves": {}, "open": [], "closed": [], "start_date": "2026-07-02"} + + +def main(): + st = load_state() + print(f"=== PAPER BOOK — running returns (as of {datetime.now(timezone.utc):%Y-%m-%d %H:%M} UTC) ===") + print(f"Tracking since {st.get('start_date','?')}\n") + + by_sleeve = {} + # closed trades + for t in st.get("closed", []): + by_sleeve.setdefault(t["sleeve"], []).append(t["ret"]) + # open positions marked to market + print(f"{'OPEN POSITIONS':<28s}{'entry':>9s}{'mark':>9s}{'unreal%':>9s}") + for pos in st.get("open", []): + mk = latest_close(pos["symbol"]) + if mk is None: + print(f" {pos['strategy']:<26s} (no data)") + continue + ur = mk / pos["entry_px"] - 1 + by_sleeve.setdefault(pos["sleeve"], []).append(ur) + print(f" {pos['strategy']+' '+pos['symbol']:<26s}{pos['entry_px']:>9.2f}{mk:>9.2f}{ur*100:>+8.2f}%") + + print(f"\n{'SLEEVE':<10s}{'trades':>8s}{'wins':>6s}{'WR':>7s}{'cum ret%':>10s}") + total_ret = 1.0 + weights = {"A": 0.55, "B": 0.10, "C": 0.20, "D": 0.15} # AGG-MAX locked 2026-07-13 + book = 0.0 + for sl in ["A", "B", "C", "D"]: + rets = by_sleeve.get(sl, []) + if not rets: + print(f" {sl:<8s}{'0':>8s}{'--':>6s}{'--':>7s}{'0.00':>10s}") + continue + import numpy as np + a = np.array(rets) + cum = np.prod(1 + a) - 1 + wr = (a > 0).mean() + book += weights[sl] * cum + print(f" {sl:<8s}{len(a):>8d}{int((a>0).sum()):>6d}{wr:>7.1%}{cum*100:>+10.2f}") + print(f"\n BOOK (weighted, {int(sum(weights.values())*100)}% deployed): {book*100:+.2f}%") + print(" (paper phase: judge on 30+ closed trades, not the first weeks)") + + +if __name__ == "__main__": + main() diff --git a/research/qqq_and_exits.py b/research/qqq_and_exits.py new file mode 100644 index 000000000..a5e12506a --- /dev/null +++ b/research/qqq_and_exits.py @@ -0,0 +1,217 @@ +"""Part A: replicate R1-R4 scan on QQQ (out-of-sample for the alignment finding). +Part B: stop/target exit grid on the filtered rules, SPY and QQQ: + R2f long = R2 + 1h %B < 0.3 + R4f short = R4 + daily %B <= 0.8 (variant: also 30m RSI < 40) +Slippage 0.02%/side. Same-bar stop+target -> stop assumed first (conservative). +""" +import math +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") +SLIP = 0.0002 +WARM = np.datetime64("2016-06-01") + + +def wilder_rsi(close, period=14): + d = close.diff() + ag = d.clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + al = (-d).clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + return 100 - 100 / (1 + ag / al) + + +class Sym: + def __init__(self, sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_5m_full.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df.sort_values("ts").reset_index(drop=True) + d5 = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].reset_index(drop=True) + c = d5["close"] + d5["rsi14"] = wilder_rsi(c) + d5["ema9"] = c.ewm(span=9, adjust=False).mean() + d5["sma9"] = c.rolling(9).mean() + mid = c.rolling(20).mean() + sd = c.rolling(20).std() + d5["bb_lo"] = mid - 2 * sd + d5["day"] = d5["ts"].dt.date + pv = d5["vwap"] * d5["volume"] + d5["svwap"] = pv.groupby(d5["day"]).cumsum() / d5["volume"].groupby(d5["day"]).cumsum() + d5["vol20"] = d5["volume"].rolling(20).mean() + self.d5 = d5 + self.ts = d5["ts"].values + self.o = d5["open"].values + self.h = d5["high"].values + self.l = d5["low"].values + self.c = d5["close"].values + self.vw = d5["svwap"].values + self.ema9 = d5["ema9"].values + self.sma9 = d5["sma9"].values + self.rsi = d5["rsi14"].values + self.bblo = d5["bb_lo"].values + self.volx = (d5["volume"] / d5["vol20"]).values + self.day = d5["day"].values + self.tod_end = (d5["ts"].dt.hour * 60 + d5["ts"].dt.minute + 5).values + self.n = len(d5) + self.day_start, self.day_end = {}, {} + for i, dy in enumerate(self.day): + if dy not in self.day_start: + self.day_start[dy] = i + self.day_end[dy] = i + # higher TFs + self.tf = {} + for step, name in [(15, "15m"), (30, "30m"), (60, "1h")]: + minutes = (d5["ts"].dt.hour * 60 + d5["ts"].dt.minute) - 570 + grp = np.minimum(minutes // step, (390 // step) - 1) + key = d5["day"].astype(str) + "_" + grp.astype(str) + g = d5.groupby(key, sort=False) + a = pd.DataFrame({"ts": g["ts"].first(), "close": g["close"].last(), + "end": g["ts"].last() + pd.Timedelta(minutes=5)}) + a = a.reset_index(drop=True).sort_values("ts").reset_index(drop=True) + a["rsi14"] = wilder_rsi(a["close"]) + m = a["close"].rolling(20).mean() + s = a["close"].rolling(20).std() + a["pctb"] = (a["close"] - (m - 2 * s)) / (4 * s) + self.tf[name] = (a["end"].values, a[["rsi14", "pctb"]].values) + daily = pd.read_csv(os.path.join(OUT, f"{sym}_daily.csv"), parse_dates=["date"]) + dc = daily["close"] + dm = dc.rolling(20).mean() + dsd = dc.rolling(20).std() + daily["pctb"] = (dc - (dm - 2 * dsd)) / (4 * dsd) + self.d_dates = daily["date"].values + self.d_pctb = daily["pctb"].values + + def tf_at(self, sig_ts, name, col): + ends, feats = self.tf[name] + k = np.searchsorted(ends, sig_ts, side="right") - 1 + return feats[k][col] if k >= 0 else np.nan + + def daily_pctb_prev(self, sig_ts): + dayn = pd.Timestamp(sig_ts).normalize() + kd = np.searchsorted(self.d_dates, np.datetime64(dayn)) - 1 + return self.d_pctb[kd] if kd >= 0 else np.nan + + +def scan(S): + sigs = {"R1_fade": [], "R2_long": [], "R3_fade": [], "R4_cont": []} + cur_day, touch, in_t = None, 0, False + last = {k: -99 for k in sigs} + for i in range(1, S.n): + if S.ts[i] < WARM or math.isnan(S.rsi[i]) or math.isnan(S.sma9[i]): + continue + dy = S.day[i] + if dy != cur_day: + cur_day, touch, in_t = dy, 0, False + if S.rsi[i] >= 65 and not in_t: + touch += 1 + in_t = True + elif S.rsi[i] < 58: + in_t = False + dsi = S.day_start[dy] + day_hi = S.h[dsi:i + 1].max() + px = S.c[i] + rl = math.ceil(day_hi / 5) * 5 + if (touch >= 2 and in_t and S.rsi[i] >= 65 and px > S.vw[i] + and 0 < rl - day_hi <= 0.0015 * px and i - last["R1_fade"] > 12): + sigs["R1_fade"].append(i); last["R1_fade"] = i + if i - dsi == 5: + o1, c1, c2 = S.o[dsi], S.c[dsi + 2], S.c[i] + if c1 < o1 and c2 > o1 and c2 > S.vw[i]: + sigs["R2_long"].append(i) + spread = abs(S.ema9[i] - S.sma9[i]) + above = min(S.ema9[i], S.sma9[i]) - S.vw[i] + crossed = S.ema9[i] < S.sma9[i] and S.ema9[i - 1] >= S.sma9[i - 1] + if (crossed and spread < 0.0003 * px and 0 < above < 0.0015 * px + and px > S.vw[i] and px < day_hi * (1 - 0.002) and i - last["R3_fade"] > 12): + sigs["R3_fade"].append(i); last["R3_fade"] = i + if (px < S.vw[i] and px < S.bblo[i] and S.volx[i] >= 2.5 and i - last["R4_cont"] > 12): + sigs["R4_cont"].append(i); last["R4_cont"] = i + return sigs + + +def eod_ret(S, i, side): + if i + 2 >= S.n or S.day[i + 1] != S.day[i]: + return None + e = S.o[i + 1] + de = S.day_end[S.day[i]] + return side * (S.c[de] / e - 1) + + +def stop_target(S, i, side, stop, target): + """Entry next 5m open with slippage; conservative same-bar rule; EOD close.""" + if i + 2 >= S.n or S.day[i + 1] != S.day[i]: + return None + e = S.o[i + 1] * (1 + SLIP * side) + de = S.day_end[S.day[i]] + if side > 0: + stop_px, tgt_px = e * (1 - stop), e * (1 + target) + else: + stop_px, tgt_px = e * (1 + stop), e * (1 - target) + for j in range(i + 1, de + 1): + if side > 0: + if S.l[j] <= stop_px: + return (stop_px * (1 - SLIP)) / e - 1 + if S.h[j] >= tgt_px: + return (tgt_px * (1 - SLIP)) / e - 1 + else: + if S.h[j] >= stop_px: + return -((stop_px * (1 + SLIP)) / e - 1) + if S.l[j] <= tgt_px: + return -((tgt_px * (1 + SLIP)) / e - 1) + x = S.c[de] + return side * (x * (1 - SLIP * side) / e - 1) + + +for symname in ["QQQ"]: + S = Sym(symname) + sigs = scan(S) + print(f"===== {symname}: rule replication (EOD outcome, no exits overlay) =====") + for rule, side in [("R1_fade", -1), ("R2_long", +1), ("R3_fade", -1), ("R4_cont", -1)]: + rows = [] + for i in sigs[rule]: + r = eod_ret(S, i, side) + if r is None: + continue + rows.append((i, r)) + a = np.array([r for _, r in rows]) + if not len(a): + continue + print(f"{rule:<9s} n={len(a):>4d} EOD WR={(a>0).mean():>6.1%} avg={a.mean():+.3%}") + # key companion split + if rule == "R2_long": + f = np.array([S.tf_at(S.ts[i], "1h", 1) < 0.3 for i, _ in rows]) + elif rule in ("R3_fade", "R4_cont"): + f = np.array([S.daily_pctb_prev(S.ts[i]) <= 0.8 for i, _ in rows]) + else: + f = np.array([S.tf_at(S.ts[i], "30m", 0) > 65 for i, _ in rows]) + for lbl, m in [("aligned", f), ("not", ~f)]: + b = a[m] + if len(b) >= 10: + print(f" {lbl:<8s} n={len(b):>4d} WR={(b>0).mean():>6.1%} avg={b.mean():+.3%}") + +print("\n===== Part B: stop/target grids on filtered rules =====") +for symname in ["SPY", "QQQ"]: + S = Sym(symname) + sigs = scan(S) + r2f = [i for i in sigs["R2_long"] if S.tf_at(S.ts[i], "1h", 1) < 0.3] + r4f = [i for i in sigs["R4_cont"] if S.daily_pctb_prev(S.ts[i]) <= 0.8] + r4ff = [i for i in r4f if S.tf_at(S.ts[i], "30m", 0) < 40] + for label, idxs, side in [(f"{symname} R2f long (1h%B<0.3)", r2f, +1), + (f"{symname} R4f short (d%B<=.8)", r4f, -1), + (f"{symname} R4ff short (+30mRSI<40)", r4ff, -1)]: + print(f"\n--- {label}: {len(idxs)} signals ---") + print(f" {'stop':>6s} {'tgt':>6s} {'n':>5s} {'WR':>6s} {'avg':>8s} {'PF':>5s} {'sum':>7s}") + for stop in [0.0015, 0.0025]: + for tgt in [0.002, 0.003, 0.005]: + rets = [stop_target(S, i, side, stop, tgt) for i in idxs] + a = np.array([r for r in rets if r is not None]) + if not len(a): + continue + wins, losses = a[a > 0], a[a <= 0] + pf = wins.sum() / abs(losses.sum()) if losses.sum() != 0 else float("inf") + print(f" {stop:>6.2%} {tgt:>6.2%} {len(a):>5d} {(a>0).mean():>6.1%} " + f"{a.mean():>8.3%} {pf:>5.2f} {a.sum():>7.1%}") diff --git a/research/recent_autopsy.py b/research/recent_autopsy.py new file mode 100644 index 000000000..8a33562f0 --- /dev/null +++ b/research/recent_autopsy.py @@ -0,0 +1,96 @@ +"""A. Autopsy: what separates 2022-2026 IBS winners from losers? +(the era where the GREEN grade decayed from ~76% to ~62%) +Rule: a condition only counts if its sign agrees on QQQ AND SPY. +""" +import math +import os + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) + + +def wilder_rsi(close, period=14): + d = close.diff() + ag = d.clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + al = (-d).clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + return 100 - 100 / (1 + ag / al) + + +def prep(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_daily.csv"), parse_dates=["date"]) + df = df.sort_values("date").reset_index(drop=True) + c, h, l, o = df["close"], df["high"], df["low"], df["open"] + df["volx"] = df["volume"] / df["volume"].rolling(20).mean() + tr = np.maximum(h - l, np.maximum((h - c.shift(1)).abs(), (l - c.shift(1)).abs())) + df["range_x"] = (h - l) / tr.rolling(14).mean() + df["rsi14"] = wilder_rsi(c) + m20, s20 = c.rolling(20).mean(), c.rolling(20).std() + df["pctb"] = (c - (m20 - 2 * s20)) / (4 * s20) + df["sma200"] = c.rolling(200).mean() + df["hi252"] = c.rolling(252).max() + df["ret1"] = c.pct_change() + df["ret10"] = c / c.shift(10) - 1 + df["rv20"] = np.log(c / c.shift(1)).rolling(20).std() + df["rv80"] = df["rv20"].expanding().quantile(0.8) + rng = h - l + df["ibs"] = np.where(rng > 0, (c - l) / rng, 0.5) + df["prev_ibs_sig"] = (pd.Series(df["ibs"]).shift(1) < 0.20) + df["next_open"] = o.shift(-1) + df["gap_at_entry"] = df["next_open"] / c - 1 # known at fill time + return df + + +sk = pd.read_csv(os.path.join(OUT, "SKEW_History.csv")) +sk["date"] = pd.to_datetime(sk["DATE"]) +sk["chg5"] = sk["SKEW"] - sk["SKEW"].shift(5) +skmap = dict(zip(sk["date"], sk["chg5"])) + +FEATURES = [ + ("gap-down >0.5% at entry open", lambda r: r.gap_at_entry < -0.005), + ("below SMA200", lambda r: r.close < r.sma200), + (">10% off 52w high", lambda r: r.close / r.hi252 - 1 < -0.10), + ("crisis vol (rv>80th pct)", lambda r: r.rv20 > r.rv80), + ("SKEW rose >2 (5d)", lambda r: skmap.get(r.date, 0) > 2), + ("prev day also IBS<0.20", lambda r: bool(r.prev_ibs_sig)), + ("2wk decline >5%", lambda r: r.ret10 < -0.05), + ("below lower BB (%B<0)", lambda r: r.pctb < 0), + ("day was Friday", lambda r: r.date.weekday() == 4), +] + +res = {} +for sym in ["QQQ", "SPY"]: + df = prep(sym) + idx = {d: i for i, d in enumerate(df["date"])} + tr = pd.read_csv(os.path.join(OUT, f"trades_S4_IBS_{sym}_e20_x70.csv"), parse_dates=["entry_date"]) + tr = tr[tr["entry_date"] >= "2022-01-01"] + rows = list(df.itertuples(index=False)) + recs = [] + for t in tr.itertuples(): + i = idx.get(t.entry_date) + if i and i > 0: + recs.append((rows[i - 1], t.ret > 0)) + base = np.mean([w for _, w in recs]) + res[sym] = {"base": base, "n": len(recs), "f": {}} + for name, fn in FEATURES: + wt = [w for r, w in recs if fn(r)] + wf = [w for r, w in recs if not fn(r)] + if len(wt) >= 8 and len(wf) >= 8: + res[sym]["f"][name] = (np.mean(wt) - np.mean(wf), len(wt)) + +print(f"2022-2026 IBS trades: QQQ n={res['QQQ']['n']} (WR {res['QQQ']['base']:.1%}), " + f"SPY n={res['SPY']['n']} (WR {res['SPY']['base']:.1%})") +print(f"{'condition':<30s}{'QQQ dWR':>9s}{'SPY dWR':>9s}{'agree':>7s}{'nQ':>4s}") +print("-" * 60) +out = [] +for name, _ in FEATURES: + q = res["QQQ"]["f"].get(name) + s = res["SPY"]["f"].get(name) + if q is None or s is None: + continue + agree = (q[0] > 0) == (s[0] > 0) + out.append((name, q[0], s[0], agree, q[1], min(abs(q[0]), abs(s[0])) if agree else 0)) +out.sort(key=lambda x: -x[5]) +for name, qg, sg, ag, nq, _ in out: + print(f"{name:<30s}{qg:>+9.1%}{sg:>+9.1%}{'YES' if ag else 'no':>7s}{nq:>4d}") diff --git a/research/reel_components.py b/research/reel_components.py new file mode 100644 index 000000000..520983ae8 --- /dev/null +++ b/research/reel_components.py @@ -0,0 +1,92 @@ +"""Test the reel's two untested components. + +1. BTC 1h momentum breakout: close > 24-bar high -> long next open, + 1% hard stop (per the video), exits: 2R target / 24-bar timeout. + Variants: with/without the 1% stop; long-only (video implies long momentum). +2. GLD/USO trend-following (daily proxy for their '4h'): 10/40 MA cross, + long on golden cross, exit on cross down; variants: long/short both; + with the video's 1% stop vs none. Costs 0.02%/side (crypto real costs higher). +""" +import os + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +SLIP = 0.0002 + + +def stats(rets, label, per_year=None): + a = np.array(rets) + if not len(a): + print(f"{label:<34s} no trades") + return + wins, losses = a[a > 0], a[a <= 0] + pf = wins.sum() / abs(losses.sum()) if losses.sum() != 0 else 99 + eq = np.cumprod(1 + a) + peak = np.maximum.accumulate(eq) + mdd = ((eq - peak) / peak).min() + tot = eq[-1] - 1 + print(f"{label:<34s} n={len(a):>4d} WR={(a>0).mean():>6.1%} avg={a.mean():>+7.3%} " + f"PF={pf:>5.2f} total={tot:>+8.1%} maxDD={mdd:>7.1%}") + + +# ---------- 1. BTC 1h momentum breakout ---------- +b = pd.read_csv(os.path.join(OUT, "BTC_1h.csv"), parse_dates=["ts"]).sort_values("ts").reset_index(drop=True) +o, h, l, c = b["open"].values, b["high"].values, b["low"].values, b["close"].values +hi24 = pd.Series(h).shift(1).rolling(24).max().values +n = len(b) +print("=== BTC/USD 1h momentum breakout (close > prior 24-bar high) ===") +for use_stop, lbl in [(True, "1% stop, 2R target, 24-bar out"), (False, "no stop, exit @24 bars")]: + rets = [] + i = 25 + while i < n - 26: + if c[i] > hi24[i]: + e = o[i + 1] * (1 + SLIP) + stop = e * 0.99 + tgt = e * 1.02 + ret = None + for k in range(i + 1, i + 25): + if use_stop and l[k] <= stop: + ret = (stop * (1 - SLIP)) / e - 1 + break + if use_stop and h[k] >= tgt: + ret = (tgt * (1 - SLIP)) / e - 1 + break + if ret is None: + ret = (c[min(i + 24, n - 1)] * (1 - SLIP)) / e - 1 + rets.append(ret) + i += 24 + else: + i += 1 + stats(rets, f"BTC long breakout, {lbl}") + +# ---------- 2. GLD / USO trend following ---------- +print("\n=== GLD / USO trend-following (10/40 MA cross, daily proxy for '4h') ===") +for sym in ["GLD", "USO"]: + d = pd.read_csv(os.path.join(OUT, f"{sym}_daily.csv"), parse_dates=["date"]).sort_values("date").reset_index(drop=True) + c_ = d["close"] + d["f"] = c_.rolling(10).mean() + d["s"] = c_.rolling(40).mean() + o_, lo_, cl_ = d["open"].values, d["low"].values, c_.values + f_, s_ = d["f"].values, d["s"].values + for use_stop, lbl in [(False, "no stop"), (True, "video's 1% stop")]: + rets = [] + in_pos = False + e = None + for i in range(41, len(d) - 1): + if in_pos: + if use_stop and lo_[i] <= e * 0.99: + rets.append((e * 0.99 * (1 - SLIP)) / e - 1) + in_pos = False + continue + if f_[i] < s_[i]: + rets.append((o_[i + 1] * (1 - SLIP)) / e - 1) + in_pos = False + else: + if f_[i] > s_[i] and f_[i - 1] <= s_[i - 1]: + e = o_[i + 1] * (1 + SLIP) + in_pos = True + stats(rets, f"{sym} long 10/40 cross, {lbl}") + bh = cl_[-1] / cl_[40] - 1 + print(f"{' ('+sym+' buy&hold same window)':<34s} total={bh:>+8.1%}") diff --git a/research/report.py b/research/report.py new file mode 100644 index 000000000..dc706cd1b --- /dev/null +++ b/research/report.py @@ -0,0 +1,140 @@ +"""Build ranking, reliability flags, close-vs-open execution check, and report.md.""" +import json +import os + +import numpy as np +import pandas as pd + +import run_suite # executes the suite on import +from engine import run_bt, compute_stats + +OUT = os.path.dirname(os.path.abspath(__file__)) +results = run_suite.results +bench = run_suite.bench +DATA = run_suite.DATA +RUNS = run_suite.RUNS + +# --- same-close execution twins (lookahead version, for reliability flag) --- +close_cagr = {} +for run_id, strat, sym, kw in RUNS: + kw2 = dict(kw) + kw2["entry_fill"] = "close" + kw2["exit_fill"] = "close" + eq, trades = run_bt(DATA[sym], **kw2) + close_cagr[run_id] = compute_stats(eq, trades, run_id)["cagr"] + +# --- flags & ranking --- +AVAILABLE_SUBS = ["2010-2019", "2020-2021", "2022", "2023-present"] + +rows = [] +for st in results: + rid = st["label"] + sym = st["symbol"] + subs = {k: v for k, v in st["subperiods"].items() if v is not None} + sub_cagrs = {k: subs[k]["cagr"] for k in AVAILABLE_SUBS if k in subs} + pos_subs = [k for k, v in sub_cagrs.items() if v > 0] + stability = len(pos_subs) / len(sub_cagrs) if sub_cagrs else 0.0 + + flags = [] + if st["n_trades"] < 50: + flags.append("<50 trades") + if st["total"] > 0 and len(pos_subs) == 1: + flags.append("profits from one subperiod") + if sub_cagrs.get("2023-present", 0) < 0 and st["total"] > 0: + flags.append("collapsed post-2023") + if st["maxdd"] < bench[sym]["maxdd"]: + flags.append("maxDD worse than B&H") + if st["pf"] < 1.2: + flags.append("PF<1.2 after slippage") + delta = close_cagr[rid] - st["cagr"] + if delta > 0.02: + flags.append(f"needs close-exec (+{delta:.1%} CAGR w/ lookahead)") + + rows.append(dict(run=rid, strategy=st["strategy"], symbol=sym, + cagr=st["cagr"], maxdd=st["maxdd"], + mar=st["cagr"] / abs(st["maxdd"]) if st["maxdd"] != 0 else 0.0, + sharpe=st["sharpe"], sortino=st["sortino"], wr=st["wr"], pf=st["pf"], + n=st["n_trades"], exposure=st["exposure"], avg_trade=st["avg_trade"], + med_trade=st["med_trade"], avg_hold=st["avg_hold"], + best=st["best"], worst=st["worst"], + stability=stability, close_delta=delta, + flags="; ".join(flags) if flags else "-", + n_flags=len(flags), sub_cagrs=sub_cagrs, yearly=st["yearly"])) + +df = pd.DataFrame(rows) +# composite rank per the requested priority: PF, CAGR/maxDD, Sharpe, WR, #trades, stability +for col, asc in [("pf", False), ("mar", False), ("sharpe", False), + ("wr", False), ("n", False), ("stability", False)]: + df[f"rk_{col}"] = df[col].rank(ascending=asc) +df["rank_score"] = df[[c for c in df.columns if c.startswith("rk_")]].mean(axis=1) +df = df.sort_values("rank_score").reset_index(drop=True) + +# --- report.md --- +L = [] +L.append("# Daily Strategy Backtest Suite — SPY / QQQ (Alpaca SIP, adjusted)") +L.append("") +L.append(f"- **Window:** 2017-04-01 → 2026-07-01 (~9.25y; Alpaca data starts 2016-01-04; " + f"first 300 sessions reserved for indicator warmup)") +L.append("- **Execution:** signals on completed daily bars; fills next open; slippage 0.02%/side; commission $0; long-only; 100% equity/trade") +L.append("- **Unavailable subperiods:** 2000–2007, 2008–2009 (before Alpaca history). \"2010–2019\" = 2017–2019 here.") +L.append("- **Skipped:** TRIN Dip Buying (no NYSE TRIN data source available).") +L.append("") +L.append("## Benchmarks (buy & hold)") +L.append("") +L.append("| Symbol | CAGR | maxDD | Sharpe |") +L.append("|---|---|---|---|") +for sym, st in bench.items(): + L.append(f"| {sym} | {st['cagr']:.1%} | {st['maxdd']:.1%} | {st['sharpe']:.2f} |") +L.append("") +L.append("## Full ranking (composite of PF, CAGR/maxDD, Sharpe, WR, #trades, subperiod stability)") +L.append("") +L.append("| # | Run | CAGR | maxDD | MAR | Sharpe | Sortino | WR | PF | #tr | Expo | AvgTr | AvgHold | Stab | Flags |") +L.append("|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|") +for i, r in df.iterrows(): + L.append(f"| {i+1} | {r['run']} | {r['cagr']:.1%} | {r['maxdd']:.1%} | {r['mar']:.2f} | " + f"{r['sharpe']:.2f} | {r['sortino']:.2f} | {r['wr']:.0%} | {r['pf']:.2f} | {r['n']} | " + f"{r['exposure']:.0%} | {r['avg_trade']:.3%} | {r['avg_hold']:.1f}d | {r['stability']:.0%} | {r['flags']} |") +L.append("") +L.append("## Subperiod CAGR by run") +L.append("") +L.append("| Run | 2017-2019 | 2020-2021 | 2022 | 2023-present |") +L.append("|---|---|---|---|---|") +for _, r in df.iterrows(): + s = r["sub_cagrs"] + L.append(f"| {r['run']} | " + " | ".join( + f"{s.get(k, float('nan')):.1%}" if k in s else "n/a" + for k in AVAILABLE_SUBS) + " |") +L.append("") +L.append("## Best/worst trades and yearly returns (top 10 by rank)") +L.append("") +for _, r in df.head(10).iterrows(): + yr = ", ".join(f"{k}: {v:+.1%}" for k, v in sorted(r["yearly"].items())) + L.append(f"- **{r['run']}** — best {r['best']:+.1%}, worst {r['worst']:+.1%}, median trade " + f"{r['med_trade']:+.3%}. Yearly: {yr}") +L.append("") +L.append("## Notes") +L.append("") +L.append("- Trade logs: `trades_.csv`; equity curves: `equity_.csv` (same directory).") +L.append("- `Stab` = fraction of available subperiods with positive CAGR.") +L.append("- The close-exec flag compares against a same-close fill variant (which has lookahead); " + "strategies carrying it depend on untradeable fills for a chunk of their edge.") +L.append("- Triple RSI reliability: see run S7 — Wilson 95% CI reported in console output.") + +with open(os.path.join(OUT, "report.md"), "w") as f: + f.write("\n".join(L)) + +df.drop(columns=["sub_cagrs", "yearly"]).to_csv(os.path.join(OUT, "ranking.csv"), index=False) + +# Triple RSI reliability detail +s7 = df[df["run"] == "S7_TripleRSI_SPY"].iloc[0] +n7, wr7 = int(s7["n"]), s7["wr"] +z = 1.96 +ph = wr7 +den = 1 + z * z / n7 +ctr = ph + z * z / (2 * n7) +mg = z * np.sqrt(ph * (1 - ph) / n7 + z * z / (4 * n7 * n7)) +print(f"TripleRSI: {n7} trades over 9.25y -> {9.25*365.25/n7:.0f} days between trades; " + f"WR={wr7:.1%}, Wilson 95% CI [{(ctr-mg)/den:.1%}, {(ctr+mg)/den:.1%}]") +print("\nTop 12 by composite rank:") +print(df.head(12)[["run", "cagr", "maxdd", "sharpe", "wr", "pf", "n", "stability", "flags"]].to_string(index=False)) +print("\nreport.md written") diff --git a/research/run_suite.py b/research/run_suite.py new file mode 100644 index 000000000..c6f9ce217 --- /dev/null +++ b/research/run_suite.py @@ -0,0 +1,151 @@ +"""Run the full 10-strategy daily backtest suite on SPY/QQQ Alpaca data.""" +import json +import math +import os + +import numpy as np +import pandas as pd + +import engine +from engine import run_bt, compute_stats, subperiod_stats, load_symbol, STAT_START + +OUT = os.path.dirname(os.path.abspath(__file__)) +DATA = {s: load_symbol(s) for s in ["SPY", "QQQ"]} + + +def nn(*vals): + return all(not (isinstance(v, float) and math.isnan(v)) for v in vals) + + +RUNS = [] # (run_id, strategy, symbol, df, kwargs) + +# --- 1. Double Seven (trend-filtered daily version) --- +for sym in ["SPY", "QQQ"]: + RUNS.append((f"S1_DoubleSeven_{sym}", "1 Double Seven", sym, dict( + entry_fn=lambda r: nn(r.sma200, r.lc7) and r.close > r.sma200 and r.close <= r.lc7, + exit_fn=lambda r: r.close >= r.hc7))) + +# --- 2. Connors RSI2 Original: CumRSI2 < 5, exit close > SMA5 --- +for sym in ["SPY", "QQQ"]: + RUNS.append((f"S2_RSI2Orig_{sym}", "2 RSI2 Original", sym, dict( + entry_fn=lambda r: nn(r.sma200, r.cumrsi2) and r.close > r.sma200 and r.cumrsi2 < 5, + exit_fn=lambda r: r.close > r.sma5))) + +# --- 3. Connors RSI2 Modified: CumRSI2 < 10, exit close > SMA10; A no stop, B -2% stop --- +for sym in ["SPY", "QQQ"]: + for tag, stop in [("A_nostop", None), ("B_stop2", 0.02)]: + RUNS.append((f"S3_RSI2Mod_{sym}_{tag}", "3 RSI2 Modified", sym, dict( + entry_fn=lambda r: nn(r.sma200, r.cumrsi2) and r.close > r.sma200 and r.cumrsi2 < 10, + exit_fn=lambda r: r.close > r.sma10, stop_pct=stop))) + +# --- 4. IBS Basic: entry/exit threshold grid, both symbols --- +for sym in ["QQQ", "SPY"]: + for lo in [0.20, 0.25, 0.30]: + for hi in [0.70, 0.75, 0.80]: + RUNS.append((f"S4_IBS_{sym}_e{int(lo*100)}_x{int(hi*100)}", "4 IBS Basic", sym, dict( + entry_fn=(lambda lo_: lambda r: r.ibs < lo_)(lo), + exit_fn=(lambda hi_: lambda r: r.ibs > hi_)(hi)))) + +# --- 5. QQQ Lower Band + IBS; A no regime, B SMA300 regime filter --- +RUNS.append(("S5_LowerBand_QQQ_A", "5 Lower Band IBS", "QQQ", dict( + entry_fn=lambda r: nn(r.lower_band) and r.close < r.lower_band and r.ibs < 0.30, + exit_fn=lambda r: nn(r.prev_high) and r.close > r.prev_high))) +RUNS.append(("S5_LowerBand_QQQ_B_sma300", "5 Lower Band IBS", "QQQ", dict( + entry_fn=lambda r: nn(r.lower_band) and r.close < r.lower_band and r.ibs < 0.30, + exit_fn=lambda r: nn(r.prev_high) and r.close > r.prev_high, + regime_fn=lambda r: nn(r.sma300) and r.close < r.sma300))) + +# --- 6. Turnaround Tuesday --- +for sym in ["SPY", "QQQ"]: + RUNS.append((f"S6_TT_A_{sym}", "6 Turnaround Tuesday", sym, dict( + entry_fn=lambda r: r.weekday == 0 and r.close < r.open, + exit_fn=None, max_hold=1))) # exit Wednesday open + RUNS.append((f"S6_TT_Atheo_{sym}", "6 Turnaround Tuesday", sym, dict( + entry_fn=lambda r: r.weekday == 0 and r.close < r.open, + exit_fn=None, max_hold=1, exit_fill="close"))) # theoretical Tuesday close + RUNS.append((f"S6_TT_B_{sym}", "6 Turnaround Tuesday", sym, dict( + entry_fn=lambda r: r.weekday == 0 and nn(r.prev_low) and r.close < r.prev_low, + exit_fn=None, max_hold=1))) + RUNS.append((f"S6_TT_C_{sym}", "6 Turnaround Tuesday", sym, dict( + entry_fn=lambda r: (r.weekday == 0 and nn(r.prev_close, r.prev2_close) + and r.close < r.prev_close and r.prev_close < r.prev2_close), + exit_fn=lambda r: nn(r.prev_high) and r.close > r.prev_high, max_hold=5))) + +# --- 7. Triple RSI (SPY only) --- +RUNS.append(("S7_TripleRSI_SPY", "7 Triple RSI", "SPY", dict( + entry_fn=lambda r: (nn(r.sma200, r.rsi5, r.rsi5_1, r.rsi5_2, r.rsi5_3) + and r.close > r.sma200 and r.rsi5 < 30 + and r.rsi5 < r.rsi5_1 and r.rsi5_1 < r.rsi5_2 + and r.rsi5_3 < 60), + exit_fn=lambda r: r.rsi5 > 50))) + +# --- 8. SPY IBS + RSI21 Classical --- +RUNS.append(("S8_IBSRSI21_SPY", "8 IBS+RSI21 Classical", "SPY", dict( + entry_fn=lambda r: nn(r.rsi21) and r.ibs < 0.25 and r.rsi21 < 45, + exit_fn=lambda r: nn(r.prev_close) and r.close > r.prev_close))) + +# --- 9. Five-Day Low + Low IBS --- +for sym in ["SPY", "QQQ"]: + RUNS.append((f"S9_5DayLow_A_{sym}", "9 Five-Day Low", sym, dict( + entry_fn=lambda r: nn(r.lc5) and r.ibs < 0.25 and r.close <= r.lc5, + exit_fn=lambda r: nn(r.prev_close) and r.close > r.prev_close))) + RUNS.append((f"S9_5DayLow_B_{sym}", "9 Five-Day Low", sym, dict( + entry_fn=lambda r: nn(r.ll5) and r.ibs < 0.25 and r.low <= r.ll5, + exit_fn=lambda r: nn(r.prev_close) and r.close > r.prev_close))) + +# --- 10. Large Down-Day Bounce --- +for sym in ["SPY", "QQQ"]: + RUNS.append((f"S10_DownDay_A_{sym}", "10 Down-Day Bounce", sym, dict( + entry_fn=lambda r: nn(r.ret1) and r.ret1 <= -0.05, exit_fn=None, max_hold=1))) + RUNS.append((f"S10_DownDay_B_{sym}", "10 Down-Day Bounce", sym, dict( + entry_fn=lambda r: nn(r.ret1) and r.ret1 <= -0.05, exit_fn=None, max_hold=2))) + RUNS.append((f"S10_DownDay_C_{sym}", "10 Down-Day Bounce", sym, dict( + entry_fn=lambda r: nn(r.ret1) and r.ret1 <= -0.05, + exit_fn=lambda r: nn(r.prev_close) and r.close > r.prev_close))) + +# TRIN strategy: SKIPPED — no NYSE TRIN/Arms Index data source available via Alpaca. + +# ---------------- execute ---------------- +results = [] +for run_id, strat, sym, kw in RUNS: + df = DATA[sym] + eq, trades = run_bt(df, **kw) + st = compute_stats(eq, trades, run_id) + st["strategy"] = strat + st["symbol"] = sym + st["subperiods"] = {k: (v if v is None else {kk: vv for kk, vv in v.items() if kk != "yearly"}) + for k, v in subperiod_stats(eq, trades).items()} + results.append(st) + # persist artifacts + if len(trades): + trades.to_csv(os.path.join(OUT, f"trades_{run_id}.csv"), index=False) + eq.to_csv(os.path.join(OUT, f"equity_{run_id}.csv")) + +# benchmarks +bench = {} +for sym in ["SPY", "QQQ"]: + df = DATA[sym] + eq, trades = run_bt(df, entry_fn=lambda r: True, exit_fn=lambda r: False, slip=0.0) + st = compute_stats(eq, trades if len(trades) else pd.DataFrame(columns=["ret", "hold_days", "exit_date"]), + f"BH_{sym}") + st["subperiods"] = {k: (v if v is None else {kk: vv for kk, vv in v.items() if kk != "yearly"}) + for k, v in subperiod_stats(eq, pd.DataFrame(columns=["ret", "hold_days", "exit_date"])).items()} + bench[sym] = st + +with open(os.path.join(OUT, "suite_results.json"), "w") as f: + json.dump({"results": results, "benchmarks": bench, + "meta": {"window": f"{STAT_START.date()} -> 2026-07-01", + "slippage_per_side": engine.SLIP, + "data": "Alpaca SIP daily, adjustment=all", + "skipped": ["TRIN Dip Buying (no TRIN data source)"], + "unavailable_subperiods": ["2000-2007", "2008-2009 (Alpaca data starts 2016)"]}}, + f, indent=2, default=str) + +# console summary +print(f"{'run':<28s} {'CAGR':>7s} {'maxDD':>7s} {'Sharpe':>6s} {'WR':>6s} {'PF':>5s} {'#tr':>5s} {'expo':>6s} {'avgtr':>7s}") +for st in results: + print(f"{st['label']:<28s} {st['cagr']:>7.1%} {st['maxdd']:>7.1%} {st['sharpe']:>6.2f} " + f"{st['wr']:>6.1%} {st['pf']:>5.2f} {st['n_trades']:>5d} {st['exposure']:>6.1%} {st['avg_trade']:>7.3%}") +print() +for sym, st in bench.items(): + print(f"{'BH_'+sym:<28s} {st['cagr']:>7.1%} {st['maxdd']:>7.1%} {st['sharpe']:>6.2f}") diff --git a/research/short_overbought.py b/research/short_overbought.py new file mode 100644 index 000000000..a7d7f7dda --- /dev/null +++ b/research/short_overbought.py @@ -0,0 +1,125 @@ +"""Overbought SHORT test on SPY across timeframes. + +Signal (at close of bar t): + 1. close > VWAP (daily: 20-day rolling VWAP; intraday: session VWAP) + 2. RSI14 > {70, 80} + 3. close > upper Bollinger Band (20, 2.0) [also reported: %B > 0.95] +Short entry at next bar open; binary win = price BELOW entry at horizon close. +Reported vs baseline (short any bar) so the drift headwind is visible. +""" +import math +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + + +def wilder_rsi(close, period): + d = close.diff() + ag = d.clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + al = (-d).clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + return 100 - 100 / (1 + ag / al) + + +def add_common(df): + c = df["close"] + df["rsi14"] = wilder_rsi(c, 14) + mid = c.rolling(20).mean() + sd = c.rolling(20).std() + df["bb_up"] = mid + 2 * sd + df["pctb"] = (c - (mid - 2 * sd)) / (4 * sd) + return df + + +# ---------- daily ---------- +daily = pd.read_csv(os.path.join(OUT, "SPY_daily.csv"), parse_dates=["date"]) +tp = (daily["high"] + daily["low"] + daily["close"]) / 3 +daily["vwap20"] = (tp * daily["volume"]).rolling(20).sum() / daily["volume"].rolling(20).sum() +daily = add_common(daily) +daily["above_vwap"] = daily["close"] > daily["vwap20"] + +# ---------- intraday ---------- +intra = pd.read_csv(os.path.join(OUT, "SPY_30m_full.csv")) +intra["ts"] = pd.to_datetime(intra["timestamps"]).dt.tz_convert(NY) +keep = (intra["ts"].dt.time >= dtime(9, 30)) & (intra["ts"].dt.time <= dtime(15, 30)) +intra = intra[keep].sort_values("ts").reset_index(drop=True) +# session VWAP: cumulative per day using per-bar vwap * volume +intra["day"] = intra["ts"].dt.date +pv = intra["vwap"] * intra["volume"] +intra["svwap"] = pv.groupby(intra["day"]).cumsum() / intra["volume"].groupby(intra["day"]).cumsum() + + +def agg_1h(df30): + minutes = (df30["ts"].dt.hour * 60 + df30["ts"].dt.minute) - (9 * 60 + 30) + grp = np.minimum(minutes // 60, 6) + key = df30["ts"].dt.date.astype(str) + "_" + grp.astype(str) + g = df30.groupby(key, sort=False) + out = pd.DataFrame({ + "ts": g["ts"].first(), "open": g["open"].first(), "high": g["high"].max(), + "low": g["low"].min(), "close": g["close"].last(), "volume": g["volume"].sum(), + "svwap": g["svwap"].last(), + }).reset_index(drop=True).sort_values("ts").reset_index(drop=True) + return out + + +h1 = agg_1h(intra) +intra = add_common(intra) +h1 = add_common(h1) +intra["above_vwap"] = intra["close"] > intra["svwap"] +h1["above_vwap"] = h1["close"] > h1["svwap"] + +WARM = pd.Timestamp("2016-06-01") +CFGS = [ + ("daily", daily, "date", [1, 2, 3, 5, 10], "sessions"), + ("1h", h1, "ts", [1, 2, 4, 7, 14, 35], "bars"), + ("30m", intra, "ts", [2, 4, 8, 13, 26, 65], "bars"), +] + + +def horizon_wr(df, tcol, sig_mask, horizons): + o = df["open"].values + c = df["close"].values + n = len(df) + idxs = np.flatnonzero(sig_mask.fillna(False).values) + out = {} + for h in horizons: + rets = [] + for i in idxs: + if i + h < n: + entry = o[i + 1] * (1 - 0.0002) # short fill at next open + rets.append(entry / c[i + h] - 1) # short return + a = np.array(rets) + out[h] = (len(a), (a > 0).mean() if len(a) else float("nan"), + a.mean() if len(a) else float("nan")) + return out + + +for name, df, tcol, horizons, unit in CFGS: + t = df[tcol] + if hasattr(t.dt, "tz_localize"): + pass + warm_mask = pd.to_datetime(t).dt.tz_localize(None) >= WARM if t.dt.tz is not None else t >= WARM + base = warm_mask & df["rsi14"].notna() & df["bb_up"].notna() + print(f"\n=== {name} (horizons in {unit}) ===") + variants = [ + ("BASELINE (any bar)", base), + ("VWAP+RSI70+BBupper", base & df["above_vwap"] & (df["rsi14"] > 70) & (df["close"] > df["bb_up"])), + ("VWAP+RSI70+%B>.95", base & df["above_vwap"] & (df["rsi14"] > 70) & (df["pctb"] > 0.95)), + ("VWAP+RSI80+BBupper", base & df["above_vwap"] & (df["rsi14"] > 80) & (df["close"] > df["bb_up"])), + ("RSI70 only", base & (df["rsi14"] > 70)), + ] + hdr = f"{'variant':<20s} " + " ".join(f"{'h='+str(h):>14s}" for h in horizons) + print(hdr) + for vname, mask in variants: + st = horizon_wr(df, tcol, mask, horizons) + cells = [] + for h in horizons: + n, wr, avg = st[h] + cells.append(f"{wr:>5.1%}/{avg:>+6.2%}({n})" if n else " n=0 ") + print(f"{vname:<20s} " + " ".join(f"{cell:>14s}" for cell in cells)) +print("\ncell = shortWR / avg short return (n signals); win = price below entry at horizon") diff --git a/research/skew_test.py b/research/skew_test.py new file mode 100644 index 000000000..cb7cf3697 --- /dev/null +++ b/research/skew_test.py @@ -0,0 +1,61 @@ +"""Does CBOE SKEW (index put-smirk) predict SPY's NEXT DAY? + +1. Next-day SPY return by SKEW rolling-1y percentile quintile + (rolling percentile because SKEW has secular upward drift). +2. Next-day return by 5-day SKEW change. +3. As context for IBS<0.20 signals: trade WR by SKEW state at signal. +""" +import os + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) + +sk = pd.read_csv(os.path.join(OUT, "SKEW_History.csv")) +sk["date"] = pd.to_datetime(sk["DATE"]) +sk = sk[["date", "SKEW"]].sort_values("date").reset_index(drop=True) +sk["pct1y"] = sk["SKEW"].rolling(252).apply(lambda w: (w[-1] > w[:-1]).mean() * 100, raw=True) +sk["chg5"] = sk["SKEW"] - sk["SKEW"].shift(5) + +spy = pd.read_csv(os.path.join(OUT, "SPY_daily.csv"), parse_dates=["date"]) +spy = spy.sort_values("date").reset_index(drop=True) +spy["next_ret"] = spy["close"].shift(-1) / spy["close"] - 1 +df = spy.merge(sk, on="date", how="inner").dropna(subset=["next_ret", "pct1y", "chg5"]) +print(f"merged days: {len(df)} ({df['date'].iloc[0].date()} -> {df['date'].iloc[-1].date()})") +print(f"baseline next-day: P(up)={ (df['next_ret']>0).mean():.1%} avg={df['next_ret'].mean():+.4%}\n") + +print("--- 1. by SKEW rolling-1y percentile (level) ---") +df["q"] = pd.cut(df["pct1y"], [0, 20, 40, 60, 80, 100.01], labels=["Q1 low", "Q2", "Q3", "Q4", "Q5 high"]) +for q, g in df.groupby("q", observed=True): + print(f" {q:<8s} n={len(g):>4d} P(up)={(g['next_ret']>0).mean():>6.1%} avg={g['next_ret'].mean():>+8.4%}") + +print("\n--- 2. by 5-day SKEW change ---") +df["c"] = pd.cut(df["chg5"], [-99, -6, -2, 2, 6, 99], + labels=["fell >6", "fell 2-6", "flat", "rose 2-6", "rose >6"]) +for c, g in df.groupby("c", observed=True): + print(f" {c:<9s} n={len(g):>4d} P(up)={(g['next_ret']>0).mean():>6.1%} avg={g['next_ret'].mean():>+8.4%}") + +print("\n--- 3. SKEW state at IBS<0.20 signal -> trade outcome ---") +skmap = dict(zip(sk["date"], zip(sk["pct1y"], sk["chg5"]))) +for sym in ["QQQ", "SPY"]: + tr = pd.read_csv(os.path.join(OUT, f"trades_S4_IBS_{sym}_e20_x70.csv"), parse_dates=["entry_date"]) + rows = [] + for t in tr.itertuples(): + sig_day = t.entry_date - pd.Timedelta(days=1) + # walk back to the most recent SKEW print on/before signal day + for back in range(0, 5): + d = t.entry_date - pd.Timedelta(days=1 + back) + if d in skmap and not np.isnan(skmap[d][0]): + rows.append((skmap[d][0], skmap[d][1], t.ret)) + break + a = pd.DataFrame(rows, columns=["pct", "chg", "ret"]) + hi = a[a["pct"] >= 66.7] + lo = a[a["pct"] <= 33.3] + up = a[a["chg"] > 2] + dn = a[a["chg"] < -2] + print(f" {sym}: n={len(a)} base WR={(a['ret']>0).mean():.1%}") + print(f" SKEW high (top tercile 1y): n={len(hi):>3d} WR={(hi['ret']>0).mean():>6.1%} | " + f"low tercile: n={len(lo):>3d} WR={(lo['ret']>0).mean():>6.1%}") + print(f" SKEW rose >2 last 5d: n={len(up):>3d} WR={(up['ret']>0).mean():>6.1%} | " + f"fell >2: n={len(dn):>3d} WR={(dn['ret']>0).mean():>6.1%}") diff --git a/research/sma9_cross_predict.py b/research/sma9_cross_predict.py new file mode 100644 index 000000000..a8b478e6e --- /dev/null +++ b/research/sma9_cross_predict.py @@ -0,0 +1,154 @@ +"""Predicting SMA9 crosses on 5m (SPY+QQQ, 2016-2026). + +Event: bar i closes with an established up-run (>=4 consecutive closes > SMA9). +Question 1: P(bar i+1 CLOSES below SMA9)? Which features at bar i move it? +Question 2: economics — after a confirmed cross vs a touch-and-hold, what does +price do over the next 30/60 min? (Does the cross even matter?) +Mirror run for down-runs (predicting upward crosses). +""" +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + + +def wilder_rsi(c, n=14): + d = np.diff(c, prepend=c[0]) + up = np.where(d > 0, d, 0.0) + dn = np.where(d < 0, -d, 0.0) + au = np.zeros_like(c); ad = np.zeros_like(c) + au[n] = up[1:n+1].mean(); ad[n] = dn[1:n+1].mean() + for i in range(n+1, len(c)): + au[i] = (au[i-1]*(n-1) + up[i]) / n + ad[i] = (ad[i-1]*(n-1) + dn[i]) / n + rs = np.divide(au, ad, out=np.full_like(c, np.inf), where=ad > 0) + return 100 - 100/(1+rs) + + +def load(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_5m_full.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].sort_values("ts").reset_index(drop=True) + df["day"] = df["ts"].dt.date + c = df["close"] + df["sma9"] = c.rolling(9).mean() + df["ema9"] = c.ewm(span=9, adjust=False).mean() + df["sma20"] = c.rolling(20).mean() + df["volr"] = df["volume"] / df["volume"].rolling(20).mean() + df["rsi"] = wilder_rsi(c.values) + pv = df["vwap"] * df["volume"] + df["svwap"] = pv.groupby(df["day"]).cumsum() / df["volume"].groupby(df["day"]).cumsum() + return df + + +def bucket_table(E, feat, edges, labels, outcome="cross"): + rows = [] + for lo, hi, lb in zip(edges[:-1], edges[1:], labels): + sub = E[(E[feat] >= lo) & (E[feat] < hi)] + if len(sub) >= 200: + rows.append((lb, len(sub), sub[outcome].mean())) + return rows + + +def run(sym): + df = load(sym) + c = df["close"].values; l = df["low"].values; h = df["high"].values + s9 = df["sma9"].values; e9 = df["ema9"].values; s20 = df["sma20"].values + vr = df["volr"].values; rsi = df["rsi"].values; vw = df["svwap"].values + day = df["day"].values + n = len(df) + rows_of = {} + for i, dy in enumerate(day): + rows_of.setdefault(dy, []).append(i) + WARM = np.datetime64("2016-06-01") + ts = df["ts"].values + + # consecutive closes above / below sma9 + above = np.zeros(n, int); below = np.zeros(n, int) + for i in range(1, n): + if day[i] != day[i-1]: + continue # runs reset across days (leave 0) + if not np.isnan(s9[i]): + above[i] = above[i-1] + 1 if c[i] > s9[i] else 0 + below[i] = below[i-1] + 1 if c[i] < s9[i] else 0 + + ev = [] + for i in range(30, n - 1): + if ts[i] < WARM or day[i] != day[i+1]: + continue + r0 = rows_of[day[i]][0] + if i - r0 < 9: # need sma9 fully intraday-ish + continue + de = rows_of[day[i]][-1] + if above[i] >= 4: + side = "up" + elif below[i] >= 4: + side = "down" + else: + continue + px = c[i] + cross = (c[i+1] < s9[i+1]) if side == "up" else (c[i+1] > s9[i+1]) + touch = (l[i+1] <= s9[i+1]) if side == "up" else (h[i+1] >= s9[i+1]) + # forward returns after bar i+1 close (30/60 min), signed favorable to trend + f6 = f12 = np.nan + if i + 1 + 6 <= de: + f6 = (c[i+7] / c[i+1] - 1) * (1 if side == "up" else -1) + if i + 1 + 12 <= de: + f12 = (c[i+13] / c[i+1] - 1) * (1 if side == "up" else -1) + sgn = 1 if side == "up" else -1 + ev.append(dict( + side=side, cross=cross, touch_hold=(touch and not cross), + dist=sgn*(px - s9[i]) / px * 100, # % close beyond sma9 (signed to trend) + ema_lead=sgn*(e9[i] - s9[i]) / px * 100, # ema9 vs sma9, + = with trend + slope9=sgn*(s9[i] - s9[i-3]) / px * 100, # sma9 3-bar slope, trendward + volr=vr[i], rsi=rsi[i] if side == "up" else 100-rsi[i], + vwapd=sgn*(px - vw[i]) / px * 100, + run=min(above[i] if side == "up" else below[i], 40), + red=int(sgn*(c[i]-c[i-1]) < 0) + int(sgn*(c[i-1]-c[i-2]) < 0), # counter-trend closes, last 2 + f6=f6, f12=f12, half=1 if ts[i] < np.datetime64("2021-07-01") else 2, + )) + E = pd.DataFrame(ev) + print(f"\n================ {sym} ================") + for side in ["up", "down"]: + S = E[E.side == side] + base = S["cross"].mean() + print(f"\n--- {side}-run (n={len(S):,}), base P(cross next bar) = {base:.1%} ---") + specs = [ + ("ema_lead", [-9, -0.02, 0, 0.02, 0.05, 9], ["ema OPPOSED <-0.02%", "ema -0.02..0", "ema 0..+0.02", "ema +0.02..0.05", "ema >+0.05%"]), + ("dist", [0, 0.03, 0.08, 0.15, 9], ["close 0-0.03% past", "0.03-0.08%", "0.08-0.15%", ">0.15%"]), + ("slope9", [-9, 0, 0.02, 0.05, 9], ["slope AGAINST", "slope 0..0.02", "0.02..0.05", ">0.05 strong"]), + ("volr", [0, 0.8, 1.2, 1.8, 99], ["quiet <0.8x", "normal", "loud 1.2-1.8x", "very loud >1.8x"]), + ("rsi", [0, 50, 60, 70, 101], ["rsi<50 (trendward)", "50-60", "60-70", ">70"]), + ("red", [0, 1, 2, 3], ["0 counter closes", "1 counter", "2 counter"]), + ("run", [4, 8, 16, 99], ["run 4-7 bars", "8-15", "16+"]), + ] + for feat, edges, labels in specs: + rows = bucket_table(S, feat, edges, labels) + if not rows: + continue + line = " | ".join(f"{lb}: {p:.0%} (n={cnt//1000}k)" if cnt >= 2000 else f"{lb}: {p:.0%} ({cnt})" for lb, cnt, p in rows) + print(f" {feat:<9s} {line}") + # combo cell: ema opposed + >=2 counter closes + quiet-vs-loud + combo = S[(S.ema_lead < 0) & (S.red >= 2)] + if len(combo) > 300: + print(f" COMBO ema-opposed & 2 counter closes: P(cross)={combo['cross'].mean():.0%} (n={len(combo):,})" + f" [halves: {combo[combo.half==1]['cross'].mean():.0%}/{combo[combo.half==2]['cross'].mean():.0%}]") + safe = S[(S.ema_lead > 0.02) & (S.red == 0)] + if len(safe) > 300: + print(f" COMBO ema-leading & 0 counter closes: P(cross)={safe['cross'].mean():.0%} (n={len(safe):,})") + # economics: what happens AFTER + for lbl, sub in [("after CROSS", S[S.cross]), ("after TOUCH-HOLD", S[S.touch_hold]), + ("after clean hold (no touch)", S[~S.cross & ~S.touch_hold])]: + m6 = sub["f6"].dropna(); m12 = sub["f12"].dropna() + if len(m6) > 300: + print(f" {lbl:<28s} fwd30m {m6.mean()*100:+.3f}% (P>0 {(m6>0).mean():.0%}) fwd60m {m12.mean()*100:+.3f}% n={len(m6):,}") + return E + + +for sym in ["SPY", "QQQ"]: + run(sym) diff --git a/research/squeeze_breakout.py b/research/squeeze_breakout.py new file mode 100644 index 000000000..11af9d023 --- /dev/null +++ b/research/squeeze_breakout.py @@ -0,0 +1,141 @@ +"""DISCOVERY: volume-surge breakout from a TIGHT consolidation (the user's model). + +Consolidation: BB width in bottom tercile (tight) for the setup bar, AND the last +LB=6 bars held a narrow range (range <= NR x ATR-ish). Breakout bar: close pushes +beyond the last LB-bar high (UP) or low (DOWN). Volume trigger: deseasonalized +volume of the breakout bar. We MAP forward continuation in the BREAK DIRECTION as a +function of volume surge, and compare volume-surge breakouts vs quiet breakouts. + +Question answered: does a volume increase determine the price change (directional, +sustained) out of a range? Race +T vs -T signed to break dir; MFE/MAE/drift. +SPY+QQQ 5m, both halves shown. Winners uncapped. +""" +import os +from collections import defaultdict, deque +from datetime import time as dtime +from zoneinfo import ZoneInfo +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") +LB = 6 # consolidation lookback (30 min) + + +def load(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_5m_full.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].sort_values("ts").reset_index(drop=True) + df["day"] = df["ts"].dt.date + df["slot"] = df["ts"].dt.hour*60 + df["ts"].dt.minute + c = df["close"] + df["sma20"] = c.rolling(20).mean() + sd = c.rolling(20).std(ddof=0) + df["bbw"] = (4*sd) / df["sma20"] + # deseasonalized volume: vol / trailing-30-session median for that slot + hist = defaultdict(lambda: deque(maxlen=30)) + dvol = np.full(len(df), np.nan) + vals = df[["slot", "volume"]].values + days = df["day"].values + cur = None; pend = [] + for i, (s, v) in enumerate(vals): + if days[i] != cur: + for ss, vv in pend: + hist[ss].append(vv) + pend = []; cur = days[i] + h = hist[s] + if len(h) >= 15: + dvol[i] = v / np.median(h) + pend.append((s, v)) + df["dvol"] = dvol + return df + + +def run(sym): + df = load(sym) + c = df["close"].values; h = df["high"].values; l = df["low"].values + bbw = df["bbw"].values; dvol = df["dvol"].values + day = df["day"].values; ts = df["ts"].values + slot = df["slot"].values + n = len(df) + de_of = {} + for i, dy in enumerate(day): + de_of[dy] = i + r0_of = {} + for i, dy in enumerate(day): + r0_of.setdefault(dy, i) + WARM = np.datetime64("2016-06-01") + q33 = np.nanpercentile(bbw[~np.isnan(bbw)], 33) + + def race(i, T, sgn, H=12): + up = c[i]*(1+T); dn = c[i]*(1-T) + end = min(i+H, de_of[day[i]]) + for j in range(i+1, end+1): + hu = h[j] >= up; du = l[j] <= dn + if hu and du: + return 0 + if hu: + return 1*sgn + if du: + return -1*sgn + return 0 + + ev = [] + for i in range(30, n-1): + if ts[i] < WARM or np.isnan(bbw[i]) or np.isnan(dvol[i]): + continue + r0 = r0_of[day[i]] + if i - LB < r0: # need LB bars same day before + continue + de = de_of[day[i]] + if de - i < 4: + continue + if bbw[i] > q33: # require TIGHT consolidation + continue + pri_h = h[i-LB:i].max(); pri_l = l[i-LB:i].min() + up = c[i] > pri_h + dn = c[i] < pri_l + if not (up or dn): + continue + sgn = 1 if up else -1 + end = min(i+12, de) + mfe = (h[i+1:end+1].max()/c[i]-1) * sgn # favorable = break dir + mae = (l[i+1:end+1].min()/c[i]-1) * sgn + if sgn < 0: + mfe = (c[i]/l[i+1:end+1].min()-1) # recompute favorable for down + mae = (c[i]/h[i+1:end+1].max()-1) + drift = (c[end]/c[i]-1) * sgn + ev.append(dict(dir="UP" if up else "DOWN", dvol=dvol[i], drift=drift, + mfe=mfe, mae=mae, r2=race(i, 0.002, sgn), r3=race(i, 0.003, sgn), + am=slot[i] < 690, + half=1 if ts[i] < np.datetime64("2021-07-01") else 2)) + E = pd.DataFrame(ev) + print(f"\n================= {sym} (tight-range breakouts n={len(E)}) =================") + + def rep(lbl, S): + if len(S) < 40: + print(f" {lbl:<28s} n={len(S)} (thin)"); return + d = S["drift"].values; m = S["mfe"].values; a = S["mae"].values + w3 = (S["r3"] == 1).sum(); l3 = (S["r3"] == -1).sum() + print(f" {lbl:<28s} n={len(S):>4d} contin(drift) {d.mean()*100:+5.3f}% favMFE {np.median(m)*100:5.3f}% " + f"advMAE {np.median(a)*100:5.3f}% race0.3 {w3}/{l3} ({w3/max(w3+l3,1):.0%} cont)") + + print(" volume surge of the breakout bar (deseasonalized):") + rep("QUIET break dvol<1.0", E[E.dvol < 1.0]) + rep("normal 1.0-1.5", E[(E.dvol >= 1.0) & (E.dvol < 1.5)]) + rep("elevated 1.5-2.5", E[(E.dvol >= 1.5) & (E.dvol < 2.5)]) + rep("SURGE 2.5-4", E[(E.dvol >= 2.5) & (E.dvol < 4)]) + rep("BIG SURGE >=4", E[E.dvol >= 4]) + print(" surge >=2.5 breakdown:") + S = E[E.dvol >= 2.5] + rep("surge ALL", S) + rep("surge UP", S[S.dir == "UP"]) + rep("surge DOWN", S[S.dir == "DOWN"]) + rep("surge AM", S[S.am]) + rep("surge half1", S[S.half == 1]) + rep("surge half2", S[S.half == 2]) + return E + + +for sym in ["SPY", "QQQ"]: + run(sym) diff --git a/research/squeeze_down_drill.py b/research/squeeze_down_drill.py new file mode 100644 index 000000000..4678337e1 --- /dev/null +++ b/research/squeeze_down_drill.py @@ -0,0 +1,103 @@ +"""DRILL: volume-surge DOWNSIDE break from tight range. Half-split + put-convexity. + +Event: tight BB (bottom tercile), close < prior 6-bar low, breakout-bar dvol>=2.5. +Hold to 60min or EOD. Favorable = downward move (long put intrinsic proxy). +Put score: a long ATM-ish put pays ~ max(0, downmove_at_exit) - premium (as % underlying). +We report E[max(0,fav_exit)] = the BREAKEVEN premium: you're +EV if you buy for less. +Also report the best-exit version (capture MFE, not just drift) as the convex upside. +SPY+QQQ 5m, halves + AM. +""" +import os +from collections import defaultdict, deque +from datetime import time as dtime +from zoneinfo import ZoneInfo +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") +LB = 6 + + +def load(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_5m_full.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].sort_values("ts").reset_index(drop=True) + df["day"] = df["ts"].dt.date + df["slot"] = df["ts"].dt.hour*60 + df["ts"].dt.minute + c = df["close"] + df["sma20"] = c.rolling(20).mean() + sd = c.rolling(20).std(ddof=0) + df["bbw"] = (4*sd) / df["sma20"] + hist = defaultdict(lambda: deque(maxlen=30)) + dvol = np.full(len(df), np.nan) + vals = df[["slot", "volume"]].values; days = df["day"].values + cur = None; pend = [] + for i, (s, v) in enumerate(vals): + if days[i] != cur: + for ss, vv in pend: + hist[ss].append(vv) + pend = []; cur = days[i] + hh = hist[s] + if len(hh) >= 15: + dvol[i] = v / np.median(hh) + pend.append((s, v)) + df["dvol"] = dvol + return df + + +def run(sym): + df = load(sym) + c = df["close"].values; h = df["high"].values; l = df["low"].values + bbw = df["bbw"].values; dvol = df["dvol"].values + day = df["day"].values; ts = df["ts"].values; slot = df["slot"].values + n = len(df) + de_of = {}; r0_of = {} + for i, dy in enumerate(day): + de_of[dy] = i + r0_of.setdefault(dy, i) + WARM = np.datetime64("2016-06-01") + q33 = np.nanpercentile(bbw[~np.isnan(bbw)], 33) + + ev = [] + for i in range(30, n-1): + if ts[i] < WARM or np.isnan(bbw[i]) or np.isnan(dvol[i]): + continue + if i - LB < r0_of[day[i]] or bbw[i] > q33 or dvol[i] < 2.5: + continue + de = de_of[day[i]] + if de - i < 4: + continue + pri_l = l[i-LB:i].min() + if not (c[i] < pri_l): # DOWN break only + continue + end = min(i+12, de) + drift_dn = -(c[end]/c[i]-1) # + = fell (favorable for put) + mfe_dn = -(l[i+1:end+1].min()/c[i]-1) # best downward excursion (convex capture) + mae_up = (h[i+1:end+1].max()/c[i]-1) # adverse pop + ev.append(dict(drift_dn=drift_dn, mfe_dn=mfe_dn, mae_up=mae_up, + am=slot[i] < 690, half=1 if ts[i] < np.datetime64("2021-07-01") else 2)) + E = pd.DataFrame(ev) + print(f"\n============ {sym} surge downside breaks n={len(E)} ============") + + def rep(lbl, S): + if len(S) < 30: + print(f" {lbl:<14s} n={len(S)} (thin)"); return + d = S["drift_dn"].values; m = S["mfe_dn"].values + pdn = (d > 0).mean() # % that closed lower at exit + be_hold = np.maximum(d, 0).mean() # breakeven premium, hold-to-exit + be_mfe = np.maximum(m, 0).mean() # breakeven if you capture the MFE + print(f" {lbl:<14s} n={len(S):>4d} P(down@exit) {pdn:4.0%} medMFEdn {np.median(m)*100:5.3f}% " + f"BE-prem hold {be_hold*100:5.3f}% BE-prem bestexit {be_mfe*100:5.3f}%") + rep("ALL", E) + rep("half 1", E[E.half == 1]) + rep("half 2", E[E.half == 2]) + rep("AM", E[E.am]) + rep("half2 AM", E[(E.half == 2) & E.am]) + print(" (BE-prem = avg favorable move; a put is +EV only if it costs LESS than this,") + print(" minus fees. 'bestexit' assumes you sell at the intraday low, an upper bound.)") + return E + + +for sym in ["SPY", "QQQ"]: + run(sym) diff --git a/research/sr_diagonals.py b/research/sr_diagonals.py new file mode 100644 index 000000000..299b82cd8 --- /dev/null +++ b/research/sr_diagonals.py @@ -0,0 +1,133 @@ +"""Phase C: diagonal trendlines on SPY 5m (same-day lines, 2016-2026). + +Up-trendline: two most recent same-day confirmed pivot lows (K=6), second HIGHER, +>=60min apart, slope < 0.5*ATR/bar. Zone = projected line +/-0.05%. +Max 3 projected touches; dead on close 0.1% below line. Down-trendline mirrored. +Events: TEST (race +/-0.25%, 90min) and BREAK (continuation race). Volume split. +""" +import math +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") +K = 6 +TGT = 0.0025 +HORIZON = 18 +WZ = 0.0005 # +/-0.05% + +df = pd.read_csv(os.path.join(OUT, "SPY_5m_full.csv")) +df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) +df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].sort_values("ts").reset_index(drop=True) +df["day"] = df["ts"].dt.date +c = df["close"] +h_, l_ = df["high"], df["low"] +tr = np.maximum(h_ - l_, np.maximum((h_ - c.shift(1)).abs(), (l_ - c.shift(1)).abs())) +df["atr20"] = tr.rolling(20).mean() +df["vol20"] = df["volume"].rolling(20).mean() +hh = df["high"].values; ll = df["low"].values; cl = df["close"].values +atr = df["atr20"].values; volx = (df["volume"] / df["vol20"]).values +day = df["day"].values +ts_arr = df["ts"].values +n = len(df) +rows_of = {} +for i, dy in enumerate(day): + rows_of.setdefault(dy, []).append(i) +WARM = np.datetime64("2016-06-01") + + +def race(i, direction): + px = cl[i] + up, dn = px * (1 + TGT), px * (1 - TGT) + de = rows_of[day[i]][-1] + for j in range(i + 1, min(i + HORIZON + 1, de + 1)): + u, d_ = hh[j] >= up, ll[j] <= dn + if u and d_: + return 0 + if u: + return direction + if d_: + return -direction + return 0 + + +events = [] +for dy, rows in rows_of.items(): + if len(rows) < 60 or np.datetime64(pd.Timestamp(dy)) < WARM: + continue + r0 = rows[0] + plows, phighs = [], [] # (bar, price) + upline = dnline = None # dict(a_bar, a_px, slope, touches, outside) + for i in rows: + j = i - K + if j - K >= r0: + if ll[j] == min(ll[j - K:j + K + 1]): + plows.append((j, ll[j])) + if len(plows) >= 2: + (b1, p1), (b2, p2) = plows[-2], plows[-1] + if p2 > p1 and b2 - b1 >= 12: + slope = (p2 - p1) / (b2 - b1) + if not math.isnan(atr[i]) and slope < 0.5 * atr[i]: + upline = dict(ab=b2, ap=p2, s=slope, t=0, out=99) + if hh[j] == max(hh[j - K:j + K + 1]): + phighs.append((j, hh[j])) + if len(phighs) >= 2: + (b1, p1), (b2, p2) = phighs[-2], phighs[-1] + if p2 < p1 and b2 - b1 >= 12: + slope = (p1 - p2) / (b2 - b1) + if not math.isnan(atr[i]) and slope < 0.5 * atr[i]: + dnline = dict(ab=b2, ap=p2, s=-slope, t=0, out=99) + px = cl[i] + if upline is not None and i > upline["ab"]: + v = upline["ap"] + upline["s"] * (i - upline["ab"]) + w = WZ * px + if cl[i] < v - 0.001 * px: + out = race(i, -1) + if out != 0: + events.append(("upline_BREAK", out > 0, volx[i], ts_arr[i])) + upline = None + elif ll[i] <= v + w and upline["out"] >= 6: + out = race(i, +1) + if out != 0: + events.append(("upline_TEST", out > 0, volx[i], ts_arr[i])) + upline["t"] += 1 + upline["out"] = 0 + if upline["t"] >= 3: + upline = None + else: + upline["out"] += 1 + if dnline is not None and i > dnline["ab"]: + v = dnline["ap"] + dnline["s"] * (i - dnline["ab"]) + w = WZ * px + if cl[i] > v + 0.001 * px: + out = race(i, +1) + if out != 0: + events.append(("dnline_BREAK", out > 0, volx[i], ts_arr[i])) + dnline = None + elif hh[i] >= v - w and dnline["out"] >= 6: + out = race(i, -1) + if out != 0: + events.append(("dnline_TEST", out > 0, volx[i], ts_arr[i])) + dnline["t"] += 1 + dnline["out"] = 0 + if dnline["t"] >= 3: + dnline = None + else: + dnline["out"] += 1 + +E = pd.DataFrame(events, columns=["kind", "win", "volx", "ts"]) +E["half"] = np.where(E["ts"] < np.datetime64("2022-01-01"), "H1", "H2") +print(f"diagonal events: {len(E)}") +print(f"(baselines from v2: up-first 45.0%, down-first 55.0%)\n") +print(f"{'event':<14s}{'n':>6s}{'P(favorable)':>13s}{'H1':>7s}{'H2':>7s}{'quiet<=1.2':>11s}{'loud>1.5':>10s}") +for kind, g in E.groupby("kind"): + q = g[g.volx <= 1.2]["win"] + ld = g[g.volx > 1.5]["win"] + print(f"{kind:<14s}{len(g):>6d}{g['win'].mean():>13.1%}" + f"{g[g.half=='H1']['win'].mean():>7.1%}{g[g.half=='H2']['win'].mean():>7.1%}" + f"{q.mean() if len(q)>=30 else float('nan'):>11.1%}" + f"{ld.mean() if len(ld)>=30 else float('nan'):>10.1%}") diff --git a/research/sr_rework.py b/research/sr_rework.py new file mode 100644 index 000000000..c82f5ccdf --- /dev/null +++ b/research/sr_rework.py @@ -0,0 +1,171 @@ +"""Rework the loud-volume-resistance cell into something usable (5m). + +Events: resistance TEST with volx>1.5 (same zone engine as v2), both symbols. +Entry variants: V0 at touch close | V1 first 5m close above zone top (<=1h) + | V2 first 15m-boundary close above zone top (<=1.5h) +Outcome frames: +0.25/-0.25 (18b) | +0.50/-0.25 (36b) | +0.50/-0.50 (36b) | EOD +Net of 4bp round trip. Halves split on the best cells. +""" +import math +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") +K = 6; CLUSTER = 0.001; MINSEP = 12; OUTSIDE = 6 +COST = 0.0004 + + +def load(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_5m_full.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].sort_values("ts").reset_index(drop=True) + df["day"] = df["ts"].dt.date + c = df["close"] + tr = np.maximum(df["high"] - df["low"], + np.maximum((df["high"] - c.shift(1)).abs(), (df["low"] - c.shift(1)).abs())) + df["atr20"] = tr.rolling(20).mean() + df["vol20"] = df["volume"].rolling(20).mean() + return df + + +def resistance_events(df): + hh = df["high"].values; ll = df["low"].values; cl = df["close"].values + atr = df["atr20"].values; volx = (df["volume"] / df["vol20"]).values + day = df["day"].values; ts_arr = df["ts"].values + n = len(df) + rows_of = {} + for i, dy in enumerate(day): + rows_of.setdefault(dy, []).append(i) + zones = [] + WARM = np.datetime64("2016-06-01") + + class Z: + __slots__ = ("center", "pivots", "valid", "outside", "side", "broken", "last") + def __init__(self, ctr, i): + self.center = ctr; self.pivots = [i]; self.valid = False + self.outside = 99; self.side = None; self.broken = False; self.last = i + + events = [] + cur = None + for i in range(30, n): + if day[i] != cur: + cur = day[i] + zones = [z for z in zones if i - z.last < 5 * 78][-25:] + if ts_arr[i] < WARM or math.isnan(atr[i]): + continue + j = i - K + if j - K >= 0 and day[j - K] == day[i]: + for val in (ll[j], hh[j]): + is_ext = (val == min(ll[j - K:j + K + 1])) or (val == max(hh[j - K:j + K + 1])) + if not is_ext: + continue + hit = False + for z in zones: + if abs(z.center - val) / val < CLUSTER: + if not z.valid and (j - z.pivots[-1]) >= MINSEP: + z.valid = True + z.pivots.append(j); z.last = i + z.center = 0.7 * z.center + 0.3 * val + hit = True + break + if not hit: + zones.append(Z(val, j)) + px = cl[i] + w = max(0.0005 * px, 0.20 * atr[i]) + for z in zones: + if not z.valid or z.broken: + continue + top, bot = z.center + w, z.center - w + in_z = ll[i] <= top and hh[i] >= bot + if in_z and z.outside >= OUTSIDE and z.side == "below": + if volx[i] > 1.5: + events.append((i, top)) + z.outside = 0 + elif not in_z: + z.outside += 1 + if z.side == "below" and cl[i] > top + 0.0005 * px: + z.broken = True + elif z.side == "above" and cl[i] < bot - 0.0005 * px: + z.broken = True + z.side = "above" if cl[i] > top else ("below" if cl[i] < bot else z.side) + else: + z.outside = 0 + return events, rows_of + + +def frames(df, events, rows_of): + hh = df["high"].values; ll = df["low"].values; cl = df["close"].values + day = df["day"].values; ts = df["ts"] + tod_end = (ts.dt.hour * 60 + ts.dt.minute + 5).values + out = {} + + def entry_bar(i, top, mode): + if mode == "V0": + return i + de = rows_of[day[i]][-1] + lim = 12 if mode == "V1" else 18 + for j in range(i + 1, min(i + lim + 1, de + 1)): + if cl[j] > top + 0.0005 * cl[j]: + if mode == "V1": + return j + if mode == "V2" and tod_end[j] % 15 == 0: + return j + return None + + for mode in ["V0", "V1", "V2"]: + for tgt, stp, hz, lbl in [(0.0025, 0.0025, 18, "+.25/-.25"), + (0.005, 0.0025, 36, "+.50/-.25"), + (0.005, 0.005, 36, "+.50/-.50"), + (None, None, None, "EOD")]: + rets = [] + n_missed = 0 + for (i, top) in events: + eb = entry_bar(i, top, mode) + if eb is None: + n_missed += 1 + continue + e = cl[eb] + de = rows_of[day[eb]][-1] + r = None + if lbl == "EOD": + r = cl[de] / e - 1 + else: + up, dn = e * (1 + tgt), e * (1 - stp) + for j2 in range(eb + 1, min(eb + hz + 1, de + 1)): + if hh[j2] >= up and ll[j2] <= dn: + r = -stp; break + if hh[j2] >= up: + r = tgt; break + if ll[j2] <= dn: + r = -stp; break + if r is None: + r = cl[min(eb + hz, de)] / e - 1 + rets.append(r - COST) + a = np.array(rets) + key = (mode, lbl) + out[key] = (len(a), n_missed, (a > 0).mean() if len(a) else np.nan, + a.mean() if len(a) else np.nan) + return out + + +for sym in ["SPY", "QQQ"]: + df = load(sym) + ev, rows_of = resistance_events(df) + print(f"\n===== {sym}: loud-volume resistance tests = {len(ev)} events =====") + res = frames(df, ev, rows_of) + print(f"{'entry':<5s}{'frame':<11s}{'n':>6s}{'missed':>7s}{'WR':>7s}{'avg net':>9s}") + for (mode, lbl), (n_, m_, wr, avg) in res.items(): + print(f"{mode:<5s}{lbl:<11s}{n_:>6d}{m_:>7d}{wr:>7.1%}{avg*100:>8.3f}%") + # halves for the headline frames on V0 + ts_ev = df["ts"].values + for lbl_want in ["+.50/-.25", "EOD"]: + h1 = [e for e in ev if ts_ev[e[0]] < np.datetime64("2022-01-01")] + h2 = [e for e in ev if ts_ev[e[0]] >= np.datetime64("2022-01-01")] + for tag, sub in [("H1", h1), ("H2", h2)]: + r = frames(df, sub, rows_of)[("V0", lbl_want)] + print(f" V0 {lbl_want} {tag}: n={r[0]} WR={r[2]:.1%} avg={r[3]*100:+.3f}%") diff --git a/research/sr_zones_v2.py b/research/sr_zones_v2.py new file mode 100644 index 000000000..95251c289 --- /dev/null +++ b/research/sr_zones_v2.py @@ -0,0 +1,244 @@ +"""S/R Zones v2 — SPY 5m, 2016-2026 (per approved plan). + +Zones: clustered pivots (K=6 confirmed), VALID after >=2 pivots >=60min apart, +width = +/- max(0.05%, 0.20*ATR20), live <=5 sessions, retired 2h after break +(kept 4h for retest tracking). Reference class: prior-day H/L/C. +Events: TEST (race +/-0.25%, 90min) | BREAK (close beyond far edge, continuation +race) | RETEST after break (role-flip test). +Phase D: indicator context recorded at every event; hold-vs-break splits. +""" +import math +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") +K = 6 # pivot arm (30 min) +CLUSTER = 0.001 # 0.10% pivot clustering +MINSEP = 12 # 2nd pivot must be >=60 min after 1st +TGT = 0.0025 # race target 0.25% +HORIZON = 18 # 90 min +OUTSIDE = 6 # bars outside before a new touch counts +BPD = 78 # bars/day + +df = pd.read_csv(os.path.join(OUT, "SPY_5m_full.csv")) +df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) +df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].sort_values("ts").reset_index(drop=True) +df["day"] = df["ts"].dt.date +c = df["close"] +h_, l_ = df["high"], df["low"] +tr = np.maximum(h_ - l_, np.maximum((h_ - c.shift(1)).abs(), (l_ - c.shift(1)).abs())) +df["atr20"] = tr.rolling(20).mean() +d = c.diff() +ag = d.clip(lower=0).ewm(alpha=1 / 14, adjust=False).mean() +al = (-d).clip(lower=0).ewm(alpha=1 / 14, adjust=False).mean() +df["rsi14"] = 100 - 100 / (1 + ag / al) +df["sma9"] = c.rolling(9).mean() +df["sma20"] = c.rolling(20).mean() +df["ema9"] = c.ewm(span=9, adjust=False).mean() +pv = df["vwap"] * df["volume"] +df["svwap"] = pv.groupby(df["day"]).cumsum() / df["volume"].groupby(df["day"]).cumsum() +df["vol20"] = df["volume"].rolling(20).mean() + +o = df["open"].values; hh = df["high"].values; ll = df["low"].values; cl = df["close"].values +atr = df["atr20"].values; rsi = df["rsi14"].values +sma9 = df["sma9"].values; sma20 = df["sma20"].values; ema9 = df["ema9"].values +vw = df["svwap"].values; volx = (df["volume"] / df["vol20"]).values +day = df["day"].values +n = len(df) +rows_of = {} +for i, dy in enumerate(day): + rows_of.setdefault(dy, []).append(i) +days = sorted(rows_of) + + +def race(i, direction): + """direction +1: win = +0.25% first. Same-day only. 0 = undecided/ambiguous.""" + px = cl[i] + up, dn = px * (1 + TGT), px * (1 - TGT) + de = rows_of[day[i]][-1] + for j in range(i + 1, min(i + HORIZON + 1, de + 1)): + u, dwn = hh[j] >= up, ll[j] <= dn + if u and dwn: + return 0 + if u: + return direction + if dwn: + return -direction + return 0 + + +def ctx(i): + return dict(above_vwap=cl[i] > vw[i], sma9gt20=sma9[i] > sma20[i], + ema9gt_sma9=ema9[i] > sma9[i], rsi=rsi[i], volx=volx[i]) + + +events = [] # dicts: kind, role, touch, age_h, out, ctx, ts + +class Zone: + __slots__ = ("center", "pivots", "valid", "born", "touches", "outside", + "side", "broken", "break_bar", "retested", "cls", "last_piv") + def __init__(self, center, i, cls="formed"): + self.center = center + self.pivots = [i] + self.valid = cls == "ref" + self.born = i if cls == "ref" else None + self.touches = 0 + self.outside = 99 + self.side = None + self.broken = None + self.break_bar = None + self.retested = False + self.cls = cls + self.last_piv = i + + +zones = [] +prev_day_ref = {} +for k_ in range(1, len(days)): + r = rows_of[days[k_ - 1]] + prev_day_ref[days[k_]] = (max(hh[j] for j in r), min(ll[j] for j in r), cl[r[-1]]) + +WARM = np.datetime64("2016-06-01") +ts_arr = df["ts"].values +cur_day = None +for i in range(30, n): + if day[i] != cur_day: + cur_day = day[i] + zones = [z for z in zones if z.cls == "formed" and i - z.last_piv < 5 * BPD] + if cur_day in prev_day_ref: + for lv in prev_day_ref[cur_day]: + zones.append(Zone(lv, i, cls="ref")) + zones[-1].born = i + zones = zones[-25:] + if ts_arr[i] < WARM or math.isnan(atr[i]): + continue + # confirm pivots at j = i-K + j = i - K + if j - K >= 0 and day[j - K] == day[i]: + for is_low, val in ((True, ll[j]), (False, hh[j])): + ext = (val == min(ll[j - K:j + K + 1])) if is_low else (val == max(hh[j - K:j + K + 1])) + if not ext: + continue + placed = False + for z in zones: + if z.cls == "formed" and abs(z.center - val) / val < CLUSTER: + if not z.valid and (j - z.pivots[-1]) >= MINSEP: + z.valid = True + z.born = i + z.pivots.append(j) + z.center = float(np.mean([ll[p] if ll[p] <= z.center else hh[p] for p in z.pivots[-4:]])) + z.last_piv = i + placed = True + break + if not placed: + zones.append(Zone(val, j)) + # event scan + px = cl[i] + w = max(0.0005 * px, 0.20 * atr[i]) + for z in zones: + if not z.valid: + continue + top, bot = z.center + w, z.center - w + in_zone = ll[i] <= top and hh[i] >= bot + # retest after break + if z.broken and not z.retested and z.break_bar and i - z.break_bar <= 48: + if in_zone and z.outside >= OUTSIDE: + role = "flip_res" if z.broken == "down" else "flip_sup" + out = race(i, -1 if z.broken == "down" else +1) + if out != 0: + age_h = (i - z.born) / 12 + events.append(dict(kind="RETEST", role=role, touch=z.touches, + age=age_h, out=out, i=i, **ctx(i))) + z.retested = True + z.outside = 0 + continue + if z.broken: + z.outside = 0 if in_zone else z.outside + 1 + continue + if in_zone and z.outside >= OUTSIDE and z.side in ("above", "below"): + role = "support" if z.side == "above" else "resist" + direction = +1 if role == "support" else -1 + out = race(i, direction) + z.touches += 1 + if out != 0: + age_h = (i - z.born) / 12 + events.append(dict(kind="TEST", role=role, cls=z.cls, + touch=min(z.touches + 1, 4), age=age_h, out=out, i=i, **ctx(i))) + z.outside = 0 + elif not in_zone: + z.outside += 1 + new_side = "above" if cl[i] > top else ("below" if cl[i] < bot else z.side) + # break check: close decisively beyond far edge after being tested + if z.side == "above" and cl[i] < bot - 0.0005 * px: + out = race(i, -1) + if out != 0: + events.append(dict(kind="BREAK", role="sup_break", cls=z.cls, + touch=z.touches, age=(i - z.born) / 12, out=out, i=i, **ctx(i))) + z.broken = "down"; z.break_bar = i + elif z.side == "below" and cl[i] > top + 0.0005 * px: + out = race(i, +1) + if out != 0: + events.append(dict(kind="BREAK", role="res_break", cls=z.cls, + touch=z.touches, age=(i - z.born) / 12, out=out, i=i, **ctx(i))) + z.broken = "up"; z.break_bar = i + z.side = new_side + else: + z.outside = 0 + +E = pd.DataFrame(events) +E["win"] = E["out"] > 0 +E["half"] = np.where(pd.to_datetime(df["ts"].dt.tz_localize(None)).iloc[E["i"]].values + < np.datetime64("2022-01-01"), "H1", "H2") +print(f"events: {len(E)} (TEST {sum(E.kind=='TEST')}, BREAK {sum(E.kind=='BREAK')}, " + f"RETEST {sum(E.kind=='RETEST')})") + +base = [] +for i in range(100, n - 20, 150): + r_ = race(i, +1) + if r_ != 0: + base.append(r_ > 0) +base = np.array(base) +print(f"baseline P(+0.25% first): {base.mean():.1%} (n={len(base)})\n") + +print("=== TEST events (does the zone hold?) ===") +for (kind, role), g in E[E.kind == "TEST"].groupby(["kind", "role"]): + bl = base.mean() if role == "support" else 1 - base.mean() + print(f"{role:<9s} n={len(g):>5d} P(hold)={g['win'].mean():.1%} (base {bl:.1%}) " + f"H1={g[g.half=='H1']['win'].mean():.1%} H2={g[g.half=='H2']['win'].mean():.1%}") + for t, gg in g.groupby("touch"): + if len(gg) >= 50: + print(f" touch {t}: n={len(gg):>5d} P(hold)={gg['win'].mean():.1%}") + for lo_a, hi_a, lbl in [(0, 2, "age<2h"), (2, 6, "2-6h"), (6, 999, ">6h")]: + gg = g[(g.age >= lo_a) & (g.age < hi_a)] + if len(gg) >= 50: + print(f" {lbl:<7s}: n={len(gg):>5d} P(hold)={gg['win'].mean():.1%}") + +print("\n=== BREAK events (does the break continue?) ===") +for role, g in E[E.kind == "BREAK"].groupby("role"): + bl = 1 - base.mean() if role == "sup_break" else base.mean() + print(f"{role:<10s} n={len(g):>5d} P(continue)={g['win'].mean():.1%} (base {bl:.1%}) " + f"H1={g[g.half=='H1']['win'].mean():.1%} H2={g[g.half=='H2']['win'].mean():.1%}") + +print("\n=== RETEST after break (does the role-flip hold?) ===") +for role, g in E[E.kind == "RETEST"].groupby("role"): + print(f"{role:<10s} n={len(g):>5d} P(flip holds)={g['win'].mean():.1%}") + +print("\n=== PHASE D: indicator context splits ===") +for kind, role in [("TEST", "support"), ("TEST", "resist"), ("BREAK", "sup_break"), ("BREAK", "res_break")]: + g = E[(E.kind == kind) & (E.role == role)] + if len(g) < 100: + continue + print(f"\n{kind} {role} (n={len(g)}, base P={g['win'].mean():.1%}):") + for name, mask in [("above VWAP", g.above_vwap), ("SMA9>SMA20", g.sma9gt20), + ("EMA9>SMA9", g.ema9gt_sma9), ("RSI<35", g.rsi < 35), + ("RSI>50", g.rsi > 50), ("quiet vol<=1.2", g.volx <= 1.2), + ("loud vol>1.5", g.volx > 1.5)]: + a, b = g[mask], g[~mask] + if len(a) >= 30 and len(b) >= 30: + print(f" {name:<15s} TRUE {a['win'].mean():>6.1%} (n={len(a):>5d}) | " + f"FALSE {b['win'].mean():>6.1%} (n={len(b):>5d}) d={a['win'].mean()-b['win'].mean():+.1%}") diff --git a/research/tf_inflection.py b/research/tf_inflection.py new file mode 100644 index 000000000..2f932ff88 --- /dev/null +++ b/research/tf_inflection.py @@ -0,0 +1,126 @@ +"""Test today's live observation: on a down >=0.5% day, when the 15m AND 30m +MACD histograms inflect upward simultaneously in the afternoon (both rising +vs their prior bar, from below zero), does price drift up into the close? + +Controls: (a) down-days where alignment never fires, (b) 15m-only inflection. +SPY 5m, 10 years. +""" +import math +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + +df = pd.read_csv(os.path.join(OUT, "SPY_5m_full.csv")) +df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) +df = df.sort_values("ts").reset_index(drop=True) +d5 = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].reset_index(drop=True) +d5["day"] = d5["ts"].dt.date + + +def add_hist(frame): + e12 = frame["close"].ewm(span=12, adjust=False).mean() + e26 = frame["close"].ewm(span=26, adjust=False).mean() + m = e12 - e26 + frame["hist"] = m - m.ewm(span=9, adjust=False).mean() + return frame + + +def agg(step): + minutes = (d5["ts"].dt.hour * 60 + d5["ts"].dt.minute) - 570 + grp = np.minimum(minutes // step, (390 // step) - 1) + key = d5["day"].astype(str) + "_" + grp.astype(str) + g = d5.groupby(key, sort=False) + a = pd.DataFrame({"ts": g["ts"].first(), "close": g["close"].last(), + "end": g["ts"].last() + pd.Timedelta(minutes=5)}) + a = a.reset_index(drop=True).sort_values("ts").reset_index(drop=True) + return add_hist(a) + + +a15 = agg(15) +a30 = agg(30) +ends15 = a15["end"].values +ends30 = a30["end"].values +h15 = a15["hist"].values +h30 = a30["hist"].values + +cl = d5["close"].values +ts = d5["ts"].values +day = d5["day"].values +tod = (d5["ts"].dt.hour * 60 + d5["ts"].dt.minute).values +n = len(d5) +WARM = np.datetime64("2016-06-01") + +# daily prev close map +days = sorted(set(day)) +day_close = {} +for i, dy in enumerate(day): + day_close[dy] = cl[i] # overwritten -> last close of day +prev_close = {} +for k in range(1, len(days)): + prev_close[days[k]] = day_close[days[k - 1]] + +# day index ranges +day_rows = {} +for i, dy in enumerate(day): + day_rows.setdefault(dy, []).append(i) + + +def hist_state(t, ends, H): + k = np.searchsorted(ends, t, side="right") - 1 + if k < 1: + return None, None + return H[k], H[k - 1] + + +aligned, no_align, only15 = [], [], [] +for dy in days: + if dy not in prev_close: + continue + rows = day_rows[dy] + if np.datetime64(pd.Timestamp(dy)) < WARM or len(rows) < 70: + continue + pc = prev_close[dy] + # down >=0.5% at 13:30 + i1330 = next((i for i in rows if tod[i] >= 13 * 60 + 30), None) + if i1330 is None or cl[i1330] / pc - 1 > -0.005: + continue + fired = None + fired15 = None + for i in rows: + if tod[i] < 13 * 60 + 30 or tod[i] > 15 * 60: + continue + t = ts[i] + np.timedelta64(5, "m") + c15, p15 = hist_state(t, ends15, h15) + c30, p30 = hist_state(t, ends30, h30) + if c15 is None or c30 is None: + continue + inf15 = c15 > p15 and p15 < 0 + inf30 = c30 > p30 and p30 < 0 + if inf15 and inf30 and fired is None: + fired = i + if inf15 and not inf30 and fired15 is None: + fired15 = i + if fired is not None: + break + eod = rows[-1] + if fired is not None: + aligned.append(cl[eod] / cl[fired] - 1) + else: + base_i = i1330 + no_align.append(cl[eod] / cl[base_i] - 1) + if fired15 is not None: + only15.append(cl[eod] / cl[fired15] - 1) + +for name, arr in [("ALIGNED 15m+30m inflection", aligned), + ("15m-only inflection (no 30m)", only15), + ("down day, never aligned (from 13:30)", no_align)]: + b = np.array(arr) + if len(b): + print(f"{name:<38s} n={len(b):>4d} P(up into close)={ (b>0).mean():>6.1%} " + f"avg={b.mean():>+8.3%} med={np.median(b):>+8.3%}") diff --git a/research/today_three.py b/research/today_three.py new file mode 100644 index 000000000..0bc5e961a --- /dev/null +++ b/research/today_three.py @@ -0,0 +1,170 @@ +"""Three backtests generated by the 2026-07-02 session. SPY 5m, 10 years. + +A. VWAP magnet: does (VWAP - price) at 15:00 predict last-hour drift? +B. Up-walk symmetry: 3+ closes above SMA9 with %B>0.65 -- persistence/payoff + vs the down-walk, and what follows the walk's end. +C. Down-walk confirmation + 30m alignment, scored in scalper units: + P(additional drop >= 0.15% / 0.25% before the walk ends). +""" +import math +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + +df = pd.read_csv(os.path.join(OUT, "SPY_5m_full.csv")) +df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) +df = df.sort_values("ts").reset_index(drop=True) +d5 = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].reset_index(drop=True) +c = d5["close"] +d5["sma9"] = c.rolling(9).mean() +mid = c.rolling(20).mean() +sd = c.rolling(20).std() +d5["pctb"] = (c - (mid - 2 * sd)) / (4 * sd) +d5["day"] = d5["ts"].dt.date +pv = d5["vwap"] * d5["volume"] +d5["svwap"] = pv.groupby(d5["day"]).cumsum() / d5["volume"].groupby(d5["day"]).cumsum() +e12 = c.ewm(span=12, adjust=False).mean() +e26 = c.ewm(span=26, adjust=False).mean() +m = e12 - e26 +d5["hist"] = m - m.ewm(span=9, adjust=False).mean() # 5m hist (30m state via agg below) + +# 30m hist for alignment +def agg30(): + minutes = (d5["ts"].dt.hour * 60 + d5["ts"].dt.minute) - 570 + grp = np.minimum(minutes // 30, 12) + key = d5["day"].astype(str) + "_" + grp.astype(str) + g = d5.groupby(key, sort=False) + a = pd.DataFrame({"ts": g["ts"].first(), "close": g["close"].last(), + "end": g["ts"].last() + pd.Timedelta(minutes=5)}) + a = a.reset_index(drop=True).sort_values("ts").reset_index(drop=True) + ee12 = a["close"].ewm(span=12, adjust=False).mean() + ee26 = a["close"].ewm(span=26, adjust=False).mean() + mm = ee12 - ee26 + a["hist"] = mm - mm.ewm(span=9, adjust=False).mean() + return a + +a30 = agg30() +ends30 = a30["end"].values +h30 = a30["hist"].values + +o = d5["open"].values +h_ = d5["high"].values +l_ = d5["low"].values +cl = d5["close"].values +sma9 = d5["sma9"].values +pctb = d5["pctb"].values +vw = d5["svwap"].values +day = d5["day"].values +tod = (d5["ts"].dt.hour * 60 + d5["ts"].dt.minute).values +ts = d5["ts"].values +n = len(d5) +WARM = np.datetime64("2016-06-01") + +day_rows = {} +for i, dy in enumerate(day): + day_rows.setdefault(dy, []).append(i) +days = [dy for dy in day_rows if np.datetime64(pd.Timestamp(dy)) >= WARM and len(day_rows[dy]) >= 70] + +# ---------------- A. VWAP magnet ---------------- +print("=== A. VWAP magnet: state at 15:00 -> last-hour behavior ===") +buckets = [(-9, -0.004), (-0.004, -0.0015), (-0.0015, 0.0015), (0.0015, 0.004), (0.004, 9)] +labels = ["price >0.4% ABOVE vwap", "0.15-0.4% above", "within 0.15%", "0.15-0.4% below", "price >0.4% BELOW vwap"] +rows_by_bucket = {k: [] for k in range(5)} +close_to_vwap = [] +for dy in days: + rows = day_rows[dy] + i15 = next((i for i in rows if tod[i] >= 15 * 60), None) + if i15 is None: + continue + p15 = cl[i15] + v15 = vw[i15] + gap = (v15 - p15) / p15 # positive = vwap above price + eod = rows[-1] + r_last = cl[eod] / p15 - 1 + toward = np.sign(r_last) == np.sign(gap) and gap != 0 + frac = r_last / gap if abs(gap) > 0.0015 else np.nan + for k, (a, b) in enumerate(buckets): + if a <= -gap < b: # -gap = price-above-vwap measure + rows_by_bucket[k].append((r_last, toward, frac)) + break + close_to_vwap.append(abs(cl[eod] / vw[eod] - 1)) +for k, lbl in enumerate(labels): + arr = rows_by_bucket[k] + if not arr: + continue + r = np.array([x[0] for x in arr]) + tw = np.array([x[1] for x in arr]) + fr = np.array([x[2] for x in arr], dtype=float) + frv = fr[~np.isnan(fr)] + print(f" {lbl:<24s} n={len(r):>4d} last-hr avg={r.mean():>+8.3%} P(move toward vwap)={tw.mean():>6.1%}" + + (f" med frac of gap closed={np.median(frv):>6.1%}" if len(frv) > 20 else "")) +ctv = np.array(close_to_vwap) +print(f" context: P(close within 0.10% of final VWAP) any day = {(ctv <= 0.001).mean():.1%}; " + f"median close-to-VWAP distance = {np.median(ctv):.3%}") + +# ---------------- B. up-walk symmetry ---------------- +above = (cl > sma9) & (pctb > 0.65) +below = (cl < sma9) & (pctb < 0.35) + +def find_walks(mask, exit_cmp): + walks = [] + i = 2 + while i < n - 1: + if ts[i] < WARM or math.isnan(sma9[i]): + i += 1 + continue + if mask[i] and mask[i - 1] and mask[i - 2] and day[i] == day[i - 2]: + s = i - 2 + de = day_rows[day[s]][-1] + j = i + while j + 1 <= de and not exit_cmp(j + 1): + j += 1 + if j - s + 1 >= 5: + walks.append((s, min(j + 1, de), de)) + i = j + 2 + else: + i += 1 + return walks + +up_walks = find_walks(above, lambda k: cl[k] < sma9[k]) +dn_walks = find_walks(below, lambda k: cl[k] > sma9[k]) +print("\n=== B. up-walk (SMA9/upper band) vs down-walk symmetry ===") +for name, walks, sgn in [("UP-walks", up_walks, +1), ("DOWN-walks", dn_walks, -1)]: + lens = np.array([e - s for s, e, _ in walks]) + drift = np.array([sgn * (cl[e] / cl[s] - 1) for s, e, _ in walks]) + after30 = [] + for s, e, de in walks: + if e + 6 < n and day[e + 6] == day[e]: + after30.append(sgn * (cl[e + 6] / cl[e] - 1)) + a30_ = np.array(after30) + print(f" {name:<11s} n={len(walks):>5d} med len={np.median(lens):>3.0f} bars " + f"drift(favorable)={drift.mean():>+8.3%} after-end 30m (same dir)={a30_.mean():>+8.3%} " + f"P(cont)={ (a30_>0).mean():.1%}") + +# ---------------- C. down-walk confirm + 30m alignment, scalper units ---------------- +print("\n=== C. down-walk confirmation +-30m alignment: P(more drop before walk ends) ===") +def aligned_30m(t): + k = np.searchsorted(ends30, t, side="right") - 1 + if k < 1: + return False + return h30[k] < h30[k - 1] # 30m momentum still falling = aligned down + +groups = {"30m aligned (hist falling)": [], "30m not aligned": []} +for s, e, de in dn_walks: + conf = s + 2 # confirmation bar (3rd below close) + entry = cl[conf] + lowest_after = l_[conf + 1:e + 1].min() if conf + 1 <= e else entry + mfe = entry / lowest_after - 1 # favorable-for-short move before walk end + drift_end = entry / cl[e] - 1 + key = "30m aligned (hist falling)" if aligned_30m(ts[conf] + np.timedelta64(5, "m")) else "30m not aligned" + groups[key].append((mfe, drift_end)) +for k, arr in groups.items(): + a = np.array(arr) + print(f" {k:<28s} n={len(a):>5d} P(drop>=0.15%)={(a[:,0]>=0.0015).mean():>6.1%} " + f"P(drop>=0.25%)={(a[:,0]>=0.0025).mean():>6.1%} avg drift to walk end={a[:,1].mean():>+8.3%}") diff --git a/research/trend_break.py b/research/trend_break.py new file mode 100644 index 000000000..3432ff01a --- /dev/null +++ b/research/trend_break.py @@ -0,0 +1,159 @@ +"""Which indicator marks a REAL intraday trend break? + +For every band-walk (3+ closes below SMA9, %B<0.35, len>=5 bars), find the +first occurrence of each candidate break signal after the walk's 3rd bar, +then score: + - P(no new session low for the rest of the day) <- "trend actually broke" + - P(up) and avg return +30m / +60m after signal + - lateness: how far above the walk low the signal fires +Baseline for comparison: the naive close>SMA9 walk-end. +""" +import math +import os +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + + +def wilder_rsi(close, period=14): + d = close.diff() + ag = d.clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + al = (-d).clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + return 100 - 100 / (1 + ag / al) + + +df = pd.read_csv(os.path.join(OUT, "SPY_5m_full.csv")) +df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) +df = df.sort_values("ts").reset_index(drop=True) +d5 = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].reset_index(drop=True) +c = d5["close"] +d5["sma9"] = c.rolling(9).mean() +d5["mid20"] = c.rolling(20).mean() +sd = c.rolling(20).std() +d5["pctb"] = (c - (d5["mid20"] - 2 * sd)) / (4 * sd) +d5["rsi"] = wilder_rsi(c) +e12 = c.ewm(span=12, adjust=False).mean() +e26 = c.ewm(span=26, adjust=False).mean() +macd = e12 - e26 +d5["hist"] = macd - macd.ewm(span=9, adjust=False).mean() +d5["day"] = d5["ts"].dt.date +pv = d5["vwap"] * d5["volume"] +d5["svwap"] = pv.groupby(d5["day"]).cumsum() / d5["volume"].groupby(d5["day"]).cumsum() +d5["vol20"] = d5["volume"].rolling(20).mean() + +o = d5["open"].values +h = d5["high"].values +l = d5["low"].values +cl = d5["close"].values +sma9 = d5["sma9"].values +mid20 = d5["mid20"].values +pctb = d5["pctb"].values +rsi = d5["rsi"].values +hist = d5["hist"].values +vw = d5["svwap"].values +volx = (d5["volume"] / d5["vol20"]).values +day = d5["day"].values +ts = d5["ts"].values +n = len(d5) +WARM = np.datetime64("2016-06-01") + +day_end = {} +for i, dy in enumerate(day): + day_end[dy] = i + +below = (cl < sma9) & (pctb < 0.35) + +walks = [] +i = 2 +while i < n - 1: + if ts[i] < WARM or math.isnan(sma9[i]) or math.isnan(mid20[i]): + i += 1 + continue + if below[i] and below[i - 1] and below[i - 2] and day[i] == day[i - 2]: + s = i - 2 + j = i + de = day_end[day[s]] + while j + 1 <= de and not (cl[j + 1] > sma9[j + 1]): + j += 1 + if j - s + 1 >= 5: + walks.append((s, min(j + 1, de), de)) + i = j + 2 + else: + i += 1 +print(f"{len(walks)} walks (len>=5 bars)") + + +def first_sig(name, s, e, de): + """Return first index k in [s+3, de-1] where signal fires, else None.""" + lowest = l[s] + low_i = s + prev_low_rsi = None + prev_low_px = None + for k in range(s + 1, de): + if l[k] < lowest: + # bullish divergence check at new low + if name == "E_rsi_diverge" and prev_low_rsi is not None: + if rsi[k] > prev_low_rsi + 3 and l[k] < prev_low_px: + return k + prev_low_rsi = rsi[k] if prev_low_rsi is None else min(prev_low_rsi, rsi[k]) \ + if False else rsi[k] + prev_low_px = l[k] + lowest = l[k] + low_i = k + if k < s + 3: + continue + if name == "A_close>sma9" and cl[k] > sma9[k]: + return k + if name == "B_close>mid20" and cl[k] > mid20[k]: + return k + if name == "C_close>vwap" and cl[k] > vw[k]: + return k + if name == "D_rsi30_recross" and rsi[k] > 30 and rsi[k - 1] <= 30: + return k + if name == "F_hist_rising3" and hist[k] < 0 and hist[k] > hist[k - 1] > hist[k - 2]: + return k + if (name == "G_climax_hammer" and volx[k] >= 3 and l[k] <= lowest + and (h[k] - l[k]) > 0 and (cl[k] - l[k]) / (h[k] - l[k]) >= 0.6): + return k + if (name == "H_HH_HL" and h[k] > h[k - 1] and l[k] > l[k - 1] + and cl[k] > o[k]): + return k + return None + + +SIGNALS = ["A_close>sma9", "B_close>mid20", "C_close>vwap", "D_rsi30_recross", + "E_rsi_diverge", "F_hist_rising3", "G_climax_hammer", "H_HH_HL"] + +print(f"{'signal':<18s} {'n':>5s} {'fire%':>6s} {'noNewLow':>9s} {'P+30m':>6s} " + f"{'P+60m':>6s} {'avg60m':>8s} {'off-low':>8s}") +for name in SIGNALS: + stats = [] + for s, e, de in walks: + k = first_sig(name, s, e, de) + if k is None or k + 6 >= n: + continue + walk_low = l[s:k + 1].min() + rest_low = l[k + 1:de + 1].min() if k + 1 <= de else np.inf + no_new_low = rest_low >= walk_low + r30 = cl[k + 6] / cl[k] - 1 if day[k + 6] == day[k] else np.nan + r60 = cl[k + 12] / cl[k] - 1 if k + 12 < n and day[k + 12] == day[k] else np.nan + off_low = cl[k] / walk_low - 1 + stats.append((no_new_low, r30, r60, off_low)) + if not stats: + print(f"{name:<18s} none fired") + continue + nn_ = np.array([x[0] for x in stats]) + r30 = np.array([x[1] for x in stats]) + r60 = np.array([x[2] for x in stats]) + ol = np.array([x[3] for x in stats]) + r30v = r30[~np.isnan(r30)] + r60v = r60[~np.isnan(r60)] + print(f"{name:<18s} {len(stats):>5d} {len(stats)/len(walks):>6.0%} {nn_.mean():>9.1%} " + f"{(r30v>0).mean():>6.1%} {(r60v>0).mean():>6.1%} {r60v.mean():>8.3%} {ol.mean():>8.3%}") +print("\nnoNewLow = P(session low is never broken again after the signal)") +print("off-low = how far above the walk low the signal fires (lateness cost)") diff --git a/research/vol_spike_float.py b/research/vol_spike_float.py new file mode 100644 index 000000000..067a6460d --- /dev/null +++ b/research/vol_spike_float.py @@ -0,0 +1,154 @@ +"""Early high-volume directional spike + quiet counter-drift ("float") -> +does the afternoon snap back in the spike's direction? + +SPY+QQQ 5m 2016-2026. Volume deseasonalized: vol / median(vol same time slot, +trailing 30 sessions). Spike: first bar 9:35-11:00 with dvol>=3 and |ret|>=0.15%. +Quiet day: from spike+1 to 13:30, >=80% of bars dvol<=1.0 and no bar dvol>=2.0. +Float: sign(close_13:30 - spike close) OPPOSITE to spike direction. +Outcome: 13:30 -> close return, signed POSITIVE = in spike direction. +Baselines: (a) all days 13:30->close |drift|, (b) spike days where drift went +WITH the spike, (c) quiet days with no spike. +""" +import os +from collections import defaultdict, deque +from datetime import time as dtime +from zoneinfo import ZoneInfo + +import numpy as np +import pandas as pd + +OUT = os.path.dirname(os.path.abspath(__file__)) +NY = ZoneInfo("America/New_York") + + +def load(sym): + df = pd.read_csv(os.path.join(OUT, f"{sym}_5m_full.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))].sort_values("ts").reset_index(drop=True) + df["day"] = df["ts"].dt.date + df["slot"] = df["ts"].dt.hour * 60 + df["ts"].dt.minute + return df + + +def run(sym): + df = load(sym) + # deseasonalized volume: vol / trailing-30-session median for that slot + hist = defaultdict(lambda: deque(maxlen=30)) + dvol = np.full(len(df), np.nan) + vals = df[["slot", "volume"]].values + days = df["day"].values + cur_day = None + pend = [] # (slot, vol) of current day, appended to hist at day end + for i, (slot, vol) in enumerate(vals): + if days[i] != cur_day: + for s, v in pend: + hist[s].append(v) + pend = [] + cur_day = days[i] + h = hist[slot] + if len(h) >= 15: + dvol[i] = vol / np.median(h) + pend.append((slot, vol)) + df["dvol"] = dvol + + o = df["open"].values; c = df["close"].values + slot = df["slot"].values + ret = np.zeros(len(df)) + ret[1:] = c[1:] / c[:-1] - 1 + first_of_day = np.zeros(len(df), bool) + first_of_day[0] = True + first_of_day[1:] = days[1:] != days[:-1] + ret[first_of_day] = (c / o - 1)[first_of_day] + + rows_of = {} + for i, dy in enumerate(days): + rows_of.setdefault(dy, []).append(i) + + CHK = 13 * 60 + 30 # 13:30 + ev = [] + all_pm = [] # baseline: every day's 13:30->close signed-random + for dy, idxs in rows_of.items(): + idxs = np.array(idxs) + dv = df["dvol"].values[idxs] + if np.isnan(dv).all() or len(idxs) < 70: + continue + # checkpoint index + chk_pos = np.where(slot[idxs] >= CHK)[0] + if len(chk_pos) == 0: + continue + ichk = idxs[chk_pos[0]] + iend = idxs[-1] + pm = c[iend] / c[ichk] - 1 + all_pm.append(pm) + # find first early spike (9:35-11:00) + spike = None + for j, i in enumerate(idxs): + if slot[i] < 575 or slot[i] > 660: # 9:35..11:00 + continue + if not np.isnan(dv[j]) and dv[j] >= 3.0 and abs(ret[i]) >= 0.0015: + spike = (j, i) + break + if spike is None: + continue + j, i = spike + sdir = 1 if ret[i] > 0 else -1 + # quiet from spike+1 to checkpoint + mid = idxs[(idxs > i) & (idxs < ichk)] + if len(mid) < 12: + continue + dmid = df["dvol"].values[mid] + dmid = dmid[~np.isnan(dmid)] + if len(dmid) == 0: + continue + quiet = (dmid <= 1.0).mean() >= 0.80 and dmid.max() < 2.0 + drift = (c[ichk] - c[i]) / c[i] # spike close -> 13:30 + pm_signed = pm * sdir # + = spike direction + drift_signed = drift * sdir + # did afternoon contain its own volume spike? + aft = idxs[idxs > ichk] + davt = df["dvol"].values[aft] + pm_spike = np.nanmax(davt) >= 2.0 if len(aft) else False + # did price revisit the spike bar extreme? + lo = df["low"].values; hi = df["high"].values + if sdir < 0: + revisit = (lo[aft] <= lo[i]).any() if len(aft) else False + else: + revisit = (hi[aft] >= hi[i]).any() if len(aft) else False + ev.append(dict(day=dy, sdir=sdir, quiet=quiet, drift_signed=drift_signed, + pm_signed=pm_signed, pm_spike=pm_spike, revisit=revisit, + spike_ret=ret[i] * sdir, + half=1 if str(dy) < "2021-07-01" else 2)) + E = pd.DataFrame(ev) + ap = np.array(all_pm) + print(f"\n================ {sym} ================") + print(f"spike days: {len(E):,} ({len(E)/10.1:.0f}/yr) | baseline 13:30->close: mean {ap.mean()*100:+.3f}% P(up) {(ap>0).mean():.0%}") + + def rep(lbl, S): + if len(S) < 25: + print(f" {lbl:<44s} n={len(S)} (too few)") + return + a = S["pm_signed"].values + print(f" {lbl:<44s} n={len(S):>4d} PM in spike dir: {(a>0).mean():.0%} avg {a.mean()*100:+.3f}%" + f" revisit extreme {S['revisit'].mean():.0%} own PM spike {S['pm_spike'].mean():.0%}") + + # the user's exact scenario: quiet day + float AGAINST spike + rep("USER CASE: quiet + float AGAINST spike", E[E.quiet & (E.drift_signed < 0)]) + rep(" .. down-spike, floated UP (short setup)", E[E.quiet & (E.drift_signed < 0) & (E.sdir < 0)]) + rep(" .. up-spike, floated DOWN (long setup)", E[E.quiet & (E.drift_signed < 0) & (E.sdir > 0)]) + rep("control: quiet + float WITH spike", E[E.quiet & (E.drift_signed > 0)]) + rep("control: NOT quiet + float against spike", E[~E.quiet & (E.drift_signed < 0)]) + rep("all spike days", E) + # halves for the user case + U = E[E.quiet & (E.drift_signed < 0)] + for hlf in [1, 2]: + rep(f" user case half {hlf}", U[U.half == hlf]) + # size of float matters? + if len(U) >= 60: + med = U["drift_signed"].median() + rep(" user case, small float", U[U.drift_signed >= med]) + rep(" user case, big float (deep retrace)", U[U.drift_signed < med]) + return E + + +for sym in ["SPY", "QQQ"]: + run(sym) diff --git a/research/warrior/BACKTEST_SPEC.md b/research/warrior/BACKTEST_SPEC.md new file mode 100644 index 000000000..4ec59c3d8 --- /dev/null +++ b/research/warrior/BACKTEST_SPEC.md @@ -0,0 +1,143 @@ +# Warrior Trading Chart-Pattern Backtest: Fidelity Specification + +## Purpose + +Evaluate whether the chart-pattern concepts in the attached *Chart Pattern Study Guide* contain measurable predictive value without replacing the guide's visual rules with unrelated indicators. + +The study has two distinct tracks: + +1. **Generic liquid-market translation:** SPY, QQQ, and IWM. +2. **Guide-faithful small-cap momentum study:** a dynamic daily universe of pre-market gappers, using 1-minute and 5-minute bars, extended-hours data, VWAP, pre-market levels, high-of-day levels, and whole/half-dollar levels. + +A SPY-only 5-minute test is not treated as a complete test of the guide. + +## Rules taken directly from the guide + +### Flat-top breakout +- Form a repeated flat resistance level. +- Enter on the **first candle that breaks the flat top**. + +Numeric touch counts, tolerance, and formation length are research parameters because the guide does not supply numerical values. + +### Bull flag +- After an upward impulse and pullback, price above the relevant pullback candle's high is a buy trigger. +- A subsequent candle close above the prior candle high is the confirmation variant. + +Both trigger and close-confirmed versions must be reported separately. + +### Bear flag +- After a downward impulse and bounce/consolidation, short the **first candle to make a new low**. + +### Five-minute exhaustion reversal +- After at least five consecutive red 5-minute candles, buy the first 5-minute candle to make a new high. +- Mirror the rule after five consecutive green candles for the short-side test. + +### One-minute exhaustion reversal +- After at least ten consecutive red 1-minute candles, buy the first 1-minute candle to make a new high. +- Mirror the rule after ten consecutive green candles for the short-side test. + +### Guide context retained in the small-cap track +- Pre-market chart and pre-market high +- Gap-and-go and red-to-green +- First pullback on 1-minute and 5-minute charts +- Opening-range breakout +- VWAP break, first pullback after VWAP break, VWAP breakout, and VWAP fade +- High-of-day breakout +- Whole-dollar and half-dollar levels +- Trend-shift short and bear flags +- Halt-related setups only when halt/resumption data are available + +## Research operationalizations, not direct guide instructions + +The guide illustrates false breakouts and bull traps but does not provide one complete mechanical entry rule. The initial test therefore labels this separately: + +1. Detect an objectively valid flat-top level. +2. Price trades above the level. +3. Within one to three bars, price closes back below it. +4. Short trigger is one tick below the failure candle's low. + +Alternative definitions are sensitivity tests and cannot be described as the guide's exact rule. + +## Data and look-ahead controls + +- Source bars: 1-minute OHLCV; aggregate 5-minute bars internally. +- Generic track: regular session only unless a setup explicitly requires pre-market. +- Small-cap track: include pre-market and regular session. +- All rolling levels and indicators use only information available before the trigger. +- No centered pivots or future-confirmed extrema. +- Entry is a stop trigger above/below the specified candle or level. +- When bar data cannot establish intrabar sequence, use the conservative outcome. +- Report a next-bar-open implementation as a separate, more conservative execution variant. +- Add explicit slippage and transaction costs. +- One position per symbol and pattern cluster; no overlapping duplicate entries. + +## Phase 1: Signal utility before trade optimization + +For every signal, calculate: + +- Forward return after 1, 3, 6, 12, and 24 bars +- Maximum favorable excursion +- Maximum adverse excursion +- Probability of reaching symmetric barriers first +- Probability of reaching 0.5R, 1R, 1.5R, and 2R before -1R +- Time of day +- Gap size and relative-volume bucket where applicable +- Trend, VWAP, and volatility regime +- Random-entry baseline matched by symbol, date, and time of day + +The first question is whether the signal predicts subsequent price movement. Options are not added until the underlying signal survives this stage. + +## Initial detector set + +1. Flat-top breakout +2. Failed flat-top breakout / bull trap +3. Five-consecutive-candle 5-minute reversal +4. Ten-consecutive-candle 1-minute reversal +5. Bull and bear flags, after the simpler detectors are validated + +## Parameter discipline + +Parameters must be narrow and economically interpretable: + +- Flat-top touches: 2, 3, or 4 +- Level tolerance: 0.05%, 0.10%, or 0.15% +- Formation length: 4-10, 4-20, and 8-30 bars +- Failure window: 1, 2, or 3 bars +- Reversal run length: exact guide threshold and modest stricter variants +- Volume confirmation: none, 1.25x, or 1.5x trailing average +- Entry: intrabar trigger versus next-bar open + +The guide-defined threshold is always displayed separately from optimized variants. + +## Robustness and keeper rules + +- At least 50 trades +- Profit factor at least 1.5 overall +- Profit factor at least 1.2 in each sample half +- Average trade at least 0.15% after costs +- Drawdown shallower than the relevant benchmark +- Results split into 2016-2021 and 2022-2026 where data allow +- Replication on SPY, QQQ, and IWM for generic patterns +- For the small-cap track, report by price, gap, relative volume, float, and year +- Flag any result with fewer than 100 trades for reduced confidence +- Use holdout or walk-forward validation for parameter selection + +## Options overlay + +Only signals that survive the underlying-price study proceed to options: + +- 30-45 DTE, near-ATM or 40-50 delta +- Calls for bullish signals and puts for bearish signals +- Naked options versus vertical spreads +- +50%, -30%, and 15/21-trading-day exits +- Actual historical option quotes where available; modeled prices must be labeled clearly + +## Unit tests completed + +The detector code includes handcrafted canonical cases for: + +- Five red candles followed by the first 5-minute candle making a new high +- A repeated flat top followed by the first breakout candle +- A flat-top breakout that fails and closes back below the level + +All three tests pass. diff --git a/research/warrior/fetch_event_bars.py b/research/warrior/fetch_event_bars.py new file mode 100644 index 000000000..76ac3ee52 --- /dev/null +++ b/research/warrior/fetch_event_bars.py @@ -0,0 +1,51 @@ +"""Stage 2: fetch 1m bars (04:00-20:00 ET, SIP) for each gapper event day. +Appends to event_bars.csv with checkpointing (skips already-fetched events). +""" +import json, os, time, urllib.parse, urllib.request +import pandas as pd + +KEY = os.environ["ALPACA_API_KEY"]; SEC = os.environ["ALPACA_API_SECRET"] +HDR = {"APCA-API-KEY-ID": KEY, "APCA-API-SECRET-KEY": SEC} +OUT = os.path.dirname(os.path.abspath(__file__)) +EV = pd.read_csv(os.path.join(OUT, "gapper_events.csv")) +DEST = os.path.join(OUT, "event_bars.csv") + +done = set() +if os.path.exists(DEST): + d0 = pd.read_csv(DEST, usecols=["symbol", "date"]).drop_duplicates() + done = set(zip(d0["symbol"], d0["date"])) +print(f"events {len(EV)}, already fetched {len(done)}", flush=True) + +def get(url): + for a in range(5): + try: + r = urllib.request.Request(url, headers=HDR) + with urllib.request.urlopen(r, timeout=60) as resp: + return json.loads(resp.read()) + except Exception: + if a == 4: + return None + time.sleep(1.5 ** a) + +first = not os.path.exists(DEST) +buf = [] +cnt = 0 +for _, e in EV.iterrows(): + key = (e["symbol"], e["date"]) + if key in done: + continue + p = {"timeframe": "1Min", "start": f"{e['date']}T08:00:00Z", "end": f"{e['date']}T23:59:00Z", + "limit": "10000", "feed": "sip", "adjustment": "all"} + d = get(f"https://data.alpaca.markets/v2/stocks/{e['symbol']}/bars?" + urllib.parse.urlencode(p)) + cnt += 1 + if d and d.get("bars"): + df = pd.DataFrame(d["bars"]) + df["symbol"] = e["symbol"]; df["date"] = e["date"] + buf.append(df) + if len(buf) >= 40: + pd.concat(buf).to_csv(DEST, mode="a", header=first, index=False) + first = False; buf = [] + print(f" fetched {cnt} events...", flush=True) +if buf: + pd.concat(buf).to_csv(DEST, mode="a", header=first, index=False) +print(f"DONE stage 2: {cnt} events fetched", flush=True) diff --git a/research/warrior/gapper_events.csv b/research/warrior/gapper_events.csv new file mode 100644 index 000000000..3dc08804d --- /dev/null +++ b/research/warrior/gapper_events.csv @@ -0,0 +1,5385 @@ +symbol,date,gap,prev_close,o,h,l,c,v,dollar_vol,rel_vol +ABOS,2023-07-17,0.7532,6.28,11.01,11.3099,9.26,9.72,29235172,284165871,230.7 +BBIO,2023-07-17,0.4687,18.22,26.76,34.28,26.29,32.04,47291139,1515208093,24.1 +XMAX,2023-07-17,0.3784,2.22,3.06,3.29,2.4,2.81,5346516,15023709,988.4 +NMAD,2023-07-17,0.1602,5.43,6.3,9.5,5.3201,7.53,4454603,33543160,282.7 +STGW,2023-07-17,0.0934,7.39,8.08,8.59,8.0,8.19,2996942,24544954,5.2 +LINK,2023-07-18,0.4768,7.313,10.8,11.49,5.995,6.767,3095767,20949055,767.2 +PVLA,2023-07-18,0.3351,14.98,20.0,29.49,15.64,16.74,746810,12501599,51.6 +HYPR,2023-07-18,0.1111,2.34,2.6,3.28,2.6,3.17,10344881,32793272,42.6 +INOD,2023-07-18,0.0916,10.7,11.68,13.7,11.6,13.08,2417832,31625242,6.3 +CVNA,2023-07-19,0.3568,7.96,10.8,11.38,9.42,11.16,599745010,6693154311,4.1 +RBBN,2023-07-19,0.104,2.98,3.29,3.5395,3.25,3.39,2034515,6897005,4.8 +WPRT,2023-07-19,0.0858,9.67,10.5,12.0,10.22,11.62,446386,5187005,8.3 +ROOT,2023-07-19,0.077,10.65,11.47,13.05,11.13,12.63,1049592,13256346,4.6 +CLBR,2023-07-19,0.0745,8.99,9.66,16.32,9.15,13.89,16605457,230649797,38.9 +ICL,2023-07-19,0.0702,5.753,6.157,6.185,5.992,6.056,2182946,13219920,1.9 +DJTWW,2023-07-21,0.6462,3.42,5.63,8.0,5.07,5.95,1627601,9684225,45.1 +DJT,2023-07-21,0.25,13.36,16.7,25.85,16.24,20.08,31306649,628637511,148.6 +GFAI,2023-07-21,0.1522,6.44,7.42,9.9,6.9001,8.4,75791932,636652228,106.8 +PHUN,2023-07-21,0.1032,19.38,21.38,24.56,18.95,19.0,1002867,19054473,42.0 +SDA,2023-07-21,0.0738,12.2,13.1,13.19,11.7,12.25,1287363,15770196,1.4 +EBS,2023-07-21,0.0722,7.06,7.57,7.93,7.06,7.51,4098470,30779509,3.5 +KOSS,2023-07-24,0.144,3.61,4.13,4.52,3.86,4.25,4143298,17609016,252.5 +HPK,2023-07-24,0.0742,12.54,13.47,14.67,12.91,14.43,1425721,20573154,3.6 +ELBM,2023-07-25,0.626,4.92,8.0,10.64,7.92,8.4,16980897,142639534,1233.6 +VSTD,2023-07-25,0.5741,1.62,2.55,2.575,2.0,2.258,3339179,7539866,483.6 +BFRG,2023-07-25,0.5549,3.46,5.38,5.75,4.51,4.99,54975070,274325599,323.8 +KNSA,2023-07-25,0.1272,14.94,16.84,20.0,16.01,19.48,4567455,88974023,11.2 +ABVC,2023-07-26,0.3658,3.8,5.19,6.87,5.06,5.32,33877226,180226842,8868.4 +TLRY,2023-07-26,0.1786,16.8,19.8,21.1,19.0,19.3,9709074,187385128,6.1 +XPEV,2023-07-26,0.1484,15.36,17.64,21.83,17.55,19.46,138918036,2703344980,8.1 +WW,2023-07-26,0.1078,9.93,11.0,11.9799,10.81,11.54,13252344,152932049,4.8 +ARMP,2023-07-26,0.0914,1.97,2.15,3.17,2.08,2.74,4216830,11554114,532.9 +SOUN,2023-07-26,0.073,2.33,2.5,2.62,2.37,2.45,26993592,66134300,1.3 +FEMY,2023-07-27,0.6209,7.28,11.8,21.0,10.04,16.8,8674923,145738706,930.5 +ULBI,2023-07-27,0.3103,4.93,6.46,8.26,6.31,7.52,8948365,67291704,541.8 +LPCN,2023-07-27,0.2535,4.3,5.39,5.85,4.7,5.1,8856379,45167532,1101.1 +CLS,2023-07-27,0.2461,16.46,20.51,20.66,17.73,18.01,5220248,94016666,7.4 +SPOK,2023-07-27,0.1451,8.855,10.14,11.53,10.01,10.33,1069671,11049701,5.6 +IMAX,2023-07-27,0.1369,17.38,19.76,20.7,18.55,18.85,2329027,43902158,4.1 +NOA,2023-07-27,0.133,17.97,20.36,25.04,20.36,23.66,551508,13048679,9.1 +ENVX,2023-07-27,0.1245,19.6,22.04,23.9,18.4,18.64,23674874,441299651,3.1 +LIDR,2023-07-28,0.2826,6.666,8.55,10.2,7.515,8.388,1444372,12115392,36.9 +SIGA,2023-07-28,0.2496,3.798,4.746,4.999,4.082,4.126,19339904,79796443,41.0 +QTTB,2023-07-28,0.234,16.92,20.88,24.84,20.16,23.94,550520,13179448,57.3 +OKYO,2023-07-28,0.1702,1.88,2.2,2.75,2.01,2.2,3988384,8774444,284.1 +BFST,2023-07-28,0.1672,15.85,18.5,20.96,17.59,19.52,302931,5913213,5.0 +COUR,2023-07-28,0.1633,13.01,15.135,15.31,13.82,15.31,4101972,62801191,5.1 +JAKK,2023-07-28,0.0969,16.61,18.22,18.29,17.03,17.29,326451,5644337,3.2 +LRMR,2023-07-28,0.0932,3.11,3.4,4.1776,3.23,3.98,2511514,9995825,21.7 +CHNR,2023-07-31,0.3367,15.68,20.96,22.0,18.8,19.36,326022,6311785,1720.4 +EOSE,2023-07-31,0.2035,2.26,2.72,2.89,2.44,2.46,14895568,36643097,1.9 +SPCB,2023-07-31,0.14,20.0,22.8,23.8,19.2,20.4,420731,8582912,117.0 +GDRX,2023-07-31,0.1274,6.75,7.61,9.37,7.6,9.24,23464006,216807415,26.3 +CGC,2023-07-31,0.117,4.745,5.3,5.3,4.67,4.93,5928328,29226657,2.1 +INVZ,2023-07-31,0.1056,3.41,3.77,4.19,3.62,4.1,22711106,93115534,15.7 +ACHR,2023-07-31,0.1046,4.78,5.28,6.87,5.23,6.73,41685462,280543159,8.1 +SG,2023-07-31,0.0929,14.1,15.41,16.22,14.98,15.07,4846088,73030546,2.3 +ABVC,2023-08-01,0.7269,2.49,4.3,5.08,3.23,3.61,11282057,40728225,2476.3 +AMSC,2023-08-01,0.5873,10.08,16.0,17.37,13.31,16.13,48804467,787216052,251.7 +TTI,2023-08-01,0.2004,4.49,5.39,5.42,4.781,5.01,5648291,28297937,3.8 +ESLA,2023-08-01,0.1837,10.07,11.92,12.7699,10.7,11.15,581972,6488987,144.4 +RGTI,2023-08-01,0.1526,2.49,2.87,3.43,2.42,3.25,27548433,89532407,4.2 +IDAI,2023-08-01,0.1245,12.45,14.0,25.2,12.9,21.75,1492048,32452044,124.2 +AUDC,2023-08-01,0.1053,9.237,10.21,11.13,10.09,10.69,1122438,11998862,10.2 +MSGM,2023-08-01,0.0927,3.4318,3.75,8.71,3.7,6.6,16410528,108309484,945.0 +AIFF,2023-08-02,1.5297,8.25,20.87,27.0,15.0,17.4,3961230,68925402,2874.6 +SCNX,2023-08-02,0.6261,4.18,6.797,8.373,5.806,6.66,8878610,59131542,88.8 +FRSH,2023-08-02,0.182,18.24,21.56,23.09,20.85,21.61,13684090,295713184,6.6 +LIDR,2023-08-02,0.1767,16.81,19.78,24.0,17.55,19.35,2281155,44140349,58.3 +MDXG,2023-08-02,0.0782,7.93,8.55,8.6,7.5,7.7,1510590,11631543,1.7 +UPWK,2023-08-03,0.3039,9.97,13.0,14.5,12.5,14.38,21950131,315642883,18.1 +BMRA,2023-08-03,0.1712,11.68,13.68,14.48,12.48,13.2,1400927,18492236,587.9 +SABR,2023-08-03,0.1491,3.69,4.24,4.9,4.1,4.89,24126263,117977426,4.6 +EVGO,2023-08-03,0.1486,4.24,4.87,5.95,4.77,5.16,26975635,139194276,9.0 +RELY,2023-08-03,0.1483,18.27,20.98,24.51,20.65,22.03,9290108,204661079,15.6 +VITL,2023-08-03,0.1404,10.54,12.02,14.45,11.99,13.27,2112589,28034056,6.4 +HDSN,2023-08-03,0.124,8.63,9.7,10.98,9.66,10.92,2734770,29863688,5.4 +RUN,2023-08-03,0.1239,17.84,20.05,22.1599,19.05,19.2,27541867,528803846,3.2 +AD,2023-08-04,0.4663,8.0,11.73,16.0,11.43,15.43,7528456,116164076,27.4 +TDS,2023-08-04,0.3672,7.563,10.34,14.36,9.986,14.21,18591614,264186834,12.3 +CMRC,2023-08-04,0.2739,9.53,12.14,12.75,11.16,12.08,4168234,50352266,5.2 +AAOI,2023-08-04,0.2701,6.59,8.37,11.29,8.05,11.01,31770769,349796166,11.1 +ACMR,2023-08-04,0.1587,11.97,13.87,14.2,11.85,12.54,1779084,22309713,3.0 +ALHC,2023-08-04,0.1453,5.78,6.62,7.2799,6.29,6.45,1939389,12509059,2.7 +AMZU,2023-08-04,0.1377,19.82,22.55,23.17,22.24,22.27,727779,16207638,4.8 +PRDO,2023-08-04,0.1299,13.09,14.79,15.59,14.75,14.96,725395,10851909,2.9 +NKTR,2023-08-07,0.4558,7.989,11.63,16.8,10.38,15.3,11438182,175004184,100.4 +PLX,2023-08-07,0.1446,1.66,1.9,1.93,1.61,1.9,5270235,10013446,7.4 +GENI,2023-08-07,0.1351,7.4,8.4,8.45,7.14,7.19,4243117,30508011,2.5 +NNDM,2023-08-07,0.0717,2.79,2.99,3.075,2.91,2.99,3859070,11538619,1.2 +BURU,2023-08-08,2.4426,2.899,9.98,10.73,3.493,3.743,17973824,67276023,1718.3 +VVOS,2023-08-08,1.0307,6.525,13.25,14.01,9.575,9.997,2801719,28008784,406.1 +DRUG,2023-08-08,0.6522,3.22,5.32,6.44,3.7101,4.17,30680287,127936796,460.1 +CHGG,2023-08-08,0.3061,10.03,13.1,13.11,10.38,10.46,21253842,222315187,8.7 +DSP,2023-08-08,0.2183,4.58,5.58,6.05,5.06,5.89,1757444,10351345,17.7 +MNPR,2023-08-08,0.2106,3.775,4.57,4.85,3.6,4.35,1359532,5913964,103.6 +PAY,2023-08-08,0.2084,10.7,12.93,15.0499,12.75,14.04,887248,12456961,22.9 +HIMS,2023-08-08,0.1722,7.9,9.26,9.275,7.22,7.44,20229694,150508923,7.6 +TNGX,2023-08-09,0.3055,3.83,5.0,9.39,5.0,7.81,74899971,584968773,890.6 +ARRY,2023-08-09,0.2081,17.88,21.6,23.51,21.2,22.18,22729309,504136073,5.3 +MQ,2023-08-09,0.2026,19.84,23.86,24.96,21.52,22.16,5521678,122360384,5.0 +BOOM,2023-08-09,0.1789,17.55,20.69,22.47,20.1,22.26,637858,14198719,4.2 +VERX,2023-08-09,0.1733,17.77,20.85,20.85,18.41,19.59,476161,9327993,2.2 +OPRT,2023-08-09,0.1429,5.25,6.0,7.19,5.74,6.84,773002,5287333,5.3 +VTGN,2023-08-09,0.1321,7.42,8.4,8.44,6.8,7.035,10460900,73592431,89.1 +OFIX,2023-08-09,0.1136,17.96,20.0,21.015,19.53,20.35,508235,10342582,3.3 +PRMB,2023-08-10,0.1118,12.79,14.22,14.34,13.86,14.02,3007880,42170477,2.8 +MGIH,2023-08-10,0.1111,2.43,2.7,3.25,2.3221,2.5,4390836,10977090,55.4 +NABL,2023-08-10,0.1001,13.39,14.73,14.738,13.32,13.43,1011613,13585962,2.5 +MNTK,2023-08-10,0.0991,8.48,9.32,9.44,8.52,9.41,613419,5772272,2.5 +VTGN,2023-08-10,0.0931,7.035,7.69,8.14,7.08,7.515,14970167,112500805,120.4 +HLIT,2023-08-10,0.087,10.12,11.0,11.25,10.81,10.85,3280048,35588520,2.9 +JBI,2023-08-10,0.0835,10.78,11.68,11.68,11.0,11.51,2803675,32270299,3.5 +ACIC,2023-08-10,0.0818,6.53,7.064,7.925,6.965,7.209,2429276,17512650,21.6 +TSAT,2023-08-11,0.5385,8.45,13.0,13.89,11.6,12.97,23276321,301893883,669.6 +ETON,2023-08-11,0.2846,2.6,3.34,3.63,2.97,3.59,15757039,56567770,377.2 +INOD,2023-08-11,0.1951,10.71,12.8,13.8833,12.01,13.34,2088029,27854306,5.7 +ACHR,2023-08-11,0.1767,5.83,6.86,6.95,5.4101,5.77,37297760,215208075,6.9 +RGTI,2023-08-11,0.1646,1.64,1.91,2.75,1.87,2.28,79866385,182095357,10.8 +MGIH,2023-08-11,0.116,2.5,2.79,3.7799,2.0,2.1,5172629,10862520,65.3 +RCEL,2023-08-11,0.081,18.27,19.75,20.0133,16.79,18.45,481246,8878988,2.5 +GNS,2023-08-11,0.0805,8.15,8.806,14.3,8.2,11.9,6193942,73707909,75.3 +GNS,2023-08-14,0.2269,11.9,14.6,17.5,13.3,15.9,5235938,83251414,59.8 +HUMA,2023-08-14,0.0734,3.27,3.51,4.1,3.215,4.04,1943718,7852620,5.8 +JYNT,2023-08-14,0.0726,10.06,10.79,11.228,10.5,10.65,474179,5050006,6.8 +VFS,2023-08-15,1.1053,10.45,22.0,38.7775,16.0,37.06,6896475,255583363,167.4 +DCTH,2023-08-15,0.8718,3.12,5.84,7.27,5.34,5.67,105188922,596421187,725.5 +GRND,2023-08-15,0.2175,4.69,5.71,5.83,5.06,5.09,1003462,5107621,9.2 +NVTS,2023-08-15,0.1394,8.61,9.81,10.1,8.46,9.01,8676098,78171642,6.1 +GSM,2023-08-15,0.1181,4.674,5.226,5.4,4.843,4.974,4731446,23534212,5.4 +GROV,2023-08-15,0.1005,2.19,2.41,3.29,2.31,2.85,7356616,20966355,63.7 +PSFE,2023-08-15,0.0998,11.82,13.0,15.08,12.89,14.64,3005744,44004092,8.5 +RSKD,2023-08-15,0.0986,4.26,4.68,4.8893,4.52,4.77,1778047,8481284,4.2 +DLO,2023-08-16,0.2684,14.53,18.43,22.7,18.29,19.17,38811443,744015362,42.9 +ORBS,2023-08-16,0.1321,5.3,6.0,8.2,4.3,4.495,5105564,22949510,367.3 +HKD,2023-08-16,0.1169,5.9,6.59,6.6,5.61,5.71,2511257,14339277,3.2 +DTIL,2023-08-16,0.1094,15.91,17.65,18.27,14.1,15.75,392369,6179811,15.6 +CRVO,2023-08-17,1.0455,6.6,13.5,14.37,7.4,7.59,1627441,12352277,427.1 +NIXX,2023-08-17,0.1213,2.811,3.152,6.975,3.015,3.842,2948059,11326442,360.9 +LYTS,2023-08-17,0.095,12.32,13.49,15.1,13.42,14.75,1246380,18384105,9.5 +CHGG,2023-08-17,0.0808,9.53,10.3,10.79,10.03,10.61,5865586,62233867,2.5 +NNOX,2023-08-17,0.073,9.04,9.7,10.8799,9.01,9.5,5567864,52894708,5.8 +DRTS,2023-08-18,0.1389,3.6,4.1,4.25,3.36,3.7,1924937,7122266,104.7 +HE,2023-08-18,0.1081,12.03,13.33,14.2,12.41,13.77,34161340,470401651,73.1 +CPHI,2023-08-21,0.2785,10.95,14.0,17.5,11.5,13.9,427629,5944043,178.8 +GRRR,2023-08-21,0.1765,15.3,18.0,18.45,16.7,17.0,810184,13773128,2.4 +GNS,2023-08-21,0.161,11.8,13.7,15.8,11.8,12.3,2181285,26829805,12.1 +EOSE,2023-08-21,0.107,2.99,3.31,3.35,2.95,3.18,13828592,43974922,2.0 +VFS,2023-08-21,0.0896,15.4,16.78,18.89,16.0,17.58,2129331,37433638,45.0 +FIRY,2023-08-21,0.0806,7.32,7.91,9.08,7.75,8.51,5033465,42834787,14.6 +SIDU,2023-08-22,0.3656,16.11,22.0,25.5,16.0,16.6,1118559,18568079,56.2 +FULC,2023-08-22,0.3469,3.92,5.28,6.37,5.18,5.43,76619690,416044916,159.1 +HKD,2023-08-22,0.15,5.0,5.75,8.42,5.21,6.37,40066554,255223948,53.4 +APLD,2023-08-22,0.1339,5.9,6.69,6.94,5.99,6.14,5326272,32703310,1.4 +ASLE,2023-08-22,0.125,12.64,14.22,14.53,13.471,13.86,1047379,14516672,2.4 +AMTD,2023-08-22,0.0916,3.93,4.29,4.59,3.93,3.99,1298162,5179666,43.4 +MNSO,2023-08-22,0.0853,18.41,19.98,20.31,19.18,20.21,2960154,59824712,3.2 +VFS,2023-08-22,0.0808,17.58,19.0,46.9799,18.8,36.72,19416358,712968665,410.1 +AMC,2023-08-23,0.3761,14.17,19.5,22.0,19.4,19.6,19985436,391714545,6.5 +RCUS,2023-08-23,0.2344,18.81,23.22,25.47,22.57,23.03,4637934,106811620,7.3 +KPRX,2023-08-23,0.1961,4.59,5.49,5.85,4.725,5.625,1236397,6954733,124.8 +HMY,2023-08-23,0.0733,3.398,3.647,3.896,3.647,3.886,6801996,26432556,2.5 +TSHA,2023-08-24,0.1802,2.22,2.62,2.71,2.1401,2.34,18611234,43550287,118.0 +GRPN,2023-08-24,0.1372,11.775,13.39,13.7799,12.115,12.18,2675585,32588625,2.2 +NVDL,2023-08-24,0.1033,4.841,5.341,5.341,4.842,4.842,36461628,176547202,4.1 +EOSE,2023-08-24,0.0762,3.28,3.53,3.67,2.95,3.09,11761276,36342342,1.8 +AFRM,2023-08-25,0.0927,13.81,15.09,18.32,15.0,17.79,85735865,1525241038,7.3 +HE,2023-08-28,0.3975,9.66,13.5,14.74,12.86,13.97,58708158,820152967,84.6 +GNS,2023-08-28,0.3493,14.6,19.7,24.8,18.6,23.0,10131030,233013690,13.6 +RDZN,2023-08-28,0.2383,9.65,11.95,14.1,10.03,11.65,733150,8541197,3.8 +NEUP,2023-08-28,0.2353,1.53,1.89,2.56,1.68,1.76,3738053,6578973,113.8 +BEEP,2023-08-28,0.081,6.05,6.54,13.99,6.1506,10.37,1035040,10733364,38.2 +GSAT,2023-08-29,0.2358,15.9,19.65,21.9,18.45,19.65,2758020,54195092,18.3 +TIGR,2023-08-29,0.1191,3.61,4.04,4.795,3.88,4.64,14104146,65443237,13.1 +OKYO,2023-08-29,0.0896,2.7992,3.05,3.07,2.36,3.04,5334494,16216861,115.7 +LFVN,2023-08-29,0.0834,4.591,4.974,6.632,4.974,5.687,1808414,10284450,75.9 +BZ,2023-08-29,0.0752,14.23,15.3,15.31,14.13,14.63,5078513,74298645,1.8 +GSAT,2023-08-30,0.0916,19.65,21.45,22.8,20.4,21.0,1726359,36253539,11.1 +BEKE,2023-08-31,0.1076,14.69,16.27,18.72,15.82,16.14,40318637,650742801,5.8 +MVST,2023-08-31,0.105,1.81,2.0,2.29,1.94,2.23,12035966,26840204,3.2 +AMC,2023-08-31,0.0919,12.73,13.9,13.9,12.55,12.55,38962109,488974467,6.6 +GNS,2023-08-31,0.0809,13.6,14.7,15.4,11.25,11.5,1543009,17744603,1.5 +UGI,2023-08-31,0.0804,19.77,21.36,21.87,21.11,21.53,22973654,494622770,9.9 +SCNX,2023-09-01,0.7672,4.759,8.41,8.952,6.267,7.239,13213856,95655103,319.2 +EOSE,2023-09-01,0.4738,3.25,4.79,4.81,3.62,3.85,56183724,216307337,8.9 +ESLA,2023-09-01,0.1466,7.3,8.37,33.0,8.2383,21.25,4095156,87022065,186.0 +CGC,2023-09-01,0.101,5.721,6.299,6.325,5.238,5.5,6125852,33692186,2.9 +SPRY,2023-09-01,0.0719,7.09,7.6,8.0,7.09,7.11,1588227,11292293,5.3 +DHC,2023-09-05,0.1219,2.535,2.844,2.844,2.4,2.487,2329644,5793824,1.8 +HASI,2023-09-05,0.0751,19.45,20.91,21.48,20.67,21.09,5139383,108389587,4.8 +PALI,2023-09-06,0.7971,10.35,18.6,28.95,16.95,21.6,10947383,236463472,1389.7 +MITK,2023-09-06,0.1973,11.3,13.53,13.98,12.61,12.9,3281354,42329466,10.4 +SST,2023-09-06,0.1739,18.4,21.6,21.7,16.8,17.2,485097,8343668,58.2 +CGC,2023-09-06,0.1182,6.838,7.646,8.3,6.856,8.019,12657378,101499514,5.7 +DAKT,2023-09-06,0.1169,8.38,9.36,9.97,8.59,8.89,2312839,20561138,7.9 +GOGO,2023-09-06,0.0827,11.13,12.05,12.79,12.03,12.24,1238434,15158432,2.1 +NTRP,2023-09-07,0.7294,4.376,7.568,8.382,5.052,5.4,1743979,9417486,145.6 +MDAI,2023-09-07,0.4995,10.21,15.31,19.5,12.52,14.43,4256657,61423560,324.7 +DBI,2023-09-07,0.2857,9.357,12.03,12.12,10.61,11.41,7063647,80596212,5.3 +GIII,2023-09-07,0.2015,19.11,22.96,24.23,20.87,23.75,1777702,42220422,5.6 +NRIX,2023-09-07,0.076,8.29,8.92,9.48,8.47,8.98,2216645,19905472,11.0 +SWBI,2023-09-08,0.1589,9.233,10.7,11.58,10.02,10.23,3420812,34994906,11.0 +EOSE,2023-09-08,0.121,2.81,3.15,3.1623,2.64,2.76,15921490,43943312,2.0 +LTRX,2023-09-08,0.0875,4.0,4.35,5.15,4.35,5.13,1467269,7527089,22.4 +VFS,2023-09-08,0.0828,17.99,19.48,19.49,16.33,17.15,8569474,146966479,2.2 +CRNX,2023-09-11,0.5706,15.97,25.082,29.45,24.75,26.08,24910141,649656477,44.6 +CGC,2023-09-11,0.1054,9.318,10.3,17.9,10.2,16.9,27893258,471396060,12.5 +TSLL,2023-09-11,0.0935,13.47,14.73,15.61,14.46,15.51,27987060,434079300,2.3 +ACB,2023-09-11,0.075,5.29,5.687,9.38,5.614,9.108,25583902,233018179,58.9 +TNON,2023-09-12,0.6617,11.5,19.11,24.0,14.49,14.49,679905,9851823,180.9 +COSM,2023-09-12,0.2677,19.8,25.1,31.8,21.8,26.6,2087025,55514865,80.7 +MTRX,2023-09-12,0.1506,7.97,9.17,9.25,8.26,9.07,610637,5538477,10.0 +CGNT,2023-09-12,0.1407,4.62,5.27,5.86,5.18,5.73,2289223,13117247,11.9 +GERN,2023-09-12,0.1068,2.34,2.59,2.655,2.25,2.3,18501815,42554174,4.0 +RCKT,2023-09-13,0.4022,15.29,21.44,22.32,19.6701,21.23,23717138,503514839,57.6 +RKTO,2023-09-13,0.1604,2.68,3.11,3.37,1.76,1.92,7696228,14776757,293.9 +NN,2023-09-13,0.0848,5.07,5.5,5.9,5.35,5.73,1695659,9716126,7.2 +LUXE,2023-09-14,0.0907,3.75,4.09,4.88,4.0107,4.14,1393571,5769383,22.7 +AMC,2023-09-14,0.0813,8.24,8.91,9.1,8.045,8.14,46855415,381403078,2.3 +IOVA,2023-09-15,0.2379,4.645,5.75,5.98,5.13,5.27,53494974,281918512,15.2 +NVX,2023-09-15,0.2043,1.86,2.24,2.63,2.21,2.38,7043186,16762782,167.7 +CGC,2023-09-15,0.168,12.5,14.6,15.68,12.8,13.5,11976264,161679564,4.7 +ACB,2023-09-15,0.1043,8.431,9.31,10.6,8.819,9.828,9338374,91777539,21.0 +MSOS,2023-09-15,0.0986,8.98,9.865,9.88,8.87,9.07,16240520,147301516,5.1 +CATX,2023-09-18,0.3171,2.05,2.7,5.035,2.663,3.199,4119291,13177611,167.1 +MIRA,2023-09-18,0.205,3.17,3.82,6.48,3.5114,4.4,2979125,13108150,89.7 +ESLA,2023-09-18,0.1135,8.72,9.71,14.39,9.23,11.71,1356584,15885598,29.4 +CART,2023-09-19,2.2184,13.05,42.0,42.95,33.67,33.7,39504515,1331302155, +TALK,2023-09-19,0.0795,1.76,1.9,2.1,1.9,2.01,7552828,15181184,29.7 +RLMD,2023-09-20,0.1935,2.79,3.33,3.5,2.85,2.96,3258250,9644420,42.2 +GNS,2023-09-20,0.1477,8.8,10.1,11.5,9.5,10.3,1007702,10379330,0.9 +BHC,2023-09-20,0.1244,7.72,8.68,8.72,8.14,8.34,10282746,85758101,4.5 +HAIN,2023-09-20,0.0823,9.72,10.52,11.02,10.45,10.67,1747261,18643274,1.8 +ESLA,2023-09-21,0.2629,12.25,15.47,20.8,14.3,15.28,5959552,91061954,94.4 +RDZN,2023-09-21,0.1241,11.12,12.5,12.5,5.84,6.57,786978,5170445,3.6 +TAOX,2023-09-22,0.1983,7.01,8.4,10.6,7.75,9.125,552164,5038496,38.2 +INDI,2023-09-22,0.0997,6.22,6.84,6.9,6.62,6.69,2919292,19530063,1.2 +HPK,2023-09-22,0.0792,15.41,16.63,17.22,16.18,16.36,1130121,18488779,3.4 +KC,2023-09-22,0.0719,4.45,4.77,4.94,4.7255,4.92,1367053,6725900,1.1 +GDS,2023-09-22,0.0718,10.17,10.9,10.955,10.69,10.7,934007,9993874,1.2 +FEMY,2023-09-26,2.6791,6.632,24.4,33.2,20.0,29.6,9598231,284107637,1184.6 +ADPT,2023-09-26,0.1614,5.08,5.9,6.34,5.495,5.56,5617572,31233700,4.6 +ROIV,2023-09-26,0.1557,10.21,11.8,12.83,11.75,12.41,22066620,273846754,6.2 +HRTG,2023-09-26,0.0894,5.26,5.73,6.37,5.66,6.13,1657982,10163429,8.9 +BFRG,2023-09-26,0.0871,2.87,3.12,4.28,3.05,3.55,30980090,109979319,296.1 +KPTI,2023-09-26,0.0833,18.0,19.5,21.08,18.45,19.27,411651,7932514,5.7 +PLRX,2023-09-26,0.0789,14.58,15.73,17.5,15.6,16.67,3635760,60608119,8.8 +SPRY,2023-09-26,0.075,3.6,3.87,4.485,3.72,3.75,4192210,15720787,9.5 +NYC,2023-09-27,0.4277,6.22,8.88,8.93,7.2,8.0,1211534,9692272,601.3 +TKNO,2023-09-27,0.3185,2.92,3.85,4.27,2.35,3.09,3457880,10684849,192.4 +DMRA,2023-09-27,0.2754,14.27,18.2,18.75,15.88,17.45,431974,7537946,36.3 +MLKN,2023-09-27,0.2384,17.41,21.56,23.0,21.46,22.28,7600258,169333748,15.3 +CRDF,2023-09-27,0.179,1.62,1.91,2.005,1.58,1.6,22714394,36343030,145.3 +BHVN,2023-09-27,0.1785,17.65,20.8,25.48,20.8,23.53,6454708,151879279,11.2 +SOUN,2023-09-27,0.1,1.6,1.76,1.96,1.71,1.8,21543550,38778390,1.9 +CGC,2023-09-27,0.0952,9.222,10.1,10.5,8.261,8.9,10779121,95934176,1.6 +ORGO,2023-09-28,0.166,2.65,3.09,3.44,2.9103,3.39,3610164,12238455,6.2 +PTON,2023-09-28,0.0946,4.65,5.09,5.23,4.61,4.9,47416205,232339404,4.4 +SSYS,2023-09-28,0.0776,12.25,13.2,13.51,12.86,13.21,2802807,37025080,3.0 +SPWH,2023-09-28,0.0722,3.74,4.01,4.27,3.9,4.11,1460998,6004701,2.0 +BTCT,2023-09-29,1.7044,2.03,5.49,5.76,3.3,3.58,7400958,26495429,216.1 +EDIT,2023-09-29,0.1315,6.92,7.83,8.58,7.45,7.8,6862496,53527468,6.3 +ICCM,2023-10-02,0.6656,16.21,27.0,34.8,21.9,25.65,3501630,89816809,1654.8 +NEUP,2023-10-02,0.163,2.7,3.14,4.49,2.84,3.94,38807639,152902097,195.6 +PBI,2023-10-02,0.1091,2.75,3.05,3.205,2.977,3.178,3900611,12396141,3.4 +CLSK,2023-10-02,0.0936,3.81,4.1665,4.33,3.8104,3.86,13640223,52651260,1.5 +RIOT,2023-10-02,0.0825,9.33,10.1,10.95,9.8,9.88,32637577,322459260,2.0 +MARA,2023-10-02,0.0824,8.5,9.2,9.688,8.51,8.53,42154892,359581228,1.8 +HUT,2023-10-02,0.0769,9.75,10.5,11.15,9.85,10.0,2419299,24192990,1.5 +BTBT,2023-10-02,0.0748,2.14,2.3,2.39,2.2,2.23,2867691,6394950,1.1 +ALXO,2023-10-03,0.6819,4.81,8.09,8.3199,6.91,7.51,42682444,320545154,318.8 +WRBY,2023-10-03,0.0821,13.27,14.36,14.875,13.69,13.72,2156057,29581102,2.3 +VVOS,2023-10-04,0.4595,4.625,6.75,11.25,6.275,7.613,10062606,76606619,1775.0 +PXLW,2023-10-04,0.1495,12.84,14.76,17.76,13.56,14.04,396743,5570271,44.5 +TE,2023-10-04,0.083,4.58,4.96,5.158,4.655,4.71,4501620,21202630,2.9 +FNGR,2023-10-04,0.0721,4.58,4.91,5.5,4.6,5.44,2586895,14072708,3.2 +CMBT,2023-10-05,0.198,10.25,12.28,12.28,11.71,12.0,11492362,137908344,10.1 +VVOS,2023-10-05,0.1563,7.613,8.803,8.975,7.275,8.137,955408,7774154,168.5 +VFS,2023-10-05,0.1056,8.05,8.9,9.3,8.06,8.5,8882432,75500672,1.6 +ALXO,2023-10-05,0.0799,6.38,6.89,6.9,6.11,6.555,3236873,21217702,24.0 +FBYD,2023-10-06,2.4854,6.467,22.54,33.37,12.5,14.5,391849,5681810,19.7 +AGIG,2023-10-09,0.1086,17.5,19.4,23.9,19.4,22.2,417567,9269987,44.1 +INDO,2023-10-09,0.1059,3.4,3.76,4.27,3.61,4.07,3109478,12655575,59.5 +DFEN,2023-10-09,0.0896,11.27,12.28,12.77,12.09,12.77,2529779,32305277,9.8 +PTEN,2023-10-09,0.0745,11.01,11.83,11.99,11.53,11.82,6684745,79013685,1.0 +SPCB,2023-10-10,0.9792,7.2,14.25,22.6,12.6,17.6,11664906,205302345,3506.7 +CISO,2023-10-10,0.4041,2.091,2.936,3.375,2.267,2.355,2775281,6535786,132.3 +INTZ,2023-10-10,0.3094,7.0,9.166,12.14,8.226,8.65,1933430,16724169,138.2 +AIOT,2023-10-10,0.2183,1.97,2.4,3.25,2.26,2.53,10435983,26403036,240.8 +IMUX,2023-10-10,0.2044,15.9,19.15,19.2,13.5,13.7,1713453,23474306,77.6 +INO,2023-10-10,0.1374,4.308,4.9,7.12,4.561,6.074,4770522,28976150,38.1 +MTNB,2023-10-11,0.7432,7.75,13.51,44.5,12.68,32.05,7412926,237584278,597.7 +PHIO,2023-10-11,0.1295,12.51,14.13,29.07,14.04,23.4,6319451,147875153,2957.2 +SHLS,2023-10-11,0.0968,16.74,18.36,18.46,17.19,17.62,6098691,107458935,2.4 +PLUG,2023-10-11,0.0894,7.16,7.8,7.89,7.29,7.54,69363422,523000201,4.2 +RGTI,2023-10-11,0.0719,1.53,1.64,1.655,1.48,1.51,3581817,5408543,1.0 +VS,2023-10-12,0.9224,3.662,7.04,20.8,4.816,5.261,10940372,57557297,1639.0 +VSAT,2023-10-12,0.1689,15.63,18.27,18.35,16.45,16.8,3638791,61131688,2.5 +SRRK,2023-10-12,0.1285,6.85,7.73,9.24,7.45,8.06,4499917,36269331,17.1 +EDSA,2023-10-12,0.1111,2.7,3.0,8.3331,3.0,4.88,3314493,16174725,770.9 +OPRX,2023-10-12,0.1063,7.15,7.91,9.0,7.85,8.08,634760,5128860,5.0 +EVLV,2023-10-12,0.1034,4.35,4.8,4.8,3.6421,3.77,4949889,18661081,4.9 +NTRP,2023-10-13,1.562,2.42,6.2,8.0,5.0,5.94,45182796,268385808,908.0 +EH,2023-10-13,0.4942,17.1,25.55,25.78,19.0,20.3,9242764,187628109,23.6 +RDHL,2023-10-13,0.4118,9.3,13.13,13.52,6.425,8.0,676649,5413192,77.2 +TWAV,2023-10-13,0.3311,11.72,15.6,17.2,10.45,11.09,1431833,15879027,348.9 +VS,2023-10-13,0.329,5.261,6.992,8.946,3.472,3.742,4894211,18314137,733.2 +CMTL,2023-10-13,0.226,8.14,9.98,10.9,9.65,10.37,1504096,15597475,12.0 +GRPN,2023-10-13,0.0841,10.94,11.86,13.09,11.29,12.71,3243398,41223588,3.2 +RDHL,2023-10-16,0.3713,8.0,10.97,11.25,8.56,10.76,674239,7254811,65.0 +BITX,2023-10-16,0.2009,7.8,9.367,9.75,8.392,8.812,1644126,14488038,7.8 +ALHC,2023-10-16,0.1495,6.62,7.61,8.1482,7.4,7.76,2505554,19443099,4.7 +HUT,2023-10-16,0.1195,8.575,9.6,9.9,8.85,9.4,2709568,25469939,1.8 +MARA,2023-10-16,0.1077,7.71,8.54,8.94,7.87,8.1,52444901,424803698,2.1 +BITO,2023-10-16,0.0969,4.324,4.743,4.889,4.491,4.61,33507765,154470796,6.5 +RIOT,2023-10-16,0.0951,9.15,10.02,10.47,9.1,9.42,36855666,347180373,2.3 +CLSK,2023-10-16,0.0909,3.52,3.84,4.145,3.68,3.95,22107960,87326442,2.5 +ASMB,2023-10-17,0.9972,8.712,17.4,20.04,14.4,15.0,6323970,94859550,853.8 +JG,2023-10-17,0.5568,2.604,4.054,4.296,2.674,2.76,1933403,5336192,189.9 +ARDX,2023-10-18,0.1362,3.45,3.92,4.12,3.63,3.91,58539003,228887501,11.8 +FBYD,2023-10-18,0.0891,10.21,11.12,36.67,10.43,17.91,1632138,29231591,23.3 +TNGX,2023-10-18,0.0875,7.2,7.83,7.83,7.01,7.26,1719840,12486038,1.3 +MDAI,2023-10-19,0.5637,2.59,4.05,4.68,3.22,3.61,51697013,186626216,335.8 +MTC,2023-10-19,0.2132,10.88,13.2,19.84,11.76,16.48,1873475,30874868,232.7 +OTLK,2023-10-19,0.0812,9.434,10.2,18.0,9.624,13.2,6284760,82958832,30.8 +T,2023-10-19,0.073,12.46,13.37,13.62,13.19,13.28,97636471,1296612334,2.9 +XRTX,2023-10-20,0.635,15.7,25.67,37.62,21.13,28.76,2039707,58661973,3991.6 +NMG,2023-10-20,0.1535,2.02,2.33,3.01,2.27,2.76,3672178,10135211,60.9 +AMWL,2023-10-20,0.1129,18.87,21.0,23.4,20.2,21.8,249590,5441062,4.1 +INM,2023-10-24,1.931,11.6,34.0,41.6,19.2,19.78,5098855,100855351,2726.7 +BITX,2023-10-24,0.1981,10.65,12.76,12.83,11.94,12.28,962916,11824608,4.4 +MAIA,2023-10-24,0.1949,1.95,2.33,2.44,1.8,2.03,4597860,9333655,35.6 +HUT,2023-10-24,0.1327,10.55,11.95,12.0,10.95,11.45,4799131,54950049,2.9 +CLSK,2023-10-24,0.1304,4.255,4.81,5.11,4.59,4.7,31815312,149531966,3.2 +MARA,2023-10-24,0.1303,8.75,9.89,10.72,9.35,9.76,95506798,932146348,3.6 +IREN,2023-10-24,0.1281,3.2,3.61,4.035,3.38,3.5,5057545,17701407,3.7 +CONL,2023-10-24,0.1227,10.51,11.8,12.99,11.27,11.51,529135,6090343,4.1 +ONMD,2023-10-25,0.1266,6.32,7.12,13.51,6.5401,7.1,1455139,10331486,381.6 +SRRK,2023-10-25,0.1044,7.66,8.46,9.31,8.35,9.02,2065588,18631603,5.9 +PGY,2023-10-25,0.0833,14.4,15.6,16.8,14.4,14.64,1068764,15646704,2.7 +IMAX,2023-10-25,0.0705,18.29,19.58,19.91,17.4303,18.11,1569042,28415350,3.2 +MGRX,2023-10-26,0.1733,11.25,13.2,13.5,11.97,12.21,578866,7067953,214.0 +ALT,2023-10-26,0.1181,2.37,2.65,2.73,2.305,2.32,6369650,14777587,6.5 +OPRA,2023-10-26,0.0998,9.238,10.16,10.66,9.624,10.16,1128224,11462755,1.6 +FLEX,2023-10-26,0.0977,16.89,18.54,18.85,17.99,18.75,16774107,314514506,5.2 +PCT,2023-10-26,0.0934,4.39,4.8,5.32,4.62,4.75,4592660,21815135,2.6 +ESI,2023-10-26,0.0869,17.04,18.52,18.86,17.25,17.69,2930209,51835397,3.2 +NRDS,2023-10-27,0.2048,6.64,8.0,9.82,7.5,9.34,7682681,71756240,23.5 +PMT,2023-10-27,0.1296,7.602,8.587,8.736,8.385,8.708,2002477,17437569,3.2 +COUR,2023-10-27,0.1147,17.18,19.15,19.15,16.58,17.2,3411765,58682358,2.9 +OIS,2023-10-27,0.0941,7.33,8.02,8.2899,7.8,7.99,802196,6409546,1.6 +AMZU,2023-10-27,0.0823,17.25,18.67,19.45,18.48,18.97,740243,14042409,3.9 +VYNE,2023-10-30,0.4031,2.245,3.15,3.45,2.58,2.77,19825807,54917485,2430.2 +CHRS,2023-10-30,0.1439,2.64,3.02,3.28,2.83,3.01,24485169,73700358,10.5 +SOFI,2023-10-30,0.1063,6.87,7.6,7.88,6.68,6.94,125947112,874072957,5.4 +MGTX,2023-10-30,0.1027,3.7,4.08,5.41,4.05,4.45,12223845,54396110,125.3 +HCM,2023-10-30,0.0812,18.47,19.97,20.73,19.81,20.23,289287,5852276,2.5 +TPET,2023-10-30,0.0744,9.68,10.4,14.8,10.4,12.37,848777,10499371,100.9 +JKS,2023-10-30,0.0717,19.95,21.38,24.54,21.09,22.76,3664839,83411735,4.1 +CDIO,2023-10-31,0.3232,6.396,8.463,11.82,8.184,9.048,4984820,45102651,334.3 +HRMY,2023-10-31,0.1329,19.71,22.33,23.95,22.0,23.54,1633748,38458427,2.3 +BEAM,2023-10-31,0.0769,19.11,20.58,22.0818,19.25,21.14,3498973,73968289,3.8 +MNPR,2023-11-01,0.5386,2.15,3.308,3.6,2.438,2.75,10911889,30007694,4192.8 +TGTX,2023-11-01,0.3182,7.73,10.19,11.44,9.34,10.12,50843293,514534125,12.2 +ALDX,2023-11-01,0.1696,1.71,2.0,2.73,1.97,2.54,66704823,169430250,90.8 +TTMI,2023-11-01,0.1271,11.49,12.95,13.0,12.245,12.92,1380464,17835594,2.5 +EYPT,2023-11-01,0.0997,6.02,6.62,7.35,6.45,7.24,925322,6699331,2.0 +CGAU,2023-11-01,0.0709,4.769,5.107,5.361,5.014,5.239,1261000,6606379,6.8 +OPTX,2023-11-02,0.5187,10.14,15.4,19.5,10.5,10.7,3394449,36320604,1997.3 +LMND,2023-11-02,0.26,11.0,13.86,16.205,13.16,16.17,10708184,173151335,9.0 +LIND,2023-11-02,0.2414,5.84,7.25,7.25,5.47,6.0,844461,5066766,2.7 +FSLY,2023-11-02,0.2281,14.25,17.5,17.9494,16.34,16.47,6935602,114229364,3.0 +CWH,2023-11-02,0.2222,16.25,19.86,21.63,17.33,17.5,2794934,48911345,2.9 +EGHT,2023-11-02,0.214,2.29,2.78,3.13,2.65,3.12,7916893,24700706,6.9 +SABR,2023-11-02,0.1886,3.5,4.16,4.46,3.86,4.14,12359695,51169137,3.1 +AUDC,2023-11-02,0.1813,7.296,8.619,9.505,8.6,9.467,536684,5080787,4.1 +TNON,2023-11-03,0.6824,6.8,11.44,11.84,8.48,10.16,5122144,52040983,1416.9 +ANIK,2023-11-03,0.2749,18.99,24.21,24.25,20.29,21.12,264543,5587148,2.5 +CPS,2023-11-03,0.2361,12.73,15.735,18.58,15.49,18.31,975251,17856845,5.8 +FIGS,2023-11-03,0.2011,5.62,6.75,7.21,6.6,6.81,8142327,55449246,3.9 +HOWL,2023-11-03,0.1767,2.15,2.53,3.35,2.43,3.17,39771617,126076025,1774.1 +FNKO,2023-11-03,0.1585,7.51,8.7,10.03,8.65,8.75,2287523,20015826,4.6 +ATMU,2023-11-03,0.1442,19.7,22.54,23.18,19.51,20.11,935336,18809606,1.6 +KN,2023-11-03,0.1406,13.51,15.41,16.815,15.17,16.04,1429496,22929115,2.7 +OPRX,2023-11-06,0.2921,8.49,10.97,10.97,9.51,9.79,581490,5692787,4.8 +CDIO,2023-11-06,0.1834,11.23,13.29,23.25,13.29,20.4,3474536,70880534,112.9 +KORU,2023-11-06,0.1766,3.29,3.871,3.899,3.753,3.795,2451574,9303723,3.4 +NSSC,2023-11-06,0.1729,18.1,21.23,22.75,20.52,22.0,1562686,34379092,5.7 +INVZ,2023-11-06,0.1375,1.6,1.82,1.82,1.63,1.69,3424666,5787685,1.9 +SNTI,2023-11-07,1.0404,2.92,5.958,6.489,4.878,5.2,8122929,42239230,417.2 +MTNB,2023-11-07,0.2122,12.58,15.25,16.0,13.5,16.0,355421,5686736,6.0 +UIS,2023-11-07,0.1799,2.89,3.41,3.585,3.15,3.48,1999405,6957929,3.7 +TASK,2023-11-07,0.1452,6.687,7.658,7.964,7.306,7.886,1542125,12161197,3.9 +OSCR,2023-11-07,0.0946,5.71,6.25,6.88,6.03,6.62,2896686,19176061,2.4 +NEO,2023-11-07,0.0922,14.65,16.0,17.09,15.1,16.73,2829707,47340998,2.9 +TRIP,2023-11-07,0.0881,16.11,17.53,18.305,16.68,17.88,13738315,245641072,8.0 +EVER,2023-11-07,0.086,7.44,8.08,8.94,8.05,8.7,1038940,9038778,3.7 +HSCS,2023-11-08,2.3456,14.93,49.95,52.0,20.0,22.9,866404,19840651,1705.5 +TH,2023-11-08,0.2719,12.58,16.0,16.02,13.94,14.59,3415845,49837178,7.2 +UPWK,2023-11-08,0.2225,12.025,14.7,15.0,12.29,13.29,11885165,157953842,8.1 +SRTA,2023-11-08,0.2203,2.27,2.77,3.0887,2.64,2.94,5388634,15842583,12.4 +EVGO,2023-11-08,0.2087,2.3,2.78,2.91,2.55,2.71,11238957,30457573,4.2 +REAL,2023-11-08,0.1863,1.61,1.91,2.23,1.86,2.0,17343594,34687188,10.0 +YOU,2023-11-08,0.1773,16.02,18.86,18.94,17.39,17.45,4471215,78022701,4.2 +ENVX,2023-11-08,0.1738,10.24,12.02,12.46,11.23,11.75,10209965,119967088,2.5 +CDNA,2023-11-09,0.2638,6.33,8.0,8.0,7.12,7.21,3341682,24093527,3.6 +CLMT,2023-11-09,0.2231,13.0,15.9,16.18,14.14,14.25,557373,7942565,6.7 +XMTR,2023-11-09,0.1781,16.73,19.71,19.78,15.741,16.18,685458,11090710,1.8 +BAK,2023-11-09,0.1693,7.03,8.22,8.36,7.95,8.08,3095965,25015397,6.5 +PUBM,2023-11-09,0.1537,12.1,13.96,15.09,13.67,14.96,1761383,26350289,6.5 +BE,2023-11-09,0.1505,10.03,11.54,12.1,10.815,10.87,15489768,168373778,2.9 +FTCI,2023-11-09,0.1447,4.23,4.842,5.5,3.8,4.496,1411534,6346256,14.7 +METC,2023-11-09,0.1391,10.64,12.12,15.02,11.05,14.54,4730151,68776395,14.1 +RCEL,2023-11-10,0.2146,9.88,12.0,12.51,10.78,11.29,625409,7060867,4.8 +BLNK,2023-11-10,0.1667,2.46,2.87,3.4,2.73,3.07,20624054,63315845,12.3 +INDI,2023-11-10,0.166,4.94,5.76,6.1,5.42,5.64,8610535,48563417,4.5 +ACB,2023-11-10,0.1483,4.45,5.11,5.2,4.611,4.7,1704748,8012315,2.4 +VERA,2023-11-10,0.1295,11.51,13.0,13.88,11.73,12.14,1113091,13512924,1.8 +FIGS,2023-11-10,0.1229,5.86,6.58,6.61,6.05,6.15,6914934,42526844,3.3 +NVTS,2023-11-10,0.1213,5.69,6.38,6.48,5.965,6.26,3546255,22199556,2.3 +OUST,2023-11-10,0.1189,4.12,4.61,5.19,4.56,4.93,2189265,10793076,5.9 +TENX,2023-11-13,1.004,12.48,25.01,57.58,22.97,49.6,3932903,195071988,1460.7 +TE,2023-11-13,0.16,1.5,1.74,1.88,1.53,1.75,12843763,22476585,5.8 +MNTK,2023-11-13,0.1298,6.47,7.31,8.78,7.26,8.695,1350526,11742823,6.8 +RLX,2023-11-13,0.1281,1.554,1.753,1.895,1.753,1.782,24871882,44321693,6.0 +OSPN,2023-11-13,0.083,9.01,9.758,9.891,9.323,9.436,814828,7688717,2.8 +HMY,2023-11-13,0.0828,4.309,4.666,4.704,4.55,4.56,4587317,20918165,1.1 +TTI,2023-11-13,0.0721,4.3,4.61,5.0495,4.6,4.82,4586988,22109282,2.9 +BCDA,2023-11-14,2.2331,5.985,19.35,23.25,14.87,16.05,9057830,145378171,2872.8 +SPCB,2023-11-14,0.1984,7.46,8.94,12.6,8.11,8.4,1677445,14090538,34.0 +PSFE,2023-11-14,0.1271,10.7,12.06,13.59,11.1301,13.59,2385478,32418646,6.3 +PCT,2023-11-14,0.1209,3.06,3.43,4.1,3.365,3.89,8591896,33422475,4.8 +OPEN,2023-11-14,0.1084,2.03,2.25,2.37,2.22,2.29,26993864,61815948,1.8 +LWAY,2023-11-14,0.1066,9.38,10.38,13.1,9.67,13.0,653923,8500999,7.9 +TWST,2023-11-14,0.1037,17.26,19.05,19.92,18.59,19.67,1534106,30175865,1.8 +PACB,2023-11-14,0.0994,6.44,7.08,7.425,7.0,7.22,6987951,50453006,1.6 +CMMB,2023-11-15,0.6721,2.44,4.08,4.32,2.68,3.268,19202573,62754008,4290.1 +HSCS,2023-11-15,0.2407,17.99,22.32,24.5,14.49,15.0,688565,10328475,648.1 +ARCT,2023-11-15,0.1845,19.4,22.98,26.5,22.46,22.52,1653921,37246300,5.1 +CRMD,2023-11-15,0.1725,3.13,3.67,4.34,2.57,3.33,13846581,46109114,28.9 +SLDB,2023-11-15,0.169,2.13,2.49,3.06,2.45,2.725,12943761,35271748,429.9 +NEGG,2023-11-15,0.1354,15.29,17.36,21.4,17.02,20.0,258523,5170460,20.5 +ASTS,2023-11-15,0.0902,3.77,4.11,4.9399,4.1,4.66,8152481,37990561,5.1 +AIFF,2023-11-16,0.7152,4.74,8.13,8.94,7.02,8.37,8159006,68290880,1292.7 +M,2023-11-16,0.1263,11.24,12.66,12.87,11.68,11.89,53446046,635473486,5.7 +CISO,2023-11-16,0.0971,2.4,2.633,2.895,1.902,2.078,2710772,5632984,31.9 +UTI,2023-11-16,0.0774,9.69,10.44,11.45,9.98,11.25,747511,8409498,11.0 +GAP,2023-11-17,0.199,12.61,15.12,16.74,14.82,16.47,69084585,1137823114,9.4 +OPTX,2023-11-17,0.1262,5.15,5.8,10.43,5.7,8.96,12455731,111603349,271.9 +KOD,2023-11-17,0.0938,1.92,2.1,2.59,2.08,2.49,5172135,12878616,10.6 +CHRS,2023-11-17,0.0877,1.71,1.86,2.15,1.81,2.13,8355300,17796789,2.7 +TWST,2023-11-17,0.0802,19.07,20.6,24.88,20.59,24.01,4295804,103142254,5.0 +MANU,2023-11-17,0.0754,18.43,19.82,20.35,19.28,19.88,3763657,74821501,4.5 +YPF,2023-11-20,0.2628,10.73,13.55,15.38,13.34,15.01,24596282,369190192,14.3 +SUPV,2023-11-20,0.2388,1.981,2.454,2.522,2.227,2.454,2576027,6321570,6.1 +BBAR,2023-11-20,0.1835,3.645,4.314,4.521,4.099,4.323,3449587,14912564,6.4 +GGAL,2023-11-20,0.1835,11.06,13.09,13.99,12.84,12.97,4654089,60363534,6.1 +CEPU,2023-11-20,0.1802,5.611,6.622,7.014,6.376,6.74,1162604,7835950,5.0 +BMA,2023-11-20,0.1781,16.84,19.84,21.66,19.13,20.24,1605836,32502120,8.0 +MIRA,2023-11-20,0.1747,3.32,3.9,6.4,3.7013,4.65,4275930,19883074,371.7 +TEO,2023-11-20,0.1574,5.139,5.948,6.448,5.9,6.285,1061184,6669541,23.6 +ANGH,2023-11-21,0.3544,15.8,21.4,34.9,21.0,31.1,5778934,179724847,2663.1 +ABVC,2023-11-21,0.1243,1.69,1.9,2.22,1.72,1.78,16503477,29376189,39.3 +MCRB,2023-11-21,0.1031,19.4,21.4,23.6,20.6,20.9,275881,5765912,1.9 +AORT,2023-11-21,0.0984,14.12,15.51,16.7189,15.25,15.87,745077,11824371,3.9 +HSCS,2023-11-22,0.2341,19.61,24.2,27.39,21.5,23.6,576606,13607901,169.9 +VFS,2023-11-22,0.0851,5.99,6.5,6.58,6.14,6.18,7040373,43509505,2.1 +BGLC,2023-11-24,1.193,3.42,7.5,9.2,6.046,9.0,8404180,75637620,1308.2 +VS,2023-11-24,0.4948,2.688,4.018,6.63,3.683,3.808,8023826,30554729,158.0 +MTC,2023-11-24,0.2548,7.842,9.84,11.12,9.04,11.04,760881,8400126,19.4 +BDRY,2023-11-24,0.0967,6.62,7.26,7.6,7.02,7.52,870321,6544813,3.6 +RDHL,2023-11-27,1.2274,7.888,17.57,28.5,16.65,25.0,7730300,193257500,462.9 +SNEX,2023-11-27,0.4707,18.57,27.31,28.39,27.31,27.43,287529,7886920,1.0 +TGS,2023-11-27,0.0897,13.27,14.46,14.9,13.68,14.04,907277,12738169,5.4 +SUPV,2023-11-27,0.0789,2.928,3.159,3.377,3.013,3.159,3599572,11371047,7.7 +TIGR,2023-11-27,0.0782,4.86,5.24,5.5,4.36,4.46,9271781,41352143,10.8 +EONR,2023-11-28,0.7341,1.73,3.0,4.15,2.61,3.64,45994558,167420191,2227.4 +OIO,2023-11-28,0.4754,2.684,3.96,4.5,3.09,3.9,3854411,15032202,1324.5 +RNA,2023-11-28,0.2532,6.16,7.72,8.0,6.6,7.08,18875811,133640741,31.0 +CWEN,2023-11-28,0.0789,19.51,21.05,21.98,20.86,21.52,6951078,149587198,8.1 +VVOS,2023-11-29,1.7175,4.39,11.93,48.79,9.87,41.0,46864355,1921438555,1322.0 +CPHI,2023-11-29,0.9038,4.99,9.5,11.57,5.57,6.495,2134167,13861414,170.3 +BMEA,2023-11-29,0.2193,9.94,12.12,15.295,11.68,12.75,5443719,69407417,14.3 +GME,2023-11-29,0.1483,13.49,15.49,17.56,14.7,16.25,61172837,994058601,17.7 +VTVT,2023-11-29,0.1265,9.41,10.6,16.2,10.3197,14.87,712593,10596257,815.3 +COCH,2023-11-29,0.0847,1.77,1.92,3.48,1.81,2.76,2982900,8232803,251.6 +QS,2023-11-29,0.0838,5.73,6.21,6.825,6.13,6.31,20398919,128717178,4.0 +SNGX,2023-11-30,0.3241,6.646,8.8,32.0,8.49,15.68,6168106,96715902,2577.0 +REX,2023-11-30,0.3024,18.45,24.03,25.59,23.03,24.51,580898,14237809,4.2 +VFS,2023-11-30,0.1481,7.56,8.68,9.3,8.27,8.45,19409107,164006954,5.6 +BGLC,2023-11-30,0.1009,10.9,12.0,16.0,8.1,9.5,871944,8283468,135.7 +BDRY,2023-11-30,0.0884,8.71,9.48,9.48,8.9,9.33,840413,7841053,3.2 +OTLY,2023-11-30,0.0805,19.99,21.6,22.4,18.0,18.2,409498,7452863,1.8 +BMEA,2023-11-30,0.0792,12.75,13.76,15.2,12.57,15.07,3379066,50922524,8.8 +BCYC,2023-11-30,0.0725,13.52,14.5,15.36,14.31,14.4,693997,9993556,1.4 +ALT,2023-12-01,0.8165,3.16,5.74,5.87,3.52,3.57,101190426,361249820,84.6 +PATH,2023-12-01,0.1442,19.76,22.61,25.47,22.13,25.04,53677044,1344073181,9.7 +GCT,2023-12-01,0.1276,9.72,10.96,12.27,9.9,11.8,2494806,29438710,6.5 +EYPT,2023-12-04,2.3283,6.61,22.0,22.44,17.31,18.34,20831338,382046738,36.8 +ATHE,2023-12-04,1.5602,1.66,4.25,5.41,3.55,4.2,34694312,145716110,19712.7 +ANY,2023-12-04,0.2625,8.0,10.1,10.7,8.2,10.7,1117193,11953965,53.4 +ABSI,2023-12-04,0.1897,1.74,2.07,2.43,1.74,1.96,3605107,7066009,13.7 +KEEL,2023-12-04,0.1566,1.66,1.92,1.97,1.66,1.75,68648412,120134721,6.8 +CLSK,2023-12-04,0.1558,7.64,8.83,9.37,8.12,8.87,44827478,397619729,2.4 +BITX,2023-12-04,0.1491,15.22,17.49,17.82,17.08,17.56,1225280,21515916,1.7 +ALT,2023-12-04,0.1485,3.57,4.1,5.37,4.06,4.63,52985073,245320887,43.5 +HSCS,2023-12-05,0.2665,18.95,24.0,24.42,19.23,19.88,454256,9030609,6.4 +TVTX,2023-12-05,0.1685,6.29,7.35,8.27,7.31,7.4,6106987,45191703,4.3 +SERA,2023-12-06,1.3857,2.1,5.01,9.86,4.11,5.49,78819468,432718879,9732.0 +PHR,2023-12-06,0.2312,14.75,18.16,19.035,17.38,17.88,2875386,51411901,5.2 +PHIO,2023-12-06,0.1964,10.08,12.06,18.81,11.16,14.31,2925431,41862917,762.5 +KMDA,2023-12-06,0.1571,4.634,5.362,6.08,5.362,5.601,2385353,13360362,172.4 +S,2023-12-06,0.144,20.0,22.88,24.39,22.3,23.32,25909037,604198742,6.7 +ALT,2023-12-06,0.1044,5.17,5.71,7.615,5.53,6.88,55072703,378900196,43.6 +ASPN,2023-12-06,0.0995,10.65,11.71,12.8,11.68,11.97,2448992,29314434,3.2 +ASLE,2023-12-07,0.1565,14.25,16.48,16.6899,14.92,14.95,1310106,19586084,4.2 +JBLU,2023-12-07,0.1205,4.73,5.3,5.5,5.15,5.45,39869161,217286927,2.8 +SMTC,2023-12-07,0.1078,16.7,18.5,20.48,18.03,19.42,9463077,183772955,6.2 +ERAS,2023-12-07,0.0983,1.73,1.9,1.95,1.81,1.85,4802609,8884826,9.0 +VTGN,2023-12-07,0.0926,4.43,4.84,5.18,4.56,4.87,2005358,9766093,4.7 +MBI,2023-12-08,0.6952,3.219,5.457,5.893,5.134,5.854,11521081,67444408,29.2 +XCUR,2023-12-08,0.5415,2.011,3.1,3.3,2.325,2.586,4988231,12899565,1485.9 +CURV,2023-12-08,0.2651,4.15,5.25,5.9319,4.5,4.84,1759405,8515520,13.0 +VIRC,2023-12-08,0.1398,6.803,7.754,8.491,7.501,8.258,675086,5574860,9.3 +MOMO,2023-12-08,0.1109,5.453,6.058,6.374,5.693,5.975,4684646,27990759,6.8 +ALXO,2023-12-08,0.1049,9.25,10.22,13.5,10.15,12.26,3850931,47212414,12.2 +KTTA,2023-12-11,1.7674,6.002,16.61,17.4,7.9,8.848,4975150,44020127,4649.7 +INVZ,2023-12-11,0.2167,1.8,2.19,2.39,2.03,2.3,29105273,66942127,12.0 +M,2023-12-11,0.1464,15.51,17.78,18.94,17.4,18.52,67584643,1251667588,4.9 +SLNH,2023-12-11,0.0949,3.69,4.04,4.04,3.42,3.98,1762432,7014479,37.3 +SYRE,2023-12-11,0.0857,19.61,21.29,21.29,18.03,18.05,285117,5146361,5.6 +ELTK,2023-12-11,0.0777,12.1,13.04,15.09,12.88,14.44,410990,5934695,7.2 +GITS,2023-12-12,0.1438,12.59,14.4,22.0,13.35,17.0,725906,12340402,27.3 +TDAY,2023-12-12,0.0899,1.89,2.06,2.2499,2.02,2.21,2514558,5557173,2.7 +STTK,2023-12-13,1.0758,2.11,4.38,5.4199,3.67,4.86,57197880,277981696,1990.6 +CCCC,2023-12-13,0.359,2.34,3.18,6.03,3.16,5.51,225851887,1244443897,688.8 +GITS,2023-12-13,0.1412,17.0,19.4,22.0,17.27,21.8,348043,7587337,12.5 +LFMD,2023-12-13,0.1173,8.1,9.05,9.11,7.2101,7.58,2566166,19451538,5.0 +BLND,2023-12-13,0.1143,1.75,1.95,2.02,1.85,1.88,3535459,6646662,5.2 +SKE,2023-12-13,0.0887,3.72,4.05,4.4833,3.9,4.43,1283825,5687344,8.1 +HCAT,2023-12-13,0.0858,7.34,7.97,8.26,7.48,8.23,1486837,12236668,2.9 +GOTU,2023-12-13,0.0756,3.44,3.7,3.89,3.38,3.69,21126842,77958046,11.1 +GOTU,2023-12-14,0.1734,3.69,4.33,4.77,4.05,4.77,27865807,132919899,13.5 +ALEC,2023-12-14,0.1414,6.9,7.876,8.3999,7.56,8.0,2096691,16773528,3.2 +GFI,2023-12-14,0.1072,13.52,14.97,15.32,14.64,14.95,10634513,158985969,2.8 +CDXS,2023-12-14,0.1005,2.09,2.3,3.02,2.3,2.95,5957570,17574831,8.5 +OPEN,2023-12-14,0.0998,4.11,4.52,4.89,4.43,4.56,47098223,214767896,2.5 +RUN,2023-12-14,0.0862,14.96,16.25,18.54,16.25,17.94,43830808,786324695,3.9 +OPRA,2023-12-14,0.084,10.71,11.61,11.84,10.73,10.89,1818196,19800154,4.5 +AVTX,2023-12-14,0.0798,14.16,15.29,22.08,14.98,16.18,668195,10811395,8.9 +BATL,2023-12-15,0.8142,5.275,9.57,9.679,9.57,9.59,1051911,10087826,57.5 +GNS,2023-12-15,0.1525,5.9,6.8,7.799,6.5,7.57,1365365,10335813,10.4 +CCCC,2023-12-15,0.1138,5.01,5.58,6.42,4.89,4.95,85393911,422699859,260.4 +GOTU,2023-12-15,0.0922,4.77,5.21,5.26,4.135,4.63,34288858,158757412,15.0 +BMRA,2023-12-18,0.5253,7.92,12.08,17.04,10.08,13.2,8401756,110903179,2813.7 +NRXP,2023-12-18,0.2938,3.39,4.386,4.77,3.7,4.21,2471807,10406307,88.2 +ARQT,2023-12-18,0.2541,2.44,3.06,3.4295,2.46,2.54,45228000,114879120,18.4 +IVVD,2023-12-18,0.2393,1.63,2.02,4.71,2.02,3.59,69260317,248644538,929.5 +SFWL,2023-12-18,0.0998,9.92,10.91,10.925,3.55,4.79,1576754,7552651,9.3 +CLF,2023-12-18,0.0834,18.7,20.26,21.165,19.9,20.5,43017459,881857909,5.9 +NIO,2023-12-18,0.0764,7.98,8.59,8.64,8.23,8.35,131952971,1101807307,2.8 +ZIM,2023-12-18,0.0757,6.509,7.002,7.393,6.394,6.597,13318144,87859795,3.7 +IFBD,2023-12-19,0.1808,10.84,12.8,15.84,9.76,9.92,1972415,19566356,323.1 +ALDX,2023-12-19,0.1622,2.96,3.44,3.58,3.055,3.51,10765573,37787161,8.9 +CIFR,2023-12-19,0.0764,3.14,3.38,3.855,3.32,3.59,20159083,72371107,6.6 +SFWL,2023-12-19,0.0752,4.79,5.15,5.53,2.24,3.28,6509153,21350021,38.3 +PASG,2023-12-20,0.1858,15.18,18.0,18.05,15.22,16.3,811191,13222413,62.3 +NCL,2023-12-20,0.1667,14.4,16.8,17.2,10.48,13.2,994919,13132930,44.1 +ANY,2023-12-20,0.1538,19.5,22.5,28.5,21.6,25.7,1496495,38459921,46.7 +WULF,2023-12-20,0.1237,1.98,2.225,2.27,1.94,1.95,37382219,72895327,3.5 +CCO,2023-12-20,0.1012,1.68,1.85,1.95,1.77,1.8,5251276,9452296,1.6 +MGNX,2023-12-20,0.0921,9.23,10.08,10.7365,9.82,9.83,1461894,14370418,2.6 +BITX,2023-12-20,0.0893,17.47,19.03,19.3,18.4,18.57,1223080,22712595,1.5 +HUT,2023-12-20,0.0884,12.1,13.17,13.3,11.89,12.15,10180840,123697206,2.9 +ANNX,2023-12-21,0.25,2.88,3.6,4.04,3.27,3.73,13569626,50614704,61.1 +SFWL,2023-12-21,0.2397,3.63,4.5,5.1,2.45,3.32,10521396,34931034,61.9 +MGTX,2023-12-21,0.1853,4.91,5.82,6.59,5.71,6.51,2421270,15762467,10.0 +ABAT,2023-12-21,0.1582,5.31,6.15,6.15,5.5,5.62,953912,5360985,2.5 +CAN,2023-12-21,0.1323,2.57,2.91,2.91,2.42,2.58,40747060,105127414,6.1 +ATRA,2023-12-21,0.1199,13.84,15.5,17.25,11.06,11.15,781885,8718017,5.0 +CIFR,2023-12-21,0.094,3.83,4.19,4.31,3.98,4.05,16331360,66142008,4.8 +WULF,2023-12-21,0.0718,1.95,2.09,2.125,1.98,2.08,22153311,46078886,1.9 +RMCO,2023-12-22,1.2063,1.978,4.364,4.722,2.475,2.545,37833598,96286506,877.3 +SNTI,2023-12-22,0.2806,4.39,5.622,6.0,4.795,5.2,3084758,16040741,145.3 +AISP,2023-12-22,0.1556,6.49,7.5,7.71,3.89,4.25,1372062,5831263,1569.9 +RKLB,2023-12-22,0.149,4.43,5.09,5.76,4.94,5.44,51904987,282363129,13.4 +NCL,2023-12-22,0.1081,14.8,16.4,16.72,14.4,16.32,424834,6933290,18.8 +SEZL,2023-12-22,0.0773,2.912,3.137,4.58,2.875,4.068,1616886,6577492,10.2 +ARBB,2023-12-26,1.3684,14.25,33.75,68.1,32.31,38.85,6629136,257541933,12947.5 +SSYS,2023-12-26,0.0732,13.11,14.07,14.93,14.05,14.82,2343791,34734982,4.2 +BLNK,2023-12-26,0.0724,3.59,3.85,4.48,3.76,4.12,30496327,125644867,5.5 +CHRS,2023-12-27,0.3761,2.18,3.0,3.05,2.56,2.69,54476630,146542134,17.5 +LIDR,2023-12-27,0.3198,2.22,2.93,4.08,2.5666,2.65,6346797,16819012,201.3 +OKUR,2023-12-27,0.1429,14.0,16.0,17.0,15.7,16.6,525835,8728861,14.7 +CIFR,2023-12-27,0.1245,4.98,5.6,5.6,5.06,5.27,27515500,145006685,6.4 +WULF,2023-12-27,0.1171,2.22,2.48,2.9,2.43,2.88,52540637,151317034,4.1 +EWTX,2023-12-27,0.1029,9.52,10.5,12.3999,10.2,12.1,2113084,25568316,4.8 +BUR,2023-12-27,0.1011,13.06,14.38,15.71,14.17,15.46,5618123,86856181,9.5 +HIVE,2023-12-27,0.0938,5.12,5.6,5.74,5.26,5.72,10430545,59662717,3.5 +XMAX,2023-12-28,1.9419,1.55,4.56,6.38,3.41,4.7,47246174,222057017,8594.9 +SNES,2023-12-28,0.7971,8.625,15.5,21.4,12.1,17.3,7875838,136251997,168.2 +YCBD,2023-12-29,0.6205,6.319,10.24,13.84,8.24,8.32,5171941,43030549,1891.4 +HURA,2023-12-29,0.4981,6.755,10.12,10.32,5.786,5.936,3538306,21003384,171.9 +SNTG,2023-12-29,0.2655,1.77,2.24,8.45,2.1096,5.0,48332339,241661695,14427.6 +IFBD,2023-12-29,0.1735,7.84,9.2,12.32,8.72,10.48,769945,8069023,52.2 +GRFS,2023-12-29,0.1083,10.25,11.36,11.84,11.15,11.27,2654998,29921827,3.4 +SNGX,2024-01-02,0.3465,12.12,16.32,19.2,13.12,13.6,3398484,46219382,204.1 +VYGR,2024-01-02,0.2476,8.44,10.53,11.72,8.9,9.0,12028476,108256284,77.0 +WULF,2024-01-02,0.2208,2.4,2.93,2.94,2.23,2.3,37024035,85155280,2.0 +BITX,2024-01-02,0.1839,17.07,20.21,20.29,19.24,19.29,1088309,20993480,1.3 +SNES,2024-01-02,0.1811,12.7,15.0,17.8,14.2,16.0,1318740,21099840,25.3 +CLSK,2024-01-02,0.1423,11.03,12.5999,12.5999,10.75,10.88,24954602,271506069,0.9 +BTBT,2024-01-02,0.1418,4.23,4.83,4.8492,3.76,3.81,17879388,68120468,2.4 +KEEL,2024-01-02,0.1375,2.91,3.31,3.32,2.81,2.84,28786505,81753674,0.8 +NTRP,2024-01-03,0.6172,2.9,4.69,5.7,3.75,4.0,14056817,56227268,520.0 +DYN,2024-01-03,0.3783,13.06,18.0,18.7272,12.33,14.77,20947772,309398592,30.3 +HLP,2024-01-03,0.1313,2.17,2.455,3.42,2.431,3.37,2851692,9610202,5.3 +SIDU,2024-01-03,0.1176,6.97,7.79,13.48,7.2201,11.64,15115847,175948459,225.2 +INO,2024-01-04,0.1333,6.247,7.08,7.32,6.6,6.87,939864,6456865,6.2 +HURA,2024-01-04,0.1157,4.925,5.495,6.265,5.257,5.603,1279480,7168926,40.9 +QS,2024-01-04,0.1,6.5,7.15,10.03,7.045,9.3,110024429,1023227189,20.0 +AIMD,2024-01-05,1.3376,8.65,20.22,21.45,12.6,13.7,6105395,83643911,2989.2 +IMUX,2024-01-05,0.1888,14.3,17.0,17.3,13.4,13.9,1848145,25689215,70.4 +AXGN,2024-01-05,0.1007,6.75,7.43,8.74,7.3388,8.55,1417173,12116829,4.0 +BLNK,2024-01-08,0.1206,2.82,3.16,3.24,2.98,3.03,18333497,55550495,2.4 +LFMD,2024-01-08,0.1193,5.45,6.1,6.1,5.68,5.83,2452620,14298774,3.3 +SNGX,2024-01-08,0.118,12.88,14.4,15.68,13.02,15.03,437587,6576932,19.7 +SLDB,2024-01-08,0.1175,5.53,6.18,9.0399,5.83,5.95,4534508,26980322,53.3 +HRTX,2024-01-08,0.1073,1.77,1.96,2.12,1.77,2.09,13279921,27755034,6.1 +HERE,2024-01-08,0.0944,1.599,1.75,2.744,1.703,1.892,3845559,7275797,105.5 +TMCI,2024-01-08,0.0723,11.89,12.75,12.88,12.24,12.63,2548812,32191495,3.3 +SNTG,2024-01-09,1.1362,2.13,4.55,4.66,3.25,3.47,28164077,97729347,4729.1 +BTBD,2024-01-09,0.555,1.8971,2.95,3.05,2.43,2.57,9500148,24415380,2937.6 +DTIL,2024-01-09,0.0997,11.94,13.13,15.0,12.75,13.15,1180548,15524206,54.4 +BARK,2024-01-09,0.0911,15.48,16.89,20.3,15.62,19.2,344950,6623040,8.7 +MXCT,2024-01-09,0.085,4.59,4.98,5.33,4.87,5.22,2111097,11019926,2.6 +FBIO,2024-01-09,0.0708,2.26,2.42,2.44,2.11,2.12,2496695,5292993,4.0 +CENX,2024-01-09,0.0704,10.65,11.4,12.5699,11.18,11.69,3991974,46666176,2.4 +NVNI,2024-01-10,0.3672,19.31,26.4,30.6,19.7,23.9,1562689,37348267,1056.9 +XCUR,2024-01-10,0.207,3.101,3.743,4.0,3.43,3.917,1700579,6661167,109.0 +LAES,2024-01-10,0.1562,1.6,1.85,2.29,1.57,1.95,43927491,85658607,129.3 +AMRN,2024-01-10,0.1535,19.42,22.4,26.2,22.0,25.8,790330,20390514,8.8 +XERS,2024-01-10,0.1535,2.41,2.78,2.81,2.62,2.8,11397637,31913383,8.2 +PENG,2024-01-10,0.1354,18.47,20.97,21.76,20.27,20.38,4541933,92564594,7.8 +GDRX,2024-01-10,0.1243,5.71,6.42,6.68,6.16,6.47,7810919,50536645,5.4 +WULF,2024-01-11,0.1509,2.12,2.44,2.46,1.84,1.92,41924488,80495016,1.9 +CAN,2024-01-11,0.1402,2.14,2.44,2.63,2.0602,2.13,50691349,107972573,2.3 +SAIH,2024-01-11,0.125,15.6,17.55,20.7,15.9,18.15,322914,5860889,87.3 +BTDR,2024-01-11,0.1243,7.64,8.59,8.8,6.82,7.19,2713427,19509540,1.6 +SGMT,2024-01-11,0.1224,5.23,5.87,7.86,5.8,7.12,757837,5395799,8.2 +BTBT,2024-01-11,0.1214,3.46,3.88,3.9,3.13,3.16,17455415,55159111,1.9 +MPU,2024-01-11,0.1142,2.19,2.44,2.97,2.3,2.83,1767185,5001133,31.4 +HUT,2024-01-11,0.1065,12.11,13.4,13.6,11.0222,11.24,9973100,112097644,1.3 +MDAI,2024-01-12,0.1608,2.55,2.96,3.7,2.47,2.62,24211157,63433231,255.0 +WIT,2024-01-12,0.0968,2.531,2.776,3.012,2.76,2.96,30506928,90300506,8.7 +ZIM,2024-01-12,0.0935,9.264,10.13,10.38,8.913,9.088,20186782,183457474,2.6 +PHUN,2024-01-16,0.8445,3.795,7.0,24.5,6.66,21.01,32508521,683004026,312.0 +MCHB,2024-01-16,0.2679,9.851,12.49,14.47,12.49,13.6,5538021,75317085,30.1 +PCT,2024-01-16,0.1333,2.4,2.72,3.19,2.56,2.92,9797630,28609079,3.1 +LAES,2024-01-16,0.1327,2.26,2.56,3.27,2.45,2.6,52926491,137608876,132.9 +PGY,2024-01-16,0.0952,12.6,13.8,15.24,12.24,13.92,2212704,30800839,3.2 +UROY,2024-01-16,0.074,3.11,3.34,3.63,3.27,3.52,7767975,27343272,7.2 +AGEN,2024-01-16,0.0711,12.8,13.71,14.0,12.0,12.26,578252,7089369,1.2 +BFRG,2024-01-17,0.2197,2.64,3.22,4.18,3.18,3.19,62278619,198668794,1093.3 +HURA,2024-01-17,0.1078,4.442,4.921,5.95,4.498,5.53,1354410,7489887,24.6 +RYM,2024-01-18,1.0593,17.7,36.45,42.0,18.6,20.55,4943424,101587363,3625.5 +CELU,2024-01-18,0.4695,1.883,2.767,3.34,2.535,2.89,9473873,27379492,155.4 +PHUN,2024-01-18,0.353,8.13,11.0,14.49,10.0,12.11,12478173,151110675,118.9 +LXEO,2024-01-18,0.1293,17.33,19.57,22.33,14.01,15.07,429760,6476483,5.6 +LAES,2024-01-18,0.0995,2.11,2.32,2.38,2.12,2.23,5934865,13234748,7.3 +HTZ,2024-01-18,0.0754,8.36,8.99,9.265,8.7,8.99,14191186,127578762,3.2 +RJET,2024-01-19,0.7496,9.602,16.8,18.75,13.2,14.4,4168379,60024657,131.2 +EWTX,2024-01-19,0.2704,9.69,12.31,13.75,11.91,13.04,8022421,104612369,11.9 +SGMT,2024-01-22,1.1994,6.82,15.0,20.71,12.1,18.42,36182888,666488796,381.6 +DJTWW,2024-01-22,0.2618,11.0,13.88,18.7,12.96,18.5,1519200,28105200,68.8 +NCL,2024-01-22,0.1985,10.88,13.04,13.12,9.36,11.2,1174493,13154321,16.0 +BFRG,2024-01-22,0.1759,4.89,5.75,7.67,5.58,6.71,27913547,187299900,489.0 +DNTH,2024-01-22,0.1372,11.95,13.59,16.83,13.59,16.4,312787,5129706,10.9 +AGEN,2024-01-22,0.1246,11.56,13.0,13.2,11.6,11.77,738126,8687743,1.6 +RUM,2024-01-22,0.1198,3.59,4.02,4.97,3.8,4.89,23671712,115754671,15.6 +CHRS,2024-01-22,0.1189,2.44,2.73,2.97,2.46,2.58,22507777,58070064,4.5 +EVAX,2024-01-23,0.5156,18.31,27.75,27.85,20.75,24.95,252196,6292290,284.5 +ENSC,2024-01-23,0.307,17.1,22.35,28.65,20.55,20.85,2763054,57609675,624.5 +PHUN,2024-01-23,0.243,17.94,22.3,24.01,18.77,21.5,11374756,244557254,101.8 +RUM,2024-01-23,0.2229,4.89,5.98,7.0199,5.13,6.5,89957924,584726506,59.3 +OTLK,2024-01-23,0.2059,6.8,8.2,9.122,7.64,8.876,1389406,12332367,25.7 +PLUG,2024-01-23,0.1831,2.84,3.36,3.82,3.12,3.72,158775816,590646035,4.9 +GDS,2024-01-23,0.1077,5.85,6.48,6.88,6.12,6.36,4015865,25540901,3.0 +YINN,2024-01-23,0.0982,13.44,14.76,15.33,14.75,15.24,15815211,241023815,2.3 +KURA,2024-01-24,0.3711,13.42,18.4,21.4,17.81,19.61,16113821,315992029,15.5 +TAL,2024-01-24,0.1194,10.89,12.19,12.655,11.21,11.3,10128680,114454084,1.5 +YINN,2024-01-24,0.1175,15.24,17.03,17.14,16.39,16.56,24565696,406807925,3.5 +BZUN,2024-01-24,0.08,2.25,2.43,2.67,2.32,2.64,3026351,7989566,4.8 +GOTU,2024-01-24,0.0725,3.31,3.55,3.62,3.3,3.36,6529210,21938145,1.4 +VERA,2024-01-25,0.3079,17.02,22.26,26.6657,20.48,25.31,11509158,291296788,23.0 +AMSC,2024-01-25,0.2892,9.75,12.57,13.8,11.0,13.25,13227916,175269887,28.3 +BFRG,2024-01-25,0.1027,7.4,8.16,8.35,6.5,6.63,1678887,11131020,27.7 +HKD,2024-01-25,0.0973,4.01,4.4,4.4,4.01,4.02,1482489,5959605,6.1 +HMY,2024-01-25,0.0854,5.524,5.996,6.131,5.919,5.996,6466897,38775514,1.7 +NOK,2024-01-25,0.0851,3.245,3.521,3.654,3.512,3.616,34506223,124774502,2.5 +CORZ,2024-01-25,0.0814,3.44,3.72,3.9072,3.09,3.21,2431702,7805763, +TIGR,2024-01-25,0.0777,3.99,4.3,4.3198,3.79,3.92,2131559,8355711,2.5 +CRBP,2024-01-26,0.9917,8.44,16.81,39.9597,16.25,29.49,33290727,981743539,1546.0 +EHTH,2024-01-26,0.1416,5.58,6.37,7.18,6.23,6.74,1994575,13443435,8.9 +PRCH,2024-01-26,0.1255,2.31,2.6,2.93,2.33,2.35,4603588,10818431,2.8 +CONL,2024-01-26,0.1089,18.92,20.98,21.05,19.06,20.24,361530,7317367,0.8 +HCAT,2024-01-26,0.0966,9.94,10.9,10.99,10.13,10.3,602567,6206440,1.1 +HUT,2024-01-26,0.0817,7.47,8.08,8.45,7.75,8.45,8638011,72991192,1.1 +PHUN,2024-01-26,0.0792,15.02,16.21,18.5,15.16,15.9,4486195,71330500,39.8 +PALI,2024-01-29,1.25,7.8,17.55,22.35,13.95,14.4,9068019,130579473,1587.3 +MDAI,2024-01-29,0.3653,2.71,3.7,3.7205,2.61,2.65,13446829,35634096,62.3 +SDEV,2024-01-29,0.1771,18.97,22.33,23.02,18.79,20.8,241988,5033350,35.7 +SOFI,2024-01-29,0.1575,7.62,8.82,9.45,8.62,9.16,286380920,2623249227,6.7 +ZIM,2024-01-29,0.1152,9.075,10.12,10.15,9.318,9.757,17666890,172375845,1.9 +SGMT,2024-01-29,0.0778,10.67,11.5,11.76,10.4406,10.6,1529964,16217618,13.4 +IMNM,2024-01-29,0.0755,17.48,18.8,19.32,17.7201,19.3,972975,18778417,2.5 +RYM,2024-01-30,0.5817,7.587,12.0,12.54,8.88,9.9,2105429,20843747,1204.5 +PXLW,2024-01-30,0.3649,17.76,24.24,29.28,19.92,20.1,6198242,124584664,441.4 +CRBP,2024-01-30,0.1284,18.62,21.01,26.27,19.34,25.16,2064027,51930919,95.9 +AAOI,2024-01-30,0.0742,15.965,17.15,18.04,16.63,16.69,4371576,72961603,1.6 +AHT,2024-01-31,0.194,13.4,16.0,19.2,15.8,16.6,677467,11245952,10.7 +TRIB,2024-01-31,0.1517,2.175,2.505,3.15,2.355,2.95,4551037,13425559,632.0 +PLUG,2024-01-31,0.0992,3.73,4.1,4.84,3.97,4.45,130249401,579609834,3.9 +DCGO,2024-01-31,0.0821,3.41,3.69,4.1,3.65,3.7,2649586,9803468,2.2 +ONMD,2024-01-31,0.08,1.5,1.62,2.13,1.46,1.89,14093913,26637495,153.6 +NMR,2024-01-31,0.071,4.701,5.035,5.332,4.989,5.179,17438983,90316492,3.1 +KPRX,2024-02-01,0.3699,4.972,6.811,8.982,5.535,7.65,8376132,64077409,1529.7 +PLUG,2024-02-01,0.1191,4.45,4.98,5.14,4.42,4.7,111112179,522227241,3.2 +PHUN,2024-02-01,0.0874,16.01,17.41,18.19,16.25,17.26,1969253,33989306,12.6 +GOOS,2024-02-01,0.0842,11.99,13.0,13.24,12.14,13.01,6113401,79535347,4.8 +PBI,2024-02-01,0.0778,3.791,4.086,4.178,3.542,3.828,4627794,17715195,3.5 +EZPW,2024-02-01,0.0733,8.6,9.23,9.8951,9.21,9.59,2716797,26054083,9.2 +FBL,2024-02-02,0.3274,17.96,23.84,26.25,23.32,25.27,887165,22418659,7.1 +KOPN,2024-02-02,0.2853,1.84,2.365,2.555,2.261,2.34,26099465,61072748,27.2 +TYRA,2024-02-02,0.1261,13.01,14.65,17.2,14.55,16.82,1175890,19778469,22.4 +LAES,2024-02-02,0.0858,2.33,2.53,2.54,2.1301,2.3,3855674,8868050,1.1 +COUR,2024-02-02,0.0711,19.14,20.5,20.5604,17.96,18.21,6545086,119186016,5.3 +FDMT,2024-02-05,0.7181,17.49,30.05,35.6134,28.7501,32.29,19637650,634099718,44.9 +WRAP,2024-02-05,0.7181,4.08,7.01,7.01,3.68,3.97,2083137,8270053,3.7 +BRTX,2024-02-05,0.1464,2.8,3.21,3.6699,2.6301,3.45,18867351,65092360,1551.1 +GRRR,2024-02-05,0.1259,5.551,6.25,12.8,6.12,10.9,12681733,138230889,358.8 +LUCK,2024-02-05,0.1186,10.96,12.26,13.08,11.38,12.69,5121510,64991961,4.5 +TENX,2024-02-06,1.3291,8.72,20.31,21.4599,10.7,11.45,9428121,107951985,369.8 +RYM,2024-02-06,0.2872,9.602,12.36,16.5,11.28,11.6,2778801,32234091,821.5 +PLTR,2024-02-06,0.2141,16.72,20.3,22.18,19.76,21.87,421271485,9213207376,10.6 +GRRR,2024-02-06,0.1284,10.9,12.3,13.0,8.894,10.7,5073008,54281185,143.5 +YINN,2024-02-06,0.1138,14.59,16.25,17.15,15.95,17.1,14164113,242206332,1.7 +JSPR,2024-02-06,0.1104,12.95,14.38,16.1858,13.96,14.83,408536,6058588,6.0 +AUDC,2024-02-06,0.1093,11.34,12.58,13.32,12.15,12.95,512275,6633961,6.5 +XPEV,2024-02-06,0.0877,7.87,8.56,8.825,8.34,8.79,17513456,153943278,1.4 +MAGN,2024-02-07,0.9766,16.64,32.89,35.23,25.48,34.32,5131172,176101823,325.2 +JSPR,2024-02-07,0.1416,14.83,16.93,17.99,15.5,17.5,474138,8297415,7.0 +BMR,2024-02-07,0.1167,1.8,2.01,2.35,1.82,2.2,3461086,7614389,63.5 +SONO,2024-02-07,0.1124,16.46,18.31,19.45,17.98,19.28,10313800,198850064,7.2 +OI,2024-02-07,0.0981,14.37,15.78,16.41,15.185,16.39,4444144,72839520,3.2 +GOGO,2024-02-07,0.0973,9.25,10.15,11.17,9.86,9.93,2265658,22497983,2.8 +GRRR,2024-02-07,0.0841,10.7,11.6,11.6,10.1,11.2,1496154,16756924,42.3 +OSCR,2024-02-08,0.2998,13.41,17.43,17.55,15.91,16.68,12698308,211807777,4.4 +MLYS,2024-02-08,0.1628,12.47,14.5,15.3,13.96,14.03,1401240,19659397,14.5 +REPL,2024-02-08,0.1456,7.42,8.5,8.5,7.515,7.72,1469315,11343111,1.0 +FHTX,2024-02-08,0.1442,3.12,3.57,5.79,3.5,4.85,1681285,8154232,13.1 +TNYA,2024-02-08,0.1335,4.42,5.01,5.74,4.63,5.13,1938023,9942057,5.9 +TAL,2024-02-08,0.098,12.04,13.22,13.44,12.775,13.21,19214494,253823465,2.9 +CONL,2024-02-08,0.0949,18.86,20.65,22.25,20.05,22.12,495351,10957164,1.2 +QNST,2024-02-08,0.0914,12.91,14.09,15.15,13.75,14.69,1225210,17998334,3.8 +CLSK,2024-02-09,0.24,10.5,13.02,14.59,11.95,13.95,89228018,1244730851,3.9 +CIFR,2024-02-09,0.1379,2.9,3.3,3.44,3.0701,3.35,12150699,40704841,1.6 +IREN,2024-02-09,0.1353,5.1,5.79,6.045,5.5,5.94,14629793,86900970,2.4 +CAN,2024-02-09,0.1234,1.54,1.73,1.8,1.5345,1.6,30025712,48041139,1.8 +WULF,2024-02-09,0.1034,2.03,2.24,2.275,2.11,2.2,32182505,70801511,1.7 +OCUL,2024-02-09,0.0934,5.03,5.5,5.85,5.21,5.68,3692307,20972303,2.7 +WGMI,2024-02-09,0.0922,15.07,16.46,17.28,15.93,16.94,1184971,20073408,2.6 +BTBT,2024-02-09,0.0912,2.74,2.99,3.06,2.84,3.04,12911576,39251191,1.8 +BMR,2024-02-12,1.8768,2.11,6.07,34.94,6.05,9.95,154937988,1541632980,2437.3 +SPCB,2024-02-12,0.3764,3.672,5.054,5.67,4.162,4.496,3580968,16100032,312.7 +LUNR,2024-02-12,0.2305,4.99,6.14,6.82,5.02,5.3,18753829,99395293,13.0 +JOBY,2024-02-12,0.0927,5.93,6.48,6.52,6.1,6.31,11900151,75089952,2.8 +VIAV,2024-02-12,0.0909,8.91,9.72,10.22,9.62,10.12,6618323,66977428,3.6 +NA,2024-02-12,0.08,12.5,13.5,47.5,12.5,21.4,760168,16267595,998.3 +CSPI,2024-02-12,0.0703,11.95,12.79,14.57,12.59,14.34,384608,5515278,6.7 +BGLC,2024-02-13,1.5791,4.11,10.6,33.9,9.5,15.7,7551831,118563746,1853.9 +BMR,2024-02-13,0.8201,9.95,18.11,21.7,13.0,14.06,47965846,674399794,690.3 +FAMI,2024-02-13,0.6,15.0,24.0,28.2,15.12,17.04,967387,16484274,601.6 +JBLU,2024-02-13,0.1203,6.07,6.8,7.4,6.65,7.38,63610046,469442139,3.3 +GTM,2024-02-13,0.1099,16.02,17.78,18.475,16.4902,18.32,35064270,642377426,5.4 +MGIH,2024-02-13,0.1061,3.11,3.44,3.9,2.42,2.67,3930864,10495406,231.8 +METC,2024-02-13,0.0736,15.49,16.63,17.39,15.53,16.6,1564124,25964458,1.7 +MANU,2024-02-13,0.073,19.6,21.03,21.55,20.6375,21.31,5806888,123744783,4.2 +PDC,2024-02-14,2.8681,2.275,8.8,13.0,6.15,6.55,11479803,75192709,579.2 +CCG,2024-02-14,1.0629,3.18,6.56,10.0,4.5501,4.75,8147493,38700591,873.9 +CNVS,2024-02-14,1.0516,1.55,3.18,3.93,2.11,2.35,32912648,77344722,716.4 +ENGN,2024-02-14,0.8045,7.62,13.75,16.81,12.08,16.5,867165,14308222,159.7 +COGT,2024-02-14,0.566,5.46,8.5503,9.4148,7.95,8.7,10747799,93505851,6.6 +HCSG,2024-02-14,0.2579,9.46,11.9,12.115,10.6596,12.03,1776010,21365400,3.5 +SNTG,2024-02-14,0.2511,2.27,2.84,3.74,2.3,2.67,3610398,9639762,44.5 +LRMR,2024-02-14,0.2403,8.74,10.84,12.9191,10.33,11.96,6092399,72865092,48.2 +CHNR,2024-02-15,1.5309,8.25,20.88,70.8,19.28,27.76,8025428,222785881,13993.8 +NNOX,2024-02-15,0.956,6.36,12.44,12.7,9.19,9.5,47077343,447234758,87.2 +SOUN,2024-02-15,0.7783,2.255,4.01,4.06,3.11,3.76,298289429,1121568253,42.8 +DJTWW,2024-02-15,0.3677,15.72,21.5,21.5,18.0,19.85,750570,14898814,4.8 +IFBD,2024-02-15,0.2903,7.44,9.6,15.59,7.76,11.76,2767863,32550068,100.2 +PLCE,2024-02-15,0.2801,14.515,18.58,38.03,18.39,26.29,17031550,447759449,37.4 +NMG,2024-02-15,0.2308,2.08,2.56,2.7399,2.31,2.53,6112817,15465427,111.2 +RXRX,2024-02-15,0.152,10.92,12.58,12.92,11.19,12.43,21767510,270570149,4.0 +GXAI,2024-02-16,3.7059,3.06,14.4,19.2,7.68,8.482,9005735,76386644,427.9 +CPOP,2024-02-16,1.9624,13.3,39.4,74.9,24.8,26.5,4304607,114072085,4596.5 +WAFU,2024-02-16,0.1704,2.23,2.61,2.8498,1.94,2.17,3523061,7645042,553.3 +LUNR,2024-02-16,0.1687,6.7,7.83,8.73,7.1701,7.32,15558157,113885709,8.3 +BMR,2024-02-16,0.165,10.0,11.65,15.7,10.0,13.57,23405360,317610735,292.5 +BLZE,2024-02-16,0.1288,8.15,9.2,11.83,9.0,11.83,3695824,43721597,19.0 +TOST,2024-02-16,0.112,19.2,21.35,22.66,20.96,22.42,31248575,700593051,3.8 +ANAB,2024-02-16,0.0837,15.17,16.44,16.69,15.63,16.06,598088,9605293,2.3 +MNPR,2024-02-20,3.174,1.713,7.15,7.8,2.983,3.345,20076488,67155852,2257.1 +SCNX,2024-02-20,1.327,2.859,6.653,8.659,4.735,5.663,12436449,70427610,2592.8 +MNY,2024-02-20,0.5429,2.1,3.24,3.46,2.58,3.06,15003748,45911468,135.6 +LUNR,2024-02-20,0.2964,7.32,9.49,12.05,8.77,10.99,64341117,707108875,32.5 +CISO,2024-02-20,0.29,1.5,1.935,3.597,1.68,2.205,7654364,16877872,180.7 +HURA,2024-02-20,0.2878,3.43,4.417,4.714,3.43,3.43,2397343,8222886,19.1 +IOVA,2024-02-20,0.2732,9.15,11.65,13.41,11.31,12.03,58801001,707376042,9.8 +QBTS,2024-02-20,0.2356,1.74,2.15,2.17,1.76,2.05,18119591,37145161,12.3 +SOGP,2024-02-21,0.6281,2.53,4.119,5.897,3.433,3.89,46900666,182443590,2018.8 +SEED,2024-02-21,0.3912,2.3001,3.2,4.5758,2.71,3.78,16616589,62810706,636.6 +LUNR,2024-02-21,0.1729,10.99,12.89,13.25,8.0,9.32,36044418,335933975,17.2 +EBS,2024-02-21,0.1184,1.52,1.7,3.25,1.66,2.71,76155055,206380199,60.6 +UNG,2024-02-21,0.1178,14.77,16.51,16.69,16.0801,16.62,12029352,199927830,1.5 +NEO,2024-02-21,0.1156,14.7,16.4,16.5,15.09,16.48,4095290,67490379,4.5 +CSTM,2024-02-21,0.0953,18.57,20.34,20.79,19.205,19.49,1996460,38911005,3.0 +BLCO,2024-02-21,0.0925,14.59,15.94,16.63,15.2,16.6,1478757,24547366,4.0 +MNPR,2024-02-22,0.3688,2.85,3.901,6.85,3.65,5.6,30666525,171732540,2867.6 +ROOT,2024-02-22,0.3426,8.67,11.64,14.0,11.51,13.29,7277321,96715596,90.9 +NXXT,2024-02-22,0.2901,3.488,4.5,5.475,2.825,3.125,2462103,7694071,2543.5 +RELY,2024-02-22,0.2465,17.69,22.05,22.08,20.1503,20.87,5912362,123390994,4.8 +NVDX,2024-02-22,0.2272,5.018,6.158,6.655,6.009,6.572,12795180,84089922,3.5 +RILY,2024-02-22,0.2269,14.63,17.95,19.14,15.69,15.93,4350256,69299578,4.4 +NVDL,2024-02-22,0.2206,8.169,9.971,10.82,9.785,10.81,64293894,695016994,3.9 +OCUL,2024-02-22,0.2074,7.52,9.08,9.91,8.83,9.7,11046587,107151893,7.7 +LUNR,2024-02-23,0.401,8.28,11.6,11.85,9.34,9.59,98812869,947615413,42.7 +AXTI,2024-02-23,0.386,2.28,3.16,4.85,3.15,3.86,103105619,397987689,934.1 +MRVI,2024-02-23,0.3601,5.11,6.95,8.62,6.77,8.36,25865152,216232670,13.2 +CVNA,2024-02-23,0.2948,10.48,13.57,15.27,13.29,13.85,195305840,2704985884,6.4 +NXDR,2024-02-23,0.2384,1.72,2.13,2.15,1.98,2.0,10029246,20058492,8.2 +FLNC,2024-02-23,0.128,14.725,16.61,16.66,14.205,14.41,5794918,83504768,3.0 +MNPR,2024-02-23,0.125,5.6,6.3,8.65,5.9,6.5,12228594,79485861,1143.5 +INOD,2024-02-23,0.1085,8.48,9.4,9.4,6.85,7.07,2016324,14255410,4.3 +IBRX,2024-02-26,0.16,3.5,4.06,4.49,3.75,4.19,10418948,43655392,3.1 +ALT,2024-02-26,0.1359,9.2,10.45,11.97,10.09,11.32,17659301,199903287,4.2 +MNPR,2024-02-26,0.1231,6.5,7.3,7.4,4.999,6.75,1377479,9297983,128.8 +MIST,2024-02-26,0.1176,1.7,1.9,2.4,1.9,2.11,3210856,6774906,21.5 +ALVO,2024-02-26,0.1135,16.03,17.85,18.0,17.02,17.27,1819147,31416668,6.6 +WEAV,2024-02-26,0.1053,10.64,11.76,12.884,11.47,12.74,1165287,14845756,2.6 +JANX,2024-02-27,1.3702,15.1,35.79,52.0,34.25,49.75,15491597,770706950,191.9 +GPUS,2024-02-27,0.9597,13.14,25.75,27.6,14.87,15.65,3348195,52399251,61.1 +SOUN,2024-02-27,0.2383,5.75,7.12,7.9094,6.5,6.86,301330136,2067124732,35.4 +PUBM,2024-02-27,0.2366,16.57,20.49,21.8299,19.1,20.48,3941153,80714813,12.9 +PYXS,2024-02-27,0.2301,4.78,5.88,6.85,5.0568,6.37,5352048,34092545,8.6 +HIMS,2024-02-27,0.2029,10.25,12.33,13.915,11.38,13.43,34615663,464888354,14.3 +DNLI,2024-02-27,0.1806,16.89,19.94,23.52,18.665,23.35,5089751,118845685,5.1 +EVER,2024-02-27,0.1797,17.14,20.22,20.34,16.44,17.63,1303302,22977214,5.6 +VTVT,2024-02-28,0.5412,8.4999,13.1,23.4999,12.51,16.65,3062711,50994138,249.8 +BYND,2024-02-28,0.5027,7.52,11.3,12.1199,9.62,9.83,44768193,440071337,20.3 +BAND,2024-02-28,0.4576,12.15,17.71,18.89,16.47,18.44,2994468,55217989,13.1 +LTH,2024-02-28,0.2705,12.42,15.78,15.788,13.29,13.71,4242021,58158107,6.2 +LFST,2024-02-28,0.203,6.7,8.06,9.2,7.81,8.71,11525238,100384822,10.7 +RVLV,2024-02-28,0.2018,17.49,21.02,21.51,19.69,21.35,5855761,125020497,5.9 +QUIK,2024-02-28,0.1684,12.71,14.85,16.2,14.24,15.67,1150176,18023257,8.5 +TGTX,2024-02-28,0.1632,13.91,16.18,18.89,15.9,17.63,16649222,293525783,4.4 +PLCE,2024-02-29,0.2896,19.2,24.76,25.5,19.2,19.24,1518444,29214862,2.9 +SIDU,2024-02-29,0.228,5.57,6.84,10.1485,6.35,8.98,35960870,322928612,177.4 +RYM,2024-02-29,0.2088,7.26,8.776,11.25,7.758,9.3,1594862,14832216,37.1 +RNA,2024-02-29,0.1999,15.26,18.31,19.46,17.71,18.3,3963878,72538967,5.4 +COCH,2024-02-29,0.1766,3.51,4.13,5.91,3.56,4.71,8031861,37830065,420.5 +TPC,2024-02-29,0.1468,9.217,10.57,12.36,10.29,11.3,1397636,15793286,7.8 +GDRX,2024-02-29,0.1236,6.47,7.27,8.0,7.07,7.79,8654040,67414971,7.7 +HAYW,2024-02-29,0.1199,13.09,14.66,16.04,14.605,14.79,7332744,108451283,6.0 +MTC,2024-03-01,0.3077,10.4,13.6,30.64,11.6,20.48,9316065,190793011,1464.7 +SG,2024-03-01,0.2484,12.74,15.905,17.2,15.38,16.36,10039353,164243815,6.3 +PLGO,2024-03-01,0.2436,14.0,17.41,17.41,15.45,15.82,1562837,24724081,4.2 +REAL,2024-03-01,0.2203,1.77,2.16,2.88,2.13,2.76,36920043,101899318,19.7 +NVTS,2024-03-01,0.1922,6.14,7.32,7.4,5.555,5.66,13591932,76930335,7.7 +OPRA,2024-03-01,0.1529,10.86,12.52,13.37,12.05,12.57,3927942,49374230,5.7 +BKKT,2024-03-01,0.151,14.5,16.69,16.69,14.03,14.5,653077,9469616,6.3 +RPAY,2024-03-01,0.1484,8.69,9.98,10.32,9.151,9.89,2626924,25980278,3.7 +FUFU,2024-03-04,0.9263,6.38,12.29,18.32,11.9,13.13,7585689,99600096,429.6 +AIMD,2024-03-04,0.4667,5.25,7.7,8.25,6.25,7.1,3021269,21451009,345.3 +NKTR,2024-03-04,0.2308,11.7,14.4,16.2,13.15,13.5,1499838,20247813,19.3 +PHUN,2024-03-04,0.2034,7.08,8.52,16.8899,8.515,12.41,69315094,860200316,37.1 +SMR,2024-03-04,0.1884,3.45,4.1,4.24,3.55,3.9,5962329,23253083,3.5 +BBAI,2024-03-04,0.185,3.46,4.1,4.795,4.02,4.33,67504141,292292930,23.1 +AQST,2024-03-04,0.1604,4.24,4.92,4.96,4.0,4.18,5363960,22421352,8.5 +M,2024-03-04,0.1438,16.2,18.53,19.09,18.27,18.39,18827123,346230791,2.5 +AISP,2024-03-05,1.0,1.65,3.3,5.97,2.63,4.95,217603607,1077137854,1970.4 +PHUN,2024-03-05,0.2885,12.41,15.99,17.99,13.06,14.72,26248073,386371634,14.0 +PAY,2024-03-05,0.1902,16.35,19.46,21.02,18.8,19.65,2500467,49134176,26.7 +DSP,2024-03-05,0.1438,9.18,10.5,10.9,9.26,9.78,553664,5414833,10.3 +COCH,2024-03-05,0.1,8.7,9.57,9.92,8.0,9.24,740109,6838607,35.7 +FMS,2024-03-05,0.0956,17.46,19.13,19.72,19.02,19.42,1159171,22511100,2.9 +DTSS,2024-03-05,0.0835,5.63,6.1,13.2,5.64,9.22,15263466,140729156,92.4 +SPRY,2024-03-05,0.0775,8.65,9.32,9.32,8.72,8.88,1012036,8986879,2.7 +AISP,2024-03-06,0.804,4.95,8.93,9.3158,6.28,6.92,67979056,470415067,615.5 +SCNX,2024-03-06,0.3999,5.189,7.264,13.22,6.697,10.75,9247310,99408582,712.7 +IFBD,2024-03-06,0.2543,5.23,6.56,8.4,5.75,7.63,9686586,73908651,100.1 +DVLT,2024-03-06,0.2522,6.78,8.49,8.52,5.7,5.88,1186980,6979442,24.7 +HIPO,2024-03-06,0.2434,14.46,17.98,19.72,14.22,19.39,1246384,24167385,9.4 +PDYN,2024-03-06,0.1642,2.01,2.34,3.25,1.78,1.96,4584054,8984745,24.1 +JD,2024-03-06,0.1589,19.57,22.68,23.43,22.21,22.74,54459259,1238403549,4.2 +FULC,2024-03-06,0.1387,10.96,12.48,13.7,11.96,12.0,1632808,19593696,3.1 +IMRN,2024-03-07,1.0423,1.6501,3.37,5.96,2.82,4.55,53777838,244689162,12154.6 +CELZ,2024-03-07,0.6744,4.76,7.97,10.2812,5.68,6.3,7930407,49961564,1443.3 +HNST,2024-03-07,0.3365,3.15,4.21,4.89,3.2355,3.93,8207482,32255404,15.4 +RSI,2024-03-07,0.3284,5.39,7.16,7.31,5.97,6.26,8025259,50238121,10.1 +GPGI,2024-03-07,0.2745,3.723,4.745,5.181,4.602,4.69,1672909,7845943,13.2 +HYFT,2024-03-07,0.2722,1.58,2.01,2.4299,1.64,1.84,26771810,49260130,366.9 +YEXT,2024-03-07,0.2567,5.96,7.49,7.53,5.99,6.45,3757627,24236694,6.4 +OSPN,2024-03-07,0.2529,9.067,11.36,11.74,10.45,11.16,2988044,33346571,12.8 +AIMD,2024-03-08,1.5,5.6,14.0,15.5,9.0,10.25,11013008,112883332,1132.0 +PRCH,2024-03-08,0.254,3.11,3.9,3.98,3.135,3.66,13463258,49275524,10.9 +WLDN,2024-03-08,0.2267,19.85,24.35,26.6,23.8265,24.68,245472,6058248,12.2 +GRFS,2024-03-08,0.1781,5.468,6.442,6.842,6.345,6.822,5078165,34643241,4.2 +FNKO,2024-03-08,0.163,6.44,7.49,7.49,6.75,6.86,1392534,9552783,3.8 +SWBI,2024-03-08,0.1204,12.04,13.49,15.64,13.38,15.57,4411561,68688004,15.8 +SOUN,2024-03-08,0.1066,5.63,6.23,6.28,5.62,5.86,75181962,440566297,1.8 +GAP,2024-03-08,0.0874,17.96,19.53,19.53,18.1,19.44,30947575,601620858,5.9 +DUO,2024-03-11,0.8351,9.678,17.76,21.12,10.4,10.69,4719864,50455346,1403.1 +GDS,2024-03-11,0.1841,6.41,7.59,8.55,7.545,7.82,5049885,39490100,3.9 +MESO,2024-03-11,0.1628,2.15,2.5,3.19,2.36,2.66,14798743,39364656,222.1 +AMPY,2024-03-11,0.1417,5.15,5.88,5.98,5.62,5.97,2868596,17125518,8.3 +APRE,2024-03-11,0.1332,7.13,8.08,8.1,6.27,6.77,1152549,7802756,112.4 +LENZ,2024-03-11,0.1211,14.86,16.66,20.16,16.14,17.65,703363,12414356,63.8 +KC,2024-03-11,0.119,2.69,3.01,3.63,3.01,3.46,6546142,22649651,6.2 +SCNX,2024-03-11,0.1164,15.9,17.75,27.76,17.19,20.38,774438,15783046,17.8 +CLRO,2024-03-12,0.8445,9.309,17.17,25.5,16.56,21.18,9674704,204910230,4870.2 +DFNS,2024-03-12,0.4609,9.2,13.44,13.6,7.98,8.96,4168472,37349509,129.4 +SGLY,2024-03-12,0.2935,3.1,4.01,6.38,3.76,4.16,23729174,98713363,1701.1 +PACK,2024-03-12,0.2815,4.37,5.6,7.23,5.52,6.63,8729159,57874324,17.5 +HRTG,2024-03-12,0.2378,7.15,8.85,9.12,8.0,8.95,1858263,16631453,6.9 +MDAI,2024-03-12,0.2267,1.72,2.11,2.12,1.72,1.85,13397121,24784673,18.7 +ANAB,2024-03-12,0.1523,15.56,17.93,18.0,16.36,17.37,528726,9183970,2.7 +AVO,2024-03-12,0.0916,10.7,11.68,12.1,11.14,12.0,800057,9600684,4.6 +GXAI,2024-03-13,0.9906,5.32,10.59,16.27,6.5,8.04,43556207,350191904,523.0 +HURA,2024-03-13,0.3206,2.926,3.864,4.676,3.171,4.274,4157486,17769095,29.4 +SKIN,2024-03-13,0.273,3.59,4.57,5.17,4.245,4.25,19634716,83447543,8.1 +HRTX,2024-03-13,0.1864,2.36,2.8,3.22,2.59,3.01,17854785,53742902,9.5 +HELP,2024-03-13,0.1818,16.72,19.76,19.85,15.24,15.96,1197702,19115323,14.4 +TH,2024-03-13,0.1733,8.54,10.02,10.24,8.54,8.67,1540667,13357582,4.3 +ANNX,2024-03-13,0.1481,4.59,5.27,6.05,5.04,5.77,4729476,27289076,6.2 +HCM,2024-03-13,0.1329,16.33,18.5,19.4,18.25,18.56,633707,11761601,8.2 +APM,2024-03-14,0.2933,4.33,5.6,8.93,5.6,6.77,44471823,301074241,8792.4 +TBCH,2024-03-14,0.2783,11.03,14.1,14.99,13.57,13.95,3608769,50342327,27.0 +SOUNW,2024-03-14,0.2434,4.52,5.62,5.98,4.32,5.12,1124164,5755719,2.2 +LAC,2024-03-14,0.192,5.73,6.83,7.65,5.9,5.99,21496564,128764418,7.9 +BBAI,2024-03-14,0.1748,2.46,2.89,2.89,2.36,2.44,53874404,131453545,5.0 +GXAI,2024-03-14,0.1443,8.04,9.2,9.74,7.63,8.6,1369733,11779703,16.1 +SLDB,2024-03-14,0.1186,12.23,13.68,14.48,11.805,12.28,450904,5537101,2.7 +ANNX,2024-03-14,0.1179,5.77,6.45,6.5279,5.44,5.6,3056646,17117217,3.7 +GERN,2024-03-15,0.7143,1.75,3.0,3.49,3.0,3.36,111710980,375348892,13.0 +AVD,2024-03-15,0.2555,10.53,13.22,14.19,12.38,12.82,963578,12353069,6.6 +MDAI,2024-03-15,0.1529,2.42,2.79,3.15,2.55,2.83,21259709,60164976,29.6 +GNS,2024-03-15,0.1083,3.97,4.4,4.4,3.811,4.198,1520579,6383390,7.9 +BLND,2024-03-15,0.0979,2.35,2.58,2.98,2.58,2.81,4672225,13128952,2.6 +WW,2024-03-15,0.0856,1.87,2.03,2.51,1.99,2.26,18925643,42771953,3.6 +LAC,2024-03-15,0.0818,5.99,6.48,6.76,6.09,6.47,12608438,81576593,4.4 +ACTG,2024-03-15,0.0804,3.98,4.3,4.68,4.27,4.65,1197247,5567198,8.0 +AIFF,2024-03-18,0.3029,9.21,12.0,15.9,9.51,10.17,3211574,32661707,449.9 +EH,2024-03-18,0.1496,15.37,17.67,19.925,15.05,15.5,7552786,117068183,12.4 +SMR,2024-03-18,0.1057,7.85,8.68,11.21,8.67,10.1,19603423,197994572,9.2 +VERI,2024-03-18,0.0979,3.88,4.26,4.3,2.82,3.45,8336720,28761684,17.1 +GNS,2024-03-18,0.0958,4.198,4.6,6.3,4.2,5.879,6454051,37943365,33.5 +BTSG,2024-03-18,0.0922,8.24,9.0,9.0,8.6,8.83,1805750,15944772,0.9 +TSLR,2024-03-18,0.0842,10.69,11.59,12.16,11.0244,12.08,491564,5938093,2.8 +TSLT,2024-03-18,0.0787,9.79,10.56,11.1,10.055,11.01,6573319,72372242,1.4 +NCMI,2024-03-19,0.2273,4.038,4.956,5.262,4.602,4.841,8346954,40407604,32.0 +CATX,2024-03-19,0.1917,9.65,11.5,12.1,10.5,11.2,1069988,11983865,6.2 +SPIR,2024-03-19,0.1633,12.28,14.285,19.4,14.16,16.01,7627828,122121526,39.4 +ATNM,2024-03-19,0.1621,6.54,7.6,8.5,7.3,8.21,2036255,16717653,10.4 +ELVN,2024-03-19,0.1472,12.64,14.5,18.15,14.5,17.54,667087,11700705,9.9 +CERS,2024-03-19,0.129,1.86,2.1,2.22,1.76,2.04,19777513,40346126,13.9 +TWAV,2024-03-20,0.6052,5.4,8.668,9.588,6.208,6.468,2198983,14223022,324.8 +TSHA,2024-03-20,0.3111,2.25,2.95,3.1762,2.53,2.96,24538272,72633285,12.4 +SRAD,2024-03-20,0.1368,10.09,11.47,12.51,10.78,11.23,2120983,23818639,9.9 +CGC,2024-03-20,0.1253,3.83,4.31,4.57,3.95,4.54,17817533,80891599,5.6 +ANVS,2024-03-20,0.1043,8.92,9.85,13.26,9.6,11.1,2141340,23768874,15.5 +BAK,2024-03-20,0.1023,8.99,9.91,10.56,9.67,10.56,3961902,41837685,4.3 +SRTA,2024-03-20,0.102,2.45,2.7,3.03,2.64,2.85,2454410,6995068,3.5 +XTLB,2024-03-20,0.0769,16.64,17.92,44.16,17.92,38.08,957834,36474318,14512.6 +LU,2024-03-21,0.4447,1.547,2.235,2.258,2.065,2.253,54715023,123272946,12.7 +AMTX,2024-03-21,0.1836,3.65,4.32,5.23,4.08,5.1,24627214,125598791,55.0 +GAMB,2024-03-21,0.1216,9.13,10.24,10.27,8.6051,8.8,736118,6477838,6.5 +LASE,2024-03-21,0.0844,1.54,1.67,2.08,1.57,2.03,9951390,20201321,145.8 +BULZ,2024-03-21,0.0704,13.36,14.3,14.31,13.8,13.81,1633600,22560016,1.1 +MRNO,2024-03-22,1.2869,9.62,22.0,28.16,14.08,21.25,3173035,67426993,163.2 +XMAX,2024-03-22,0.8919,1.85,3.5,4.4199,2.87,3.04,69178321,210302095,6088.6 +OTLK,2024-03-22,0.5298,7.04,10.77,11.72,8.3,8.63,21033281,181517215,276.5 +SMC,2024-03-22,0.3273,19.43,25.79,27.25,24.52,27.0,917747,24779169,32.3 +FFAI,2024-03-22,0.264,5.44,6.876,6.916,5.092,5.268,1900278,10010664,6.4 +IDN,2024-03-22,0.1714,1.75,2.05,3.18,2.02,3.06,13987936,42803084,672.4 +MTNB,2024-03-22,0.0894,13.31,14.5,21.5,12.71,13.9,444891,6183984,31.8 +FF,2024-03-25,0.4722,4.816,7.09,7.393,7.054,7.25,1129691,8190259,4.2 +NKTX,2024-03-25,0.1732,8.92,10.465,11.3429,10.16,10.49,4832727,50695306,6.6 +TH,2024-03-25,0.1592,8.92,10.34,11.19,10.26,11.12,4853869,53975023,10.8 +GDRX,2024-03-25,0.155,6.58,7.6,7.9271,7.05,7.07,2627578,18576976,2.0 +KULR,2024-03-25,0.1483,1.672,1.92,3.407,1.68,2.601,15810223,41122390,77.0 +OCGN,2024-03-25,0.1402,1.64,1.87,2.105,1.72,1.83,44074756,80656803,6.7 +IDN,2024-03-25,0.0817,3.06,3.31,4.25,3.12,3.92,12007754,47070395,577.3 +DJTWW,2024-03-25,0.0746,18.37,19.74,24.3,18.97,23.15,720379,16676773,6.1 +STOK,2024-03-26,0.7031,6.5,11.07,13.0,10.16,10.29,19469012,200336133,73.5 +KULR,2024-03-26,0.3187,2.601,3.43,3.725,2.88,3.39,10969369,37186160,53.4 +MESO,2024-03-26,0.2818,2.2,2.82,4.16,2.6801,3.93,69182352,271886643,578.8 +MBAI,2024-03-26,0.2774,1.965,2.51,2.86,2.24,2.47,13220076,32653587,1108.1 +IVVD,2024-03-26,0.1981,3.23,3.87,4.06,3.63,3.66,3005487,11000082,10.1 +DNUT,2024-03-26,0.192,12.19,14.53,17.47,14.04,16.99,43605685,740860588,51.3 +NUVB,2024-03-26,0.0933,2.25,2.46,3.03,2.3758,2.88,5348223,15402882,7.4 +CDLR,2024-03-26,0.0833,18.12,19.63,19.7,18.96,18.99,397895,7556026,5.6 +GCTS,2024-03-27,0.9103,6.58,12.57,56.0,9.44,44.0,4294545,188959980,1062.0 +NMAD,2024-03-27,0.7694,2.255,3.99,4.4,3.05,3.52,30986295,109071758,5009.1 +NUVB,2024-03-27,0.1337,2.88,3.265,4.06,3.02,3.97,11420481,45339309,15.1 +NVCR,2024-03-27,0.1308,13.07,14.78,15.54,12.92,14.64,11939190,174789741,11.3 +PAYS,2024-03-27,0.1272,3.38,3.81,4.53,3.77,4.0,13259551,53038204,109.8 +STKS,2024-03-27,0.1222,4.01,4.5,5.09,4.5,5.07,2167277,10988094,16.5 +TYRA,2024-03-27,0.0997,16.15,17.76,17.76,16.19,16.3,339576,5535088,3.3 +OUST,2024-03-27,0.0904,4.98,5.43,7.2,5.26,6.7,9741419,65267507,18.5 +AVTX,2024-03-28,2.9368,4.75,18.7,34.46,16.65,21.75,31910412,694051461,1650.1 +XLO,2024-03-28,2.0047,8.946,26.88,27.02,14.7,15.12,2467090,37302400,255.3 +MESO,2024-03-28,0.2779,3.49,4.46,5.37,3.91,5.01,14096467,70623299,107.6 +IBIO,2024-03-28,0.25,3.36,4.2,4.98,3.66,4.06,50664560,205698113,776.1 +ATLX,2024-03-28,0.134,14.92,16.92,17.6341,14.99,17.02,513241,8735361,6.4 +SMMT,2024-03-28,0.1227,3.75,4.21,4.64,4.1,4.14,4679740,19374123,2.1 +SRRK,2024-03-28,0.1126,15.45,17.19,17.9,15.27,17.76,1751053,31098701,2.1 +AKBA,2024-03-28,0.1027,2.24,2.47,2.48,1.77,1.83,61074372,111766100,18.7 +CXAI,2024-04-01,0.5429,2.45,3.78,7.07,3.53,6.15,239762081,1474536798,131.9 +MESO,2024-04-01,0.2315,5.01,6.17,7.36,5.74,6.08,16446935,99997364,125.5 +XLO,2024-04-01,0.2222,15.12,18.48,22.82,15.96,21.42,1526894,32706069,158.0 +BLDP,2024-04-01,0.1259,2.78,3.13,3.31,3.005,3.27,16929619,55359854,6.5 +SMR,2024-04-01,0.0942,5.31,5.81,6.44,5.15,5.24,10859366,56903077,1.8 +CDE,2024-04-01,0.0874,3.766,4.095,4.335,4.045,4.175,11521063,48100438,1.7 +NKTX,2024-04-01,0.0717,10.81,11.585,11.8388,10.56,10.82,1550674,16778292,2.0 +TPET,2024-04-02,1.1297,2.066,4.4,4.6,2.892,2.97,10317388,30642642,197.0 +VTSI,2024-04-02,0.2421,9.54,11.85,13.8,11.1301,13.14,2947891,38735287,29.0 +GXAI,2024-04-02,0.1028,6.03,6.65,6.7,5.5,5.86,1406707,8243303,9.4 +HURA,2024-04-03,1.1466,3.514,7.543,8.4,4.974,5.74,6459411,37077019,45.9 +ORKA,2024-04-03,0.7011,11.04,18.78,25.04,18.59,20.98,6734207,141283662,4037.3 +VIVO,2024-04-03,0.5373,5.9,9.07,9.9,6.18,6.41,47998819,307672429,5271.7 +VNDA,2024-04-03,0.1893,3.91,4.65,6.03,4.37,5.05,50710619,256088625,61.8 +LRMR,2024-04-03,0.072,7.36,7.89,8.056,7.41,7.72,877602,6775087,1.7 +HWH,2024-04-04,0.5478,7.85,12.15,12.85,9.3,11.5,2870648,33012452,1272.5 +GRRR,2024-04-04,0.2568,7.32,9.2,9.8,8.5,9.1,2816857,25633398,31.9 +CADL,2024-04-04,0.2083,1.68,2.03,7.65,2.0,6.4,143930489,921155129,2326.0 +LEVI,2024-04-04,0.1528,17.54,20.22,21.05,19.7,19.71,27988019,551643854,19.8 +ZETA,2024-04-04,0.1106,10.53,11.695,12.445,11.4,11.93,6177461,73697109,5.1 +MGNX,2024-04-04,0.1024,13.67,15.07,18.9,15.07,17.78,6817570,121216394,4.0 +ALDX,2024-04-04,0.0988,4.15,4.56,4.8802,4.35,4.685,2522264,11816806,5.9 +AVTX,2024-04-04,0.0865,16.31,17.72,20.85,16.3,16.3,630309,10274036,21.3 +GCTS,2024-04-05,0.925,5.73,11.03,11.9,7.5,8.16,28609089,233450166,3955.6 +SPCB,2024-04-05,0.3286,4.2,5.58,6.9,4.704,5.76,4446093,25609495,181.5 +TARA,2024-04-05,0.1692,4.02,4.7,5.24,3.56,3.63,8585958,31167027,103.5 +AXTI,2024-04-05,0.1025,3.22,3.55,3.76,3.03,3.11,3429747,10666513,3.7 +CADL,2024-04-05,0.0938,6.4,7.0,11.3999,5.58,6.64,84150545,558759618,1359.9 +ANGO,2024-04-05,0.0906,6.4,6.98,7.52,6.79,7.03,2155711,15154648,5.6 +BYRN,2024-04-05,0.0858,13.76,14.94,15.24,12.5,13.21,1149670,15187140,6.4 +LGVN,2024-04-08,0.7,2.2,3.74,5.47,2.03,2.15,50509418,108595248,2671.7 +KULR,2024-04-08,0.136,4.684,5.321,6.312,5.2,5.694,3128510,17813735,4.7 +AXTI,2024-04-08,0.1286,3.11,3.51,3.99,3.43,3.57,2605427,9301374,2.8 +VIVO,2024-04-08,0.1019,5.69,6.27,6.45,5.07,5.6,2788899,15617834,234.7 +OCGN,2024-04-08,0.0984,1.83,2.01,2.08,1.84,1.88,19662552,36965597,2.3 +PPTA,2024-04-08,0.0882,4.76,5.18,6.47,5.07,6.29,1223847,7697997,6.9 +IREN,2024-04-08,0.0857,5.6,6.08,6.33,5.295,5.41,15120935,81804258,1.4 +CLSK,2024-04-08,0.0788,15.6,16.83,17.33,15.21,15.36,30346599,466123760,0.8 +ACRV,2024-04-09,0.687,5.91,9.97,11.9,8.8,9.62,38277212,368226779,681.3 +FFAI,2024-04-09,0.1111,3.6,4.0,4.596,3.696,4.472,2123862,9497910,5.6 +TSHA,2024-04-09,0.1007,2.68,2.95,3.3,2.91,2.96,4672076,13829344,2.2 +MDIA,2024-04-09,0.0861,3.02,3.28,5.1,3.25,4.29,72009124,308919141,5098.7 +OPFI,2024-04-09,0.0857,2.38,2.584,3.179,2.584,2.984,2865225,8549831,13.1 +NA,2024-04-10,0.2973,14.8,19.2,23.5,16.7,19.3,3230069,62340331,1240.9 +RLYB,2024-04-11,1.0429,13.04,26.64,27.68,21.04,23.84,9987554,238103287,725.0 +CLYM,2024-04-11,0.5019,2.67,4.01,4.75,3.9201,4.58,39106006,179105507,6363.9 +TPET,2024-04-11,0.3917,3.666,5.102,5.764,3.99,4.622,3368422,15568846,42.6 +RENT,2024-04-11,0.3216,7.4,9.78,24.13,9.78,19.38,45747764,886591666,1632.2 +CADL,2024-04-11,0.2549,5.1,6.4,7.92,5.83,7.28,64185320,467269129,912.2 +ELVN,2024-04-11,0.2117,19.82,24.015,26.0,22.62,23.82,3347739,79743142,24.7 +CYPH,2024-04-11,0.1513,3.04,3.5,4.39,3.03,3.115,5675632,17679593,32.5 +ANAB,2024-04-11,0.1191,14.78,16.54,17.08,15.9,16.48,572975,9442628,1.5 +NXPL,2024-04-12,0.66,15.0,24.9,26.8,17.8,18.7,4561015,85290980,4862.5 +TPET,2024-04-12,0.2116,4.622,5.6,13.88,5.2,10.32,16965291,175081803,199.7 +HKD,2024-04-12,0.2019,3.17,3.81,3.92,3.35,3.36,3906817,13126905,15.2 +EONR,2024-04-12,0.1116,2.285,2.5399,4.0,2.41,2.61,2444584,6380364,16.1 +CDE,2024-04-12,0.0917,4.785,5.224,5.464,4.575,4.635,21479517,99557561,2.7 +NRXP,2024-04-12,0.0873,5.5,5.98,6.0,4.89,5.12,1122818,5748828,6.5 +SPCB,2024-04-12,0.0811,4.688,5.068,6.014,5.0,5.52,918270,5068850,32.3 +INDO,2024-04-12,0.0803,2.74,2.96,5.94,2.96,4.94,56413687,278683613,1312.5 +SNGX,2024-04-15,0.753,6.178,10.83,14.92,7.2,7.52,8439835,63467559,1043.8 +VIVS,2024-04-15,0.6436,12.12,19.92,20.88,14.4,16.2,4482121,72610360,1212.2 +LGVN,2024-04-15,0.4142,1.69,2.39,3.41,2.15,2.93,57100128,167303375,1712.9 +SPCB,2024-04-15,0.3043,5.52,7.2,10.9,6.602,8.008,6378973,51082815,213.6 +MPT,2024-04-15,0.2105,3.273,3.962,4.356,3.749,3.889,56522027,219814163,3.9 +RENT,2024-04-15,0.1435,19.23,21.99,22.39,13.88,14.72,3607893,53108184,112.2 +TPET,2024-04-15,0.1376,10.32,11.74,14.39,9.6,12.6,9062232,114184123,93.4 +PALI,2024-04-16,1.1034,4.16,8.75,9.65,5.34,5.93,28975236,171823149,2860.1 +DVLT,2024-04-16,0.5314,1.75,2.68,8.6,2.43,6.1,199659402,1217922352,660.6 +CGEM,2024-04-16,0.2006,16.55,19.87,20.62,16.871,17.32,3354405,58098294,11.2 +SPCB,2024-04-16,0.1988,8.008,9.6,9.6,6.76,7.458,1679773,12527747,52.2 +DVLT,2024-04-17,0.7885,6.1,10.91,10.95,6.7059,9.25,68309715,631864863,226.0 +INTZ,2024-04-17,0.4478,2.3,3.33,3.46,1.7,1.94,4548533,8824154,96.2 +RYM,2024-04-17,0.3761,4.469,6.15,6.69,4.967,5.475,1970921,10790792,77.0 +VNDA,2024-04-17,0.3383,4.05,5.42,5.67,4.99,5.24,24035651,125946811,29.3 +CXAI,2024-04-17,0.3274,3.91,5.19,5.43,4.08,4.2,23233816,97582027,10.6 +PLCE,2024-04-17,0.3179,7.11,9.37,11.4,8.01,8.28,14075181,116542498,24.0 +RANI,2024-04-17,0.1063,6.87,7.6,8.75,7.06,7.85,1403877,11020434,16.3 +SINT,2024-04-17,0.0917,4.58,5.0,9.36,4.66,7.46,2451295,18286660,44.2 +SINT,2024-04-18,0.6086,7.46,12.0,13.66,7.64,8.0,2194907,17559256,34.8 +THCH,2024-04-18,0.1442,5.2,5.95,7.2,5.9,6.4,2886807,18475564,121.9 +VTSI,2024-04-18,0.1039,11.26,12.43,13.72,11.7,13.25,522911,6928570,3.8 +BNTC,2024-04-18,0.0958,4.8,5.26,7.42,5.08,6.82,3517731,23990925,297.8 +RNTX,2024-04-18,0.0824,4.25,4.6,7.42,4.51,5.0,1755029,8775145,76.1 +SMSI,2024-04-18,0.0718,9.75,10.45,16.05,9.8,11.13,1102922,12275521,133.0 +GRML,2024-04-19,0.4081,7.9966,11.26,13.1,9.38,10.08,6118094,61670387,5165.1 +GPUS,2024-04-19,0.3217,8.474,11.2,13.42,9.8,10.64,1627856,17320387,24.7 +TPET,2024-04-19,0.2199,6.558,8.0,8.868,7.076,7.95,2635671,20953584,6.6 +DJTWW,2024-04-19,0.1709,15.45,18.09,18.4,15.7,17.01,646043,10989191,2.2 +SPCB,2024-04-22,0.3618,4.4,5.992,6.77,5.2,5.794,3533135,20470984,47.8 +PALI,2024-04-23,0.3935,4.93,6.87,8.17,5.67,5.92,23377191,138392970,2063.0 +HWH,2024-04-23,0.375,6.4,8.8,8.85,6.5,7.55,3237115,24440218,288.8 +IBRX,2024-04-23,0.2449,4.94,6.15,6.19,4.84,5.49,30697001,168526535,7.7 +OPRT,2024-04-23,0.2,2.25,2.7,3.53,2.58,3.15,11709451,36884770,58.2 +KULR,2024-04-23,0.1201,3.571,4.0,4.56,3.92,4.157,2661529,11063976,1.8 +MTC,2024-04-23,0.0962,12.48,13.68,20.0,12.8,17.92,759216,13605150,123.5 +EYPT,2024-04-23,0.0773,16.95,18.26,18.68,17.55,17.57,942987,16568281,1.5 +BBAI,2024-04-23,0.0769,1.56,1.68,1.75,1.63,1.71,7038323,12035532,1.0 +AMST,2024-04-24,0.9,2.0,3.8,4.34,2.96,3.35,70566626,236398197,6305.4 +TSLT,2024-04-24,0.25,7.36,9.2,9.7,8.65,9.11,8266480,75307632,1.8 +TSLL,2024-04-24,0.2493,4.881,6.098,6.438,5.732,6.031,48473664,292344667,2.4 +TSLR,2024-04-24,0.2392,8.11,10.05,10.67,9.52,10.04,1224176,12290727,2.9 +AEYE,2024-04-24,0.2003,13.48,16.18,16.22,14.28,14.43,487383,7032936,3.7 +TPET,2024-04-24,0.1916,7.202,8.582,9.724,7.55,8.03,2078569,16690909,3.3 +MTC,2024-04-24,0.1473,17.92,20.56,29.6,18.56,28.8,1179378,33966086,191.9 +POET,2024-04-24,0.1456,1.58,1.81,2.34,1.63,2.28,6234596,14214878,112.2 +ULBI,2024-04-25,0.2027,8.73,10.5,10.75,9.89,10.71,511764,5480992,10.8 +SPCB,2024-04-25,0.1775,4.472,5.266,5.82,5.02,5.04,2642009,13315725,12.9 +CLB,2024-04-25,0.0791,16.43,17.73,17.81,16.37,16.97,693893,11775364,1.9 +SNAP,2024-04-26,0.2702,11.4,14.48,14.94,13.78,14.55,159811902,2325263174,6.6 +HURA,2024-04-26,0.2342,5.53,6.825,6.825,4.746,5.208,1474614,7679789,13.5 +BOF,2024-04-26,0.1531,1.96,2.26,2.86,2.07,2.15,17000974,36552094,1117.6 +TPC,2024-04-26,0.1371,13.86,15.76,17.91,15.76,17.74,1549590,27489726,3.8 +POET,2024-04-26,0.1212,1.98,2.22,2.6,2.09,2.5,3284541,8211352,51.6 +RERE,2024-04-26,0.0991,1.574,1.73,1.955,1.652,1.936,3416436,6614220,6.2 +PDC,2024-04-26,0.0982,3.676,4.037,5.6,3.01,3.305,1616259,5341735,52.0 +NWL,2024-04-26,0.0936,6.172,6.75,7.266,6.555,6.928,9823407,68056563,2.5 +PHG,2024-04-29,0.3328,18.96,25.27,26.49,23.81,24.03,12343345,296610580,14.7 +TSLL,2024-04-29,0.2407,6.474,8.032,8.838,7.733,8.475,83315366,706097726,4.0 +TSLT,2024-04-29,0.2393,9.78,12.12,13.34,11.6705,12.78,13185669,168512849,2.8 +TSLR,2024-04-29,0.2377,10.77,13.33,14.67,12.8532,14.08,1481120,20854169,3.2 +SINT,2024-04-29,0.2327,8.08,9.96,12.0,9.2,10.9,871823,9502870,7.8 +ARQQ,2024-04-29,0.2305,12.19,15.0,15.0,10.75,11.72,1533346,17970815,72.8 +HWH,2024-04-29,0.2198,9.1,11.1,15.15,10.0,12.9,7067337,91168647,290.2 +TSL,2024-04-29,0.1477,6.5,7.46,7.975,7.3,7.7449,729096,5646775,4.4 +WGS,2024-04-30,0.2982,11.0,14.28,18.24,13.9,17.07,7285998,124371985,45.0 +HLIT,2024-04-30,0.2606,9.4,11.85,12.11,10.5,10.74,7374787,79205212,4.5 +BLND,2024-04-30,0.1378,2.25,2.56,2.8901,2.43,2.45,6152584,15073830,4.9 +LXU,2024-04-30,0.0754,8.22,8.84,9.706,8.8,9.3,1331525,12383182,3.4 +CTMX,2024-05-01,0.9939,1.63,3.25,5.85,2.78,5.13,206720383,1060475564,558.2 +PALI,2024-05-01,0.3184,6.03,7.95,9.09,6.36,7.08,12265353,86838699,193.6 +IMCC,2024-05-01,0.2558,5.16,6.48,7.86,5.88,6.66,6812996,45374553,76.0 +TGTX,2024-05-01,0.2555,13.66,17.15,18.0,14.87,15.88,18588085,295178789,7.5 +FLG,2024-05-01,0.2037,7.873,9.477,10.78,8.913,10.1,31572536,318882613,5.1 +HAPN,2024-05-01,0.117,7.52,8.4,9.27,8.4,9.0,4477358,40296222,3.9 +CDNA,2024-05-01,0.0966,7.76,8.51,9.96,8.43,9.18,2600124,23869138,4.6 +STGW,2024-05-01,0.084,5.95,6.45,7.12,6.4,6.74,2341569,15782175,4.9 +EBS,2024-05-02,0.5285,1.93,2.95,4.76,2.82,3.3,151504993,499966476,145.4 +CVNA,2024-05-02,0.3772,17.42,23.99,24.46,22.29,23.3,121103950,2821722035,6.2 +ENVX,2024-05-02,0.3594,6.51,8.85,9.615,8.13,9.47,25825205,244564691,7.2 +ASPN,2024-05-02,0.3003,15.22,19.79,24.41,19.33,23.85,11894542,283684826,19.4 +LUNG,2024-05-02,0.2927,7.72,9.98,9.98,8.85,9.38,1503335,14101282,2.8 +RSI,2024-05-02,0.2243,6.42,7.86,8.38,7.07,7.55,5588200,42190910,4.8 +ULCC,2024-05-02,0.137,5.84,6.64,6.65,5.75,5.94,2711393,16105674,1.8 +PTON,2024-05-02,0.1211,3.22,3.61,3.8,2.7,3.13,62218965,194745360,5.7 +OSPN,2024-05-03,0.2683,10.36,13.14,13.48,11.14,11.73,1797452,21084111,7.0 +LOCO,2024-05-03,0.264,8.6,10.87,11.99,9.64,10.01,3281652,32849336,13.5 +ARDX,2024-05-03,0.2312,6.79,8.36,9.13,7.98,8.72,24971221,217749047,4.6 +RLAY,2024-05-03,0.2302,7.08,8.71,8.71,6.79,7.04,1167807,8221361,1.2 +OPEN,2024-05-03,0.1724,2.03,2.38,2.6,2.2,2.21,47495260,104964524,3.7 +AAPU,2024-05-03,0.1539,17.93,20.69,20.79,19.88,20.04,1550763,31077290,4.7 +AAPB,2024-05-03,0.1508,16.91,19.46,19.56,18.77,18.88,369263,6971685,2.4 +AXTI,2024-05-03,0.1485,3.03,3.48,4.23,3.31,3.66,13601544,49781651,20.5 +BCRX,2024-05-06,0.1236,4.45,5.0,5.47,4.75,5.27,8898733,46896322,3.0 +NRXP,2024-05-06,0.1048,2.1,2.32,3.75,2.32,3.06,9310734,28490846,44.6 +CTMX,2024-05-06,0.1038,4.43,4.89,4.94,4.27,4.37,5076011,22182168,13.3 +PLCE,2024-05-06,0.072,7.78,8.34,8.34,7.0,8.03,966054,7757413,1.3 +MTC,2024-05-07,0.3043,18.4,24.0,37.12,22.8,26.64,4220758,112440993,663.8 +BVS,2024-05-07,0.25,4.0,5.0,5.36,4.65,5.12,3266888,16726466,28.4 +ZETA,2024-05-07,0.1962,13.0,15.55,15.9,14.9,15.38,9171205,141053132,6.2 +SELF,2024-05-07,0.187,3.674,4.361,5.154,4.15,4.696,2097198,9848441,130.2 +HIMS,2024-05-07,0.1704,11.65,13.635,13.635,12.07,12.35,25707767,317490922,6.4 +PTON,2024-05-07,0.1667,3.54,4.13,4.19,3.85,4.09,59364321,242800072,5.3 +FFAI,2024-05-07,0.1622,1.652,1.92,2.08,1.672,1.748,4422883,7731199,5.8 +TVTX,2024-05-07,0.1298,6.55,7.4,7.69,6.74,6.75,1938139,13082438,1.6 +REBN,2024-05-08,0.7861,1.73,3.09,4.5199,2.74,3.19,109955801,350759005,2187.1 +VBIO,2024-05-08,0.4762,17.85,26.35,31.45,18.02,22.78,1393863,31752199,1448.9 +INOD,2024-05-08,0.2834,6.74,8.65,10.54,8.2102,10.47,19162181,200628035,81.5 +SLNH,2024-05-08,0.251,2.43,3.04,3.04,2.55,2.69,13915776,37433437,157.4 +MYGN,2024-05-08,0.1854,19.78,23.448,24.2,22.13,23.95,2587966,61981785,4.5 +ELAN,2024-05-08,0.1642,13.52,15.74,17.23,15.24,16.89,19729086,333224262,4.8 +CRCT,2024-05-08,0.1627,4.179,4.859,6.302,4.708,6.151,7855717,48320515,12.7 +INGN,2024-05-08,0.1233,7.3,8.2,8.75,7.42,8.24,882018,7267828,3.7 +CPOP,2024-05-09,1.0765,17.0,35.3,43.0,27.8,31.2,7699089,240211576,7318.5 +SEZL,2024-05-09,0.4523,7.457,10.83,14.0,10.46,13.1,4677804,61279232,8.8 +EMBC,2024-05-09,0.2927,9.337,12.07,13.89,11.92,12.87,2585102,33270262,7.1 +MGNI,2024-05-09,0.2135,8.9,10.8,10.9,9.185,9.23,3776866,34860473,3.3 +ZLAB,2024-05-09,0.21,16.57,20.05,21.49,19.76,21.01,4134390,86863533,8.7 +WRBY,2024-05-09,0.1833,12.44,14.72,15.09,14.08,14.68,4549464,66786131,4.1 +SLQT,2024-05-09,0.164,2.5,2.91,3.06,2.58,2.59,2182172,5651825,4.2 +ASLE,2024-05-09,0.1576,7.55,8.74,9.4,8.04,8.25,1186169,9785894,4.3 +NVAX,2024-05-10,1.2416,4.47,10.02,11.0,8.61,8.88,170871994,1517343306,45.9 +SRTS,2024-05-10,0.2651,3.81,4.82,5.45,4.37,5.29,19744915,104450600,231.8 +INSG,2024-05-10,0.1953,3.84,4.59,5.7799,4.5832,5.03,1663866,8369245,24.1 +ARRY,2024-05-10,0.1871,12.51,14.85,14.85,12.52,12.76,15078251,192398482,2.7 +ADMA,2024-05-10,0.1833,6.93,8.2,9.02,7.96,8.81,11700342,103080013,5.6 +SOUN,2024-05-10,0.1684,4.75,5.55,5.97,5.05,5.09,88336424,449632398,3.6 +DVLT,2024-05-10,0.1579,3.04,3.52,3.64,2.9208,3.18,7839137,24928455,9.4 +OUST,2024-05-10,0.1575,10.35,11.98,14.17,11.98,12.4,4756718,58983303,4.8 +GME,2024-05-13,0.5086,17.46,26.34,38.2,24.77,30.45,187241727,5701510587,43.2 +ACIU,2024-05-13,0.4632,2.31,3.38,3.47,2.88,3.3,32121117,105999686,195.4 +AMC,2024-05-13,0.2096,2.91,3.52,5.88,3.16,5.19,522639587,2712499456,31.4 +KOSS,2024-05-13,0.2071,3.1978,3.86,5.53,3.62,4.37,19537377,85378337,1551.6 +FULC,2024-05-13,0.1178,7.47,8.35,8.5,6.9214,7.35,2034525,14953758,5.3 +RXRX,2024-05-13,0.0953,8.6,9.42,10.396,9.06,9.48,15407565,146063716,3.9 +NVAX,2024-05-13,0.0912,8.88,9.69,13.97,9.52,13.11,123507768,1619186838,33.2 +OKLO,2024-05-13,0.0828,8.45,9.15,10.85,8.6,9.77,12579137,122898168,8.0 +AMC,2024-05-14,1.289,5.19,11.88,11.88,5.85,6.85,634246623,4344589367,38.0 +PLUG,2024-05-14,0.692,2.89,4.89,4.9,3.42,3.44,203418430,699759399,7.2 +FFAI,2024-05-14,0.6344,2.44,3.988,14.39,3.6,11.41,39335919,448822835,26.4 +KOSS,2024-05-14,0.3593,4.37,5.94,6.9499,5.31,6.15,19694163,121119102,1523.4 +BB,2024-05-14,0.2323,3.1,3.82,3.85,3.32,3.47,93932195,325944716,14.5 +HROW,2024-05-14,0.2055,12.07,14.55,17.49,14.348,16.24,2820478,45804562,7.9 +BYND,2024-05-14,0.1897,7.96,9.47,10.31,7.87,8.01,21833128,174883355,11.8 +PSFE,2024-05-14,0.1806,15.67,18.5,19.8341,18.02,18.84,1736948,32724100,6.1 +SINT,2024-05-15,1.4236,11.0,26.66,45.6,20.6,25.52,5017563,128048207,42.6 +FFAI,2024-05-15,1.0999,11.41,23.96,39.2,15.53,28.2,33661426,949252213,21.6 +OPRX,2024-05-15,0.3311,10.48,13.95,14.13,12.5,13.17,663062,8732526,5.1 +SPCB,2024-05-15,0.25,4.32,5.4,5.598,4.0,4.028,1674003,6742884,5.4 +ARQT,2024-05-15,0.1587,8.13,9.42,10.13,8.9,9.24,13896318,128401978,5.3 +TMCI,2024-05-15,0.154,5.0,5.77,6.01,5.18,5.95,3371960,20063162,9.1 +SRAD,2024-05-15,0.1316,9.5,10.75,10.75,9.53,10.48,1612534,16899356,4.7 +BCRX,2024-05-15,0.1063,5.36,5.93,6.56,5.9,6.36,10487304,66699253,3.5 +ASTS,2024-05-16,0.3138,2.39,3.14,4.16,3.07,4.03,76045579,306463683,35.8 +GRRR,2024-05-16,0.1437,5.22,5.97,6.2896,5.45,5.54,1037951,5750248,3.0 +GOOS,2024-05-16,0.1366,11.42,12.98,14.31,12.95,13.19,8447805,111426547,17.5 +MGNI,2024-05-16,0.1204,9.8,10.98,12.9,10.85,11.99,14195845,170208181,12.4 +LSPD,2024-05-16,0.0994,12.78,14.05,15.13,14.0,15.1,5041325,76124007,7.5 +GDRX,2024-05-16,0.0729,7.27,7.8,8.3709,7.5701,8.06,4989305,40213798,5.5 +DUO,2024-05-17,2.8113,6.381,24.32,33.6,21.28,26.88,6559950,176331456,989.6 +SDEV,2024-05-17,0.25,13.88,17.35,30.01,12.12,13.72,772388,10597163,82.1 +OUST,2024-05-17,0.1115,11.66,12.96,14.15,12.87,12.97,3377935,43811816,3.6 +AUTL,2024-05-17,0.1057,4.07,4.5,4.84,4.39,4.39,2033189,8925699,1.4 +ERAS,2024-05-17,0.0919,1.85,2.02,2.05,1.84,1.97,11040618,21750017,19.2 +HKD,2024-05-17,0.0895,3.8,4.14,4.85,3.86,4.08,2668095,10885827,7.6 +AMDL,2024-05-17,0.0723,17.01,18.24,18.4481,16.9025,17.38,902317,15682269,2.3 +GTBP,2024-05-20,1.5,3.12,7.8,10.6599,6.66,7.8,65006720,507052416,8424.9 +SINT,2024-05-20,0.3906,17.0,23.64,24.78,18.84,22.58,717772,16207291,6.1 +SDEV,2024-05-20,0.3491,13.72,18.51,26.61,15.04,20.17,902962,18212743,96.0 +CNEY,2024-05-20,0.276,16.63,21.22,27.75,18.25,21.25,527737,11214411,357.7 +HURA,2024-05-20,0.1896,5.005,5.954,6.44,5.289,6.125,1336456,8185793,12.6 +ASPI,2024-05-20,0.1482,4.52,5.19,5.55,4.89,5.23,1684134,8808020,2.7 +HIMS,2024-05-20,0.0947,14.57,15.95,20.11,15.85,18.6,70740855,1315779903,14.0 +MGRX,2024-05-21,0.8609,3.795,7.062,16.8,6.315,7.73,15920284,123063795,2254.8 +GPUS,2024-05-21,0.2746,13.73,17.5,20.27,14.35,16.47,1439887,23714938,30.3 +MTC,2024-05-21,0.2286,8.4,10.32,10.56,6.401,7.12,6711506,47785922,166.7 +FRMM,2024-05-21,0.2222,15.3,18.7,27.0,15.3,19.9,408326,8125687,184.4 +CTXR,2024-05-21,0.1818,16.5,19.5,21.25,16.76,18.25,867949,15840069,23.1 +ALLO,2024-05-21,0.1158,2.59,2.89,2.92,2.63,2.69,4974453,13381278,2.3 +LRMR,2024-05-21,0.1073,7.27,8.05,8.678,7.45,7.89,3012463,23768333,10.7 +TMCI,2024-05-21,0.0931,4.94,5.4,5.4,4.86,4.97,1125536,5593913,2.7 +BZFD,2024-05-22,0.544,2.5,3.86,4.56,2.64,3.01,69866994,210299651,247.7 +BCG,2024-05-22,0.2519,2.7,3.38,5.42,3.25,4.22,2176949,9186724,390.0 +MBIO,2024-05-22,0.2097,15.5,18.75,21.94,11.75,12.0,935473,11225676,236.4 +RZLT,2024-05-22,0.2067,3.0,3.62,3.72,2.58,2.81,9339151,26243014,37.0 +WOOF,2024-05-22,0.1265,2.45,2.76,3.3,2.7,2.88,26198328,75451184,9.8 +IMNM,2024-05-22,0.0916,13.65,14.9,15.45,14.39,14.42,1170209,16874413,1.4 +ASTI,2024-05-23,0.5982,13.14,21.0,34.0,19.0,21.47,6631875,142386356,272.9 +NCPL,2024-05-23,0.1852,10.64,12.61,16.07,11.2,12.24,808336,9894032,147.0 +TOVX,2024-05-23,0.1602,9.05,10.5,10.75,7.935,8.275,845669,6997910,432.0 +NVDL,2024-05-23,0.1484,14.42,16.56,17.85,16.4,17.08,113767851,1943154895,2.6 +NVDX,2024-05-23,0.1439,8.899,10.18,11.01,10.13,10.52,26742400,281330048,3.2 +BORR,2024-05-23,0.1029,5.576,6.15,6.485,6.092,6.179,7016461,43354712,4.2 +WOOF,2024-05-23,0.0903,2.88,3.14,3.2,2.95,3.17,9285011,29433484,3.3 +GDRX,2024-05-23,0.0833,7.2,7.8,7.8,7.16,7.24,1461418,10580666,1.4 +NCPL,2024-05-24,0.7598,12.24,21.54,22.85,13.3,13.48,2733619,36849184,492.4 +LUCY,2024-05-24,0.2532,3.72,4.662,22.6,4.444,19.66,47221619,928377029,3120.7 +PAGS,2024-05-24,0.1127,11.36,12.64,12.65,11.34,11.36,7680005,87244856,2.6 +MGNI,2024-05-24,0.0858,11.07,12.02,12.755,11.81,12.57,4061424,51052099,3.2 +UZE,2024-05-28,0.2949,15.7,20.33,20.38,17.96,18.54,1004547,18624301,23.0 +TKLF,2024-05-28,0.2617,2.938,3.707,3.79,2.458,2.919,2494952,7282764,110.3 +UZF,2024-05-28,0.2578,15.67,19.71,20.29,18.35,18.57,791108,14690875,44.1 +UZD,2024-05-28,0.2237,16.99,20.79,21.14,19.69,20.04,1269687,25444527,47.1 +GME,2024-05-28,0.2158,19.0,23.1,26.66,21.15,23.78,105077564,2498744471,4.2 +TWAV,2024-05-28,0.2068,7.04,8.496,14.82,7.676,8.792,3714193,32655184,254.6 +OKLO,2024-05-28,0.1429,10.15,11.6,12.4199,10.39,10.79,13093315,141276868,4.5 +SMR,2024-05-28,0.1324,7.78,8.81,9.5899,8.11,9.48,18035683,170978274,6.2 +BNAI,2024-05-29,0.6378,12.7,20.8,31.6,16.8,26.4,10822006,285700958,1277.0 +LUCY,2024-05-29,0.2439,8.2,10.2,27.2,10.0,18.98,28810080,546815318,1704.5 +IMA,2024-05-29,0.1729,15.96,18.72,20.16,18.24,20.04,284305,5697472,20.6 +MBIO,2024-05-29,0.1618,9.425,10.95,14.95,10.22,11.78,1416951,16691682,282.8 +ASTS,2024-05-29,0.1576,5.33,6.17,9.35,5.68,9.02,109899281,991291514,42.9 +CHWY,2024-05-29,0.1431,16.91,19.33,22.05,19.16,21.5,66623071,1432396026,9.6 +ASTI,2024-05-29,0.0891,14.93,16.26,18.0,13.54,14.0,999010,13986140,37.1 +OABI,2024-05-29,0.0791,4.17,4.5,4.57,4.41,4.55,1278281,5816178,2.3 +ONMD,2024-05-30,0.3795,1.95,2.69,3.37,2.3,2.61,55205725,144086942,805.2 +HURA,2024-05-30,0.2521,9.52,11.92,14.6,9.709,11.1,2275837,25261790,12.0 +RRGB,2024-05-30,0.1887,6.73,8.0,8.6,7.34,7.73,2172276,16791693,8.6 +WOOF,2024-05-30,0.147,3.13,3.59,4.055,3.4,3.93,16800232,66024911,4.9 +AMSC,2024-05-30,0.1368,15.79,17.95,20.6866,16.59,17.44,3973262,69293689,13.3 +ALHC,2024-05-30,0.1175,6.98,7.8,8.03,7.64,7.88,1631219,12854005,2.4 +CELC,2024-05-30,0.0815,14.84,16.05,16.78,14.875,15.1,1948472,29421927,12.6 +CMTG,2024-05-30,0.0743,6.686,7.183,7.814,7.159,7.499,899034,6741855,2.8 +VSEE,2024-05-31,0.5973,15.0,23.96,25.0,16.0,17.0,1976150,33594550,1393.1 +LUCY,2024-05-31,0.2658,15.8,20.0,24.2,16.2,16.9,4657844,78717563,246.7 +PD,2024-05-31,0.1783,17.95,21.15,21.26,18.52,18.97,3639592,69043060,3.6 +ASAN,2024-05-31,0.134,13.13,14.89,15.43,12.85,13.05,6903392,90089265,4.0 +BTDR,2024-05-31,0.1065,5.82,6.44,6.75,6.06,6.13,1294432,7934868,2.5 +HUMA,2024-05-31,0.0956,9.1,9.97,9.97,7.17,7.48,8814356,65931382,4.3 +ALLO,2024-05-31,0.0772,2.46,2.65,2.66,2.435,2.5,3465173,8662932,1.4 +AMC,2024-06-03,0.2564,4.33,5.44,5.7,4.64,4.81,139690677,671912156,4.1 +KYTX,2024-06-03,0.2027,12.53,15.07,15.24,12.95,13.07,787983,10298937,2.4 +SMMT,2024-06-03,0.133,8.685,9.84,9.94,8.72,8.84,22654986,200270076,12.5 +LQDA,2024-06-03,0.1305,12.87,14.55,15.19,14.25,14.5,1809717,26240896,2.7 +PCT,2024-06-03,0.1175,5.19,5.8,6.0,5.33,5.55,2367195,13137932,1.5 +HURA,2024-06-03,0.1087,10.86,12.04,12.39,9.45,9.489,602303,5715253,2.6 +OLMA,2024-06-03,0.095,9.68,10.6,12.22,10.27,11.76,4327106,50886766,6.5 +NVDL,2024-06-03,0.0714,18.91,20.26,20.73,19.69,20.73,67109580,1391181593,1.4 +ANNX,2024-06-04,0.3166,4.58,6.03,7.14,5.52,5.99,48254941,289047096,30.2 +CORZW,2024-06-04,0.2841,1.76,2.26,2.56,1.92,2.31,8518353,19677395,50.8 +CORZ,2024-06-04,0.2834,4.87,6.25,7.0599,6.04,6.83,68790579,469839654,22.6 +CORZZ,2024-06-04,0.1644,3.65,4.25,4.5,3.88,4.35,4606615,20038775,35.6 +MGRX,2024-06-04,0.1438,5.25,6.005,6.225,5.1,5.565,983582,5473633,122.9 +ZLAB,2024-06-04,0.0783,18.0,19.41,19.975,18.81,19.29,908705,17528919,1.7 +KYTX,2024-06-04,0.0712,13.07,14.0,15.06,12.7,12.97,1072024,13904151,3.0 +MFI,2024-06-05,0.6615,10.4,17.28,18.8,10.48,12.16,5326013,64764318,87.7 +SFIX,2024-06-05,0.176,2.67,3.14,3.87,3.14,3.455,21089595,72864550,23.3 +HPE,2024-06-05,0.1568,16.65,19.26,19.33,18.39,18.43,88492055,1630908573,8.5 +VIR,2024-06-05,0.1512,10.58,12.18,13.09,12.0,12.66,3486411,44137963,4.0 +DDD,2024-06-05,0.1069,3.46,3.83,4.315,3.82,4.16,8135390,33843222,6.7 +TIGR,2024-06-05,0.0716,4.05,4.34,4.47,4.04,4.22,2845508,12008043,2.6 +VNDA,2024-06-06,0.2812,5.05,6.47,6.5587,6.1285,6.27,9808951,61502122,11.7 +ONMD,2024-06-06,0.1312,1.6,1.81,2.16,1.65,1.86,9408131,17499123,128.6 +MSGM,2024-06-06,0.1116,2.33,2.59,2.89,2.15,2.8,2572321,7202498,214.4 +DVLT,2024-06-06,0.1014,2.07,2.28,3.7799,2.2,2.4,51649867,123959680,62.6 +LYFT,2024-06-06,0.085,15.53,16.85,17.29,15.64,15.69,40489685,635283157,3.6 +CORZZ,2024-06-06,0.0833,4.8,5.2,7.34,5.1,6.42,2690415,17272464,19.7 +GERN,2024-06-07,0.1465,3.89,4.46,5.15,4.45,4.59,98937923,454125066,13.0 +VS,2024-06-07,0.1152,1.65,1.84,2.04,1.47,1.79,9350796,16737924,676.5 +MAIA,2024-06-07,0.0964,3.32,3.64,4.3099,3.6,3.86,1574705,6078361,3.7 +AVO,2024-06-07,0.0944,11.44,12.52,12.52,11.02,11.15,500109,5576215,2.2 +BCDA,2024-06-07,0.079,4.365,4.71,5.04,3.34,3.72,6656058,24760535,642.5 +OPRA,2024-06-10,0.1452,12.26,14.04,15.37,13.13,13.52,10950704,148053518,22.2 +MCRB,2024-06-10,0.1238,12.28,13.8,18.58,13.44,14.8,791321,11711550,4.5 +BNED,2024-06-10,0.0778,17.22,18.56,18.72,11.92,13.32,823245,10965623,7.0 +TPET,2024-06-11,0.9565,4.6,9.0,10.4,6.642,7.192,11867179,85348751,102.2 +TOYO,2024-06-11,0.3284,6.82,9.06,11.9,8.5,9.49,1720865,16331008,86.4 +AISP,2024-06-11,0.172,3.14,3.68,5.38,3.64,4.62,96582259,446210036,275.0 +HERE,2024-06-11,0.1349,1.542,1.75,1.769,1.41,1.485,7631820,11333252,104.9 +SHLS,2024-06-11,0.1013,6.81,7.5,7.765,7.11,7.45,9186855,68442069,1.7 +LPA,2024-06-11,0.0789,17.75,19.15,22.9999,16.45,17.25,364442,6286624,18.5 +BDTX,2024-06-11,0.0783,5.11,5.51,6.2899,5.29,6.1,2089488,12745876,3.9 +BMR,2024-06-12,0.3795,4.4,6.07,6.7099,5.13,5.23,56469970,295337943,186.8 +DDC,2024-06-12,0.1803,12.92,15.25,63.25,15.25,38.5,4226175,162707737,5349.6 +MREO,2024-06-12,0.1193,3.52,3.94,4.18,3.65,3.83,4311168,16511773,6.7 +WULF,2024-06-12,0.1022,3.475,3.83,4.2,3.75,3.84,39501731,151686647,2.7 +OPEN,2024-06-12,0.0887,2.13,2.319,2.538,2.21,2.23,38802740,86530110,2.7 +KORU,2024-06-12,0.0823,3.696,4.0,4.045,3.927,3.956,1684932,6665590,3.0 +TMCI,2024-06-12,0.0821,5.85,6.33,6.446,5.98,6.07,840615,5102533,0.7 +RUN,2024-06-12,0.0811,14.55,15.73,16.53,14.553,14.65,17306751,253543902,1.5 +LGVN,2024-06-13,0.3481,1.81,2.44,3.91,2.06,2.69,192691055,518338937,651.7 +TSLR,2024-06-13,0.1256,11.31,12.73,13.1,11.86,12.03,1551923,18669633,4.8 +TSLL,2024-06-13,0.1246,6.836,7.688,7.887,7.136,7.235,79826057,577541522,2.8 +TSLT,2024-06-13,0.1235,10.28,11.55,11.87,10.7494,10.9,16257207,177203556,2.9 +VNDA,2024-06-13,0.098,5.92,6.5,6.75,6.2,6.5,4269719,27753173,5.0 +VANI,2024-06-13,0.092,1.63,1.78,2.09,1.57,1.62,14740957,23880350,170.2 +SUPV,2024-06-13,0.0913,6.482,7.074,7.4,6.827,7.124,3319345,23647013,2.3 +AIMD,2024-06-14,0.3411,4.101,5.5,5.85,4.25,4.4,5903782,25976640,735.7 +LGVN,2024-06-14,0.2862,2.69,3.46,4.1,2.83,3.19,98033691,312727474,331.6 +MWG,2024-06-14,0.1777,3.219,3.791,4.779,3.409,4.249,1337001,5680917,183.8 +CATX,2024-06-14,0.1121,11.6,12.9,12.9,10.5,10.7,863409,9238476,1.5 +BOOM,2024-06-14,0.1044,13.22,14.6,14.98,13.83,14.43,1176716,16980011,3.4 +MBIO,2024-06-17,1.9831,6.5,19.39,48.7,14.4,37.5,22603493,847630987,463.5 +SCNI,2024-06-17,0.7479,3.49,6.1,6.97,5.11,5.6,30155650,168871640,4371.0 +XPOF,2024-06-17,0.0949,11.27,12.34,15.66,12.33,15.13,2847872,43088303,3.9 +FATE,2024-06-17,0.0886,3.61,3.93,4.07,3.54,3.57,2876712,10269861,1.4 +SNOA,2024-06-18,0.5958,3.37,5.378,5.996,3.72,3.84,3974461,15261930,67.2 +CMTL,2024-06-18,0.4101,2.17,3.06,4.38,2.9,4.07,91425417,372101447,218.9 +RJET,2024-06-18,0.2389,16.95,21.0,24.0,19.5,23.7,313391,7427366,21.4 +AIXC,2024-06-18,0.1796,8.74,10.31,11.83,8.6,9.35,560070,5236654,154.5 +CHGG,2024-06-18,0.1571,2.61,3.02,3.255,2.69,2.7,20178314,54481447,5.3 +HURA,2024-06-18,0.1028,6.265,6.909,7.945,6.825,7.56,720069,5443721,3.6 +QNST,2024-06-18,0.0808,15.59,16.85,17.54,16.19,16.21,606987,9839259,1.8 +CGNT,2024-06-18,0.0787,8.01,8.64,8.7,7.32,7.6,888746,6754469,5.8 +HROW,2024-06-20,0.1411,17.65,20.14,20.45,19.305,19.93,1207732,24070098,3.5 +PACK,2024-06-20,0.0789,5.7,6.15,6.9,6.15,6.49,1090766,7079071,3.8 +OCUL,2024-06-20,0.0729,5.49,5.89,6.445,5.89,6.08,5186681,31535020,3.0 +KRKR,2024-06-21,0.5233,6.88,10.48,12.2,7.338,8.0,3592301,28738408,2673.8 +ASTI,2024-06-21,0.2688,10.79,13.69,14.18,10.22,10.5,1321331,13873975,10.3 +AIXC,2024-06-21,0.1621,8.855,10.29,12.15,8.855,10.5,585481,6147550,127.7 +SLDB,2024-06-21,0.1349,6.3,7.15,7.398,6.11,6.46,2992703,19332861,17.3 +HURA,2024-06-21,0.1224,9.622,10.8,11.79,8.4,8.649,1094064,9462559,3.8 +RYM,2024-06-24,1.381,3.78,9.0,11.09,5.85,6.377,19592005,124938215,946.2 +ALT,2024-06-24,0.1654,6.41,7.47,8.49,7.08,7.14,22610165,161436578,9.0 +RDZN,2024-06-24,0.1419,1.55,1.77,2.34,1.77,2.0,5809251,11618502,139.5 +DJTWW,2024-06-24,0.1163,15.99,17.85,24.48,17.25,21.77,1326309,28873746,5.4 +NXL,2024-06-24,0.0976,1.64,1.8,3.13,1.77,2.31,33406495,77169003,688.0 +LRE,2024-06-24,0.0897,8.441,9.198,13.35,2.319,2.988,3168151,9466435,584.6 +DOMO,2024-06-24,0.0768,6.77,7.29,7.72,7.26,7.43,985494,7322220,2.4 +PUK,2024-06-24,0.07,17.28,18.49,18.69,18.43,18.58,1198241,22263317,2.0 +RGS,2024-06-25,1.7988,5.07,14.19,24.27,12.82,20.52,44781856,918923685,2621.4 +SNTI,2024-06-25,0.2754,2.52,3.214,3.771,2.762,2.82,3320539,9363919,414.5 +NCPL,2024-06-25,0.1726,8.75,10.26,10.86,8.785,9.31,752088,7001939,6.3 +ENVX,2024-06-25,0.1669,12.04,14.05,17.1199,13.75,16.26,33481957,544416620,6.7 +CPOP,2024-06-25,0.1565,11.5,13.3,23.4,13.0,18.1,3494779,63255499,416.9 +GRML,2024-06-25,0.1503,1.73,1.99,2.2,1.6,1.65,4755672,7846858,511.6 +WYY,2024-06-25,0.1327,3.09,3.5,4.15,3.1,3.87,1505588,5826625,35.7 +BTBT,2024-06-25,0.1111,2.43,2.7,3.4699,2.6401,3.395,40268314,136710926,5.8 +OPTX,2024-06-26,1.7787,2.35,6.53,8.39,3.5301,3.85,35424449,136384128,5293.6 +GRML,2024-06-26,1.7273,1.65,4.5,5.11,3.21,3.62,89785291,325022753,9659.5 +RIVN,2024-06-26,0.3654,11.96,16.33,16.35,14.17,14.74,261980425,3861591464,9.1 +DAKT,2024-06-26,0.1832,10.92,12.92,14.15,11.9,13.3,3568070,47455331,11.8 +SVRA,2024-06-26,0.1632,3.8,4.42,4.51,3.375,3.84,27588521,105939920,31.7 +CHNR,2024-06-26,0.1538,6.24,7.2,7.759,6.24,6.598,1012088,6677756,188.3 +FFAI,2024-06-26,0.1434,10.6,12.12,24.0,11.81,18.34,16650139,305363549,3.8 +GRND,2024-06-26,0.0732,10.25,11.0,12.15,10.63,11.82,3965489,46872079,8.2 +FFAI,2024-06-27,0.3419,18.34,24.61,27.6,20.0,24.0,14392419,345418056,3.3 +IIIV,2024-06-27,0.1894,19.75,23.49,23.49,21.69,22.14,841984,18641525,4.3 +SUZ,2024-06-27,0.1406,8.794,10.03,10.14,9.768,9.94,10072076,100116435,4.6 +PHUN,2024-06-27,0.1173,6.14,6.86,6.95,5.93,6.3,2660097,16758611,12.7 +TH,2024-06-27,0.0999,7.41,8.15,8.34,7.98,8.2,1724134,14137898,5.9 +DXYZ,2024-06-27,0.0833,10.8,11.7,15.1,11.21,14.44,2657714,38377390,7.7 +COSM,2024-06-28,0.7968,13.58,24.4,27.8,19.04,20.8,4064364,84538771,1604.6 +LUCY,2024-06-28,0.5909,6.6,10.5,13.2,9.43,9.9,18236992,180546220,91.5 +DXYZ,2024-06-28,0.1288,14.44,16.3,18.29,14.9,15.22,2785507,42395416,8.1 +MTC,2024-06-28,0.1003,3.49,3.84,4.168,3.68,4.078,1414650,5768942,2.1 +SNTI,2024-07-01,0.283,2.76,3.541,6.1,3.299,4.175,38956349,162642757,3860.7 +DTSS,2024-07-01,0.1756,4.5,5.29,7.67,4.6,4.94,14970483,73954186,906.9 +DFNS,2024-07-01,0.1649,3.104,3.616,3.616,2.409,3.393,1943328,6593711,61.5 +HUMA,2024-07-01,0.1167,4.8,5.36,6.3,5.05,5.37,9067415,48692018,3.7 +BITU,2024-07-01,0.0953,18.79,20.58,21.25,20.38,20.78,808033,16790925,1.0 +RDZN,2024-07-02,0.4753,1.62,2.39,3.28,2.1,2.95,108003905,318611519,2578.8 +TSLL,2024-07-02,0.0867,9.414,10.23,11.34,10.16,11.34,97272843,1103074039,3.0 +TSLR,2024-07-02,0.0859,15.6,16.94,18.79,16.84,18.79,2621624,49260314,5.9 +TSLT,2024-07-02,0.0854,14.17,15.38,17.04,15.28,17.03,16285954,277349796,2.6 +VIVO,2024-07-03,1.04,1.5,3.06,3.27,2.27,2.5,55806399,139515997,886.3 +DOYU,2024-07-03,0.3169,2.351,3.096,3.423,2.969,3.35,5246446,17575594,56.5 +KOSS,2024-07-03,0.2041,4.36,5.25,18.73,5.22,10.63,70055497,744689933,384.7 +NNDM,2024-07-03,0.0833,2.16,2.34,2.62,2.28,2.52,7265958,18310214,7.3 +HEPS,2024-07-03,0.0702,2.42,2.59,2.74,2.45,2.74,2160556,5919923,4.2 +AIXC,2024-07-05,1.1162,8.775,18.57,21.69,12.68,14.0,4893837,68513718,545.5 +MDWD,2024-07-05,0.4135,14.51,20.51,24.0,18.27,19.6,3787767,74240233,68.8 +KOSS,2024-07-05,0.3076,10.63,13.9,18.5,12.65,13.35,57882393,772729946,317.8 +ACHR,2024-07-05,0.1306,4.21,4.76,4.79,4.22,4.4,18777033,82618945,3.0 +M,2024-07-05,0.0798,16.41,17.72,18.73,17.64,17.97,17255325,310078190,4.1 +KORU,2024-07-05,0.076,4.2,4.519,4.635,4.452,4.592,2282468,10481093,5.0 +GSAT,2024-07-05,0.0727,16.5,17.7,18.45,17.1,18.3,588021,10760784,3.0 +GRFS,2024-07-08,0.2046,6.861,8.265,8.411,7.855,8.197,7580810,62139899,8.9 +POET,2024-07-08,0.1108,3.52,3.91,3.95,3.061,3.21,2961995,9508003,9.9 +ASTI,2024-07-08,0.1059,9.25,10.23,12.0,9.5,11.75,787315,9250951,6.5 +PLSE,2024-07-08,0.1054,12.05,13.32,17.0499,13.05,15.51,1813943,28134255,8.7 +MYO,2024-07-08,0.0836,2.87,3.11,4.1384,3.11,4.07,4780939,19458421,21.9 +SNGX,2024-07-09,2.21,2.0,6.42,14.8299,5.45,7.42,134220859,995918773,1676.7 +QURE,2024-07-09,0.6376,3.78,6.19,6.78,5.2,6.67,51495471,343474791,102.4 +BYRN,2024-07-09,0.1115,10.31,11.46,12.0,9.91,9.98,1317311,13146763,6.8 +QUCY,2024-07-09,0.1111,19.08,21.2,22.14,15.6,19.2,307025,5894880,37.6 +BEEM,2024-07-09,0.0832,6.49,7.03,7.68,6.55,7.66,1544898,11833918,15.2 +LGVN,2024-07-10,1.0418,2.87,5.86,6.4,4.17,4.55,110520058,502866263,105.3 +VIVO,2024-07-10,0.6941,2.55,4.32,4.62,2.9,3.05,44737182,136448405,603.8 +KZIA,2024-07-10,0.5625,9.6,15.0,54.0,13.5,33.41,9004863,300852472,2908.1 +AEHR,2024-07-10,0.1902,12.41,14.77,16.43,13.82,15.39,7180773,110512096,8.5 +SNGX,2024-07-10,0.1873,7.42,8.81,9.78,6.7,7.73,16382885,126639701,185.4 +GXAI,2024-07-10,0.1236,2.67,3.0,3.17,2.21,2.56,5816657,14890641,822.4 +QS,2024-07-11,0.3198,5.41,7.14,7.28,6.5701,7.06,86011266,607239537,19.6 +LXEO,2024-07-11,0.1861,16.44,19.5,19.5,16.48,17.44,936963,16340634,4.4 +MEI,2024-07-11,0.1647,8.62,10.04,12.74,9.98,12.56,3883804,48780578,6.2 +BNED,2024-07-11,0.1306,7.075,7.999,8.834,7.701,8.198,723984,5935220,1.5 +SOC,2024-07-11,0.0993,15.41,16.94,16.94,15.3,15.58,1039183,16190471,3.1 +HSCS,2024-07-11,0.0973,4.42,4.85,4.95,3.4,4.04,1846005,7457860,54.6 +SOUN,2024-07-11,0.0878,5.07,5.515,6.193,5.22,5.37,129537909,695618571,8.7 +OPEN,2024-07-11,0.0842,1.9,2.06,2.1,1.98,2.06,24078287,49601271,1.8 +TOYO,2024-07-12,0.9613,1.55,3.04,3.2,2.22,2.7,56853646,153504844,942.3 +AIXC,2024-07-12,0.4567,10.27,14.96,29.44,14.26,21.71,8404747,182467057,501.3 +TIL,2024-07-12,0.2515,9.7,12.14,13.24,12.0,12.72,462018,5876868,118.0 +SNTG,2024-07-12,0.2348,2.3,2.84,3.97,2.55,2.57,18384922,47249249,1730.5 +IMMP,2024-07-12,0.1741,2.01,2.36,2.6,2.13,2.31,6009681,13882363,32.8 +ARRY,2024-07-12,0.086,10.82,11.75,12.06,11.3,11.76,9125188,107312210,2.1 +FLG,2024-07-12,0.0784,10.97,11.83,11.83,10.45,10.94,5676563,62101599,1.4 +DJTWW,2024-07-15,0.7634,19.565,34.5,34.5,26.48,29.05,2340618,67994952,7.6 +SCNI,2024-07-15,0.6355,4.06,6.64,8.92,5.21,5.89,29492745,173712268,604.2 +PHUN,2024-07-15,0.2847,5.83,7.49,7.49,5.84,5.885,13037804,76727476,58.9 +CPOP,2024-07-15,0.2093,12.9,15.6,15.9,13.5,14.0,581054,8134756,75.2 +BITU,2024-07-15,0.1764,17.12,20.14,20.89,19.97,20.53,2557640,52508349,3.0 +RUM,2024-07-15,0.1296,5.94,6.71,7.6,6.06,7.17,17628478,126396187,17.9 +CTRN,2024-07-15,0.1147,18.65,20.79,21.05,19.32,19.94,408627,8148022,2.4 +SLDB,2024-07-15,0.1062,7.91,8.75,9.3731,8.44,8.56,777303,6653713,2.2 +SILO,2024-07-16,1.1215,16.05,34.05,40.35,28.2,35.85,11758609,421546132,1670.7 +TKLF,2024-07-16,0.3961,2.999,4.187,7.771,3.771,6.102,31835300,194259000,1393.8 +ANGO,2024-07-16,0.172,5.93,6.95,7.6,6.5805,7.51,3487950,26194504,7.4 +KYTX,2024-07-16,0.1049,9.91,10.95,11.4,10.15,11.07,926839,10260107,1.6 +MGRX,2024-07-16,0.0968,5.787,6.347,7.05,5.4,6.45,785727,5067939,25.8 +LASE,2024-07-16,0.0909,1.98,2.16,2.18,1.82,1.93,5219507,10073648,271.0 +KOSS,2024-07-16,0.0837,8.72,9.45,11.24,9.22,10.18,13950726,142018390,53.6 +CHGG,2024-07-16,0.0789,3.17,3.42,3.76,3.42,3.72,7607518,28299966,2.2 +SHIM,2024-07-17,0.3768,2.07,2.85,3.34,2.69,3.15,41052577,129315617,3227.3 +LCFY,2024-07-17,0.3229,5.45,7.21,8.45,5.95,6.58,23291754,153259741,10763.3 +LGVN,2024-07-17,0.1903,3.52,4.19,4.88,3.88,3.9,32522314,126837024,20.7 +GDTC,2024-07-17,0.1582,1.96,2.27,2.46,1.88,2.24,3606227,8077948,1706.7 +AEHR,2024-07-17,0.1437,16.84,19.26,21.44,18.44,20.61,12180096,251031778,12.5 +IMMR,2024-07-17,0.0903,11.29,12.31,12.34,11.16,11.37,1511793,17189086,2.4 +BE,2024-07-17,0.0902,15.08,16.44,17.225,15.23,15.28,17509648,267547421,3.3 +TKLF,2024-07-18,0.0856,5.593,6.072,8.357,5.485,6.951,4168889,28977947,182.5 +NVDX,2024-07-18,0.0738,12.74,13.68,13.74,12.48,13.56,6585253,89296030,0.8 +SERV,2024-07-19,0.6236,2.63,4.27,8.97,3.92,7.55,266271306,2010348360,751.2 +HE,2024-07-19,0.382,12.75,17.62,18.19,16.54,17.51,23450410,410616679,8.0 +NCPL,2024-07-22,0.5508,7.28,11.29,11.9,7.35,7.847,1776719,13941913,22.1 +SERV,2024-07-22,0.4954,7.55,11.29,13.89,7.84,8.77,151556829,1329153390,427.6 +DFNS,2024-07-22,0.1875,2.56,3.04,4.4,2.8,3.984,3274375,13045110,117.5 +LITS,2024-07-22,0.1259,2.86,3.22,4.1,3.04,3.47,4999196,17347210,494.8 +EMBC,2024-07-22,0.1049,12.11,13.38,14.35,13.28,13.96,804664,11233109,2.5 +DQ,2024-07-22,0.1001,16.08,17.689,18.27,16.97,17.15,1624495,27860089,2.2 +SSL,2024-07-22,0.0834,7.31,7.92,8.13,7.77,8.05,1265135,10184336,2.5 +AZTR,2024-07-23,2.759,10.79,40.56,79.92,28.77,33.1,11421483,378051087,747.4 +SOAR,2024-07-23,0.569,10.51,16.49,18.9,11.22,12.96,2033628,26355818,249.0 +TUSK,2024-07-23,0.3257,3.5,4.64,4.94,4.04,4.08,5256565,21446785,114.2 +FEIM,2024-07-23,0.302,9.324,12.14,12.92,11.59,12.68,1980985,25118889,170.2 +MESO,2024-07-23,0.1152,7.55,8.42,8.47,8.02,8.27,881476,7289806,6.1 +DRMA,2024-07-24,1.2154,13.0,28.8,50.0,22.5,26.7,6530798,174372306,1120.0 +BBLG,2024-07-24,0.72,7.5,12.9,25.5,9.9,11.52,6898248,79467816,1198.0 +PVLA,2024-07-24,0.6529,7.98,13.19,17.45,12.63,15.05,5845911,87980960,250.5 +ALLR,2024-07-24,0.2613,4.995,6.3,6.57,4.875,5.361,2192573,11754383,22.8 +TKNO,2024-07-24,0.1673,2.51,2.93,3.75,2.9,3.27,7928538,25926319,181.2 +OTLY,2024-07-24,0.1,20.0,22.0,23.0,19.0,19.37,404739,7839794,5.3 +AGPU,2024-07-25,1.4299,16.05,39.0,44.85,24.31,28.05,10739001,301228978,2998.0 +VBIO,2024-07-25,0.4879,5.2,7.737,7.771,5.53,6.922,3903767,27021875,563.3 +MIRA,2024-07-25,0.3898,2.36,3.28,3.73,2.6201,3.04,49289139,149838982,1048.2 +BALY,2024-07-25,0.2352,13.52,16.7,16.99,16.66,16.91,9453191,159853459,50.6 +INDV,2024-07-25,0.1645,10.88,12.67,13.16,12.25,13.09,1700611,22260997,10.1 +LPSN,2024-07-25,0.1032,18.9,20.85,21.0,17.55,19.27,317872,6125393,1.7 +NTCT,2024-07-25,0.1019,18.25,20.11,21.21,19.7387,20.37,1405230,28624535,2.2 +IMAX,2024-07-25,0.101,17.83,19.63,20.3,18.86,19.4,2653862,51484922,4.5 +COUR,2024-07-26,0.3941,7.41,10.33,11.74,9.995,10.72,24935554,267309138,10.6 +EAF,2024-07-26,0.2571,8.432,10.6,10.7,7.931,8.032,698012,5606432,2.1 +SCNX,2024-07-26,0.1771,11.63,13.69,14.84,12.32,12.79,781294,9992750,6.8 +BRSL,2024-07-26,0.1671,15.08,17.6,17.88,16.62,17.78,6332580,112593272,5.6 +NWL,2024-07-26,0.1404,5.692,6.491,8.044,6.41,7.999,26323587,210562372,6.1 +AEYE,2024-07-26,0.1253,19.64,22.1,27.3099,21.5601,27.15,1365703,37078836,6.0 +RILY,2024-07-26,0.1087,16.74,18.56,18.58,17.32,18.52,1282017,23742954,1.3 +NOV,2024-07-26,0.1083,17.55,19.45,19.72,18.04,18.66,10995190,205170245,4.3 +YIBO,2024-07-29,0.4751,2.915,4.3,7.8299,3.71,3.97,29411362,116763107,23004.6 +VBIO,2024-07-29,0.304,7.684,10.02,13.74,9.585,11.93,6244197,74493270,901.0 +LGVN,2024-07-29,0.1831,3.44,4.07,4.29,3.22,3.47,27523501,95506548,11.1 +OIS,2024-07-29,0.1097,4.74,5.26,5.75,5.22,5.39,2449227,13201333,3.7 +ZIM,2024-07-29,0.0777,11.59,12.49,12.89,12.29,12.79,5805099,74247216,1.5 +VRDN,2024-07-29,0.075,16.66,17.91,17.918,16.775,17.29,1702398,29434461,1.8 +BMR,2024-07-29,0.0742,4.85,5.21,5.75,4.25,4.61,7903573,36435471,36.0 +PALI,2024-07-29,0.0739,4.265,4.58,4.65,3.66,3.75,1665264,6244740,66.8 +IMNN,2024-07-30,1.8235,15.35,43.34,47.09,35.09,42.83,9415750,403276572,5739.6 +HLIT,2024-07-30,0.2604,11.75,14.81,15.31,13.64,14.24,6780707,96557267,6.3 +VBIO,2024-07-30,0.135,11.93,13.54,16.08,9.546,9.809,2938140,28820215,412.0 +MIRA,2024-07-30,0.131,2.29,2.59,2.78,2.29,2.295,4055779,9308012,75.9 +BBBY,2024-07-30,0.1229,13.59,15.26,15.44,12.21,12.26,6272444,76900163,3.1 +RR,2024-07-30,0.1203,1.58,1.77,1.88,1.44,1.52,18459938,28059105,80.5 +SERV,2024-07-30,0.115,19.39,21.62,24.09,14.59,15.0,71236481,1068547215,147.7 +TLRY,2024-07-30,0.1093,18.3,20.3,21.5,19.4,20.1,7213245,144986224,5.3 +NVDX,2024-07-31,0.1773,9.692,11.41,12.42,11.03,12.24,8373201,102487980,1.1 +AMDL,2024-07-31,0.1764,11.51,13.54,14.02,12.0476,12.51,9755903,122046346,4.2 +NVDL,2024-07-31,0.1764,15.7,18.47,20.12,17.86,19.78,94504938,1869307673,1.6 +FFAI,2024-07-31,0.1551,12.64,14.6,16.28,13.2,14.0,3630967,50833538,2.8 +PCRX,2024-07-31,0.1356,19.54,22.19,22.8818,20.32,20.65,1534925,31696201,1.5 +SERV,2024-07-31,0.082,15.0,16.23,18.3,14.89,17.52,40328080,706547961,79.4 +ZVRA,2024-07-31,0.0818,5.5,5.95,7.2,5.95,6.49,4561403,29603505,10.9 +BULZ,2024-07-31,0.0806,12.9,13.94,14.39,13.8,14.23,805210,11458138,0.8 +BBLG,2024-08-01,0.6944,12.96,21.96,22.2,16.02,16.32,11303001,184464976,1300.8 +RDHL,2024-08-01,0.4808,9.603,14.22,20.28,12.58,19.0,14404241,273680579,2183.5 +CDNA,2024-08-01,0.3007,19.99,26.0,26.5,21.5,23.58,4586177,108142053,7.6 +MAX,2024-08-01,0.2434,14.67,18.24,19.25,15.47,16.59,2779235,46107508,3.6 +QNTM,2024-08-01,0.1881,6.565,7.8,8.32,6.019,6.045,1327606,8025378,83.0 +PRM,2024-08-01,0.1692,9.69,11.33,11.378,10.05,10.73,2005993,21524304,3.2 +RSI,2024-08-01,0.1489,10.01,11.5,11.59,10.38,10.77,3769810,40600853,2.3 +RELY,2024-08-01,0.137,13.21,15.02,15.08,13.6,13.74,5056572,69477299,2.6 +VSEE,2024-08-02,1.5721,2.43,6.2503,6.338,4.1,4.25,47444857,201640642,531.0 +XCUR,2024-08-02,0.6178,2.475,4.004,4.675,3.085,3.31,13471617,44591052,1912.8 +LASR,2024-08-02,0.1194,11.22,12.56,12.71,10.8416,10.89,524370,5710389,2.5 +GDYN,2024-08-02,0.102,12.25,13.5,14.66,13.1301,13.84,1338287,18521892,4.2 +TVTX,2024-08-02,0.0844,9.24,10.02,10.355,8.7,9.0,2139051,19251459,2.2 +OSPN,2024-08-02,0.0706,13.73,14.7,15.13,13.49,13.74,658133,9042747,1.9 +CTOR,2024-08-05,0.2778,12.31,15.73,46.94,12.941,36.06,2269182,81826702,4965.4 +ZVRA,2024-08-05,0.1905,6.3,7.5,8.4399,7.35,7.88,8592411,67708198,16.7 +VIXM,2024-08-05,0.1385,16.24,18.49,19.92,17.3,19.91,1338970,26658892,17.2 +INDO,2024-08-05,0.1004,2.29,2.52,3.93,2.24,3.67,49846148,182935363,352.0 +AAPD,2024-08-05,0.0941,16.47,18.02,18.23,16.94,17.25,2114837,36480938,7.9 +TAIL,2024-08-05,0.0814,11.91,12.88,13.33,12.07,12.45,425147,5293080,17.1 +TENX,2024-08-06,0.6884,2.92,4.93,5.15,3.54,3.76,28168434,105913311,2319.6 +LUMN,2024-08-06,0.5367,2.59,3.98,5.3,3.65,5.0,311862951,1559314755,25.6 +NPKI,2024-08-06,0.1777,6.98,8.22,8.22,7.8,8.01,1953589,15648247,3.4 +NNE,2024-08-06,0.151,7.88,9.07,9.49,7.9202,9.11,1543098,14057622,0.9 +VSEE,2024-08-06,0.1311,2.67,3.02,3.93,2.98,3.58,19831018,70995044,190.6 +YOU,2024-08-06,0.1306,18.6,21.03,24.03,20.95,23.1,6502907,150217151,6.3 +ARCT,2024-08-06,0.1281,19.79,22.325,23.025,19.705,19.83,594314,11785246,1.4 +CORZ,2024-08-06,0.1277,8.22,9.27,9.87,8.402,9.71,15398667,149521056,1.2 +IDAI,2024-08-07,0.5127,5.442,8.232,8.508,5.583,6.746,4349711,29343150,254.6 +LUMN,2024-08-07,0.444,5.0,7.22,7.83,6.1,6.63,264638611,1754553990,19.4 +CEVA,2024-08-07,0.3019,16.13,21.0,21.0,18.93,19.44,261303,5079730,2.2 +SWIM,2024-08-07,0.2797,3.11,3.98,4.87,3.8486,4.4,12250431,53901896,40.4 +RYAM,2024-08-07,0.2175,5.61,6.83,7.88,6.77,7.3,1690939,12343854,3.7 +INGN,2024-08-07,0.2147,8.15,9.9,11.3999,9.9,11.08,1155500,12802940,7.4 +VTEX,2024-08-07,0.2118,6.02,7.295,7.295,6.68,6.85,764071,5233886,1.7 +ACMR,2024-08-07,0.2007,15.125,18.16,18.53,16.5,17.59,4659793,81965758,3.2 +LODE,2024-08-08,0.5957,1.504,2.4,2.65,1.582,1.645,17431570,28674932,68.8 +XMTR,2024-08-08,0.3635,11.39,15.53,16.4389,14.075,16.0,2825024,45200384,5.6 +AXGN,2024-08-08,0.3258,7.92,10.5,10.8649,10.055,10.7,2630405,28145333,8.5 +ASPN,2024-08-08,0.3195,18.5,24.41,24.41,20.76,21.46,5432865,116589282,5.0 +SKYT,2024-08-08,0.285,5.72,7.35,8.46,6.9427,8.44,2311607,19509963,8.1 +GPGI,2024-08-08,0.2117,6.231,7.55,8.123,7.119,8.048,5772390,46456194,19.2 +XPON,2024-08-08,0.2072,8.35,10.08,10.27,7.55,9.8,1628092,15955301,2222.7 +CLPT,2024-08-08,0.1941,6.44,7.69,9.06,7.3064,9.06,640606,5803890,4.6 +QNTM,2024-08-09,1.0869,5.889,12.29,23.81,9.984,13.0,17735528,230561864,647.8 +INOD,2024-08-09,0.2519,16.375,20.5,21.1,17.11,18.55,1720059,31907094,3.6 +PBI,2024-08-09,0.2518,5.358,6.707,7.26,5.839,5.933,8719634,51733588,3.7 +ADMA,2024-08-09,0.2387,12.19,15.1,16.64,14.95,15.96,14567792,232501960,4.9 +BLND,2024-08-09,0.2305,2.69,3.31,4.1398,3.18,3.3,17895493,59055126,9.1 +HNST,2024-08-09,0.216,3.24,3.94,4.09,3.625,3.68,4289711,15786136,3.2 +IOVA,2024-08-09,0.1826,7.94,9.39,10.16,8.66,9.92,23625123,234361220,3.7 +EMBC,2024-08-09,0.1501,13.19,15.17,15.94,13.89,14.15,607643,8598148,1.7 +DPRO,2024-08-12,0.2508,2.5,3.127,5.875,3.05,3.42,8305916,28406232,304.9 +AIMD,2024-08-12,0.2318,2.606,3.21,3.25,2.716,2.816,3309167,9318614,105.0 +KEY,2024-08-12,0.1662,13.36,15.58,15.62,14.39,14.57,45932624,669238331,3.2 +BEKE,2024-08-12,0.1193,13.58,15.2,15.33,14.04,14.33,11037158,158162474,1.6 +ZNTL,2024-08-12,0.11,3.0,3.33,3.69,3.0,3.02,1859009,5614207,2.2 +BLND,2024-08-12,0.0879,3.3,3.59,3.915,3.484,3.66,5725699,20956058,2.9 +INDO,2024-08-12,0.071,3.24,3.47,4.89,3.24,4.63,32695757,151381354,161.6 +APLM,2024-08-13,0.7941,15.83,28.4,28.41,14.0,14.05,1601270,22497843,344.6 +LWAY,2024-08-13,0.2284,11.21,13.77,16.9639,13.67,16.66,1262709,21036731,12.3 +HSAI,2024-08-13,0.2163,3.56,4.33,4.59,4.03,4.14,2261027,9360651,6.9 +ESOA,2024-08-13,0.1883,6.563,7.799,9.32,7.358,9.016,1246167,11235441,15.5 +GCTS,2024-08-13,0.1324,3.4,3.85,3.98,3.435,3.76,10134800,38106848,88.6 +SPRY,2024-08-13,0.106,10.85,12.0,13.1,11.28,13.06,4358301,56919411,6.9 +LASE,2024-08-13,0.0922,4.34,4.74,4.83,3.0,3.36,2054689,6903755,40.7 +PSFE,2024-08-13,0.0899,19.36,21.1,21.38,19.73,20.59,669138,13777551,2.8 +ALBT,2024-08-14,2.2052,3.825,12.26,12.6,6.396,7.173,16757155,120199072,5177.6 +BURU,2024-08-14,0.3524,7.934,10.73,14.22,9.132,11.18,8593907,96079880, +SERV,2024-08-14,0.3404,10.37,13.9,14.44,10.9,11.37,44246764,503085706,3.5 +REBN,2024-08-14,0.2,2.8,3.36,5.47,3.1,3.79,6267179,23752608,171.8 +VSXY,2024-08-14,0.1668,19.07,22.25,23.17,21.41,22.2,11211432,248893790,5.2 +GRAL,2024-08-14,0.1282,15.84,17.87,17.9,15.09,15.39,1503357,23136664,1.6 +CRMD,2024-08-14,0.0979,3.78,4.15,4.99,3.9,4.92,2871856,14129531,6.7 +NKTX,2024-08-14,0.0966,4.97,5.45,6.28,4.965,5.13,2108402,10816102,3.8 +CING,2024-08-15,1.2547,1.845,4.16,6.8,3.8,4.8,105319107,505531713,2652.3 +VSME,2024-08-15,0.403,14.54,20.4,25.4,18.2,19.82,2462084,48798504,481.0 +SPCB,2024-08-15,0.3448,3.944,5.304,5.59,3.9,3.96,3532079,13987032,39.6 +AISP,2024-08-15,0.256,2.52,3.165,3.23,2.7,2.86,10848467,31026615,27.7 +GAMB,2024-08-15,0.188,8.83,10.49,11.2999,10.44,10.9,2067414,22534812,14.6 +CLBT,2024-08-15,0.1191,13.94,15.6,16.42,14.43,14.96,6443868,96400265,5.0 +RETL,2024-08-15,0.1064,8.123,8.987,9.193,8.845,9.115,1159403,10567958,2.5 +TLS,2024-08-15,0.0979,2.195,2.41,2.7762,2.41,2.77,3119144,8640028,7.1 +CING,2024-08-16,1.1917,4.8,10.52,20.83,8.71,17.69,100646484,1780436301,2534.7 +RILYN,2024-08-16,0.3278,5.875,7.801,8.527,7.14,7.842,641772,5032776,24.5 +RILY,2024-08-16,0.2401,5.04,6.25,6.8,5.29,5.85,21311313,124671181,21.8 +GTEC,2024-08-16,0.2284,1.62,1.99,2.5099,1.952,2.25,32606682,73365034,582.2 +QNTM,2024-08-16,0.1967,4.27,5.11,5.44,3.8,4.27,3433267,14660050,95.4 +EBS,2024-08-16,0.1547,8.66,10.0,11.6099,9.61,10.74,10630666,114173352,3.7 +FFAI,2024-08-16,0.1002,5.072,5.58,5.792,4.868,5.136,2742123,14083543,2.4 +PL,2024-08-16,0.0783,2.17,2.34,2.58,2.212,2.52,9340749,23538687,5.8 +ALZN,2024-08-19,2.4461,18.36,63.27,135.54,51.48,52.65,9119584,480146097,3029.3 +TELO,2024-08-19,0.198,3.99,4.78,6.38,4.78,6.1,832498,5078237,31.1 +XPER,2024-08-19,0.1828,7.55,8.93,8.93,8.44,8.78,1868082,16401759,4.3 +AIFC,2024-08-19,0.1674,2.27,2.65,3.05,2.6001,2.92,2983180,8710885,25.6 +ZIM,2024-08-19,0.1565,12.97,15.0,16.17,14.51,15.14,27212046,411990376,7.6 +RDHL,2024-08-19,0.1551,7.253,8.378,8.875,7.55,8.028,931592,7478820,31.3 +FUBO,2024-08-19,0.1373,18.36,20.88,26.16,20.76,21.6,8510746,183832113,12.0 +POET,2024-08-19,0.1079,2.78,3.08,3.52,3.0,3.14,3649926,11460767,6.9 +INM,2024-08-20,3.8885,2.96,14.47,15.7,7.522,8.624,16809812,144967818,406.1 +BTTC,2024-08-20,0.7709,5.02,8.89,14.8,8.3401,10.0,24949142,249491420,6515.0 +NEON,2024-08-20,0.2812,2.56,3.28,3.51,2.86,3.36,5928889,19921067,173.9 +TANH,2024-08-20,0.2698,5.04,6.4,6.4,5.252,5.32,1012549,5386760,45.7 +TLS,2024-08-20,0.1765,2.89,3.4,3.72,3.15,3.62,5165126,18697756,11.3 +LUNR,2024-08-20,0.1741,4.25,4.99,6.12,4.51,5.67,99635865,564935354,39.8 +BTBT,2024-08-20,0.1334,2.99,3.389,3.74,3.32,3.61,27215746,98248843,2.2 +POET,2024-08-20,0.1051,3.14,3.47,3.49,3.1,3.21,2135201,6853995,4.0 +GLMD,2024-08-21,0.1924,3.623,4.32,5.304,3.601,5.16,1460857,7538022,622.0 +IMMR,2024-08-21,0.1461,9.205,10.55,10.55,9.084,9.177,3527253,32369600,4.0 +GRFS,2024-08-21,0.0918,7.008,7.651,7.768,7.349,7.475,5261957,39333128,4.1 +AIRI,2024-08-22,0.6453,3.75,6.17,9.4399,5.3,7.17,68388628,490346462,5901.2 +MOBX,2024-08-22,0.5337,8.802,13.5,13.5,10.3,10.9,1725007,18802576,337.5 +AMS,2024-08-22,0.3158,3.04,4.0,4.6,3.13,3.6,5846281,21046611,776.2 +PTON,2024-08-22,0.1399,3.36,3.83,4.75,3.72,4.55,135473846,616405999,12.8 +BENF,2024-08-22,0.1064,18.51,20.48,22.96,18.48,20.16,977799,19712427,197.4 +OPRA,2024-08-22,0.0917,11.78,12.86,14.12,12.84,13.31,2896362,38550578,6.0 +SQNS,2024-08-23,1.9087,13.58,39.5,42.75,27.5,28.75,3363806,96709422,1005.6 +ALP,2024-08-23,0.5739,2.7003,4.25,8.28,3.9,6.0,49669079,298014474,2373.4 +FFAI,2024-08-23,0.306,8.04,10.5,11.4,6.66,7.23,77861897,562941515,67.8 +UEC,2024-08-23,0.0737,4.75,5.1,5.58,5.05,5.37,10710572,57515771,1.9 +DNN,2024-08-23,0.0733,1.5,1.61,1.77,1.59,1.71,28188065,48201591,2.0 +MRM,2024-08-26,1.8266,2.48,7.01,8.3899,5.37,5.85,39932532,233605312,24887.8 +AURE,2024-08-26,1.0027,7.54,15.1,17.5,11.9,14.3,5375530,76870079,4803.9 +MIRA,2024-08-26,0.427,1.85,2.64,2.7,2.08,2.11,27783458,58623096,20.5 +CMPS,2024-08-26,0.1544,7.19,8.3,8.5367,7.52,8.0,2989430,23915440,7.3 +INDO,2024-08-26,0.1378,3.12,3.55,3.7,3.22,3.59,3501832,12571576,3.2 +BNAI,2024-08-26,0.1348,17.8,20.2,26.4,14.8,17.1,382874,6547145,56.3 +DOGZ,2024-08-26,0.128,19.77,22.3,23.5,19.04,22.65,338666,7670784,13.9 +NDRA,2024-08-26,0.1233,13.87,15.58,25.9,15.4,22.52,2953064,66503001,648.1 +ENSC,2024-08-27,0.7575,6.572,11.55,12.22,8.375,9.666,6340959,61291709,1292.1 +ADXN,2024-08-27,0.5666,7.66,12.0,13.27,10.05,11.58,16755181,194024995,4437.9 +TANH,2024-08-27,0.4378,6.176,8.88,10.34,6.952,7.436,3596729,26745276,137.8 +TRIB,2024-08-27,0.399,2.03,2.84,3.39,2.425,2.5,69703253,174258132,2371.4 +TUYA,2024-08-27,0.0907,1.532,1.671,1.705,1.376,1.376,4821277,6634077,20.5 +HAIN,2024-08-27,0.0703,6.83,7.31,9.32,7.25,8.1,11604398,93995623,13.8 +WALD,2024-08-28,0.1655,2.9,3.38,4.7399,2.7,3.06,6560642,20075564,82.3 +WEST,2024-08-28,0.1081,8.51,9.43,9.7,8.62,8.67,1023981,8877915,5.7 +TLS,2024-08-28,0.0823,3.16,3.42,3.78,3.33,3.7,2252386,8333828,4.5 +BCDA,2024-08-29,0.9545,2.2,4.3,4.66,2.93,4.02,35778758,143830607,1880.9 +LUCY,2024-08-29,0.8792,3.31,6.22,7.0,4.75,5.09,86549816,440538563,887.2 +BOF,2024-08-29,0.3758,1.65,2.27,2.67,1.57,1.88,55599728,104527488,872.7 +XRTX,2024-08-29,0.2522,5.75,7.2,14.9,6.75,13.5,34063179,459852916,13785.2 +IREN,2024-08-29,0.1159,7.42,8.28,9.2,8.24,8.52,27835291,237156679,2.3 +BZ,2024-08-29,0.079,10.88,11.74,12.29,11.41,12.24,9155899,112068203,2.7 +TOVX,2024-08-29,0.0771,3.5,3.77,5.17,3.4,4.7,5768462,27111771,568.5 +NOK,2024-08-29,0.0762,4.07,4.38,4.39,4.235,4.351,50252965,218650650,4.5 +TOVX,2024-08-30,0.3149,4.7,6.18,7.15,4.95,5.9,26144063,154249971,1942.2 +LUNR,2024-08-30,0.2344,4.82,5.95,6.0,4.94,4.97,48433740,240715687,15.6 +EBS,2024-08-30,0.1785,8.91,10.5,10.5,8.0501,8.31,9930933,82526053,3.9 +AISP,2024-08-30,0.0868,2.65,2.88,3.28,2.8608,3.11,3152991,9805802,7.5 +CPST,2024-09-03,2.3182,7.48,24.82,24.82,24.735,24.7496,435845,10786989, +SIFY,2024-09-03,1.4283,1.987,4.825,5.46,3.761,3.967,40308184,159902565,1146.1 +PSNYW,2024-09-03,1.1175,4.11,8.703,18.26,7.92,8.82,1335441,11778589,905.7 +PRHI,2024-09-03,0.3772,4.851,6.681,9.73,5.676,8.05,9315721,74991554,15565.1 +SHLS,2024-09-03,0.2876,5.39,6.94,7.0,6.095,6.23,25120869,156503013,6.4 +SOC,2024-09-03,0.1933,16.84,20.095,24.36,20.09,23.43,9168774,214824374,28.6 +BOF,2024-09-03,0.19,2.0,2.38,4.11,2.35,3.38,143408521,484720800,2250.9 +U,2024-09-03,0.091,16.37,17.86,18.17,16.62,16.7,22534186,376320906,2.7 +PRHI,2024-09-04,0.487,8.05,11.97,12.95,9.59,10.22,6353293,64930654,8166.2 +ATRA,2024-09-04,0.2012,6.81,8.18,9.36,7.77,9.05,1912811,17310939,39.7 +CLOV,2024-09-04,0.088,2.5,2.72,2.985,2.67,2.865,18192791,52122346,2.3 +BYRN,2024-09-04,0.0791,10.75,11.6,14.9696,11.525,14.85,1851374,27492903,11.4 +BLNE,2024-09-05,2.3943,7.601,25.8,29.8,13.7,14.4,13775030,198360432,8463.9 +APLD,2024-09-05,0.5401,3.24,4.99,5.71,4.25,5.37,149889910,804908816,34.2 +FFAI,2024-09-05,0.1527,5.24,6.04,6.46,4.81,5.21,20096327,104701863,6.7 +PPTA,2024-09-05,0.1001,8.09,8.9,9.7,8.7,9.02,1472237,13279577,7.7 +YEXT,2024-09-05,0.0996,4.92,5.41,5.67,5.25,5.56,2990980,16629848,4.4 +SOAR,2024-09-05,0.0765,9.19,9.893,12.83,9.893,10.99,594143,6529631,73.3 +BENF,2024-09-06,0.5867,12.0,19.04,26.64,16.16,16.4,14407330,236280211,3165.4 +XPON,2024-09-06,0.357,7.17,9.73,10.9,6.61,6.8,1648624,11210643,14.7 +VOR,2024-09-06,0.1624,16.5,19.18,23.2,17.4,18.16,1067008,19376865,117.8 +FFAI,2024-09-06,0.1478,5.21,5.98,6.52,4.5,4.8,20462118,98218166,5.9 +LUCK,2024-09-06,0.1336,10.33,11.71,12.15,10.73,11.01,2084218,22947240,5.4 +TVTX,2024-09-06,0.0876,9.93,10.8,11.91,10.64,10.98,7893838,86674341,9.1 +PATH,2024-09-06,0.0714,12.74,13.65,14.06,11.8615,11.97,38813948,464602957,4.7 +PSNYW,2024-09-06,0.07,6.168,6.6,15.5,5.58,8.7,1147967,9987312,735.2 +SINT,2024-09-09,1.0922,2.82,5.9,6.9799,4.21,4.36,68704081,299549793,1669.4 +TNXP,2024-09-09,0.614,14.25,23.0,23.47,16.05,16.51,2294649,37884654,19.0 +INBS,2024-09-09,0.6139,15.8,25.5,30.0,16.89,17.9,9083677,162597818,1284.5 +BURU,2024-09-09,0.3217,2.58,3.41,3.942,2.653,3.343,2583926,8638064,36.0 +SMMT,2024-09-09,0.3089,12.27,16.06,21.5,15.9525,19.14,47841469,915685716,28.0 +RLAY,2024-09-09,0.2901,6.24,8.05,10.72,7.81,9.51,19068541,181341824,22.5 +SGMT,2024-09-09,0.1706,2.52,2.95,3.69,2.82,3.15,3186795,10038404,15.7 +TIL,2024-09-09,0.1509,14.25,16.4,23.72,16.0101,21.99,1144892,25176175,43.5 +AVO,2024-09-10,0.2161,10.69,13.0,13.14,12.05,12.99,2517888,32707365,21.7 +MTRX,2024-09-10,0.2024,9.14,10.99,11.2,10.3444,10.54,1137957,11994066,10.3 +NNE,2024-09-10,0.1757,7.4,8.7,9.35,7.87,8.79,3190752,28046710,2.7 +LASE,2024-09-10,0.1583,6.76,7.83,9.36,7.26,9.15,2820026,25803237,4.7 +VRDN,2024-09-10,0.1346,14.19,16.1,18.98,15.1201,18.75,16590334,311068762,20.4 +INBS,2024-09-10,0.0838,17.9,19.4,22.0,17.6,19.7,438631,8641030,59.2 +INMD,2024-09-10,0.0805,15.52,16.77,17.41,16.27,16.89,2195384,37080035,2.5 +CNEY,2024-09-11,1.3139,7.455,17.25,40.0,17.25,34.75,13899042,482991709,8275.7 +FTCI,2024-09-11,0.5549,2.251,3.5,5.758,3.16,4.592,28338882,130132146,300.9 +TANH,2024-09-11,0.5101,5.536,8.36,10.2,6.6,7.2,5438437,39156746,97.4 +PLCE,2024-09-11,0.3898,4.9,6.81,10.2,6.6,9.1,73381283,667769675,227.3 +SGML,2024-09-11,0.1318,9.41,10.65,11.64,10.21,10.61,2199509,23336790,2.3 +LAR,2024-09-11,0.1163,2.15,2.4,2.6195,2.37,2.49,3226799,8034729,2.7 +PCT,2024-09-11,0.1045,4.69,5.18,6.99,5.0688,6.76,10226770,69132965,6.8 +LAC,2024-09-11,0.1041,2.21,2.44,2.52,2.31,2.34,5412025,12664138,1.8 +TNON,2024-09-12,1.3529,3.06,7.2,9.62,3.82,4.4,37198147,163671846,7741.5 +MNPR,2024-09-12,1.1458,2.4,5.15,5.4406,3.17,3.95,41004636,161968312,2437.5 +NTGR,2024-09-12,0.2348,15.93,19.67,21.9399,19.64,20.84,3260929,67957760,16.1 +TWAV,2024-09-12,0.2271,3.39,4.16,6.7,3.6001,6.54,33698254,220386581,336.9 +GRRR,2024-09-12,0.2184,3.16,3.85,4.18,3.16,3.37,11709722,39461763,104.0 +GV,2024-09-12,0.1921,2.03,2.42,6.64,2.18,4.42,45831476,202575123,17526.4 +CSBR,2024-09-12,0.1548,4.07,4.7,5.23,4.11,4.46,2120755,9458567,727.7 +MPT,2024-09-12,0.141,4.263,4.864,5.081,4.484,4.953,44645995,221131613,3.9 +TNON,2024-09-13,1.9091,4.4,12.8,15.7884,7.2,7.55,24784586,187123624,4843.6 +RMSG,2024-09-13,0.9448,12.33,23.98,55.28,17.35,37.0001,205220,7593160,237.1 +ZBIO,2024-09-13,0.8186,10.09,18.35,18.9899,17.02,18.15,1924933,34937533, +ENVX,2024-09-13,0.0803,9.34,10.09,10.4,9.54,9.7,8919740,86521478,1.7 +IBEX,2024-09-13,0.0759,16.73,18.0,20.02,17.97,19.55,537243,10503100,13.0 +BBLG,2024-09-16,0.575,4.8,7.56,11.88,6.78,11.34,26861894,304613877,1499.3 +ZNTL,2024-09-16,0.5309,3.24,4.96,5.44,3.65,3.68,44623715,164215271,64.5 +DRMA,2024-09-16,0.5063,15.8,23.8,24.9,18.6,23.2,2423194,56218100,249.9 +XCUR,2024-09-16,0.425,1.6,2.28,2.67,1.91,2.26,19071470,43101522,300.2 +BLCO,2024-09-16,0.1672,15.55,18.15,18.3,17.47,17.8,6126591,109053319,24.3 +BHC,2024-09-16,0.0744,6.32,6.79,7.045,6.585,7.0,6593274,46152918,5.7 +RLAY,2024-09-16,0.0724,7.6,8.15,8.315,7.83,8.11,4998892,40541014,5.7 +SMSI,2024-09-17,0.6252,2.615,4.25,6.0,3.585,5.7,37563075,214109527,1560.9 +GLMD,2024-09-17,0.385,3.87,5.36,23.8,5.3401,15.1,98531163,1487820561,1861.2 +RLMD,2024-09-17,0.2442,3.03,3.77,3.77,3.199,3.44,2096745,7212802,25.3 +TALK,2024-09-17,0.1937,1.91,2.28,2.5,2.14,2.17,21732079,47158611,38.1 +BOOM,2024-09-17,0.1549,10.91,12.6,13.6206,12.4,13.0,1355202,17617626,8.0 +TDAY,2024-09-17,0.1106,4.61,5.12,5.57,4.96,5.47,4208859,23022458,2.8 +CMP,2024-09-17,0.1031,9.21,10.16,12.8,9.9,11.15,4490605,50070245,4.7 +CAPR,2024-09-17,0.102,4.41,4.86,5.19,4.59,5.08,1675728,8512698,6.7 +ALP,2024-09-18,1.7903,4.53,12.64,23.01,8.8,9.91,51568822,511047026,446.7 +LUNR,2024-09-18,0.5519,5.4,8.38,8.95,7.44,7.47,141864555,1059728225,17.5 +VEEA,2024-09-18,0.4876,5.25,7.81,18.56,6.96,12.25,6415419,78588882,16685.1 +VVOS,2024-09-18,0.2214,2.8,3.42,5.95,3.02,4.13,74202829,306457683,1915.0 +SENS,2024-09-18,0.1144,8.708,9.704,9.8,7.7,8.202,687577,5639506,8.4 +OSG,2024-09-18,0.0859,11.17,12.13,12.23,11.5,11.68,1043623,12189516,2.7 +AIOT,2024-09-18,0.0773,4.66,5.02,5.53,4.78,5.0,4777361,23886805,6.1 +XCUR,2024-09-19,1.4629,2.29,5.64,6.0,3.4601,3.93,17935720,70487379,234.4 +RZLV,2024-09-19,0.7116,4.75,8.13,10.76,5.62,7.0,7604573,53232011,143.6 +EWTX,2024-09-19,0.3503,19.07,25.75,30.0,24.84,29.5,11932326,352003617,16.4 +GLMD,2024-09-19,0.3188,6.9,9.1,13.58,7.9,8.4,36198702,304069096,497.3 +ALP,2024-09-19,0.1746,9.91,11.64,12.93,8.27,10.21,2478448,25304954,21.0 +BITU,2024-09-19,0.1122,16.49,18.34,18.61,17.92,18.25,1872682,34176446,1.0 +MBLY,2024-09-19,0.1068,11.61,12.85,13.79,12.65,13.35,18141409,242187810,4.0 +BTBT,2024-09-19,0.0941,2.87,3.14,3.175,3.0088,3.05,10718363,32691007,1.0 +XPON,2024-09-20,1.232,5.82,12.99,22.81,8.0,8.48,14614372,123929874,129.9 +BATL,2024-09-20,1.2177,2.94,6.52,6.57,6.45,6.57,1461623,9602863,90.1 +SDEV,2024-09-20,0.7509,1.642,2.875,3.338,2.034,2.446,29118384,71223567,1344.3 +TNON,2024-09-20,0.3499,5.03,6.79,7.51,4.97,5.47,13179238,72090431,1799.3 +AENT,2024-09-20,0.2059,2.04,2.46,3.45,2.41,2.73,4226339,11537905,279.0 +TONX,2024-09-20,0.1745,11.12,13.06,17.4,12.8,14.8,893241,13219966,25.2 +GLMD,2024-09-20,0.1726,8.4,9.85,12.6,8.3601,9.35,15047620,140695247,184.1 +OKLO,2024-09-20,0.0832,6.61,7.16,8.44,7.0,8.41,15079161,126815744,8.8 +XPON,2024-09-23,0.4021,8.48,11.89,13.2,9.61,11.7,4325720,50610924,38.4 +DFNS,2024-09-23,0.3729,1.7,2.334,2.856,1.806,2.012,8705925,17516321,384.9 +UZX,2024-09-23,0.2066,4.183,5.047,5.047,3.9,4.476,1982977,8875805,2280.6 +PBK,2024-09-23,0.2012,3.33,4.0,4.5,3.75,4.3,1385614,5958140,98.0 +BDTX,2024-09-23,0.1849,4.76,5.64,5.69,4.46,4.5,29597302,133187859,52.4 +POET,2024-09-23,0.1083,3.14,3.48,4.56,3.3801,4.4,13717173,60355561,17.5 +LASE,2024-09-23,0.0759,10.41,11.2,19.8,11.0,18.8,13540430,254560084,12.8 +MSS,2024-09-24,1.3636,7.15,16.9,18.9,12.7,15.9,10171560,161727804,1759.9 +CAPR,2024-09-24,0.4121,5.97,8.43,9.2449,7.4239,9.1,30528283,277807375,121.2 +HSCS,2024-09-24,0.3946,2.94,4.1,4.6,3.69,4.25,17307319,73556105,993.2 +WVE,2024-09-24,0.2004,5.34,6.41,8.35,6.37,8.19,15727975,128812115,34.6 +CHAU,2024-09-24,0.14,11.64,13.27,13.5,13.16,13.47,1002040,13497478,12.2 +BABX,2024-09-24,0.1308,19.57,22.13,22.7771,21.35,22.67,569338,12906892,4.6 +TME,2024-09-24,0.1304,9.802,11.08,11.56,10.68,11.41,30514575,348171300,3.0 +DFNS,2024-09-24,0.1133,2.012,2.24,3.119,2.022,2.67,4787974,12783890,203.1 +ATCH,2024-09-25,1.0761,11.56,24.0,25.8,16.82,17.88,2607135,46615573,536.1 +ORBS,2024-09-25,0.6627,2.49,4.14,4.8601,3.35,3.63,100600651,365180363,2313.1 +CLYM,2024-09-25,0.221,6.56,8.01,8.15,5.33,5.5,5350219,29426204,21.2 +TNON,2024-09-25,0.204,4.02,4.84,5.95,4.55,5.39,23751697,128021646,410.6 +SBC,2024-09-25,0.1463,6.63,7.6,12.5,7.249,8.0,1561292,12490336,201.4 +CAPR,2024-09-25,0.0956,9.1,9.97,12.87,9.9,10.34,41984880,434123659,166.7 +DJTWW,2024-09-25,0.0919,7.94,8.67,10.03,8.35,8.995,778231,7000187,6.4 +RZLV,2024-09-25,0.0813,4.92,5.32,8.12,5.3,7.52,3173486,23864614,56.1 +KTTA,2024-09-26,0.844,3.845,7.09,7.5,5.3501,5.85,57247422,334897418,6354.8 +DUO,2024-09-26,0.48,8.0,11.84,22.88,10.88,17.12,16121499,276000062,1512.0 +HURA,2024-09-26,0.2531,5.863,7.347,7.63,6.332,6.783,1973874,13388787,49.8 +GOTU,2024-09-26,0.1753,2.91,3.42,3.8,3.41,3.71,12564829,46615515,8.0 +TAL,2024-09-26,0.1707,8.32,9.74,11.95,9.705,10.28,33116896,340441690,8.9 +CHAU,2024-09-26,0.167,13.17,15.37,15.46,15.07,15.29,989648,15131717,11.6 +KORU,2024-09-26,0.1581,3.309,3.832,3.889,3.732,3.866,2450098,9472078,2.7 +BEKE,2024-09-26,0.156,15.83,18.3,19.83,18.21,19.06,50645631,965305726,9.8 +CNEY,2024-09-27,0.7759,14.5,25.75,31.75,22.09,24.0,8925365,214208760,1463.8 +XPON,2024-09-27,0.4627,6.44,9.42,9.56,7.15,7.22,2663860,19233069,23.7 +DUO,2024-09-27,0.4019,17.12,24.0,25.44,18.24,20.16,4865389,98086242,428.3 +TNXP,2024-09-27,0.2818,13.66,17.51,21.24,14.34,14.6,2076161,30311950,9.3 +BMEA,2024-09-27,0.1996,9.57,11.48,12.0091,9.7,9.9,4092766,40518383,9.0 +IONQ,2024-09-27,0.1042,8.06,8.9,10.0,8.58,9.71,45245543,439334222,10.9 +LODE,2024-09-27,0.1012,6.175,6.8,7.191,4.55,4.874,1252762,6105961,2.6 +LASE,2024-09-27,0.0953,12.7,13.91,14.84,12.88,14.34,1238265,17756720,1.0 +TTEC,2024-09-30,0.3802,4.05,5.59,5.95,5.03,5.87,19719175,115751557,43.0 +TANH,2024-09-30,0.2373,7.112,8.8,9.32,6.8,7.436,1078428,8019190,9.6 +PRME,2024-09-30,0.2225,3.46,4.23,5.02,3.815,3.87,33263475,128729648,53.5 +TOUR,2024-09-30,0.2001,8.117,9.741,12.34,9.741,11.53,675779,7791731,167.5 +TIGR,2024-09-30,0.1878,4.58,5.44,6.09,5.22,5.34,20916650,111694911,28.5 +NIO,2024-09-30,0.181,6.52,7.7,7.71,6.66,6.68,214406996,1432238733,3.5 +MNSO,2024-09-30,0.1474,16.21,18.6,18.71,16.28,16.6,8916033,148006147,4.7 +LX,2024-09-30,0.1462,2.154,2.469,2.65,2.343,2.451,9335562,22881462,13.1 +UAVS,2024-10-01,1.1467,4.705,10.1,10.44,7.01,7.91,4048646,32024789,361.0 +MGRX,2024-10-01,0.7534,3.54,6.207,7.659,4.208,4.476,13510448,60472765,964.3 +SGMT,2024-10-01,0.3718,2.77,3.8,3.97,2.99,3.12,43838724,136776818,157.4 +ARCO,2024-10-01,0.1525,8.234,9.49,9.696,9.061,9.434,4594472,43344248,4.0 +UNFI,2024-10-01,0.1504,16.82,19.35,22.33,19.06,21.96,7287706,160038023,14.5 +DJTWW,2024-10-01,0.0957,10.35,11.34,11.75,10.2723,11.3,3435626,38822573,20.4 +TOUR,2024-10-01,0.0841,11.53,12.5,14.29,10.47,11.93,779505,9299494,191.5 +SITC,2024-10-01,0.0792,8.262,8.916,8.98,8.376,8.441,4840102,40855300,7.7 +API,2024-10-02,1.1927,2.75,6.03,6.43,3.95,4.94,81673417,403466679,620.9 +MTC,2024-10-02,0.4088,3.748,5.28,6.423,5.04,6.135,13384985,82116882,132.0 +TIGR,2024-10-02,0.252,6.23,7.8,8.63,7.21,8.06,73673412,593807700,91.8 +JOBY,2024-10-02,0.1854,4.8,5.69,6.32,5.19,6.14,70823149,434854134,14.4 +HTT,2024-10-02,0.1822,2.14,2.53,2.53,2.155,2.28,2420470,5518671,6.5 +KC,2024-10-02,0.1787,3.19,3.76,4.04,3.59,3.92,10633761,41684343,9.8 +CNF,2024-10-02,0.1511,19.46,22.4,28.4,21.0,24.7,315701,7797814,192.2 +LX,2024-10-02,0.1509,3.109,3.578,4.236,2.776,2.974,29091678,86518650,39.7 +EVGO,2024-10-03,0.2901,3.93,5.07,6.49,4.86,6.32,121865233,770188272,48.0 +HKD,2024-10-03,0.2864,3.91,5.03,5.8,4.58,5.22,47955941,250330012,420.4 +RZLV,2024-10-03,0.2581,6.82,8.58,9.448,6.4112,7.18,5379172,38622454,86.3 +PW,2024-10-03,0.1314,9.015,10.2,18.1,9.0,18.0,972009,17496162,267.0 +OKLO,2024-10-03,0.0758,9.5,10.22,10.22,9.22,9.41,5425590,51054801,2.7 +BKSY,2024-10-03,0.0721,4.99,5.35,5.9,4.92,4.99,3358418,16758505,8.3 +BENF,2024-10-04,0.7479,9.52,16.64,17.12,13.6,15.12,13538614,204703843,616.9 +FWDI,2024-10-04,0.3714,3.5,4.8,6.13,4.5,5.38,18447428,99247162,813.6 +PW,2024-10-04,0.1722,18.0,21.1,27.5,13.1,14.5,1365735,19803157,361.4 +ACMR,2024-10-04,0.1481,18.9,21.7,22.225,20.71,22.04,6078350,133966834,6.4 +MTC,2024-10-04,0.1194,5.36,6.0,6.04,4.433,4.663,1855820,8653688,18.3 +ULCC,2024-10-04,0.1022,4.99,5.5,6.19,5.45,5.81,7166257,41635953,3.5 +ATYR,2024-10-04,0.092,1.74,1.9,1.96,1.84,1.87,2887052,5398787,12.4 +SMMT,2024-10-04,0.086,18.61,20.21,21.33,18.12,19.09,9394100,179333369,1.8 +SRRK,2024-10-07,2.5499,7.42,26.34,34.38,25.15,34.28,42667734,1462649921,65.6 +LUXE,2024-10-07,0.3271,4.31,5.72,7.2299,4.67,6.76,12993262,87834451,449.5 +SRFM,2024-10-07,0.2113,1.94,2.35,2.7679,2.15,2.18,2471301,5387436,19.8 +AVNW,2024-10-07,0.1622,19.36,22.5,25.74,22.5,22.74,624208,14194489,4.9 +WETH,2024-10-07,0.1257,1.83,2.06,2.96,1.9,2.57,6251671,16066794,110.7 +TIGR,2024-10-07,0.1207,12.39,13.885,14.48,11.2815,11.46,121567481,1393163332,116.9 +HERE,2024-10-07,0.1182,3.52,3.936,5.885,3.841,4.409,9920409,43739083,157.5 +NIU,2024-10-07,0.1143,2.8,3.12,3.5,3.1,3.37,4286852,14446691,23.3 +DWTX,2024-10-08,0.4524,3.448,5.008,5.17,3.575,3.875,1707026,6614725,106.6 +BURU,2024-10-08,0.3348,2.231,2.978,5.988,2.857,5.04,23699449,119445222,219.0 +TNXP,2024-10-08,0.1953,14.39,17.2,17.94,13.68,14.06,470551,6615947,2.6 +RZLV,2024-10-08,0.1516,6.86,7.9,8.0799,6.81,6.91,1136447,7852848,18.0 +DJTWW,2024-10-08,0.0953,12.49,13.68,15.49,12.6696,14.85,683890,10155766,2.6 +LASE,2024-10-09,0.1841,7.93,9.39,10.15,7.9601,8.75,26263298,229803857,15.8 +BURU,2024-10-09,0.1583,5.04,5.838,6.687,5.04,5.888,8340082,49106402,67.8 +BMEA,2024-10-09,0.0947,11.4,12.48,13.07,10.6614,10.9,1740120,18967308,3.3 +CNEY,2024-10-10,0.3721,13.17,18.07,18.25,15.31,17.75,1081711,19200370,23.9 +TVGN,2024-10-10,0.1937,12.96,15.47,16.22,13.51,16.01,344123,5509409,108.3 +TPST,2024-10-10,0.163,17.55,20.41,20.67,13.26,14.3,4000815,57211654,143.9 +UVE,2024-10-10,0.1303,16.12,18.22,18.54,17.48,18.02,489949,8828880,3.4 +BURU,2024-10-10,0.1187,5.888,6.587,7.385,4.242,5.14,3755676,19304174,25.5 +ACIC,2024-10-10,0.0907,8.486,9.256,9.491,8.694,9.22,596612,5500762,3.1 +HRTG,2024-10-10,0.0881,9.65,10.5,11.19,9.8067,10.54,1333643,14056597,3.0 +FFAI,2024-10-10,0.0816,2.45,2.65,2.95,2.5,2.75,27949220,76860355,5.9 +TURB,2024-10-11,0.33,3.03,4.03,4.15,1.82,2.16,3198592,6908958,426.4 +PW,2024-10-11,0.2583,12.0,15.1,16.5,12.0,13.8,1116166,15403090,223.4 +DJTWW,2024-10-11,0.1368,16.16,18.37,18.8,17.3,17.7749,647649,11511896,1.8 +AEHR,2024-10-11,0.1344,13.32,15.11,16.65,13.55,16.02,9397202,150543176,12.5 +TVGN,2024-10-14,1.2524,18.98,42.75,65.5,37.13,54.5,4990732,271994894,1344.5 +TONX,2024-10-14,0.7699,7.91,14.0,16.13,12.2,12.53,37895244,474827407,608.8 +XPON,2024-10-14,0.6736,2.39,4.0,4.25,3.18,3.52,29723104,104625326,56.6 +IVA,2024-10-14,0.3651,1.89,2.58,2.85,2.29,2.67,11082731,29590891,1581.7 +RANI,2024-10-14,0.2525,2.02,2.53,3.34,2.51,3.18,55213507,175578952,1047.3 +RILY,2024-10-14,0.1868,4.39,5.21,5.82,5.11,5.42,16890891,91548629,9.3 +DXYZ,2024-10-14,0.1483,9.98,11.46,13.43,10.8,12.08,2396324,28947593,16.3 +VNDA,2024-10-14,0.1419,4.44,5.07,5.3,4.77,4.81,5604169,26956052,12.3 +DBGI,2024-10-15,0.7409,7.99,13.91,15.55,8.245,11.5,2002402,23027623,259.6 +WOLF,2024-10-15,0.3216,11.38,15.04,16.25,13.25,13.8,66672850,920085330,7.4 +MGTX,2024-10-15,0.2608,4.64,5.85,5.87,4.835,5.33,2040966,10878348,13.4 +IMRX,2024-10-15,0.225,2.0,2.45,2.51,2.15,2.31,25792663,59581051,22.1 +PHUN,2024-10-15,0.1404,4.7,5.36,7.99,5.24,5.39,43764122,235888617,130.0 +RANI,2024-10-15,0.1321,3.18,3.6,3.75,2.1,2.12,20053137,42512650,380.4 +ERIC,2024-10-15,0.0902,7.292,7.95,8.337,7.872,8.25,48781108,402444141,3.4 +BVC,2024-10-16,4.8502,3.846,22.5,32.5,13.1,27.0,7564614,204244578,1867.3 +AIFF,2024-10-16,0.8435,3.13,5.77,5.82,3.1133,4.1,2954588,12113810,114.6 +BURU,2024-10-16,0.4656,3.643,5.339,7.984,3.219,3.626,7667391,27801959,21.9 +DUO,2024-10-16,0.4253,14.72,20.98,25.12,20.0,22.88,3226194,73815318,8.1 +WVE,2024-10-16,0.4071,8.56,12.045,15.54,11.98,14.9,17326099,258158875,20.1 +QNRX,2024-10-16,0.2698,17.64,22.4,54.95,19.6,27.65,2407568,66569255,767.4 +PRQR,2024-10-16,0.232,1.81,2.23,4.13,2.04,4.02,52191352,209809235,617.3 +TPST,2024-10-16,0.2222,15.21,18.59,20.67,14.17,14.43,2764946,39898170,98.3 +NIXX,2024-10-17,2.1899,2.37,7.56,8.5,2.61,2.7,57329866,154790638,2701.2 +GEVO,2024-10-17,0.3689,2.25,3.08,3.1,2.42,2.65,51226758,135750908,8.7 +UPXI,2024-10-17,0.3162,2.53,3.33,4.3232,2.6363,3.28,3203480,10507414,629.4 +SLQT,2024-10-17,0.1778,2.25,2.65,2.78,1.95,2.1,6718219,14108259,6.6 +ALAR,2024-10-17,0.1767,16.64,19.58,21.47,17.76,18.13,1612785,29239792,8.3 +NCPL,2024-10-17,0.131,1.68,1.9,1.9,1.6,1.75,6154836,10770963,50.2 +KZIA,2024-10-17,0.1236,16.67,18.73,27.99,18.25,26.34,341226,8987892,37.0 +PHUN,2024-10-17,0.0962,6.34,6.95,7.68,6.13,7.48,10716321,80158081,29.0 +VTAK,2024-10-18,1.9727,8.373,24.89,33.06,16.29,17.29,9360203,161837909,1028.0 +HEPS,2024-10-18,0.6045,2.2,3.53,4.05,2.9,3.51,43863348,153960351,92.2 +TNON,2024-10-18,0.312,3.43,4.5,4.57,3.71,4.14,9198880,38083363,16.2 +BAER,2024-10-18,0.2328,2.32,2.86,3.57,2.55,3.15,2822305,8890260,38.0 +DUO,2024-10-18,0.1852,17.28,20.48,20.8,17.84,18.56,512002,9502757,0.9 +AIFF,2024-10-18,0.169,2.84,3.32,4.26,3.0438,4.05,3433936,13907440,116.9 +ALAR,2024-10-18,0.1302,18.13,20.49,21.5,18.68,18.89,1017113,19213264,5.2 +CHAU,2024-10-18,0.1213,14.18,15.9,15.9,15.55,15.69,3547746,55664134,2.1 +XPON,2024-10-21,0.3893,2.8,3.89,4.29,3.35,3.63,9351202,33944863,8.9 +LTBR,2024-10-21,0.3274,7.01,9.305,9.78,7.87,8.83,12326852,108846103,55.0 +HOWL,2024-10-21,0.3171,2.05,2.7,3.275,2.55,2.85,10039294,28611987,90.5 +VSEE,2024-10-21,0.2439,1.64,2.04,2.59,1.79,2.24,15135949,33904525,425.3 +AIFF,2024-10-21,0.1802,4.05,4.78,5.2,3.86,4.26,2811340,11976308,95.7 +ASPI,2024-10-21,0.1308,4.28,4.84,4.94,4.41,4.84,4472831,21648502,5.3 +LUMN,2024-10-21,0.1142,6.74,7.51,7.78,6.21,6.57,57089915,375080741,4.3 +VTAK,2024-10-21,0.1099,17.29,19.19,20.14,17.29,17.39,455493,7921023,50.0 +NESR,2024-10-22,2.6604,2.65,9.7,9.89,9.43,9.45,936111,8846248, +ENSC,2024-10-22,1.5398,3.09,7.848,12.32,6.468,8.085,49224978,397983947,2620.4 +HIHO,2024-10-22,0.3112,1.909,2.503,2.805,2.055,2.474,6067989,15012204,972.7 +ARQQ,2024-10-22,0.1356,7.08,8.04,9.7592,7.0,7.34,768306,5639366,9.8 +PHUN,2024-10-22,0.1058,8.41,9.3,13.37,9.03,11.64,64735426,753520358,170.6 +IMUX,2024-10-22,0.0968,15.5,17.0,17.3,13.7,14.0,1109126,15527764,29.2 +DBVT,2024-10-23,0.4429,3.5,5.05,5.45,3.001,3.401,5625014,19130672,678.8 +FAMI,2024-10-23,0.2859,3.781,4.862,6.36,3.9,4.644,2277331,10575925,83.2 +CNTX,2024-10-23,0.245,2.0,2.49,2.5899,2.175,2.23,2417867,5391843,25.9 +MBIO,2024-10-23,0.2119,14.11,17.1,18.51,14.5,15.15,822441,12459981,118.9 +PHUN,2024-10-23,0.2113,11.64,14.1,14.6,12.65,14.14,43921271,621046771,115.7 +UPWK,2024-10-23,0.1642,10.05,11.7,12.85,11.6,12.73,14743299,187682196,10.7 +HOWL,2024-10-23,0.1433,3.63,4.15,4.18,3.26,3.4,3859965,13123881,33.0 +ORIC,2024-10-23,0.1412,8.71,9.94,10.42,8.725,8.82,878817,7751165,2.9 +UZX,2024-10-24,0.7877,2.675,4.782,6.281,3.155,3.33,18253846,60785307,755.2 +CCTG,2024-10-24,0.5,17.4,26.1,31.7,21.0,24.1,3565019,85916957,634.7 +TSLR,2024-10-24,0.2899,13.9,17.93,20.19,17.66,19.97,2141151,42758785,3.1 +TSLL,2024-10-24,0.2898,8.296,10.7,12.05,10.54,11.92,152619769,1819227646,2.9 +TSLT,2024-10-24,0.2897,12.29,15.85,17.86,15.6283,17.69,11875725,210081575,2.6 +DBVT,2024-10-24,0.2438,3.401,4.23,4.44,3.691,4.188,1415560,5928365,166.3 +DFNS,2024-10-24,0.2254,2.187,2.68,3.9623,2.0,2.53,8042854,20348420,88.5 +QS,2024-10-24,0.1834,5.18,6.13,7.03,6.05,6.5,69175244,449639086,15.1 +UPXI,2024-10-25,2.0267,3.0,9.08,15.91,7.13,8.1,32377512,262257847,673.3 +XPON,2024-10-25,0.3693,3.52,4.82,5.48,4.03,4.29,30268029,129849844,24.3 +ARBB,2024-10-25,0.2438,4.947,6.153,13.48,6.03,10.26,20631927,211683571,5495.3 +ALBT,2024-10-25,0.2364,3.033,3.75,3.795,2.73,3.45,1895683,6540106,140.4 +NWL,2024-10-25,0.2089,6.509,7.869,8.272,7.434,7.914,21253426,168199613,3.9 +FFAI,2024-10-25,0.2,2.0,2.4,2.51,2.07,2.16,35789484,77305285,8.7 +UAVS,2024-10-25,0.186,1.72,2.04,3.06,1.9,2.25,51736310,116406697,1977.4 +IBRX,2024-10-25,0.1734,4.21,4.94,7.48,4.7,5.32,64835538,344925062,27.9 +GLUE,2024-10-28,0.3067,4.89,6.39,12.4,6.15,9.48,95126226,901796622,472.9 +EYPT,2024-10-28,0.1242,9.5,10.68,13.985,10.35,12.12,4565927,55339035,10.0 +PHUN,2024-10-28,0.1207,10.6,11.8799,12.2,10.08,10.56,30053961,317369828,59.4 +LTBR,2024-10-28,0.102,7.35,8.1,10.1,7.83,9.08,5817863,52826196,17.5 +IBRX,2024-10-28,0.1015,5.32,5.86,6.82,5.66,6.17,30950059,190961864,13.2 +ATLX,2024-10-28,0.0949,8.22,9.0,11.36,8.8391,10.25,573150,5874787,4.7 +MNSO,2024-10-28,0.0862,16.48,17.9,18.32,17.79,18.21,3297371,60045125,1.1 +DDL,2024-10-28,0.0802,3.49,3.77,3.905,3.575,3.87,1403860,5432938,1.1 +CBIO,2024-10-29,1.2717,16.82,38.21,63.0,32.11,49.0,11221418,549849482,1915.6 +LUCY,2024-10-29,0.6789,5.98,10.04,10.4,7.12,7.71,11491070,88596149,144.5 +VFC,2024-10-29,0.192,16.41,19.56,21.13,18.98,20.84,29999612,625191914,4.8 +SDEV,2024-10-29,0.1446,1.819,2.082,2.376,1.884,2.151,3589364,7720721,156.5 +ELDN,2024-10-29,0.1217,3.37,3.78,4.12,3.54,3.59,9920877,35615948,168.3 +LAC,2024-10-29,0.0966,4.14,4.54,5.2,4.25,4.51,45506508,205234351,7.2 +LTBR,2024-10-29,0.0936,9.08,9.93,14.2,9.37,12.31,15703282,193307401,40.5 +HAYW,2024-10-29,0.0804,14.8,15.99,16.4,15.54,15.67,4604024,72145056,3.3 +CNTN,2024-10-30,1.8128,2.03,5.7099,6.39,3.0801,3.43,61346278,210417733,2111.4 +STI,2024-10-30,0.6596,19.8,32.86,34.45,22.6,23.57,5011951,118131685,1875.7 +ASPI,2024-10-30,0.4844,5.76,8.55,9.23,6.8373,6.9,51265692,353733274,35.2 +NRDS,2024-10-30,0.2809,11.32,14.5,15.624,13.45,15.06,5561133,83750662,11.2 +ENSC,2024-10-30,0.2342,6.225,7.683,11.7,6.851,9.575,31992022,306323610,964.0 +DBGI,2024-10-30,0.1642,5.115,5.955,5.955,5.185,5.685,1038533,5904060,25.2 +EXTR,2024-10-30,0.1603,14.22,16.5,17.0,15.865,15.92,4613202,73442175,5.6 +UIS,2024-10-30,0.1487,5.38,6.18,7.28,6.07,7.2,3175957,22866890,7.5 +ORN,2024-10-31,0.2786,5.42,6.93,7.46,6.01,6.11,1407220,8598114,3.8 +JBIO,2024-10-31,0.27,8.008,10.17,10.97,8.959,8.959,943040,8448695,238.7 +RELY,2024-10-31,0.2444,15.26,18.99,19.9,17.14,17.98,7509230,135015955,5.5 +ATEC,2024-10-31,0.2411,5.62,6.975,8.42,6.97,7.85,16686336,130987737,9.9 +BAND,2024-10-31,0.2142,18.84,22.875,23.0,19.4926,19.5,900274,17555343,4.8 +PTON,2024-10-31,0.185,6.65,7.88,8.92,7.67,8.5,114868138,976379173,9.4 +TNON,2024-10-31,0.184,3.26,3.86,4.12,3.5507,3.93,20891191,82102380,50.3 +EVGN,2024-10-31,0.1708,2.4,2.81,2.8699,2.15,2.28,13408534,30571457,512.8 +LONA,2024-11-01,0.3768,4.281,5.894,7.469,5.44,6.059,23962974,145191659,612.4 +GSAT,2024-11-01,0.3619,15.75,21.45,22.95,18.0,20.7,13574621,280994654,71.6 +NAGE,2024-11-01,0.1805,3.49,4.12,5.98,3.83,5.86,37879777,221975493,158.9 +TILE,2024-11-01,0.1692,17.38,20.32,23.34,20.08,23.12,2159813,49934876,5.7 +BURU,2024-11-01,0.1385,2.246,2.557,3.344,2.295,2.545,7017157,17858664,8.1 +PESI,2024-11-01,0.1289,13.42,15.15,16.25,14.5,14.84,350717,5204640,4.7 +ADMA,2024-11-01,0.1214,16.31,18.29,20.18,18.24,19.37,11737821,227361592,3.5 +MD,2024-11-01,0.1201,12.32,13.8,15.42,12.96,15.21,3254426,49499819,6.4 +CC,2024-11-04,0.144,16.8,19.22,20.03,18.76,19.4,5529810,107278313,3.8 +IART,2024-11-04,0.1411,19.28,22.0,24.9,21.4785,24.12,3689107,88981260,4.8 +TNYA,2024-11-04,0.134,1.94,2.2,2.75,2.17,2.41,37304409,89903625,80.9 +CVRX,2024-11-04,0.1209,13.4,15.02,15.77,14.5,15.05,1247757,18778742,4.8 +NKTR,2024-11-04,0.1138,18.45,20.55,22.05,18.97,19.95,398212,7944329,5.9 +GITS,2024-11-04,0.1014,4.278,4.712,6.858,4.5,5.73,4159444,23833614,672.7 +ENSC,2024-11-04,0.0923,9.75,10.65,11.1,8.109,8.678,1007310,8741436,23.2 +PTON,2024-11-04,0.0814,7.25,7.84,7.99,7.36,7.51,37205632,279414296,2.8 +ALBT,2024-11-05,0.8348,2.24,4.11,4.69,3.2101,3.6,33704337,121335613,1008.6 +RYM,2024-11-05,0.7548,3.14,5.51,5.64,3.82,4.4,21302438,93730727,855.9 +SPPL,2024-11-05,0.3559,9.44,12.8,14.88,8.16,13.52,13582202,183631371,1338.1 +PTIR,2024-11-05,0.3139,2.772,3.642,4.128,3.5,4.075,12729990,51874709,5.4 +LUCK,2024-11-05,0.1862,9.939,11.79,12.1,10.82,11.13,1873539,20852489,4.3 +GOGO,2024-11-05,0.1802,6.55,7.73,9.02,7.68,8.53,9432054,80455420,8.5 +LIND,2024-11-05,0.1369,9.35,10.63,11.97,10.33,11.71,1751658,20511915,9.8 +AVO,2024-11-05,0.122,12.13,13.61,13.77,13.085,13.35,681235,9094487,3.5 +MYSE,2024-11-06,0.9497,1.79,3.49,3.6,2.16,2.24,54199641,121407195,533.0 +ARBB,2024-11-06,0.2955,8.468,10.97,16.8,10.56,12.2,15188035,185294027,2758.0 +GEO,2024-11-06,0.2783,15.13,19.34,21.54,19.06,21.5,20190734,434100781,11.1 +TSLR,2024-11-06,0.2645,18.49,23.38,24.11,22.05,23.93,2987796,71497958,3.6 +TSLT,2024-11-06,0.2633,16.33,20.63,21.27,19.46,21.11,11258026,237656928,2.2 +TSLL,2024-11-06,0.2629,11.03,13.93,14.36,13.14,14.26,163866938,2336742535,2.9 +TMCI,2024-11-06,0.25,5.76,7.2,7.885,6.89,7.78,3207911,24957547,7.4 +CXW,2024-11-06,0.2443,13.63,16.96,18.235,16.5,17.58,6542257,115012878,10.8 +ATCH,2024-11-07,0.6747,10.79,18.07,26.94,15.25,16.8,2797517,46998285,450.3 +DXYZ,2024-11-07,0.3638,15.89,21.67,27.88,20.01,22.1,12205806,269748312,50.3 +IHRT,2024-11-07,0.2931,1.74,2.25,2.84,2.11,2.18,8834329,19258837,18.1 +EBS,2024-11-07,0.2424,9.2,11.43,12.73,10.9801,11.0,5624293,61867223,4.7 +LYFT,2024-11-07,0.2347,14.4,17.78,18.82,17.4,17.69,73961421,1308377537,7.3 +UPWK,2024-11-07,0.2064,14.58,17.59,17.79,15.77,16.25,9731375,158134843,6.0 +ENSC,2024-11-07,0.1993,8.255,9.9,14.67,9.9,10.44,9647804,100723073,97.1 +UAA,2024-11-07,0.1897,8.75,10.41,11.89,10.16,11.13,37175203,413760009,3.4 +NCL,2024-11-08,1.8078,1.795,5.04,5.519,2.428,2.672,39306453,105026842,3572.7 +VBIO,2024-11-08,0.7453,4.429,7.73,11.05,5.7,6.9,17243283,118978652,1566.4 +ASPCU,2024-11-08,0.4025,7.13,10.0,10.01,9.98,9.99,1663093,16614299, +INDI,2024-11-08,0.3528,3.43,4.64,5.52,4.6,5.48,36220561,198488674,17.1 +FTRE,2024-11-08,0.2936,18.05,23.35,25.18,22.58,23.5,7122369,167375671,6.7 +PRCH,2024-11-08,0.2361,2.33,2.88,3.819,2.85,3.62,16770971,60710915,29.4 +GV,2024-11-08,0.2267,1.5,1.84,3.28,1.37,1.47,26394821,38800386,407.0 +TNYA,2024-11-08,0.2,2.5,3.0,3.13,2.64,2.76,7138627,19702610,13.7 +AURE,2024-11-11,0.3474,8.312,11.2,12.1,7.53,10.5,1855290,19480545,186.2 +SUGP,2024-11-11,0.2264,14.84,18.2,23.7,16.4,20.4,2705217,55186426,459.1 +BCG,2024-11-11,0.221,1.9901,2.43,6.55,2.05,3.3,24294912,80173209,4490.3 +BTBT,2024-11-11,0.1725,4.29,5.03,5.51,4.93,5.42,60414498,327446579,5.5 +CRPT,2024-11-11,0.1686,18.33,21.42,22.49,19.7,20.71,389091,8058074,7.1 +ANY,2024-11-11,0.16,12.5,14.5,16.5,13.7,16.2,444447,7200041,7.7 +MARA,2024-11-11,0.1584,19.25,22.3,25.465,21.8,25.01,125540705,3139773032,3.0 +TSLL,2024-11-11,0.1573,17.55,20.31,21.64,19.15,20.72,181439290,3759422088,3.1 +BTCT,2024-11-12,0.873,2.52,4.72,17.0,4.08,10.5,128436910,1348587555,3529.4 +XBP,2024-11-12,0.6172,9.09,14.7,15.0,11.8,13.3,3129923,41627975,1504.8 +TSHA,2024-11-12,0.2761,1.63,2.08,2.43,2.02,2.39,25442556,60807708,13.5 +EVGO,2024-11-12,0.1778,5.4,6.36,6.63,4.7501,4.89,25222571,123338372,4.4 +SDGR,2024-11-12,0.1771,19.54,23.0,23.65,21.35,22.25,2961433,65891884,5.1 +QUCY,2024-11-12,0.1572,8.6,9.952,14.39,8.92,11.07,1283330,14206463,21.3 +FA,2024-11-12,0.1195,18.57,20.79,20.79,18.4,18.58,2751245,51118132,5.0 +GENI,2024-11-12,0.1139,8.08,9.0,9.855,8.94,9.47,11033511,104487349,5.1 +BTCT,2024-11-13,1.1457,10.5,22.53,26.58,15.36,17.65,45367586,800737892,1176.9 +RKLB,2024-11-13,0.3124,14.66,19.24,22.55,18.65,18.83,121001251,2278453556,11.0 +BTCS,2024-11-13,0.2461,2.848,3.549,5.35,3.343,4.124,69271972,285677612,772.3 +PULM,2024-11-13,0.2439,2.05,2.55,4.12,2.34,3.56,3629712,12921774,374.5 +KAPA,2024-11-13,0.2413,2.0543,2.55,2.75,1.69,2.21,11059273,24440993,321.7 +SSYS,2024-11-13,0.2277,8.39,10.3,10.6,9.66,10.11,3189949,32250384,8.1 +HNRG,2024-11-13,0.2134,10.45,12.68,13.18,10.92,13.13,2719681,35709411,5.6 +HNST,2024-11-13,0.2062,4.8,5.7899,6.53,5.41,6.01,17335903,104188777,10.4 +UAVS,2024-11-14,0.882,1.61,3.03,4.88,2.76,3.58,167329981,599041331,234.5 +QUBT,2024-11-14,0.3797,2.66,3.67,4.69,3.23,4.4,232619415,1023525426,80.9 +BTCT,2024-11-14,0.3711,17.65,24.2,24.8,16.89,19.75,20498598,404847310,520.5 +GAMB,2024-11-14,0.2609,10.31,13.0,13.0,11.13,12.43,1205431,14983507,12.2 +BTCS,2024-11-14,0.2231,4.124,5.044,5.301,4.035,4.826,39731304,191743273,347.7 +LUNR,2024-11-14,0.2083,11.76,14.21,14.9,10.11,10.23,62951873,643997660,6.1 +DLO,2024-11-14,0.1942,8.474,10.12,11.04,9.36,9.561,11473305,109696269,12.2 +XTIA,2024-11-14,0.1657,14.3,16.67,21.73,13.0,14.23,1465039,20847504,34.5 +BE,2024-11-15,0.5776,13.28,20.95,22.5,17.8,21.14,64764263,1369116519,11.0 +GREE,2024-11-15,0.5425,2.47,3.81,3.839,2.58,2.67,40205141,107347726,132.7 +BENF,2024-11-15,0.416,10.0,14.16,18.88,9.12,9.6,11208097,107597731,545.1 +SPPL,2024-11-15,0.4043,7.064,9.92,14.24,8.56,10.16,20711146,210425243,417.3 +STI,2024-11-15,0.2537,17.5,21.94,26.0,19.0,22.51,2800434,63037769,257.4 +ASST,2024-11-15,0.2237,12.92,15.81,16.98,12.25,13.2,1083820,14306424,152.9 +FCEL,2024-11-15,0.1783,7.01,8.26,9.45,5.87,6.16,13371592,82369006,15.5 +ZETA,2024-11-15,0.1526,17.37,20.02,20.02,16.66,17.58,25433628,447123180,6.6 +APLM,2024-11-18,0.9197,9.59,18.41,35.98,14.73,19.38,16791076,325411052,2083.0 +UAVS,2024-11-18,0.6172,2.9,4.69,5.22,3.62,3.89,69671385,271021687,88.7 +ATCH,2024-11-18,0.3843,10.8,14.95,18.33,12.1,13.19,4066547,53637754,630.5 +SINT,2024-11-18,0.2941,2.04,2.64,3.28,2.47,3.18,52019136,165420852,1309.9 +ACRS,2024-11-18,0.1854,2.05,2.43,3.54,2.29,3.14,30677094,96326075,45.6 +ALDX,2024-11-18,0.1639,4.21,4.9,5.12,4.32,4.7,2084824,9798672,5.8 +RGNX,2024-11-18,0.1537,9.63,11.11,11.38,9.93,10.15,3073762,31198684,6.6 +HELP,2024-11-18,0.1517,11.6,13.36,13.88,10.36,10.6,2977326,31559655,21.1 +SOAR,2024-11-19,1.6062,4.639,12.09,16.76,8.706,10.33,26712682,275942005,2133.5 +PRFX,2024-11-19,1.1308,10.7,22.8,36.4,18.74,28.0,9790464,274132992,1263.9 +SNOA,2024-11-19,0.2752,2.58,3.29,3.6,2.78,3.16,9119121,28816422,212.1 +ACRS,2024-11-19,0.1815,3.14,3.71,5.17,3.69,4.59,56385763,258810652,77.6 +SPAI,2024-11-19,0.1364,1.76,2.0,2.485,1.89,2.3,13075848,30074450,253.7 +TNYA,2024-11-19,0.0971,2.06,2.26,2.51,2.16,2.27,7474547,16967221,10.0 +XCUR,2024-11-19,0.0838,3.94,4.27,5.9792,4.25,5.82,3705293,21564805,77.3 +FBRX,2024-11-20,0.7654,5.9251,10.46,18.81,8.7914,13.55,29585938,400889459,2355.8 +TNXP,2024-11-20,0.6073,16.27,26.15,27.63,18.22,19.0,6621496,125808424,53.7 +DBGI,2024-11-20,0.2993,5.83,7.575,8.45,5.95,6.75,6519015,44003351,24.5 +SPAI,2024-11-20,0.2522,2.3,2.88,3.6099,2.71,3.2,38023064,121673804,737.9 +KC,2024-11-20,0.2375,4.59,5.68,6.5387,5.56,6.53,11646868,76054048,4.0 +RCAT,2024-11-20,0.1899,4.74,5.64,6.9,5.6199,6.37,19335107,123164631,14.4 +BTCT,2024-11-20,0.1881,16.32,19.39,20.56,17.53,18.1,6439226,116549990,131.4 +XCUR,2024-11-20,0.1753,5.82,6.84,14.8,6.83,11.19,22917374,256445415,468.2 +SPAI,2024-11-21,0.9302,3.2,6.1767,6.4999,4.1,4.47,43341916,193738364,841.1 +CRNC,2024-11-21,0.2057,2.82,3.4,6.41,3.3914,5.83,77555939,452151124,81.4 +RMSG,2024-11-21,0.1995,3.76,4.51,4.75,3.26,4.19,4946539,20725998, +ZENA,2024-11-21,0.1908,1.52,1.81,1.85,1.45,1.65,7816824,12897759,18.0 +PDYN,2024-11-21,0.1856,1.94,2.3,2.71,1.98,2.0,6361761,12723522,20.7 +QUBT,2024-11-21,0.1522,3.68,4.24,5.31,4.03,4.76,134168595,638642512,32.8 +UTI,2024-11-21,0.1192,19.89,22.26,24.44,22.1,23.61,1765908,41693087,7.1 +QMCO,2024-11-21,0.1126,3.02,3.36,4.63,3.04,4.02,1447722,5819842,31.0 +SKK,2024-11-22,0.8727,11.0,20.6,25.9,15.7,18.4,10746832,197741708,390.4 +XCUR,2024-11-22,0.3858,10.86,15.05,19.62,12.6401,18.38,4594995,84456008,93.9 +REPL,2024-11-22,0.238,11.05,13.68,17.0,13.13,14.93,6068539,90603287,13.9 +BENF,2024-11-22,0.1591,7.04,8.16,8.4,6.654,7.6,2162732,16436763,105.2 +ARQQ,2024-11-22,0.1575,10.67,12.35,14.45,11.5,12.92,1943977,25116182,12.4 +QBTS,2024-11-22,0.1371,1.97,2.24,3.0,1.97,2.93,84835631,248568398,7.5 +PDYN,2024-11-22,0.11,2.0,2.22,5.05,2.15,4.6,83072267,382132428,270.8 +QMCO,2024-11-22,0.107,4.02,4.45,10.5,4.2001,9.13,39483936,360488335,808.4 +RGTI,2024-11-25,0.5115,1.74,2.63,3.37,2.37,2.75,274215753,754093320,23.4 +QMCO,2024-11-25,0.4962,9.13,13.66,27.7799,13.5,21.77,31526062,686322369,582.7 +KULR,2024-11-25,0.483,3.561,5.281,6.8,4.81,6.32,59175146,373986922,155.9 +CTXR,2024-11-25,0.3752,3.345,4.6,4.61,3.278,3.338,5907753,19720079,147.2 +QUBT,2024-11-25,0.2246,6.1,7.47,9.2,6.52,7.7,134901763,1038743575,28.7 +SMTK,2024-11-25,0.2219,3.2,3.91,5.72,3.6,5.43,3210469,17432846,354.7 +UMAC,2024-11-25,0.2136,4.4,5.34,6.5,4.5,5.91,983181,5810599,9.0 +XCUR,2024-11-25,0.2078,18.38,22.2,32.49,18.55,26.74,2459414,65764730,41.2 +IDAI,2024-11-26,1.0052,2.7,5.414,7.289,4.665,5.475,37345283,204465424,647.4 +TOYO,2024-11-26,0.9034,2.9,5.52,5.99,4.45,5.41,49091025,265582445,3185.1 +ZENA,2024-11-26,0.8988,6.42,12.19,12.43,8.0,10.3,80371382,827825234,185.2 +SMTK,2024-11-26,0.4107,5.43,7.66,7.8,5.66,7.3,5843428,42657024,645.6 +CRBU,2024-11-26,0.2426,2.02,2.51,2.515,1.99,2.02,2793321,5642508,1.9 +ARWR,2024-11-26,0.2214,18.79,22.95,24.23,20.847,21.05,8052165,169498073,7.9 +EMBC,2024-11-26,0.1918,13.4,15.97,19.34,15.8,17.38,1872782,32548951,8.1 +UAVS,2024-11-26,0.1608,5.97,6.93,8.0,5.25,5.39,17406553,93821320,12.6 +IDAI,2024-11-27,0.9105,5.475,10.46,12.87,7.85,12.6,24960035,314496441,410.8 +UMAC,2024-11-27,0.8953,5.36,10.159,11.67,7.19,9.89,56838968,562137393,393.6 +HWH,2024-11-27,0.6283,2.825,4.6,5.8,3.752,4.767,6505162,31010107,3364.4 +SOS,2024-11-27,0.3554,6.95,9.42,15.51,9.075,9.93,4106789,40780414,174.9 +QMCO,2024-11-27,0.332,17.23,22.95,25.1,17.0,17.86,6038209,107842412,99.7 +IFBD,2024-11-27,0.2802,1.82,2.33,2.67,2.12,2.64,13075931,34520457,558.1 +IMCC,2024-11-27,0.2541,2.44,3.06,4.0,3.03,3.69,3313153,12225534,173.7 +HURA,2024-11-27,0.1461,3.49,4.0,5.6499,3.96,5.05,3456380,17454719,40.6 +UMAC,2024-11-29,0.4408,9.89,14.25,19.5,12.8,18.73,62631515,1173088275,416.1 +SOS,2024-11-29,0.284,9.93,12.75,13.89,11.5,12.4,1446170,17932508,53.5 +CABA,2024-11-29,0.2625,3.01,3.8,4.6,3.61,3.82,17976614,68670665,16.3 +BMRA,2024-11-29,0.2169,2.577,3.136,3.637,2.96,3.116,3131474,9757672,267.9 +SKK,2024-11-29,0.1969,12.7,15.2,15.21,13.3,14.1,871029,12281508,27.4 +PASG,2024-11-29,0.1703,13.33,15.6,26.6,15.4,22.6,772139,17450341,65.8 +SILO,2024-11-29,0.1444,13.5,15.45,16.5,14.0,15.0,573240,8598600,73.3 +GRRR,2024-11-29,0.0934,5.03,5.5,6.33,5.335,6.09,2751728,16758023,5.7 +SNTI,2024-12-02,2.2824,2.16,7.09,16.94,6.55,10.0,130654257,1306542570,17817.3 +KULR,2024-12-02,0.4052,9.28,13.04,14.0,10.64,11.28,17696694,199618708,24.6 +CABA,2024-12-02,0.3272,3.82,5.07,5.46,3.91,4.13,20294899,83817932,18.1 +MOB,2024-12-02,0.3226,1.86,2.46,2.85,2.02,2.41,8269157,19928668,150.4 +UMAC,2024-12-02,0.1837,18.73,22.17,23.62,14.0,15.07,31673991,477327044,188.6 +AISP,2024-12-02,0.1795,3.12,3.68,3.94,3.17,3.23,3947699,12751067,5.1 +PDYN,2024-12-02,0.161,6.46,7.5,7.93,5.63,5.92,7761659,45949021,20.3 +RGTI,2024-12-02,0.1541,3.05,3.52,3.66,2.84,3.02,134814876,407140925,9.3 +ZJK,2024-12-03,1.8707,6.34,18.2,30.4999,11.52,17.26,28212346,486945091,1087.1 +SOAR,2024-12-03,0.8039,4.876,8.796,10.04,7.123,8.046,7760138,62438070,169.5 +SHIM,2024-12-03,0.2571,2.8,3.52,3.78,2.535,3.01,20777083,62539019,584.0 +VIR,2024-12-03,0.227,8.15,10.0,10.0,8.95,9.2,4080799,37543350,3.7 +PRCH,2024-12-03,0.1671,3.77,4.4,5.7,4.39,5.61,16865606,94616049,10.2 +EOSE,2024-12-03,0.1419,2.89,3.3,3.445,2.9,2.93,15926911,46665849,2.6 +ENLV,2024-12-03,0.1296,16.2,18.3,19.8,16.5,19.5,303948,5926986,28.1 +PPTA,2024-12-03,0.108,9.03,10.005,10.89,9.5701,10.59,2122307,22475231,6.3 +CYCN,2024-12-04,2.205,1.61,5.16,9.4699,4.61,6.35,141930505,901258706,1610.0 +CNEY,2024-12-04,1.5032,7.89,19.75,21.61,12.75,12.77,6565136,83836786,687.2 +CCRN,2024-12-04,0.6263,11.16,18.15,18.33,17.96,18.16,10688922,194110823,22.0 +HTOO,2024-12-04,0.3208,11.13,14.7,26.19,12.69,18.2,7993605,145483611,1073.8 +XCUR,2024-12-04,0.245,14.0,17.43,22.3642,17.43,21.52,928655,19984655,8.3 +IDAI,2024-12-04,0.2045,9.199,11.08,12.45,7.052,8.099,982171,7954602,10.3 +NVTS,2024-12-04,0.0828,3.14,3.4,3.8,3.15,3.21,13681466,43917505,4.0 +HSAI,2024-12-04,0.0813,8.0,8.65,9.87,8.635,9.53,5758248,54876103,11.4 +TARA,2024-12-05,1.6695,3.54,9.45,10.48,5.95,6.02,111267823,669832294,584.8 +RKDA,2024-12-05,1.6251,2.697,7.08,10.3099,5.05,5.45,72151888,393227789,7176.1 +PRFX,2024-12-05,0.8209,13.4,24.4,29.2,20.35,22.5,6643224,149472540,723.9 +FOXX,2024-12-05,0.6906,3.2,5.41,7.05,4.2,4.95,4703469,23282171,194.2 +BJDX,2024-12-05,0.6812,15.56,26.16,28.76,19.2,24.8,4259632,105638873,176.4 +BGDE,2024-12-05,0.3088,13.6,17.8,28.8,17.68,26.4,4021046,106155614,153.0 +MEI,2024-12-05,0.3088,10.85,14.2,16.3,12.72,13.1,1876921,24587665,5.9 +CAPR,2024-12-05,0.1635,12.72,14.8,15.8,13.54,14.53,3272571,47550456,2.7 +ALBT,2024-12-06,1.3759,2.66,6.32,6.55,3.79,4.12,48779230,200970427,460.3 +ZBAO,2024-12-06,0.5647,2.55,3.99,4.27,2.55,2.79,10743342,29973924,2222.2 +ASAN,2024-12-06,0.2937,15.46,20.0,22.54,19.01,22.19,23918113,530742927,15.9 +WOOF,2024-12-06,0.2184,4.9,5.97,6.29,5.0201,5.29,18198333,96269181,6.7 +SNOA,2024-12-06,0.1506,2.59,2.98,3.25,2.45,2.77,4270538,11829390,74.9 +CDIO,2024-12-06,0.1414,13.93,15.9,20.79,14.55,16.5,1579503,26061799,19.2 +AOUT,2024-12-06,0.1404,10.9,12.43,13.24,11.4307,13.23,393140,5201242,8.6 +SATL,2024-12-06,0.1306,3.14,3.55,4.1,3.35,3.92,5499999,21559996,44.8 +DUO,2024-12-09,0.7468,9.251,16.16,24.64,12.32,14.08,16383564,230680581,135.6 +ASST,2024-12-09,0.5482,9.198,14.24,20.4,12.0,13.7,7373084,101011250,603.2 +GXAI,2024-12-09,0.4,2.6,3.64,5.55,3.49,4.08,107839940,439986955,771.4 +MGX,2024-12-09,0.3405,1.85,2.48,4.47,2.45,4.17,63824571,266148461,141.3 +RIME,2024-12-09,0.2957,18.4,23.84,27.56,21.3,23.36,1395892,32608037,541.7 +QMCO,2024-12-09,0.2364,13.75,17.0,18.0,14.78,15.89,2496482,39669098,27.8 +BBAI,2024-12-09,0.2278,3.38,4.15,4.49,3.55,3.66,105006484,384323731,11.0 +SATL,2024-12-09,0.2117,3.92,4.75,5.49,4.62,4.74,8181903,38782220,60.0 +QURE,2024-12-10,0.8807,7.295,13.72,17.39,12.8,15.3,61928113,947500128,85.5 +CRDF,2024-12-10,0.4754,2.44,3.6,4.15,3.21,3.78,48663934,183949670,71.9 +NAMS,2024-12-10,0.3499,18.52,25.0,26.36,22.23,26.19,9602543,251490601,16.1 +HWH,2024-12-10,0.1782,5.05,5.95,7.2,3.077,3.09,2072409,6403743,945.0 +ABSI,2024-12-10,0.0966,3.21,3.52,4.1,3.44,4.02,5407516,21738214,3.7 +PUMP,2024-12-10,0.0774,7.88,8.49,9.655,8.38,9.29,4344055,40356270,3.4 +NRDY,2024-12-10,0.0732,1.64,1.76,2.0,1.665,1.7,5314239,9034206,2.2 +CADL,2024-12-11,1.7219,4.61,12.548,14.6,6.13,7.75,100772786,780989091,210.5 +RGTIW,2024-12-11,0.4079,2.77,3.9,3.94,2.47,3.35,3077288,10308914,13.7 +YJ,2024-12-11,0.321,1.62,2.14,2.23,1.75,2.1,3478303,7304436,686.3 +FEIM,2024-12-11,0.2799,12.79,16.37,17.8563,15.69,16.7,909643,15191038,36.8 +SFIX,2024-12-11,0.2496,4.6,5.748,6.985,5.33,6.64,27711591,184004964,16.7 +RGTI,2024-12-11,0.225,6.49,7.95,7.96,5.78,7.38,313253243,2311808933,11.2 +RZLV,2024-12-11,0.2021,1.93,2.32,2.77,1.9301,1.99,60138662,119675937,146.4 +SPWH,2024-12-11,0.1918,2.45,2.92,3.24,2.75,2.84,3460633,9828197,9.6 +TRVI,2024-12-12,0.5703,2.49,3.91,4.6,3.43,3.6,63852973,229870702,171.8 +ZENA,2024-12-12,0.2056,5.69,6.86,7.76,6.0302,7.29,19377039,141258614,30.0 +AMPG,2024-12-12,0.1813,1.93,2.28,3.2,2.11,2.2,80083154,176182938,849.6 +SRFM,2024-12-12,0.1652,3.39,3.95,4.5,3.61,3.82,1929359,7370151,5.6 +RZLV,2024-12-12,0.1457,1.99,2.28,2.3397,2.03,2.07,19453494,40268732,34.7 +FABC,2024-12-12,0.1268,12.78,14.4,15.28,10.4,10.4,854862,8890564,374.0 +GAMB,2024-12-12,0.1063,13.27,14.68,16.0907,14.2301,15.63,1216127,19008065,5.6 +RIOT,2024-12-12,0.099,11.77,12.935,13.28,11.84,12.33,110944962,1367951381,4.0 +AVL,2024-12-13,0.3564,18.32,24.85,27.95,24.5,27.2,658752,17918054,20.8 +UAMY,2024-12-13,0.1916,1.67,1.99,2.17,1.8,1.92,18236112,35013335,17.5 +AMPG,2024-12-13,0.1864,2.2,2.61,2.87,2.23,2.31,39844650,92041141,415.8 +GRRR,2024-12-13,0.1795,7.69,9.07,9.57,8.31,8.875,5809169,51556374,8.1 +SENS,2024-12-13,0.1598,8.622,10.0,10.52,8.6,8.936,2582074,23073413,8.2 +FABC,2024-12-13,0.1288,10.4,11.74,13.92,11.2,12.99,684916,8897058,299.7 +TASK,2024-12-13,0.1268,10.41,11.73,12.12,10.84,12.03,929658,11183785,4.5 +AUC,2024-12-13,0.1071,12.6,13.95,22.5,12.78,14.4,378247,5446756,1422.0 +LAES,2024-12-16,0.5029,1.75,2.63,3.46,2.23,2.45,204111813,500073941,88.3 +AEHR,2024-12-16,0.2186,11.53,14.05,15.05,12.62,14.49,7045167,102084469,9.0 +RCAT,2024-12-16,0.1981,8.23,9.86,11.33,8.9,10.45,49646030,518801013,7.6 +TANH,2024-12-16,0.1839,5.98,7.08,7.196,5.96,6.072,1438447,8734250,21.8 +SGMT,2024-12-16,0.18,4.39,5.18,6.22,4.93,5.73,4915988,28168611,8.6 +VRDN,2024-12-16,0.177,17.85,21.01,23.65,20.9517,21.54,8844376,190507859,8.1 +WKEY,2024-12-16,0.148,7.84,9.0,14.0,9.0,12.0,52029760,624357120,1081.2 +UMAC,2024-12-16,0.1342,11.1,12.59,13.75,11.6,13.09,10108361,132318445,15.1 +ALP,2024-12-17,1.7815,3.25,9.04,12.89,6.0153,9.04,36617221,331019677,1448.7 +OPTX,2024-12-17,1.1404,1.78,3.81,5.1,3.1,3.53,93203731,329009170,809.1 +DFSC,2024-12-17,0.6344,15.29,24.99,31.5,14.99,17.64,3852605,67959952,424.3 +EHTH,2024-12-17,0.4194,5.46,7.75,8.1,6.75,7.7,2512522,19346419,15.0 +MSS,2024-12-17,0.3431,10.2,13.7,17.4,11.4,11.6,1907175,22123230,864.9 +QUBT,2024-12-17,0.2807,11.08,14.19,18.0599,12.6,16.79,193979867,3256921966,7.7 +SIDU,2024-12-17,0.2183,4.58,5.58,7.65,4.61,5.6,74332373,416261288,116.6 +MITK,2024-12-17,0.2034,9.49,11.42,11.56,10.3101,10.93,4059578,44371187,10.0 +FNUC,2024-12-18,2.116,2.379,7.413,13.0,4.975,10.65,92528893,985432710,1252.3 +DFNS,2024-12-18,0.5396,11.88,18.29,67.77,16.9,50.79,54523418,2769244400,492.7 +PRZO,2024-12-18,0.4183,1.53,2.17,2.7699,2.06,2.15,55241716,118769689,60.8 +GGRP,2024-12-18,0.2453,1.59,1.98,3.23,1.89,3.2,55037052,176118566,426.5 +VISN,2024-12-18,0.2196,2.737,3.338,3.367,2.911,2.991,10281556,30752133,2.9 +RZLV,2024-12-18,0.1884,3.29,3.91,4.3191,3.495,3.75,44897265,168364743,30.8 +BIOA,2024-12-18,0.1707,4.1,4.8,5.12,3.97,4.3,4714861,20273902,18.8 +SOUNW,2024-12-18,0.158,10.95,12.68,16.23,12.4901,15.05,1104054,16616012,6.3 +PRFX,2024-12-19,1.47,10.85,26.8,83.15,22.8,55.8,19080118,1064670584,500.8 +CURR,2024-12-19,1.19,2.0,4.38,4.38,2.22,2.39,18924611,45229820,2876.5 +XHG,2024-12-19,1.1618,15.08,32.6,64.0,21.2,26.0,1536217,39941642,671.0 +MESO,2024-12-19,0.5249,12.25,18.68,19.1489,14.35,16.76,3986857,66819723,16.0 +KULR,2024-12-19,0.3942,16.64,23.2,24.54,16.48,17.92,14650898,262544092,5.9 +GGRP,2024-12-19,0.3062,3.2,4.18,7.0,3.01,3.2,30308373,96986793,204.9 +OMER,2024-12-19,0.3016,7.46,9.71,13.6,9.7,10.24,6005354,61494824,7.1 +SOUNW,2024-12-19,0.2777,15.05,19.23,21.5,13.75,16.92,1106377,18719898,6.0 +TAOP,2024-12-20,0.7319,9.51,16.47,24.75,11.7,12.23,4636551,56705018,458.7 +HUMA,2024-12-20,0.6705,3.46,5.78,6.77,4.45,4.64,75491166,350279010,26.0 +VNCE,2024-12-20,0.1439,2.78,3.18,4.82,2.9,4.82,1064879,5132716,98.9 +FRSX,2024-12-20,0.1413,19.32,22.05,26.67,19.74,26.25,563122,14781952,86.7 +AVO,2024-12-20,0.1372,12.32,14.01,15.25,13.74,14.45,2712309,39192865,14.2 +LLYX,2024-12-20,0.1314,17.12,19.37,19.5,17.46,17.61,457347,8053880,3.4 +XLO,2024-12-20,0.1302,13.13,14.84,17.92,11.71,17.92,488025,8745408,45.8 +LAES,2024-12-20,0.1294,2.01,2.27,3.0,2.12,2.75,70997570,195243317,18.7 +TRAW,2024-12-23,1.3506,5.02,11.8,19.44,11.11,12.57,28352011,356384778,4304.2 +GTBP,2024-12-23,0.8567,1.745,3.24,4.1,2.42,2.81,20856576,58606978,818.8 +RGTIW,2024-12-23,0.5705,3.12,4.9,4.9,4.0,4.39,1828021,8025012,2.7 +RUMBW,2024-12-23,0.5643,2.41,3.77,5.57,3.1501,4.99,1020157,5090583,23.5 +PHIO,2024-12-23,0.5227,1.76,2.68,2.9699,1.91,2.23,11139360,24840772,335.3 +RUM,2024-12-23,0.3908,7.19,10.0,14.6284,9.66,13.03,86393708,1125710015,25.8 +LAES,2024-12-23,0.3055,2.75,3.59,5.0,3.44,4.9,149974840,734876716,38.5 +RGTI,2024-12-23,0.2956,9.37,12.14,12.3,10.44,10.96,229354184,2513721856,1.9 +BAOS,2024-12-24,0.7225,1.73,2.98,13.66,2.88,7.1,58744815,417088186,4786.5 +VBIO,2024-12-24,0.6946,3.815,6.465,7.439,4.505,6.288,4345041,27321617,140.9 +FRMM,2024-12-24,0.4225,18.7,26.6,31.9,21.3,29.0,1612753,46769837,238.5 +AURE,2024-12-24,0.3009,11.3,14.7,17.0,12.3,15.4,1044322,16082558,66.0 +FNUC,2024-12-24,0.2543,4.975,6.24,9.49,6.24,7.604,13940029,105999980,99.0 +LAES,2024-12-24,0.251,4.9,6.13,6.27,4.82,5.47,90415752,494574163,19.3 +AMPG,2024-12-24,0.2146,2.47,3.0,4.35,2.95,4.04,25011321,101045736,49.8 +RZLV,2024-12-24,0.13,3.23,3.65,3.81,3.28,3.56,26417586,94046606,12.0 +MGIH,2024-12-26,1.6667,1.53,4.08,6.83,2.95,2.97,75355111,223804679,4973.6 +ZSQR,2024-12-26,1.1127,2.84,6.0,6.82,4.006,4.22,10267032,43326875,752.2 +PDYN,2024-12-26,0.3735,4.94,6.785,8.86,6.3,7.29,71821391,523577940,21.3 +CYD,2024-12-26,0.3076,9.567,12.51,12.61,10.04,11.15,577950,6444142,35.5 +FNUC,2024-12-26,0.306,7.604,9.931,11.7,8.251,11.44,8581659,98174178,52.7 +RVSN,2024-12-26,0.2138,13.8,16.75,25.5,15.53,23.21,1797245,41714056,132.2 +DFSC,2024-12-26,0.1869,11.56,13.72,15.29,12.37,13.78,601422,8287595,44.9 +SOBR,2024-12-26,0.1789,9.5,11.2,14.5,9.8,12.1,2182329,26406180,417.9 +MYSZ,2024-12-27,1.1232,4.22,8.96,9.4,5.75,6.51,33172830,215955123,279.0 +QSI,2024-12-27,0.586,2.15,3.41,4.14,2.83,3.6,256005503,921619810,19.1 +IDAI,2024-12-27,0.5012,8.1,12.16,12.9,9.45,10.65,3125857,33290377,19.6 +EVAX,2024-12-27,0.4303,4.23,6.05,6.1,4.45,5.3,1705992,9041757,155.3 +AMBO,2024-12-27,0.3916,2.24,3.1171,5.55,3.0,3.47,6741618,23393414,469.6 +SLDP,2024-12-27,0.3692,1.95,2.67,2.7,2.02,2.13,48418592,103131600,25.8 +FNUC,2024-12-27,0.3182,11.44,15.08,24.44,14.43,20.8,10152079,211163243,55.2 +TANH,2024-12-27,0.3142,6.696,8.8,9.0,7.144,7.6,2054271,15612459,31.8 +WATT,2024-12-30,2.0864,12.15,37.5,81.0,30.9,79.5,7540473,599467603,851.2 +INTZ,2024-12-30,1.0463,2.16,4.42,7.34,4.2,5.68,132966998,755252548,890.5 +ORBS,2024-12-30,0.7125,1.6,2.74,3.04,2.05,2.58,28881223,74513555,1023.0 +NCEL,2024-12-30,0.5495,18.2,28.2,29.5,23.4,27.2,2133737,58037646,334.7 +STEM,2024-12-30,0.3642,11.89,16.22,17.6,12.7,14.97,3360151,50301460,11.9 +ARTW,2024-12-30,0.3525,2.44,3.3,4.1495,2.9,3.6,4446933,16008958,332.4 +FFAI,2024-12-30,0.2983,1.76,2.285,3.24,2.19,3.14,159235730,500000192,24.6 +BVC,2024-12-30,0.2676,7.1,9.0,14.5,8.508,12.0,463040,5556480,135.6 +HYPD,2024-12-31,0.9837,9.064,17.98,17.99,10.8,11.68,5160327,60272619,30.0 +FFAI,2024-12-31,0.3439,3.14,4.22,4.46,2.115,2.43,159522860,387640549,24.5 +VSTM,2024-12-31,0.3379,3.67,4.91,5.54,4.5144,5.17,15196304,78564891,20.8 +RIME,2024-12-31,0.3291,17.2,22.86,22.86,17.6,17.6,337041,5931921,2.6 +BNGO,2024-12-31,0.258,17.17,21.6,21.78,15.0,17.3,645961,11175125,12.7 +BNAI,2024-12-31,0.2333,9.0,11.1,11.8,9.1,9.74,2264840,22059541,94.2 +BJDX,2024-12-31,0.226,15.4,18.88,20.0,16.48,19.48,432214,8419528,20.6 +XTIA,2024-12-31,0.2152,9.875,12.0,12.25,9.9,10.75,1785242,19191351,5.3 +XPON,2025-01-02,0.5356,2.39,3.67,4.4,1.97,2.0,28942031,57884062,210.1 +INTZ,2025-01-02,0.3106,3.075,4.03,4.45,3.52,3.78,19538409,73855186,126.3 +PASG,2025-01-02,0.216,11.34,13.79,20.2,13.6,16.6,334876,5558941,17.6 +INUV,2025-01-02,0.1912,6.464,7.7,7.901,6.56,6.961,829982,5777504,5.6 +GGRP,2025-01-02,0.1619,2.47,2.87,3.14,2.62,2.79,2590185,7226616,2.2 +FFAI,2025-01-02,0.1523,2.43,2.8,3.82,2.58,3.69,93166985,343786174,14.3 +ICG,2025-01-02,0.1515,3.3,3.8,7.95,3.6245,4.49,5901153,26496176,66.2 +SPCB,2025-01-02,0.1515,4.82,5.55,10.8,5.11,7.68,38993142,299467330,557.5 +MFI,2025-01-03,0.855,5.822,10.8,12.64,8.64,10.24,9900572,101381857,1617.2 +CRNC,2025-01-03,0.3607,7.93,10.79,19.89,10.3901,19.33,161799588,3127586036,73.7 +ONDS,2025-01-03,0.2281,2.63,3.23,3.4,2.76,2.8,37322538,104503106,5.5 +BNGO,2025-01-03,0.2141,15.32,18.6,22.8,16.6,19.0,1436853,27300207,27.1 +SPCB,2025-01-03,0.2122,7.68,9.31,10.5797,8.1001,9.0,8129784,73168056,110.7 +SES,2025-01-03,0.2079,1.9,2.295,2.45,2.07,2.25,43822841,98601392,16.7 +BLRX,2025-01-03,0.1742,10.22,12.0,12.4,10.4,10.95,1932650,21162517,56.2 +NUS,2025-01-03,0.1693,6.284,7.348,7.87,7.099,7.214,3450063,24888754,5.1 +FUBO,2025-01-06,1.7639,17.28,47.76,63.6,36.6,60.72,56845844,3451679647,54.6 +ARBE,2025-01-06,0.711,2.63,4.5,4.9,3.48,4.0,129861525,519446100,627.6 +GFAI,2025-01-06,0.4404,1.93,2.78,3.88,2.64,2.99,71807120,214703288,52.9 +AGPU,2025-01-06,0.425,18.0,25.65,45.9,20.55,28.35,3658335,103713797,661.5 +BAOS,2025-01-06,0.3723,3.25,4.46,4.7,3.7,4.26,7323326,31197368,285.3 +CHRN,2025-01-06,0.3671,10.95,14.97,14.97,10.36,11.54,2668003,30788754,274.1 +MBOT,2025-01-06,0.2944,2.14,2.77,3.38,2.37,2.84,63481177,180286542,368.1 +KSCP,2025-01-06,0.2271,14.17,17.3887,17.7877,14.81,15.31,759709,11631144,4.3 +IMRX,2025-01-07,0.5847,2.36,3.74,3.8,2.31,2.36,80920352,190972030,216.1 +GETY,2025-01-07,0.4397,2.57,3.7,3.865,3.08,3.19,65771442,209810899,128.6 +AUR,2025-01-07,0.3923,6.5,9.05,9.83,8.1505,8.39,98923737,829970153,9.7 +INVZ,2025-01-07,0.3618,1.99,2.71,3.14,2.12,2.2,84713917,186370617,11.2 +CRMD,2025-01-07,0.2774,7.93,10.13,10.89,9.36,10.3,5658283,58280314,7.5 +ARBE,2025-01-07,0.265,4.0,5.06,5.09,3.61,3.76,95008464,357231824,442.4 +MCVT,2025-01-07,0.239,2.259,2.799,3.149,2.549,3.109,1885060,5860651,491.7 +SUIG,2025-01-07,0.2389,2.26,2.8,3.15,2.55,3.11,1885060,5862536,491.7 +SANA,2025-01-08,2.6788,1.65,6.07,7.3,4.12,4.3,161196063,693143070,91.9 +SILO,2025-01-08,0.789,16.35,29.25,50.55,24.9,25.65,11073705,284040533,1294.8 +VIR,2025-01-08,0.5906,7.89,12.55,14.45,11.4701,12.48,39488344,492814533,35.9 +XHG,2025-01-08,0.4598,17.4,25.4,61.6,17.8,18.6,3886269,72284603,518.7 +LFVN,2025-01-08,0.3371,15.93,21.3,23.24,18.6,19.34,741860,14347572,8.8 +ABSI,2025-01-08,0.3322,3.07,4.09,4.22,3.1,3.22,59357511,191131185,25.9 +ANGO,2025-01-08,0.2511,9.4,11.76,13.129,11.5,12.94,4428200,57300908,10.3 +SLDB,2025-01-08,0.1454,3.92,4.49,4.59,3.94,4.03,2482914,10006143,8.7 +XHG,2025-01-10,1.1398,18.6,39.8,46.0,20.0,22.6,3669192,82923739,382.5 +DTIL,2025-01-10,0.5111,4.5,6.8,7.4399,5.27,5.7,19259558,109779480,164.7 +BAER,2025-01-10,0.3692,2.79,3.82,4.435,2.91,3.28,51728045,169667987,554.7 +MVST,2025-01-10,0.3636,1.87,2.55,2.87,2.155,2.35,76813092,180510766,5.6 +AIMD,2025-01-10,0.3119,2.866,3.76,5.0,3.25,3.55,3319265,11783390,199.3 +PRZO,2025-01-10,0.1978,1.82,2.18,2.2,1.86,2.06,5714541,11771954,1.7 +SANA,2025-01-10,0.1698,4.3,5.03,5.16,3.55,3.66,29628905,108441792,16.9 +REKR,2025-01-10,0.1656,1.63,1.9,1.9,1.6601,1.82,9024977,16425458,6.4 +PHIO,2025-01-13,1.4615,1.69,4.16,9.79,4.11,6.6,281979243,1861063003,4451.4 +VRME,2025-01-13,0.2608,2.55,3.215,4.96,3.07,4.13,57601914,237895904,163.9 +BDTX,2025-01-13,0.2383,1.93,2.39,2.67,2.17,2.31,11759588,27164648,25.5 +INTZ,2025-01-13,0.1931,2.9,3.46,3.55,2.15,2.27,13734451,31177203,47.1 +GRRR,2025-01-13,0.1554,11.65,13.46,14.0,10.85,12.07,6324746,76339684,1.7 +STIM,2025-01-13,0.1404,1.71,1.95,2.8,1.759,2.34,10421604,24386553,59.0 +LAB,2025-01-13,0.135,1.63,1.85,2.14,1.7,2.06,5449536,11226044,4.3 +DCTH,2025-01-13,0.1307,11.48,12.98,12.98,11.38,12.79,797321,10197735,2.6 +AIFF,2025-01-14,1.3632,1.9,4.49,5.8,2.85,3.15,131280318,413533001,2220.5 +PIII,2025-01-14,0.3033,10.75,14.01,14.5,11.13,11.35,1632291,18526502,229.0 +STEM,2025-01-14,0.2611,13.48,17.0,18.4,14.2,16.72,2544569,42545193,8.3 +RILY,2025-01-14,0.2481,3.95,4.93,4.97,4.34,4.5,2713372,12210174,4.3 +KULR,2025-01-14,0.2398,17.68,21.92,22.08,18.16,18.56,4149585,77016297,0.8 +APLD,2025-01-14,0.2273,7.765,9.53,9.715,8.25,8.54,69563284,594070445,4.6 +GFAI,2025-01-14,0.1695,1.77,2.07,2.57,1.87,2.01,9147784,18387045,4.1 +OLMA,2025-01-14,0.124,4.84,5.44,5.44,4.78,5.14,1408995,7242234,1.3 +FAMI,2025-01-15,0.6572,3.766,6.241,7.073,3.362,3.589,5696813,20445861,203.6 +OSTX,2025-01-15,0.6226,4.16,6.75,7.0,4.0701,4.36,19059205,83098133,310.6 +RGTIW,2025-01-15,0.4898,3.43,5.11,5.55,4.5,4.96,2982058,14791007,2.0 +ARQQ,2025-01-15,0.3767,18.05,24.85,25.41,20.08,20.59,1335901,27506201,1.2 +LAES,2025-01-15,0.3128,3.66,4.805,5.25,4.44,4.56,82228753,374963113,1.2 +MASS,2025-01-15,0.2727,1.98,2.52,3.09,2.41,2.91,12218944,35557127,53.3 +QBTS,2025-01-15,0.26,4.73,5.96,6.35,5.3,5.79,203553077,1178572315,2.3 +QSI,2025-01-15,0.1872,2.03,2.41,2.54,2.13,2.35,47847721,112442144,1.5 +BMRA,2025-01-16,2.1429,2.8,8.8,10.16,4.498,5.648,49451075,279299671,1576.4 +DOYU,2025-01-16,0.3051,4.736,6.181,6.223,5.799,6.046,1972367,11924930,28.1 +SOBR,2025-01-16,0.2809,8.9,11.4,12.5,9.6,10.4,5447478,56653771,35.2 +RZLV,2025-01-16,0.1701,2.41,2.82,3.14,2.62,3.01,18915195,56934736,1.6 +HUYA,2025-01-16,0.1556,1.703,1.968,1.968,1.72,1.81,6641538,12021183,7.7 +FSI,2025-01-16,0.1517,3.619,4.168,5.864,4.119,5.531,18240157,100886308,732.8 +INTZ,2025-01-16,0.1273,2.67,3.01,3.4095,2.41,2.52,7594074,19137066,5.4 +TPET,2025-01-16,0.1111,1.8,2.0,2.09,1.84,1.98,3242204,6419563,3.0 +VS,2025-01-17,0.7708,1.92,3.4,3.79,2.57,2.76,65291137,180203538,837.7 +ZEO,2025-01-17,0.5641,2.34,3.66,3.88,2.88,3.3,33572465,110789134,208.4 +PRZO,2025-01-17,0.3081,1.85,2.42,2.5099,1.98,2.13,62963936,134113183,21.5 +BTCT,2025-01-17,0.2773,4.76,6.08,9.8999,5.28,8.26,61453355,507604712,103.5 +XHG,2025-01-17,0.1522,18.4,21.2,26.8,21.0,22.8,1426479,32523721,108.8 +TMC,2025-01-17,0.1401,1.57,1.79,1.88,1.465,1.59,16346691,25991238,10.3 +PTHS,2025-01-17,0.1354,9.6,10.9,24.5,10.0,19.0,1427435,27121265,140.8 +LAES,2025-01-17,0.108,4.35,4.82,5.16,4.17,4.24,60024094,254502158,0.9 +ASST,2025-01-21,1.4543,9.29,22.8,29.0,16.54,18.0,13317920,239722560,244.6 +INM,2025-01-21,0.4626,4.95,7.24,8.27,4.97,5.05,26115053,131881017,1388.4 +VATE,2025-01-21,0.4538,2.757,4.008,5.907,3.534,5.136,31089908,159677767,1221.6 +TPET,2025-01-21,0.4045,1.78,2.5,3.25,2.12,2.66,45851073,121963854,40.6 +DWTX,2025-01-21,0.3529,1.87,2.53,3.99,2.05,3.15,24445468,77003224,1157.2 +LEDS,2025-01-21,0.3206,1.681,2.22,2.48,1.52,1.75,10401723,18203015,250.2 +REPL,2025-01-21,0.2426,10.14,12.6,13.13,11.48,11.85,2219113,26296489,3.3 +EOLS,2025-01-21,0.235,10.51,12.98,14.49,12.74,13.48,2935318,39568086,5.3 +ALOY,2025-01-22,0.9704,1.69,3.33,5.9999,2.68,5.52,237548077,1311265385,12619.8 +NUAI,2025-01-22,0.5255,2.74,4.18,4.32,2.78,3.02,30524619,92184349,109.5 +ASST,2025-01-22,0.3667,18.0,24.6,34.0,23.0,27.2,6978785,189822952,114.9 +NTRB,2025-01-22,0.2649,5.21,6.59,8.18,6.21,7.34,4344471,31888417,186.5 +AGPU,2025-01-22,0.2441,19.05,23.7,35.55,19.72,22.2,3222749,71545027,207.0 +MGX,2025-01-22,0.2279,2.72,3.34,4.0,2.94,3.03,16972701,51427284,16.8 +GELS,2025-01-22,0.181,2.1,2.48,2.8,2.25,2.65,7476412,19812491,72.5 +MDAI,2025-01-22,0.1627,2.09,2.43,2.59,2.02,2.06,5914136,12183120,4.8 +VNCE,2025-01-23,0.8638,2.35,4.38,5.5699,3.82,3.9,134979670,526420713,391.3 +XCUR,2025-01-23,0.4706,10.37,15.25,15.25,12.21,13.66,570785,7796923,5.8 +SPCB,2025-01-23,0.284,13.24,17.0,18.95,14.75,14.76,5941227,87692510,13.4 +TAL,2025-01-23,0.1774,9.13,10.75,11.09,10.24,11.07,28603173,316637125,6.2 +EVLV,2025-01-23,0.1739,3.22,3.78,3.97,3.58,3.95,5968869,23577032,4.3 +LYTS,2025-01-23,0.1421,19.49,22.26,25.13,21.84,24.36,1039210,25315155,10.6 +FNUC,2025-01-23,0.1212,17.16,19.24,22.75,16.9,18.07,2543035,45952642,2.0 +VRME,2025-01-23,0.1,2.4,2.64,2.76,1.85,1.85,6229791,11525113,4.2 +EVAX,2025-01-24,0.9148,3.64,6.97,9.8,4.81,6.03,55785416,336386058,1259.0 +NVNI,2025-01-24,0.4564,14.9,21.7,58.7,21.2,44.0,36783607,1618478708,806.7 +DWTX,2025-01-24,0.3101,13.35,17.49,19.33,10.1,11.4,8162763,93055498,371.8 +FPH,2025-01-24,0.1576,4.06,4.7,5.7647,4.7,5.75,4349008,25006796,21.9 +DAN,2025-01-24,0.1567,12.83,14.84,15.62,14.67,14.74,5889193,86806704,3.9 +WKEY,2025-01-24,0.1548,8.14,9.4,10.09,8.25,8.37,1787737,14963358,1.0 +PRFX,2025-01-24,0.1285,15.95,18.0,33.25,16.1,17.85,3699468,66035503,109.9 +DDD,2025-01-24,0.1151,3.04,3.39,3.9,3.22,3.85,10795667,41563317,5.3 +JG,2025-01-27,1.7328,6.0121,16.43,20.94,11.63,14.53,38722279,562634713,5638.1 +YIBO,2025-01-27,0.2558,2.15,2.7,17.47,2.7,3.08,35240720,108541417,3563.1 +FMST,2025-01-27,0.1359,1.84,2.09,2.62,1.7842,2.03,4387422,8906466,371.7 +ZKIN,2025-01-27,0.1346,4.627,5.25,5.39,4.631,4.76,1218478,5799955,259.3 +DTSS,2025-01-27,0.119,2.1,2.35,3.1,1.95,2.08,3879412,8069176,75.1 +KC,2025-01-27,0.0936,10.79,11.8,12.19,10.895,11.0,5283669,58120359,2.2 +EVER,2025-01-27,0.0831,17.57,19.03,21.3313,19.01,20.89,1638486,34227972,4.3 +MSTZ,2025-01-27,0.0786,15.52,16.74,18.31,15.2995,16.05,25951135,416515716,1.3 +DXF,2025-01-28,2.2658,7.75,25.31,29.77,17.0491,20.79,2949423,61318504, +YIBO,2025-01-28,0.8117,3.08,5.58,6.12,4.26,5.14,55602591,285797317,5621.8 +ZKIN,2025-01-28,0.2355,4.76,5.881,5.95,4.701,5.731,3611523,20697638,768.7 +BKSY,2025-01-28,0.2014,13.16,15.81,17.39,13.76,14.02,7991883,112046199,7.9 +TC,2025-01-28,0.15,20.0,23.0,23.0,18.9,22.8,344884,7863355,105.7 +PHIO,2025-01-28,0.1089,2.02,2.24,2.86,2.0,2.55,10419493,26569707,28.6 +WCMI,2025-01-28,0.1049,13.63,15.06,15.06,13.65,13.77,1039258,14310582,57.1 +CORZW,2025-01-28,0.102,5.98,6.59,6.59,5.23,6.18,1240762,7667909,2.7 +AZIO,2025-01-29,0.3005,5.69,7.4,8.1,6.066,6.67,4728353,31538114,1191.5 +SXTP,2025-01-29,0.2847,15.42,19.81,24.0,18.42,21.2,2802283,59408399,265.0 +PACK,2025-01-29,0.2213,5.74,7.01,8.6207,6.81,8.43,14745310,124302963,89.4 +FGMCU,2025-01-29,0.1988,8.25,9.89,9.9,9.82,9.83,5369946,52786569, +NWTG,2025-01-29,0.1842,11.4,13.5,18.84,10.33,17.7,1740695,30810301,33.8 +DJTWW,2025-01-29,0.1616,19.62,22.79,23.3912,21.06,22.01,393800,8667538,3.3 +PL,2025-01-29,0.1447,5.46,6.25,6.25,5.18,5.55,24549197,136248043,5.6 +ARRY,2025-01-29,0.0958,6.68,7.32,7.4,6.87,7.15,7417415,53034517,1.4 +ATHE,2025-01-30,0.9759,2.91,5.75,5.87,4.07,4.57,23091768,105529379,615.2 +KZIA,2025-01-30,0.5652,6.9,10.8,13.2,8.65,9.5,20794535,197548082,1504.6 +NWTG,2025-01-30,0.3051,17.7,23.1,32.7,21.9,27.04,4315638,116694851,83.7 +ONEW,2025-01-30,0.1726,15.35,18.0,20.15,16.71,17.46,476677,8322780,3.1 +ACMR,2025-01-30,0.1173,17.48,19.53,21.1394,19.0,20.54,4648708,95484462,4.6 +TSLG,2025-01-30,0.117,11.37,12.7,12.7,11.14,12.08,503176,6078366,2.5 +FLG,2025-01-30,0.1011,9.554,10.52,11.31,10.37,11.01,17188920,189250009,3.2 +DTCX,2025-01-30,0.0871,3.56,3.87,4.33,3.5005,3.7,2162971,8002992,21.6 +NCEL,2025-01-31,0.5303,19.8,30.3,33.7,22.9,24.9,6124276,152494472,356.5 +CYCN,2025-01-31,0.315,2.54,3.34,4.47,3.04,3.92,82574079,323690389,1531.1 +RIME,2025-01-31,0.3115,4.88,6.4,6.44,5.02,5.12,1708990,8750028,3.2 +VIAV,2025-01-31,0.2132,9.99,12.12,12.907,11.88,12.04,17601288,211919507,13.3 +CIFR,2025-01-31,0.1915,4.7,5.6,6.29,5.5,5.73,43243879,247787426,4.4 +REBN,2025-01-31,0.1872,2.03,2.41,5.4,2.3,3.3,55537744,183274555,856.5 +LODE,2025-01-31,0.1831,3.55,4.2,4.2,3.609,3.81,3309687,12609907,3.8 +ORKT,2025-01-31,0.1752,5.48,6.44,7.596,6.04,6.92,3201260,22152719,7.2 +GHRS,2025-02-03,0.8868,10.6,20.0,20.5,17.51,17.99,10306762,185418648,131.7 +REBN,2025-02-03,0.5152,3.3,5.0,6.75,4.701,5.09,66976266,340909193,873.1 +KC,2025-02-03,0.187,12.57,14.92,16.34,14.57,15.14,11320730,171395852,4.7 +MX,2025-02-03,0.1852,4.05,4.8,4.99,4.53,4.58,1450465,6643129,9.5 +SSYS,2025-02-03,0.1643,9.31,10.84,11.41,10.48,11.31,4668467,52800361,10.8 +RIME,2025-02-03,0.1641,5.12,5.96,5.96,5.1,5.34,942387,5032346,1.8 +MSTZ,2025-02-03,0.15,17.27,19.86,19.88,15.8,15.98,24547634,392271191,1.3 +UNG,2025-02-03,0.0772,16.19,17.44,17.98,17.382,17.64,9246918,163115633,0.9 +AZTR,2025-02-04,0.8852,1.855,3.497,3.915,1.615,2.158,37333173,80564987,287.7 +QNTM,2025-02-04,0.8365,3.18,5.84,7.28,4.76,6.71,78536687,526981169,1196.1 +EVAX,2025-02-04,0.6375,2.4,3.93,4.05,2.93,3.27,62816946,205411413,337.5 +PTIR,2025-02-04,0.448,9.848,14.26,15.24,13.75,14.5,25450650,369034425,2.5 +FNUC,2025-02-04,0.1561,8.996,10.4,11.7,9.601,10.49,3488326,36592539,2.5 +KAPA,2025-02-04,0.1382,1.52,1.73,1.92,1.57,1.74,11686100,20333814,119.9 +XGN,2025-02-04,0.1211,3.88,4.35,5.35,4.3291,5.02,1103434,5539238,11.5 +QNRX,2025-02-04,0.1181,10.33,11.55,16.1,10.67,10.68,1396285,14912323,69.3 +OGEN,2025-02-05,0.8796,8.523,16.02,18.9,7.626,8.88,8263239,73377562,647.2 +KTTA,2025-02-05,0.7452,2.08,3.63,3.85,2.67,2.74,61494899,168496023,2185.0 +CYN,2025-02-05,0.3258,10.65,14.12,15.33,12.0,12.3,2996546,36857515,77.9 +ACB,2025-02-05,0.269,3.68,4.6699,5.6899,4.57,5.37,69873084,375218461,103.9 +AURE,2025-02-05,0.1988,16.1,19.3,27.0,11.0,11.6,642999,7458788,30.1 +SFHG,2025-02-05,0.19,5.0,5.95,6.45,5.15,5.6,4084943,22875680,26.9 +MAT,2025-02-05,0.1771,18.07,21.27,21.35,20.18,20.84,18416580,383801527,7.8 +ASST,2025-02-05,0.1647,10.99,12.8,19.19,12.64,15.8,8507659,134421012,150.8 +SBET,2025-02-06,0.4968,5.04,7.544,8.268,5.808,6.562,3814991,25033970,146.1 +QNTM,2025-02-06,0.3415,8.58,11.51,18.0,10.665,14.5,35675746,517298317,543.3 +APPS,2025-02-06,0.2598,2.54,3.2,5.13,3.12,4.99,121528075,606425094,40.6 +IVVD,2025-02-06,0.1943,2.11,2.52,2.74,1.88,1.98,74698855,147903732,70.1 +PTON,2025-02-06,0.1755,7.58,8.91,9.755,8.2,8.49,65068515,552431692,6.4 +LAES,2025-02-06,0.1702,3.82,4.47,4.475,3.93,4.0,47288181,189152724,0.9 +MBX,2025-02-06,0.1467,11.25,12.9,14.23,12.21,12.26,942127,11550477,3.7 +ARBE,2025-02-06,0.1371,2.48,2.82,3.05,2.6805,2.73,18034987,49235514,2.4 +UPC,2025-02-07,0.2826,6.44,8.26,9.8,6.38,7.36,3607053,26547910,254.9 +TNXP,2025-02-07,0.2198,11.24,13.71,18.3999,12.018,12.39,10610628,131465680,12.8 +SEGG,2025-02-07,0.2057,14.1,17.0,18.4,13.3,16.0,6023103,96369648,252.7 +ULCC,2025-02-07,0.1496,8.09,9.3,9.67,9.002,9.34,5864688,54776185,2.4 +CLSK,2025-02-07,0.1127,10.38,11.55,12.47,11.2,11.33,57545897,651995013,2.5 +NTRB,2025-02-07,0.1094,6.67,7.4,8.86,7.4,7.81,898949,7020791,15.8 +PGY,2025-02-07,0.0985,11.07,12.16,12.88,11.85,12.5,5067822,63347775,3.3 +GRRR,2025-02-07,0.0863,18.07,19.63,20.47,18.313,18.57,3916238,72724539,1.4 +CYN,2025-02-10,0.4695,9.03,13.27,29.55,12.15,27.71,13908136,385394448,330.8 +NCEL,2025-02-10,0.3422,18.7,25.1,29.7,23.1,25.7,5048740,129752618,262.7 +BNAI,2025-02-10,0.3171,4.1,5.4,10.5,4.659,6.951,22134317,153855637,349.9 +SLDB,2025-02-10,0.2604,2.88,3.63,3.97,3.27,3.44,4602522,15832675,9.6 +DOMH,2025-02-10,0.2115,2.497,3.025,5.041,2.898,4.778,23714849,113309548,242.3 +MBLY,2025-02-10,0.1506,16.07,18.49,19.1944,17.88,17.97,13664131,245544434,2.4 +BFRG,2025-02-10,0.1259,2.86,3.22,4.3494,3.2,3.36,14154888,47560423,43.3 +BBAI,2025-02-10,0.0978,8.59,9.43,9.7,8.2,8.72,187500676,1635005894,4.5 +DOMH,2025-02-11,0.6932,4.778,8.09,8.788,5.685,5.786,33245308,192357352,307.7 +INAB,2025-02-11,0.476,8.103,11.96,12.53,8.7,9.204,7561146,69592787,335.6 +AIFF,2025-02-11,0.3871,3.1,4.2999,11.51,3.95,8.4,195409794,1641442269,1288.8 +SLQT,2025-02-11,0.2877,4.38,5.64,6.86,5.25,5.73,29714801,170265809,26.7 +SATL,2025-02-11,0.1208,4.51,5.055,5.12,4.03,4.09,3522827,14408362,6.4 +LUXE,2025-02-11,0.08,10.0,10.8,12.5,10.8,12.38,437453,5415668,5.3 +ENTA,2025-02-11,0.0714,4.9,5.25,5.9878,5.2308,5.59,1172565,6554638,2.7 +XLO,2025-02-12,1.0548,9.198,18.9,23.8,16.94,20.72,12085783,250417423,879.3 +VBIO,2025-02-12,0.6401,3.995,6.552,11.93,5.964,11.9,30368747,361388089,1979.7 +NWTG,2025-02-12,0.291,11.96,15.44,25.5,13.8,22.14,2432590,53857542,38.8 +AIFF,2025-02-12,0.2774,8.4,10.73,14.4499,10.57,12.97,94554576,1226372850,554.9 +DUO,2025-02-12,0.2103,9.122,11.04,11.46,9.678,9.938,2314413,23000636,22.0 +CLMT,2025-02-12,0.1965,15.88,19.0,19.14,17.21,17.41,3627569,63155976,3.0 +NEUP,2025-02-12,0.1298,4.47,5.0501,5.1199,4.25,4.63,2970600,13753878,31.5 +ANGI,2025-02-12,0.1098,17.3,19.2,20.7,16.0,16.3,555017,9046777,7.0 +MBRX,2025-02-13,0.6429,10.5,17.25,91.25,14.25,31.75,4290637,136227724,2438.6 +EDSA,2025-02-13,0.6075,1.86,2.99,4.4899,2.83,3.25,115456916,375234977,7193.1 +XHG,2025-02-13,0.3289,12.04,16.0,21.4,14.4,14.63,1228880,17978514,70.8 +AIFF,2025-02-13,0.2914,12.97,16.75,17.2,14.05,15.46,40641845,628322923,214.8 +DNOW,2025-02-13,0.273,14.14,18.0,18.4494,16.22,16.98,2228760,37844344,2.8 +DOMH,2025-02-13,0.2068,5.328,6.43,10.53,5.957,10.08,11109916,111987953,97.7 +OTLY,2025-02-13,0.1688,7.7,9.0,10.8,8.0,10.6,952388,10095312,8.6 +OPRT,2025-02-13,0.1624,5.91,6.87,7.75,6.2,6.4,3988252,25524812,17.1 +WRD,2025-02-14,1.081,17.17,35.73,42.24,27.53,31.5,21075358,663873777,322.0 +OSTX,2025-02-14,0.392,1.99,2.77,2.98,2.16,2.23,38698636,86297958,217.3 +NUS,2025-02-14,0.3824,6.15,8.502,9.618,7.127,7.242,3586154,25970927,6.8 +SEGG,2025-02-14,0.234,14.1,17.4,20.4,15.7,16.0,1053074,16849184,43.1 +PONY,2025-02-14,0.1978,14.86,17.8,17.9,16.02,16.54,3480653,57570000,4.8 +ZH,2025-02-14,0.1783,4.6,5.42,5.49,5.0,5.32,4057325,21584969,18.9 +KC,2025-02-14,0.1671,17.35,20.25,21.69,20.25,20.81,7645031,159093095,2.4 +PROP,2025-02-14,0.1652,7.87,9.17,9.32,8.5,8.75,731559,6401141,5.5 +PRFX,2025-02-18,0.8688,14.1,26.35,27.35,16.85,18.55,8767703,162640890,452.5 +DFSC,2025-02-18,0.6784,9.807,16.46,26.46,14.82,16.68,13696641,228459971,601.5 +SLDB,2025-02-18,0.6576,4.03,6.68,7.2,5.04,5.3,71207587,377400211,128.4 +GCL,2025-02-18,0.42,3.0492,4.33,9.89,4.1,7.5,58161835,436213762,2054.5 +SOBR,2025-02-18,0.2476,10.5,13.1,14.2,10.0,10.5,3722106,39082113,28.7 +IPHA,2025-02-18,0.2165,1.94,2.36,2.38,2.04,2.34,11531370,26983405,537.9 +AIFF,2025-02-18,0.1587,9.01,10.44,10.6,8.02,8.37,6648170,55645182,31.2 +PCT,2025-02-18,0.1515,9.31,10.72,11.525,10.02,10.9,7287347,79432082,3.7 +SINT,2025-02-19,0.8723,2.82,5.28,6.11,4.25,4.82,70949431,341976257,3824.3 +OSRH,2025-02-19,0.8199,3.11,5.66,10.0,5.0,5.46,42095643,229842210,8169.9 +SEDG,2025-02-19,0.3447,16.93,22.765,23.7697,19.5,19.63,30846787,605522428,8.7 +CURR,2025-02-19,0.1412,1.7,1.94,2.77,1.5425,1.58,6590499,10412988,25.3 +CVI,2025-02-19,0.1205,18.43,20.65,22.13,19.43,19.8,3447623,68262935,4.4 +SERV,2025-02-19,0.1159,11.82,13.19,14.295,12.64,13.365,26006319,347574453,2.2 +ADEA,2025-02-19,0.1127,13.22,14.71,16.95,14.39,16.09,2572794,41396255,6.2 +UIS,2025-02-19,0.1061,6.69,7.4,7.54,5.88,5.94,1685552,10012178,4.9 +KYNB,2025-02-20,0.4299,14.05,20.09,21.94,16.75,19.31,4905887,94732677,175.1 +XOS,2025-02-20,0.4153,3.13,4.43,9.1499,4.24,6.25,96590886,603693037,7208.0 +CYD,2025-02-20,0.2919,15.28,19.74,22.69,17.3,18.55,1535126,28476587,66.3 +HLF,2025-02-20,0.2856,5.62,7.225,8.4,6.7849,8.02,23903769,191708227,13.0 +AMPL,2025-02-20,0.2321,11.85,14.6,14.88,13.1059,14.44,4087662,59025839,9.4 +VNET,2025-02-20,0.1549,13.04,15.06,16.13,13.0,14.68,27837371,408652606,4.7 +SUIG,2025-02-20,0.1471,2.1794,2.5,2.82,2.26,2.3,5418496,12462540,29.1 +MCVT,2025-02-20,0.1469,2.179,2.499,2.819,2.259,2.299,5418496,12457122,29.1 +UPC,2025-02-21,0.8193,5.7,10.37,13.95,7.08,8.056,10505314,84630809,512.0 +OSRH,2025-02-21,0.5072,3.45,5.2,6.95,4.22,4.22,24838212,104817254,3579.3 +CYD,2025-02-21,0.1854,18.55,21.99,22.48,19.15,19.54,2031718,39699769,87.7 +SEGG,2025-02-21,0.1781,14.6,17.2,19.0,13.15,13.8,823715,11367267,23.3 +EDIT,2025-02-21,0.165,2.06,2.4,2.4,1.89,1.92,9469267,18180992,5.0 +TUYA,2025-02-21,0.1018,3.645,4.016,4.349,3.683,3.814,16658853,63536865,5.4 +SOBR,2025-02-21,0.0882,10.2,11.1,11.6,10.2,11.2,559726,6268931,4.1 +TANH,2025-02-21,0.087,2.99,3.25,3.4699,2.85,3.17,3133961,9934656,38.1 +BVC,2025-02-24,2.7982,6.503,24.7,26.8,15.5,16.3,12212689,199066830,2864.1 +ATCH,2025-02-24,0.7106,2.35,4.02,13.19,4.0,5.56,146448389,814253042,1299.9 +CNEY,2025-02-24,0.2796,6.115,7.825,10.25,5.507,5.525,4723733,26098624,136.1 +FRSX,2025-02-24,0.2307,18.77,23.1,23.94,16.86,17.77,594492,10564122,104.9 +DOMH,2025-02-24,0.1574,6.36,7.361,7.53,5.739,6.118,2016839,12339021,4.5 +LINC,2025-02-24,0.1492,16.09,18.49,19.79,16.28,18.55,832741,15447345,8.0 +GSUN,2025-02-24,0.1283,2.65,2.99,5.25,2.91,3.11,2959057,9202667,770.1 +RILY,2025-02-24,0.0853,3.4,3.69,5.2799,3.5,4.54,19650887,89215026,27.3 +VIVS,2025-02-25,2.3875,4.428,15.0,21.96,11.28,15.24,32191328,490595838,3367.6 +WAFU,2025-02-25,0.838,1.79,3.29,7.4899,2.41,2.85,125457213,357553057,5478.5 +MFI,2025-02-25,0.4925,4.798,7.161,10.08,5.856,6.801,9174112,62393135,735.3 +ADIL,2025-02-25,0.2394,19.13,23.71,32.5,20.25,23.07,1705258,39340302,549.5 +GTBP,2025-02-25,0.2118,2.03,2.46,3.12,2.02,2.46,26697356,65675495,997.7 +DOMH,2025-02-25,0.1702,6.118,7.159,8.071,5.997,7.99,3816362,30492732,6.8 +RDHL,2025-02-25,0.1515,4.82,5.55,5.75,3.01,4.25,2424933,10305965,245.8 +PGEN,2025-02-25,0.1429,1.75,2.0,2.13,1.68,1.73,5365782,9282802,3.2 +ENVB,2025-02-26,1.6017,14.16,36.84,54.0,25.44,27.6,11285099,311468732,521.5 +CHAI,2025-02-26,0.9971,14.0,27.96,27.96,14.92,16.68,5835039,97328450,143.8 +PRCH,2025-02-26,0.2797,3.79,4.85,6.92,4.82,6.6,32034081,211424934,36.1 +INGN,2025-02-26,0.2542,9.52,11.94,11.94,7.78,8.11,1604197,13010037,5.5 +VISN,2025-02-26,0.1966,2.386,2.855,3.05,2.659,3.011,21059380,63409793,5.5 +EYE,2025-02-26,0.1801,11.44,13.5,13.84,12.58,12.77,3728479,47612676,3.0 +GTM,2025-02-26,0.1726,9.53,11.175,12.065,10.92,11.73,37434984,439112362,7.2 +JBI,2025-02-26,0.1656,8.06,9.395,10.13,8.86,9.11,4368600,39797946,4.4 +XNET,2025-02-27,0.6345,2.9,4.74,4.805,3.62,3.76,49080300,184541928,195.9 +NIXX,2025-02-27,0.481,1.58,2.34,2.56,1.65,1.71,63774499,109054393,278.6 +ATCH,2025-02-27,0.4113,2.82,3.98,4.14,3.1001,3.48,9459975,32920713,72.3 +AMST,2025-02-27,0.2636,2.39,3.02,4.34,2.33,2.5,43879220,109698050,1254.6 +RILY,2025-02-27,0.2323,5.64,6.95,7.21,5.76,6.13,21371947,131010035,26.1 +CPOP,2025-02-27,0.2066,6.92,8.35,9.08,7.209,8.999,2173101,19555735,335.8 +RRGB,2025-02-27,0.1925,4.52,5.39,6.24,5.25,6.08,3921954,23845480,16.9 +CORZ,2025-02-27,0.1841,10.02,11.865,11.865,10.45,10.71,25805347,276375266,3.1 +ORGO,2025-02-28,0.3225,3.07,4.06,6.4,3.98,6.21,58997241,366372866,186.5 +ARBB,2025-02-28,0.3092,7.2,9.426,12.3,8.4,9.78,3938803,38521493,1771.4 +ANAB,2025-02-28,0.1857,10.93,12.96,12.96,10.49,11.21,911221,10214787,1.4 +BTAI,2025-02-28,0.1272,1.73,1.95,2.82,1.82,2.16,102551264,221510730,769.9 +EXFY,2025-02-28,0.1242,3.22,3.62,3.99,3.58,3.875,2474939,9590388,7.7 +ACH,2025-02-28,0.1234,6.89,7.74,9.83,7.57,9.58,12108619,116000570,8.5 +ALHC,2025-02-28,0.118,13.47,15.06,15.85,14.245,15.69,4770138,74843465,2.7 +RKT,2025-02-28,0.1001,11.49,12.64,12.79,11.96,12.54,8324016,104383160,2.7 +BTOG,2025-03-03,4.2179,10.92,56.98,57.6,14.1,19.16,4879550,93492178,3523.1 +CPSR,2025-03-03,2.2473,7.36,23.9,23.9,23.73,23.7319,422174,10018991, +BTCT,2025-03-03,0.32,4.0,5.28,5.5,4.12,4.31,11037033,47569612,22.4 +ANRO,2025-03-03,0.25,2.8,3.5,3.5791,3.01,3.14,2412093,7573972,11.3 +CLRO,2025-03-03,0.2476,7.755,9.675,12.54,8.4,11.79,2229338,26283895,346.1 +MKTW,2025-03-03,0.1489,10.48,12.04,14.45,11.36,12.99,388060,5040899,25.8 +HUT,2025-03-03,0.1193,14.75,16.51,17.45,14.01,14.08,6257065,88099475,1.2 +BTAI,2025-03-03,0.1111,2.16,2.4,6.83,2.366,3.75,146905998,550897492,1044.0 +MASS,2025-03-04,0.7677,1.98,3.5,4.0,3.09,3.88,125555227,487154280,455.2 +JFIN,2025-03-04,0.2546,6.757,8.477,9.356,7.942,8.525,758115,6462930,7.8 +BTOG,2025-03-04,0.1451,19.16,21.94,28.35,19.5,21.48,2256721,48474367,1629.4 +CAPR,2025-03-04,0.1053,13.67,15.11,16.17,13.61,13.7,4578438,62724600,4.7 +GENI,2025-03-04,0.0745,8.32,8.94,9.57,8.39,9.31,9832687,91542315,5.2 +BTCZ,2025-03-04,0.0742,6.469,6.949,7.149,6.029,6.349,1224873,7776718,1.7 +ARBB,2025-03-05,0.7051,7.8,13.3,14.59,10.8,12.55,5861051,73556190,2592.2 +CTOS,2025-03-05,0.3308,4.02,5.35,5.48,4.46,4.83,2555987,12345417,4.8 +OPFI,2025-03-05,0.2037,9.064,10.91,10.93,9.277,10.04,3788907,38040626,1.8 +NAGE,2025-03-05,0.1982,5.6,6.71,9.18,6.67,8.55,18709491,159966148,55.6 +PRTS,2025-03-05,0.1916,8.812,10.5,12.7,10.5,12.4,883758,10958599,22.8 +BTAI,2025-03-05,0.1778,2.7,3.18,3.3597,2.73,2.73,10120518,27629014,65.0 +NVNI,2025-03-05,0.1669,2.625,3.063,3.095,2.7,2.708,8387746,22714016,93.8 +NEXN,2025-03-05,0.1442,7.42,8.49,9.65,7.79,9.5,911238,8656761,5.4 +AGMH,2025-03-06,0.8915,5.115,9.675,14.44,9.5,10.75,13894106,149361639,13213.6 +GV,2025-03-06,0.6482,3.695,6.09,7.0399,4.05,4.89,135249439,661369756,2169.1 +PSTV,2025-03-06,0.6286,8.75,14.25,38.5,11.66,36.0,14383401,517802436,10366.4 +SCNX,2025-03-06,0.4773,2.2,3.25,3.61,2.26,2.41,49208846,118593318,9635.6 +ECX,2025-03-06,0.1907,2.41,2.8697,2.9799,2.56,2.73,5828822,15912684,2.8 +MYE,2025-03-06,0.1421,9.29,10.61,12.1,10.61,11.9,1376197,16376744,6.9 +TH,2025-03-06,0.1264,5.54,6.24,6.32,5.76,5.89,2013092,11857111,3.4 +ACDC,2025-03-06,0.1086,6.54,7.25,7.25,6.35,6.58,774717,5097637,2.0 +BTOG,2025-03-07,0.5714,16.8,26.4,50.87,24.2,37.2,10377810,386054532,6758.6 +GENK,2025-03-07,0.3536,5.054,6.841,7.358,5.958,6.206,2245227,13933878,35.3 +GV,2025-03-07,0.2407,4.89,6.0672,9.6,5.56,6.05,71731307,433974407,1023.5 +APEI,2025-03-07,0.2364,19.25,23.8,25.6,21.1268,23.5,393362,9244007,5.4 +FAMI,2025-03-07,0.2249,2.743,3.36,3.438,2.76,2.832,5437748,15399702,270.5 +GAP,2025-03-07,0.1528,18.59,21.43,22.25,20.48,22.09,30489855,673520896,5.9 +VSTD,2025-03-07,0.1041,2.853,3.15,3.725,3.15,3.493,1441788,5036165,2.6 +AMRC,2025-03-07,0.0883,9.29,10.11,11.3759,10.04,11.09,1991458,22085269,5.8 +TRVI,2025-03-10,0.5326,4.3,6.59,7.39,5.7,6.07,57705813,350274284,82.6 +MLYS,2025-03-10,0.3432,10.52,14.13,18.29,13.5,14.96,15229716,227836551,50.6 +SNOA,2025-03-10,0.1809,1.99,2.35,3.53,2.3301,2.79,37838837,105570355,1495.5 +MSTZ,2025-03-10,0.1292,18.5,20.89,25.57,20.39,24.62,35628974,877185339,2.4 +XNET,2025-03-10,0.1067,4.5,4.98,4.98,4.34,4.54,2228420,10117026,6.0 +DWTX,2025-03-10,0.1061,6.6,7.3,9.45,6.72,8.44,11037490,93156415,77.3 +BTCZ,2025-03-10,0.0954,6.289,6.889,7.679,6.879,7.429,1667648,12388956,2.5 +GV,2025-03-10,0.0909,6.05,6.6,7.0,4.9314,5.09,5265773,26802784,75.1 +SNOA,2025-03-11,0.5448,2.79,4.31,4.46,3.1,3.4,51902475,176468415,2051.4 +MYO,2025-03-11,0.3357,4.17,5.57,6.2996,5.41,5.87,5393000,31656910,18.3 +LFMD,2025-03-11,0.2717,4.27,5.43,5.81,4.9377,5.575,7202742,40155286,5.6 +BVS,2025-03-11,0.2489,8.76,10.94,11.25,10.082,10.8,1726807,18649515,8.1 +HSAI,2025-03-11,0.1555,16.01,18.5,24.18,18.32,24.08,26817469,645764653,8.4 +BZ,2025-03-11,0.0942,17.3,18.93,18.95,17.37,18.16,6939250,126016780,1.4 +METC,2025-03-11,0.0893,8.343,9.088,11.66,9.018,11.54,3011886,34757164,5.9 +STI,2025-03-12,0.483,6.305,9.35,12.24,7.84,8.525,11693969,99691085,623.2 +GV,2025-03-12,0.4798,4.95,7.325,7.71,5.67,6.22,29336079,182470411,363.5 +GRPN,2025-03-12,0.2538,9.77,12.25,14.1399,12.09,13.98,11165043,156087301,12.4 +OPRX,2025-03-12,0.1715,4.14,4.85,6.74,4.85,6.28,16409689,103052846,142.0 +DWTX,2025-03-12,0.1671,11.13,12.99,14.69,10.14,10.7,7301194,78122775,51.1 +SFIX,2025-03-12,0.1513,4.23,4.87,4.87,3.72,4.0,8493605,33974420,4.6 +TSLL,2025-03-12,0.1478,7.386,8.478,8.768,8.077,8.534,222804469,1901413338,2.4 +TSLR,2025-03-12,0.1465,12.49,14.32,14.8,13.64,14.42,4735594,68287265,2.1 +NWTG,2025-03-13,0.7676,3.24,5.727,6.405,3.987,4.2,12193133,51211158,48.6 +CCLD,2025-03-13,0.45,1.6,2.32,2.35,1.5301,1.6,30520774,48833238,282.7 +AVAH,2025-03-13,0.4305,3.74,5.35,5.35,4.45,5.14,3403456,17493763,22.2 +CRVO,2025-03-13,0.2626,6.17,7.79,7.97,5.62,5.79,58367185,337946001,828.2 +MGTX,2025-03-13,0.2059,6.41,7.73,8.49,7.4001,8.25,6307093,52033517,20.5 +RAIL,2025-03-13,0.1958,6.23,7.45,8.3,7.22,7.32,1199017,8776804,5.7 +LFWD,2025-03-13,0.1837,17.64,20.88,35.4,19.08,19.2,8587720,164884224,411.2 +SRTA,2025-03-13,0.1555,2.83,3.27,3.77,3.0,3.03,2396056,7260049,4.4 +BON,2025-03-14,1.1887,18.39,40.25,73.75,28.5,36.0,3359922,120957192,3418.0 +AAOI,2025-03-14,0.4902,15.87,23.65,23.69,19.8,22.11,17009463,376079226,4.6 +GV,2025-03-14,0.4235,5.62,8.0,8.0799,5.16,5.96,21498755,128132579,220.9 +BTOG,2025-03-14,0.2621,16.37,20.66,21.0,17.02,18.6,1515361,28185714,517.0 +GDOT,2025-03-14,0.1732,6.64,7.79,8.18,7.43,7.74,2260728,17498034,4.0 +QBTS,2025-03-14,0.1143,6.91,7.7,10.2,7.62,10.15,261242342,2651609771,4.8 +QMCO,2025-03-14,0.1134,14.82,16.5,18.66,14.98,15.34,6363626,97618022,9.4 +GOGO,2025-03-14,0.1033,6.87,7.58,7.73,6.27,6.86,4955773,33996602,4.4 +GLMD,2025-03-17,0.2624,1.7269,2.18,3.5,2.18,2.5,49731571,124328927,2820.0 +VTVT,2025-03-17,0.2121,14.85,18.0,26.99,17.5,22.74,514801,11706574,56.1 +ANNX,2025-03-17,0.2115,2.6,3.15,3.51,2.72,2.75,4257385,11707808,3.9 +QUBT,2025-03-17,0.2017,7.09,8.52,8.58,7.74,8.02,79383486,636655557,6.1 +ARQQ,2025-03-17,0.1393,15.0,17.09,23.8899,16.03,23.54,2858870,67297799,7.6 +QNTM,2025-03-17,0.1391,4.89,5.57,8.6,5.28,7.18,8502512,61048036,34.0 +LAES,2025-03-17,0.125,3.32,3.735,3.9,3.53,3.76,24498036,92112615,1.8 +KULR,2025-03-17,0.1034,11.6,12.8,14.48,12.08,14.08,4005964,56403973,2.5 +SCNX,2025-03-18,0.2218,2.48,3.03,3.1699,1.5298,1.59,62793468,99841614,9545.3 +FNUC,2025-03-18,0.2085,5.411,6.539,7.901,5.785,7.116,13470710,95857572,34.4 +AIFF,2025-03-18,0.109,5.23,5.8,6.0,4.5601,4.62,3587692,16575137,2.9 +FINV,2025-03-18,0.0965,8.288,9.088,10.07,8.87,9.742,4598755,44801071,4.8 +TME,2025-03-18,0.0859,12.58,13.66,14.76,13.19,14.53,36548528,531050111,4.6 +NIU,2025-03-18,0.0769,3.51,3.78,4.22,3.555,3.9,6315877,24631920,9.6 +MSTZ,2025-03-18,0.0765,14.91,16.05,17.12,15.2613,16.02,25987258,416315873,1.5 +CRVO,2025-03-18,0.0751,9.05,9.73,10.1899,8.78,9.34,5042710,47098911,71.2 +LSE,2025-03-19,0.4723,7.77,11.44,14.9899,11.13,12.5,15044913,188061412,1705.8 +BDTX,2025-03-19,0.4048,1.68,2.36,2.78,1.71,1.72,114566834,197054954,250.8 +BOWN,2025-03-19,0.2694,4.325,5.49,8.94,4.93,6.38,6625345,42269701,608.8 +SCNX,2025-03-19,0.173,1.59,1.865,2.0693,1.69,1.9,18347428,34860113,2547.5 +ATER,2025-03-19,0.128,2.11,2.38,3.5,2.36,2.7,50974653,137631563,1168.6 +ITUB,2025-03-19,0.1081,4.8,5.319,5.375,5.273,5.31,12422451,65963214,0.5 +STNE,2025-03-19,0.1026,8.137,8.972,9.666,8.959,9.401,21666914,203690658,4.2 +RR,2025-03-19,0.1024,1.905,2.1,2.29,2.0,2.13,15731290,33507647,1.6 +BTOG,2025-03-20,0.1485,15.89,18.25,18.84,16.8,17.95,540959,9710214,4.8 +PSTV,2025-03-20,0.115,12.78,14.25,52.0,13.76,34.5,14309914,493692033,1012.1 +DBI,2025-03-20,0.1001,3.548,3.903,4.034,3.637,3.772,2467668,9308043,1.6 +XYF,2025-03-20,0.0857,11.78,12.79,12.79,10.74,11.29,632588,7141918,8.5 +IBO,2025-03-21,0.5192,2.08,3.16,6.17,2.89,4.96,142233137,705476359,5903.9 +FNUC,2025-03-21,0.1673,7.81,9.117,10.38,8.19,8.914,8482686,75614663,21.3 +LAZR,2025-03-21,0.1146,6.28,7.0,8.5,6.8,8.35,11727927,97928190,8.1 +OSUR,2025-03-24,0.1047,3.44,3.8,4.22,3.66,3.66,1502872,5500511,2.3 +LXEO,2025-03-24,0.1033,2.71,2.99,4.27,2.97,4.09,6952133,28434223,19.2 +DMRA,2025-03-24,0.1,6.1,6.71,7.1,6.18,6.7,2406628,16124407,173.5 +ARQQ,2025-03-24,0.0998,17.73,19.5,20.7,18.3,19.4,691531,13415701,1.9 +ROBN,2025-03-24,0.0951,13.99,15.32,16.9,15.09,16.47,1673532,27563072,1.8 +BTOG,2025-03-24,0.0934,15.64,17.1,17.58,15.89,16.34,388592,6349593,2.2 +CYRX,2025-03-24,0.0861,5.69,6.18,7.18,6.1,7.1,1325766,9412938,4.1 +IHS,2025-03-24,0.0857,5.25,5.7,5.75,5.0101,5.34,1452100,7754214,5.7 +AGPU,2025-03-25,0.8828,16.73,31.5,39.0,22.65,25.35,10230388,259340335,1277.0 +MYSE,2025-03-25,0.7176,2.16,3.71,5.93,2.96,3.78,143616828,542871609,851.8 +ALMS,2025-03-25,0.5099,3.775,5.7,5.7,3.92,4.0,13330933,53323732,84.5 +KBSX,2025-03-25,0.1504,2.26,2.6,2.96,2.43,2.86,6791818,19424599,1488.5 +MBLY,2025-03-25,0.1337,15.26,17.3,17.3275,15.8,16.58,8867045,147015606,2.6 +CHAI,2025-03-25,0.0862,9.28,10.08,14.68,8.08,8.08,2209702,17854392,39.7 +OSRH,2025-03-26,1.5938,1.6,4.1501,4.33,2.89,3.79,96151574,364414465,857.7 +BLNE,2025-03-26,0.5798,1.88,2.97,3.15,1.55,2.08,40695439,84646513,3195.4 +VIVO,2025-03-26,0.4646,2.26,3.31,5.5,3.11,4.18,143023201,597836980,1155.2 +ATNM,2025-03-26,0.2152,1.58,1.92,2.41,1.8,1.87,14600589,27303101,85.0 +WVE,2025-03-26,0.1367,9.44,10.73,10.91,9.55,10.02,3351713,33584164,3.5 +PLTK,2025-03-26,0.1317,4.077,4.614,5.059,4.568,4.911,6897141,33871859,3.8 +MYSE,2025-03-26,0.1177,3.78,4.225,4.42,3.56,3.78,9501515,35915726,56.4 +PRM,2025-03-26,0.1065,9.11,10.08,10.57,9.89,10.02,2366405,23711378,2.0 +DRMA,2025-03-27,0.6296,13.5,22.0,23.7,13.5,14.2,7633164,108390928,450.4 +WOOF,2025-03-27,0.2008,2.44,2.93,3.42,2.75,3.21,27829738,89333458,8.4 +ASST,2025-03-27,0.155,10.39,12.0,14.36,11.0,11.86,1107720,13137559,69.5 +MREO,2025-03-27,0.1392,2.37,2.7,2.73,2.4,2.41,2738087,6598789,2.8 +IBO,2025-03-27,0.1364,2.2,2.5,2.61,2.2305,2.28,2504962,5711313,98.4 +ZGN,2025-03-27,0.1228,6.946,7.799,7.947,7.407,7.613,1937369,14749190,2.5 +VIVO,2025-03-27,0.1184,4.18,4.675,6.66,3.79,4.18,44826019,187372759,345.7 +MIST,2025-03-27,0.1144,2.01,2.24,2.36,2.03,2.25,9572567,21538275,5.3 +ALP,2025-03-28,1.5372,4.71,11.95,13.2,8.7214,9.6,29921312,287244595,2028.7 +DBVT,2025-03-28,0.5422,3.91,6.03,6.7799,5.3,6.2,21798435,135150297,1898.9 +TWG,2025-03-28,0.5252,16.45,25.09,27.0,16.47,18.0,1546587,27838566,201.0 +FTH,2025-03-28,0.2071,8.616,10.4,15.19,9.602,10.17,7297190,74212422,2018.0 +KULR,2025-03-28,0.1815,11.68,13.8,14.8,11.6,11.68,4817811,56272032,3.5 +QNTM,2025-03-28,0.1778,8.38,9.87,12.4525,8.0039,8.56,14126460,120922497,60.4 +TMC,2025-03-28,0.1647,1.7,1.98,2.1,1.69,1.72,9627535,16559360,5.9 +RNAZ,2025-03-28,0.1607,14.56,16.9,18.76,13.72,13.72,824840,11316804,20.1 +HERE,2025-03-31,0.2435,3.42,4.2526,4.59,3.63,4.02,16989973,68299691,199.1 +MYSZ,2025-03-31,0.1453,1.79,2.05,3.04,1.4003,1.43,57067797,81606949,1721.8 +DOMH,2025-03-31,0.1423,3.858,4.407,4.407,3.1,3.228,8445246,27261254,18.0 +MCHB,2025-03-31,0.1199,8.507,9.527,10.87,9.422,10.74,2510060,26958044,27.2 +BGDE,2025-03-31,0.0861,10.1,10.97,11.0,7.156,9.952,806709,8028367,111.3 +CYRX,2025-03-31,0.0755,6.09,6.55,7.0,5.98,6.08,1241319,7547219,3.4 +BIAF,2025-04-01,1.6538,7.8,20.7,46.53,17.1,32.7,16583896,542293399,2828.3 +CSAI,2025-04-01,0.3514,4.44,6.0,11.4599,5.5,5.7,47561016,271097791,123.4 +SKYA,2025-04-01,0.1973,8.97,10.74,11.07,7.56,8.19,1160002,9500416,63.8 +VERU,2025-04-01,0.163,4.901,5.7,6.884,5.159,6.398,1519535,9721984,11.5 +OMER,2025-04-01,0.1144,8.22,9.16,9.16,7.715,7.91,1877015,14847188,3.6 +HERE,2025-04-01,0.0846,4.02,4.36,6.5863,4.25,6.58,10274530,67606407,120.4 +TNXP,2025-04-01,0.0778,17.875,19.265,19.465,16.5055,17.45,1209512,21105984,1.2 +HCM,2025-04-01,0.0771,15.04,16.2,16.44,15.72,16.06,368879,5924196,4.4 +IBG,2025-04-02,2.0641,12.32,37.75,49.25,25.25,31.25,8763526,273860187,1703.1 +QNRX,2025-04-02,0.6068,7.406,11.9,14.7,8.642,10.24,5962280,61053747,442.0 +TTEC,2025-04-02,0.2446,3.27,4.07,5.43,4.07,4.99,17189137,85773793,46.0 +PCSA,2025-04-02,0.165,10.3,12.0,12.2,6.0,7.5,2034592,15259440,684.0 +HERE,2025-04-02,0.1337,6.58,7.46,7.96,4.63,6.17,9190442,56705027,104.6 +ANGO,2025-04-02,0.1294,9.66,10.91,11.72,10.21,10.86,2523339,27403461,4.9 +CGNT,2025-04-02,0.1192,8.22,9.2,10.315,9.1376,9.95,1979719,19698204,7.9 +SKYA,2025-04-02,0.0989,8.19,9.0,10.02,8.55,8.91,630322,5616169,30.5 +VBIO,2025-04-03,0.4892,3.25,4.84,5.8,3.7801,4.87,34887064,169900001,703.0 +MSTZ,2025-04-03,0.1613,11.78,13.68,14.5578,12.8,14.03,33745284,473446334,1.2 +BTCZ,2025-04-03,0.1123,5.879,6.539,6.649,6.439,6.544,966480,6324645,1.4 +JYD,2025-04-03,0.0955,17.27,18.92,29.75,17.76,21.47,1000263,21475646,1528.3 +ERY,2025-04-03,0.0863,19.7,21.4,22.8,21.3,22.78,925802,21089769,4.1 +AAPD,2025-04-03,0.0846,16.31,17.69,17.96,17.52,17.84,3307547,59006638,2.4 +PLTD,2025-04-03,0.0709,16.08,17.22,17.23,16.39,16.77,1544440,25900258,0.6 +USAR,2025-04-04,0.3077,6.5,8.5,10.5,7.27,7.55,7426456,56069742,47.6 +WCT,2025-04-04,0.1733,9.75,11.44,21.75,10.25,14.0,4162173,58270422,44.0 +KOLD,2025-04-04,0.1278,19.49,21.98,22.47,21.035,22.26,12541633,279176750,1.5 +BJDX,2025-04-07,1.3371,14.12,33.0,40.8,27.76,30.0,14876073,446282190,1583.5 +RJET,2025-04-07,0.6056,10.65,17.1,18.45,12.92,16.5,3712996,61264434,463.3 +NWTG,2025-04-07,0.2769,1.86,2.375,3.5,2.31,2.82,60973881,171946344,69.4 +MSTZ,2025-04-07,0.2199,12.96,15.81,16.55,12.55,15.15,35783512,542120206,1.2 +BTCZ,2025-04-07,0.1635,6.239,7.259,7.459,6.639,7.109,1519309,10800767,2.1 +WCT,2025-04-07,0.1071,14.0,15.5,20.0,12.17,18.02,1761950,31750339,17.7 +PLTD,2025-04-07,0.1026,18.72,20.64,20.69,17.04,17.81,8059390,143537735,3.3 +LXEO,2025-04-07,0.0749,2.335,2.51,2.53,1.45,1.79,5923626,10603290,11.9 +BTOG,2025-04-08,0.7231,7.266,12.52,14.54,8.7,8.886,5680339,50475492,20.3 +GLXG,2025-04-08,0.7131,9.398,16.1,16.8,7.537,9.493,7193912,68291806,1791.5 +CYCU,2025-04-08,0.3986,9.481,13.26,15.34,10.02,10.65,4586511,48846342,55.5 +SXTP,2025-04-08,0.3734,7.194,9.88,17.64,9.4,11.48,21297108,244490799,2452.2 +SPIR,2025-04-08,0.25,7.48,9.35,9.96,8.55,8.75,2088374,18273272,3.5 +CRMD,2025-04-08,0.2372,6.07,7.51,7.71,6.6949,6.79,4176608,28359168,4.3 +NYXH,2025-04-08,0.1944,5.71,6.82,7.0,5.9475,6.06,2745412,16637196,39.1 +BTU,2025-04-08,0.1775,10.14,11.94,11.96,10.81,11.07,12439250,137702497,2.7 +DXF,2025-04-09,0.1994,6.42,7.7,13.0,6.3,7.8,2951243,23019695,99.6 +HMY,2025-04-09,0.1195,12.64,14.15,14.58,13.65,14.32,11548755,165378171,1.6 +BTU,2025-04-09,0.1183,11.07,12.38,13.43,10.87,12.05,24447850,294596592,5.3 +TNMG,2025-04-09,0.1,10.0,11.0,12.8,7.02,10.2,1588963,16207422,782.5 +BTOG,2025-04-09,0.0777,8.886,9.576,10.94,8.01,9.06,992570,8992684,3.5 +SBSW,2025-04-09,0.0746,3.151,3.386,3.807,3.303,3.738,25349549,94756614,2.5 +GFI,2025-04-09,0.0715,19.03,20.39,20.97,19.83,20.46,6765344,138418938,1.7 +SHNY,2025-04-09,0.0702,5.7,6.1,6.311,6.043,6.289,1761790,11079897,2.7 +SKYA,2025-04-10,0.8786,4.2,7.89,11.25,5.01,5.49,5417822,29743842,203.3 +PRFX,2025-04-10,0.544,9.1,14.05,17.45,10.5,10.75,14817618,159289393,1926.0 +SUNE,2025-04-10,0.2843,3.94,5.06,5.8,3.4,4.24,2872464,12179247,50.1 +HYFM,2025-04-10,0.1726,1.68,1.97,2.45,1.76,2.15,15777893,33922469,523.2 +LOVE,2025-04-10,0.15,15.93,18.32,19.3,16.42,18.49,2601715,48105710,5.3 +KROS,2025-04-10,0.1297,10.33,11.67,12.5,11.6,12.24,3967741,48565149,4.3 +PHIO,2025-04-10,0.1169,1.54,1.72,1.76,1.45,1.65,5763892,9510421,60.3 +SXTP,2025-04-10,0.084,10.0,10.84,14.12,10.0,12.4,812422,10074032,93.5 +BON,2025-04-11,0.7456,1.517,2.648,3.325,1.625,1.767,26331213,46527253,24.4 +SKYA,2025-04-11,0.5847,5.49,8.7,9.0,6.18,7.5,2176738,16325535,51.0 +BGLC,2025-04-11,0.3502,2.17,2.93,3.3499,2.34,2.63,29847309,78498422,1168.7 +BULL,2025-04-11,0.3311,12.02,16.0,16.69,9.54,13.25,3931772,52095979,148.7 +DFDV,2025-04-11,0.3051,6.424,8.384,8.857,6.343,7.316,10219531,74766088,98.4 +CBLL,2025-04-11,0.1641,11.15,12.98,15.84,12.61,15.0,2300316,34504740,15.5 +ABSI,2025-04-11,0.1324,2.455,2.78,3.02,2.6203,3.02,7175332,21669502,2.1 +CERT,2025-04-11,0.1265,10.51,11.84,13.1799,11.44,12.91,9673359,124883064,6.7 +BULL,2025-04-14,1.086,13.25,27.64,79.56,26.02,62.9,36885308,2320085873,1243.5 +SKYA,2025-04-14,0.744,7.5,13.08,15.6,11.49,12.75,3318257,42307776,53.3 +ARTL,2025-04-14,0.2901,14.79,19.08,25.2,15.3,17.45,1272092,22198005,1419.7 +TMC,2025-04-14,0.2308,1.95,2.4,2.87,2.15,2.83,29891681,84593457,15.8 +USAR,2025-04-14,0.1697,8.31,9.72,13.4,9.0,11.75,11478981,134878026,32.2 +PTIR,2025-04-14,0.1588,8.776,10.17,10.54,9.37,9.599,20752710,199205263,1.3 +AAPX,2025-04-14,0.142,18.24,20.83,20.96,18.85,19.09,301796,5761285,4.8 +NB,2025-04-14,0.1408,2.06,2.35,2.69,2.15,2.44,3332135,8130409,11.1 +SNYR,2025-04-15,1.1732,1.79,3.89,4.08,2.06,2.2,63525279,139755613,3022.9 +ARBB,2025-04-15,0.4308,9.75,13.95,16.35,11.62,13.89,5068337,70399200,155.8 +TMC,2025-04-15,0.2597,2.83,3.565,3.57,2.63,2.87,40977152,117604426,20.3 +USAR,2025-04-15,0.2179,11.75,14.31,15.0,12.5,13.52,9305796,125814361,25.1 +BULLW,2025-04-15,0.1872,2.4006,2.85,3.16,1.715,1.96,3175988,6224936,60.5 +DTIL,2025-04-15,0.1659,4.46,5.2,5.73,4.73,5.52,1056861,5833872,12.8 +SUNE,2025-04-15,0.1603,5.74,6.66,9.32,6.6,8.2,4959311,40666350,61.1 +IE,2025-04-15,0.1386,5.05,5.75,6.5826,5.65,6.48,3858466,25002859,4.4 +SBEV,2025-04-16,0.4149,2.82,3.99,4.78,3.13,4.3,43975669,189095376,1406.6 +NB,2025-04-16,0.2353,2.89,3.57,4.1487,3.3,3.79,15736212,59640243,50.4 +HTZ,2025-04-16,0.1932,3.65,4.355,5.77,4.055,5.71,91393884,521859077,10.2 +HTZWW,2025-04-16,0.1244,2.01,2.26,3.2,2.15,3.0,1844416,5533248,12.7 +USAR,2025-04-16,0.092,13.52,14.7635,18.55,14.31,15.66,12266871,192099199,32.0 +HMY,2025-04-16,0.0758,17.02,18.31,18.41,17.38,17.64,8196323,144583137,1.1 +PTHS,2025-04-17,0.8247,12.55,22.9,23.7,16.9,18.4,3960439,72872077,7340.9 +SKYA,2025-04-17,0.4,7.95,11.13,12.0,9.0,9.6,1305997,12537571,6.3 +QURE,2025-04-17,0.385,9.39,13.005,14.16,12.54,13.0,14456116,187929508,14.2 +DXF,2025-04-17,0.3124,9.25,12.14,14.5,8.6,8.7,6851287,59606196,183.5 +HTZ,2025-04-17,0.3012,5.71,7.43,8.74,6.68,8.24,266905945,2199304986,27.5 +LLYX,2025-04-17,0.2834,14.82,19.02,19.95,18.3,19.05,881259,16787983,8.9 +HTZWW,2025-04-17,0.2767,3.0,3.83,4.55,3.49,4.34,4935786,21421311,33.9 +ALP,2025-04-17,0.1733,6.75,7.92,8.8799,7.0,7.84,861609,6755014,18.9 +UPXI,2025-04-21,3.4619,2.295,10.24,22.0,9.0201,9.89,100378056,992738973,8262.9 +SHFS,2025-04-21,0.7309,2.23,3.86,4.3299,3.53,4.19,43497128,182252966,3727.6 +DWTX,2025-04-21,0.267,4.27,5.41,7.73,5.21,5.37,21182484,113749939,96.5 +SBFM,2025-04-21,0.2,12.5,15.0,15.9,12.1,12.9,1171535,15112801,158.2 +SHNY,2025-04-21,0.0837,7.685,8.328,8.437,8.262,8.392,2102660,17645522,2.6 +SKYA,2025-04-21,0.0719,9.6,10.29,10.98,8.7,9.6,543296,5215641,2.3 +VBIO,2025-04-22,2.3057,3.5,11.57,13.23,6.61,7.13,35371156,252196342,594.7 +TWAV,2025-04-22,0.8505,2.14,3.96,4.4,2.4,3.54,21111063,74733163,2322.2 +SBEV,2025-04-22,0.2226,6.65,8.13,9.79,5.492,6.77,4187341,28348298,63.6 +BHC,2025-04-22,0.1059,4.72,5.22,5.31,5.0,5.19,3642295,18903511,1.7 +OBIO,2025-04-22,0.1021,2.84,3.13,3.24,2.53,2.86,14156422,40487366,303.9 +NG,2025-04-22,0.0932,3.11,3.4,4.57,3.3,4.35,25070441,109056418,9.8 +SENS,2025-04-22,0.0833,12.0,13.0,14.15,12.64,13.86,393476,5453577,2.3 +GOTU,2025-04-22,0.0798,2.63,2.84,2.99,2.68,2.69,2209838,5944464,1.1 +ENSC,2025-04-23,1.262,1.87,4.23,4.85,3.26,3.67,92054275,337839189,1354.8 +AGMH,2025-04-23,1.2233,1.5,3.335,3.87,2.63,2.9,14677406,42564477,41.2 +JYD,2025-04-23,0.9431,5.1,9.91,16.0,7.385,13.27,8367509,111036844,99.7 +SNOA,2025-04-23,0.7597,2.33,4.1,4.2,3.52,3.95,58903247,232667825,502.1 +BTOG,2025-04-23,0.4382,7.878,11.33,11.4,9.18,10.21,2377406,24273315,15.1 +UPXI,2025-04-23,0.2694,9.0,11.425,12.6,10.19,11.01,11332027,124765617,778.8 +RZLT,2025-04-23,0.2428,3.11,3.865,4.29,3.81,3.97,16931658,67218682,24.2 +TIL,2025-04-23,0.228,16.49,20.25,24.4,20.18,20.52,500129,10262647,7.6 +CNEY,2025-04-24,0.5449,3.177,4.908,5.063,3.35,3.478,6385317,22208132,312.7 +ZENA,2025-04-24,0.2466,2.19,2.73,3.03,2.4,2.6,48383663,125797523,262.4 +CYH,2025-04-24,0.2016,2.43,2.92,3.175,2.8,2.88,10510207,30269396,4.7 +XXI,2025-04-24,0.1636,16.5,19.2,39.29,19.2,24.8,53705610,1331899128,9892.4 +UZX,2025-04-24,0.1489,1.88,2.16,2.4,1.88,1.97,18909445,37251606,967.7 +PONY,2025-04-24,0.1252,5.43,6.11,7.7,5.91,7.57,20989864,158893270,10.7 +INDV,2025-04-24,0.1005,9.45,10.4,10.92,10.21,10.76,1323461,14240440,1.5 +RES,2025-04-24,0.0994,4.749,5.221,5.221,4.725,4.787,2387244,11427737,1.4 +AGMH,2025-04-25,0.5436,1.95,3.01,3.4,2.2,2.43,6818239,16568320,13.6 +PONY,2025-04-25,0.2338,7.57,9.34,9.8,6.81,7.01,39833677,279234075,19.8 +AZTR,2025-04-25,0.1438,2.038,2.331,2.664,2.028,2.117,6521068,13805100,167.1 +MBOT,2025-04-25,0.1008,2.43,2.675,2.78,2.37,2.61,5041091,13157247,4.2 +COUR,2025-04-25,0.0935,7.7,8.42,8.83,7.905,8.75,5768065,50470568,3.4 +JYD,2025-04-25,0.0862,11.25,12.22,13.71,12.11,13.11,596918,7825594,5.4 +GLMD,2025-04-28,0.586,1.57,2.49,2.68,1.61,1.67,60390556,100852228,859.1 +ALP,2025-04-28,0.3385,8.45,11.31,11.5082,9.55,10.77,8713799,93847615,82.3 +AGMH,2025-04-28,0.2695,2.43,3.085,7.375,2.815,6.7,37553474,251608275,68.3 +AMPY,2025-04-28,0.1673,2.69,3.14,3.29,2.92,2.93,10170512,29799600,16.4 +WOLF,2025-04-28,0.1636,3.27,3.805,4.22,3.62,4.13,67634535,279330629,3.6 +HERE,2025-04-28,0.1468,5.04,5.78,6.39,5.51,5.79,1011676,5857604,2.8 +SABR,2025-04-28,0.1324,2.19,2.48,2.815,2.45,2.53,13892339,35147617,2.6 +UPC,2025-04-28,0.1143,4.2,4.68,6.9299,4.3,5.95,6983438,41551456,61.0 +WLDS,2025-04-29,0.6667,10.8,18.0,19.26,13.68,16.2,4990750,80850150,1210.5 +LFMD,2025-04-29,0.3164,6.1,8.03,8.69,7.02,8.62,21255233,183220108,29.9 +LEG,2025-04-29,0.2207,7.095,8.661,9.437,8.446,9.339,10805121,100909025,3.8 +BON,2025-04-29,0.2062,1.625,1.96,2.573,1.738,1.812,9947417,18024719,8.6 +CLVT,2025-04-29,0.1922,3.59,4.28,4.61,4.025,4.21,13603587,57271101,2.5 +SOFX,2025-04-29,0.144,10.21,11.68,12.2,10.27,10.35,1378112,14263459,5.5 +WOLF,2025-04-29,0.138,4.13,4.7,4.7,3.42,3.47,66671490,231350070,3.3 +PUMP,2025-04-29,0.1347,5.27,5.98,6.14,5.37,5.6,4677827,26195831,2.9 +RCKY,2025-04-30,0.2821,13.61,17.45,20.86,17.04,20.86,595815,12428700,9.7 +SKYA,2025-04-30,0.221,5.0,6.105,7.39,5.3,5.61,19435332,109032212,67.2 +JAKK,2025-04-30,0.1522,18.27,21.05,21.05,16.82,18.11,323636,5861047,2.3 +GCTK,2025-04-30,0.1352,10.28,11.67,12.51,10.03,10.39,901546,9367062,29.5 +ORN,2025-04-30,0.1137,6.33,7.05,7.08,6.39,6.39,856660,5474057,2.8 +XPRO,2025-04-30,0.0902,8.04,8.765,9.22,7.6006,8.27,1960125,16210233,1.5 +KC,2025-04-30,0.0894,12.42,13.53,14.17,13.31,13.59,6049298,82209959,1.5 +NVNI,2025-04-30,0.0798,2.13,2.3,4.74,2.2,4.499,36302681,163325761,98.6 +NVNI,2025-05-01,0.5708,4.499,7.067,7.623,3.5,4.05,27175531,110060900,73.8 +BTOG,2025-05-01,0.2599,9.048,11.4,15.6,9.72,10.39,3412520,35456082,25.3 +VISN,2025-05-01,0.2033,1.825,2.196,2.308,2.054,2.22,11803935,26204735,2.1 +MSFL,2025-05-01,0.1834,19.36,22.91,23.425,22.26,22.28,573035,12767219,3.2 +MAX,2025-05-01,0.1798,8.4,9.91,10.79,9.14,9.59,1643145,15757760,3.0 +RNAZ,2025-05-01,0.1766,11.38,13.39,22.03,12.98,15.79,4654927,73501297,39.1 +UPBD,2025-05-01,0.1251,18.06,20.32,21.64,19.66,21.5,1613427,34688680,3.3 +TNDM,2025-05-01,0.1074,16.85,18.66,20.39,18.27,19.98,4754880,95002502,3.8 +CNEY,2025-05-02,0.448,3.545,5.133,5.325,3.778,4.125,6200203,25575837,223.8 +NPKI,2025-05-02,0.2781,6.04,7.72,7.8,7.17,7.59,2220406,16852881,3.0 +AIRS,2025-05-02,0.2655,2.26,2.86,3.12,2.375,3.02,3589899,10841494,17.2 +SPHL,2025-05-02,0.203,3.932,4.73,5.085,4.064,4.616,2632109,12149815,99.2 +BTOG,2025-05-02,0.1992,10.39,12.46,12.59,10.32,11.36,1070946,12165946,7.9 +ADPT,2025-05-02,0.197,7.36,8.81,10.28,8.57,9.84,15572026,153228735,6.9 +ADIL,2025-05-02,0.1641,19.5,22.7,30.25,15.77,16.75,948014,15879234,586.6 +BTSG,2025-05-02,0.1374,17.9,20.36,20.95,19.4,20.87,4015675,83807137,3.3 +AIFF,2025-05-05,0.292,3.27,4.225,4.5099,3.33,3.35,29710336,99529625,112.5 +AGMH,2025-05-05,0.2757,3.645,4.65,5.495,4.25,4.415,4764831,21036728,7.8 +FNGR,2025-05-05,0.1949,2.72,3.25,3.515,2.98,3.33,3547318,11812568,14.3 +NVNI,2025-05-05,0.1853,3.363,3.986,5.499,3.674,5.145,15473514,79611229,42.0 +IMMP,2025-05-05,0.1345,1.71,1.94,2.71,1.91,2.49,9804168,24412378,162.6 +DFSC,2025-05-05,0.1155,5.8,6.47,6.79,5.6581,6.37,5557432,35400841,419.8 +BCRX,2025-05-05,0.0969,8.93,9.795,11.11,9.59,11.03,26301795,290108798,7.5 +QURE,2025-05-05,0.0812,14.77,15.97,16.2,15.0,15.89,2122719,33730004,1.8 +TALO,2025-05-06,0.2164,7.07,8.6,8.6,7.345,7.38,4537285,33485163,2.3 +TDUP,2025-05-06,0.214,4.44,5.39,6.56,5.28,6.56,21094967,138382983,15.2 +AMRC,2025-05-06,0.2038,11.63,14.0,15.5944,12.92,13.0,2133843,27739959,3.4 +SEDG,2025-05-06,0.1494,12.92,14.85,15.54,14.23,14.37,14247503,204736618,4.1 +HRTX,2025-05-06,0.1455,2.13,2.44,2.61,2.27,2.42,7422889,17963391,6.7 +SHLS,2025-05-06,0.141,3.76,4.29,4.64,4.0,4.41,15866203,69969955,3.0 +ARRY,2025-05-06,0.1258,4.93,5.55,5.92,5.09,5.15,12200301,62831550,2.9 +LIND,2025-05-06,0.1223,9.12,10.235,10.93,9.56,9.92,846876,8401009,2.9 +ASST,2025-05-07,1.8361,12.2,34.6,68.2,30.4,67.8,15791971,1070695633,1011.5 +CNEY,2025-05-07,0.6254,4.05,6.583,6.583,4.303,4.833,9550848,46159248,233.6 +NCEW,2025-05-07,0.417,17.84,25.28,31.76,12.0,13.2,5863222,77394530,1335.6 +ANGI,2025-05-07,0.3324,11.25,14.99,15.5875,13.95,15.15,4678838,70884395,3.3 +CURI,2025-05-07,0.312,2.872,3.768,4.612,3.655,4.029,10838977,43670238,53.1 +EHTH,2025-05-07,0.2692,4.68,5.94,7.09,5.35,5.75,1588091,9131523,9.5 +PRCH,2025-05-07,0.2634,6.34,8.01,10.87,7.5,10.65,24033105,255952568,11.3 +NRDS,2025-05-07,0.253,8.46,10.6,11.4,10.2,10.91,1899089,20719060,4.3 +STI,2025-05-08,0.5388,4.705,7.24,8.61,5.31,7.88,8513044,67082786,202.4 +ONT,2025-05-08,0.2937,15.05,19.47,22.61,16.99,17.7,1171279,20731638,2.9 +AVAH,2025-05-08,0.2614,4.82,6.08,6.11,5.4001,5.5,1483588,8159734,6.5 +QBTS,2025-05-08,0.2583,6.89,8.67,10.89,7.71,10.42,228913468,2385278336,7.1 +ZVIA,2025-05-08,0.2512,2.03,2.54,3.2,2.17,3.08,5555139,17109828,17.3 +GPUS,2025-05-08,0.2447,6.17,7.68,9.94,7.35,7.9,45365550,358387845,625.2 +NVAX,2025-05-08,0.2084,5.95,7.19,7.5,6.48,6.66,36866423,245530377,6.6 +DCTH,2025-05-08,0.2059,11.61,14.0,14.658,13.01,14.355,1318832,18931833,3.2 +CHAI,2025-05-09,0.6845,3.918,6.6,8.0,5.64,6.68,35742277,238758410,585.9 +ZKIN,2025-05-09,0.6429,2.52,4.14,4.47,3.04,3.99,47048543,187723686,4440.2 +LASR,2025-05-09,0.3298,8.61,11.45,11.75,10.55,11.67,1456231,16994215,4.9 +MITK,2025-05-09,0.2928,8.81,11.39,11.39,9.675,9.74,1478641,14401963,3.9 +GDOT,2025-05-09,0.2839,8.7,11.17,11.83,10.24,10.94,3920653,42891943,5.3 +DH,2025-05-09,0.2758,2.81,3.585,4.339,3.525,3.69,4239174,15642552,7.0 +CRVS,2025-05-09,0.2597,3.35,4.22,4.49,3.93,4.43,8855008,39227685,10.9 +GOGO,2025-05-09,0.2576,7.57,9.52,11.3418,9.38,11.0,12478594,137264534,9.8 +JYD,2025-05-12,1.2841,10.91,24.92,25.75,10.13,18.23,4040743,73662744,33.1 +TAOP,2025-05-12,0.3439,4.911,6.6,20.1,5.697,8.85,19499805,172573274,2081.4 +FTRE,2025-05-12,0.2829,6.15,7.89,7.99,4.99,5.19,8560874,44430936,3.7 +SOXL,2025-05-12,0.197,14.06,16.83,17.41,16.44,17.07,263806032,4503168966,1.1 +HBIO,2025-05-12,0.1746,3.15,3.7,6.7,3.108,3.521,1434558,5051078,46.1 +ZIM,2025-05-12,0.1702,13.28,15.54,16.3,14.9,15.13,15962887,241518480,3.1 +ROBN,2025-05-12,0.162,18.4,21.38,21.5,19.23,20.27,2138473,43346847,1.0 +TSLR,2025-05-12,0.1603,18.03,20.92,20.92,19.65,20.48,5061921,103668142,1.2 +CNSP,2025-05-13,1.0165,14.52,29.28,34.8,15.6,16.32,7633282,124575162,710.7 +LICN,2025-05-13,0.5259,3.48,5.31,8.28,4.14,6.41,25598474,164086218,793.0 +XHG,2025-05-13,0.2812,2.24,2.87,3.23,2.29,2.52,18020092,45410631,150.2 +BKKT,2025-05-13,0.2617,10.01,12.63,15.49,11.5801,14.75,3667554,54096421,15.0 +OPRX,2025-05-13,0.25,9.2,11.5,12.7752,10.445,11.01,1416631,15597107,8.8 +XLO,2025-05-13,0.2454,10.23,12.74,16.52,12.3,16.1,2467871,39732723,191.2 +TBI,2025-05-13,0.2452,4.65,5.79,6.09,5.48,5.5,3801602,20908811,13.8 +CONL,2025-05-13,0.2366,18.51,22.89,28.0,22.81,27.4,20306512,556398428,4.0 +IXHL,2025-05-14,3.1813,2.559,10.7,28.29,9.66,21.0,50838410,1067606610,7659.8 +SEPN,2025-05-14,0.6077,6.73,10.82,11.36,8.51,10.16,37815761,384208131,184.2 +LUCY,2025-05-14,0.5152,1.98,3.0,3.24,2.37,2.9,38409978,111388936,354.9 +NCNA,2025-05-14,0.4134,6.58,9.3,9.72,6.66,6.92,1655308,11454731,1862.0 +QNRX,2025-05-14,0.3884,6.36,8.83,9.63,6.5528,7.65,9732471,74453403,249.7 +ABSI,2025-05-14,0.2196,2.96,3.61,3.65,2.83,2.91,10466315,30456976,3.9 +MWYN,2025-05-14,0.2033,7.23,8.7,8.9125,6.9301,7.68,2438208,18725437,3.1 +FNGR,2025-05-14,0.1872,4.38,5.1999,5.1999,4.38,4.57,2680526,12250003,4.8 +CLIK,2025-05-15,2.4643,8.4,29.1,34.2,18.65,21.29,16191609,344719355,175.9 +NCNA,2025-05-15,0.5867,6.92,10.98,13.42,9.0,10.68,4242435,45309205,3467.5 +CHRN,2025-05-15,0.4021,6.78,9.506,9.75,5.85,6.0,6608360,39650160,883.5 +ISSC,2025-05-15,0.2354,7.35,9.08,10.5,9.08,9.79,1646136,16115671,29.1 +DLO,2025-05-15,0.2196,9.552,11.65,11.79,10.4,10.54,4437444,46770659,8.2 +TOI,2025-05-15,0.1941,2.37,2.83,3.33,2.72,3.04,7095450,21570168,6.4 +GOTU,2025-05-15,0.1421,3.8,4.34,4.56,3.9,3.91,9153919,35791823,6.9 +NVNI,2025-05-15,0.1366,3.996,4.542,5.1,4.176,4.282,3403259,14572755,7.2 +AMST,2025-05-16,0.7187,2.24,3.8499,4.07,3.0201,3.36,64876125,217983780,3619.5 +CAPS,2025-05-16,0.6627,1.66,2.76,3.29,2.16,2.45,21665221,53079791,1298.5 +TSSI,2025-05-16,0.4656,8.87,13.0,16.4,12.4401,15.44,29157873,450197559,41.9 +SORA,2025-05-16,0.4307,7.5,10.73,10.9,4.43,7.77,15052304,116956402,45.9 +AGMH,2025-05-16,0.395,3.0,4.185,4.185,3.21,3.35,3148954,10548995,4.7 +IXHL,2025-05-16,0.2663,8.055,10.2,10.48,7.35,7.8,7372048,57501974,265.5 +CABA,2025-05-16,0.1823,1.81,2.14,2.16,1.65,2.03,15897488,32271900,21.3 +QUBT,2025-05-16,0.1396,9.24,10.53,12.96,10.26,12.87,92117476,1185551916,8.5 +MOVE,2025-05-19,0.2058,7.511,9.057,9.573,6.613,6.613,1397032,9238572,412.1 +NVAX,2025-05-19,0.2036,6.73,8.1,8.78,7.12,7.74,84054230,650579740,13.5 +NCNA,2025-05-19,0.1575,8.76,10.14,10.2,9.34,9.64,906190,8735671,531.3 +CHAI,2025-05-19,0.1255,9.24,10.4,16.8,10.24,16.28,20475995,333349198,316.6 +PLRZ,2025-05-19,0.1212,9.9,11.1,11.25,9.45,9.9,520539,5153336,2329.0 +RXST,2025-05-19,0.0846,14.19,15.39,16.65,14.95,16.32,1809385,29529163,1.6 +CMCL,2025-05-19,0.0782,14.83,15.99,17.35,15.75,17.35,548047,9508615,4.4 +TSDD,2025-05-19,0.0775,19.73,21.26,21.58,20.52,20.62,2753645,56780159,1.0 +NRXS,2025-05-20,1.4537,2.27,5.57,6.2,3.49,3.99,90735014,362032705,2896.6 +CHAI,2025-05-20,0.5356,16.28,25.0,33.76,22.48,32.76,32166947,1053789183,497.4 +IXHL,2025-05-20,0.2116,5.997,7.266,8.4,6.066,7.2,7295314,52526260,209.4 +TIL,2025-05-20,0.2024,16.9,20.32,20.32,15.75,16.44,598674,9842200,6.9 +BIAF,2025-05-20,0.2018,6.75,8.112,9.6,6.942,8.763,2563696,22465668,228.9 +QBTS,2025-05-20,0.1665,13.15,15.34,17.59,14.6,16.56,308820196,5114062445,9.2 +IDN,2025-05-20,0.1571,3.31,3.83,4.3085,3.69,3.96,2244895,8889784,41.4 +XYF,2025-05-20,0.1534,13.43,15.49,16.47,13.8,14.18,1577993,22375940,10.8 +BDSX,2025-05-21,0.4535,5.416,7.872,10.29,7.202,7.902,17876659,141261359,643.6 +GCL,2025-05-21,0.2407,2.16,2.68,2.92,2.399,2.8,24558135,68762778,1227.1 +GOOS,2025-05-21,0.157,8.92,10.32,11.56,10.19,10.67,13713475,146322778,18.6 +GPUS,2025-05-21,0.141,4.61,5.26,9.98,5.02,7.07,53098349,375405327,241.1 +EVLV,2025-05-21,0.083,5.54,6.0,6.15,5.59,5.95,9076872,54007388,3.7 +BTCS,2025-05-21,0.0823,2.65,2.868,3.016,2.68,2.69,2236642,6016566,6.4 +DFNS,2025-05-21,0.0745,19.4,20.845,26.21,19.8,21.69,1264626,27429737,15.2 +IDN,2025-05-21,0.0732,3.96,4.25,4.77,4.06,4.24,2158541,9152213,39.3 +NVTS,2025-05-22,1.5681,1.91,4.905,5.25,4.03,5.05,276487829,1396263536,102.0 +MNTN,2025-05-22,0.8026,11.65,21.0,26.88,20.76,26.36,11555728,304608990, +LUMN,2025-05-22,0.1444,3.81,4.36,4.46,3.71,3.84,30254017,116175425,3.2 +TIL,2025-05-22,0.1344,16.22,18.4,26.4,18.4,24.61,1349135,33202212,15.1 +GTX,2025-05-22,0.0977,10.13,11.12,11.29,10.81,10.94,3368678,36853337,1.8 +TITN,2025-05-22,0.0953,19.94,21.84,23.4075,19.26,20.13,478885,9639955,2.1 +RIOX,2025-05-22,0.0833,19.33,20.94,22.28,19.37,19.76,334979,6619185,1.8 +DOMO,2025-05-22,0.0772,8.55,9.21,11.63,9.16,10.85,4424929,48010479,14.9 +IMNN,2025-05-23,2.056,5.36,16.38,17.93,12.51,14.96,27571975,412476746,5158.5 +SEGG,2025-05-23,0.2469,16.0,19.95,26.45,17.0,17.6,8583855,151075848,310.2 +FNUC,2025-05-23,0.1848,3.41,4.04,4.09,3.62,3.9,16693004,65102715,76.0 +UEC,2025-05-23,0.1628,5.16,6.0,6.53,5.76,6.45,67071044,432608233,8.5 +LTBR,2025-05-23,0.1323,10.66,12.07,16.14,11.6,15.2,19607208,298029561,27.3 +FULC,2025-05-23,0.1144,6.12,6.82,7.0395,6.25,6.44,898658,5787357,1.7 +UUUU,2025-05-23,0.1111,4.5,5.0,5.44,4.74,5.4,33177758,179159893,4.1 +EU,2025-05-23,0.1062,1.6,1.77,1.98,1.71,1.97,7414940,14607431,4.2 +SBET,2025-05-27,4.0491,6.72,33.93,53.45,28.5,35.83,54492807,1952477274,731.4 +MTAL,2025-05-27,0.1852,10.15,12.03,12.795,11.97,12.29,2937620,36103349,8.7 +GYRE,2025-05-27,0.1751,8.68,10.2,11.61,9.8,10.18,1976658,20122378,18.0 +SEGG,2025-05-27,0.154,17.6,20.31,24.0,18.1,18.8,1561382,29353981,56.4 +HERE,2025-05-27,0.1161,6.29,7.02,7.3,6.78,7.06,819228,5783749,2.2 +LFST,2025-05-27,0.1111,5.49,6.1,6.11,5.69,6.06,3801051,23034369,3.0 +VIVO,2025-05-27,0.1011,6.13,6.75,6.75,5.63,6.04,1351638,8163893,4.4 +SLS,2025-05-27,0.1005,1.89,2.08,2.12,1.88,1.93,4290823,8281288,1.7 +LVWR,2025-05-28,0.4453,2.56,3.7,4.67,3.05,3.97,70492057,279853466,1327.2 +MNRO,2025-05-28,0.3079,11.79,15.42,16.57,14.9,15.47,3952128,61139420,4.8 +JOBY,2025-05-28,0.1657,6.88,8.02,9.06,7.99,8.86,98587665,873486711,8.9 +IMCC,2025-05-28,0.164,1.87,2.1766,3.73,2.11,2.71,3155979,8552703,406.2 +PLRZ,2025-05-28,0.161,3.876,4.5,9.72,4.2,6.18,8644609,53423683,1027.8 +RENX,2025-05-28,0.1508,17.9,20.6,28.0,19.0,24.8,738728,18320454,648.6 +SCWO,2025-05-28,0.1194,3.493,3.91,6.786,3.74,4.75,5792351,27513667,306.3 +VERU,2025-05-28,0.0976,5.09,5.587,6.65,5.007,5.286,4409597,23309129,54.8 +ALZN,2025-05-29,1.3373,3.32,7.76,8.22,5.21,5.44,77823813,423361542,2061.1 +WETO,2025-05-29,0.9745,1.96,3.87,4.25,2.27,3.31,27805945,92037677,2154.7 +ZEO,2025-05-29,0.8038,1.58,2.85,3.47,2.63,3.43,104813214,359509324,4685.0 +FEED,2025-05-29,0.4493,8.556,12.4,13.9,10.4,12.5,4206086,52576075,102.8 +BOSC,2025-05-29,0.3196,3.88,5.12,5.5,4.27,4.65,6882716,32004629,198.0 +PLRZ,2025-05-29,0.233,6.18,7.62,8.22,6.66,7.5,5311435,39835762,262.8 +ORIC,2025-05-29,0.2211,5.97,7.29,8.439,6.89,7.97,14471373,115336842,22.6 +IMNN,2025-05-29,0.1708,19.61,22.96,28.77,20.64,25.67,1619894,41582678,249.5 +BLRX,2025-05-30,0.5484,3.7909,5.87,7.7699,4.9,5.25,36539061,191830070,2428.3 +RRGB,2025-05-30,0.3962,3.13,4.37,5.71,4.21,5.1,32523495,165869824,150.9 +VIVO,2025-05-30,0.296,4.24,5.495,5.5,4.53,4.64,8449234,39204445,24.4 +BMGL,2025-05-30,0.2308,12.48,15.36,86.16,14.64,72.96,14783196,1078581980,952.0 +SPRO,2025-05-30,0.1737,2.13,2.5,2.8,2.35,2.5,24382011,60955027,292.6 +LVWR,2025-05-30,0.1516,2.87,3.305,5.15,3.26,4.5,63367237,285152566,1089.7 +PATH,2025-05-30,0.1484,12.94,14.86,14.985,12.91,13.31,47394650,630822791,5.1 +ROLR,2025-05-30,0.0949,2.74,3.0,5.33,2.95,4.36,1665008,7259434,153.6 +OGEN,2025-06-02,1.25,3.6,8.1,9.6,4.887,5.01,9059057,45385875,965.8 +INM,2025-06-02,1.2289,2.49,5.55,7.98,3.35,3.42,74520155,254858930,1870.3 +VERA,2025-06-02,0.6749,18.95,31.74,32.83,28.9,31.74,13253867,420677738,13.8 +BNAI,2025-06-02,0.6315,2.79,4.552,5.611,3.606,4.9,25496549,124933090,1360.3 +PSTV,2025-06-02,0.4069,7.172,10.09,16.52,7.75,9.193,6522619,59962436,89.1 +NTRB,2025-06-02,0.2615,6.5,8.2,8.55,7.08,8.11,762954,6187556,32.1 +RITR,2025-06-02,0.244,3.36,4.18,4.95,3.19,4.75,3781952,17964272,18.8 +CENX,2025-06-02,0.2376,15.49,19.17,20.43,18.13,18.79,7006633,131654634,5.5 +TJGC,2025-06-03,0.4531,14.7,21.36,101.07,20.82,98.7,14731892,1454037740,10284.0 +KPRX,2025-06-03,0.386,2.85,3.95,4.18,3.31,3.9,24589649,95899631,3074.3 +HIND,2025-06-03,0.3271,17.24,22.88,33.16,20.0,27.0,14410208,389075616,761.8 +REVB,2025-06-03,0.2515,9.876,12.36,13.8,10.47,10.81,3922117,42398084,1319.0 +SOAR,2025-06-03,0.2061,2.348,2.832,3.368,2.04,2.313,23355757,54021865,1156.4 +AGEN,2025-06-03,0.1683,4.13,4.825,5.15,4.16,5.0,9933528,49667640,14.0 +NCNA,2025-06-03,0.15,7.6,8.74,11.98,7.0,11.96,2075467,24822585,7.0 +JOBY,2025-06-03,0.132,7.5,8.49,8.735,7.96,8.03,52603103,422402917,4.6 +BAOS,2025-06-04,0.8312,2.37,4.34,4.39,3.24,3.66,36194951,132473520,969.5 +SKYA,2025-06-04,0.5655,3.74,5.855,7.04,5.18,6.31,49530409,312536880,481.5 +CLRB,2025-06-04,0.5334,8.328,12.77,20.59,11.7,13.85,20870200,289052270,891.2 +NCEW,2025-06-04,0.2677,10.16,12.88,13.2,10.48,11.12,4749181,52810892,300.4 +BON,2025-06-04,0.2643,1.71,2.162,2.4099,1.93,1.96,21638855,42412155,20.7 +YEXT,2025-06-04,0.1525,6.82,7.86,9.15,7.825,8.97,7667920,68781242,12.5 +EHGO,2025-06-04,0.1154,16.64,18.56,19.04,14.4,15.52,1452454,22542086,2636.0 +SGMT,2025-06-04,0.1143,3.63,4.045,4.6379,3.83,4.08,20359048,83064915,47.4 +SCNI,2025-06-05,1.3849,2.52,6.01,6.18,2.6,3.25,20514688,66672736,3689.4 +MKDW,2025-06-05,0.7763,9.576,17.01,17.12,10.65,11.09,3168344,35136934,381.2 +TGE,2025-06-05,0.6927,9.99,16.91,37.0191,9.8,10.04,1325954,13312578,26.1 +RTB,2025-06-05,0.6007,13.45,21.53,42.0,20.64,31.47,13270409,417619771,6239.0 +ZENA,2025-06-05,0.4874,3.18,4.73,6.92,4.15,4.45,136896984,609191578,326.2 +PL,2025-06-05,0.3083,3.99,5.22,6.45,5.01,5.96,68390494,407607344,20.7 +UAMY,2025-06-05,0.1927,2.75,3.28,3.385,2.93,3.0,10795509,32386527,3.5 +SILO,2025-06-05,0.1594,8.565,9.93,10.89,8.333,9.6,1224846,11758521,59.2 +BJDX,2025-06-06,0.4211,6.08,8.64,9.8,7.52,9.0,9189276,82703484,485.2 +HYPD,2025-06-06,0.3662,3.14,4.29,5.88,3.53,4.88,39079324,190707101,194.7 +RENT,2025-06-06,0.362,6.74,9.18,10.11,7.75,8.62,2260790,19488009,56.3 +NX,2025-06-06,0.2169,16.69,20.31,21.3,18.38,18.46,1872610,34568380,5.4 +TGE,2025-06-06,0.2052,10.04,12.1,15.0,10.75,12.0,2840640,34087680,56.0 +BRLS,2025-06-06,0.1594,3.45,4.0,7.0,3.75,5.18,1887119,9775276,1333.7 +RKLX,2025-06-06,0.1267,9.745,10.98,11.67,9.681,11.55,1472868,17011625,3.0 +NCNA,2025-06-06,0.1241,7.9,8.88,11.2,8.4,9.98,1507143,15041287,4.1 +USBC,2025-06-09,1.1923,1.56,3.42,3.9199,2.5501,3.04,118899554,361454644,132.3 +TAOX,2025-06-09,0.3817,2.41,3.33,4.9199,3.01,3.48,45159326,157154454,5808.6 +TPST,2025-06-09,0.3316,8.2457,10.98,11.95,8.7305,8.95,2238848,20037689,58.2 +ANIX,2025-06-09,0.2428,2.76,3.43,3.5799,3.2,3.4,1901107,6463763,44.2 +ALAR,2025-06-09,0.2232,8.11,9.92,11.65,9.58,11.33,1552981,17595274,13.3 +UMAC,2025-06-09,0.1995,7.42,8.9,9.47,8.1,9.18,11437670,104997810,8.5 +PYPD,2025-06-09,0.159,3.27,3.79,3.93,3.3,3.36,21644230,72724612,547.0 +NCL,2025-06-09,0.1534,2.08,2.399,2.539,1.926,2.144,9708394,20814796,182.0 +GRML,2025-06-10,0.6319,1.82,2.97,3.9099,1.725,2.01,340916473,685242110,213.9 +NCNA,2025-06-10,0.5827,15.24,24.12,37.6,22.4,28.7,11665652,334804212,30.4 +MGNX,2025-06-10,0.2226,1.64,2.005,2.17,1.78,1.78,25908672,46117436,66.5 +GELS,2025-06-10,0.2,1.7,2.04,3.51,1.98,2.95,77627730,229001803,1178.1 +ZENA,2025-06-10,0.1586,4.54,5.26,5.4,4.7,4.9,9175792,44961380,21.9 +MYSE,2025-06-10,0.1448,2.9,3.32,3.65,3.11,3.23,2794288,9025550,23.8 +QTRX,2025-06-10,0.1107,5.06,5.62,6.61,5.54,6.58,2935137,19313201,5.3 +DPRO,2025-06-10,0.1078,3.34,3.7,4.37,3.49,3.71,5777738,21435407,32.7 +VTAK,2025-06-11,2.145,4.302,13.53,15.68,10.66,11.4,36084375,411361875,1991.5 +KZIA,2025-06-11,0.998,5.2553,10.5,12.8599,8.7,9.54,49671825,473869210,2237.2 +FEED,2025-06-11,0.3153,8.135,10.7,16.6,10.1,12.0,9951754,119421048,104.7 +KBSX,2025-06-11,0.2628,1.56,1.97,2.3099,1.94,2.26,18374601,41526598,448.1 +ABCL,2025-06-11,0.1589,3.02,3.5,3.57,3.14,3.23,20131996,65026347,5.2 +SAIL,2025-06-11,0.1486,19.65,22.57,23.83,22.0101,22.53,9691734,218354767,7.5 +RGTIW,2025-06-11,0.1421,3.94,4.5,5.3,4.28,4.68,1459618,6831012,3.6 +USBC,2025-06-11,0.1391,3.02,3.44,4.1,3.03,3.61,12928082,46670376,14.1 +SOAR,2025-06-12,0.5556,1.908,2.968,3.227,1.803,1.899,64861643,123172260,2954.6 +CGTL,2025-06-12,0.4198,13.84,19.65,27.75,16.65,27.45,7330616,201225409,739.8 +HIND,2025-06-12,0.3013,9.16,11.92,16.52,11.16,12.44,19929434,247922158,617.4 +AGIG,2025-06-12,0.2326,5.46,6.73,9.2,5.8901,7.14,6393261,45647883,197.3 +TDTH,2025-06-12,0.2107,9.606,11.63,12.0,5.16,6.696,1514398,10140409,64.4 +PL,2025-06-12,0.151,5.43,6.25,6.28,5.26,5.46,27345319,149305441,7.1 +INDO,2025-06-12,0.1362,3.23,3.67,4.2,3.11,3.54,9058360,32066594,42.2 +HPP,2025-06-12,0.1273,17.36,19.57,19.6,18.2,18.76,8664959,162554630,25.7 +AGIG,2025-06-13,0.8011,7.14,12.86,19.74,12.74,15.65,28872957,451861777,891.0 +ICON,2025-06-13,0.6089,8.95,14.4,16.45,12.8,14.6,11810656,172435577,815.0 +INDO,2025-06-13,0.3362,3.54,4.73,5.78,4.32,5.18,38549479,199686301,179.4 +DFNS,2025-06-13,0.269,12.12,15.38,17.28,13.13,13.99,5871468,82141837,41.8 +WTI,2025-06-13,0.1599,1.908,2.213,2.223,2.016,2.115,7780315,16455366,5.1 +IMPP,2025-06-13,0.1393,3.23,3.68,3.7899,3.09,3.37,2165681,7298344,14.7 +SSL,2025-06-13,0.1258,4.85,5.46,5.515,5.3,5.45,3377352,18406568,3.9 +MXC,2025-06-13,0.1026,8.379,9.239,13.86,9.239,11.77,444353,5230034,246.0 +STAK,2025-06-16,0.9179,1.95,3.74,3.97,2.13,2.31,24592489,56808649,735.8 +BATL,2025-06-16,0.7805,1.64,2.92,3.6699,2.03,2.74,45330531,124205654,3243.5 +SONM,2025-06-16,0.6452,16.74,27.54,38.52,23.4,30.24,6297150,190425816,771.9 +ECHO,2025-06-16,0.4412,16.84,24.27,25.2899,23.87,25.11,15844856,397864334,4.7 +LSE,2025-06-16,0.3706,5.1,6.99,9.5,6.15,6.67,7966558,53136941,1112.6 +MARPS,2025-06-16,0.2923,4.242,5.482,6.408,4.49,5.613,2626775,14744088,579.2 +TDTH,2025-06-16,0.2071,6.33,7.641,10.5,6.432,7.335,2068121,15169667,86.8 +NEON,2025-06-16,0.1898,16.81,20.0,22.62,18.2367,18.65,1837336,34266316,21.5 +ACXP,2025-06-17,1.9795,6.142,18.3,21.0,12.67,16.41,17208135,282385495,2022.7 +PCSA,2025-06-17,1.6071,5.627,14.67,19.63,5.0,6.5,23019838,149628947,216.4 +BGSF,2025-06-17,0.393,2.888,4.023,4.324,3.663,3.857,1788264,6897334,132.3 +AZTR,2025-06-17,0.2238,1.796,2.198,2.398,1.715,1.758,11520122,20252374,179.8 +PRME,2025-06-17,0.1867,1.5,1.78,1.83,1.61,1.615,6221085,10047052,3.9 +TDTH,2025-06-17,0.1832,7.335,8.679,9.6,7.77,8.394,1592087,13363978,62.1 +XTIA,2025-06-17,0.1769,2.77,3.26,4.22,3.17,4.1,16469441,67524708,16.8 +PCT,2025-06-17,0.1584,11.87,13.75,15.47,13.48,14.12,20881143,294841739,7.0 +PTLE,2025-06-18,1.5881,15.83,40.97,41.8,27.5,29.2,5053143,147551775,105.8 +LSE,2025-06-18,0.7117,5.55,9.5,9.7799,6.5812,7.47,16859568,125940972,2322.6 +DFSC,2025-06-18,0.6823,5.76,9.69,15.37,9.21,11.21,37359935,418804871,455.5 +HSDT,2025-06-18,0.199,15.48,18.56,21.52,17.25,18.02,1365390,24604327,1644.1 +IMRX,2025-06-18,0.1374,1.82,2.07,2.9699,2.06,2.77,13723614,38014410,46.4 +TPET,2025-06-18,0.1258,1.51,1.7,1.9,1.4,1.41,11920755,16808264,74.5 +MVLL,2025-06-18,0.1255,6.377,7.177,7.753,7.043,7.257,2117841,15369172,3.7 +TMC,2025-06-18,0.1149,5.44,6.065,7.3,5.91,6.75,47177221,318446241,5.4 +DFLI,2025-06-20,0.7206,2.18,3.751,4.0,2.43,2.515,33437320,84094859,1060.5 +LUCY,2025-06-20,0.2719,2.28,2.9,4.97,2.74,3.53,111209121,392568197,596.1 +PCSA,2025-06-20,0.24,6.05,7.502,8.25,6.37,8.002,5969356,47766786,52.1 +AIFF,2025-06-20,0.2267,3.0,3.68,3.77,2.7,2.74,23968270,65673059,106.7 +DFSC,2025-06-20,0.1998,11.21,13.45,13.48,10.6001,12.25,4123328,50510768,50.3 +GALT,2025-06-20,0.1793,3.29,3.88,3.9035,1.85,2.42,4327057,10471477,24.6 +GRRR,2025-06-20,0.1749,18.81,22.1,27.8999,22.0,25.23,12300891,310351479,9.9 +TRON,2025-06-20,0.1561,8.2,9.48,12.8,9.01,11.04,55074661,608024257,115.0 +INDP,2025-06-23,1.0574,7.563,15.56,19.91,13.23,14.0,13048566,182679924,2563.1 +MAAS,2025-06-23,0.6148,2.7,4.36,13.33,4.36,9.93,1507835,14972801,88.2 +AGIG,2025-06-23,0.4372,14.8,21.27,25.5599,17.29,18.54,12760731,236583952,308.7 +TMDE,2025-06-23,0.3051,1.77,2.31,2.75,2.01,2.31,15675948,36211439,87.8 +INDO,2025-06-23,0.3043,5.06,6.6,7.95,4.7,4.87,53507352,260580804,209.7 +FBRX,2025-06-23,0.2619,14.66,18.5,19.63,12.0,12.76,522160,6662761,24.7 +CRMD,2025-06-23,0.23,13.61,16.74,17.43,15.75,16.56,7091502,117435273,5.5 +GEOS,2025-06-23,0.2167,11.49,13.98,18.5,13.3,18.4,3323255,61147891,70.0 +NA,2025-06-24,1.6556,10.89,28.92,31.48,14.5,14.85,17859313,265210798,277.3 +NKTR,2025-06-24,1.0881,9.54,19.92,27.68,16.56,24.45,37172732,908873297,231.0 +INM,2025-06-24,0.7184,2.45,4.21,5.5,3.36,3.87,109978256,425615850,858.2 +SRFM,2025-06-24,0.2042,1.91,2.3,4.54,2.1,3.6,79889509,287602232,153.5 +KEP,2025-06-24,0.2041,10.14,12.21,12.39,12.15,12.32,1389256,17115633,3.2 +PSTV,2025-06-24,0.1541,4.608,5.318,5.485,4.3,4.675,4876121,22795865,29.6 +VOR,2025-06-24,0.1352,5.8,6.584,9.4,6.262,6.362,4907742,31223054,57.6 +SY,2025-06-24,0.1205,1.66,1.86,2.24,1.71,1.715,4290300,7357864,21.8 +GCTK,2025-06-25,1.3744,6.21,14.745,15.9,7.77,7.84,24137179,189235483,604.1 +PSTV,2025-06-25,1.1183,4.675,9.903,10.88,7.125,7.875,29658136,233557821,171.4 +QS,2025-06-25,0.388,4.33,6.01,6.35,5.31,5.67,178809258,1013848492,16.5 +SRFM,2025-06-25,0.2222,3.6,4.4,5.57,2.33,2.54,93826582,238319518,168.6 +INDI,2025-06-25,0.1641,3.29,3.83,4.15,3.58,3.83,12235902,46863504,3.6 +BMBL,2025-06-25,0.1555,5.21,6.02,6.6291,5.96,6.52,12167019,79328963,5.3 +ALP,2025-06-25,0.1394,5.38,6.13,6.84,5.41,6.11,4194539,25628633,209.9 +ADIL,2025-06-25,0.1256,5.733,6.453,7.25,5.778,6.15,2112900,12994335,235.1 +CYN,2025-06-26,2.2735,5.01,16.4,41.54,11.33,13.6,140839275,1915414140,5711.5 +VOR,2025-06-26,0.8034,11.09,20.0,25.2,14.24,17.8,14140537,251701558,166.1 +GRIN,2025-06-26,0.7881,14.11,25.23,25.3,25.23,25.3,410542,10386712, +BIAF,2025-06-26,0.4639,7.35,10.76,13.8,9.006,10.8,6405637,69180879,146.9 +ADIL,2025-06-26,0.3772,6.15,8.47,13.3,7.763,11.75,11297139,132741383,1257.3 +PSTV,2025-06-26,0.2378,7.875,9.748,10.47,8.5,9.165,6814151,62451693,37.6 +DFSC,2025-06-26,0.1851,7.24,8.58,14.2798,8.4,11.0,15069740,165767140,151.2 +LIVE,2025-06-26,0.1716,8.45,9.9,24.35,9.63,15.7,2602130,40853441,494.9 +LCFY,2025-06-27,2.8471,2.55,9.81,13.98,6.9,8.3,96031330,797060039,12253.6 +CYN,2025-06-27,0.6096,13.6,21.89,24.68,15.1,16.33,65975662,1077382560,2675.5 +INMB,2025-06-27,0.4809,6.28,9.3,11.64,5.01,5.33,59890910,319218550,109.8 +BBLG,2025-06-27,0.4639,4.16,6.09,6.19,4.51,4.58,26624007,121937952,870.5 +BURU,2025-06-27,0.3819,1.697,2.345,2.483,1.611,1.66,24343394,40410034,16.1 +GCTK,2025-06-27,0.2739,5.22,6.65,7.2499,6.13,6.56,5375003,35260019,134.5 +FEED,2025-06-27,0.2542,8.691,10.9,13.2,10.7,11.7,3712282,43433699,31.5 +SKYE,2025-06-27,0.1412,4.25,4.85,5.75,4.1,4.11,7490584,30786300,31.5 +IPDN,2025-06-30,0.9829,1.75,3.47,4.94,3.05,3.38,55197078,186566123,5760.2 +WBUY,2025-06-30,0.5595,5.63,8.78,9.78,5.2901,7.73,44486678,343882020,482.4 +GDHG,2025-06-30,0.3333,16.65,22.2,25.8,7.665,13.8,832368,11486678,54.4 +NFE,2025-06-30,0.2,2.5,3.0,3.51,3.0,3.32,39325492,130560633,4.1 +DFSC,2025-06-30,0.1751,10.85,12.75,13.75,10.0101,11.7765,463710,5460880,4.0 +LIMN,2025-06-30,0.1603,9.48,11.0,12.9,10.6674,11.15,506438,5646783,3.4 +HPE,2025-06-30,0.1236,18.04,20.27,20.54,19.71,20.03,58082007,1163382600,3.7 +BZAI,2025-06-30,0.1191,2.35,2.63,3.0,2.53,2.98,1746636,5204975,5.6 +BGLC,2025-07-01,2.3046,3.07,10.145,15.6,8.83,11.14,51022796,568393947,1989.1 +CLRO,2025-07-01,1.1739,5.75,12.5,15.42,9.31,10.48,38800047,406624492,2130.7 +WETO,2025-07-01,0.87,2.23,4.17,4.18,1.89,2.05,43380708,88930451,369.2 +VVOS,2025-07-01,0.3323,3.16,4.21,4.68,3.55,3.87,28238079,109281365,201.1 +ATAI,2025-07-01,0.2055,2.19,2.64,2.895,2.36,2.71,51484507,139523013,21.3 +PL,2025-07-01,0.1689,6.1,7.13,7.7191,6.1,6.16,43956027,270769126,6.2 +AURE,2025-07-01,0.1454,3.535,4.049,7.799,3.92,4.9,8679354,42528834,1504.5 +MESO,2025-07-01,0.1019,10.89,12.0,12.5035,11.72,12.12,473357,5737086,2.7 +PDC,2025-07-02,0.5026,1.9,2.855,3.31,2.54,3.17,59289234,187946871,4323.6 +GVH,2025-07-02,0.3149,13.4,17.62,19.38,15.4,16.4,2059710,33779244,18896.4 +CYN,2025-07-02,0.2336,12.8,15.79,17.2,13.6952,14.32,24559214,351687944,932.0 +NTRB,2025-07-02,0.1359,8.02,9.11,11.6779,9.05,10.72,1780553,19087528,57.6 +DQ,2025-07-02,0.1163,15.3,17.08,18.42,17.02,17.71,4331348,76708173,7.8 +CIFR,2025-07-02,0.0939,4.9,5.36,5.7,4.99,5.68,94946261,539294762,3.8 +ATAI,2025-07-02,0.0923,2.71,2.96,2.96,2.66,2.75,11747230,32304882,4.9 +JKS,2025-07-02,0.0832,18.76,20.32,22.3,20.0,21.71,2521114,54733384,4.7 +GITS,2025-07-03,1.5276,1.63,4.12,4.9,3.35,3.84,46215050,177465792,1424.0 +NMAD,2025-07-03,0.495,2.02,3.02,4.25,2.4401,2.83,64120450,181460873,2659.1 +XPOF,2025-07-03,0.2145,7.46,9.06,10.139,8.98,10.1,2684003,27108430,5.1 +SBET,2025-07-03,0.1666,11.975,13.97,14.0,11.83,12.66,33806000,427983960,4.0 +BTOG,2025-07-03,0.151,10.13,11.66,12.3,9.6,10.32,1064679,10987487,20.5 +ECX,2025-07-03,0.0955,2.2,2.41,2.445,2.13,2.16,10687668,23085362,7.2 +ENGS,2025-07-07,0.2825,1.77,2.27,2.7,2.06,2.44,4323164,10548520,33.4 +COGT,2025-07-07,0.1834,7.58,8.97,10.23,8.8,9.35,31658895,296010668,14.5 +BTOG,2025-07-07,0.1628,10.32,12.0,15.78,11.41,15.36,4632984,71162634,89.0 +EHGO,2025-07-07,0.1628,13.76,16.0,16.16,12.71,14.05,3823189,53715805,777.2 +PRME,2025-07-07,0.1576,3.11,3.6,4.21,3.57,3.8,15740783,59814975,6.2 +BTBT,2025-07-07,0.1463,2.94,3.37,3.86,3.24,3.48,173204432,602751423,11.3 +VIOT,2025-07-07,0.1146,1.536,1.712,2.646,1.702,2.442,14704768,35909043,112.7 +SY,2025-07-07,0.1077,3.25,3.6,4.39,3.6,4.3,7174185,30848995,16.6 +NDRA,2025-07-08,2.0666,3.4566,10.6,11.96,7.0,8.3,90809585,753719555,3815.6 +UCFI,2025-07-08,0.7605,5.97,10.51,11.99,7.62,10.07,5581312,56203811,119.2 +WOLF,2025-07-08,0.4285,2.31,3.2999,3.33,2.38,2.52,293454433,739505171,9.8 +SQNS,2025-07-08,0.3951,14.3,19.95,26.8,17.2,20.6,8890898,183152498,1095.0 +OCC,2025-07-08,0.2597,3.62,4.56,5.28,4.36,4.66,7174854,33434819,274.7 +PSTV,2025-07-08,0.2477,7.512,9.373,9.5,7.875,8.33,3937970,32803290,19.1 +ZEPP,2025-07-08,0.2356,3.48,4.3,7.22,3.99,5.12,15141962,77526845,864.4 +VIOT,2025-07-08,0.2314,2.442,3.007,3.284,2.368,2.526,8314274,21001856,63.7 +CLDI,2025-07-09,1.6692,4.02,10.73,19.2,7.68,8.4,51730605,434537082,1134.9 +SUGP,2025-07-09,1.0572,4.495,9.247,18.4,8.821,12.2,21356271,260546506,4344.2 +PROK,2025-07-09,0.5576,3.73,5.8099,7.13,4.18,4.34,210543106,913757080,248.1 +SOBR,2025-07-09,0.4362,3.37,4.84,5.29,4.1023,4.74,25941067,122960657,828.4 +KZIA,2025-07-09,0.4359,6.825,9.8,10.79,7.8,9.53,10698233,101954160,133.8 +BTCT,2025-07-09,0.2849,3.37,4.33,4.34,3.18,3.46,3375824,11680351,24.6 +PCSA,2025-07-09,0.258,5.31,6.68,7.09,5.78,6.07,2591569,15730823,12.8 +MBIO,2025-07-09,0.2425,2.66,3.305,3.68,2.72,3.11,28701709,89262314,325.9 +SLAI,2025-07-10,1.8537,17.22,49.14,56.49,33.53,43.75,22890731,1001469481,3946.0 +STKH,2025-07-10,0.4857,14.0,20.8,28.72,18.64,24.0,6901949,165646776,804.9 +NTHI,2025-07-10,0.2594,5.955,7.5,7.6976,4.31,4.88,4255334,20766029,167.0 +RMNI,2025-07-10,0.1949,3.95,4.72,5.38,4.55,5.16,2954009,15242686,11.1 +CPOP,2025-07-10,0.1942,6.95,8.3,9.898,7.507,8.999,2223325,20007701,1230.4 +USAR,2025-07-10,0.189,9.79,11.64,11.71,10.81,11.0,8116348,89279828,4.4 +SUGP,2025-07-10,0.1721,12.2,14.3,16.9,13.2,15.5,2193214,33994817,416.1 +NCNA,2025-07-10,0.1575,12.06,13.96,14.9,11.36,11.94,2962190,35368548,7.0 +INKT,2025-07-11,1.7257,7.73,21.07,76.0,20.2,64.17,47857735,3071030854,19006.2 +CVM,2025-07-11,0.6387,3.82,6.26,7.09,3.4,3.53,27062031,95528969,161.4 +AUC,2025-07-11,0.5317,7.038,10.78,11.77,7.956,9.72,6712383,65244362,310.9 +BTOG,2025-07-11,0.4724,17.4,25.62,27.0,19.27,26.41,3554379,93871149,68.3 +GAUZ,2025-07-11,0.2034,5.95,7.16,7.3,6.43,6.51,8091478,52675521,294.4 +RCAT,2025-07-11,0.1947,6.78,8.1,9.06,7.71,8.57,42750231,366369479,5.1 +BTCS,2025-07-11,0.149,4.243,4.875,4.994,4.371,4.48,13205332,59159887,17.8 +BTCT,2025-07-11,0.1413,3.75,4.28,4.79,4.03,4.25,8690964,36936597,63.3 +DARE,2025-07-14,2.1451,2.515,7.91,9.19,3.02,3.09,71446955,220771090,2136.9 +SDST,2025-07-14,1.1341,2.52,5.378,6.22,4.3,4.745,38629671,183297788,166.9 +SQFT,2025-07-14,1.1331,5.11,10.9,23.0,9.22,13.6,51280254,697411454,9637.3 +PHGE,2025-07-14,0.7907,7.885,14.12,14.71,7.699,8.151,2816932,22960812,333.2 +CLIK,2025-07-14,0.2185,12.31,15.0,15.9,11.1,12.47,1518696,18938139,92.2 +ALBT,2025-07-14,0.1412,2.55,2.91,3.15,2.5601,2.71,10791717,29245553,518.3 +HYPD,2025-07-14,0.1338,13.23,15.0,15.9799,11.5,12.03,1821071,21907484,1.1 +ACHV,2025-07-14,0.1293,2.32,2.62,2.831,2.46,2.75,7222159,19860937,15.4 +BGMS,2025-07-15,0.3837,3.31,4.58,19.25,4.55,12.33,63786644,786489320,312.8 +MOVE,2025-07-15,0.3221,4.051,5.356,5.408,4.382,5.133,2572836,13206367,182.0 +PLRZ,2025-07-15,0.224,4.093,5.01,7.98,4.89,6.24,20151912,125747930,344.2 +KC,2025-07-15,0.1605,12.71,14.75,15.17,14.4495,15.09,6992091,105510653,4.0 +PROK,2025-07-15,0.1504,3.69,4.245,4.3,3.31,3.37,34603412,116613498,31.4 +VNET,2025-07-15,0.1374,7.92,9.008,9.12,8.37,9.04,23994110,216906754,5.0 +SKYQ,2025-07-15,0.1175,4.648,5.194,5.559,4.68,5.103,2067132,10548574,175.9 +AMDL,2025-07-15,0.1003,8.97,9.87,10.49,9.86,10.12,56829450,575114034,1.3 +AIXC,2025-07-16,0.5382,3.53,5.43,6.67,3.83,3.93,48109117,189068829,8299.0 +GAME,2025-07-16,0.447,1.51,2.185,2.82,2.05,2.31,99497893,229840132,333.9 +DTST,2025-07-16,0.3432,3.38,4.54,5.4395,4.23,5.3,14954319,79257890,502.0 +PEW,2025-07-16,0.2413,17.24,21.4,21.4,12.3,13.12,12290614,161252855,9.2 +BTCS,2025-07-16,0.2086,4.697,5.677,6.413,5.271,5.696,43384738,247119467,56.7 +DPRO,2025-07-16,0.1953,3.61,4.315,5.3,4.045,5.18,36972754,191518865,23.0 +IXHL,2025-07-16,0.1882,10.2,12.12,12.75,10.14,11.64,9497788,110554252,11.7 +TRON,2025-07-16,0.1607,6.72,7.8,10.99,7.42,10.3,34835602,358806700,10.1 +EMPD,2025-07-17,3.4152,9.2243,40.727,44.09,20.83,21.61,30489266,658873038,851.3 +BTOG,2025-07-17,0.2712,19.91,25.31,41.76,22.2,37.86,7827416,296345969,148.5 +SRPT,2025-07-17,0.2263,18.38,22.54,22.86,20.94,21.97,19730520,433479524,4.1 +BGLC,2025-07-17,0.1576,4.25,4.92,7.05,4.51,6.63,6748168,44740353,141.4 +BTCS,2025-07-17,0.1503,5.696,6.552,7.16,6.013,6.398,37983253,243016852,47.2 +DPRO,2025-07-17,0.1458,5.18,5.935,7.305,5.73,7.22,27578644,199117809,17.1 +RCKT,2025-07-17,0.1434,2.86,3.27,3.52,3.11,3.34,12393645,41394774,3.1 +UPXI,2025-07-17,0.1433,7.26,8.3,8.36,6.25,7.24,21885174,158448659,7.6 +LITS,2025-07-18,0.9956,4.5,8.98,9.0,5.22,5.92,41286932,244418637,3685.2 +BZAI,2025-07-18,0.7525,3.03,5.31,5.44,4.13,4.81,73519679,353629655,235.5 +CPOP,2025-07-18,0.3793,6.393,8.818,9.9,6.86,7.375,3303955,24366668,1112.8 +MESO,2025-07-18,0.248,12.34,15.4,16.07,14.88,15.62,2032747,31751508,11.3 +VIVO,2025-07-18,0.1815,6.72,7.94,8.63,6.84,6.87,7008054,48145330,8.1 +IXHL,2025-07-18,0.1423,11.1,12.68,19.76,12.66,18.3,16380430,299761869,17.0 +KSCP,2025-07-18,0.1268,8.2,9.24,10.14,8.36,10.09,2963535,29902068,10.2 +EOSE,2025-07-18,0.1226,5.3,5.95,6.5,5.76,5.87,42044101,246798872,3.2 +PMN,2025-07-21,1.9545,11.0,32.5,39.75,22.75,28.0,11615942,325246376,5054.8 +GCTK,2025-07-21,0.6655,5.83,9.71,9.75,7.73,7.97,18636584,148533574,120.8 +HSDT,2025-07-21,0.5517,8.9,13.81,14.45,9.21,9.58,18068208,173093432,143.8 +IXHL,2025-07-21,0.4262,18.3,26.1,26.54,19.63,24.6,11691608,287613556,11.4 +DYNC,2025-07-21,0.4195,10.25,14.55,15.24,11.52,11.99,24889300,298422707,1546.6 +AIRE,2025-07-21,0.4133,4.75,6.713,24.6,6.205,21.24,31612560,671450774,1248.4 +QCLS,2025-07-21,0.352,8.75,11.83,13.78,9.86,12.94,3910240,50598505,81.0 +SABS,2025-07-21,0.3502,2.57,3.47,6.6,2.59,2.7,81713729,220627068,6007.3 +HTOO,2025-07-22,1.2921,4.28,9.81,12.63,6.44,6.71,30119548,202102167,1089.1 +KSS,2025-07-22,0.8942,10.11,19.15,20.74,12.0,13.91,209344034,2911975512,30.3 +DFLI,2025-07-22,0.5621,2.665,4.163,6.7,4.035,5.2,69284911,360281537,198.1 +LCFY,2025-07-22,0.276,5.29,6.75,6.79,5.5,6.34,7041010,44640003,95.6 +GVH,2025-07-22,0.2571,7.16,9.001,10.74,6.81,7.79,6446294,50216630,30.8 +OPEN,2025-07-22,0.2118,3.21,3.89,3.99,2.67,2.88,1079876842,3110045304,11.5 +NXDR,2025-07-22,0.1805,2.05,2.42,2.5,2.04,2.04,8873729,18102407,4.4 +UAVS,2025-07-22,0.1753,1.94,2.28,2.31,2.03,2.12,18067845,38303831,4.1 +DNUT,2025-07-23,0.385,4.13,5.72,5.73,4.13,4.32,152675269,659557162,45.0 +OFAL,2025-07-23,0.2948,1.73,2.24,2.42,2.02,2.24,27540873,61691555,61.0 +RNAZ,2025-07-23,0.2871,9.44,12.15,17.24,10.9733,11.27,4168060,46974036,173.6 +PLRZ,2025-07-23,0.2069,8.7,10.5,14.7,9.36,11.28,10652126,120155981,181.5 +IOVA,2025-07-23,0.1981,3.13,3.75,4.33,3.58,3.97,110321141,437974929,8.9 +FLWS,2025-07-23,0.1549,6.65,7.68,8.44,6.82,6.94,4011793,27841843,8.6 +ATYR,2025-07-23,0.1317,5.24,5.93,7.1,5.8,6.61,19355088,127937131,5.6 +KOSS,2025-07-23,0.1156,5.71,6.37,8.59,6.12,6.27,6521513,40889886,118.4 +BGMS,2025-07-24,0.32,14.0,18.48,19.8663,15.2,17.15,6224467,106749609,25.2 +MXL,2025-07-24,0.2924,15.32,19.8,20.0,16.71,17.25,11124590,191899177,13.2 +AIRE,2025-07-24,0.2406,8.915,11.06,14.25,10.33,11.32,6874379,77817970,175.0 +UAVS,2025-07-24,0.2138,2.97,3.605,3.605,2.82,2.98,36171674,107791588,8.2 +LIMN,2025-07-24,0.1978,6.47,7.75,8.7,7.13,8.47,11474277,97187126,32.3 +WOLF,2025-07-24,0.1813,1.71,2.02,2.02,1.65,1.78,64643985,115066293,1.0 +PSTV,2025-07-24,0.1633,12.25,14.25,17.67,13.8,14.91,3559827,53077020,12.1 +ATHR,2025-07-24,0.1535,6.32,7.29,10.15,7.0015,8.9,1701442,15142833,63.5 +MCVT,2025-07-25,0.5246,1.849,2.819,6.638,2.439,5.898,116360640,686295054,7526.8 +SUIG,2025-07-25,0.5243,1.85,2.82,6.64,2.44,5.9,116360640,686527776,7526.8 +HTOO,2025-07-25,0.4271,4.73,6.75,8.55,6.01,6.99,19399308,135601162,534.5 +COUR,2025-07-25,0.272,9.08,11.55,12.49,11.0,12.37,26712544,330434169,16.7 +SOWG,2025-07-25,0.2424,19.8,24.6,31.8,21.15,23.25,4145502,96382921,1388.8 +PHIO,2025-07-25,0.2032,2.51,3.02,3.4799,2.51,2.74,49543019,135747872,403.4 +LIDR,2025-07-25,0.1849,2.92,3.46,5.36,3.33,4.435,331585757,1470582832,322.5 +EMPD,2025-07-25,0.1643,13.57,15.8,15.8,12.89,13.4,990931,13278475,20.9 +BNC,2025-07-28,4.858,8.875,51.99,82.88,46.1,57.585,14360517,826950371,2892.6 +CELC,2025-07-28,2.3377,13.77,45.96,46.42,35.0,36.79,27636771,1016756805,150.7 +AIM,2025-07-28,1.2598,2.125,4.802,5.148,1.698,1.821,4520549,8231919,719.9 +ANGH,2025-07-28,0.3536,4.505,6.098,7.05,5.8,6.344,3655521,23190625,1869.8 +NVNI,2025-07-28,0.349,4.203,5.67,7.0,5.343,6.881,15987376,110009134,132.2 +CRVO,2025-07-28,0.3408,8.98,12.04,13.13,8.59,8.67,12196426,105743013,98.0 +MCVT,2025-07-28,0.312,5.898,7.738,8.008,5.528,5.938,27670191,164305594,1622.1 +SUIG,2025-07-28,0.3119,5.9,7.74,8.01,5.53,5.94,27670191,164360934,1622.1 +CLDI,2025-07-29,0.6376,6.595,10.8,10.92,7.22,7.58,14904375,112975162,72.6 +SRPT,2025-07-29,0.3153,13.86,18.23,18.35,15.7701,15.83,67570429,1069639891,9.3 +SCNI,2025-07-29,0.2902,2.05,2.645,3.48,1.86,2.0,56799205,113598410,1239.7 +SOAR,2025-07-29,0.2626,1.504,1.899,2.014,1.521,1.565,47937169,75021669,193.3 +QCLS,2025-07-29,0.24,12.5,15.5,17.39,12.79,15.44,2950238,45551674,35.5 +XPRO,2025-07-29,0.2222,9.0,11.0,12.1,10.51,11.89,6398947,76083479,6.3 +RENX,2025-07-29,0.2159,17.6,21.4,32.6,21.0,25.2,4264239,107458822,1940.1 +ADIL,2025-07-29,0.1822,15.75,18.62,18.9,11.36,15.15,846830,12829474,7.8 +BGLC,2025-07-30,0.7175,4.46,7.66,8.98,5.9,7.18,58851814,422556024,488.2 +REPL,2025-07-30,0.7107,3.75,6.415,8.07,5.71,7.55,202083124,1525727586,92.9 +HAPN,2025-07-30,0.2738,13.11,16.7,17.24,14.9,15.89,10107895,160614451,6.6 +VFC,2025-07-30,0.2092,12.14,14.68,15.07,12.43,12.45,28631971,356468038,4.1 +SUPX,2025-07-30,0.1849,16.12,19.1,29.64,16.4,23.21,5351223,124201885,124.6 +RCON,2025-07-30,0.1814,2.26,2.67,3.44,2.2701,2.72,6673622,18152251,474.1 +CAPR,2025-07-30,0.1766,6.74,7.93,8.48,7.5104,8.18,6035184,49367805,2.9 +MVLL,2025-07-30,0.1704,7.337,8.587,9.007,8.133,8.357,2923974,24435650,3.7 +APLD,2025-07-31,0.2532,10.03,12.57,14.06,12.2,13.14,138168411,1815532920,4.7 +INDV,2025-07-31,0.1991,17.4,20.865,21.01,19.31,20.2,24098629,486792305,15.8 +PSTV,2025-07-31,0.1715,11.43,13.39,14.46,11.75,12.08,987297,11926547,2.2 +MDXG,2025-07-31,0.1656,6.52,7.6,7.99,7.11,7.19,2778937,19980557,4.1 +RSI,2025-07-31,0.155,16.06,18.55,20.32,17.46,20.16,11199490,225781718,9.4 +ALHC,2025-07-31,0.1538,13.0,15.0,16.24,13.49,13.78,14901966,205349091,5.4 +LXEH,2025-07-31,0.1357,14.0,15.9,22.5,15.5,21.2,580748,12311857,221.7 +TAL,2025-07-31,0.1298,10.09,11.4,11.53,10.65,10.94,15599259,170655893,3.9 +NAMM,2025-08-01,0.4394,3.96,5.7,5.8,3.98,4.26,19990678,85160288,192.5 +NVNI,2025-08-01,0.176,6.618,7.783,7.783,5.9,6.201,1430917,8873116,11.7 +FDMT,2025-08-01,0.1733,4.5,5.28,6.69,4.99,6.42,31675318,203355541,106.2 +ATEC,2025-08-01,0.1319,10.58,11.975,13.89,11.66,13.77,13007890,179118645,8.1 +NBP,2025-08-01,0.1244,2.01,2.26,3.44,2.25,2.62,44554254,116732145,123.6 +FLGT,2025-08-01,0.1205,17.18,19.25,19.51,18.32,18.53,1079760,20007952,4.3 +MCVT,2025-08-01,0.112,5.538,6.158,6.198,4.649,4.909,2567995,12606287,97.1 +SUIG,2025-08-01,0.1119,5.54,6.16,6.1999,4.65,4.91,2567995,12608855,97.1 +PBM,2025-08-04,0.9281,14.75,28.44,36.25,23.81,28.38,8929797,253427638,1958.7 +VISN,2025-08-04,0.7756,3.801,6.749,7.393,6.29,7.08,75863941,537116702,15.6 +TONX,2025-08-04,0.5994,9.51,15.21,29.77,13.65,20.42,34947714,713632319,1344.4 +UNIT,2025-08-04,0.5418,4.91,7.57,8.35,7.53,8.09,2173944,17587206,0.8 +SNGX,2025-08-04,0.5255,2.74,4.18,4.325,3.01,3.11,49145203,152841581,211.0 +SRTA,2025-08-04,0.3016,3.78,4.92,4.97,4.38,4.43,16356944,72461261,25.5 +BTBD,2025-08-04,0.2744,1.64,2.09,5.6,2.0533,2.75,127867717,351636221,36254.0 +ZEPP,2025-08-04,0.2531,13.0,16.29,19.26,16.18,17.42,1305005,22733187,4.6 +AIP,2025-08-05,0.5111,9.45,14.28,14.29,12.3,13.0,21920225,284962925,48.0 +STAA,2025-08-05,0.4478,18.49,26.77,27.17,26.71,27.02,40320087,1089448750,55.9 +TCMD,2025-08-05,0.3539,9.89,13.39,13.825,11.02,12.54,1044848,13102393,5.9 +AMRC,2025-08-05,0.2964,16.7,21.65,25.07,20.79,24.88,3224588,80227749,5.8 +CSTL,2025-08-05,0.2957,15.32,19.85,21.3325,18.68,20.35,2024883,41206369,5.1 +SNDX,2025-08-05,0.1956,10.38,12.41,12.99,11.9104,12.57,9129764,114761133,5.1 +PRAA,2025-08-05,0.1881,15.63,18.57,18.57,15.45,15.56,951314,14802445,3.2 +AXGN,2025-08-05,0.1873,12.55,14.9,14.915,12.75,13.72,4950147,67916016,4.5 +LPSN,2025-08-06,0.5766,13.32,21.0,21.6,16.2,17.7,7359391,130261220,78.9 +PHGE,2025-08-06,0.3684,8.265,11.31,13.7,9.396,12.35,10489256,129542311,674.4 +MYGN,2025-08-06,0.3398,3.87,5.185,5.75,4.99,5.67,15654797,88762698,12.2 +AIMD,2025-08-06,0.3155,2.33,3.065,4.4999,2.9,3.26,137885208,449505778,1711.4 +CYRX,2025-08-06,0.276,6.74,8.6,9.35,8.24,8.75,9690858,84795007,22.4 +FLYW,2025-08-06,0.2616,10.38,13.095,13.23,11.85,12.12,7243113,87786529,3.0 +IPDN,2025-08-06,0.2597,1.81,2.28,2.68,1.92,2.26,34335487,77598200,374.8 +GO,2025-08-06,0.225,13.02,15.95,18.9,15.65,18.58,22567700,419307865,8.1 +AVAH,2025-08-07,0.3676,3.89,5.32,6.2,5.22,5.81,14408713,83714622,36.1 +SKYT,2025-08-07,0.2672,8.87,11.24,12.96,10.65,12.85,6216479,79881755,10.4 +ARHS,2025-08-07,0.2566,9.406,11.82,12.37,10.94,11.43,4578336,52330380,2.2 +MATV,2025-08-07,0.2412,6.046,7.504,8.279,7.49,8.144,1515102,12338990,3.3 +RUN,2025-08-07,0.2348,9.07,11.2,12.33,10.81,12.0,48256341,579076092,3.2 +XERS,2025-08-07,0.225,5.49,6.725,7.085,6.1,6.6,10175494,67158260,6.1 +ASLE,2025-08-07,0.224,6.16,7.54,7.9425,6.88,7.59,1601619,12156288,5.8 +NAGE,2025-08-07,0.1915,9.4,11.2,11.29,9.35,9.61,3099236,29783657,2.9 +LZ,2025-08-08,0.2843,8.37,10.75,11.93,10.68,10.98,12939762,142078586,8.2 +REAL,2025-08-08,0.2795,5.51,7.05,7.37,6.32,6.4,15810302,101185932,6.7 +SKIN,2025-08-08,0.2704,1.59,2.02,2.35,1.77,1.89,7717961,14586946,11.9 +OPRX,2025-08-08,0.2656,12.84,16.25,18.22,14.31,17.3,2337969,40446863,11.4 +EMBC,2025-08-08,0.2447,9.946,12.38,12.44,11.14,11.79,2062599,24318042,3.6 +AMCX,2025-08-08,0.23,6.0,7.38,8.18,6.28,6.53,3153300,20591049,6.9 +SOUN,2025-08-08,0.2276,10.72,13.16,14.2467,12.75,13.55,206653464,2800154437,5.2 +VIAV,2025-08-08,0.2205,10.16,12.4,12.5,10.81,10.93,10212464,111622231,6.3 +IMXI,2025-08-11,0.6395,9.28,15.215,15.27,14.89,14.9,10209578,152122712,35.6 +VFF,2025-08-11,0.3198,1.72,2.27,2.45,1.93,2.31,23251850,53711773,29.7 +BJDX,2025-08-11,0.2857,5.6,7.2,9.92,7.08,7.52,24906960,187300339,3593.0 +BNC,2025-08-11,0.2164,17.1,20.8,28.0,19.275,27.34,1357168,37104973,214.0 +TLRY,2025-08-11,0.2133,6.487,7.871,9.2,7.2,9.2,26829680,246833055,7.7 +MSOX,2025-08-11,0.212,5.85,7.09,9.53,6.7974,9.02,4396563,39656998,6.9 +TLS,2025-08-11,0.2059,2.38,2.87,3.93,2.82,3.87,20135785,77925487,29.4 +FLZH,2025-08-11,0.194,8.145,9.725,14.43,8.75,11.41,2212960,25249873,218.2 +GDOT,2025-08-12,0.2064,9.93,11.98,13.665,11.75,13.43,4025497,54062424,6.6 +TLRY,2025-08-12,0.2011,9.2,11.05,12.0,9.443,9.505,29143756,277011400,8.0 +SBGI,2025-08-12,0.1858,11.73,13.91,14.41,13.07,13.98,2411797,33716922,6.5 +RDNW,2025-08-12,0.155,2.0,2.31,3.5,2.28,3.21,39976655,128325062,863.9 +ONDS,2025-08-12,0.1487,3.43,3.94,4.39,3.86,4.29,72955324,312978339,3.3 +CGC,2025-08-12,0.1361,1.58,1.795,1.805,1.52,1.55,63452093,98350744,7.5 +ZENA,2025-08-12,0.1354,4.8,5.45,5.95,5.17,5.58,22259878,124210119,20.0 +MRVI,2025-08-12,0.1311,2.06,2.33,2.7,2.3,2.69,4997269,13442653,3.4 +MNTS,2025-08-13,0.7032,19.81,33.74,43.55,26.78,34.09,18122665,617801649,996.0 +WBTN,2025-08-13,0.3622,9.36,12.75,18.45,12.725,16.96,15143810,256839017,72.0 +TGEN,2025-08-13,0.2404,8.82,10.94,11.55,8.42,8.61,2544992,21912381,2.7 +XFOR,2025-08-13,0.2364,2.58,3.19,3.45,2.72,2.93,77370204,226694697,100.9 +SMWB,2025-08-13,0.193,7.1,8.47,8.5,7.63,8.43,1081864,9120113,2.3 +UPXI,2025-08-13,0.1749,6.66,7.825,8.41,7.35,7.83,24788806,194096350,2.6 +HBM,2025-08-13,0.1748,9.84,11.56,12.09,11.01,11.32,30836437,349068466,4.6 +LPL,2025-08-13,0.1642,4.08,4.75,4.97,4.73,4.88,1718883,8388149,5.4 +SNOA,2025-08-14,0.8447,3.052,5.63,6.9199,4.8301,5.27,69901059,368378580,1480.2 +AERT,2025-08-14,0.5,5.6,8.4,11.6,7.6,8.8,16513950,145322760,5719.1 +BMRA,2025-08-14,0.3861,3.03,4.2,4.6,3.41,3.51,39637736,139128453,966.0 +WULF,2025-08-14,0.3187,5.46,7.2,8.76,6.74,8.71,289277452,2519606606,6.9 +XOS,2025-08-14,0.1719,3.49,4.09,5.6,3.14,3.78,23666809,89460538,1045.5 +AREN,2025-08-14,0.1689,6.69,7.82,7.85,6.0,6.7,972385,6514979,6.2 +DLO,2025-08-14,0.1654,11.49,13.39,15.48,13.0,15.09,20049403,302545491,19.1 +AIRE,2025-08-14,0.144,8.96,10.25,11.2,8.875,9.112,1953537,17800629,12.3 +PPSI,2025-08-15,0.5563,3.11,4.84,5.6999,4.1,4.35,97126805,422501601,2285.3 +DFLI,2025-08-15,0.4749,2.651,3.91,4.053,2.827,3.089,21069759,65084485,53.5 +VBIO,2025-08-15,0.4543,3.5,5.09,5.6,3.51,3.79,41387868,156860019,1397.4 +SRXH,2025-08-15,0.4295,16.25,23.23,46.79,20.13,30.0,11111500,333345000,1656.7 +PGEN,2025-08-15,0.4054,1.85,2.6,3.4899,2.51,2.94,173718338,510731913,74.9 +CODX,2025-08-15,0.271,7.962,10.12,11.4,8.1,8.826,2775951,24500543,125.8 +KULR,2025-08-15,0.1803,5.27,6.22,6.3,5.16,5.25,9017006,47339281,5.1 +VIOT,2025-08-15,0.153,3.536,4.077,4.105,3.46,3.593,3258899,11709224,4.2 +VTAK,2025-08-18,0.5556,2.61,4.06,4.31,3.41,4.25,59900049,254575208,966.6 +SNGX,2025-08-18,0.3669,2.78,3.8,6.2299,3.5705,4.96,184362760,914439289,584.2 +BTAI,2025-08-18,0.25,5.48,6.85,6.85,5.46,5.67,35893173,203514290,92.7 +GDRX,2025-08-18,0.2466,3.73,4.65,5.41,4.48,5.12,54953167,281360215,41.2 +XNET,2025-08-18,0.2113,6.39,7.74,8.8,7.3,8.79,8575580,75379348,25.2 +IQ,2025-08-18,0.1658,1.99,2.32,2.53,2.29,2.33,107864180,251323539,6.0 +FMST,2025-08-18,0.1411,2.48,2.83,3.22,2.8,3.09,1698848,5249440,4.8 +XPON,2025-08-18,0.1297,1.85,2.09,2.21,1.77,1.77,6135103,10859132,67.6 +PRFX,2025-08-19,1.3209,6.7,15.55,17.95,10.5,11.85,33046062,391595834,2052.4 +LASE,2025-08-19,0.8699,2.46,4.6,5.34,3.8701,3.92,131662323,516116306,1012.5 +DFLI,2025-08-19,0.2096,2.81,3.399,3.399,3.001,3.041,10718109,32593769,22.6 +LIDR,2025-08-19,0.15,2.6,2.99,2.99,2.485,2.49,16381206,40789202,2.7 +PALU,2025-08-19,0.1239,17.44,19.6,19.87,18.26,18.48,461701,8532234,5.2 +IOVA,2025-08-19,0.122,2.5,2.805,2.845,2.5523,2.6,34629535,90036791,2.0 +KYIV,2025-08-19,0.1167,13.5,15.075,16.48,14.04,15.17,4480916,67975495,4.8 +INTW,2025-08-19,0.112,2.625,2.919,3.263,2.919,2.998,36192304,108504527,6.1 +SDEV,2025-08-20,0.8169,1.983,3.603,4.131,3.087,3.404,35668430,121415335,6212.9 +RCKT,2025-08-20,0.3162,2.91,3.83,4.1,3.1408,3.75,59933134,224749252,25.8 +AUUD,2025-08-20,0.2699,16.86,21.41,23.79,18.02,19.25,6781582,130545453,1292.7 +VBIO,2025-08-20,0.1672,3.05,3.56,3.66,3.07,3.21,14704310,47200835,440.0 +HTZ,2025-08-20,0.1231,5.2,5.84,6.1,5.32,5.51,42259531,232850015,6.8 +SBEV,2025-08-20,0.1183,1.5201,1.7,2.4,1.52,1.94,21220806,41168363,420.3 +NESR,2025-08-20,0.0823,7.29,7.89,8.5,7.775,8.31,2098915,17441983,3.9 +CNTN,2025-08-21,0.383,3.59,4.965,6.09,4.13,4.97,113566531,564425659,2592.5 +GRO,2025-08-21,0.2252,1.51,1.85,2.0,1.7,1.92,25976239,49874378,68.6 +SLQT,2025-08-21,0.2186,1.83,2.23,2.75,2.18,2.59,23176269,60026536,20.1 +YOUL,2025-08-21,0.1645,1.52,1.77,1.98,1.7,1.75,6144503,10752880,37.4 +LYTS,2025-08-21,0.1585,19.12,22.15,22.94,19.88,20.21,618814,12506230,6.4 +RENT,2025-08-21,0.1527,4.485,5.17,6.16,4.77,5.61,2153416,12080663,49.3 +CATO,2025-08-21,0.1303,2.84,3.21,4.0,3.1208,3.81,2253423,8585541,90.3 +IMRX,2025-08-21,0.0816,3.43,3.71,4.7,3.7,4.63,6459681,29908323,17.1 +EEIQ,2025-08-22,1.5423,8.685,22.08,27.84,18.88,19.84,12870928,255359211,24657.0 +CYCU,2025-08-22,0.4805,5.526,8.181,8.688,6.63,6.777,11515474,78040367,164.8 +LIMN,2025-08-22,0.3777,2.78,3.83,4.06,3.09,3.41,35648869,121562643,109.6 +IXHL,2025-08-22,0.2476,13.73,17.13,18.62,16.02,17.64,13800378,243438667,2.7 +FMFC,2025-08-22,0.1789,7.21,8.5,9.4,8.3,9.4,6311707,59330045,24.3 +XPON,2025-08-22,0.1176,1.53,1.71,1.88,1.66,1.79,13125116,23493957,66.1 +HTCR,2025-08-22,0.0987,10.54,11.58,15.61,10.56,12.34,534986,6601727,143.5 +BHVN,2025-08-22,0.0906,14.68,16.01,16.12,15.22,15.61,5706499,89078449,3.4 +SKYA,2025-08-25,0.55,7.355,11.4,13.2799,10.0,10.35,24815951,256845092,543.2 +OPAD,2025-08-25,0.3214,15.4,20.35,49.3,20.1,36.4,16167686,588503770,139.9 +AEHR,2025-08-25,0.1641,18.1,21.07,25.77,21.0,24.59,10612031,260949842,9.0 +MRM,2025-08-25,0.1638,1.77,2.06,2.08,1.71,1.96,15029048,29456934,362.5 +CGTX,2025-08-25,0.1263,2.81,3.165,3.83,3.05,3.18,26177185,83243448,5.4 +QCLS,2025-08-25,0.1104,6.25,6.94,7.89,6.68,6.85,1264599,8662503,2.7 +TLRY,2025-08-25,0.087,11.5,12.5,14.1,12.3,13.9,15439546,214609689,3.9 +ACHV,2025-08-25,0.0822,2.92,3.16,3.49,3.1216,3.31,5571488,18441625,7.9 +PACK,2025-08-26,0.2795,4.83,6.18,6.31,5.3,5.57,9697834,54016935,25.2 +STKH,2025-08-26,0.2686,4.334,5.498,6.8,4.904,5.76,7505095,43229347,253.0 +BENF,2025-08-26,0.2571,3.112,3.912,5.184,3.168,3.331,13250283,44136692,507.1 +SER,2025-08-26,0.2411,5.64,7.0,7.92,4.82,5.49,3825426,21001588,300.4 +AIFF,2025-08-26,0.1699,2.59,3.03,3.63,2.71,2.71,83453150,226158036,338.0 +OTLK,2025-08-26,0.1397,2.97,3.385,3.39,2.68,2.7,7771798,20983854,7.2 +DOMO,2025-08-26,0.1062,13.84,15.31,17.1,15.28,16.11,1769323,28503793,3.5 +TLRY,2025-08-26,0.0971,13.9,15.25,15.5,13.65,14.5,14411280,208963560,3.5 +SDEV,2025-08-27,1.0246,2.971,6.015,6.28,4.958,5.123,28295633,144958527,4305.5 +PSNYW,2025-08-27,0.7045,5.097,8.688,24.0,8.688,14.1,4291316,60507555,2211.4 +KSS,2025-08-27,0.2617,12.65,15.96,16.32,14.71,15.68,47362857,742649597,6.5 +FLNT,2025-08-27,0.2136,2.2,2.67,2.93,2.2,2.41,34720390,83676139,2042.4 +DSS,2025-08-27,0.1921,1.51,1.8,1.895,1.53,1.73,8082794,13983233,450.4 +SKYA,2025-08-27,0.1768,9.73,11.45,18.23,11.0,14.84,25688804,381221851,533.3 +RMTI,2025-08-27,0.1694,12.4,14.5,15.2,13.3,14.7,494379,7267371,24.5 +QCLS,2025-08-27,0.1553,7.79,9.0,9.31,8.21,9.0,3061788,27556092,6.3 +CWD,2025-08-28,0.85,1.7,3.145,4.72,2.42,4.46,182872525,815611461,2308.4 +SOGP,2025-08-28,0.2236,3.345,4.093,14.61,3.987,11.0,125117299,1376290289,3567.9 +GPRE,2025-08-28,0.1668,9.95,11.61,11.75,10.6628,11.1,3946300,43803930,2.7 +ASTI,2025-08-28,0.1333,2.1,2.38,2.4,1.88,2.04,17081439,34846135,123.8 +TVTX,2025-08-28,0.1067,17.44,19.3,19.565,17.52,17.7,3209548,56808999,2.6 +SKYA,2025-08-28,0.1024,14.84,16.36,17.55,15.18,16.03,5201702,83383283,99.4 +MTA,2025-08-28,0.0956,5.02,5.5,5.6,5.16,5.19,2407259,12493674,7.1 +XNET,2025-08-28,0.0913,6.68,7.29,7.37,6.97,7.04,1723503,12133461,3.4 +MOVE,2025-08-29,0.8377,4.548,8.358,9.647,6.487,7.879,14296306,112640594,1494.3 +IPDN,2025-08-29,0.5699,1.93,3.03,10.84,2.79,6.69,306028403,2047330016,7657.8 +DFNS,2025-08-29,0.4743,3.69,5.44,5.85,4.36,4.87,84533590,411678583,337.1 +WOOF,2025-08-29,0.2322,3.23,3.98,4.19,3.7,3.99,23301293,92972159,8.0 +NEO,2025-08-29,0.2178,7.21,8.78,9.06,8.1,8.78,9449111,82963194,4.9 +AIRE,2025-08-29,0.1908,9.75,11.61,11.7,9.713,9.713,1009880,9808964,3.5 +SOGP,2025-08-29,0.1764,11.0,12.94,13.52,10.09,10.55,13071973,137909315,372.8 +RMTI,2025-08-29,0.1139,18.0,20.05,21.0,13.89,17.1,769877,13164896,38.1 +UUU,2025-09-02,0.7547,2.613,4.585,5.622,4.046,4.577,65266389,298724262,2370.9 +SHFS,2025-09-02,0.5551,2.405,3.74,4.29,3.21,3.65,42316147,154453936,1827.7 +MLYS,2025-09-02,0.4625,15.48,22.64,30.14,22.0,28.86,15718579,453638189,18.5 +MNKD,2025-09-02,0.3203,4.59,6.06,6.199,5.62,5.74,27717744,159099850,9.0 +GCTK,2025-09-02,0.2962,4.22,5.47,5.8799,4.52,5.32,8743114,46513366,297.2 +LAWR,2025-09-02,0.25,1.96,2.45,4.84,2.42,3.34,64327674,214854431,273.6 +CYCU,2025-09-02,0.1621,4.264,4.955,5.585,4.592,5.151,4512268,23242692,30.3 +ULCC,2025-09-02,0.149,4.9,5.63,6.0493,5.49,5.61,8846210,49627238,2.1 +STI,2025-09-03,1.2835,3.28,7.49,7.8,5.5097,7.01,87037142,610130365,3363.1 +BTBD,2025-09-03,1.1378,1.85,3.955,4.5,2.8,3.03,105546300,319805289,1397.4 +PSNYW,2025-09-03,0.6367,9.525,15.59,17.93,9.999,9.999,1559250,15590940,769.1 +AIHS,2025-09-03,0.4417,2.4,3.46,8.26,3.0401,3.87,173214949,670341852,4297.7 +GEG,2025-09-03,0.2812,2.56,3.28,3.5099,2.83,3.09,13503232,41724986,3116.7 +IPDN,2025-09-03,0.2446,6.95,8.65,12.39,6.9,9.01,22112344,199232219,553.3 +LPTH,2025-09-03,0.2261,4.91,6.02,6.4399,5.5,5.58,6634214,37018914,16.2 +NAMM,2025-09-03,0.1485,3.03,3.48,3.75,3.12,3.2,4598943,14716617,32.1 +BRIA,2025-09-04,0.8871,2.426,4.578,4.692,3.403,3.934,26753962,105250086,16308.4 +HWH,2025-09-04,0.4041,4.43,6.22,7.1599,4.93,6.2,42310948,262327877,680.7 +BBLG,2025-09-04,0.3285,2.07,2.75,4.1299,2.5101,2.85,121020131,344907373,3323.3 +AEO,2025-09-04,0.3034,13.25,17.27,18.34,16.75,18.29,105608391,1931577471,7.6 +SNTG,2025-09-04,0.2965,1.99,2.58,3.32,1.8801,2.28,5887756,13424083,3775.4 +BDSX,2025-09-04,0.2796,8.44,10.8,10.8,8.202,8.866,2954665,26196059,59.7 +NCI,2025-09-04,0.2056,14.4,17.36,23.68,13.92,16.24,2392654,38856700,1226.1 +DLTH,2025-09-04,0.1992,2.36,2.83,4.66,2.73,3.59,69097579,248060308,2739.1 +HOUR,2025-09-05,0.5635,1.89,2.955,5.4,2.57,3.64,210664029,766817065,8597.5 +SCAG,2025-09-05,0.326,3.62,4.8,6.57,4.33,4.87,19162043,93319149,1439.1 +PAPL,2025-09-05,0.2609,4.14,5.22,9.13,5.07,6.54,63087883,412594754,488.1 +DLTH,2025-09-05,0.1504,3.59,4.13,4.15,3.5,3.79,3618037,13712360,143.4 +FBIO,2025-09-05,0.1479,2.84,3.26,3.72,3.25,3.7,6385243,23625399,19.6 +YOOV,2025-09-05,0.1168,2.91,3.25,4.54,2.85,4.24,18738221,79450057,464.4 +ZUMZ,2025-09-05,0.0856,18.45,20.03,22.15,19.93,21.31,941614,20065794,6.3 +HWH,2025-09-05,0.0839,6.2,6.72,6.8597,5.13,5.13,2764436,14181556,44.5 +RAPP,2025-09-08,1.6755,14.36,38.42,42.2685,27.052,31.47,13877633,436729110,91.4 +FWDI,2025-09-08,0.8649,16.355,30.5,31.97,20.6,25.96,2790225,72434241,57.2 +HOUR,2025-09-08,0.4643,3.64,5.33,6.84,4.68,5.7,65541670,373587519,2674.8 +SKYQ,2025-09-08,0.4463,3.321,4.803,8.96,4.182,5.76,29659912,170841093,2270.2 +QS,2025-09-08,0.2832,7.84,10.06,10.68,9.26,9.49,102502681,972750442,4.6 +MCRB,2025-09-08,0.2319,19.36,23.85,24.6651,21.0,22.85,1006553,22999736,9.6 +DUO,2025-09-08,0.1919,3.44,4.1,5.34,3.88,5.07,12243321,62073637,52.8 +PL,2025-09-08,0.1799,6.53,7.705,9.7081,7.29,9.66,64238765,620546469,11.4 +BVC,2025-09-09,3.5,6.6,29.7,30.3,13.6,30.3,6995604,211966801,4351.9 +BON,2025-09-09,0.9545,1.54,3.01,3.4,1.75,1.92,61039991,117196782,766.0 +YOUL,2025-09-09,0.8352,1.76,3.23,4.4,2.0,2.19,91182843,199690426,787.9 +ZONE,2025-09-09,0.4843,3.51,5.21,5.36,3.88,4.43,19251893,85285885,454.6 +MGIH,2025-09-09,0.2832,2.26,2.9,4.5,1.75,2.01,9624044,19344328,544.4 +FABC,2025-09-09,0.1717,5.33,6.245,10.56,4.4,6.31,4157272,26232386,104.6 +CRWU,2025-09-09,0.1419,11.63,13.28,14.05,12.54,13.35,920393,12287246,3.2 +DC,2025-09-09,0.1176,4.59,5.13,5.15,4.475,4.53,1296440,5872873,2.2 +CUPR,2025-09-10,1.6068,5.616,14.64,19.6,10.88,12.96,7270066,94220055,78.4 +EDHL,2025-09-10,0.5635,6.914,10.81,25.6,9.077,13.13,9692832,127266884,463.2 +CAMP,2025-09-10,0.5427,1.99,3.07,3.7,2.52,2.79,40082435,111829993,667.1 +CPOP,2025-09-10,0.4583,14.4,21.0,21.3,13.1,16.2,1299295,21048579,64.4 +SPHL,2025-09-10,0.4494,3.52,5.102,6.96,4.009,5.24,5918006,31010351,1058.8 +CGTL,2025-09-10,0.2012,8.641,10.38,18.45,9.861,12.74,5208843,66360659,482.5 +CRWU,2025-09-10,0.1933,13.35,15.93,19.84,15.72,17.75,1820007,32305124,5.4 +DUO,2025-09-10,0.1898,3.53,4.2,4.45,3.26,3.39,2337076,7922687,9.6 +MOGU,2025-09-11,1.844,2.5,7.11,8.1,4.21,4.61,70902117,326858759,15601.7 +VNCE,2025-09-11,1.1265,1.66,3.53,4.2,2.93,3.14,86406023,271314912,3796.4 +TGL,2025-09-11,0.6256,17.84,29.0,35.6,25.4,25.4,4048548,102833119,109.9 +AMST,2025-09-11,0.5373,2.68,4.12,4.78,3.31,3.87,41611447,161036299,3502.2 +MAZE,2025-09-11,0.3171,16.02,21.1,25.5,20.0,24.8,5085355,126116804,18.7 +OPEN,2025-09-11,0.2986,5.86,7.61,10.7,7.42,10.52,1051279186,11059457036,3.5 +AIRE,2025-09-11,0.2429,17.5,21.75,34.25,20.3,30.75,6789228,208768761,27.2 +SLAI,2025-09-11,0.2355,19.32,23.87,23.94,19.11,21.0,1854770,38950170,39.9 +VIA,2025-09-12,3.0018,10.995,44.0,52.72,43.5,49.51,5050635,250056938,392.4 +GCTK,2025-09-12,1.308,4.87,11.24,14.14,7.9,10.59,70670301,748398487,1966.7 +AIFA,2025-09-12,0.8328,5.467,10.02,13.68,8.22,8.88,18752348,166520850,5102.0 +HCWB,2025-09-12,0.6536,19.92,32.94,36.65,28.44,33.54,3352320,112436812,300.6 +PLRZ,2025-09-12,0.2919,5.852,7.56,8.1,6.78,7.2,6685739,48137320,107.3 +ADXN,2025-09-12,0.2551,8.78,11.02,12.0499,10.0999,10.7,779953,8345497,4357.3 +MGIH,2025-09-12,0.2374,2.19,2.71,2.855,2.31,2.8,16768635,46952178,948.6 +HUIZ,2025-09-12,0.2367,2.83,3.5,4.53,3.3,4.21,11460484,48248637,629.6 +HSDT,2025-09-15,2.2143,7.56,24.3,24.49,16.75,18.27,20034258,366025893,607.1 +LRE,2025-09-15,0.5892,1.5605,2.48,2.97,1.81,2.15,42563789,91512146,3246.2 +GLUE,2025-09-15,0.501,4.81,7.22,7.4,6.06,6.93,31708489,219739828,89.3 +IHT,2025-09-15,0.5,1.982,2.973,4.202,2.369,3.29,28917669,95139131,28917.7 +FEED,2025-09-15,0.4515,6.49,9.42,17.4,8.86,10.7,55314396,591864037,1663.7 +AZIO,2025-09-15,0.2426,4.08,5.07,5.07,2.56,2.74,14802901,40559948,211.3 +RCEL,2025-09-15,0.2083,4.56,5.51,7.12,5.51,6.76,19595584,132466147,76.4 +BIAF,2025-09-15,0.1719,8.1,9.492,13.5,9.33,10.51,5971580,62761305,444.1 +FGI,2025-09-16,1.7103,3.97,10.76,12.6199,7.9001,9.5,41389142,393196849,1977.8 +TURB,2025-09-16,1.3074,2.7,6.23,20.45,5.62,12.4,141893293,1759476833,37072.1 +PRHI,2025-09-16,0.8558,7.921,14.7,15.47,10.01,12.32,5908730,72795553,3909.2 +AIHS,2025-09-16,0.414,2.15,3.04,3.08,2.37,2.67,44738698,119452323,924.0 +WBTN,2025-09-16,0.3209,14.96,19.76,21.32,18.5101,20.8,8823566,183530172,17.6 +SNTG,2025-09-16,0.2632,2.85,3.6,3.6399,2.7647,2.89,16534079,47783488,2351.9 +DFNS,2025-09-16,0.2272,5.15,6.32,6.66,5.58,5.63,18632381,104900305,32.5 +MBAI,2025-09-16,0.2241,2.12,2.595,2.88,2.22,2.52,17814371,44892214,404.9 +SPRC,2025-09-17,1.0326,16.56,33.66,57.24,32.85,40.23,13688934,550705814,663.7 +HIND,2025-09-17,0.5467,6.045,9.35,9.56,6.0,6.32,14340625,90632750,224.0 +SQFT,2025-09-17,0.3888,6.07,8.43,10.47,7.12,8.88,18450322,163838859,1092.4 +NFE,2025-09-17,0.385,2.0,2.77,2.85,2.03,2.16,145805540,314939966,18.7 +CWD,2025-09-17,0.3606,6.35,8.64,9.43,6.96,7.66,32268054,247173293,72.0 +IPM,2025-09-17,0.3368,1.93,2.58,2.88,2.23,2.37,58804313,139366221,2435.2 +TNMG,2025-09-17,0.2557,6.562,8.24,11.0,6.4,6.544,3058088,20012127,573.3 +ORKA,2025-09-17,0.1893,14.9,17.72,18.5,15.66,16.21,1799522,29170251,13.9 +INTW,2025-09-18,0.5502,2.839,4.401,4.541,4.037,4.134,79455200,328467796,9.3 +AERT,2025-09-18,0.5173,4.541,6.89,9.6,6.408,7.44,23264215,173085759,792.4 +LASE,2025-09-18,0.4214,2.8,3.98,5.88,3.45,4.71,126679787,596661796,93.0 +BRFH,2025-09-18,0.2371,2.91,3.6,4.08,3.359,3.84,2357790,9053913,907.4 +BEEM,2025-09-18,0.1798,2.53,2.985,3.22,2.77,3.04,29213275,88808356,169.2 +PESI,2025-09-18,0.1563,8.19,9.47,10.27,9.36,9.56,798606,7634673,7.5 +NVNI,2025-09-18,0.1303,8.051,9.1,11.4,8.2,9.0,3212605,28913445,13.9 +ASMG,2025-09-18,0.1297,16.11,18.2,18.54,17.73,18.12,444203,8048958,1.8 +AGMH,2025-09-19,2.1345,2.23,6.99,18.1,6.23,10.34,207569456,2146268175,2578.3 +AMCI,2025-09-19,0.5758,15.1099,23.81,42.0,18.43,22.2,1117339,24804925,233.9 +MGIH,2025-09-19,0.2049,2.44,2.94,3.12,2.5,2.59,13144026,34043027,459.6 +FATN,2025-09-19,0.1879,6.01,7.1394,10.77,6.6,8.89,11132271,98965889,814.2 +YAAS,2025-09-19,0.1841,6.04,7.152,11.84,6.656,6.96,8129461,56581048,1321.8 +SOWG,2025-09-19,0.1677,14.13,16.5,18.15,13.95,14.86,770273,11446256,127.1 +UPC,2025-09-19,0.1494,4.15,4.77,6.8,3.79,4.49,1957364,8788564,100.1 +AQST,2025-09-19,0.1235,4.94,5.55,6.0,5.471,5.67,13734418,77874150,8.9 +AIXC,2025-09-22,1.9225,2.84,8.3,8.81,4.715,5.53,60410866,334072088,2238.5 +MBX,2025-09-22,1.24,10.0,22.4,26.47,17.76,20.0,28303510,566070200,80.5 +BKKT,2025-09-22,0.3697,10.44,14.3,15.88,12.25,14.7,19521779,286970151,15.8 +ARBE,2025-09-22,0.3665,1.61,2.2,2.2,1.75,1.84,46221956,85048399,45.3 +ARBB,2025-09-22,0.32,6.25,8.25,13.89,7.94,10.19,12343775,125783067,2025.9 +TARA,2025-09-22,0.2069,3.19,3.85,4.18,3.58,3.67,3102431,11385921,22.6 +LASE,2025-09-22,0.2024,4.2,5.05,5.59,4.32,4.65,11074928,51498415,7.8 +BBAR,2025-09-22,0.1544,8.023,9.262,10.05,9.071,9.649,2783607,26859023,3.4 +IBG,2025-09-23,1.8449,9.227,26.25,32.5,16.36,18.92,8820839,166890273,670.6 +DMRA,2025-09-23,0.53,3.0,4.59,5.02,3.81,4.22,54188234,228674347,4342.0 +IPDN,2025-09-23,0.4685,2.86,4.2,5.07,3.84,4.76,43724697,208129557,312.4 +SLNH,2025-09-23,0.4071,2.1,2.955,2.97,2.21,2.37,98153096,232622837,78.4 +JXG,2025-09-23,0.2171,12.3,14.97,16.2,12.7,15.15,2158725,32704683,393.7 +FLD,2025-09-23,0.2088,3.88,4.69,4.695,3.22,3.26,19220914,62660179,52.0 +SILO,2025-09-23,0.1872,11.75,13.95,15.15,11.7,12.23,2306890,28213264,108.1 +FLNA,2025-09-23,0.1638,2.32,2.7,3.66,2.535,3.41,45720720,155907655,77.7 +QURE,2025-09-24,1.8814,13.66,39.36,51.21,37.12,47.5,70079687,3328785132,68.5 +SHFS,2025-09-24,1.635,3.26,8.59,9.19,6.4101,7.27,32563635,236737626,990.1 +YAAS,2025-09-24,0.66,5.976,9.92,10.48,7.776,8.496,8594588,73019619,825.5 +LAC,2025-09-24,0.6466,3.07,5.055,6.3,4.98,6.01,289496390,1739873303,47.2 +QCLS,2025-09-24,0.641,3.51,5.76,8.94,4.2,5.2,60742797,315862544,121.9 +CLPT,2025-09-24,0.3388,12.16,16.28,20.94,16.2,19.28,12431042,239670489,40.2 +AQMS,2025-09-24,0.3333,4.05,5.4,6.04,4.6,5.87,19262350,113069994,533.6 +CYCU,2025-09-24,0.1921,5.647,6.732,7.646,5.658,6.146,2124272,13055775,5.9 +PEPG,2025-09-25,1.218,2.66,5.9,6.34,4.9,5.88,125104556,735614789,282.0 +PSTV,2025-09-25,0.5381,10.11,15.55,15.55,12.13,14.07,13003504,182959301,60.1 +EVAX,2025-09-25,0.3,3.3,4.29,4.75,3.91,4.53,77188485,349663837,1113.6 +LUXE,2025-09-25,0.1579,8.17,9.46,9.46,7.81,8.42,4063026,34210678,28.3 +CPOP,2025-09-25,0.1459,14.05,16.1,26.1,12.0,20.5,5973547,122457713,372.3 +STFS,2025-09-25,0.1446,6.64,7.6,10.0,6.868,8.256,1286227,10619090,7.9 +CYCU,2025-09-25,0.1442,6.146,7.032,11.48,6.184,10.35,7296341,75517129,17.2 +LAC,2025-09-25,0.1281,6.01,6.78,7.53,6.37,7.37,212855469,1568744806,34.7 +BIAF,2025-09-26,0.8123,3.41,6.18,7.29,4.65,5.29,99912060,528534797,4301.5 +DFLI,2025-09-26,0.2148,3.781,4.593,5.85,4.5,5.235,18628295,97519124,43.0 +AMPY,2025-09-26,0.1216,5.84,6.55,6.55,5.9414,6.07,7478368,45393693,16.6 +AQST,2025-09-26,0.1198,5.26,5.89,6.43,5.815,5.99,12135272,72690279,7.0 +PSTV,2025-09-26,0.0824,14.07,15.23,18.38,15.0,15.43,4587725,70788596,21.2 +MSS,2025-09-29,2.9686,9.55,37.9,39.6,11.0,11.2,9345242,104666710,1055.0 +AGPU,2025-09-29,1.7601,11.63,32.1,32.1,16.51,18.0,3566607,64198926,426.8 +JFB,2025-09-29,0.6292,3.425,5.58,6.53,4.85,6.35,51282656,325644865,1413.9 +DWTX,2025-09-29,0.538,5.52,8.49,9.5,7.07,7.91,43109638,340997236,3866.2 +ZURA,2025-09-29,0.4896,2.41,3.59,3.74,2.76,2.99,25449218,76093161,78.7 +STKH,2025-09-29,0.4303,4.3348,6.2,6.97,5.31,6.33,16861753,106734896,370.1 +RDHL,2025-09-29,0.3995,1.84,2.575,2.79,2.01,2.34,55783967,130534482,1780.9 +MSOX,2025-09-29,0.3828,6.06,8.38,9.29,7.25,9.18,5809756,53333560,4.5 +BENF,2025-09-30,0.7403,2.927,5.094,8.64,4.126,7.61,75304168,573064718,1441.8 +CRE,2025-09-30,0.48,9.0,13.32,14.64,9.175,12.0,4399210,52790520,109.4 +SKYQ,2025-09-30,0.4655,3.626,5.314,5.881,4.24,4.932,16442435,81094089,359.5 +IBG,2025-09-30,0.273,15.75,20.05,26.9,18.95,21.95,13268766,291249413,770.8 +CRWU,2025-09-30,0.2277,18.97,23.29,25.18,22.4,23.45,1393605,32680037,2.6 +PATH,2025-09-30,0.2086,12.56,15.18,15.18,13.34,13.38,80835381,1081577397,7.5 +DPRO,2025-09-30,0.1885,6.95,8.26,9.55,7.85,8.14,60249898,490434169,39.0 +EFTY,2025-09-30,0.1686,14.89,17.4,18.2,15.0,16.98,1252218,21262661,4.0 +RTB,2025-10-01,0.6969,10.36,17.58,20.44,15.47,17.78,7818064,139005177,254.5 +LAC,2025-10-01,0.3082,5.71,7.47,7.55,6.58,7.04,215964639,1520391058,34.4 +UCFI,2025-10-01,0.2958,4.09,5.3,7.3099,5.0901,5.51,5441353,29981855,683.7 +NVA,2025-10-01,0.2726,3.28,4.174,4.174,3.562,3.86,2258890,8719315,8.5 +RZLV,2025-10-01,0.2149,4.98,6.05,6.23,4.94,5.06,94271237,477012459,4.6 +GLXG,2025-10-01,0.2031,3.84,4.62,5.25,4.4,4.92,18705116,92029170,610.6 +AIHS,2025-10-01,0.2,2.0,2.4,3.07,2.21,2.47,20675752,51069107,118.3 +MASK,2025-10-01,0.1896,14.29,17.0,18.0,15.0,15.12,595733,9007482,43.3 +YOOV,2025-10-02,0.4942,2.57,3.84,5.4499,3.53,4.5,50163389,225735250,731.3 +BTTC,2025-10-02,0.3015,4.61,6.0,39.0,5.48,23.98,3836667,92003274,221.7 +TNMG,2025-10-02,0.2914,6.04,7.8,8.098,6.24,6.532,3251158,21236564,51.7 +DKI,2025-10-02,0.2812,15.36,19.68,20.0,16.0,16.0,1455622,23289952,45.5 +TSHA,2025-10-02,0.2689,3.18,4.035,4.92,3.98,4.88,123669367,603506510,42.5 +DFLI,2025-10-02,0.2005,5.991,7.192,11.3,6.75,10.7,39152197,418928507,90.4 +ANGO,2025-10-02,0.15,11.07,12.73,12.7599,11.3537,11.74,3254329,38205822,8.6 +SHLS,2025-10-02,0.1261,7.93,8.93,9.22,8.355,8.91,12067803,107524124,2.5 +BNAI,2025-10-03,0.4006,3.55,4.972,6.9,4.71,6.015,20810266,125173749,668.4 +DFLI,2025-10-03,0.3645,10.7,14.6,22.8,13.3,18.9,33919708,641082481,78.3 +CHR,2025-10-03,0.3318,19.68,26.21,27.81,23.7,24.14,2132903,51488278,3202.6 +XELB,2025-10-03,0.3295,5.19,6.9,7.98,6.69,7.14,10835237,77363592,564.0 +ASTC,2025-10-03,0.2994,4.81,6.25,8.01,5.73,5.88,30693513,180477856,5164.6 +OVID,2025-10-03,0.2195,1.64,2.0,2.01,1.65,1.84,55918347,102889758,37.3 +GIPR,2025-10-03,0.213,10.8,13.1,17.8,12.4,16.4,1484444,24344881,222.8 +QCLS,2025-10-03,0.2059,5.1,6.15,6.95,5.15,5.75,8140602,46808461,12.5 +SPRB,2025-10-06,2.9422,8.82,34.77,170.0,30.03,130.4,24947103,3253102231,15114.9 +CRMLW,2025-10-06,0.7544,2.85,5.0,7.78,2.4,4.6171,2770267,12790599,31.9 +AMDG,2025-10-06,0.7503,18.26,31.96,31.96,26.8,26.89,1776487,47769735,14.0 +AMDL,2025-10-06,0.7495,10.66,18.65,18.67,15.63,15.7,106498198,1672021708,3.8 +CRML,2025-10-06,0.4405,7.98,11.495,16.68,9.15,11.59,159297448,1846257422,38.8 +FEMY,2025-10-06,0.4127,12.6,17.8,18.4,14.02,16.78,4035610,67717535,70.7 +IONR,2025-10-06,0.2579,4.75,5.975,8.15,5.5,6.53,5887013,38442194,186.9 +PALI,2025-10-06,0.225,1.6,1.96,2.28,1.72,1.905,54130293,103118208,116.9 +TMQ,2025-10-07,2.4593,2.09,7.23,7.98,5.96,6.5,212412000,1380678000,447.6 +PCSA,2025-10-07,0.4151,6.975,9.87,11.49,6.403,9.0,8622358,77601222,108.0 +NAK,2025-10-07,0.3179,1.51,1.99,2.01,1.73,1.88,55886826,105067232,13.0 +DVLT,2025-10-07,0.3027,2.08,2.7097,3.1,2.39,2.53,173266491,438364222,4.6 +LXEO,2025-10-07,0.2751,6.47,8.25,8.88,7.88,8.34,9569048,79805860,23.2 +BJDX,2025-10-07,0.2677,6.2,7.86,10.76,7.64,8.56,10602930,90761080,606.7 +REKR,2025-10-07,0.2044,1.81,2.18,2.33,2.02,2.11,23840258,50302944,9.0 +PRHI,2025-10-07,0.1715,9.023,10.57,19.81,10.22,12.88,5038538,64896369,328.6 +XBIO,2025-10-08,1.7273,4.29,11.7,13.93,9.34,10.36,47433048,491406377,4288.9 +ALP,2025-10-08,1.3746,5.58,13.25,13.8,9.77,10.91,29640221,323374811,420.5 +ACXP,2025-10-08,0.6713,4.29,7.17,8.34,6.34,8.1,24964474,202212239,555.0 +PCSA,2025-10-08,0.5556,9.0,14.0,14.24,11.33,11.97,4841996,57958692,60.0 +RNAZ,2025-10-08,0.5311,12.22,18.71,20.99,13.182,14.8,7504249,111062885,730.6 +BURU,2025-10-08,0.4776,2.37,3.502,4.242,2.554,3.264,229147197,747936451,28.9 +UPC,2025-10-08,0.4333,5.17,7.41,11.0,7.03,9.46,22904947,216680798,582.1 +SCWO,2025-10-08,0.3421,3.651,4.9,7.361,4.431,7.0,11900482,83303374,178.8 +BJDX,2025-10-09,1.0267,7.48,15.16,16.68,10.48,13.12,26634357,349442763,1330.5 +AMBO,2025-10-09,0.4594,3.57,5.21,5.75,4.6069,5.75,3769694,21675740,336.0 +BAOS,2025-10-09,0.4441,3.31,4.78,5.22,4.37,4.86,26671822,129625054,406.4 +DMRA,2025-10-09,0.4376,10.65,15.31,18.45,13.4,14.75,12818526,189073258,97.0 +SCWO,2025-10-09,0.3253,7.0,9.277,10.9,5.5,5.99,9245951,55383246,138.9 +TNMG,2025-10-09,0.2292,9.6,11.8,12.28,9.082,10.91,1234694,13470511,5.9 +TELO,2025-10-09,0.2242,1.65,2.02,2.091,1.9,1.93,23092637,44568789,34.3 +SUGP,2025-10-09,0.2177,6.7995,8.28,11.0,7.8,10.49,2520941,26444671,108.6 +GWH,2025-10-10,1.1105,1.72,3.63,5.33,3.04,4.16,280689218,1167667146,1075.1 +QNRX,2025-10-10,0.4767,8.16,12.05,41.8,11.71,20.5,13968845,286361322,1034.3 +FMFC,2025-10-10,0.4196,8.46,12.01,12.51,9.0,9.91,605313,5998651,0.9 +AURE,2025-10-10,0.3462,10.4,14.0,14.6,10.4,11.7,5233212,61228580,397.4 +YHGJ,2025-10-10,0.3333,6.0,8.0,10.29,6.53,9.32,6246709,58219327,1154.9 +ORBS,2025-10-10,0.3039,8.44,11.005,11.01,8.96,9.84,15741194,154893348,4.2 +CRMLW,2025-10-10,0.2088,6.37,7.7,8.81,6.5,7.19,1234544,8876371,12.4 +BURU,2025-10-10,0.1779,2.305,2.715,2.791,2.332,2.371,56137394,133101761,6.9 +STI,2025-10-13,1.1111,5.49,11.59,27.698,9.3,21.625,100973792,2183558252,585.7 +ELBM,2025-10-13,1.0,1.65,3.3,8.7,3.27,7.02,197012257,1383026044,158.9 +NDRA,2025-10-13,0.517,6.48,9.83,9.85,7.4,8.12,13849220,112455666,370.9 +GWH,2025-10-13,0.3942,4.16,5.8,13.87,5.63,9.05,162649645,1471979287,620.0 +CHNR,2025-10-13,0.302,4.9771,6.48,8.2,5.98,7.17,16845945,120785425,342.7 +ACON,2025-10-13,0.258,8.5972,10.815,12.03,9.46,9.69,3838107,37191256,300.3 +MTEX,2025-10-13,0.2489,9.0,11.24,12.0,9.12,10.06,600106,6037066,62.4 +UAMY,2025-10-13,0.2031,12.21,14.69,17.265,13.36,16.71,45854808,766233841,6.1 +GWAV,2025-10-14,1.0165,8.51,17.16,24.0,15.05,17.55,25973819,455840523,519.3 +AQMS,2025-10-14,0.7053,9.91,16.9,39.4,15.48,29.62,34583496,1024363151,172.0 +NVA,2025-10-14,0.6759,6.832,11.45,16.28,9.62,14.37,47978825,689455715,95.1 +EDHL,2025-10-14,0.647,7.984,13.15,19.36,12.13,17.12,5432343,93001712,226.9 +CRMLW,2025-10-14,0.5468,12.38,19.15,20.84,13.51,18.69,1574932,29435479,13.7 +FLZH,2025-10-14,0.3157,9.303,12.24,19.5,11.0,14.37,9127049,131155694,787.9 +NVTS,2025-10-14,0.2487,9.97,12.45,13.33,10.92,12.57,157929925,1985179157,6.2 +CYN,2025-10-14,0.2209,5.5,6.715,6.73,5.65,5.7,24419472,139190990,97.2 +OMER,2025-10-15,1.8268,4.1,11.59,12.1,9.19,10.42,125220957,1304802371,153.9 +PFAI,2025-10-15,0.7958,1.91,3.43,4.93,3.01,4.57,63248700,289046559,5907.5 +VERI,2025-10-15,0.4515,5.46,7.925,9.42,7.47,8.39,46724971,392022506,6.5 +IBG,2025-10-15,0.4317,16.1,23.05,24.7,19.15,20.15,4707743,94861021,119.3 +DFLI,2025-10-15,0.4248,15.3,21.8,26.1,18.6,19.7,16370511,322499066,10.1 +RKDA,2025-10-15,0.3984,3.69,5.16,5.72,4.71,5.45,21145451,115242707,1906.0 +IMSRW,2025-10-15,0.3303,11.14,14.82,16.0,10.0,11.45,1083890,12410540,3.0 +TE,2025-10-15,0.2481,4.01,5.005,5.26,4.63,5.24,29593602,155070474,10.3 +RYOJ,2025-10-16,1.0714,2.17,4.495,5.35,3.53,4.76,28790359,137042108,714.8 +UZX,2025-10-16,0.7455,1.65,2.88,3.1,1.93,1.97,52126747,102689691,5360.9 +PSNYW,2025-10-16,0.6675,6.117,10.2,14.49,9.045,9.444,1459549,13783980,155.0 +WHWK,2025-10-16,0.6476,2.1,3.46,3.7699,2.45,2.61,94339537,246226191,1012.0 +CRMLW,2025-10-16,0.2841,12.11,15.55,15.55,10.0,10.08,1217328,12270666,6.8 +CLLS,2025-10-16,0.2652,4.11,5.2,5.4796,3.9,4.52,1306459,5905194,11.2 +CYCU,2025-10-16,0.2638,5.564,7.032,7.974,5.008,5.125,2998136,15365447,8.0 +AQMS,2025-10-16,0.2374,13.94,17.25,19.48,13.75,15.7,8984968,141063997,39.2 +ARTV,2025-10-17,1.0181,2.77,5.59,7.36,5.1401,6.01,100332975,603001179,1764.4 +ELBM,2025-10-17,0.6098,1.64,2.64,2.65,1.85,2.22,61264615,136007445,37.5 +XRTX,2025-10-17,0.3765,4.25,5.85,7.05,5.05,5.5,22462931,123546120,3035.9 +ACHV,2025-10-17,0.289,3.08,3.97,4.4399,3.71,4.2,15968800,67068960,20.6 +VHC,2025-10-17,0.28,17.0,21.76,29.0,21.6301,23.87,2258148,53901992,572.8 +SGHT,2025-10-17,0.1304,3.45,3.9,4.8,3.89,4.69,1638599,7685029,19.1 +LAZR,2025-10-17,0.0794,1.89,2.04,2.1,1.92,1.94,7680027,14899252,1.4 +NUAI,2025-10-17,0.0794,3.15,3.4,4.71,3.2,4.55,33819501,153878729,1.4 +REPL,2025-10-20,1.0422,4.5,9.19,10.29,8.61,8.945,110711557,990314877,44.6 +GSIT,2025-10-20,0.4764,5.08,7.5,18.15,7.34,12.97,115840659,1502453347,637.5 +RDHL,2025-10-20,0.3467,1.5,2.02,2.14,1.68,1.73,24986430,43226523,371.5 +RANI,2025-10-20,0.2805,1.64,2.1,2.82,1.83,2.25,172050160,387112860,673.7 +FGI,2025-10-20,0.271,4.76,6.05,6.86,5.6156,6.41,11345522,72724796,296.8 +ABAT,2025-10-20,0.2402,4.85,6.015,6.87,5.57,6.72,51048973,343049098,3.3 +DVLT,2025-10-20,0.2067,1.79,2.16,2.48,2.02,2.42,84727834,205041358,1.2 +UAMY,2025-10-20,0.1886,11.19,13.3,13.84,11.015,13.43,31869144,428002603,2.3 +NERV,2025-10-21,1.5338,2.66,6.74,12.46,5.98,6.41,166728510,1068729749,6033.8 +AMCI,2025-10-21,0.5625,8.32,13.0,15.97,11.6629,13.5,3535956,47735406,384.1 +YDKG,2025-10-21,0.3431,4.43,5.95,6.75,5.06,5.67,8292936,47020947,2669.1 +SPWR,2025-10-21,0.2914,1.75,2.26,2.27,1.8,2.0,44031395,88062790,32.1 +RYOJ,2025-10-21,0.2815,3.8,4.8698,11.43,4.55,9.12,23605815,215285032,400.6 +BOF,2025-10-21,0.2148,2.095,2.545,3.02,2.44,2.8,68129219,190761813,1069.6 +GSIT,2025-10-21,0.2089,12.97,15.68,17.14,10.59,10.86,61713456,670208132,309.9 +HTCR,2025-10-21,0.1624,12.01,13.96,15.37,12.77,14.13,780999,11035515,58.6 +BENF,2025-10-22,0.7364,3.896,6.765,12.48,6.336,11.92,42429874,505764098,562.9 +BYND,2025-10-22,0.7044,3.62,6.17,7.69,2.62,3.58,2227815279,7975578698,259.1 +AIRE,2025-10-22,0.5256,18.19,27.75,32.5,17.5,17.84,13052878,232863343,21.4 +FLWS,2025-10-22,0.3223,5.15,6.81,7.1,4.21,4.39,35749005,156938131,78.9 +SBEV,2025-10-22,0.2804,1.89,2.42,3.3499,2.23,2.45,38765634,94975803,1094.4 +DNUT,2025-10-22,0.2547,3.71,4.655,5.11,3.88,4.03,152829335,615902220,35.3 +RANI,2025-10-22,0.2491,2.85,3.56,3.87,2.26,2.415,63295046,152857536,233.1 +YDKG,2025-10-22,0.1605,5.67,6.58,7.26,5.62,6.8,6602894,44899679,2125.2 +IMCC,2025-10-23,0.371,1.86,2.55,2.57,1.53,1.68,23035953,38700401,468.6 +BIOA,2025-10-23,0.3223,6.05,8.0,8.6,7.75,7.95,5153965,40974021,27.9 +GTX,2025-10-23,0.1867,12.37,14.68,15.57,13.83,14.76,7920450,116905842,3.3 +CLB,2025-10-23,0.1796,12.75,15.04,16.92,14.42,16.42,1663363,27312420,3.6 +SSL,2025-10-23,0.1558,5.52,6.38,6.59,6.31,6.49,2974921,19307237,2.6 +HAPN,2025-10-23,0.1441,16.52,18.9,19.88,17.69,18.25,9909515,180848648,6.8 +FRMM,2025-10-23,0.14,15.64,17.83,17.94,15.31,15.36,4716023,72438113,4.9 +QUBT,2025-10-23,0.1305,14.87,16.81,16.9,15.371,15.94,55716246,888116961,1.2 +GNTA,2025-10-24,2.0867,3.23,9.97,10.0,5.68,6.2,21920565,135907503,3482.5 +AIXC,2025-10-24,0.6402,3.53,5.79,5.97,3.5101,3.64,51508997,187492749,165.0 +NEUP,2025-10-24,0.5556,4.05,6.3,8.44,5.66,6.24,83666213,522077169,894.6 +FEMY,2025-10-24,0.1947,12.17,14.54,14.56,11.6,12.67,619564,7849875,6.6 +BYND,2025-10-24,0.1673,2.84,3.315,3.35,2.08,2.185,803351451,1755322920,83.8 +ARTV,2025-10-24,0.157,4.84,5.6,5.618,4.84,5.41,996532,5391238,12.0 +GRND,2025-10-24,0.1484,12.67,14.55,16.2193,14.45,15.06,11484293,172953452,5.4 +VIOT,2025-10-24,0.1461,2.655,3.043,3.422,2.986,3.204,9984318,31989754,35.6 +KITT,2025-10-27,0.7955,14.08,25.28,27.44,15.6,16.08,11041902,177553784,140.6 +CLIK,2025-10-27,0.7214,6.21,10.69,11.8,9.11,10.46,15713880,164367184,724.0 +CODX,2025-10-27,0.6939,10.52,17.82,46.5,17.48,37.8,37192967,1405894152,906.2 +TGL,2025-10-27,0.4474,14.44,20.9,23.4,16.4,16.4,4043927,66320402,121.8 +BBAR,2025-10-27,0.4382,9.936,14.29,14.72,13.53,13.98,6618809,92530949,4.6 +DZZ,2025-10-27,0.3694,3.6,4.93,11.76,4.7023,8.42,5771024,48592022,639.3 +DYN,2025-10-27,0.3668,17.12,23.4,24.95,23.0,24.17,12671820,306277889,5.6 +SUPV,2025-10-27,0.3626,6.73,9.17,10.5,9.17,9.96,16572128,165058394,5.3 +XHLD,2025-10-28,0.7253,4.197,7.241,13.47,6.375,6.375,56325240,359073405,1057.7 +SCWO,2025-10-28,0.357,3.871,5.253,5.274,4.0,4.259,2245099,9561876,5.0 +YMAT,2025-10-28,0.3051,4.291,5.6,6.75,5.1,5.25,4887410,25658902,358.0 +LUNG,2025-10-28,0.2051,1.56,1.88,2.89,1.86,1.98,100327233,198647921,403.4 +IPDN,2025-10-28,0.1988,3.42,4.1,4.1,2.8,3.06,8293051,25376736,52.2 +DZZ,2025-10-28,0.1746,8.42,9.89,12.5,7.8,9.5,1599440,15194680,172.3 +PYPG,2025-10-28,0.17,16.71,19.55,20.91,17.96,18.0368,4191514,75601499,11.2 +HELP,2025-10-28,0.1674,6.51,7.6,8.0,6.96,7.15,6911390,49416438,12.0 +PPBT,2025-10-29,0.8353,5.83,10.7,14.1,8.63,10.6,41725899,442294529,1970.1 +TLIH,2025-10-29,0.2606,4.24,5.345,6.741,4.7,5.002,6862698,34327215,498.5 +PUMP,2025-10-29,0.2329,7.3,9.0,11.28,8.55,11.1,25627018,284459899,11.5 +GNTA,2025-10-29,0.15,2.4,2.76,3.2494,2.71,3.01,12973100,39049031,1930.1 +NPWR,2025-10-29,0.1304,3.45,3.9,4.32,3.72,4.14,5577535,23090994,3.0 +WKEY,2025-10-29,0.1095,12.47,13.835,16.25,12.55,15.92,4581075,72930714,14.1 +CGAU,2025-10-29,0.109,10.92,12.11,12.17,11.11,11.15,2009477,22405668,1.0 +HAYW,2025-10-29,0.1089,15.33,17.0,17.645,16.73,17.17,7883398,135357943,4.8 +INTS,2025-10-30,1.8967,6.673,19.33,43.5,16.0,33.0,57346610,1892438130,505.6 +CVU,2025-10-30,0.5507,2.36,3.6597,4.65,2.55,2.65,116106262,307681594,2343.5 +QCLS,2025-10-30,0.3605,3.8,5.17,5.2199,3.33,3.38,10001472,33804975,17.1 +JZXN,2025-10-30,0.356,11.04,14.97,15.42,12.5,13.04,2126187,27725478,41.6 +HBIO,2025-10-30,0.2838,4.465,5.732,9.4,5.235,6.3,31871694,200791672,629.8 +TECX,2025-10-30,0.2589,18.62,23.44,26.0,17.32,17.6,3345559,58881838,7.4 +GPRK,2025-10-30,0.2228,6.536,7.992,8.19,7.764,8.131,5362781,43604772,3.9 +MAX,2025-10-30,0.1906,11.12,13.24,13.25,12.16,12.23,1812601,22168110,4.2 +HKD,2025-10-31,0.6509,1.69,2.79,5.47,2.3801,2.95,325285468,959592130,1403.5 +GETY,2025-10-31,0.5224,2.01,3.06,3.21,1.875,1.88,130234945,244841696,178.9 +YDKG,2025-10-31,0.3175,4.63,6.1,6.43,5.21,5.63,5913152,33291045,799.5 +ARDX,2025-10-31,0.2834,5.01,6.43,6.73,5.86,6.06,18733329,113523973,5.9 +ATEC,2025-10-31,0.2263,16.33,20.025,20.15,18.69,18.99,11584801,219995370,5.9 +BENF,2025-10-31,0.2201,4.467,5.45,7.411,5.358,6.622,17070522,113040996,97.7 +DFSC,2025-10-31,0.2138,4.35,5.28,6.0,4.73,5.25,31427024,164991876,672.3 +FIP,2025-10-31,0.1859,5.013,5.945,5.945,5.023,5.238,3189582,16707030,2.4 +CNTN,2025-11-03,1.2915,2.95,6.76,6.89,3.0101,3.2,46708062,149465798,195.8 +PHIO,2025-11-03,0.6927,2.05,3.47,4.1899,1.7201,1.86,162066193,301443118,2367.4 +CRBU,2025-11-03,0.405,2.42,3.4,3.535,2.38,2.43,68354934,166102489,58.5 +AREC,2025-11-03,0.2831,3.85,4.94,4.94,3.89,4.0,49610020,198440080,7.1 +FEMY,2025-11-03,0.2645,12.74,16.11,17.59,12.4,13.14,4598118,60419270,39.6 +CIFR,2025-11-03,0.23,18.65,22.94,25.11,21.02,22.76,135849886,3091943405,2.6 +LGCL,2025-11-03,0.2007,2.74,3.29,3.57,2.9801,3.06,10142090,31034795,223.5 +KVUE,2025-11-03,0.1876,13.86,16.46,16.58,15.57,15.57,203525996,3168899757,6.6 +PTLE,2025-11-04,1.0806,14.89,30.98,36.0,20.21,22.56,7287125,164397540,606.1 +TCMD,2025-11-04,0.3507,15.77,21.3,23.84,20.7596,22.18,3549857,78735828,23.5 +IHRT,2025-11-04,0.2302,2.91,3.58,4.12,3.29,3.99,24800619,98954469,50.6 +UPWK,2025-11-04,0.2047,15.63,18.83,18.835,16.1,17.7,10802257,191199948,4.7 +HTZ,2025-11-04,0.1619,4.94,5.74,7.15,5.6,6.73,129775767,873390911,13.3 +SGHC,2025-11-04,0.1221,9.892,11.1,11.58,10.54,11.44,6904493,78987399,2.8 +MOBX,2025-11-04,0.1095,6.76,7.5,8.299,7.2,7.694,767750,5907068,6.1 +FWRG,2025-11-04,0.106,15.85,17.53,18.24,16.69,17.6,2388534,42038198,2.3 +CCTG,2025-11-05,1.0244,8.348,16.9,16.9,5.3,6.191,1479857,9161794,5.8 +APPS,2025-11-05,0.3471,5.92,7.975,8.2799,6.98,7.29,32089913,233935465,12.6 +LNAI,2025-11-05,0.3189,6.672,8.8,12.26,7.302,9.36,21223672,198653569,939.1 +BW,2025-11-05,0.2821,3.74,4.795,5.55,4.74,4.8,29216984,140241523,14.7 +EVC,2025-11-05,0.2676,1.906,2.416,3.033,2.291,2.744,11379925,31226514,69.1 +NPCE,2025-11-05,0.2372,9.4,11.63,13.8099,10.7701,12.98,1302817,16910564,10.5 +RVLV,2025-11-05,0.1832,19.98,23.64,23.75,21.1275,22.18,3017955,66938241,2.6 +OSS,2025-11-05,0.1801,4.72,5.57,5.78,5.075,5.76,1335372,7691742,1.9 +STGW,2025-11-06,0.3898,4.81,6.685,6.89,5.57,5.62,72476166,407316052,69.9 +IOVA,2025-11-06,0.2486,1.81,2.26,2.51,2.1,2.31,83726609,193408466,7.4 +FWRD,2025-11-06,0.2402,17.69,21.94,22.88,20.7325,20.9,1427745,29839870,1.7 +MQ,2025-11-06,0.2321,17.92,22.08,22.28,19.28,19.52,3297779,64372646,3.5 +SKYT,2025-11-06,0.2277,14.71,18.06,19.59,15.5391,18.71,7243628,135528279,3.6 +NXDR,2025-11-06,0.2035,1.72,2.07,2.09,1.65,1.67,6966059,11633318,6.0 +FSLY,2025-11-06,0.202,8.07,9.7,11.22,9.665,10.97,21973550,241049843,8.8 +LZ,2025-11-06,0.1921,10.175,12.13,12.4,10.475,10.93,6803636,74363741,3.4 +MSGM,2025-11-07,1.0799,2.19,4.555,4.8699,3.1601,3.74,105845268,395861302,8277.9 +ORGO,2025-11-07,0.3136,3.89,5.11,6.2,4.99,5.63,33040226,186016472,62.0 +HLLY,2025-11-07,0.2308,2.73,3.36,4.07,3.2,3.62,20819348,75366039,48.3 +TNDM,2025-11-07,0.2003,13.33,16.0,16.705,15.2,16.26,6035292,98133847,3.4 +MTVA,2025-11-07,0.2,9.35,11.22,11.66,9.02,9.99,3952593,39486404,474.3 +VSME,2025-11-07,0.1941,6.532,7.8,7.814,5.262,5.9,1077366,6356459,32.9 +NATR,2025-11-07,0.1923,13.73,16.37,17.94,16.005,17.92,319189,5719866,4.4 +PCT,2025-11-07,0.1811,9.61,11.35,11.415,9.95,10.54,9999438,105394076,3.1 +DMRA,2025-11-10,3.3313,4.95,21.44,25.88,15.06,17.25,43784010,755274172,407.2 +MOVE,2025-11-10,1.836,3.513,9.963,15.63,7.923,8.77,63537071,557220112,2753.9 +COGT,2025-11-10,1.2105,14.82,32.76,36.15,31.0,32.46,23291227,756033228,11.1 +BNAI,2025-11-10,0.567,3.746,5.87,8.474,4.618,4.811,47854613,230228543,256.8 +SOC,2025-11-10,0.2978,5.34,6.93,7.18,5.85,6.0,19468196,116809176,3.2 +GREE,2025-11-10,0.2781,1.51,1.93,2.18,1.8101,2.1,31462480,66071208,108.6 +IRWD,2025-11-10,0.2708,1.92,2.44,2.97,2.31,2.53,20171767,51034570,18.2 +VFF,2025-11-10,0.152,2.96,3.41,3.69,3.24,3.46,7874503,27245780,3.5 +QNRX,2025-11-11,0.5959,8.14,12.9906,14.0299,8.8,11.51,18309302,210740066,318.4 +ENGN,2025-11-11,0.4226,6.01,8.55,11.14,7.83,8.82,51454331,453827199,214.2 +RAIN,2025-11-11,0.3185,4.93,6.5,6.59,4.95,5.44,2757448,15000517,384.1 +BBAI,2025-11-11,0.2189,5.71,6.96,6.99,6.01,6.06,157695817,955636651,1.3 +CYCU,2025-11-11,0.2123,1.875,2.273,2.557,2.152,2.394,23751951,56862170,58.5 +REAL,2025-11-11,0.2123,11.21,13.59,15.56,12.8,15.48,22409954,346906087,7.5 +PUBM,2025-11-11,0.2026,7.65,9.2,11.08,9.13,10.97,7449325,81719095,12.7 +BODI,2025-11-11,0.2012,5.02,6.03,6.35,5.12,5.92,9947501,58889205,724.2 +DCOY,2025-11-12,0.3265,11.76,15.6,20.76,13.44,13.8,6401858,88345640,570.1 +SI,2025-11-12,0.2764,11.36,14.5,15.5,13.4849,15.0,490908,7363620,9.3 +FTCI,2025-11-12,0.2097,7.44,9.0,11.4,8.85,11.1,5478641,60812915,132.1 +LUCY,2025-11-12,0.1818,1.54,1.82,2.02,1.72,1.77,13226844,23411513,119.2 +MH,2025-11-12,0.1715,11.37,13.32,14.135,12.6,14.09,1969684,27752847,4.1 +PAL,2025-11-12,0.1277,6.58,7.42,8.75,7.39,8.55,1251034,10696340,7.5 +KOPN,2025-11-12,0.125,2.8,3.15,3.28,2.7,2.79,7363880,20545225,1.3 +IHS,2025-11-12,0.1248,6.73,7.57,8.0,6.78,6.88,2127772,14639071,6.1 +TNMG,2025-11-13,0.8425,5.992,11.04,11.61,7.64,8.22,22809289,187492355,208.1 +IDN,2025-11-13,0.2612,4.48,5.65,6.95,5.595,6.18,11196460,69194122,125.2 +FLY,2025-11-13,0.2381,18.31,22.67,24.22,20.41,21.42,8164845,174890979,5.1 +MGRX,2025-11-13,0.233,1.76,2.17,2.28,0.98,1.19,68134899,81080529,249.1 +LVLU,2025-11-13,0.2229,4.89,5.98,6.16,5.0,5.71,3704133,21150599,213.1 +CURI,2025-11-13,0.1887,3.514,4.177,4.766,4.149,4.355,5092182,22176452,11.3 +CLBT,2025-11-13,0.1772,15.97,18.8,19.98,18.204,19.28,5000967,96418643,4.6 +ONDS,2025-11-13,0.147,5.51,6.32,7.34,6.31,6.56,220831446,1448654285,3.8 +IVVD,2025-11-14,0.4463,1.77,2.56,2.76,2.16,2.35,136453486,320665692,31.2 +CYPH,2025-11-14,0.1705,1.76,2.06,3.55,1.8901,2.75,263218687,723851389,249.7 +FENC,2025-11-14,0.1378,7.69,8.75,8.75,7.75,7.86,911773,7166535,13.5 +CHR,2025-11-14,0.1273,7.185,8.1,8.145,7.29,7.305,761321,5561449,6.3 +OWLT,2025-11-14,0.1122,10.16,11.3,11.609,10.17,10.48,583422,6114262,5.7 +CTKB,2025-11-14,0.0919,4.57,4.99,5.78,4.71,5.5,6944566,38195113,8.8 +MSTZ,2025-11-14,0.0814,10.57,11.43,11.99,10.5586,11.43,35054457,400672443,1.8 +TSLZ,2025-11-14,0.0793,15.63,16.87,17.12,14.83,15.42,8721519,134485822,1.7 +AMIX,2025-11-17,0.63,15.27,24.89,32.55,19.99,24.15,14460902,349230783,1436.4 +CGTL,2025-11-17,0.4527,10.05,14.6,14.7,10.82,12.13,980944,11898850,103.3 +SGML,2025-11-17,0.3548,6.06,8.21,8.52,6.86,8.02,44749626,358892000,9.3 +ATGL,2025-11-17,0.3119,9.01,11.82,31.67,10.51,21.61,865629,18706242,759.0 +ZYME,2025-11-17,0.296,18.52,24.002,26.19,22.5535,23.9,11163627,266810685,13.5 +PACS,2025-11-17,0.2146,10.58,12.85,16.82,12.71,15.7,11860420,186208594,20.3 +SSP,2025-11-17,0.2059,3.06,3.69,4.44,3.43,4.28,12442097,53252175,19.7 +TNXP,2025-11-17,0.1384,15.9,18.1,18.3,16.27,16.805,1651841,27759188,2.3 +OLMA,2025-11-18,2.105,8.52,26.455,27.17,18.11,20.14,87328043,1758786786,77.9 +CANF,2025-11-18,0.518,7.24,10.99,12.3,7.602,7.602,17785645,135206473,2101.9 +CGTL,2025-11-18,0.1698,12.13,14.19,17.85,6.902,10.76,1755874,18893204,184.9 +ARVN,2025-11-18,0.1685,11.04,12.9,14.22,11.63,12.99,16304310,211792986,7.2 +GRRR,2025-11-18,0.1434,12.62,14.43,15.15,12.85,13.81,3477090,48018612,3.2 +VRA,2025-11-18,0.1429,2.45,2.8,3.24,2.54,2.88,12010792,34591080,70.8 +CLIK,2025-11-18,0.1285,6.77,7.64,8.65,7.1307,7.99,4087907,32662376,109.7 +GSM,2025-11-18,0.1145,3.719,4.145,4.501,4.095,4.184,7270897,30421433,4.3 +FRGT,2025-11-19,0.4939,16.5,24.65,34.25,22.5,22.5,11156277,251016232,1610.8 +KZIA,2025-11-19,0.3403,5.76,7.72,8.7499,7.6,7.74,27121077,209917135,949.6 +BVC,2025-11-19,0.3221,7.564,10.0,11.0,8.51,10.5,3026551,31778785,1804.7 +SGML,2025-11-19,0.1454,7.77,8.9,10.92,8.87,10.36,39690236,411190844,7.8 +CHR,2025-11-19,0.1321,7.155,8.1,9.495,7.95,8.625,1123016,9686013,9.3 +ANNX,2025-11-19,0.1187,3.2,3.58,4.2,3.5,4.06,10650536,43241176,6.2 +FULC,2025-11-19,0.0946,9.73,10.65,12.19,10.45,11.51,3862463,44456949,7.4 +KYIV,2025-11-19,0.0937,11.21,12.26,12.44,11.795,12.19,1276567,15561351,3.2 +BNKK,2025-11-20,0.572,4.974,7.819,8.894,5.499,5.954,9899909,58944058,68.6 +MNDR,2025-11-20,0.5482,9.96,15.42,19.02,13.5,18.24,13007986,237265664,2259.1 +PACS,2025-11-20,0.5264,16.83,25.69,27.78,24.56,26.14,13362506,349295906,22.5 +MAGN,2025-11-20,0.3819,7.96,11.0,12.5,10.0,10.18,9417850,95873713,14.5 +CRNC,2025-11-20,0.3232,7.92,10.48,12.02,10.01,10.1,11532203,116475250,8.4 +AUID,2025-11-20,0.284,1.62,2.08,2.29,1.64,1.71,63396367,108407787,1058.1 +APLX,2025-11-20,0.2352,17.9,22.11,23.25,15.08,15.24,1269246,19343309,1.7 +CRWU,2025-11-20,0.2105,6.185,7.487,7.595,5.247,5.276,1804036,9518093,3.5 +NVRI,2025-11-21,0.367,13.57,18.55,18.59,17.13,17.4,12711031,221171939,13.4 +MNDR,2025-11-21,0.278,18.24,23.31,32.52,21.84,28.5,11967520,341074320,2027.7 +MFI,2025-11-21,0.2441,11.06,13.76,26.86,10.509,11.4,1756586,20025080,108.0 +CCTG,2025-11-21,0.1047,1.653,1.826,3.5,1.734,2.364,7205058,17032757,35.5 +FLNA,2025-11-21,0.0932,2.63,2.875,3.05,2.74,2.87,1907570,5474725,1.5 +EPSM,2025-11-21,0.0874,3.66,3.98,5.14,3.4,3.59,7652066,27470916,36.5 +ENLV,2025-11-24,0.7792,13.45,23.93,27.15,15.0,15.3,13904700,212741910,1964.9 +MFI,2025-11-24,0.207,11.4,13.76,16.25,12.39,13.78,710564,9791571,43.7 +OSCR,2025-11-24,0.2055,13.48,16.25,16.95,15.53,16.49,58670763,967480881,4.4 +EPSM,2025-11-24,0.156,3.59,4.15,4.73,3.75,4.2,4375174,18375730,20.9 +CLSX,2025-11-24,0.1425,16.84,19.24,24.1179,18.715,23.65,723655,17114440,2.0 +DFLI,2025-11-24,0.126,7.501,8.446,8.628,7.671,7.869,2973302,23396913,1.6 +ALP,2025-11-24,0.1164,2.92,3.26,3.2887,2.69,2.74,27885056,76405053,291.3 +JXG,2025-11-24,0.1072,3.45,3.82,4.3399,3.5,4.12,4843667,19955908,426.4 +BNED,2025-11-25,0.2885,6.648,8.566,9.54,8.446,9.063,5706865,51721317,30.5 +KSS,2025-11-25,0.2394,15.37,19.05,21.94,18.93,21.91,35526948,778395430,9.7 +ICON,2025-11-25,0.2064,4.559,5.5,5.6,4.75,5.0,4859569,24297845,699.4 +FLNC,2025-11-25,0.1484,15.8,18.145,19.23,15.1,16.77,11842135,198592603,1.6 +FLNA,2025-11-25,0.1138,2.9,3.23,3.25,3.025,3.04,2009879,6110032,1.6 +LNAI,2025-11-25,0.1102,10.16,11.28,12.16,8.24,8.64,5828032,50354196,174.7 +AEHL,2025-11-25,0.1047,15.18,16.77,21.54,13.98,19.2,10813450,207618240,440.0 +PSNYW,2025-11-25,0.104,6.522,7.2,7.65,6.75,7.155,837281,5990745,55.3 +AMBR,2025-11-26,0.7089,1.58,2.7,3.16,2.3,2.47,89884806,222015470,1040.6 +MNDR,2025-11-26,0.3526,11.4,15.42,17.52,14.52,15.9,3612319,57435872,594.6 +PW,2025-11-26,0.2482,8.332,10.4,12.4,9.021,9.905,3517386,34839708,551.7 +WOOF,2025-11-26,0.1987,2.97,3.56,3.59,3.27,3.4,15801286,53724372,7.1 +ALP,2025-11-26,0.172,2.15,2.5199,2.53,1.75,1.88,8686473,16330569,90.7 +AEHL,2025-11-26,0.1469,19.2,22.02,23.7,18.66,20.82,4597641,95722885,164.4 +BQ,2025-11-26,0.1307,1.76,1.99,3.0,1.88,2.28,15340985,34977445,53.0 +DLLL,2025-11-26,0.1136,2.939,3.273,3.38,3.041,3.285,3242048,10650127,4.6 +TMC,2025-11-28,0.1252,5.83,6.56,7.07,6.2786,6.96,17733538,123425424,2.6 +MSTU,2025-11-28,0.089,11.8,12.85,13.4,11.7,12.05,10738706,129401407,1.1 +KEEL,2025-11-28,0.0887,3.1,3.375,3.5674,3.24,3.48,86625849,301457954,1.1 +VRCA,2025-11-28,0.0879,6.71,7.3,9.8212,6.92,9.1,2621454,23855231,25.7 +ORBS,2025-11-28,0.0843,2.49,2.7,2.77,2.51,2.62,2256653,5912430,0.8 +INV,2025-11-28,0.0827,5.2,5.63,5.94,5.3,5.75,1130078,6497948,0.8 +IBRX,2025-11-28,0.0775,2.13,2.295,2.45,2.25,2.36,21337605,50356747,2.4 +CCUP,2025-11-28,0.0765,3.92,4.22,4.86,4.07,4.71,2563908,12076006,4.5 +QTTB,2025-12-01,0.9406,2.19,4.25,6.3699,3.75,3.82,168133505,642269989,1878.1 +NCT,2025-12-01,0.4418,19.42,28.0,28.25,11.55,14.2,779919,11074849,1407.8 +WBUY,2025-12-01,0.2658,1.58,2.0,2.38,1.85,2.13,15239126,32459338,725.3 +NMRA,2025-12-01,0.1295,2.24,2.53,2.59,2.35,2.42,2312141,5595381,1.8 +CNCK,2025-12-01,0.1235,3.24,3.64,9.31,3.24,7.88,27356725,215570993,957.0 +GEOS,2025-12-01,0.1078,13.17,14.59,15.2299,12.95,13.04,510330,6654703,2.3 +BTCZ,2025-12-01,0.1027,4.089,4.509,4.719,4.454,4.569,17883228,81708468,2.8 +MSTZ,2025-12-01,0.1013,13.62,15.0,16.9601,14.41,14.515,21765329,315923750,1.1 +PLRZ,2025-12-02,1.2057,3.16,6.97,8.36,5.8501,7.33,149473817,1095643078,4657.6 +TAOP,2025-12-02,0.4533,2.14,3.11,3.13,2.5,2.84,19766405,56136590,1241.7 +JSPR,2025-12-02,0.2442,1.72,2.14,2.4199,1.55,1.58,59461884,93949776,166.2 +XXI,2025-12-02,0.1561,11.21,12.96,13.9149,12.43,12.49,723101,9031531,3.2 +FRMM,2025-12-02,0.1246,9.47,10.65,11.29,10.26,10.64,1721131,18312833,1.6 +AKTX,2025-12-02,0.1225,16.08,18.05,23.99,12.66,13.82,409727,5662427,107.4 +CDLR,2025-12-02,0.1153,17.43,19.44,20.645,17.1,17.39,1938187,33705071,14.0 +MNDR,2025-12-02,0.1081,11.1,12.3,15.24,12.3,13.56,2175535,29500254,341.3 +CAPR,2025-12-03,3.717,6.36,30.0,40.37,21.5,29.96,56959102,1706494695,34.7 +VRAX,2025-12-03,1.1327,9.823,20.95,21.75,12.78,17.2,11818653,203280831,3817.4 +QCLS,2025-12-03,0.3107,3.38,4.43,5.675,3.82,4.67,54712457,255507174,223.6 +IXHL,2025-12-03,0.2319,11.9,14.66,14.7,12.14,13.41,7364008,98751347,19.1 +AHMA,2025-12-03,0.1829,12.25,14.49,18.2,14.35,15.04,6100438,91750587,47.5 +MVLL,2025-12-03,0.153,8.89,10.25,10.63,9.433,10.28,4278966,43987770,6.0 +POET,2025-12-03,0.1517,4.68,5.39,6.08,5.1901,6.01,22837177,137251433,2.4 +AARD,2025-12-03,0.1263,9.26,10.43,12.0873,10.36,11.93,542022,6466322,3.4 +PLRZ,2025-12-04,1.3004,7.09,16.31,18.2,12.46,14.5,26546008,384917116,795.6 +PMI,2025-12-04,0.2624,2.02,2.55,4.16,2.23,3.69,39194355,144627169,121.3 +QCLS,2025-12-04,0.1734,4.67,5.48,7.9499,5.4,6.92,96020802,664463949,392.4 +CBIO,2025-12-04,0.1603,13.41,15.56,16.3499,12.36,12.99,2483915,32266055,54.3 +FLYE,2025-12-04,0.1432,8.66,9.9,10.5,9.2,9.99,1495683,14941873,81.6 +XXI,2025-12-04,0.098,11.84,13.0,17.69,12.9,14.5,1920657,27849526,7.6 +BIOA,2025-12-04,0.0868,9.22,10.02,11.05,9.85,10.5,1151791,12093805,4.5 +TIGR,2025-12-04,0.0855,8.66,9.4,9.4,8.815,9.01,9254823,83385955,2.7 +TORO,2025-12-05,0.2374,2.477,3.065,3.569,2.951,3.479,15493956,53903472,559.4 +FTH,2025-12-05,0.1903,10.56,12.57,13.26,7.45,9.72,1109137,10780811,53.7 +PCSC,2025-12-05,0.1037,10.7,11.81,12.99,11.76,12.2,3095795,37768699,28016.2 +BRR,2025-12-05,0.0882,5.33,5.8,5.8,3.75,4.36,4799385,20925318,7.3 +TWG,2025-12-05,0.0833,6.0,6.5,6.5,5.285,6.01,7563722,45457969,405.6 +DNA,2025-12-05,0.0749,9.21,9.9,9.95,9.0127,9.25,1420115,13136063,1.3 +WVE,2025-12-08,0.7123,7.49,12.825,19.6,12.72,18.52,147251357,2727095131,58.3 +TWG,2025-12-08,0.5824,6.01,9.51,26.36,8.62,22.01,24251498,533775470,1300.6 +FULC,2025-12-08,0.4562,8.9,12.96,15.7399,12.74,12.99,24718110,321088248,32.8 +MTVA,2025-12-08,0.2552,8.1819,10.27,13.42,9.81,11.52,2358658,27171740,92.2 +HWH,2025-12-08,0.2022,1.83,2.2,2.81,1.9701,2.33,7033264,16387505,497.3 +NRIX,2025-12-08,0.1846,18.09,21.43,22.4999,20.21,21.47,6061844,130147790,3.7 +SUGP,2025-12-08,0.1607,5.6,6.5,9.52,6.3101,7.13,3308830,23591957,137.3 +OCUL,2025-12-08,0.159,12.58,14.58,16.44,14.58,16.11,16926977,272693599,7.4 +XCUR,2025-12-09,0.7223,5.33,9.18,9.4799,6.91,7.29,30426933,221812341,1553.8 +AMCI,2025-12-09,0.327,7.8449,10.41,15.0,9.14,10.3,12640854,130200796,709.4 +VOR,2025-12-09,0.2626,8.36,10.555,12.82,8.9477,10.72,41895039,449114818,96.0 +MAMA,2025-12-09,0.2469,11.18,13.94,14.5,12.3175,14.32,3197482,45787942,12.8 +TROX,2025-12-09,0.2399,3.702,4.59,5.182,4.239,4.649,30114426,140001966,8.4 +DBI,2025-12-09,0.2289,4.767,5.858,7.126,5.72,7.077,11520294,81529120,18.6 +AFJK,2025-12-09,0.21,8.0,9.68,98.15,9.3765,88.5,6728517,595473754,1140.7 +SNTI,2025-12-09,0.1862,2.39,2.835,2.88,1.515,1.54,73591908,113331538,834.8 +ASPC,2025-12-10,1.4809,10.48,26.0,63.98,16.81,16.81,3186957,53572747,3060.0 +ENVB,2025-12-10,0.9696,5.92,11.66,13.25,8.6,10.33,35034700,361908451,870.7 +BBGI,2025-12-10,0.4938,4.05,6.05,26.37,5.67,16.69,45846411,765176599,5749.5 +CGTL,2025-12-10,0.4264,9.899,14.12,17.25,12.18,14.59,1659767,24216000,158.8 +NXDR,2025-12-10,0.3433,2.01,2.7,2.99,2.21,2.53,60151529,152183368,29.0 +MNTS,2025-12-10,0.2639,13.64,17.24,18.74,14.77,15.89,7944028,126230604,168.2 +VELO,2025-12-10,0.2155,6.59,8.01,9.25,6.8,8.6,4221568,36305484,8.4 +AHT,2025-12-10,0.212,3.16,3.83,4.67,3.825,4.55,5033613,22902939,127.4 +BTTC,2025-12-11,1.6998,3.315,8.95,10.0499,4.0,4.12,51592329,212560395,1717.4 +ATPC,2025-12-11,0.7529,3.4,5.96,9.185,4.64,8.995,15482336,139263612,26241.2 +AXIL,2025-12-11,0.6833,5.02,8.45,9.86,7.1,8.0,28587853,228702824,5152.4 +PETS,2025-12-11,0.4068,1.77,2.49,4.05,2.4,2.98,131268933,391181420,773.9 +BGDE,2025-12-11,0.2687,6.7,8.5,15.8,6.05,6.1,57960202,353557232,486.7 +PL,2025-12-11,0.2202,12.94,15.79,17.975,15.01,17.47,58974671,1030287502,8.2 +BQ,2025-12-11,0.19,2.0,2.38,2.6996,2.2,2.4,4185382,10044916,7.3 +NXDR,2025-12-11,0.166,2.53,2.95,3.72,2.7501,2.77,71476422,197989688,32.8 +MSOX,2025-12-12,0.7016,3.82,6.5,8.25,5.72,7.94,12064980,95795941,14.3 +KPLT,2025-12-12,0.4827,6.205,9.2,9.23,7.0,7.13,20772570,148108424,293.2 +TLRY,2025-12-12,0.3808,8.43,11.64,12.41,10.28,12.15,84198446,1023011118,18.5 +MSOS,2025-12-12,0.3457,3.76,5.06,5.99,4.7001,5.8,89236441,517571357,12.7 +NCI,2025-12-12,0.3387,9.92,13.28,15.36,11.76,15.36,4259137,65420344,2532.2 +NX,2025-12-12,0.3262,14.87,19.72,20.13,16.02,16.29,3440055,56038495,5.4 +WEED,2025-12-12,0.3067,16.27,21.26,25.66,20.11,25.325,229175,5803856,11.9 +JZXN,2025-12-12,0.286,5.63,7.24,7.96,2.5,2.7,10798147,29154996,361.1 +RADX,2025-12-15,2.2653,4.26,13.91,16.25,8.91,10.63,37694452,400692024,3714.8 +MASK,2025-12-15,0.6161,7.518,12.15,16.63,10.0,10.25,8183346,83879296,1617.1 +KYTX,2025-12-15,0.3895,8.78,12.2,13.67,10.4,10.82,19449405,210442562,42.3 +AMCI,2025-12-15,0.3358,2.71,3.62,9.1499,3.602,7.27,103787361,754534114,5824.4 +ARTV,2025-12-15,0.2394,3.3,4.09,7.25,4.08,6.3,47772206,300964897,286.8 +MIST,2025-12-15,0.2075,2.41,2.91,2.92,2.1,2.345,72304877,169554936,22.1 +GLSI,2025-12-15,0.205,10.73,12.93,14.1934,10.113,10.31,3998707,41226669,49.2 +IMNM,2025-12-15,0.1712,19.57,22.92,25.3,21.22,22.64,12946788,293115280,9.7 +SRXH,2025-12-16,1.3322,18.27,42.61,42.61,21.0,22.61,6312503,142725692,753.3 +RILYL,2025-12-16,0.7669,3.26,5.76,6.6319,4.8,6.2,1235088,7657545,243.3 +AMCI,2025-12-16,0.6479,7.27,11.98,15.09,11.05,14.65,77709681,1138446826,3932.1 +CPAC,2025-12-16,0.402,6.99,9.8,11.3,8.0,10.64,3340598,35543962,127.3 +AZI,2025-12-16,0.2987,15.4,20.0,22.6,16.0,18.7,3674102,68705707,120.0 +RZLV,2025-12-16,0.2909,2.32,2.995,3.24,2.72,2.97,75862553,225311782,5.8 +RILY,2025-12-16,0.2715,3.72,4.73,6.05,4.36,5.72,25221316,144265927,39.9 +VRA,2025-12-16,0.1284,1.83,2.065,2.265,2.06,2.17,2721631,5905939,4.3 +ATPC,2025-12-17,0.7033,4.5,7.665,8.355,6.365,7.04,7133231,50217946,9818.6 +DBVT,2025-12-17,0.4071,17.98,25.3,26.185,20.91,22.55,3951140,89098207,16.0 +BEAT,2025-12-17,0.1512,3.44,3.96,4.0,2.9,3.07,36223270,111205438,26.3 +MSOX,2025-12-17,0.1316,9.5,10.75,11.32,9.93,10.24,4339988,44441477,4.1 +AZI,2025-12-17,0.115,18.7,20.85,22.6,17.3,18.0,1503195,27057510,47.8 +PCSA,2025-12-17,0.1148,3.005,3.35,8.88,3.2801,6.68,39586243,264436103,845.9 +COUR,2025-12-17,0.1134,7.94,8.84,8.89,7.705,7.84,15587765,122208077,6.5 +TWO,2025-12-17,0.0934,9.047,9.892,10.26,9.796,10.14,22943068,232642709,19.1 +LONA,2025-12-18,0.7557,4.135,7.26,8.36,6.54,6.72,60468235,406346539,3438.8 +DJTWW,2025-12-18,0.5284,4.58,7.0,8.05,6.0001,7.62,660303,5031508,16.9 +SOC,2025-12-18,0.5246,5.28,8.05,9.47,7.85,8.25,50105367,413369277,8.3 +FLZH,2025-12-18,0.3676,7.4,10.12,12.15,8.25,8.778,7620264,66890677,417.3 +DJT,2025-12-18,0.2832,10.47,13.435,15.2,12.71,14.86,100543355,1494074255,23.2 +MUU,2025-12-18,0.2739,3.198,4.074,4.26,3.777,3.843,71891760,276280033,2.6 +MULL,2025-12-18,0.2731,2.303,2.932,3.068,2.719,2.769,22667425,62766099,3.1 +ISSC,2025-12-18,0.253,10.99,13.77,15.4,13.0,14.37,3265099,46919472,13.7 +AZI,2025-12-19,0.4474,15.2,22.0,32.5,20.8,25.0,8620330,215508250,256.5 +RDAC,2025-12-19,0.2512,10.39,13.0,14.1,9.001,10.41,1014326,10559133,100.5 +NRXS,2025-12-19,0.2118,2.88,3.49,3.7,2.96,3.22,15241281,49076924,309.5 +WYFI,2025-12-19,0.1888,14.3,17.0,17.5,15.35,16.74,5442143,91101473,5.4 +RENX,2025-12-19,0.1692,5.036,5.888,5.888,4.426,5.066,3865734,19583808,104.9 +MSOX,2025-12-19,0.1344,5.06,5.74,6.16,4.85,5.01,5228472,26194644,4.7 +DJTWW,2025-12-19,0.101,7.62,8.39,11.45,8.16,9.9399,789959,7852113,20.2 +LUNR,2025-12-19,0.0912,10.85,11.84,15.05,11.706,14.94,44085677,658640014,7.4 +HYMC,2025-12-22,0.275,16.42,20.935,26.25,20.15,24.52,20310236,498006986,12.5 +ADEA,2025-12-22,0.2681,12.72,16.13,17.17,15.54,16.6,3601697,59788170,4.9 +VELO,2025-12-22,0.1542,10.83,12.5,16.29,12.38,15.59,7091929,110563173,12.5 +SRFM,2025-12-22,0.1284,1.83,2.065,2.31,2.03,2.07,12464705,25801939,4.1 +WKEY,2025-12-22,0.125,7.6,8.55,9.73,8.41,9.08,711864,6463725,2.3 +KITT,2025-12-22,0.1203,6.95,7.786,8.16,7.152,7.152,1190613,8515264,9.3 +NFGC,2025-12-22,0.1191,2.77,3.1,3.305,2.99,3.18,5950758,18923410,3.9 +MENS,2025-12-22,0.0866,3.175,3.45,7.8199,3.26,4.78,21592164,103210543,106.2 +PCLA,2025-12-23,0.511,3.693,5.58,14.1,5.199,10.8,27398881,295907914,5295.0 +OPTX,2025-12-23,0.4239,1.97,2.805,3.54,2.41,2.49,94762293,235958109,883.4 +AIRE,2025-12-23,0.2586,11.6,14.6,15.02,12.0,12.68,2260483,28662924,16.6 +VBIO,2025-12-23,0.232,1.81,2.23,2.51,1.81,1.89,49330964,93235521,1631.6 +JFB,2025-12-23,0.1975,6.91,8.275,9.34,6.75,7.525,838916,6312842,10.1 +NVOX,2025-12-23,0.1896,19.73,23.47,23.9,22.15,22.6,3381911,76431188,1.6 +SOC,2025-12-23,0.1618,7.6,8.83,10.77,7.9,10.36,44939953,465577913,7.5 +BVC,2025-12-23,0.1146,9.6,10.7,18.2,10.0,15.3,2111644,32308153,562.9 +MWG,2025-12-24,1.3311,2.531,5.9,6.049,3.222,3.496,28528396,99735272,29655.3 +OMER,2025-12-24,0.8789,8.75,16.44,17.65,13.92,15.36,24509175,376460928,17.7 +INDP,2025-12-24,0.5256,1.95,2.975,3.15,2.32,2.65,27990850,74175752,815.3 +DRMA,2025-12-24,0.2328,2.04,2.515,2.69,2.22,2.37,20986232,49737369,418.7 +WLDS,2025-12-24,0.1825,12.33,14.58,15.39,11.25,11.7,1094909,12810435,38.3 +SIDU,2025-12-24,0.1515,1.65,1.9,2.36,1.8899,2.2,83738337,184224341,49.5 +AIRI,2025-12-24,0.0917,3.49,3.81,3.95,3.1,3.35,2883550,9659892,121.2 +SUPX,2025-12-24,0.0807,16.97,18.34,18.6375,15.745,17.98,371973,6688074,1.0 +ASPC,2025-12-26,0.6513,13.42,22.16,56.0,17.5,24.01,7435835,178534398,2298.9 +CANF,2025-12-26,0.5014,3.606,5.414,5.47,4.2,4.278,8814435,37708152,165.2 +PCLA,2025-12-26,0.4196,6.963,9.885,14.7,8.475,12.15,11502884,139760040,1935.9 +SIDU,2025-12-26,0.3636,2.2,3.0,3.38,1.765,1.93,200695710,387342720,113.3 +PBK,2025-12-26,0.125,2.0,2.25,2.25,1.86,1.91,6666935,12733845,16.3 +AMCI,2025-12-26,0.1016,9.35,10.3,11.93,8.147,8.73,20705531,180759285,412.1 +PPSI,2025-12-26,0.1012,4.05,4.46,4.95,4.4401,4.63,1413065,6542490,28.6 +GSIT,2025-12-26,0.0974,6.06,6.65,8.72,6.51,7.65,19529555,149401095,22.7 +MASK,2025-12-29,0.4083,4.575,6.443,7.323,5.613,6.515,6126791,39916043,939.4 +ANL,2025-12-29,0.2195,1.64,2.0,2.01,1.17,1.8,23639499,42551098,1466.1 +SIDU,2025-12-29,0.1503,1.93,2.22,2.73,2.2,2.57,113496718,291686565,62.3 +ORBS,2025-12-29,0.1411,1.665,1.9,2.5,1.83,1.835,29244310,53663308,10.6 +DBRG,2025-12-29,0.0979,13.89,15.25,15.29,15.22,15.23,86863660,1322933541,29.7 +GVH,2025-12-29,0.0962,2.6,2.85,4.9,2.85,3.56,18089897,64400033,871.8 +SUPX,2025-12-29,0.0872,14.9,16.2,16.21,14.51,14.51,461583,6697569,1.2 +PALI,2025-12-29,0.0837,2.15,2.33,2.57,2.29,2.48,13830373,34299325,3.0 +AMIX,2025-12-30,0.6165,11.24,18.17,18.82,10.83,12.18,6473839,78851359,464.2 +CHRN,2025-12-30,0.6026,5.46,8.75,12.7,7.8001,10.58,111142997,1175892908,2715.7 +AEHL,2025-12-30,0.5133,6.78,10.26,14.82,9.84,13.08,7856632,102764746,189.2 +DRMA,2025-12-30,0.2957,1.86,2.41,2.58,2.2,2.28,22451849,51190215,391.4 +FLYE,2025-12-30,0.281,5.285,6.77,7.94,6.2526,7.12,3803745,27082664,196.4 +GRI,2025-12-30,0.1799,6.941,8.19,8.985,7.372,7.79,1641901,12790408,61.5 +SIDU,2025-12-30,0.1459,2.57,2.945,3.08,2.51,2.67,84914537,226721813,42.5 +AISP,2025-12-30,0.0942,2.76,3.02,3.29,2.93,2.95,2786081,8218938,4.1 +ANGH,2025-12-31,0.7629,2.32,4.09,4.19,3.56,3.77,43264127,163105758,6447.2 +INBS,2025-12-31,0.4024,4.1,5.75,12.94,5.62,9.53,108426848,1033307861,7548.8 +DRCT,2025-12-31,0.373,13.27,18.22,18.22,13.86,14.17,956134,13548418,25.1 +ISPC,2025-12-31,0.2511,11.83,14.8,14.85,10.4,10.4,538405,5599412,91.0 +VNDA,2025-12-31,0.2134,7.03,8.53,9.6,8.5,8.82,23812449,210025800,16.7 +NEXR,2025-12-31,0.1846,10.51,12.45,12.74,11.06,11.51,504888,5811260,28.4 +XERS,2025-12-31,0.0793,7.31,7.89,8.2199,7.55,7.85,5331731,41854088,3.0 +IRWD,2026-01-02,0.3635,3.37,4.595,5.78,4.2,4.27,85044335,363139310,41.2 +DXF,2026-01-02,0.3399,1.53,2.05,2.34,1.82,2.12,5965027,12645857,235.3 +SOC,2026-01-02,0.1851,9.02,10.69,12.295,10.26,11.73,20002677,234631401,3.3 +SLS,2026-01-02,0.1804,3.77,4.45,4.66,3.96,4.35,30414024,132301004,5.3 +SIDU,2026-01-02,0.164,3.14,3.655,4.44,3.5,4.33,147053126,636740035,73.5 +KORU,2026-01-02,0.1126,9.078,10.1,10.47,10.07,10.42,3525460,36735293,2.3 +BEX,2026-01-02,0.0937,9.39,10.27,11.92,9.82,11.79,672852,7932925,1.1 +NEBX,2026-01-02,0.0851,9.4,10.2,11.01,9.957,10.84,2226693,24137352,0.8 +MNTS,2026-01-05,0.7247,5.74,9.9,11.6999,7.15,8.82,68776519,606608897,212.4 +MOBX,2026-01-05,0.4704,2.7,3.97,4.039,3.018,3.281,19547876,64136581,183.0 +GHRS,2026-01-05,0.4211,13.24,18.8159,19.0,15.0,15.46,5554418,85871302,25.4 +MKDW,2026-01-05,0.3048,4.95,6.459,6.471,4.44,4.956,2774933,13752567,338.1 +SOWG,2026-01-05,0.2494,5.157,6.443,7.371,5.298,6.975,2583103,18017143,580.2 +MASK,2026-01-05,0.2349,6.3,7.78,8.403,7.225,8.185,2784242,22789020,150.1 +SLAI,2026-01-05,0.2327,4.543,5.6,7.07,4.617,5.895,1214322,7158428,83.6 +TENX,2026-01-05,0.2027,11.05,13.29,13.85,11.76,12.32,634626,7818592,3.6 +ALMS,2026-01-06,1.6715,8.31,22.2,22.3,15.27,16.23,65139559,1057215042,61.8 +WVE,2026-01-06,0.27,15.0,19.05,19.5,15.12,15.15,15042438,227892935,5.3 +AEVA,2026-01-06,0.2574,13.09,16.46,18.43,15.18,17.59,21602394,379986110,14.3 +IMSR,2026-01-06,0.2353,6.99,8.635,9.2599,8.16,9.11,21887760,199397493,13.1 +IBIO,2026-01-06,0.1968,1.88,2.25,2.68,2.04,2.06,18371709,37845720,13.9 +NBP,2026-01-06,0.1819,4.37,5.165,5.19,3.805,3.88,3113155,12079041,6.5 +BNAI,2026-01-06,0.1506,3.62,4.165,4.9099,4.07,4.67,16149986,75420434,89.3 +ARVN,2026-01-06,0.1406,11.17,12.74,12.74,11.585,11.83,837805,9911233,0.9 +GLUE,2026-01-07,0.3685,16.01,21.91,25.15,21.11,23.28,23208664,540297697,28.1 +AMOD,2026-01-07,0.361,19.64,26.73,30.0,24.12,26.16,1830141,47876488,582.6 +SKYQ,2026-01-07,0.1997,4.668,5.6,6.689,5.072,5.502,5878914,32345784,264.1 +MNTS,2026-01-07,0.1902,9.83,11.7,15.9799,10.86,13.9,25697184,357190857,66.1 +MASK,2026-01-07,0.1635,10.52,12.24,12.87,10.08,11.16,878917,9808713,37.0 +MBLY,2026-01-07,0.1568,12.18,14.09,14.33,12.1,12.24,51469705,629989189,11.0 +NMRA,2026-01-07,0.1429,1.82,2.08,2.54,2.05,2.29,13549728,31028877,16.4 +ACRV,2026-01-07,0.0997,3.01,3.31,3.56,2.86,2.95,3058180,9021631,8.2 +FLYX,2026-01-08,0.9363,3.14,6.08,8.88,5.73,7.23,115470732,834853392,8567.0 +MLTX,2026-01-08,0.434,11.29,16.19,16.39,13.7101,14.34,24534578,351825848,14.9 +ACON,2026-01-08,0.42,5.75,8.165,9.36,7.29,8.17,43400418,354581415,601.6 +JTAI,2026-01-08,0.3955,10.62,14.82,21.8,13.11,13.73,1619372,22233977,1813.4 +ASPC,2026-01-08,0.3617,16.34,22.25,23.5,19.208,21.37,1141509,24394047,14.7 +NEOG,2026-01-08,0.252,7.38,9.24,10.24,9.115,9.71,22996919,223300083,7.1 +BEX,2026-01-08,0.2372,14.21,17.58,19.44,16.45,17.85,1512999,27007032,2.4 +VNRX,2026-01-08,0.2216,5.714,6.98,7.724,6.5,7.096,748620,5312207,10.1 +OPAD,2026-01-09,0.5329,15.2,23.3,26.7,21.1,21.9,11823388,258932197,141.8 +RENX,2026-01-09,0.3664,3.876,5.296,5.678,4.234,4.38,10184226,44606909,129.0 +BLNE,2026-01-09,0.208,1.755,2.12,2.33,1.9905,2.05,2858473,5859869,5.0 +AMIX,2026-01-09,0.1711,10.46,12.25,13.41,10.08,10.76,2052674,22086772,147.2 +LDI,2026-01-09,0.1516,2.44,2.81,3.135,2.795,2.91,16312241,47468621,4.5 +KUST,2026-01-09,0.1514,14.2,16.35,16.5,12.1,12.95,1141742,14785558,138.4 +ICON,2026-01-09,0.1398,3.22,3.67,3.7,2.85,3.12,7599998,23711993,274.4 +ASPI,2026-01-09,0.1273,6.44,7.26,8.08,7.26,7.51,19154904,143853329,4.1 +OM,2026-01-12,0.4232,4.56,6.49,6.49,5.22,5.57,25305912,140953929,57.6 +SOGP,2026-01-12,0.3195,10.86,14.33,17.19,12.17,13.73,2538647,34855623,121.8 +INBS,2026-01-12,0.2835,17.92,23.0,24.9,13.61,15.26,4774178,72853956,119.3 +BDSX,2026-01-12,0.2811,5.46,6.995,9.83,6.9401,8.08,75528666,610271621,1727.7 +UP,2026-01-12,0.2648,13.52,17.1,23.4,16.01,19.82,4124239,81742416,26.7 +BARK,2026-01-12,0.2587,12.37,15.57,16.49,15.22,15.55,707746,11005450,16.0 +RXST,2026-01-12,0.1652,8.84,10.3,10.9555,9.74,10.09,1560853,15749006,2.1 +KC,2026-01-12,0.157,11.02,12.75,13.66,12.65,13.4,4991767,66889677,5.2 +AHMA,2026-01-13,1.1534,5.28,11.37,13.83,8.82,12.34,43801938,540515914,326.0 +XAIR,2026-01-13,0.8721,17.52,32.8,53.2,27.4,43.8,20430275,894846045,2841.5 +DCOY,2026-01-13,0.6564,9.78,16.2,16.92,12.84,15.0,9067572,136013580,360.3 +BCTX,2026-01-13,0.5654,7.64,11.96,12.1,9.0616,10.92,7417629,81000508,112.1 +AZIO,2026-01-13,0.3267,2.51,3.33,4.91,2.62,3.52,287087691,1010548672,908.0 +XTLB,2026-01-13,0.2694,2.732,3.468,5.64,3.0,4.28,9267213,39663671,2015.9 +WATT,2026-01-13,0.2351,5.53,6.83,8.2,4.8,5.19,5922801,30739337,119.7 +IOTR,2026-01-13,0.2337,2.61,3.22,4.1,3.04,3.97,23324674,92598955,1382.9 +ROLR,2026-01-14,3.4034,3.52,15.5,33.68,12.33,18.89,82490865,1558252439,1243.1 +BEEM,2026-01-14,0.2429,1.77,2.2,2.31,1.8,1.87,58570790,109527377,328.6 +AIFC,2026-01-14,0.1934,1.81,2.16,2.4,2.05,2.37,22005977,52154165,5.9 +KULR,2026-01-14,0.1594,3.45,4.0,4.31,3.68,4.05,18724209,75833046,13.4 +GSIT,2026-01-14,0.1536,7.68,8.86,8.898,6.9,7.41,7213991,53455673,6.8 +SXTC,2026-01-14,0.14,15.0,17.1,17.1,14.1,14.44,380389,5492817,2641.6 +AGIG,2026-01-14,0.1211,3.22,3.61,4.1299,3.25,3.45,4342053,14980082,11.5 +BNAI,2026-01-14,0.0886,3.61,3.93,6.75,3.88,5.8,46841270,271679366,149.4 +SPHL,2026-01-15,2.4756,2.25,7.82,25.11,6.08,17.41,113124978,1969505866,2422.3 +ATPC,2026-01-15,0.7,3.5,5.95,7.295,5.215,5.46,10180132,55583520,58.0 +BNKK,2026-01-15,0.4928,2.78,4.15,5.05,3.62,3.96,74694723,295791103,360.0 +RILY,2026-01-15,0.3318,7.54,10.042,10.97,9.14,9.5,17933886,170371917,22.5 +RFIL,2026-01-15,0.258,7.21,9.07,9.29,8.54,8.84,1401114,12385847,23.3 +ROLR,2026-01-15,0.2096,18.89,22.85,29.5,20.5,23.75,23390880,555533400,320.9 +AGPU,2026-01-15,0.1982,6.8601,8.22,9.0,6.51,7.08,3864602,27361382,79.9 +GLXU,2026-01-15,0.137,16.2,18.42,21.6787,17.1,20.67,455227,9409542,4.6 +NEXR,2026-01-16,1.2043,7.812,17.22,27.44,15.4,18.06,16794195,303303161,847.4 +LCFY,2026-01-16,0.8562,3.13,5.81,6.2,3.99,4.55,42688141,194231041,6111.0 +ACCL,2026-01-16,0.4482,2.99,4.33,4.63,2.46,2.5,24515428,61288570,825.1 +SVRE,2026-01-16,0.3611,5.76,7.84,7.84,6.44,6.68,10028377,66989558,382.2 +SOWG,2026-01-16,0.2517,11.96,14.97,15.9,12.81,14.55,1014073,14754762,120.2 +TNMG,2026-01-16,0.2458,2.36,2.94,4.68,2.86,3.91,27761250,108546487,532.9 +BNAI,2026-01-16,0.2102,5.71,6.91,7.43,5.69,6.35,4451791,28268872,13.5 +PTLE,2026-01-16,0.2014,8.64,10.38,12.0,9.4,10.42,2018906,21037000,212.0 +IVF,2026-01-20,3.1187,4.062,16.73,22.9,11.65,11.85,53159237,629936958,2021.1 +TWG,2026-01-20,1.2989,3.48,8.0,8.18,4.68,5.37,49362299,265075545,443.1 +CRVS,2026-01-20,0.6783,8.05,13.51,22.1,12.6901,21.41,83969882,1797795173,54.4 +BTTC,2026-01-20,0.6176,1.7,2.75,3.32,2.25,2.39,73175292,174888947,526.0 +CCHH,2026-01-20,0.5058,4.46,6.716,8.5,5.6,5.729,8040814,46065823,187.5 +ICON,2026-01-20,0.3918,1.94,2.7,3.1,2.15,2.31,26922287,62190482,888.2 +POLA,2026-01-20,0.256,1.68,2.11,3.74,2.0809,2.37,69990904,165878442,3016.3 +TII,2026-01-20,0.2113,4.07,4.93,5.3,4.57,4.86,3592788,17460949,30.4 +PAVM,2026-01-21,1.9063,6.19,17.99,28.44,11.58,12.05,55328904,666713293,3153.5 +LSTA,2026-01-21,0.8472,2.16,3.99,4.17,3.98,4.03,4961956,19996682,140.2 +BOXL,2026-01-21,0.744,7.5,13.08,15.18,10.56,10.92,18691319,204109203,522.0 +BNAI,2026-01-21,0.4732,6.15,9.06,11.38,7.81,8.7,48526163,422177618,89.9 +MLEC,2026-01-21,0.3941,4.39,6.12,7.79,4.62,6.48,5677719,36791619,180.2 +SEGG,2026-01-21,0.2033,1.82,2.19,2.74,1.92,2.21,41908566,92617930,292.0 +AQMS,2026-01-21,0.1266,6.16,6.94,7.65,5.54,5.77,11855763,68407752,110.8 +TII,2026-01-21,0.1091,4.86,5.39,5.65,5.05,5.14,3157158,16227792,24.9 +SXTP,2026-01-22,1.995,2.0,5.99,8.62,4.4,5.04,195633732,985994009,2784.4 +IOTR,2026-01-22,1.2457,2.93,6.58,7.47,4.51,5.1,53553412,273122401,2308.9 +PSQH,2026-01-22,0.2745,15.3,19.5,19.95,15.6,16.5,3640028,60060462,143.3 +ROLR,2026-01-22,0.2462,7.88,9.82,11.75,9.03,10.06,7638441,76842716,91.1 +IMSRW,2026-01-22,0.1791,5.08,5.99,6.51,5.56,6.24,1021452,6373860,11.6 +CABA,2026-01-22,0.1645,2.34,2.725,3.25,2.63,2.94,29900112,87906329,16.7 +NXTS,2026-01-22,0.1636,11.55,13.44,14.21,10.57,12.67,6534383,82790632,2303.3 +SPHL,2026-01-22,0.1309,5.73,6.48,10.5,5.83,6.94,3836849,26627732,82.2 +MOVE,2026-01-23,1.8891,5.133,14.83,17.6,11.05,12.33,57840043,713167730,1299.3 +DRCT,2026-01-23,1.355,9.24,21.76,24.16,14.32,16.44,28425458,467314529,364.9 +KUST,2026-01-23,0.7108,10.2,17.45,22.4,12.85,13.1,22840847,299215095,1739.6 +RTB,2026-01-23,0.4027,5.24,7.35,8.5499,6.06,6.31,12840973,81026539,184.8 +REVB,2026-01-23,0.2639,3.418,4.32,5.8,2.398,2.584,23169474,59869920,898.1 +SLE,2026-01-23,0.2543,6.362,7.98,9.0,4.66,5.9,5977918,35269716,293.8 +BGL,2026-01-23,0.2535,4.26,5.34,5.8694,3.74,4.13,24150699,99742386,90.3 +DGNX,2026-01-23,0.2444,10.8,13.44,13.6,9.36,9.92,4579764,45431258,27.0 +BNAI,2026-01-26,2.3468,16.48,55.155,67.63,26.33,62.08,33526085,2081299356,30.7 +NAMM,2026-01-26,0.4968,3.1,4.64,5.59,3.89,4.07,66813366,271930399,445.5 +AZIO,2026-01-26,0.4639,1.94,2.84,3.04,2.41,2.615,77399075,202398581,34.2 +ABOS,2026-01-26,0.2172,1.98,2.41,3.01,2.01,2.08,12221745,25421229,66.7 +LE,2026-01-26,0.1982,14.05,16.835,20.04,16.64,18.76,2537940,47611754,18.2 +CRWU,2026-01-26,0.1907,8.13,9.68,10.84,9.02,9.06,2833173,25668547,1.9 +PLG,2026-01-26,0.1556,3.47,4.01,4.04,3.31,3.37,16161529,54464352,3.3 +GLDG,2026-01-26,0.1526,1.9,2.19,2.27,2.07,2.14,17222107,36855308,6.3 +IVF,2026-01-27,0.595,6.05,9.65,10.7,7.35,8.575,13149013,112752786,499.9 +PHGE,2026-01-27,0.4366,4.1,5.89,7.95,5.74,6.95,37738208,262280545,626.5 +CYN,2026-01-27,0.3221,2.08,2.75,2.76,1.95,2.02,79412126,160412494,407.2 +NAMM,2026-01-27,0.2801,4.07,5.21,5.21,4.07,4.71,22102490,104102727,123.4 +SXTC,2026-01-27,0.2238,12.33,15.09,20.1,12.48,15.29,981359,15004979,394.4 +NTLA,2026-01-27,0.1835,13.95,16.51,17.09,14.2,14.83,15000384,222455694,2.8 +HIND,2026-01-27,0.1704,3.11,3.64,3.89,2.65,3.26,44197610,144084208,1678.3 +BZAI,2026-01-27,0.1552,1.74,2.01,2.1,1.81,2.02,25823071,52162603,17.5 +PDYN,2026-01-28,0.4617,6.52,9.53,9.57,7.36,7.43,70366460,522822797,38.7 +KUST,2026-01-28,0.1991,10.55,12.65,12.65,10.5,10.5,2306840,24221820,91.6 +AIMD,2026-01-28,0.1919,1.72,2.05,2.46,1.94,2.13,34376048,73220982,1799.2 +SUPX,2026-01-28,0.1851,16.59,19.66,21.99,16.825,17.52,1332270,23341370,4.0 +LTRX,2026-01-28,0.18,6.89,8.13,8.24,6.909,7.16,8071891,57794739,13.0 +GRI,2026-01-28,0.1673,5.32,6.21,6.7,3.8701,4.11,12667567,52063700,187.2 +TRX,2026-01-28,0.1645,1.52,1.77,1.94,1.68,1.93,29523724,56980787,15.5 +PURR,2026-01-28,0.1517,4.35,5.01,5.12,4.32,4.65,5834948,27132508,4.3 +XHLD,2026-01-29,0.6745,2.55,4.27,4.54,2.65,3.17,41199653,130602900,426.5 +ZSTK,2026-01-29,0.419,8.95,12.7,15.041,9.02,11.8,1706458,20136204,84.7 +SER,2026-01-29,0.4118,2.72,3.84,4.08,3.41,3.54,66373479,234962115,2072.0 +HCTI,2026-01-29,0.3131,18.08,23.74,24.05,16.2,18.17,2134572,38785173,114.1 +DCX,2026-01-29,0.281,3.06,3.92,5.07,3.8714,4.11,29879152,122803314,1084.9 +KRRO,2026-01-29,0.266,11.69,14.8,14.944,13.0054,13.31,1208598,16086439,6.5 +VENU,2026-01-29,0.2529,5.14,6.44,6.68,5.25,5.56,2070316,11510956,17.8 +TRX,2026-01-29,0.2435,1.93,2.4,2.8,1.965,2.18,63839531,139170177,33.4 +VIVS,2026-01-30,0.7353,1.7,2.95,3.4,2.64,2.92,72375231,211335674,2868.2 +PMN,2026-01-30,0.5577,12.005,18.7,19.85,12.76,14.16,7933575,112339422,457.7 +ANL,2026-01-30,0.3966,6.53,9.12,11.05,6.58,10.63,7668000,81510840,95.0 +ZSL,2026-01-30,0.3291,15.8,21.0,28.0,20.1,23.6,100224405,2365295958,6.7 +OCG,2026-01-30,0.2704,4.05,5.145,6.36,4.444,4.86,3091592,15025137,7.5 +CISS,2026-01-30,0.2639,10.08,12.74,16.17,9.415,12.81,4115170,52715327,331.9 +SPHL,2026-01-30,0.175,4.0,4.7,5.4,4.01,4.48,1969247,8822226,35.2 +GITS,2026-01-30,0.1582,3.35,3.88,6.7499,3.45,3.77,16362520,61686700,283.6 +DKI,2026-02-02,2.5435,5.328,18.88,19.04,9.923,15.2,13286861,201960287,2015.8 +SXTC,2026-02-02,1.1742,4.65,10.11,11.16,5.775,6.465,4562020,29493459,96.5 +FUSE,2026-02-02,0.4494,1.58,2.29,3.67,2.26,2.7,198065120,534775824,5456.2 +CISS,2026-02-02,0.3716,12.81,17.57,20.09,11.2,13.65,5974575,81552948,284.3 +KOLD,2026-02-02,0.3689,13.58,18.59,21.11,18.41,20.17,43791732,883279234,9.1 +AQST,2026-02-02,0.3559,2.95,4.0,4.39,3.79,4.1,61083859,250443821,17.9 +SWVL,2026-02-02,0.3094,1.81,2.37,2.45,1.96,2.14,43019404,92061524,3766.7 +YJ,2026-02-02,0.1824,1.59,1.88,2.33,1.62,1.85,8847970,16368744,1972.6 +FATN,2026-02-03,0.7147,1.84,3.155,3.23,2.6,2.6,57151059,148592753,1427.2 +NPT,2026-02-03,0.4158,5.7,8.07,13.48,5.58,7.2,35997510,259182072,1314.3 +PTIR,2026-02-03,0.23,18.09,22.25,22.25,19.36,20.53,15752240,323393487,5.5 +PLTG,2026-02-03,0.2222,17.78,21.73,21.73,18.9,20.34,1178355,23967740,7.1 +FIEE,2026-02-03,0.2016,5.16,6.2,6.38,4.26,4.48,2646666,11857063,51.0 +CYN,2026-02-03,0.1737,1.67,1.96,2.0999,1.82,1.96,53553853,104965551,205.4 +SHNY,2026-02-03,0.1736,15.15,17.78,18.43,17.38,17.91,3062120,54842569,2.6 +WULF,2026-02-03,0.1213,13.44,15.07,15.6,13.65,14.8,63676750,942415900,2.9 +MOBX,2026-02-04,0.7266,1.829,3.158,3.372,2.112,2.31,42271040,97646102,97.1 +BYAH,2026-02-04,0.4956,3.935,5.885,6.89,4.075,5.0,11362901,56814505,2881.8 +YOOV,2026-02-04,0.3796,2.7,3.725,3.7606,2.5,2.62,15901185,41661104,1017.8 +FEED,2026-02-04,0.3476,2.46,3.315,3.69,2.64,3.12,43272314,135009619,139.0 +BOXL,2026-02-04,0.3178,7.74,10.2,14.22,9.6,12.12,28904136,350318128,333.1 +DAMD,2026-02-04,0.2227,18.05,22.07,24.4,21.59,24.3,682489,16584482,5.4 +EGHT,2026-02-04,0.2048,1.66,2.0,2.625,1.9,2.44,26745999,65260237,36.7 +APPS,2026-02-04,0.1943,4.94,5.9,6.19,4.61,4.69,14993409,70319088,7.1 +KELYB,2026-02-05,4.5509,10.71,59.45,123.85,26.26,37.61,2035645,76560608,6535.0 +RNAZ,2026-02-05,0.3695,8.58,11.75,12.3,9.08,9.97,11718481,116833255,547.2 +DHX,2026-02-05,0.3072,1.66,2.17,2.2,1.81,1.92,8545480,16407321,45.2 +CISS,2026-02-05,0.3026,10.64,13.86,17.01,13.3,13.72,10194047,139862324,307.5 +BYRN,2026-02-05,0.1367,12.22,13.89,13.948,11.13,13.16,1913916,25187134,4.1 +EMBC,2026-02-05,0.1112,11.15,12.39,13.21,9.738,10.29,1649586,16974239,3.1 +BTCZ,2026-02-05,0.0922,5.64,6.16,7.34,6.03,7.13,31057044,221436723,1.6 +PPCB,2026-02-05,0.0817,4.775,5.165,5.685,3.887,5.047,1700298,8581404,200.3 +LBTYB,2026-02-06,1.4115,12.03,29.01,29.01,17.0,18.01,2519807,45381724,5519.8 +CCHH,2026-02-06,0.6943,3.811,6.457,7.172,5.294,5.74,12271423,70437968,329.5 +FLYE,2026-02-06,0.3759,4.31,5.93,6.47,2.73,3.46,15217209,52651543,742.2 +UXRP,2026-02-06,0.3692,16.25,22.25,25.74,22.25,23.1,363893,8405928,5.0 +RDIB,2026-02-06,0.3583,12.0,16.3,17.4,11.8,13.46,1172270,15778754,311.3 +XRP,2026-02-06,0.2923,13.31,17.2,17.26,16.06,16.23,1764416,28636471,3.3 +QNST,2026-02-06,0.264,11.06,13.98,14.4,12.0,12.24,2528318,30946612,4.7 +RBLU,2026-02-06,0.2565,14.93,18.76,19.23,14.8801,17.92,731009,13099681,5.2 +MIMI,2026-02-09,0.4381,2.57,3.696,4.303,3.101,3.523,14226560,50120170,397.0 +EZRA,2026-02-09,0.363,6.48,8.832,11.66,7.48,10.08,9558079,96345436,655.2 +CCHH,2026-02-09,0.281,5.74,7.353,14.5,7.01,13.5,17725087,239288674,438.7 +MNTS,2026-02-09,0.2467,6.0,7.48,8.0,6.4,6.44,32748679,210901492,36.1 +PLBY,2026-02-09,0.2075,1.59,1.92,2.255,1.9,2.12,20047085,42499820,56.2 +KOLD,2026-02-09,0.1509,18.23,20.98,21.25,20.1401,21.08,13682530,288427732,1.5 +QS,2026-02-09,0.111,8.47,9.41,9.47,8.9,9.17,27684386,253865819,2.0 +NVOX,2026-02-09,0.104,17.59,19.42,20.08,18.57,18.85,1001398,18876352,1.5 +EVMN,2026-02-10,0.7375,16.99,29.52,33.2,21.8,29.03,15984311,464024548,60.4 +CRDU,2026-02-10,0.2891,10.03,12.93,12.93,11.28,11.84,2649156,31366007,3.4 +ESOA,2026-02-10,0.2866,9.459,12.17,13.14,11.7,12.62,1492066,18829872,11.8 +SPOG,2026-02-10,0.2436,6.0147,7.48,8.3199,7.3826,7.83,1282600,10042758,71.6 +VSTS,2026-02-10,0.2281,7.32,8.99,9.7999,8.49,8.5,7983931,67863413,4.4 +STRO,2026-02-10,0.2167,13.98,17.01,17.8005,15.0,15.64,559308,8747577,5.5 +LUXE,2026-02-10,0.1643,7.73,9.0,9.44,8.69,9.36,1253753,11735128,5.0 +DDL,2026-02-10,0.1587,2.71,3.14,3.19,2.85,2.92,13598649,39708055,7.2 +RENX,2026-02-11,1.0471,2.8,5.732,7.0,4.102,4.244,41803770,177415199,272.1 +MNTN,2026-02-11,0.4145,8.13,11.5,11.75,10.27,11.15,9320238,103920653,16.7 +NETG,2026-02-11,0.2429,9.969,12.39,12.51,10.58,10.96,575673,6309376,80.6 +ELAB,2026-02-11,0.2427,10.26,12.75,13.68,9.24,10.2,5005460,51055692,100.1 +CCHH,2026-02-11,0.2353,11.9,14.7,17.9,10.0,10.6,2785763,29529087,65.5 +PRFX,2026-02-11,0.2305,2.95,3.63,3.71,2.57,3.2,11325645,36242064,235.4 +BETA,2026-02-11,0.1914,16.77,19.98,20.8999,18.13,19.39,4346047,84269851,5.1 +SHPU,2026-02-11,0.1768,16.97,19.97,19.97,12.28,14.67,1195028,17531060,33.3 +FSLY,2026-02-12,0.449,9.31,13.49,17.8599,13.38,16.04,116491671,1868526402,35.4 +PMI,2026-02-12,0.4286,1.61,2.3,2.5,1.3,1.59,34833296,55384940,255.3 +NVCR,2026-02-12,0.3714,10.5,14.4,14.97,12.0128,12.53,16691120,209139733,12.6 +LHSW,2026-02-12,0.3526,3.077,4.162,4.48,3.232,3.874,6397007,24782005,837.3 +PRCH,2026-02-12,0.2339,7.59,9.365,9.75,8.21,8.54,5243697,44781172,3.7 +MH,2026-02-12,0.2115,12.34,14.95,15.9,14.24,14.31,4079182,58373094,6.4 +ISSC,2026-02-12,0.2065,18.98,22.9,23.8,20.645,20.77,880450,18286946,2.0 +STFS,2026-02-12,0.1774,4.352,5.124,5.132,4.336,4.46,1494862,6667084,35.8 +MLEC,2026-02-13,1.1902,5.1,11.17,12.2299,8.12,8.63,50594663,436631941,888.4 +MIMI,2026-02-13,0.7086,2.8,4.784,4.784,3.2,3.869,8603244,33285951,233.1 +CRSR,2026-02-13,0.4148,4.58,6.48,7.68,6.43,6.79,46841748,318055468,42.8 +IMUX,2026-02-13,0.2987,8.701,11.3,12.0,9.1,9.125,6441347,58777291,45.0 +RIVN,2026-02-13,0.2693,14.0,17.77,18.48,16.4,17.73,127927317,2268151330,4.4 +CONL,2026-02-13,0.1777,5.15,6.065,7.08,5.515,6.83,39290769,268355952,5.1 +ATOM,2026-02-13,0.1632,2.39,2.78,4.02,2.6682,3.92,28260518,110781230,59.4 +RDTL,2026-02-13,0.1482,14.91,17.12,17.25,15.8901,16.87,759687,12815919,2.3 +CMPS,2026-02-17,0.3477,5.81,7.83,8.7951,7.31,7.63,35093188,267761024,27.5 +FRGT,2026-02-17,0.3061,7.35,9.6,10.8,6.05,6.7,2050892,13740976,85.7 +RIME,2026-02-17,0.2989,3.48,4.52,4.58,2.52,2.58,80932710,208806391,143.3 +LFS,2026-02-17,0.2314,2.42,2.98,3.7299,2.98,3.3,22173580,73172814,843.2 +SUNE,2026-02-17,0.1927,2.05,2.445,2.73,1.97,2.0,13964422,27928844,130.8 +JFB,2026-02-17,0.172,14.94,17.51,17.55,6.58,8.5,1926910,16378735,16.9 +ERNA,2026-02-17,0.1641,8.075,9.4,10.05,8.25,8.253,1210266,9988325,273.6 +NCI,2026-02-17,0.1506,19.12,22.0,24.88,14.88,23.6,253230,5976228,113.9 +FTH,2026-02-18,2.0668,9.13,28.0,31.94,22.07,26.25,12540600,329190750,305.7 +AUUD,2026-02-18,0.7128,6.428,11.01,11.47,7.777,8.778,13770641,120878686,1296.3 +MNDR,2026-02-18,0.2614,5.28,6.66,6.72,4.894,5.808,2648528,15382650,139.0 +LRHC,2026-02-18,0.2552,14.5,18.2,19.8,13.0,13.2,5074932,66989102,144.3 +BENF,2026-02-18,0.2251,3.82,4.68,5.29,4.06,4.15,18792256,77987862,544.3 +RSI,2026-02-18,0.2001,16.94,20.33,20.4,17.8,18.18,5821578,105836288,2.8 +RENX,2026-02-18,0.1542,2.736,3.158,4.6,3.098,3.964,13610354,53951443,55.6 +QMCO,2026-02-18,0.1444,5.61,6.42,6.45,5.43,5.47,1576574,8623859,3.1 +DGNX,2026-02-19,0.299,6.0,7.794,7.794,6.459,6.8,1761305,11976874,3.8 +AIFA,2026-02-19,0.2676,1.835,2.326,3.533,2.252,2.333,36267404,84611853,443.6 +CDIO,2026-02-19,0.2394,2.13,2.64,2.69,2.0701,2.24,22411793,50202416,216.0 +BOXL,2026-02-19,0.2154,7.8,9.48,11.28,8.34,8.58,5249019,45036583,43.6 +RELY,2026-02-19,0.2013,13.61,16.35,17.8786,16.03,17.14,22866103,391925005,7.5 +NP,2026-02-19,0.1942,18.13,21.65,22.73,20.2,20.44,757842,15490290,2.3 +BAND,2026-02-19,0.1732,12.99,15.24,16.58,14.46,14.54,1518519,22079266,6.2 +TALK,2026-02-19,0.1578,3.93,4.55,5.13,4.43,4.83,10015954,48377057,6.6 +AIOS,2026-02-20,0.4,9.0,12.6,14.17,10.65,12.34,3681221,45426267,1737.7 +CDIO,2026-02-20,0.3571,2.24,3.04,3.48,2.49,2.88,76561969,220498470,737.7 +TNDM,2026-02-20,0.2283,18.52,22.748,26.21,22.0,24.57,12698964,312013545,10.6 +OPEN,2026-02-20,0.1828,4.65,5.5,5.59,4.74,5.0,132316826,661584130,2.7 +ANPA,2026-02-20,0.1609,11.19,12.99,14.0,9.1,9.32,2970248,27682711,22.9 +CMRC,2026-02-20,0.1497,2.94,3.38,3.45,3.005,3.02,2000168,6040507,1.9 +INDI,2026-02-20,0.1195,3.43,3.84,3.9,3.41,3.63,9709871,35246831,3.3 +JAKK,2026-02-20,0.1194,17.76,19.88,23.08,19.73,21.97,756183,16613340,7.6 +VNDA,2026-02-23,0.3967,5.76,8.045,9.09,7.8,8.15,48056294,391658796,48.2 +EZRA,2026-02-23,0.2126,7.3,8.852,11.4,8.032,10.44,4489508,46870463,89.6 +LEGN,2026-02-23,0.1628,18.12,21.07,21.58,18.94,19.75,6195648,122364048,2.6 +RXT,2026-02-23,0.1518,1.68,1.935,1.95,1.48,1.49,95832835,142790924,44.9 +IBRX,2026-02-23,0.1437,8.7,9.95,11.0,9.55,9.83,86450382,849807255,2.5 +FBIO,2026-02-23,0.131,3.36,3.8,4.22,3.32,3.45,16599943,57269803,31.2 +YMAT,2026-02-23,0.1266,1.864,2.1,3.591,1.892,2.965,14353702,42558726,2205.2 +IKT,2026-02-23,0.125,1.76,1.98,2.11,1.75,1.8,41817966,75272338,73.7 +TLIH,2026-02-24,0.6016,3.18,5.093,5.3,3.812,4.38,10817069,47378762,1369.9 +VIR,2026-02-24,0.3237,7.43,9.835,10.29,8.95,9.49,38366397,364097107,22.2 +LRMR,2026-02-24,0.2776,2.81,3.59,4.01,3.55,3.69,70425024,259868338,79.4 +CLVT,2026-02-24,0.2738,1.68,2.14,2.39,2.1,2.35,45044670,105854974,6.5 +MYGN,2026-02-24,0.2717,4.38,5.57,5.71,4.38,4.43,5267831,23336491,5.3 +RIME,2026-02-24,0.2663,1.84,2.33,2.67,2.12,2.18,42291915,92196374,68.1 +SILO,2026-02-24,0.2003,4.218,5.063,5.231,4.517,5.231,1915803,10021565,271.4 +EZRA,2026-02-24,0.1983,10.44,12.51,17.2,10.0,11.63,6287745,73126474,110.1 +CRCG,2026-02-25,0.4101,13.9,19.6,23.9,18.45,23.9,5674474,135619928,6.6 +CCUP,2026-02-25,0.3898,2.36,3.28,4.04,3.115,4.04,13706989,55376235,11.2 +MIMI,2026-02-25,0.3458,3.3,4.441,4.803,3.33,3.85,3983568,15336736,111.2 +RETO,2026-02-25,0.2453,2.666,3.32,3.461,2.96,3.344,5172724,17297589,185.9 +UIS,2026-02-25,0.2183,2.13,2.595,2.645,2.35,2.46,3889595,9568403,4.8 +SGML,2026-02-25,0.1833,12.6,14.91,16.88,14.4,16.37,18056318,295581925,4.8 +ACHC,2026-02-25,0.1826,17.17,20.305,21.98,20.305,20.84,11697381,243773420,3.5 +FRGT,2026-02-25,0.1803,6.1,7.2,7.3,5.65,5.9,2597553,15325562,78.3 +SMJF,2026-02-26,0.4788,1.65,2.44,2.49,1.67,2.0,8485106,16970212,27.4 +AEHL,2026-02-26,0.4239,3.102,4.417,10.44,3.821,6.48,38454013,249182004,869.0 +HCTI,2026-02-26,0.4079,5.81,8.18,8.85,4.78,5.02,14435193,72464668,140.3 +IONL,2026-02-26,0.3181,15.97,21.05,23.7,20.82,22.67,2097951,47560549,4.9 +BFLY,2026-02-26,0.2919,3.1,4.005,4.96,3.93,4.67,64630226,301823155,13.9 +ARHS,2026-02-26,0.2585,7.986,10.05,10.1,8.382,8.825,3841104,33897742,3.7 +DNUT,2026-02-26,0.2258,2.99,3.665,4.13,3.64,3.82,19101302,72966973,10.0 +FA,2026-02-26,0.2164,9.52,11.58,11.97,10.36,11.69,4516723,52800491,4.4 +KORE,2026-02-27,0.7904,5.01,8.97,8.98,8.94,8.95,3014676,26981350,86.8 +CORD,2026-02-27,0.261,12.91,16.28,18.6,16.28,17.57,2951660,51860666,2.0 +DLLL,2026-02-27,0.2555,2.56,3.214,3.708,3.2,3.676,4499896,16541617,9.0 +BATL,2026-02-27,0.2313,4.15,5.11,6.0,4.41,5.52,56085237,309590508,27.5 +CDIO,2026-02-27,0.2117,5.22,6.325,7.91,5.745,6.55,19015381,124550745,183.2 +PRAA,2026-02-27,0.2056,12.67,15.275,16.51,14.5,15.75,2627548,41383881,4.9 +ARLO,2026-02-27,0.1815,12.34,14.58,16.37,14.5,15.69,6232188,97783029,5.5 +FIGS,2026-02-27,0.1684,12.47,14.57,15.8999,14.3,15.45,26069014,402766266,9.7 +BATL,2026-03-02,0.9384,5.52,10.7,13.61,8.2001,11.8,90767241,1071053443,37.0 +INDO,2026-03-02,0.4456,5.88,8.5,8.5,5.86,6.74,28376902,191260319,22.6 +RLYB,2026-03-02,0.2759,7.54,9.62,11.2,9.35,10.97,3675951,40325182,107.6 +AGIG,2026-03-02,0.2679,4.18,5.3,5.31,3.1,3.4,7518514,25562947,9.4 +WTI,2026-03-02,0.1924,2.635,3.142,3.172,2.829,2.983,10631795,31714644,4.4 +HKD,2026-03-02,0.18,1.75,2.065,2.14,1.44,1.46,8476275,12375361,28.2 +SVRN,2026-03-02,0.177,8.156,9.6,9.68,8.214,8.7,648620,5642994,87.4 +WTIU,2026-03-02,0.1634,15.91,18.51,18.51,16.3702,17.23,508813,8766847,13.1 +MOBX,2026-03-03,1.5864,1.77,4.578,12.4,3.85,11.2,138633292,1552692870,391.9 +BATL,2026-03-03,1.0983,11.8,24.76,29.7,21.89,27.68,68197496,1887706689,23.3 +SVRN,2026-03-03,0.8207,8.7,15.84,16.72,12.37,12.8,5494631,70331276,708.1 +NPT,2026-03-03,0.258,5.66,7.12,10.5,6.52,10.28,15318843,157477706,492.3 +ZSL,2026-03-03,0.1868,17.29,20.52,21.68,19.58,20.37,40376631,822471973,2.1 +VG,2026-03-03,0.1683,11.35,13.26,13.39,11.2,11.43,50794143,580577054,4.5 +PLUG,2026-03-03,0.1492,1.81,2.08,2.36,1.97,2.23,224777029,501252774,2.2 +TMDE,2026-03-03,0.1275,3.06,3.45,4.77,3.2,4.04,58425251,236038014,598.0 +VCIG,2026-03-04,1.7148,8.03,21.8,23.3999,6.68,7.0,26067698,182473886,1337.4 +CANF,2026-03-04,0.732,5.0,8.66,10.4,5.5501,6.02,38672536,232808666,1391.5 +DXST,2026-03-04,0.4419,2.03,2.927,7.373,2.568,5.123,40013580,204989570,268.3 +EOLS,2026-03-04,0.3002,4.13,5.37,6.13,5.065,5.59,10539688,58916855,11.9 +ADVB,2026-03-04,0.2606,4.26,5.37,5.82,3.9,4.59,6307233,28950199,2863.7 +SHMD,2026-03-04,0.2535,6.41,8.035,9.6,7.57,8.38,4195555,35158750,10.6 +SWIM,2026-03-04,0.2329,6.44,7.94,8.9662,7.17,7.2,4109347,29587298,8.6 +BW,2026-03-04,0.2012,8.1,9.73,12.03,9.28,11.8,19043081,224708355,7.6 +MTEK,2026-03-05,0.4918,1.83,2.73,2.82,2.02,2.09,39724048,83023260,432.6 +TTDU,2026-03-05,0.4907,6.42,9.57,10.35,8.5,8.78,1922057,16875660,11.3 +ALTO,2026-03-05,0.3654,2.6,3.55,4.2,3.12,4.02,27238864,109500233,39.4 +CDTG,2026-03-05,0.2938,7.93,10.26,11.13,8.793,11.13,449549,5003480,368.9 +ELPW,2026-03-05,0.25,6.24,7.8,8.272,6.0,6.416,4169322,26750369,69.6 +MOBX,2026-03-05,0.2195,8.199,9.999,11.2,8.379,8.659,34587888,299496522,97.8 +STEM,2026-03-05,0.2113,10.05,12.174,13.7166,11.62,12.18,1001825,12202228,5.2 +PMTS,2026-03-05,0.1597,12.46,14.45,17.95,14.45,17.6,536016,9433881,12.4 +CRE,2026-03-06,0.4313,2.62,3.75,4.92,3.44,4.53,24223530,109732590,1313.5 +BATL,2026-03-06,0.3292,19.0,25.255,29.22,20.52,22.36,34896185,780278696,8.8 +TURB,2026-03-06,0.3245,3.02,4.0,4.77,3.08,3.78,24818065,93812285,382.1 +TPET,2026-03-06,0.3208,1.59,2.1,2.4,1.82,1.93,260641870,503038809,230.0 +INDO,2026-03-06,0.2475,5.05,6.3,6.3,5.3,5.65,15667312,88520312,11.6 +IBG,2026-03-06,0.2256,4.3,5.27,5.855,4.21,5.53,15764067,87175290,146.9 +MVLL,2026-03-06,0.2245,5.417,6.633,7.896,6.493,7.343,7471164,54860757,11.6 +EVC,2026-03-06,0.1987,2.954,3.541,3.599,3.174,3.384,1756424,5943738,9.0 +AZI,2026-03-09,1.0845,2.638,5.499,8.9,5.077,6.5,53278239,346308553,1069.8 +HIMZ,2026-03-09,0.9464,15.68,30.52,30.87,25.96,28.42,12750286,362363128,5.5 +CIIT,2026-03-09,0.5998,2.394,3.83,4.634,2.43,2.847,7752591,22071626,1212.5 +HIMS,2026-03-09,0.4749,15.74,23.215,23.51,20.97,22.16,174971919,3877377725,6.5 +RLMD,2026-03-09,0.4404,4.45,6.41,7.41,5.8,7.17,43006141,308354030,78.3 +QURE,2026-03-09,0.2624,14.27,18.015,18.2,16.03,17.99,15401484,277072697,7.4 +PUSA,2026-03-09,0.2394,4.88,6.0482,6.0482,4.47,5.48,28832658,158002965,661.6 +ELPW,2026-03-09,0.2178,3.6,4.384,5.72,3.776,3.84,5317773,20420248,56.2 +LABX,2026-03-10,1.9649,6.56,19.45,19.8,17.7,17.81,314381,5599125,0.3 +ATPC,2026-03-10,1.0297,2.02,4.1,5.1,3.05,3.78,62274815,235398800,635.4 +INKT,2026-03-10,0.5033,10.45,15.71,16.9267,12.7,13.51,15908631,214925604,2544.8 +ELPW,2026-03-10,0.4875,3.84,5.712,5.872,4.608,5.096,4545133,23161997,38.5 +STGW,2026-03-10,0.2319,5.24,6.455,6.56,5.75,6.16,6505268,40072450,3.9 +ZVRA,2026-03-10,0.2007,9.12,10.95,11.4,10.51,11.06,9387229,103822752,13.2 +AGCC,2026-03-10,0.1703,18.2,21.3,23.66,17.0,18.59,311022,5781898,4.7 +OCC,2026-03-10,0.1424,6.11,6.98,8.14,6.4856,7.98,776277,6194690,8.5 +KALA,2026-03-11,0.5537,14.7,22.84,25.5,16.75,18.25,5822038,106252193,445.7 +DOMO,2026-03-11,0.4155,4.38,6.2,6.24,4.9514,4.97,24439901,121466307,20.4 +CODX,2026-03-11,0.3559,2.36,3.2,3.8563,2.795,3.24,2903929,9408729, +DXST,2026-03-11,0.2514,9.965,12.47,14.0,10.5,11.05,5082717,56164022,31.6 +ORCU,2026-03-11,0.2197,10.06,12.27,13.02,11.52,11.88,4184563,49712608,6.3 +CVGI,2026-03-11,0.2191,1.62,1.975,2.89,1.97,2.03,46303747,93996606,315.6 +CYN,2026-03-11,0.2188,1.6,1.95,2.0699,1.825,1.92,44589767,85612352,113.4 +ACXP,2026-03-11,0.2,2.9,3.48,6.2999,3.3,6.03,107124173,645958763,2175.2 +TLYS,2026-03-12,0.5951,1.63,2.6,2.73,2.25,2.4,47169926,113207822,1098.9 +BMBL,2026-03-12,0.2923,2.84,3.67,4.25,3.67,3.81,34273727,130582899,11.9 +ROMA,2026-03-12,0.2899,4.83,6.23,8.57,3.6,5.91,8257549,48802114,124.3 +HIMX,2026-03-12,0.2858,8.998,11.57,11.8,9.883,9.962,35904016,357675807,32.3 +ATPC,2026-03-12,0.247,4.17,5.2,6.3,5.01,5.65,42296923,238977614,431.6 +WOOF,2026-03-12,0.2208,2.4,2.93,3.34,2.91,3.23,22481230,72614372,12.6 +TMDE,2026-03-12,0.2096,2.29,2.77,2.88,2.35,2.43,6815717,16562192,20.4 +VRA,2026-03-12,0.2008,2.49,2.99,3.6,2.97,3.38,4590365,15515433,24.7 +ISPC,2026-03-13,0.8973,8.96,17.0,17.44,11.37,11.38,6748282,76795449,562.6 +ELPW,2026-03-13,0.4373,3.59,5.1598,5.5,4.58,5.16,14860579,76680587,41.3 +SVCO,2026-03-13,0.303,3.3,4.3,5.33,3.81,5.03,12048085,60601867,126.0 +KRRO,2026-03-13,0.1991,11.5,13.79,14.79,12.595,12.8,1097378,14046438,7.0 +TOI,2026-03-13,0.1985,2.62,3.14,3.39,2.76,2.84,9779637,27774169,6.1 +EQ,2026-03-13,0.1594,2.07,2.4,2.63,2.27,2.47,4749089,11730249,11.7 +LOCO,2026-03-13,0.1471,10.88,12.48,13.07,12.24,12.72,2152153,27375386,11.3 +VEEE,2026-03-13,0.1347,14.63,16.6,18.73,13.51,14.13,648768,9167091,28.8 +AIRS,2026-03-16,0.5486,1.85,2.865,3.26,2.49,2.805,77429005,217188359,96.5 +CTMX,2026-03-16,0.4786,4.68,6.92,8.21,6.04,6.75,121177514,817948219,42.9 +HCWB,2026-03-16,0.4495,3.097,4.489,7.02,4.065,5.611,76830591,431096446,5347.3 +DSGR,2026-03-16,0.3459,19.31,25.99,26.14,24.53,26.07,1273586,33202387,13.0 +CLIK,2026-03-16,0.3412,3.1165,4.18,4.25,3.1601,3.21,4074742,13079921,628.7 +CIIT,2026-03-16,0.26,2.1,2.646,2.646,2.144,2.253,8506793,19165804,1330.4 +TLS,2026-03-16,0.2103,4.28,5.18,5.3899,3.91,4.12,3949004,16269896,5.9 +NEBX,2026-03-16,0.2085,13.67,16.52,18.33,16.38,17.77,5551935,98657884,2.1 +LNAI,2026-03-17,1.6313,1.695,4.46,5.914,3.764,4.454,69255029,308461899,2012.5 +LIDR,2026-03-17,0.4581,1.55,2.26,2.37,1.82,1.83,67672130,123839997,166.6 +JVA,2026-03-17,0.224,3.17,3.88,4.28,3.7,4.12,2744028,11305395,74.5 +OKLL,2026-03-17,0.1778,9.11,10.73,11.0,9.0,9.45,12979997,122660971,3.7 +ISPC,2026-03-17,0.1699,7.864,9.2,10.0,7.8,8.86,872587,7731120,66.5 +BIAF,2026-03-17,0.1675,1.91,2.23,3.09,2.23,2.74,124939429,342334035,684.5 +PSQH,2026-03-17,0.1604,9.635,11.18,12.75,10.38,11.59,1562734,18112087,78.2 +OCG,2026-03-17,0.1583,2.357,2.73,3.27,2.55,3.09,5357674,16555212,31.3 +LBGJ,2026-03-18,1.5407,3.07,7.8,11.0,2.8,3.0,13110438,39331314,813.6 +VNRX,2026-03-18,0.5205,3.8,5.778,6.058,4.0,4.0,17985694,71942776,286.6 +ARTL,2026-03-18,0.2619,4.85,6.12,8.34,6.08,7.31,58784862,429717341,3963.2 +OVID,2026-03-18,0.199,2.01,2.41,2.5,2.22,2.3,40775010,93782523,38.0 +AIB,2026-03-18,0.1828,2.9,3.43,3.43,2.8,3.32,7164705,23786820, +HIT,2026-03-18,0.1647,1.7,1.98,2.09,1.72,1.83,4463661,8168499,30.0 +KC,2026-03-18,0.157,13.12,15.18,15.41,14.58,14.78,4752441,70241077,3.9 +CGTL,2026-03-18,0.1489,11.62,13.35,18.0,11.56,15.15,591643,8963391,53.6 +RGTX,2026-03-19,2.737,4.79,17.9,18.8851,16.81,18.49,415817,7688456,0.3 +IONX,2026-03-19,1.8453,9.05,25.75,27.41,24.35,26.41,667829,17637363,0.4 +CHNR,2026-03-19,0.5152,3.3,5.0,5.8,4.04,4.36,42646838,185940213,3023.1 +MOBX,2026-03-19,0.3066,4.592,6.0,6.897,5.327,5.64,28532534,160923491,35.6 +LBGJ,2026-03-19,0.2867,3.0,3.86,3.92,2.83,3.15,5219203,16440489,175.7 +DLTH,2026-03-19,0.2442,2.17,2.7,3.24,2.56,3.14,13680592,42957058,412.1 +CAL,2026-03-19,0.2353,8.759,10.82,10.89,9.401,10.43,1639214,17097002,2.7 +SVRN,2026-03-19,0.2031,4.422,5.32,5.964,4.792,5.442,4043533,22004906,80.6 +CODX,2026-03-20,0.4566,2.65,3.86,3.95,2.47,2.59,56747138,146975087, +JDZG,2026-03-20,0.2469,18.83,23.48,23.75,20.55,23.2,603518,14001617,33.7 +MNDR,2026-03-20,0.2163,5.821,7.08,8.28,6.63,7.32,4365452,31955108,263.6 +IDN,2026-03-20,0.1896,4.8,5.71,6.2382,5.33,5.54,2214577,12268756,22.8 +BIAF,2026-03-20,0.1751,2.97,3.49,3.59,2.61,2.73,14560980,39751475,76.9 +ARTL,2026-03-20,0.1732,7.16,8.4,9.8,7.62,7.97,12021435,95810836,760.2 +WNW,2026-03-20,0.1488,12.03,13.82,18.41,12.54,14.9,3312724,49359587,36808.0 +SER,2026-03-20,0.129,2.48,2.8,3.0,2.4,2.54,13348653,33905578,169.0 +FLZH,2026-03-23,0.6422,2.18,3.58,7.23,3.06,6.15,163124147,1003213504,2168.1 +AHMA,2026-03-23,0.3729,4.545,6.24,8.4699,1.08,2.24,37264021,83471407,1673.9 +AIFF,2026-03-23,0.2484,1.53,1.91,2.4099,1.85,1.88,20090494,37770128,146.9 +KORU,2026-03-23,0.1284,16.04,18.1,19.29,17.32,18.88,50983440,962567347,2.7 +PTLE,2026-03-23,0.1124,4.27,4.75,12.4493,4.75,8.01,10002069,80116572,771.6 +OCGN,2026-03-23,0.0882,2.04,2.22,2.29,1.97,2.1,13625433,28613409,1.9 +MRLN,2026-03-23,0.085,8.0,8.68,10.09,8.33,9.76,1520438,14839474,6.3 +ASPI,2026-03-23,0.0795,4.215,4.55,4.89,4.3615,4.83,7862397,37975377,2.1 +RBNE,2026-03-24,0.3818,16.5,22.8,37.8,19.8,31.65,12340231,390568311,175.2 +FLZH,2026-03-24,0.3154,6.15,8.09,8.55,6.2905,7.02,27313119,191738095,363.0 +ANNA,2026-03-24,0.2667,5.455,6.91,8.62,6.85,7.68,61121578,469413719,165.0 +ELAB,2026-03-24,0.1796,3.73,4.4,4.43,2.7,2.89,19555799,56516259,365.7 +YMT,2026-03-24,0.1373,4.502,5.12,6.555,4.56,4.949,5724681,28331446,437.0 +CVV,2026-03-24,0.0885,3.73,4.06,5.35,3.94,5.13,10015258,51378273,222.2 +VWAV,2026-03-24,0.0726,5.92,6.35,7.43,6.25,6.86,1037045,7114128,3.5 +ITOC,2026-03-25,0.7269,4.562,7.878,7.902,5.49,6.626,8178819,54192854,3906.8 +QNRX,2026-03-25,0.2537,8.0,10.03,10.83,7.68,9.27,4146688,38439797,335.5 +BRZE,2026-03-25,0.2508,18.02,22.54,22.68,20.2833,21.6,11777779,254400026,4.3 +ARMG,2026-03-25,0.1935,8.06,9.62,11.59,9.62,10.68,3390235,36207709,6.7 +ENLV,2026-03-25,0.1867,16.5,19.58,19.8,15.75,18.0,840093,15121674,73.6 +FEED,2026-03-25,0.1814,2.26,2.67,2.8999,2.4201,2.64,22086888,58309384,66.3 +VNRX,2026-03-25,0.1686,4.022,4.7,4.77,3.718,3.826,7064054,27027070,109.4 +PAYS,2026-03-25,0.1671,3.77,4.4,5.235,4.26,5.15,9453625,48686168,27.1 +LNAI,2026-03-26,1.2927,3.212,7.364,7.584,3.862,3.949,32204661,127176206,466.0 +GLND,2026-03-26,0.7983,8.23,14.8,23.0,10.78,13.0,8342203,108448639,51.6 +EEIQ,2026-03-26,0.7545,2.7301,4.79,12.7,4.52,8.44,112649924,950765358,3429.8 +PGEN,2026-03-26,0.3113,3.1,4.065,4.275,3.73,3.89,23541667,91577084,5.9 +BATL,2026-03-26,0.2696,5.23,6.64,7.3,5.4,5.56,44157983,245518385,5.5 +NDLS,2026-03-26,0.2376,6.06,7.5,9.95,7.44,9.43,1672451,15771212,35.3 +NAVN,2026-03-26,0.2306,9.15,11.26,13.78,10.5,13.11,21265758,278794087,16.4 +AIFF,2026-03-26,0.2262,1.68,2.06,3.1499,2.01,3.02,109823026,331665538,93.9 +ARTL,2026-03-27,1.5047,3.19,7.99,19.9099,7.45,10.54,82511501,869671220,3495.4 +VSA,2026-03-27,0.3978,13.7,19.15,29.0,6.51,7.602,15194138,115505837,4664.4 +RDGT,2026-03-27,0.2445,12.72,15.83,19.43,5.67,6.555,1475797,9673849,51782.4 +U,2026-03-27,0.1807,17.13,20.225,20.33,18.15,19.45,54031051,1050903941,3.6 +NMAX,2026-03-27,0.1538,5.98,6.9,6.9125,5.65,5.88,2459495,14461830,3.5 +ADMA,2026-03-27,0.1417,8.29,9.465,9.805,8.86,9.25,22371483,206936217,6.3 +TURB,2026-03-27,0.1224,1.96,2.2,2.85,2.13,2.5,8046058,20115145,3.9 +BATL,2026-03-27,0.1079,5.56,6.16,6.6299,5.67,6.27,17483728,109622974,2.0 +ELAB,2026-03-30,1.4311,1.67,4.06,4.88,3.01,3.56,121413143,432230789,2270.2 +EEIQ,2026-03-30,0.5057,6.98,10.51,11.21,7.15,8.19,23857587,195393637,648.0 +ASTC,2026-03-30,0.3376,2.37,3.17,6.48,2.8,4.65,113720070,528798325,25460.7 +QNCX,2026-03-30,0.2911,17.52,22.62,22.74,18.44,20.26,837215,16961975,7.4 +SGML,2026-03-30,0.239,10.46,12.96,14.78,11.51,11.92,20375541,242876448,7.4 +RZLV,2026-03-30,0.1967,2.39,2.86,2.89,2.4101,2.52,68870804,173554426,5.5 +MKDW,2026-03-30,0.1435,4.81,5.5,9.0,5.5,6.35,983926,6247930,60.3 +GLND,2026-03-30,0.1218,8.21,9.21,12.8,8.61,11.26,9681560,109014365,59.9 +VRAX,2026-03-31,0.5149,4.063,6.155,7.0,5.01,5.498,9558729,52553892,1535.8 +NPT,2026-03-31,0.3459,4.77,6.42,8.28,4.8,7.48,5603200,41911936,88.0 +SOGP,2026-03-31,0.3205,15.29,20.19,21.82,13.93,15.67,1254588,19659393,63.9 +SST,2026-03-31,0.2866,3.14,4.04,4.17,2.79,3.02,5809629,17545079,272.4 +LNKS,2026-03-31,0.1927,4.8,5.725,6.625,4.65,5.95,1685850,10030807,2016.6 +MVLL,2026-03-31,0.1872,6.876,8.163,8.707,7.69,8.637,2943954,25426930,4.4 +POLA,2026-03-31,0.1744,1.95,2.29,2.89,1.78,1.95,33381442,65093811,327.2 +ARTL,2026-03-31,0.1592,8.73,10.12,10.56,7.11,7.58,5038579,38192428,90.7 +CYCN,2026-04-01,2.4968,1.55,5.42,8.48,5.37,6.38,264677639,1688643336,8488.2 +BCG,2026-04-01,0.5547,2.01,3.125,3.14,2.235,2.38,31137742,74107825,6995.7 +RENX,2026-04-01,0.3792,1.78,2.455,3.48,2.285,2.61,86521042,225819919,225.0 +TH,2026-04-01,0.3384,9.28,12.42,13.29,11.89,12.66,9716210,123007218,19.2 +RYM,2026-04-01,0.3169,18.3,24.1,30.7,22.33,30.0,241463,7243890,42.7 +HPAI,2026-04-01,0.2333,1.5,1.85,2.29,1.75,1.9,2977879,5657970,1428.9 +NCNO,2026-04-01,0.2263,14.98,18.37,18.44,16.094,16.57,12854412,212997606,6.2 +ASTC,2026-04-01,0.1855,5.23,6.2,6.45,3.6,4.45,4076391,18139939,846.2 +SKYQ,2026-04-02,1.2016,2.53,5.57,5.89,3.75,5.1,206131152,1051268875,1251.9 +BDRX,2026-04-02,0.5042,3.07,4.618,6.75,4.004,4.366,24245564,105856132,1628.0 +TURB,2026-04-02,0.3787,2.35,3.24,3.8,2.78,3.18,36310086,115466073,10.8 +BATL,2026-04-02,0.3506,3.85,5.2,5.4,4.12,4.21,44335153,186650994,3.7 +ANNA,2026-04-02,0.1901,7.26,8.64,9.7,7.715,7.89,7427746,58604915,10.4 +ASTN,2026-04-02,0.1247,14.83,16.68,16.68,11.6001,11.68,3074103,35905523,5.4 +WTI,2026-04-02,0.1229,3.003,3.372,3.432,3.073,3.143,12055089,37889144,1.2 +HPK,2026-04-02,0.1111,6.3,7.0,7.34,6.73,6.9,1206292,8323414,1.1 +PFSA,2026-04-06,1.533,18.95,48.0,56.25,43.0,46.25,9638528,445781920,1858.0 +FCUV,2026-04-06,1.2395,13.36,29.92,37.92,21.28,22.96,13138353,301656584,4540.6 +AIXI,2026-04-06,1.0666,2.614,5.402,17.25,4.6,16.08,62562703,1006008264,1104.4 +LNKS,2026-04-06,0.3494,2.075,2.8,2.87,1.51,2.33,6801740,15848054,1343.7 +MLEC,2026-04-06,0.2504,6.95,8.69,11.76,8.06,11.44,10593726,121192225,435.1 +BTBD,2026-04-06,0.2222,1.89,2.31,2.4799,1.96,2.09,6876088,14371023,78.1 +RENX,2026-04-06,0.1683,2.02,2.36,2.62,2.28,2.41,13361856,32202072,34.8 +PRFX,2026-04-06,0.1619,2.1,2.44,2.8799,2.3275,2.53,28283475,71557191,928.4 +HCAI,2026-04-07,2.0493,4.401,13.42,16.32,9.915,10.67,16430924,175317959,3489.3 +CETX,2026-04-07,1.1176,7.957,16.85,17.4,12.4,12.9,14953841,192904548,304.2 +RDGT,2026-04-07,0.8798,2.745,5.16,7.875,3.795,4.05,11010041,44590666,55888.5 +LNAI,2026-04-07,0.7168,2.256,3.873,4.335,2.92,3.153,16804652,52985067,87.7 +SILO,2026-04-07,0.6699,5.337,8.912,9.432,6.9,7.953,10900283,86689950,772.7 +ADVB,2026-04-07,0.6143,4.42,7.135,7.59,6.04,6.52,14958344,97528402,599.6 +IPST,2026-04-07,0.5568,4.842,7.538,8.872,6.156,8.0,7416401,59331208,869.7 +AIXI,2026-04-07,0.3806,16.08,22.2,54.2,18.22,39.0,33152759,1292957601,570.9 +ELPW,2026-04-08,0.75,1.56,2.73,3.02,1.38,2.25,29872874,67213966,72.2 +BBGI,2026-04-08,0.672,3.14,5.25,6.55,4.66,5.67,52492658,297633370,4561.0 +ELAB,2026-04-08,0.3478,3.45,4.65,5.49,4.2434,4.5,57792720,260067240,792.0 +KORU,2026-04-08,0.308,15.55,20.34,20.61,18.8,20.25,31564900,639189225,1.1 +SKIL,2026-04-08,0.2812,4.41,5.65,5.8,3.725,3.88,1403906,5447155,14.0 +CRMX,2026-04-08,0.2608,12.0,15.13,15.49,13.6901,14.48,384139,5562332,2.5 +APLX,2026-04-08,0.2525,12.2,15.28,16.17,14.2882,14.71,3575196,52591133,2.3 +HOOG,2026-04-08,0.2139,17.2171,20.9,21.29,18.0612,18.4,611758,11256347,1.3 +ELAB,2026-04-09,0.4422,4.5,6.49,7.0,5.25,5.26,58040408,305292546,592.9 +ONCO,2026-04-09,0.4336,11.3,16.2,28.2,11.4,12.2,23829481,290719668,3167.1 +PMAX,2026-04-09,0.2965,3.7,4.797,4.8,3.854,4.29,10345337,44381495,403.0 +CLIK,2026-04-09,0.2381,2.1,2.6,3.7,2.33,3.45,31971532,110301785,1719.8 +GIPR,2026-04-09,0.202,2.638,3.171,4.199,2.5,2.568,4365850,11211502,476.1 +YMT,2026-04-09,0.1975,2.643,3.165,5.222,2.865,3.174,13655891,43343798,801.6 +DKI,2026-04-09,0.1524,6.352,7.32,19.36,6.933,15.41,13437229,207067698,3783.5 +RELL,2026-04-09,0.1486,11.71,13.45,14.69,12.41,14.37,719535,10339717,9.3 +RAYA,2026-04-10,0.923,4.571,8.79,11.0,7.091,9.505,42089431,400060041,2495.8 +ISPC,2026-04-10,0.545,5.204,8.04,8.044,5.028,5.124,9124049,46751627,181.4 +AIXI,2026-04-10,0.5229,19.83,30.2,32.0,22.6,24.4,7096279,173149207,82.8 +SQFT,2026-04-10,0.4574,2.82,4.11,4.35,3.38,3.89,48863221,190077929,9263.2 +WGRX,2026-04-10,0.4217,5.3,7.535,7.955,5.695,6.0,4302206,25813236,76.7 +CREG,2026-04-10,0.3964,3.406,4.756,9.99,4.557,6.315,44151677,278817840,1563.9 +LNKS,2026-04-10,0.3316,1.96,2.61,3.08,2.0,2.17,22723320,49309604,95.8 +SLP,2026-04-10,0.1975,12.99,15.555,15.555,12.62,13.04,1378722,17978534,6.9 +RVMDW,2026-04-13,1.3141,1.91,4.42,4.765,3.89,4.41,1628726,7182681,113.4 +VRAX,2026-04-13,0.7461,2.603,4.545,4.885,3.775,4.16,10850201,45136836,1457.3 +ALLO,2026-04-13,0.5037,2.72,4.09,4.46,3.01,3.06,87821952,268735173,19.2 +SKYQ,2026-04-13,0.4932,12.59,18.8,19.4499,11.02,11.62,22126165,257106037,56.3 +JDZG,2026-04-13,0.3421,15.2,20.4,22.7,16.6,19.9,2353451,46833674,219.5 +ALMU,2026-04-13,0.3039,10.76,14.03,16.56,13.95,15.35,13464502,206680105,21.0 +BATL,2026-04-13,0.2812,3.2,4.1,4.13,3.47,3.69,19617043,72386888,1.4 +TURB,2026-04-13,0.1767,2.15,2.53,2.53,2.125,2.15,2513659,5404366,0.6 +ROLR,2026-04-14,1.0648,5.09,10.51,11.74,7.2,7.41,91208019,675851420,932.1 +SNAL,2026-04-14,1.043,1.885,3.851,10.8,3.754,8.5,173040201,1470841708,41984.8 +AVNS,2026-04-14,0.6896,14.53,24.55,24.7,24.51,24.63,23942681,589708233,52.3 +SANA,2026-04-14,0.243,3.21,3.99,4.08,3.41,3.48,16419271,57139063,6.1 +OKLL,2026-04-14,0.1981,6.94,8.315,8.9,7.595,8.11,14973850,121437923,2.8 +WGRX,2026-04-14,0.1792,6.0,7.075,7.615,6.505,7.205,3720745,26807967,59.0 +ORCU,2026-04-14,0.1525,10.49,12.09,12.32,11.28,11.48,3683060,42281528,5.6 +SMU,2026-04-14,0.1468,10.49,12.03,14.0996,11.2545,11.95,2262753,27039898,4.0 +BIRD,2026-04-15,1.739,2.49,6.82,24.31,6.11,16.99,288179502,4896169738,5385.2 +AIFA,2026-04-15,0.5783,1.968,3.106,5.752,2.537,2.832,80163864,227024062,1640.0 +VSA,2026-04-15,0.5385,6.0,9.231,12.0,8.037,8.05,21358299,171934306,395.8 +NCI,2026-04-15,0.4,4.08,5.712,9.28,4.8,5.231,11182931,58497912,77.2 +QBTX,2026-04-15,0.1873,10.52,12.49,15.5197,11.5,15.24,7208557,109858408,4.9 +KZIA,2026-04-15,0.1628,9.46,11.0,11.0,8.8,10.0,530078,5300780,5.1 +WATT,2026-04-15,0.1585,16.4,19.0,23.65,18.9,22.13,1975877,43726158,5.2 +XNDU,2026-04-15,0.1544,14.83,17.12,28.25,16.15,25.18,9177226,231082550,19.9 +WSHP,2026-04-16,1.9337,8.22,24.115,40.87,14.01,14.265,33692663,480625837,500.2 +BTOG,2026-04-16,0.3996,2.765,3.87,5.35,2.23,2.6,30225003,78585007,829.8 +AIFA,2026-04-16,0.3033,2.832,3.691,4.033,2.941,3.131,14175337,44382980,290.0 +CDNA,2026-04-16,0.2379,17.57,21.75,22.81,20.1001,22.42,2964820,66471264,5.0 +MRLN,2026-04-16,0.1896,14.29,17.0,17.0,15.0,16.09,2035462,32750583,1.7 +WNW,2026-04-16,0.1709,3.16,3.7,6.55,3.43,5.56,17175740,95497114,67.1 +SLDP,2026-04-16,0.1503,3.26,3.75,3.78,3.21,3.26,18378962,59915416,5.1 +ACHV,2026-04-16,0.1408,3.55,4.05,5.25,3.98,4.81,14059609,67626719,27.7 +EFOI,2026-04-17,1.5742,2.09,5.38,9.84,5.0,6.49,167175238,1084967294,19119.9 +PBM,2026-04-17,0.6729,5.87,9.82,10.53,7.11,7.6,50507363,383855958,2433.9 +YXT,2026-04-17,0.5392,3.7,5.695,7.248,4.56,4.96,18060635,89580749,9989.3 +CRMX,2026-04-17,0.4269,16.61,23.7,32.54,23.54,28.36,2069211,58682823,11.2 +ISPC,2026-04-17,0.4215,4.66,6.624,7.888,5.216,5.46,15000473,81902582,141.7 +CRMU,2026-04-17,0.4106,7.3304,10.34,14.219,10.29,12.44,1052910,13098200,22.9 +LZM,2026-04-17,0.3625,3.89,5.3,5.33,4.67,5.18,3808693,19729029,12.4 +WSHP,2026-04-17,0.3382,14.265,19.09,19.14,15.02,15.87,8856500,140552655,128.6 +ENVB,2026-04-20,1.3077,1.82,4.2,5.43,3.495,3.65,158706374,579278265,6135.1 +CMND,2026-04-20,0.8482,7.196,13.3,15.2,10.5,11.4,22526441,256801427,1955.9 +PBM,2026-04-20,0.7257,7.6,13.115,16.9593,11.06,11.3,42277371,477734292,2037.3 +WLDS,2026-04-20,0.6887,4.53,7.65,9.72,3.3,3.9,48058870,187429593,2069.2 +FCHL,2026-04-20,0.3023,10.75,14.0,37.5,6.111,6.75,14646349,98862855,990.9 +CMPS,2026-04-20,0.298,6.66,8.645,10.21,8.63,9.46,39754733,376079774,20.3 +ASTN,2026-04-20,0.272,12.61,16.04,16.1295,13.9417,14.01,1992203,27910764,2.1 +ATAI,2026-04-20,0.2469,4.03,5.025,5.51,4.8,4.9,47138641,230979340,13.3 +LOCL,2026-04-21,0.5106,1.88,2.84,3.13,2.57,2.91,82423160,239851395,4691.5 +SPRC,2026-04-21,0.4374,4.23,6.08,6.57,4.68,5.99,15194380,91014336,1324.2 +FCHL,2026-04-21,0.4013,6.75,9.459,10.07,7.563,8.505,8080291,68722874,420.7 +BIYA,2026-04-21,0.3447,8.701,11.7,14.5,10.3,13.5,2839473,38332885,315.1 +CLIK,2026-04-21,0.3113,2.57,3.37,4.02,3.09,3.49,40422947,141076085,1156.8 +XRTX,2026-04-21,0.3111,2.25,2.95,3.6,2.53,2.69,73181621,196858560,4684.2 +UNHG,2026-04-21,0.1806,14.34,16.93,17.36,16.27,16.33,7950685,129834686,6.0 +GRPN,2026-04-21,0.1692,14.95,17.48,18.69,15.71,16.66,8797473,146565900,5.6 +AGPU,2026-04-22,1.2234,4.88,10.85,10.86,8.03,8.75,83958427,734636236,963.1 +ELPW,2026-04-22,0.293,1.57,2.03,3.12,2.0,2.59,86011112,222768780,442.7 +HCAI,2026-04-22,0.2725,6.79,8.64,9.95,7.26,9.74,6213577,60520239,375.2 +HCSG,2026-04-22,0.2403,19.35,24.0,24.39,21.87,22.89,2595031,59400259,4.4 +KYTX,2026-04-22,0.1411,9.71,11.08,11.1405,8.65,10.23,6106948,62474078,10.0 +MSTU,2026-04-22,0.1311,7.02,7.94,8.66,7.94,8.32,61005587,507566483,1.9 +USGG,2026-04-22,0.1257,16.9312,19.06,21.5604,18.99,20.76,335511,6965208,2.0 +POET,2026-04-22,0.1244,10.25,11.525,12.95,11.31,12.77,84232202,1075645219,8.6 +CPIX,2026-04-23,0.8738,3.05,5.715,6.0399,3.66,3.9,52372113,204251240,1038.8 +AUUD,2026-04-23,0.77,3.87,6.85,10.1,4.45,5.06,76192201,385532537,1931.7 +QSU,2026-04-23,0.6561,15.1501,25.09,25.09,14.45,15.61,971661,15167628,30.6 +TRT,2026-04-23,0.3317,8.26,11.0,16.35,10.76,13.78,31454337,433440763,493.4 +QS,2026-04-23,0.3211,7.31,9.657,9.657,7.13,7.41,113120624,838223823,12.6 +TZOO,2026-04-23,0.3044,7.49,9.77,11.9798,9.2,9.48,5209473,49385804,50.3 +HELE,2026-04-23,0.2549,19.77,24.81,25.0,22.35,23.82,2225150,53003073,4.0 +MNTS,2026-04-23,0.2144,5.55,6.74,6.74,5.32,5.64,2829113,15956197,2.0 +INTW,2026-04-24,0.466,14.25,20.89,22.08,19.71,20.92,14221176,297507001,2.7 +ELPW,2026-04-24,0.4644,2.67,3.9099,4.37,3.21,3.62,64949643,235117707,334.3 +CAST,2026-04-24,0.3631,1.68,2.29,2.57,2.0,2.13,16662348,35490801,196.1 +LIDR,2026-04-24,0.3254,1.69,2.24,3.05,2.15,2.19,103413176,226474855,105.7 +OGN,2026-04-24,0.2496,8.587,10.73,11.56,9.94,11.24,31876750,358294670,7.3 +SST,2026-04-24,0.2272,3.83,4.7,4.97,3.78,3.9,8780296,34243154,15.2 +QCMU,2026-04-24,0.1823,15.52,18.35,19.57,17.79,19.06,446773,8515493,25.5 +QCML,2026-04-24,0.1726,12.5192,14.68,15.8,14.32,15.36,1066678,16384174,19.1 +ONCO,2026-04-27,0.3503,5.875,7.933,8.358,7.071,7.421,9452940,70150267,75.2 +GLND,2026-04-27,0.2866,6.21,7.99,7.99,5.28,5.41,12436965,67283980,13.4 +ELPW,2026-04-27,0.2376,3.62,4.48,4.89,3.91,4.3,11141323,47907688,57.3 +SGMT,2026-04-27,0.2304,5.86,7.21,9.3699,7.13,8.12,49409000,401201079,133.2 +ASBP,2026-04-27,0.2098,6.15,7.44,9.3,6.324,7.35,6993618,51403092,681.2 +DKI,2026-04-27,0.2082,7.416,8.96,9.666,8.08,8.342,1579461,13175863,237.7 +RMAX,2026-04-27,0.1977,7.99,9.57,10.3,9.5201,9.94,14072791,139883542,63.9 +TRAK,2026-04-27,0.1934,8.102,9.669,9.749,8.735,8.931,725305,6477698,6.8 +BIYA,2026-04-28,0.7202,7.79,13.4,21.9,12.2,15.3,20198656,309039436,2241.7 +NEXR,2026-04-28,0.67,2.0,3.34,3.3999,2.16,2.3,43276910,99536892,1009.8 +BBBY,2026-04-28,0.3333,5.34,7.12,7.7,4.64,4.74,43075817,204179372,27.0 +DRCT,2026-04-28,0.2082,2.45,2.96,3.3,2.55,2.87,9387888,26943238,419.4 +KIDZ,2026-04-28,0.1858,9.698,11.5,11.9,10.25,10.9,3647973,39762905,150.5 +DDI,2026-04-28,0.1697,9.19,10.75,11.0758,10.71,10.99,1373974,15099974,48.7 +CORD,2026-04-28,0.1514,6.34,7.3,7.36,6.57,7.06,7207085,50882020,2.9 +SKYQ,2026-04-28,0.1394,5.45,6.21,6.51,4.95,5.9,12818087,75626713,13.0 +SAGT,2026-04-29,0.8029,1.7,3.065,3.39,2.12,2.17,107209075,232643692,2982.1 +INHD,2026-04-29,0.7275,1.6,2.764,3.01,2.138,2.4,30523230,73255752,133.6 +XTLB,2026-04-29,0.6391,2.3,3.77,4.87,3.22,3.56,114073675,406102283,15788.7 +RDAC,2026-04-29,0.402,4.9,6.87,23.99,6.403,20.51,16422806,336831751,11149.2 +AIXI,2026-04-29,0.2397,14.6,18.1,23.9,16.81,17.98,6956555,125078858,9.4 +WDCX,2026-04-29,0.1801,18.49,21.82,23.2,20.3,20.65,2874786,59364330,2.1 +PRCH,2026-04-29,0.1758,8.59,10.1,10.83,9.9,10.13,6957225,70476689,5.5 +FVRR,2026-04-29,0.1728,10.36,12.15,13.235,11.72,12.12,4208721,51009698,5.7 +HCAI,2026-04-30,1.0238,5.47,11.07,14.45,9.75,10.95,45484363,498053774,1192.9 +FATN,2026-04-30,0.4012,2.48,3.475,3.67,2.82,3.04,49917661,151749689,563.7 +MRAM,2026-04-30,0.3692,13.19,18.06,19.71,16.5,18.28,14318300,261738524,36.7 +QCMU,2026-04-30,0.2573,19.82,24.92,28.96,22.76,27.08,901674,24417331,21.8 +QCML,2026-04-30,0.2559,16.08,20.195,23.38,18.38,21.85,2866170,62625814,45.8 +XRX,2026-04-30,0.242,1.558,1.935,2.282,1.736,2.232,60836135,135786253,20.7 +PACK,2026-04-30,0.2284,3.94,4.84,5.28,4.4,5.09,2871318,14615008,7.6 +CANF,2026-04-30,0.2207,2.99,3.65,4.08,2.87,3.19,27287057,87045711,973.4 +CUE,2026-05-01,1.2897,14.74,33.75,38.0,25.95,30.42,18927238,575766579,69.0 +CERS,2026-05-01,0.3251,2.03,2.69,3.15,2.47,2.72,24852604,67599082,23.7 +AIOS,2026-05-01,0.3026,9.32,12.14,33.8699,10.64,22.0,6710758,147636676,2858.7 +FXHO,2026-05-01,0.2507,18.55,23.2,26.3,12.7,15.0,2910976,43664640,3186.6 +RDTL,2026-05-01,0.2412,16.96,21.05,22.8399,19.06,21.35,2474109,52822227,5.5 +BOOM,2026-05-01,0.2136,6.18,7.5,8.56,7.1,8.41,2010166,16905496,7.5 +FIVN,2026-05-01,0.1733,17.2,20.18,23.1899,19.66,22.24,15303482,340349439,7.5 +WEAV,2026-05-01,0.164,4.91,5.715,5.91,5.245,5.75,5145187,29584825,4.0 +CNSP,2026-05-04,2.9765,2.3111,9.19,10.54,7.32,7.84,83541405,654964615,4139.2 +PN,2026-05-04,1.0105,2.865,5.76,6.0,4.61,5.42,50163947,271888592,1396.4 +GBTG,2026-05-04,0.5691,5.93,9.305,9.39,9.3,9.34,81219267,758587953,69.2 +RLYB,2026-05-04,0.4899,9.41,14.02,14.6,13.24,14.12,10663764,150572347,174.9 +MNDR,2026-05-04,0.4,5.7,7.98,10.44,6.72,7.2,18476182,133028510,886.0 +NIVF,2026-05-04,0.2924,5.13,6.63,8.31,3.99,5.07,9383877,47576256,1409.6 +SSM,2026-05-04,0.2267,6.0,7.36,10.54,5.4,5.78,1405716,8125038,528.6 +CLNN,2026-05-04,0.2158,6.14,7.465,8.67,6.31,8.09,22202219,179615951,326.8 +SDOT,2026-05-05,1.19,5.178,11.34,12.7,9.2,9.9,26012267,257521443,43498.8 +BLZE,2026-05-05,0.6013,4.64,7.43,8.42,7.12,7.59,37174408,282153756,76.5 +CLRB,2026-05-05,0.5936,2.83,4.51,4.7,3.11,3.18,54682303,173889723,2549.8 +BIYA,2026-05-05,0.437,11.9,17.1,18.7,12.6,13.0,3410361,44334693,270.3 +FSEA,2026-05-05,0.4191,11.74,16.66,16.76,16.61,16.67,802509,13377825,133.4 +VRDN,2026-05-05,0.3563,14.06,19.07,20.0,17.42,18.75,16131697,302469318,9.4 +DGXX,2026-05-05,0.3519,3.95,5.34,5.68,4.71,5.11,115838709,591935802,68.6 +EVER,2026-05-05,0.3066,14.61,19.09,23.98,18.15,23.82,6857057,163335097,10.3 +EVC,2026-05-06,0.6309,3.958,6.455,8.305,6.335,7.648,40331806,308457652,145.1 +HUTG,2026-05-06,0.5298,17.9892,27.52,31.74,25.43,30.86,846331,26117774,15.2 +ERNA,2026-05-06,0.4662,3.99,5.85,7.7,4.5701,6.04,64133260,387364890,4000.7 +AVTX,2026-05-06,0.4022,16.26,22.8,23.71,17.69,21.81,22460993,489874257,30.6 +PMAX,2026-05-06,0.3491,2.12,2.86,4.8117,2.5101,4.14,52272736,216409127,418.7 +IFRX,2026-05-06,0.2944,1.97,2.55,2.86,2.3,2.5,18262680,45656700,16.9 +COMP,2026-05-06,0.2782,7.26,9.28,9.59,8.945,9.24,36558514,337800669,2.9 +SMCX,2026-05-06,0.2595,11.85,14.925,17.67,14.6,17.62,9494388,167291116,2.7 +RXT,2026-05-07,0.7511,2.27,3.975,4.62,3.36,3.52,194437038,684418373,30.3 +ATRA,2026-05-07,0.5243,5.15,7.85,12.45,6.8,9.93,76989244,764503192,1237.1 +FLNC,2026-05-07,0.4163,13.56,19.205,20.285,16.31,18.97,46081545,874166908,10.3 +CCRN,2026-05-07,0.2878,10.11,13.02,13.12,12.99,13.09,5659510,74082985,18.4 +OSG,2026-05-07,0.2678,4.22,5.35,6.18,5.3,6.05,7747253,46870880,17.5 +HIMX,2026-05-07,0.2506,12.13,15.17,17.65,14.64,15.76,24839307,391467478,9.5 +JMIA,2026-05-07,0.2245,7.46,9.1347,9.62,8.53,8.71,11242316,97920572,6.5 +PCT,2026-05-07,0.2224,7.62,9.315,9.73,8.66,8.94,8819150,78843201,2.5 +PHOE,2026-05-08,0.9349,19.06,36.88,49.45,20.02,24.06,1692987,40733267,786.5 +AIIO,2026-05-08,0.6584,5.892,9.771,13.0,8.543,8.6,26148257,224875010,906.4 +FLNC,2026-05-08,0.2533,18.97,23.775,26.98,23.52,24.16,41474841,1002032158,8.8 +PGNY,2026-05-08,0.2208,19.16,23.39,23.76,21.1923,23.72,4411778,104647374,3.3 +TRAW,2026-05-08,0.2059,1.7,2.05,2.3999,1.79,2.18,89498085,195105825,689.1 +SIF,2026-05-08,0.2058,15.55,18.75,20.39,18.05,19.86,342491,6801871,5.8 +LOCO,2026-05-08,0.1732,13.51,15.85,15.9,13.67,14.0,1063459,14888426,4.5 +ASYS,2026-05-08,0.1686,18.21,21.28,23.9,20.61,21.49,920087,19772669,5.0 +ODYS,2026-05-11,1.1973,4.46,9.8,11.3,4.14,4.75,39260912,186489332,2093.9 +CLIK,2026-05-11,0.4753,2.23,3.29,3.44,1.77,2.26,45990544,103938629,1196.3 +EZGO,2026-05-11,0.3975,6.0,8.385,10.29,5.13,6.0,11718953,70313718,246714.8 +BZH,2026-05-11,0.3479,18.77,25.3,25.6,24.1,25.16,5546704,139555072,13.5 +IREZ,2026-05-11,0.2069,6.91,8.34,8.9,6.7901,8.26,21290995,175863618,7.6 +HTCO,2026-05-11,0.2021,5.84,7.02,7.6895,6.01,7.05,1447376,10204000,4.2 +GAMB,2026-05-11,0.1619,4.51,5.24,5.5,4.31,4.36,8787636,38314092,19.3 +BW,2026-05-11,0.1486,14.54,16.7,18.99,15.56,18.91,9220073,174351580,3.3 +QUBX,2026-05-12,0.501,14.99,22.5,27.526,18.25,19.78,5789327,114512888,26.8 +CNCK,2026-05-12,0.3686,1.75,2.395,2.4,1.97,2.06,52675653,108511845,828.1 +CREG,2026-05-12,0.3279,1.79,2.377,2.57,2.044,2.54,17244977,43802241,71.1 +UBXG,2026-05-12,0.3192,7.545,9.953,12.72,5.148,5.318,2922495,15541828,926.3 +VSTS,2026-05-12,0.2667,9.3,11.78,12.465,11.0313,12.0,9378794,112545528,8.8 +AIIO,2026-05-12,0.2655,11.3,14.3,14.9,12.0,12.8,2028189,25960819,61.4 +HTCO,2026-05-12,0.2482,7.05,8.8,12.12,7.3,11.28,10677126,120437981,29.2 +QUBT,2026-05-12,0.2475,10.18,12.7,14.45,11.29,11.78,141083913,1661968495,10.9 +AEHL,2026-05-13,0.4336,2.11,3.025,4.24,2.65,3.62,81039211,293361943,235.7 +WGRX,2026-05-13,0.3883,3.94,5.47,6.02,4.55,4.85,3729316,18087182,61.2 +NBIG,2026-05-13,0.2773,19.62,25.06,27.94,23.05,25.79,2522386,65052334,2.4 +OCG,2026-05-13,0.2473,1.86,2.32,2.7399,2.2,2.36,28002000,66084720,292.4 +EOSE,2026-05-13,0.2309,8.1,9.97,9.99,8.19,8.28,129095780,1068913058,6.0 +VNET,2026-05-13,0.2251,9.02,11.05,12.02,10.92,11.28,64057807,722572062,13.6 +SLS,2026-05-13,0.2098,5.22,6.315,6.72,5.685,6.53,30684742,200371365,7.5 +ERNA,2026-05-13,0.1965,12.01,14.37,14.59,11.7,12.14,1782140,21635179,92.9 +SNAL,2026-05-14,1.7778,2.511,6.975,8.35,5.25,5.4,55486585,299627559,420.0 +MOBX,2026-05-14,0.6782,1.74,2.92,4.25,2.48,3.11,158811989,493905285,229.9 +AEHL,2026-05-14,0.4227,3.62,5.15,5.89,2.35,4.53,39537924,179106795,115.0 +EDBL,2026-05-14,0.3088,16.87,22.08,22.08,17.1,18.54,1049820,19463662,131.5 +ONDU,2026-05-14,0.2519,7.7,9.64,12.57,8.98,11.63,711451,8274175,10.0 +ONDG,2026-05-14,0.2463,4.79,5.97,7.8383,5.565,7.24,4231954,30639346,5.7 +ONDL,2026-05-14,0.2447,13.24,16.48,21.5699,15.3,19.92,6197562,123455435,5.6 +POET,2026-05-14,0.2116,14.37,17.41,20.81,17.386,20.57,133113977,2738154506,3.0 +HCWB,2026-05-15,2.2938,2.022,6.66,8.52,5.946,7.32,65820738,481807802,861.9 +TDIC,2026-05-15,0.9375,20.0,38.75,44.0,17.0,26.0,5828623,151544198,455.1 +SLE,2026-05-15,0.6364,4.07,6.66,7.07,5.41,6.04,45592385,275378005,4086.6 +BIYA,2026-05-15,0.5206,7.727,11.75,14.0,8.47,9.05,3215297,29098437,53.0 +EDBL,2026-05-15,0.3587,18.54,25.19,25.2,13.64,17.52,1543243,27037617,181.9 +PIII,2026-05-15,0.294,4.03,5.215,14.35,5.0518,11.29,65658831,741288201,5042.0 +GEMI,2026-05-15,0.2823,5.26,6.745,6.9599,5.42,5.58,17026278,95006631,11.2 +CBRG,2026-05-15,0.1998,11.46,13.75,14.71,11.55,11.845,3698286,43806197,5275.7 +VRAX,2026-05-18,0.9711,3.838,7.565,13.34,5.625,5.875,30606780,179814832,341.3 +HCAI,2026-05-18,0.6318,5.54,9.04,16.96,7.2101,11.0,13458349,148041839,112.1 +CISS,2026-05-18,0.6016,3.05,4.885,6.0599,3.06,3.17,28935236,91724698,1438.6 +HIVE,2026-05-18,0.3383,2.69,3.6,3.92,3.27,3.46,111366888,385329432,7.3 +CREG,2026-05-18,0.3156,4.766,6.27,11.9,6.05,6.224,18377914,114384136,59.6 +QUCY,2026-05-18,0.2486,3.46,4.32,4.44,3.25,3.3,26497890,87443037,59.5 +RDWU,2026-05-18,0.2083,18.05,21.81,22.56,15.29,17.79,2765778,49203190,3.9 +TE,2026-05-18,0.1817,5.67,6.7,7.18,6.33,7.0,87993922,615957454,5.4 +WNW,2026-05-19,0.7054,2.41,4.11,6.39,3.7,4.75,51916241,246602144,496.4 +VRAX,2026-05-19,0.5081,5.875,8.86,9.5,6.557,7.725,7278728,56228173,71.0 +HUBC,2026-05-19,0.2061,2.552,3.078,3.54,2.4,2.64,7840741,20699556,60.4 +GIPR,2026-05-19,0.1923,2.439,2.908,5.882,2.863,4.29,46349151,198837857,1978.9 +ENHA,2026-05-19,0.17,5.0,5.85,6.06,5.0,5.26,2273214,11957105,7.2 +BKKT,2026-05-19,0.1388,8.72,9.93,10.99,9.67,9.68,6971693,67485988,6.0 +NOWL,2026-05-19,0.1195,5.19,5.81,5.92,4.9101,5.02,59657035,299478315,4.6 +CORD,2026-05-19,0.1016,6.3,6.94,7.38,6.605,6.78,4324366,29319201,0.7 +SLXN,2026-05-20,1.3416,2.69,6.299,6.66,3.658,5.298,32799023,173769223,3018.1 +WGRX,2026-05-20,0.3095,8.4,11.0,11.55,5.1,6.45,2580475,16644063,30.8 +GCTS,2026-05-20,0.1518,2.8,3.225,3.24,2.64,2.74,18612532,50998337,10.0 +WNW,2026-05-20,0.1432,4.75,5.43,6.5399,3.749,3.88,5436270,21092727,52.0 +AMPG,2026-05-20,0.1328,3.99,4.52,4.73,4.2,4.43,18598563,82391634,36.2 +EGHT,2026-05-20,0.1328,2.41,2.73,2.7425,2.24,2.26,5561778,12569618,4.1 +POET,2026-05-20,0.1285,13.07,14.75,14.9,13.58,14.78,53365594,788743479,0.9 +CTEV,2026-05-20,0.1154,16.2,18.07,22.05,16.8,21.24,372378,7909308,3.8 +ATPC,2026-05-21,0.5933,2.09,3.33,4.26,3.15,3.59,47582215,170820151,1527.9 +SBFM,2026-05-21,0.5192,3.673,5.58,5.777,4.728,5.164,28614677,147766192,7359.7 +NIVF,2026-05-21,0.4073,2.217,3.12,4.8,2.91,3.36,31489416,105804437,2122.6 +CODX,2026-05-21,0.318,2.39,3.15,4.5299,2.94,3.71,91561924,339694738,765.5 +QBTX,2026-05-21,0.2596,11.94,15.04,19.94,14.779,19.88,10367104,206098027,5.3 +WHLR,2026-05-21,0.2547,3.73,4.68,5.96,4.48,5.16,10555651,54467159,355.6 +QUBX,2026-05-21,0.2166,12.05,14.66,17.325,14.45,17.29,2202514,38081467,7.2 +RGTU,2026-05-21,0.2132,18.29,22.19,29.45,21.79,29.3,834176,24441356,9.8 +PCLA,2026-05-22,1.7244,2.25,6.13,7.3999,4.54,6.62,37043003,245224679,7822.4 +AKTX,2026-05-22,0.93,5.14,9.92,18.989,8.58,18.27,34043759,621979476,1991.4 +LFS,2026-05-22,0.8933,1.875,3.55,4.58,3.15,3.55,77868167,276431992,2348.0 +BIYA,2026-05-22,0.8219,6.175,11.25,14.6,10.2,13.0,10154312,132006056,77.5 +GOVX,2026-05-22,0.3891,2.75,3.82,4.3099,3.53,3.64,45856865,166918988,216.8 +AIFA,2026-05-22,0.295,3.665,4.746,5.94,3.18,3.531,2628476,9281148,14.5 +HCWB,2026-05-22,0.2442,15.48,19.26,20.88,16.2,17.34,3368413,58408281,39.8 +MTVA,2026-05-22,0.2404,2.87,3.56,4.31,3.35,3.85,40338532,155303348,351.5 +YMAT,2026-05-26,2.2733,2.276,7.45,8.3,6.1,6.9,24103540,166314426,999.6 +NCRA,2026-05-26,0.8884,7.329,13.84,18.04,8.127,8.997,8162647,73439335,1393.4 +MNTS,2026-05-26,0.7561,7.38,12.96,16.28,11.86,15.48,85593989,1324994949,36.3 +PONX,2026-05-26,0.3869,5.66,7.85,7.85,5.6402,6.28,908895,5707860,21.1 +CODX,2026-05-26,0.355,5.07,6.87,10.8,6.3311,9.11,50930421,463976135,232.0 +BIYA,2026-05-26,0.2692,13.0,16.5,20.0,16.1,16.5,1646320,27164280,11.0 +FUTG,2026-05-26,0.2175,3.08,3.75,4.44,3.725,4.4285,16698074,73947420,212.1 +BRAI,2026-05-26,0.2022,7.17,8.62,18.59,8.45,12.49,8323413,103959428,294.4 +ASTC,2026-05-27,2.004,2.47,7.42,19.75,6.1701,13.81,146348736,2021076044,3764.6 +FGL,2026-05-27,0.484,1.88,2.79,3.18,2.51,2.64,35629428,94061689,761.3 +APPS,2026-05-27,0.3493,4.81,6.49,7.62,6.17,6.68,54814470,366160659,29.2 +QTTB,2026-05-27,0.2934,7.09,9.17,13.15,9.15,12.85,21153852,271826998,80.1 +IPWR,2026-05-27,0.2789,6.92,8.85,9.3,7.75,8.99,8733374,78513032,17.7 +MNTS,2026-05-27,0.2568,15.48,19.455,22.2,17.47,19.5,44353575,864894712,18.8 +LGHL,2026-05-27,0.2337,7.2,8.883,10.53,7.387,8.778,4083725,35846938,536.6 +VTIX,2026-05-27,0.1933,3.0,3.58,4.56,3.21,4.39,7029880,30861173,31.1 +SPRC,2026-05-28,2.0182,4.39,13.25,15.65,10.1001,10.55,35708464,376724295,1150.3 +NCT,2026-05-28,1.1163,2.45,5.185,5.92,3.4592,3.88,33958613,131759418,982.8 +ATPC,2026-05-28,1.0246,2.85,5.77,8.5,5.52,6.07,54083911,328289339,1353.5 +ASTC,2026-05-28,0.5706,13.81,21.69,35.8,16.68,29.43,48838503,1437317143,1256.3 +IOTR,2026-05-28,0.4286,2.17,3.1,3.41,2.22,2.8,17400429,48721201,2126.4 +UMAC,2026-05-28,0.3277,18.83,25.0,32.0,24.7,29.6,48727434,1442332046,12.3 +RCAX,2026-05-28,0.3245,7.55,10.0,13.7499,9.4,12.48,4672399,58311539,16.1 +MIMI,2026-05-28,0.2543,3.52,4.415,4.415,3.02,3.21,2869794,9212038,39.7 +HUBC,2026-05-29,2.5273,2.2,7.76,12.61,4.912,5.222,68435970,357372635,260.4 +OLOX,2026-05-29,1.0711,4.92,10.19,11.2,7.85,8.77,27422705,240497122,817.6 +STG,2026-05-29,0.8971,2.72,5.16,6.2,4.19,6.14,24973753,153338843,11861.2 +REPL,2026-05-29,0.6944,4.68,7.93,9.0664,7.67,8.69,51374809,446447090,8.7 +IOTR,2026-05-29,0.625,2.8,4.55,6.08,3.4001,3.91,21866917,85499645,2445.8 +DLLL,2026-05-29,0.6243,15.17,24.64,25.67,23.14,24.94,14395584,359025864,15.0 +CMND,2026-05-29,0.4245,2.45,3.49,4.66,3.1501,3.58,44925332,160832688,470.6 +CREG,2026-05-29,0.2904,2.352,3.035,3.388,2.694,2.915,4528259,13199874,13.3 +HUBC,2026-06-01,1.0241,5.222,10.57,11.36,8.4,10.3,20877046,215033573,68.4 +ANY,2026-06-01,0.6658,1.9,3.165,4.8299,2.86,4.02,128251613,515571484,937.2 +MASK,2026-06-01,0.5112,3.58,5.41,7.06,4.73,5.45,27265606,148597552,121.2 +NAMM,2026-06-01,0.4737,1.52,2.24,2.49,2.05,2.08,29643132,61657714,74.1 +CRE,2026-06-01,0.3674,2.64,3.61,3.74,2.96,3.29,7155933,23543019,599.4 +FLNC,2026-06-01,0.2405,18.88,23.42,28.88,23.2442,27.15,46237401,1255345437,6.5 +NOWL,2026-06-01,0.1795,7.3,8.61,9.02,8.14,8.63,43870894,378605815,2.3 +SPCE,2026-06-01,0.1772,6.18,7.275,8.9,6.25,7.52,286075042,2151284315,26.9 +BJDX,2026-06-02,1.8203,2.17,6.12,7.0,3.7056,4.34,74420465,322984818,3659.6 +DXST,2026-06-02,0.8562,1.6,2.97,5.47,2.95,4.95,76447658,378415907,2676.9 +VSA,2026-06-02,0.7944,4.28,7.68,7.71,4.0,4.63,13246113,61329503,194.0 +ABTS,2026-06-02,0.4953,2.14,3.2,3.25,2.12,2.58,15241068,39321955,217.5 +LFVN,2026-06-02,0.2418,9.43,11.71,11.71,7.5,8.62,2557882,22048942,13.9 +QUCY,2026-06-02,0.2242,2.23,2.73,3.1,2.45,2.45,29444090,72138020,8.5 +SBFM,2026-06-02,0.2092,2.39,2.89,3.05,2.455,2.6,13312325,34612045,552.7 +RLAY,2026-06-02,0.1676,14.26,16.65,17.47,15.69,15.7,11483417,180289646,3.7 +XOS,2026-06-03,1.9058,2.23,6.48,8.2699,5.4,7.46,107640787,803000271,2345.9 +SDOT,2026-06-03,0.8537,3.28,6.08,9.46,5.45,6.75,52562270,354795322,401.0 +HUBC,2026-06-03,0.5083,9.6,14.48,16.4,10.85,12.99,14378534,186777156,30.3 +LASE,2026-06-03,0.4525,2.42,3.515,4.49,3.02,3.13,228898845,716453384,175.0 +YMAT,2026-06-03,0.2747,4.55,5.8,7.35,4.9,6.2,6675337,41387089,29.0 +KUST,2026-06-03,0.2479,2.38,2.97,3.29,1.7401,1.81,5810959,10517835,133.0 +MSAI,2026-06-03,0.2404,5.45,6.76,7.94,5.28,5.6,13944089,78086898,391.2 +WOK,2026-06-03,0.2308,10.4,12.8,13.1,10.33,10.71,1812720,19414231,2.9 +STI,2026-06-04,3.9147,5.04,24.77,38.15,18.87,22.71,105658244,2399498721,1748.7 +FOXX,2026-06-04,0.7762,2.86,5.08,7.9,4.94,5.25,73974879,388368114,9706.7 +SPRC,2026-06-04,0.4323,9.46,13.55,15.79,10.5,11.54,8819905,101781703,284.1 +EDHL,2026-06-04,0.3787,2.6111,3.6,7.18,3.33,4.19,60974675,255483888,4365.6 +ROLR,2026-06-04,0.3571,5.6,7.6,7.69,5.95,6.11,12890719,78762293,49.0 +MOBX,2026-06-04,0.3543,2.23,3.02,3.0599,2.155,2.21,45863226,101357729,54.2 +YYGH,2026-06-04,0.3472,4.407,5.937,7.8,4.533,4.86,11843162,57557767,689.8 +RPGL,2026-06-04,0.264,3.03,3.83,5.56,2.54,2.93,3168761,9284469,29.6 +BESS,2026-06-05,0.4951,3.05,4.56,5.08,3.2519,3.52,17656871,62152185,160.9 +BBCP,2026-06-05,0.4173,7.98,11.31,11.98,9.7,10.43,4419808,46098597,39.9 +MASK,2026-06-05,0.3158,3.61,4.75,4.805,3.65,3.825,13436581,51394922,34.5 +MRLN,2026-06-05,0.2799,7.18,9.19,10.2499,8.31,8.6,28535092,245401791,18.4 +CMND,2026-06-05,0.2749,2.91,3.71,4.5499,3.26,3.98,41850934,166566717,438.4 +HUBC,2026-06-05,0.1386,4.04,4.6,4.998,3.5,3.82,4278127,16342445,4.8 +MSOX,2026-06-05,0.1136,3.52,3.92,4.25,3.75,4.03,5615363,22629912,2.2 +LASE,2026-06-05,0.1119,3.62,4.025,4.12,3.0,3.1,40932849,126891831,31.2 +OCC,2026-06-08,0.5943,12.3,19.61,22.0,17.01,19.0,19000946,361017974,60.8 +NCRA,2026-06-08,0.4254,4.803,6.846,7.2,3.759,3.9,9049452,35292862,832.5 +TDIC,2026-06-08,0.3946,5.6,7.81,27.0,7.5,12.53,22877658,286657054,93.7 +MPAA,2026-06-08,0.3229,10.59,14.01,15.3,12.94,14.25,716941,10216409,16.1 +ABAT,2026-06-08,0.2862,3.11,4.0,4.25,3.3603,3.8,67704435,257276853,12.0 +FRSX,2026-06-08,0.2713,1.88,2.39,2.95,1.22,1.4,52861382,74005934,1282.9 +WOK,2026-06-08,0.1805,8.7,10.27,11.97,9.3,10.01,3222052,32252740,4.5 +SDOT,2026-06-08,0.1779,12.14,14.3,23.89,14.3,20.53,4575081,93926412,28.2 +GMM,2026-06-09,1.3584,4.52,10.66,11.73,4.6,5.395,20348300,109779078,291.4 +CPOP,2026-06-09,0.4622,2.882,4.214,8.4,3.0,3.6,12284001,44222403,2999.4 +FAC,2026-06-09,0.4493,13.8,20.0,25.33,14.5,16.0,4882465,78119440,52.6 +MTEN,2026-06-09,0.3325,1.94,2.585,9.52,1.4401,1.52,58702947,89228479,1941.6 +GMEX,2026-06-09,0.252,8.019,10.04,11.16,7.2,7.428,4158570,30889857,93.3 +DAIC,2026-06-09,0.2434,2.26,2.81,3.52,1.9011,1.93,17138284,33076888,1540.3 +RNAC,2026-06-09,0.1962,5.86,7.01,9.33,6.59,6.85,3495061,23941167,21.4 +BNAI,2026-06-09,0.191,18.27,21.76,23.09,18.5,19.18,2563250,49163135,7.7 +DSY,2026-06-10,4.2065,1.84,9.58,19.9,6.39,7.2,113594039,817877080,11692.0 +CPOP,2026-06-10,0.4167,3.6,5.1,25.5,4.1,15.2,28796534,437707316,6662.0 +QH,2026-06-10,0.383,3.42,4.73,5.89,3.25,3.25,17410769,56584999, +YYGH,2026-06-10,0.2929,3.759,4.86,5.307,3.873,4.95,10106091,50025150,209.0 +SMCZ,2026-06-10,0.2425,7.34,9.12,11.42,8.8,11.39,5097709,58062905,5.7 +AZI,2026-06-10,0.1892,1.85,2.2,3.7499,2.14,2.35,27364919,64307559,1265.3 +XOS,2026-06-10,0.1872,3.58,4.25,4.64,3.65,3.66,4935216,18062890,54.6 +STAK,2026-06-10,0.1469,5.65,6.48,7.89,5.43,7.58,1278666,9692288,1.7 +EDHL,2026-06-11,3.7229,3.5,16.53,17.49,5.85,5.98,65397748,391078533,2317.3 +CCHH,2026-06-11,1.9335,3.46,10.15,10.2,4.7,5.201,13581421,70636970,2130.1 +QH,2026-06-11,1.16,3.25,7.02,8.15,5.15,7.41,15059797,111593095, +FXHO,2026-06-11,0.71,10.0,17.1,23.5,8.0,8.501,5986712,50893038,489.1 +MTEN,2026-06-11,0.3041,1.71,2.23,2.96,1.88,2.29,23997014,54953162,738.4 +LASE,2026-06-11,0.2651,2.15,2.72,2.85,2.38,2.41,49219639,118619329,35.0 +VRA,2026-06-11,0.1132,3.18,3.54,3.73,3.16,3.46,9329436,32279848,67.9 +DAIC,2026-06-11,0.0838,1.85,2.005,2.53,1.93,2.02,3397533,6863016,275.1 +DSY,2026-06-12,0.7732,3.88,6.88,7.24,4.42,4.88,29305469,143010688,2921.9 +GMM,2026-06-12,0.5139,2.88,4.36,4.7495,3.12,3.36,36483187,122583508,243.3 +EDHL,2026-06-12,0.4147,5.98,8.46,11.13,7.2193,8.64,11418373,98654742,262.7 +CUPR,2026-06-12,0.3528,2.41,3.2602,8.2299,3.21,3.97,83383243,331031474,2044.2 +UBXG,2026-06-12,0.261,4.79,6.04,9.92,5.15,7.87,35398388,278585313,328.7 +MASK,2026-06-12,0.1806,2.27,2.68,3.29,2.2201,2.37,24605753,58315634,37.9 +CIIT,2026-06-12,0.1392,1.58,1.8,2.95,1.6,1.76,29490105,51902584,1088.1 +STAK,2026-06-12,0.1355,8.12,9.22,9.5,7.612,7.72,726580,5609197,0.8 +CAST,2026-06-15,2.1226,1.55,4.84,4.95,3.26,3.75,158154150,593078062,684.5 +CUPR,2026-06-15,1.7582,3.97,10.95,14.8,7.0,8.41,48558718,408378818,1123.3 +VSME,2026-06-15,0.6331,1.69,2.76,3.77,2.64,3.25,64724029,210353094,929.9 +JRSH,2026-06-15,0.5231,3.46,5.27,5.4699,3.61,3.75,36689392,137585220,422.6 +SDOT,2026-06-15,0.3726,16.21,22.25,26.93,20.0,23.47,1023267,24016076,3.3 +DXST,2026-06-15,0.2675,2.28,2.89,3.9,2.5,2.7,7367268,19891623,217.7 +GMM,2026-06-15,0.2143,3.36,4.08,4.6,3.37,3.44,12205679,41987535,63.0 +ETHT,2026-06-15,0.1849,8.558,10.14,10.45,9.991,10.16,3167775,32184594,1.8 +SLBT,2026-06-16,2.3664,3.33,11.21,14.5,7.55,8.89,33169121,294873485,5944.3 +TDIC,2026-06-16,0.7219,5.43,9.35,10.5,7.144,7.6,17877604,135869790,45.6 +AHMA,2026-06-16,0.557,1.93,3.005,3.38,2.36,2.69,39379755,105931540,267.3 +LPRO,2026-06-16,0.481,2.1,3.11,3.13,3.11,3.11,28218903,87760788,25.6 +GDHG,2026-06-16,0.4049,1.63,2.29,2.85,1.6,1.6,18350979,29361566,6813.1 +CRVO,2026-06-16,0.3468,2.48,3.34,7.45,2.99,4.52,200681463,907080212,2913.5 +CRE,2026-06-16,0.3365,3.15,4.21,6.17,3.15,3.27,22910356,74916864,665.5 +NIVF,2026-06-16,0.3217,1.744,2.305,3.12,1.814,2.1,35484011,74516423,211.1 +ICCM,2026-06-17,0.9859,2.13,4.23,9.54,3.6,6.4,152929179,978746745,4052.0 +ALOT,2026-06-17,0.7091,16.69,28.525,28.68,28.25,28.35,2394800,67892580,45.7 +LNAI,2026-06-17,0.6661,2.845,4.74,5.02,3.64,4.0,26485849,105943396,220.3 +YMAT,2026-06-17,0.656,1.93,3.196,4.913,2.735,3.75,34375641,128908653,83.8 +NIVF,2026-06-17,0.5,2.1,3.15,3.18,2.106,2.4,18484912,44363788,106.3 +CLPT,2026-06-17,0.3606,13.34,18.15,18.71,16.67,16.81,6884960,115736177,13.5 +CRE,2026-06-17,0.3333,3.27,4.36,4.41,3.6301,4.2,7750696,32552923,225.1 +SDOT,2026-06-17,0.2687,8.67,11.0,20.6,11.0,17.18,3033401,52113829,9.7 +CAST,2026-06-18,1.3126,5.15,11.91,12.2,7.15,8.07,113024779,912109966,435.3 +LNKS,2026-06-18,0.8688,1.6,2.99,3.55,2.1591,2.68,69880157,187278820,365.5 +LPA,2026-06-18,0.3917,3.14,4.37,4.38,3.5,3.57,10511632,37526526,668.1 +UUUG,2026-06-18,0.3232,5.94,7.86,8.05,6.6,6.89,1867442,12866675,4.2 +WOK,2026-06-18,0.3171,4.32,5.69,5.74,1.78,3.2,10518239,33658364,10.6 +BFLY,2026-06-18,0.2627,5.71,7.21,8.94,7.1,8.9,60481423,538284664,13.9 +CRVO,2026-06-18,0.2283,3.81,4.68,7.81,3.84,4.24,107912418,457548652,1377.5 +QSU,2026-06-18,0.2214,11.52,14.07,15.3699,12.32,15.35,708007,10867907,6.1 +NXTS,2026-06-22,1.1654,5.08,11.0,23.8,11.0,13.0,62108172,807406236,4386.9 +EHGO,2026-06-22,0.5222,1.8,2.74,6.75,2.6,4.06,117096726,475412707,4860.5 +CRMT,2026-06-22,0.4688,2.4,3.525,3.5299,2.87,3.01,48261246,145266350,404.7 +ICCM,2026-06-22,0.3074,5.4,7.06,7.53,5.61,5.93,15903258,94306319,251.4 +AXTU,2026-06-22,0.2225,11.755,14.37,14.66,11.61,13.83,824256,11399460,3.5 +SSTK,2026-06-22,0.1876,13.22,15.7,16.47,15.0,15.71,1482018,23282502,3.8 +QTEX,2026-06-22,0.1294,2.01,2.27,2.28,1.96,2.01,13430640,26995586,0.9 +SMCX,2026-06-22,0.1139,10.18,11.34,14.24,11.26,13.35,17165603,229160800,6.0 +HSCS,2026-06-23,0.5367,1.77,2.72,3.7499,2.51,2.75,135745732,373300763,5230.6 +BLZE,2026-06-23,0.2697,8.12,10.31,11.845,9.62,11.66,35465086,413522902,25.4 +SNDQ,2026-06-23,0.2395,2.63,3.26,3.39,3.14,3.36,72099641,242254793,2.0 +GITS,2026-06-23,0.2152,1.51,1.835,2.51,1.835,2.18,37924759,82675974,1214.7 +BEZ,2026-06-23,0.2135,10.185,12.36,12.93,11.1801,11.58,927942,10745568,1.9 +NBIZ,2026-06-23,0.1941,6.75,8.06,8.24,6.2146,7.13,7504781,53509088,2.9 +EDZ,2026-06-23,0.164,13.11,15.26,15.4,14.76,15.33,571766,8765172,1.9 +DAMD,2026-06-23,0.1534,1.63,1.88,1.885,1.76,1.81,22940136,41521646,1.2 +PLSM,2026-06-24,2.0645,3.41,10.45,12.97,6.18,6.59,58327938,384381111,6609.4 +CUPR,2026-06-24,0.3832,3.94,5.45,7.35,5.13,5.74,25834748,148291453,249.0 +QNRX,2026-06-24,0.3138,3.25,4.27,4.98,3.63,3.83,8583278,32873954,302.3 +ABSI,2026-06-24,0.2834,7.41,9.51,11.0,8.67,10.075,38228055,385147654,8.4 +WEN,2026-06-24,0.2486,6.255,7.81,8.8871,7.5,7.86,210487900,1654434894,22.1 +CCXIU,2026-06-24,0.2306,10.67,13.13,13.4,12.35,12.5,686344,8579300,2537.3 +CCXI,2026-06-24,0.2131,10.4199,12.64,13.49,11.83,11.99,13827999,165797708,10307.9 +RUN,2026-06-24,0.2092,12.81,15.49,16.79,14.345,14.42,53480038,771182147,6.8 +MIMI,2026-06-25,0.4428,2.71,3.91,4.14,3.1301,3.23,47328870,152872250,818.3 +FCUV,2026-06-25,0.3643,4.42,6.03,7.13,4.75,4.76,28358180,134984936,471.7 +WYY,2026-06-25,0.3621,17.62,24.0,24.3,18.77,20.2,5901766,119215673,38.1 +EHGO,2026-06-25,0.2405,3.7,4.59,4.85,4.19,4.57,10120809,46252097,230.4 +MEI,2026-06-25,0.1692,13.09,15.305,18.47,15.01,18.0,3568525,64233450,5.8 +GLXU,2026-06-25,0.1558,9.95,11.5,11.5,9.19,9.73,738735,7187891,3.0 +VELO,2026-06-25,0.1357,18.05,20.5,20.5495,16.14,17.38,8723062,151606817,2.5 +BB,2026-06-25,0.1276,8.62,9.72,10.675,9.52,10.34,72681329,751524941,2.2 +INLF,2026-06-26,1.1,6.0,12.6,13.78,9.06,9.34,11354956,106055289,135178.0 +SDOT,2026-06-26,0.8608,6.18,11.5,22.75,9.81,21.45,45348201,972718911,87.8 +ILLR,2026-06-26,0.6819,3.05,5.1299,5.48,3.79,4.46,84630934,377453965,618.1 +TII,2026-06-26,0.2646,2.23,2.82,2.845,2.02,2.1,24982101,52462412,95.4 +SKYQ,2026-06-26,0.1553,2.64,3.05,3.5,2.72,2.88,29654737,85405642,41.7 +BEZ,2026-06-26,0.1422,12.45,14.22,17.35,13.4,17.01,1059878,18028524,2.1 +ZDAI,2026-06-26,0.1395,2.15,2.45,3.0,1.91,2.25,23910154,53797846,853.1 +SNDQ,2026-06-26,0.1389,1.98,2.255,2.4382,2.11,2.39,111173213,265703979,2.8 +UPC,2026-06-29,4.8007,2.96,17.17,17.96,10.51,12.18,55191507,672232555,6187.4 +DCOY,2026-06-29,1.1747,5.518,12.0,13.51,8.75,9.59,12830305,123042624,1070.0 +INLF,2026-06-29,0.4775,9.34,13.8,15.42,9.58,13.2,5612189,74080894,57267.2 +NNBR,2026-06-29,0.3822,2.76,3.815,4.35,3.41,3.62,97018634,351207455,182.7 +PETS,2026-06-29,0.267,1.76,2.23,2.35,1.76,1.82,27699887,50413794,249.0 +QDEL,2026-06-29,0.2328,13.79,17.0,19.8,16.73,18.23,6604782,120405175,4.1 +TVRD,2026-06-29,0.2133,1.5,1.82,2.1899,1.78,1.91,4328754,8267920,74.9 +RPAY,2026-06-29,0.1927,3.58,4.27,4.545,4.195,4.26,5549554,23641100,12.1 +JEM,2026-06-30,3.5741,12.96,59.28,59.28,36.24,47.64,10187012,485309251,1512.5 +SVRE,2026-06-30,1.136,2.72,5.8098,5.9,2.0201,2.64,27355069,72217382,1394.9 +BIYA,2026-06-30,0.827,2.82,5.152,6.399,3.179,5.59,40588873,226891800,266.6 +EDBL,2026-06-30,0.8033,7.353,13.26,16.06,7.911,8.595,7580906,65157887,169.2 +ARI,2026-06-30,0.5468,6.853,10.6,10.74,10.54,10.68,3711489,39638702,2.6 +AVXX,2026-06-30,0.4921,5.06,7.55,7.78,6.34,6.84,4818543,32958834,20.6 +CUPR,2026-06-30,0.2556,4.46,5.6,8.26,5.41,6.59,26249870,172986643,195.3 +PAVS,2026-06-30,0.2276,6.15,7.55,9.92,7.18,7.43,6221600,46226488,35.9 +TC,2026-07-01,1.7784,1.85,5.14,6.33,3.57,4.8,65433881,314082628,51726.4 +CANF,2026-07-01,0.6902,2.97,5.02,5.98,3.82,4.63,57496480,266208702,2018.3 +SOC,2026-07-01,0.2597,3.08,3.88,4.45,3.86,4.4,90929992,400091964,23.8 +NBIZ,2026-07-01,0.2519,6.71,8.4,9.12,8.18,9.05,8404745,76062942,3.0 +CORD,2026-07-01,0.2131,5.49,6.66,7.095,6.525,7.02,10486145,73612737,2.5 +SNDQ,2026-07-01,0.1641,1.95,2.27,2.4099,2.19,2.35,83044455,195154469,1.8 +TONX,2026-07-01,0.1608,2.55,2.96,3.47,2.82,2.91,2660056,7740762,8.0 +DXST,2026-07-01,0.1159,2.07,2.31,2.3889,1.7402,2.05,3676552,7536931,40.8 +DSY,2026-07-02,0.4549,2.88,4.19,4.9,3.92,4.47,22719528,101556290,305.6 +CETX,2026-07-02,0.2107,2.8,3.39,4.05,2.59,2.97,26013628,77260475,445.6 +MSTU,2026-07-02,0.1405,1.85,2.11,2.28,2.02,2.15,122006416,262313794,2.6 +MSTX,2026-07-02,0.1325,8.53,9.66,10.45,9.27,9.83,13226697,130018431,2.8 +NEXA,2026-07-02,0.1204,12.04,13.49,14.39,12.66,13.04,1633019,21294567,2.1 +CLRO,2026-07-02,0.118,3.22,3.6,9.62,3.12,6.48,88542618,573756164,12794.3 +TENX,2026-07-02,0.1031,13.29,14.66,15.49,14.002,15.46,3895021,60217024,5.0 +AVXX,2026-07-02,0.0971,7.4375,8.16,9.845,7.84,9.04,2496691,22570086,7.7 +LHSW,2026-07-06,2.7778,1.8,6.8,7.74,4.94,6.8,101797487,692222911,1068.7 +FXHO,2026-07-06,0.8146,7.2,13.065,25.0,11.07,19.55,8140602,159148769,127.5 +SEER,2026-07-06,0.3858,1.62,2.245,2.3399,2.15,2.19,29239097,64033622,211.4 +SPHL,2026-07-06,0.3516,2.56,3.46,3.5,2.65,2.96,11821586,34991894,635.9 +JLHL,2026-07-06,0.2497,7.33,9.16,9.4399,3.3,3.69,5002398,18458848,108.2 +TDIC,2026-07-06,0.2033,4.82,5.8,6.95,3.0,3.59,8263227,29664984,29.6 +AXTX,2026-07-06,0.1836,8.66,10.25,12.27,9.85,10.77,3740957,40290106,1.2 +PEW,2026-07-06,0.1617,2.35,2.73,3.0,2.65,2.85,10789418,30749841,40.6 +TDTH,2026-07-07,0.6484,1.82,3.0,3.16,2.37,2.56,40655985,104079321,562.2 +CCHH,2026-07-07,0.5028,4.499,6.761,7.491,2.715,3.498,15185594,53119207,656.3 +CLRO,2026-07-07,0.37,7.0,9.59,16.5,8.13,13.84,83757724,1159206900,11054.9 +TDIC,2026-07-07,0.2033,3.59,4.32,4.54,3.45,4.07,9476522,38569444,34.0 +EDHL,2026-07-07,0.1641,3.96,4.61,5.46,4.43,4.94,3377818,16686420,56.8 +SKYQ,2026-07-07,0.1557,2.12,2.45,3.3,2.39,3.0,32801883,98405649,29.6 +SNDQ,2026-07-07,0.149,3.02,3.47,3.93,3.3901,3.46,137296048,475044326,2.6 +DAMD,2026-07-07,0.125,1.52,1.71,1.78,1.66,1.7,35263203,59947445,1.6 +EDBL,2026-07-08,0.4958,3.947,5.904,6.795,4.671,5.22,10509271,54858394,228.5 +IOTR,2026-07-08,0.4067,2.52,3.545,3.8,3.09,3.54,25800694,91334456,657.4 +BATL,2026-07-08,0.309,1.78,2.33,2.42,1.43,1.64,140337538,230153562,24.3 +TC,2026-07-08,0.278,2.05,2.62,2.92,2.21,2.48,5405863,13406540,2841.5 +BABX,2026-07-08,0.1904,14.44,17.19,17.86,16.6401,17.62,3027223,53339669,3.9 +BABU,2026-07-08,0.19,7.815,9.3,9.68,9.04,9.5572,829646,7929092,12.2 +SKYQ,2026-07-08,0.1567,3.0,3.47,4.39,3.14,3.82,59448928,227094904,32.5 +KC,2026-07-08,0.1028,9.44,10.41,10.675,10.21,10.52,4721194,49666960,3.4 +VRAX,2026-07-09,2.4874,3.18,11.09,13.19,5.8632,6.36,72008044,457971159,901.4 +RPGL,2026-07-09,0.3596,1.78,2.42,2.58,2.1498,2.37,22439556,53181747,222.2 +LGHL,2026-07-09,0.3001,2.839,3.691,4.284,2.959,3.222,9585379,30884091,229.8 +JLHL,2026-07-09,0.219,3.06,3.73,14.8999,3.72,12.79,80852015,1034097271,1555.3 +IOTR,2026-07-09,0.1921,3.54,4.22,4.22,3.6,3.77,1373256,5177175,34.3 +TDTH,2026-07-09,0.1858,1.83,2.17,2.78,1.84,2.59,11581817,29996906,160.2 +SMPL,2026-07-09,0.1706,12.84,15.03,15.088,12.2805,13.01,6953805,90469003,3.8 +AXTX,2026-07-09,0.1594,9.6,11.13,11.72,10.02,10.36,5891121,61032013,1.8 +GMM,2026-07-10,2.075,1.85,5.6888,5.7899,3.24,4.57,138579727,633309352,477.4 +CRCA,2026-07-10,0.2569,12.65,15.9,16.66,13.5401,13.99,5120868,71640943,4.9 +CRCG,2026-07-10,0.2456,8.59,10.7,11.25,9.13,9.41,14231109,133914735,6.2 +WOK,2026-07-10,0.1733,2.02,2.37,2.6299,2.06,2.3,13929484,32037813,19.6 +YMAT,2026-07-10,0.1474,1.9,2.18,2.94,1.95,2.44,4727301,11534614,19.7 +CRE,2026-07-10,0.1271,2.91,3.28,3.9699,3.0,3.24,3609969,11696299,37.6 +EQPT,2026-07-10,0.125,16.0,18.0,19.2,17.26,18.65,7224362,134734351,3.2 +VOD,2026-07-10,0.1245,13.08,14.708,14.8486,14.53,14.72,17053134,251022132,5.4 +VEEE,2026-07-13,1.5394,4.82,12.24,36.07,10.06,24.86,75594489,1879278996,2294.8 +QTTB,2026-07-13,0.6334,11.21,18.31,22.5,17.281,21.38,27869504,595849995,63.2 +AGEN,2026-07-13,0.6179,3.35,5.42,8.7,4.91,6.12,174281834,1066604824,268.4 +MIMI,2026-07-13,0.4465,2.15,3.11,3.46,2.67,2.96,45394119,134366592,717.6 +GFUZ,2026-07-13,0.4035,9.12,12.8,14.85,9.12,11.0,6212159,68333749,24.7 +PLSM,2026-07-13,0.3161,3.86,5.08,5.191,3.4,3.62,24699960,89413855,2136.4 +EHGO,2026-07-13,0.2988,1.64,2.13,2.84,2.01,2.12,29092679,61676479,69.3 +BRAI,2026-07-13,0.2004,5.515,6.62,11.5,6.28,6.43,8839758,56839643,122.9 +NXTC,2026-07-14,3.2385,2.18,9.24,9.9,5.76,6.58,111534470,733896812,834.4 +UBXG,2026-07-14,0.4349,6.3,9.04,11.95,4.08,4.61,9962127,45925405,18.3 +CLSX,2026-07-14,0.368,14.43,19.74,20.53,15.45,16.86,1029135,17351216,5.4 +CLSK,2026-07-14,0.1881,12.36,14.685,15.1,12.8,13.45,76379385,1027302728,3.9 +AXTX,2026-07-14,0.1697,6.54,7.65,8.6,7.12,8.37,6609438,55320996,1.9 +SNDG,2026-07-14,0.1543,13.16,15.19,15.25,13.68,14.46,1819282,26306817,1.6 +AAOG,2026-07-14,0.1432,3.84,4.39,4.92,4.22,4.76,1557530,7413842,1.3 +GFUZ,2026-07-14,0.1432,11.0,12.575,14.4196,12.4205,13.76,1608433,22132038,6.4 +ELVA,2026-07-15,0.5463,7.89,12.2,12.3,10.2,11.76,30032169,353178307,88.9 +ERNA,2026-07-15,0.4043,6.06,8.51,9.9,6.11,6.73,26100829,175658579,865.0 +PYPG,2026-07-15,0.3151,6.11,8.035,8.3,7.671,8.21,5055387,41504727,7.7 +TRT,2026-07-15,0.1754,10.26,12.06,12.94,10.57,11.0,1730961,19040571,3.0 +KOPN,2026-07-15,0.117,3.76,4.2,4.43,4.1,4.23,7577652,32053467,1.2 +LTRX,2026-07-15,0.0914,5.36,5.85,5.995,5.47,5.57,1181237,6579490,1.1 +BABU,2026-07-15,0.0897,10.15,11.06,11.73,11.0,11.08,1255836,13914662,13.8 +NVVE,2026-07-15,0.0892,15.8,17.21,35.7899,17.21,21.56,5770845,124419418,318.5 diff --git a/research/warrior/run_phase1.py b/research/warrior/run_phase1.py new file mode 100644 index 000000000..87efc70cd --- /dev/null +++ b/research/warrior/run_phase1.py @@ -0,0 +1,176 @@ +"""Warrior pattern spec — Phase 1 signal utility, generic liquid track. + +Detectors: their code, unmodified (warrior_pattern_backtest.py). +Data: SPY+QQQ 5m 2016-2026 (RTH), SPY 1m 2022-2026 (RTH) for the 10-candle rule. +Per spec: next-bar-open conservative execution AND their intrabar R-simulator, +random baseline matched by symbol/time-of-day, halves split, MFE/MAE, races. +""" +import os, sys +from datetime import time as dtime +from zoneinfo import ZoneInfo +import numpy as np +import pandas as pd + +sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "warrior_backtest")) +from warrior_pattern_backtest import (consecutive_candle_reversals, flat_top_breakouts, + failed_flat_top_breakouts, simulate_intraday_barrier_trade) + +DBT = "/tmp/claude-0/-home-user-Kronos/2f0190a1-7250-5bf8-81dd-e6806ae4a3ce/scratchpad/daily_bt" +NY = ZoneInfo("America/New_York") + +# --- smoke test (their canonical case): 5 red then new high must fire long --- +idx = pd.date_range("2024-01-02 10:00", periods=8, freq="5min") +smoke = pd.DataFrame({ + "open": [100, 99.5, 99, 98.5, 98, 97.5, 97.4, 97.8], + "high": [100.2, 99.6, 99.1, 98.6, 98.1, 97.6, 98.2, 98.5], + "low": [99.4, 98.9, 98.4, 97.9, 97.4, 97.0, 97.2, 97.6], + "close": [99.5, 99, 98.5, 98, 97.5, 97.2, 98.0, 98.3], +}, index=idx) +s = consecutive_candle_reversals(smoke, n_consecutive=5) +assert any(x.side == "long" and x.signal_index == 6 for x in s), "smoke test failed" +print("smoke test OK (5-red reversal fires on canonical case)") + + +def load5(sym): + df = pd.read_csv(os.path.join(DBT, f"{sym}_5m_full.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 55))] + df = df.sort_values("ts").set_index("ts") + return df[["open", "high", "low", "close", "volume"]] + + +def load1(): + df = pd.read_csv(os.path.join(DBT, "SPY_1m.csv")) + df["ts"] = pd.to_datetime(df["timestamps"]).dt.tz_convert(NY) + df = df[(df["ts"].dt.time >= dtime(9, 30)) & (df["ts"].dt.time <= dtime(15, 59))] + df = df.sort_values("ts").set_index("ts") + return df[["open", "high", "low", "close", "volume"]] + + +def phase1(df, signals, label, H=12, race_t=0.0025, per_day_dedup_bars=6): + """Next-bar-open execution: enter open[i+1], measure fwd/MFE/MAE H bars, same-day only.""" + o = df["open"].to_numpy(float); h = df["high"].to_numpy(float) + l = df["low"].to_numpy(float); c = df["close"].to_numpy(float) + days = df.index.date + n = len(df) + half_cut = pd.Timestamp("2021-07-01", tz=NY) + rows = [] + last_by_side = {} + for s in signals: + i = s.signal_index + if i + 1 >= n or days[i] != days[i + 1]: + continue + key = (s.pattern, s.side) + if i - last_by_side.get(key, -999) < per_day_dedup_bars: + continue + last_by_side[key] = i + e = o[i + 1] + end = i + 1 + while end + 1 < n and days[end + 1] == days[i] and end + 1 <= i + 1 + H: + end += 1 + if end <= i + 1: + continue + sgn = 1 if s.side == "long" else -1 + seg_h = h[i + 2:end + 1] if end >= i + 2 else h[i + 1:end + 1] + seg_l = l[i + 2:end + 1] if end >= i + 2 else l[i + 1:end + 1] + if len(seg_h) == 0: + continue + mfe = (seg_h.max() / e - 1) * sgn if sgn > 0 else (1 - seg_l.min() / e) + mae = (1 - seg_l.min() / e) * -1 if sgn > 0 else (seg_h.max() / e - 1) * -1 + drift = (c[end] / e - 1) * sgn + # race + up = e * (1 + race_t); dn = e * (1 - race_t) + race = 0 + for j in range(i + 2, end + 1): + hu = h[j] >= up; du = l[j] <= dn + if hu and du: + break + if hu: + race = sgn; break + if du: + race = -sgn; break + rows.append(dict(side=s.side, drift=drift, mfe=mfe, mae=mae, race=race, + half=1 if df.index[i] < half_cut else 2)) + E = pd.DataFrame(rows) + if not len(E): + print(f" {label}: 0 events"); return None + for side in E["side"].unique(): + S = E[E.side == side] + w = (S.race == 1).sum(); lo_ = (S.race == -1).sum() + h1 = S[S.half == 1]; h2 = S[S.half == 2] + print(f" {label:<34s} {side:<5s} n={len(S):>5d} drift {S.drift.mean()*100:+.3f}% " + f"medMFE {S.mfe.median()*100:.3f}% medMAE {S.mae.median()*100:+.3f}% " + f"race {w}/{lo_} ({w/max(w+lo_,1):.0%}) halves drift {h1.drift.mean()*100:+.3f}/{h2.drift.mean()*100:+.3f}%") + return E + + +def baseline(df, label, H=12, race_t=0.0025): + o = df["open"].to_numpy(float); h = df["high"].to_numpy(float) + l = df["low"].to_numpy(float); c = df["close"].to_numpy(float) + days = df.index.date; n = len(df) + drifts = []; races = [] + for i in range(30, n - H - 2, 97): + if days[i] != days[i + 1]: + continue + e = o[i + 1] + end = i + 1 + H + if end >= n or days[end] != days[i]: + continue + drifts.append(c[end] / e - 1) + up = e * (1 + race_t); dn = e * (1 - race_t); r = 0 + for j in range(i + 2, end + 1): + hu = h[j] >= up; du = l[j] <= dn + if hu and du: break + if hu: r = 1; break + if du: r = -1; break + races.append(r) + d = np.array(drifts); r = np.array(races) + w = (r == 1).sum(); lo_ = (r == -1).sum() + print(f" {label:<34s} BASE n={len(d):>5d} drift {d.mean()*100:+.3f}% race up {w/max(w+lo_,1):.0%}") + + +def rsim(df, signals, label): + """Their intrabar R-simulator, guide defaults (1R stop / 2R target, 0.25% risk).""" + res = [] + last = {} + for s in signals: + key = (s.pattern, s.side) + if s.signal_index - last.get(key, -999) < 6: + continue + last[key] = s.signal_index + try: + r = simulate_intraday_barrier_trade(df, s) + except Exception: + continue + res.append(r) + if not res: + return + R = pd.DataFrame(res) + for side in R["side"].unique(): + S = R[R.side == side] + gains = S[S.pnl_pct > 0].pnl_pct.sum(); losses = -S[S.pnl_pct < 0].pnl_pct.sum() + pf = gains / losses if losses > 0 else float("inf") + print(f" {label:<34s} {side:<5s} [their R-sim] n={len(S):>5d} WR {(S.pnl_pct>0).mean():.0%} " + f"PF {pf:.2f} avg {S.pnl_pct.mean()*100:+.3f}% target/stop/time {sum(S.reason=='target')}/{sum(S.reason=='stop')}/{sum(S.reason=='time')}") + + +for sym in ["SPY", "QQQ"]: + df = load5(sym) + print(f"\n================ {sym} 5m (2016-2026, RTH) ================") + baseline(df, f"{sym} 5m") + sig_rev = consecutive_candle_reversals(df, n_consecutive=5) + phase1(df, sig_rev, "5-candle exhaustion reversal") + rsim(df, sig_rev, "5-candle exhaustion reversal") + sig_ft = flat_top_breakouts(df, min_touches=3, tolerance_pct=0.001) + phase1(df, sig_ft, "flat-top breakout (3 touch, 0.10%)") + rsim(df, sig_ft, "flat-top breakout") + sig_ff = failed_flat_top_breakouts(df, min_touches=3, tolerance_pct=0.001) + phase1(df, sig_ff, "failed flat-top (bull trap short)") + rsim(df, sig_ff, "failed flat-top (intrabar CAVEAT)") + +print("\n================ SPY 1m (2022-2026, RTH) ================") +d1 = load1() +baseline(d1, "SPY 1m", H=24) +sig10 = consecutive_candle_reversals(d1, n_consecutive=10) +phase1(d1, sig10, "10-candle exhaustion reversal", H=24) +rsim(d1, sig10, "10-candle exhaustion reversal") diff --git a/research/warrior/run_smallcap.py b/research/warrior/run_smallcap.py new file mode 100644 index 000000000..945058034 --- /dev/null +++ b/research/warrior/run_smallcap.py @@ -0,0 +1,143 @@ +"""Stage 3: Warrior patterns on the small-cap gapper universe (native habitat). + +Per event day: 1m bars 04:00-20:00 ET. Premarket high = 04:00-09:29 high. +Detectors (on RTH bars): gap-and-go premarket-high breakout (1m), flat-top breakout, +failed flat-top, 5-candle 5m reversal, 10-candle 1m reversal — user's detector code. +Execution: next-bar-open, costs 30bps round trip (small-cap spreads). R-scaled races: ++/-2% barriers, 60-minute window. Buckets: gap size, price, rel-vol, year. +CAVEAT: survivorship (current listings only) — flatters longs, dampens shorts. +""" +import os, sys +from datetime import time as dtime +from zoneinfo import ZoneInfo +import numpy as np +import pandas as pd + +HERE = os.path.dirname(os.path.abspath(__file__)) +sys.path.insert(0, os.path.join(HERE, "warrior_backtest")) +from warrior_pattern_backtest import (consecutive_candle_reversals, flat_top_breakouts, + failed_flat_top_breakouts) + +NY = ZoneInfo("America/New_York") +COST = 0.0030 +RACE_T = 0.02 +H1M = 60 # fwd window on 1m +H5M = 12 # fwd window on 5m + +EV = pd.read_csv(os.path.join(HERE, "gapper_events.csv")) +EV["key"] = list(zip(EV["symbol"], EV["date"])) +meta = EV.set_index("key")[["gap", "prev_close", "rel_vol"]].to_dict("index") + +print("loading event bars...", flush=True) +B = pd.read_csv(os.path.join(HERE, "event_bars.csv")) +B["ts"] = pd.to_datetime(B["t"]).dt.tz_convert(NY) +groups = {k: g for k, g in B.groupby(["symbol", "date"])} +print(f"event-days with bars: {len(groups)}", flush=True) + + +def prep(g): + g = g.sort_values("ts").set_index("ts") + g = g.rename(columns={"o": "open", "h": "high", "l": "low", "c": "close", "v": "volume"}) + pm = g[g.index.time < dtime(9, 30)] + rth = g[(g.index.time >= dtime(9, 30)) & (g.index.time <= dtime(15, 59))] + return pm, rth[["open", "high", "low", "close", "volume"]] + + +def agg5(rth): + return rth.resample("5min").agg(open=("open", "first"), high=("high", "max"), + low=("low", "min"), close=("close", "last"), + volume=("volume", "sum")).dropna() + + +def outcome(df, i, side, H): + o = df["open"].to_numpy(float); h = df["high"].to_numpy(float); l = df["low"].to_numpy(float) + c = df["close"].to_numpy(float) + if i + 2 >= len(df): + return None + e = o[i + 1] + if e <= 0: + return None + end = min(i + 1 + H, len(df) - 1) + sgn = 1 if side == "long" else -1 + drift = (c[end] / e - 1) * sgn - COST + up = e * (1 + RACE_T); dn = e * (1 - RACE_T); race = 0 + for j in range(i + 2, end + 1): + hu = h[j] >= up; du = l[j] <= dn + if hu and du: + break + if hu: + race = sgn; break + if du: + race = -sgn; break + mfe = (h[i + 2:end + 1].max() / e - 1) if sgn > 0 else (1 - l[i + 2:end + 1].min() / e) + return drift, race, mfe + + +rows = [] +for key, g in groups.items(): + m = meta.get(key) + if m is None: + continue + pm, rth = prep(g) + if len(rth) < 90: + continue + pmh = pm["high"].max() if len(pm) >= 10 else np.nan + r5 = agg5(rth) + year = key[1][:4] + ctx = dict(gap=m["gap"], px=m["prev_close"], rv=m["rel_vol"], year=year) + + # 1. gap-and-go: first 1m bar (within first 60 min) whose high breaks premarket high + if not np.isnan(pmh): + hh = rth["high"].to_numpy(float) + for i in range(0, min(60, len(rth))): + if hh[i] > pmh: + r = outcome(rth, i, "long", H1M) + if r: + rows.append(dict(pattern="gap_and_go_pmh_break", side="long", + drift=r[0], race=r[1], mfe=r[2], **ctx)) + break + # 2/3. flat-top + failed flat-top on 1m + try: + for s in flat_top_breakouts(rth, min_touches=3, tolerance_pct=0.002)[:6]: + r = outcome(rth, s.signal_index, "long", H1M) + if r: + rows.append(dict(pattern="flat_top_1m", side="long", drift=r[0], race=r[1], mfe=r[2], **ctx)) + for s in failed_flat_top_breakouts(rth, min_touches=3, tolerance_pct=0.002)[:6]: + r = outcome(rth, s.signal_index, "short", H1M) + if r: + rows.append(dict(pattern="failed_flat_top_1m", side="short", drift=r[0], race=r[1], mfe=r[2], **ctx)) + except Exception: + pass + # 4. 5-candle reversal on 5m + try: + for s in consecutive_candle_reversals(r5, n_consecutive=5)[:4]: + r = outcome(r5, s.signal_index, s.side, H5M) + if r: + rows.append(dict(pattern="rev5_5m", side=s.side, drift=r[0], race=r[1], mfe=r[2], **ctx)) + except Exception: + pass + # 5. 10-candle reversal on 1m + try: + for s in consecutive_candle_reversals(rth, n_consecutive=10)[:4]: + r = outcome(rth, s.signal_index, s.side, H1M) + if r: + rows.append(dict(pattern="rev10_1m", side=s.side, drift=r[0], race=r[1], mfe=r[2], **ctx)) + except Exception: + pass + +E = pd.DataFrame(rows) +E.to_csv(os.path.join(HERE, "smallcap_results.csv"), index=False) +print(f"\ntotal signals: {len(E)} across {len(groups)} event-days\n") +print(f"{'pattern':<26s}{'side':<7s}{'n':>6s}{'avg net':>9s}{'med':>8s}{'race+':>7s}{'medMFE':>8s}") +for (p, sd), S in E.groupby(["pattern", "side"]): + w = (S.race == 1).sum(); lo = (S.race == -1).sum() + print(f"{p:<26s}{sd:<7s}{len(S):>6d}{S.drift.mean()*100:>+8.2f}%{S.drift.median()*100:>+7.2f}%" + f"{w/max(w+lo,1):>7.0%}{S.mfe.median()*100:>7.2f}%") +print("\nby year (avg net drift %):") +piv = E.pivot_table(index=["pattern", "side"], columns="year", values="drift", aggfunc="mean") * 100 +print(piv.round(2).to_string()) +print("\nby gap bucket:") +E["gapb"] = pd.cut(E.gap, [0.07, 0.12, 0.25, 5], labels=["7-12%", "12-25%", ">25%"]) +piv2 = E.pivot_table(index=["pattern", "side"], columns="gapb", values="drift", aggfunc=["mean", "count"], observed=True) +print((piv2["mean"] * 100).round(2).to_string()) +print((piv2["count"]).to_string()) diff --git a/research/warrior/scan_gappers.py b/research/warrior/scan_gappers.py new file mode 100644 index 000000000..a028cef9b --- /dev/null +++ b/research/warrior/scan_gappers.py @@ -0,0 +1,92 @@ +"""Stage 1: historical small-cap gapper scanner (Alpaca daily bars). + +Criteria (Warrior-canon, from the spec's small-cap track): + gap = today's open / yesterday's close - 1 >= 7% + yesterday close in [$1.50, $20] + today dollar volume >= $5M + top 8 per day by gap size +Window: 2023-06-01 -> now. Output: gapper_events.csv (symbol, date, gap, prev_close, +o/h/l/c/v, dollar_vol, rel_vol vs 30d median). +CAVEAT: current-listings universe only -> survivorship bias (delisted gappers missing). +""" +import json, os, time, urllib.parse, urllib.request +from datetime import datetime, timedelta, timezone +import numpy as np +import pandas as pd + +KEY = os.environ["ALPACA_API_KEY"]; SEC = os.environ["ALPACA_API_SECRET"] +HDR = {"APCA-API-KEY-ID": KEY, "APCA-API-SECRET-KEY": SEC} +OUT = os.path.dirname(os.path.abspath(__file__)) +END = (datetime.now(timezone.utc) - timedelta(minutes=16)).strftime("%Y-%m-%dT%H:%M:%SZ") +START = "2023-06-01" + + +def get(url): + for attempt in range(5): + try: + r = urllib.request.Request(url, headers=HDR) + with urllib.request.urlopen(r, timeout=60) as resp: + return json.loads(resp.read()) + except Exception as e: + if attempt == 4: + raise + time.sleep(2 ** attempt) + + +# 1. asset list: active, tradable US equities on major exchanges +assets = get("https://paper-api.alpaca.markets/v2/assets?status=active&asset_class=us_equity") +syms = [a["symbol"] for a in assets + if a.get("tradable") and a.get("exchange") in ("NASDAQ", "NYSE", "AMEX", "ARCA", "BATS") + and "." not in a["symbol"] and "/" not in a["symbol"] and len(a["symbol"]) <= 5] +syms = sorted(set(syms)) +print(f"universe: {len(syms)} symbols", flush=True) + +# 2. batch daily bars, compute gaps +events = [] +B = 200 +for bi in range(0, len(syms), B): + batch = syms[bi:bi + B] + page = None + bars = {} + while True: + p = {"symbols": ",".join(batch), "timeframe": "1Day", "start": START, "end": END, + "limit": "10000", "feed": "sip", "adjustment": "all"} + if page: + p["page_token"] = page + d = get("https://data.alpaca.markets/v2/stocks/bars?" + urllib.parse.urlencode(p)) + for s, bs in (d.get("bars") or {}).items(): + bars.setdefault(s, []).extend(bs) + page = d.get("next_page_token") + if not page: + break + for s, bs in bars.items(): + if len(bs) < 35: + continue + df = pd.DataFrame(bs) + c = df["c"].values; o = df["o"].values; v = df["v"].values + pc = np.r_[np.nan, c[:-1]] + gap = o / pc - 1 + dv = c * v + vmed = pd.Series(v).rolling(30).median().values + for i in range(30, len(df)): + if not (0.07 <= gap[i] < 5): # sanity cap: >400% gap = data artifact + continue + if not (1.5 <= pc[i] <= 20): + continue + if dv[i] < 5e6: + continue + events.append(dict(symbol=s, date=df["t"].iloc[i][:10], gap=round(gap[i], 4), + prev_close=pc[i], o=o[i], h=df["h"].iloc[i], l=df["l"].iloc[i], + c=c[i], v=int(v[i]), dollar_vol=int(dv[i]), + rel_vol=round(v[i] / vmed[i], 1) if vmed[i] > 0 else np.nan)) + if (bi // B) % 10 == 0: + print(f" batch {bi//B+1}/{(len(syms)+B-1)//B}, events so far {len(events)}", flush=True) + +E = pd.DataFrame(events) +# top 8 per day by gap +E = E.sort_values(["date", "gap"], ascending=[True, False]).groupby("date").head(8).reset_index(drop=True) +E.to_csv(os.path.join(OUT, "gapper_events.csv"), index=False) +print(f"\nDONE: {len(E)} gapper events across {E['date'].nunique()} days " + f"({len(E)/max(E['date'].nunique(),1):.1f}/day)") +print("gap distribution:", E["gap"].describe()[["mean", "50%", "max"]].round(3).to_dict()) +print("sample:", E.head(5).to_dict("records")) diff --git a/research/warrior/warrior_pattern_backtest.py b/research/warrior/warrior_pattern_backtest.py new file mode 100644 index 000000000..1135a1e74 --- /dev/null +++ b/research/warrior/warrior_pattern_backtest.py @@ -0,0 +1,351 @@ + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Literal, Optional + +import numpy as np +import pandas as pd + + +Side = Literal["long", "short"] + + +@dataclass(frozen=True) +class Signal: + pattern: str + side: Side + signal_index: int + trigger: float + reference_level: float + metadata: dict + + +def _validate_ohlcv(df: pd.DataFrame) -> None: + required = {"open", "high", "low", "close"} + missing = required.difference(df.columns) + if missing: + raise ValueError(f"Missing columns: {sorted(missing)}") + if not isinstance(df.index, pd.DatetimeIndex): + raise TypeError("DataFrame index must be a DatetimeIndex") + if not df.index.is_monotonic_increasing: + raise ValueError("DataFrame index must be sorted ascending") + + +def consecutive_candle_reversals( + df: pd.DataFrame, + *, + n_consecutive: int, + tick_size: float = 0.01, +) -> list[Signal]: + """ + Guide-faithful reversal trigger: + - Long: after >= n consecutive red candles, the first subsequent candle + whose high exceeds the immediately prior candle's high. + - Short: after >= n consecutive green candles, the first subsequent candle + whose low falls below the immediately prior candle's low. + + This mirrors the guide's: + - 5-minute: first candle to make a new high after 5 consecutive red candles. + - 1-minute: first candle to make a new high after 10 consecutive red candles. + """ + _validate_ohlcv(df) + if n_consecutive < 2: + raise ValueError("n_consecutive must be >= 2") + + red = (df["close"] < df["open"]).to_numpy() + green = (df["close"] > df["open"]).to_numpy() + highs = df["high"].to_numpy(float) + lows = df["low"].to_numpy(float) + + signals: list[Signal] = [] + red_run = 0 + green_run = 0 + long_armed = False + short_armed = False + + for i in range(len(df)): + if red[i]: + red_run += 1 + green_run = 0 + elif green[i]: + green_run += 1 + red_run = 0 + else: + red_run = 0 + green_run = 0 + + if red_run >= n_consecutive: + long_armed = True + if green_run >= n_consecutive: + short_armed = True + + if i == 0: + continue + + if long_armed and highs[i] > highs[i - 1]: + signals.append( + Signal( + pattern=f"{n_consecutive}_candle_reversal", + side="long", + signal_index=i, + trigger=highs[i - 1] + tick_size, + reference_level=highs[i - 1], + metadata={"run_length_min": n_consecutive}, + ) + ) + long_armed = False + red_run = 0 + + if short_armed and lows[i] < lows[i - 1]: + signals.append( + Signal( + pattern=f"{n_consecutive}_candle_reversal", + side="short", + signal_index=i, + trigger=lows[i - 1] - tick_size, + reference_level=lows[i - 1], + metadata={"run_length_min": n_consecutive}, + ) + ) + short_armed = False + green_run = 0 + + return signals + + +def flat_top_breakouts( + df: pd.DataFrame, + *, + min_touches: int = 3, + formation_min_bars: int = 4, + formation_max_bars: int = 20, + tolerance_pct: float = 0.001, + tick_size: float = 0.01, +) -> list[Signal]: + """ + Objective implementation of the guide's "buy first candle that breaks flat top." + + The guide supplies the entry concept, but not numeric formation tolerances. + Therefore min_touches, lookback, and tolerance are explicit research parameters, + not claims about the guide. + """ + _validate_ohlcv(df) + if min_touches < 2: + raise ValueError("min_touches must be >= 2") + if not 0 < tolerance_pct < 0.05: + raise ValueError("tolerance_pct must be between 0 and 5%") + + highs = df["high"].to_numpy(float) + closes = df["close"].to_numpy(float) + signals: list[Signal] = [] + last_breakout_level: Optional[float] = None + + for i in range(formation_min_bars, len(df)): + found = None + max_window = min(formation_max_bars, i) + for length in range(formation_min_bars, max_window + 1): + start = i - length + window_highs = highs[start:i] + level = float(np.max(window_highs)) + tol = level * tolerance_pct + touches = int(np.sum(np.abs(window_highs - level) <= tol)) + + if touches < min_touches: + continue + if np.any(closes[start:i] > level + tol): + continue + if highs[i] <= level + tick_size: + continue + + found = (level, touches, length) + break + + if found is None: + continue + + level, touches, length = found + # Avoid repeated signals from the same level cluster. + if last_breakout_level is not None and abs(level - last_breakout_level) <= level * tolerance_pct: + continue + + signals.append( + Signal( + pattern="flat_top_breakout", + side="long", + signal_index=i, + trigger=level + tick_size, + reference_level=level, + metadata={ + "touches": touches, + "formation_bars": length, + "tolerance_pct": tolerance_pct, + }, + ) + ) + last_breakout_level = level + + return signals + + +def failed_flat_top_breakouts( + df: pd.DataFrame, + *, + min_touches: int = 3, + formation_min_bars: int = 4, + formation_max_bars: int = 20, + tolerance_pct: float = 0.001, + failure_window: int = 3, + tick_size: float = 0.01, +) -> list[Signal]: + """ + Research operationalization of the guide's false-breakout / bull-trap examples. + + This is deliberately labeled an operationalization because the guide illustrates + the trap visually but does not provide a fully mechanical entry rule. + + Rule: + 1. Detect a valid flat-top level. + 2. Price trades above it. + 3. Within failure_window bars, a candle closes back below the level. + 4. Short trigger is one tick below that failure candle's low. + """ + _validate_ohlcv(df) + highs = df["high"].to_numpy(float) + lows = df["low"].to_numpy(float) + closes = df["close"].to_numpy(float) + signals: list[Signal] = [] + + for i in range(formation_min_bars, len(df)): + max_window = min(formation_max_bars, i) + candidate = None + for length in range(formation_min_bars, max_window + 1): + start = i - length + window_highs = highs[start:i] + level = float(np.max(window_highs)) + tol = level * tolerance_pct + touches = int(np.sum(np.abs(window_highs - level) <= tol)) + if touches >= min_touches and not np.any(closes[start:i] > level + tol): + if highs[i] > level + tick_size: + candidate = (level, touches, length) + break + if candidate is None: + continue + + level, touches, length = candidate + end = min(len(df), i + failure_window + 1) + for j in range(i, end): + if closes[j] < level: + signals.append( + Signal( + pattern="failed_flat_top_breakout", + side="short", + signal_index=j, + trigger=lows[j] - tick_size, + reference_level=level, + metadata={ + "breakout_index": i, + "failure_bars": j - i, + "touches": touches, + "formation_bars": length, + }, + ) + ) + break + + # De-duplicate overlapping traps around the same level and time. + deduped: list[Signal] = [] + for s in signals: + if deduped: + prev = deduped[-1] + if ( + s.signal_index - prev.signal_index <= failure_window + and abs(s.reference_level - prev.reference_level) + <= s.reference_level * tolerance_pct + ): + continue + deduped.append(s) + return deduped + + +def simulate_intraday_barrier_trade( + df: pd.DataFrame, + signal: Signal, + *, + stop_r: float = 1.0, + target_r: float = 2.0, + max_hold_bars: int = 12, + initial_risk_pct: float = 0.0025, + slippage_bps: float = 1.0, +) -> dict: + """ + Conservative OHLC-bar simulator for signal utility. + + Entry: + - Triggered no earlier than the signal bar. + - Long fill = trigger plus slippage; short fill = trigger minus slippage. + Stop/target: + - Expressed in R using an explicit percentage risk budget. + - If stop and target are both touched in the same bar, stop wins + (conservative sequencing). + """ + _validate_ohlcv(df) + i = signal.signal_index + if i >= len(df): + raise IndexError("signal_index outside DataFrame") + + slip = slippage_bps / 10_000 + if signal.side == "long": + entry = signal.trigger * (1 + slip) + risk = entry * initial_risk_pct + stop = entry - stop_r * risk + target = entry + target_r * risk + else: + entry = signal.trigger * (1 - slip) + risk = entry * initial_risk_pct + stop = entry + stop_r * risk + target = entry - target_r * risk + + exit_index = min(len(df) - 1, i + max_hold_bars) + exit_price = float(df["close"].iloc[exit_index]) + reason = "time" + + for j in range(i, min(len(df), i + max_hold_bars + 1)): + high = float(df["high"].iloc[j]) + low = float(df["low"].iloc[j]) + + if signal.side == "long": + stop_hit = low <= stop + target_hit = high >= target + if stop_hit: + exit_index, exit_price, reason = j, stop, "stop" + break + if target_hit: + exit_index, exit_price, reason = j, target, "target" + break + else: + stop_hit = high >= stop + target_hit = low <= target + if stop_hit: + exit_index, exit_price, reason = j, stop, "stop" + break + if target_hit: + exit_index, exit_price, reason = j, target, "target" + break + + pnl_pct = ( + (exit_price / entry - 1) + if signal.side == "long" + else (entry / exit_price - 1) + ) + return { + "pattern": signal.pattern, + "side": signal.side, + "entry_index": i, + "exit_index": exit_index, + "entry": entry, + "exit": exit_price, + "pnl_pct": pnl_pct, + "reason": reason, + "hold_bars": exit_index - i + 1, + } diff --git a/research/winner_forensics.py b/research/winner_forensics.py new file mode 100644 index 000000000..b1906d071 --- /dev/null +++ b/research/winner_forensics.py @@ -0,0 +1,98 @@ +"""Winner forensics: for each winning strategy's trades, which indicator +conditions at the signal close separate winners from losers? + +For every feature F: WR(trades where F true) vs WR(trades where F false). +Signal day = session before the entry fill (fills are next-open). +""" +import math +import os + +import numpy as np +import pandas as pd + +from engine import load_symbol + +OUT = os.path.dirname(os.path.abspath(__file__)) + + +def wilder_rsi(close, period): + d = close.diff() + ag = d.clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + al = (-d).clip(lower=0).ewm(alpha=1 / period, adjust=False).mean() + return 100 - 100 / (1 + ag / al) + + +def features(sym): + df = load_symbol(sym) + c = df["close"] + df["sma20"] = c.rolling(20).mean() + df["sma50"] = c.rolling(50).mean() + df["ema9"] = c.ewm(span=9, adjust=False).mean() + df["ema21"] = c.ewm(span=21, adjust=False).mean() + df["rsi14"] = wilder_rsi(c, 14) + sd = c.rolling(20).std() + df["pctb"] = (c - (df["sma20"] - 2 * sd)) / (4 * sd) + df["vol20"] = df["volume"].rolling(20).mean() + df["volx"] = df["volume"] / df["vol20"] + df["rv20"] = np.log(c / c.shift(1)).rolling(20).std() * math.sqrt(252) + df["rv20_med"] = df["rv20"].expanding().median() + df["dist20"] = c / df["sma20"] - 1 + return df + + +FEATURES = [ + ("SMA5>SMA20", lambda r: r.sma5 > r.sma20), + ("SMA20>SMA50", lambda r: r.sma20 > r.sma50), + ("close>SMA200", lambda r: r.close > r.sma200), + ("EMA9>EMA21", lambda r: r.ema9 > r.ema21), + ("RSI14<30", lambda r: r.rsi14 < 30), + ("RSI2<5", lambda r: r.rsi2 < 5), + ("%B<0.05 (at low band)", lambda r: r.pctb < 0.05), + ("vol>1.2x avg", lambda r: r.volx > 1.2), + ("IBS<0.10", lambda r: r.ibs < 0.10), + ("day ret<=-1%", lambda r: r.ret1 <= -0.01), + (">2% below SMA20", lambda r: r.dist20 < -0.02), + ("high-vol regime", lambda r: r.rv20 > r.rv20_med), + ("signal on Mon", lambda r: r.weekday == 0), + ("signal on Fri", lambda r: r.weekday == 4), +] + +STRATS = [ + ("S9_5DayLow_A_QQQ", "QQQ"), + ("S4_IBS_QQQ_e20_x70", "QQQ"), + ("S1_DoubleSeven_QQQ", "QQQ"), + ("S6_TT_A_QQQ", "QQQ"), + ("S6_TT_C_QQQ", "QQQ"), +] + +DFS = {s: features(s) for s in ["QQQ", "SPY"]} +IDX = {s: {d: i for i, d in enumerate(DFS[s]["date"])} for s in DFS} + +agg = {} # feature -> list of (wr_true, wr_false, n_true, n_false) across strategies +for run, sym in STRATS: + tr = pd.read_csv(os.path.join(OUT, f"trades_{run}.csv"), parse_dates=["entry_date"]) + df = DFS[sym] + rows = list(df.itertuples(index=False)) + print(f"\n=== {run} ({len(tr)} trades, overall WR {(tr['ret']>0).mean():.1%}) ===") + print(f"{'feature':<24s} {'WR|true':>8s} {'n':>5s} {'WR|false':>9s} {'n':>5s} {'gap':>7s}") + recs = [] + for t in tr.itertuples(): + i = IDX[sym].get(t.entry_date) + if i is None or i == 0: + continue + recs.append((rows[i - 1], t.ret > 0)) # signal day = day before fill + for fname, fn in FEATURES: + wt = [win for r, win in recs if fn(r)] + wf = [win for r, win in recs if not fn(r)] + if len(wt) < 10 or len(wf) < 10: + continue + wr_t, wr_f = np.mean(wt), np.mean(wf) + gap = wr_t - wr_f + agg.setdefault(fname, []).append(gap) + mark = " <<" if abs(gap) >= 0.10 else "" + print(f"{fname:<24s} {wr_t:>8.1%} {len(wt):>5d} {wr_f:>9.1%} {len(wf):>5d} {gap:>+7.1%}{mark}") + +print("\n=== Cross-strategy consistency (avg WR gap, # strategies with same sign) ===") +for fname, gaps in sorted(agg.items(), key=lambda kv: -abs(np.mean(kv[1]))): + same = max(sum(1 for g in gaps if g > 0), sum(1 for g in gaps if g < 0)) + print(f"{fname:<24s} avg gap {np.mean(gaps):+.1%} ({same}/{len(gaps)} same sign)")