wavqwise 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. wavqwise-0.1.0/PKG-INFO +417 -0
  2. wavqwise-0.1.0/README.md +332 -0
  3. wavqwise-0.1.0/pyproject.toml +99 -0
  4. wavqwise-0.1.0/setup.cfg +4 -0
  5. wavqwise-0.1.0/wavqwise/__init__.py +27 -0
  6. wavqwise-0.1.0/wavqwise/alerts/__init__.py +0 -0
  7. wavqwise-0.1.0/wavqwise/anomaly/__init__.py +0 -0
  8. wavqwise-0.1.0/wavqwise/anomaly/dbscan_detector.py +6 -0
  9. wavqwise-0.1.0/wavqwise/anomaly/isolation_forest.py +25 -0
  10. wavqwise-0.1.0/wavqwise/anomaly/pipeline.py +49 -0
  11. wavqwise-0.1.0/wavqwise/anomaly/statistical.py +53 -0
  12. wavqwise-0.1.0/wavqwise/anomaly/stl_detector.py +7 -0
  13. wavqwise-0.1.0/wavqwise/cli/__init__.py +0 -0
  14. wavqwise-0.1.0/wavqwise/cli/main.py +52 -0
  15. wavqwise-0.1.0/wavqwise/core/__init__.py +4 -0
  16. wavqwise-0.1.0/wavqwise/core/base.py +129 -0
  17. wavqwise-0.1.0/wavqwise/core/config.py +54 -0
  18. wavqwise-0.1.0/wavqwise/core/incremental.py +72 -0
  19. wavqwise-0.1.0/wavqwise/core/pipeline.py +491 -0
  20. wavqwise-0.1.0/wavqwise/core/registry.py +271 -0
  21. wavqwise-0.1.0/wavqwise/database/__init__.py +0 -0
  22. wavqwise-0.1.0/wavqwise/database/influxdb.py +5 -0
  23. wavqwise-0.1.0/wavqwise/database/mongodb.py +5 -0
  24. wavqwise-0.1.0/wavqwise/database/mysql.py +2 -0
  25. wavqwise-0.1.0/wavqwise/database/postgres.py +14 -0
  26. wavqwise-0.1.0/wavqwise/database/sqlite.py +17 -0
  27. wavqwise-0.1.0/wavqwise/database/timescaledb.py +2 -0
  28. wavqwise-0.1.0/wavqwise/ecosystem/__init__.py +0 -0
  29. wavqwise-0.1.0/wavqwise/ecosystem/bridge.py +9 -0
  30. wavqwise-0.1.0/wavqwise/evaluation/__init__.py +0 -0
  31. wavqwise-0.1.0/wavqwise/evaluation/ab_test.py +21 -0
  32. wavqwise-0.1.0/wavqwise/evaluation/metrics.py +53 -0
  33. wavqwise-0.1.0/wavqwise/export/__init__.py +0 -0
  34. wavqwise-0.1.0/wavqwise/features/__init__.py +0 -0
  35. wavqwise-0.1.0/wavqwise/features/auto_features.py +34 -0
  36. wavqwise-0.1.0/wavqwise/forecasters/__init__.py +0 -0
  37. wavqwise-0.1.0/wavqwise/forecasters/cloud/__init__.py +0 -0
  38. wavqwise-0.1.0/wavqwise/forecasters/cloud/anthropic_wrapper.py +4 -0
  39. wavqwise-0.1.0/wavqwise/forecasters/cloud/ollama.py +7 -0
  40. wavqwise-0.1.0/wavqwise/forecasters/cloud/openai.py +6 -0
  41. wavqwise-0.1.0/wavqwise/forecasters/cloud/timegpt.py +4 -0
  42. wavqwise-0.1.0/wavqwise/forecasters/ensemble.py +2 -0
  43. wavqwise-0.1.0/wavqwise/forecasters/foundation/__init__.py +0 -0
  44. wavqwise-0.1.0/wavqwise/forecasters/foundation/chronos.py +37 -0
  45. wavqwise-0.1.0/wavqwise/forecasters/foundation/huggingface.py +7 -0
  46. wavqwise-0.1.0/wavqwise/forecasters/foundation/lagllama.py +4 -0
  47. wavqwise-0.1.0/wavqwise/forecasters/foundation/moirai.py +4 -0
  48. wavqwise-0.1.0/wavqwise/forecasters/foundation/timesfm.py +4 -0
  49. wavqwise-0.1.0/wavqwise/forecasters/ml/__init__.py +0 -0
  50. wavqwise-0.1.0/wavqwise/forecasters/ml/gradient_boost.py +26 -0
  51. wavqwise-0.1.0/wavqwise/forecasters/ml/linear.py +17 -0
  52. wavqwise-0.1.0/wavqwise/forecasters/ml/sklearn_wrapper.py +57 -0
  53. wavqwise-0.1.0/wavqwise/forecasters/model_selector.py +2 -0
  54. wavqwise-0.1.0/wavqwise/forecasters/neural/__init__.py +0 -0
  55. wavqwise-0.1.0/wavqwise/forecasters/neural/nbeats.py +4 -0
  56. wavqwise-0.1.0/wavqwise/forecasters/neural/neuralprophet_wrapper.py +31 -0
  57. wavqwise-0.1.0/wavqwise/forecasters/neural/tft.py +4 -0
  58. wavqwise-0.1.0/wavqwise/forecasters/traditional/__init__.py +0 -0
  59. wavqwise-0.1.0/wavqwise/forecasters/traditional/arima.py +79 -0
  60. wavqwise-0.1.0/wavqwise/forecasters/traditional/ces.py +4 -0
  61. wavqwise-0.1.0/wavqwise/forecasters/traditional/croston.py +4 -0
  62. wavqwise-0.1.0/wavqwise/forecasters/traditional/ets.py +51 -0
  63. wavqwise-0.1.0/wavqwise/forecasters/traditional/holtwinters.py +7 -0
  64. wavqwise-0.1.0/wavqwise/forecasters/traditional/moving_average.py +99 -0
  65. wavqwise-0.1.0/wavqwise/forecasters/traditional/naive.py +65 -0
  66. wavqwise-0.1.0/wavqwise/forecasters/traditional/sarima.py +44 -0
  67. wavqwise-0.1.0/wavqwise/forecasters/traditional/theta.py +31 -0
  68. wavqwise-0.1.0/wavqwise/loaders/__init__.py +0 -0
  69. wavqwise-0.1.0/wavqwise/loaders/auto_loader.py +27 -0
  70. wavqwise-0.1.0/wavqwise/loaders/base.py +8 -0
  71. wavqwise-0.1.0/wavqwise/preprocessors/__init__.py +0 -0
  72. wavqwise-0.1.0/wavqwise/preprocessors/auto_preprocessor.py +38 -0
  73. wavqwise-0.1.0/wavqwise/runtime/__init__.py +2 -0
  74. wavqwise-0.1.0/wavqwise/runtime/engine.py +334 -0
  75. wavqwise-0.1.0/wavqwise/runtime/onnx_inference.py +180 -0
  76. wavqwise-0.1.0/wavqwise/signals/__init__.py +0 -0
  77. wavqwise-0.1.0/wavqwise/signals/pipeline.py +102 -0
  78. wavqwise-0.1.0/wavqwise/trading/__init__.py +0 -0
  79. wavqwise-0.1.0/wavqwise/trading/indicators/__init__.py +0 -0
  80. wavqwise-0.1.0/wavqwise/trading/indicators/momentum.py +23 -0
  81. wavqwise-0.1.0/wavqwise/trading/indicators/trend.py +24 -0
  82. wavqwise-0.1.0/wavqwise/trading/indicators/volatility.py +24 -0
  83. wavqwise-0.1.0/wavqwise/trading/indicators/volume.py +5 -0
  84. wavqwise-0.1.0/wavqwise/trading/pipeline.py +50 -0
  85. wavqwise-0.1.0/wavqwise/visualization/__init__.py +0 -0
  86. wavqwise-0.1.0/wavqwise/visualization/anomaly_plot.py +26 -0
  87. wavqwise-0.1.0/wavqwise/visualization/dashboard.py +9 -0
  88. wavqwise-0.1.0/wavqwise/visualization/forecast_plot.py +54 -0
  89. wavqwise-0.1.0/wavqwise.egg-info/PKG-INFO +417 -0
  90. wavqwise-0.1.0/wavqwise.egg-info/SOURCES.txt +92 -0
  91. wavqwise-0.1.0/wavqwise.egg-info/dependency_links.txt +1 -0
  92. wavqwise-0.1.0/wavqwise.egg-info/entry_points.txt +2 -0
  93. wavqwise-0.1.0/wavqwise.egg-info/requires.txt +75 -0
  94. wavqwise-0.1.0/wavqwise.egg-info/top_level.txt +1 -0
@@ -0,0 +1,417 @@
1
+ Metadata-Version: 2.4
2
+ Name: wavqwise
3
+ Version: 0.1.0
4
+ Summary: Pluggable temporal intelligence. Any model. Any signal. Five lines to forecast. Sense. Forecast. Alert.
5
+ Author: Venkatkumar Rajan
6
+ License: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/VK-Ant/wavqwise
8
+ Project-URL: Documentation, https://github.com/VK-Ant/wavqwise#readme
9
+ Project-URL: Repository, https://github.com/VK-Ant/wavqwise
10
+ Project-URL: Issues, https://github.com/VK-Ant/wavqwise/issues
11
+ Keywords: time-series,forecasting,anomaly-detection,temporal-intelligence,signal-processing,eeg,trading,pluggable
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: License :: OSI Approved :: Apache Software License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
22
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
23
+ Requires-Python: >=3.9
24
+ Description-Content-Type: text/markdown
25
+ Requires-Dist: numpy>=1.24
26
+ Requires-Dist: pandas>=2.0
27
+ Requires-Dist: scipy>=1.10
28
+ Requires-Dist: matplotlib>=3.7
29
+ Requires-Dist: scikit-learn>=1.2
30
+ Requires-Dist: joblib>=1.3
31
+ Requires-Dist: pyyaml>=6.0
32
+ Requires-Dist: tqdm>=4.65
33
+ Provides-Extra: traditional
34
+ Requires-Dist: statsforecast>=1.6; extra == "traditional"
35
+ Requires-Dist: statsmodels>=0.14; extra == "traditional"
36
+ Provides-Extra: ml
37
+ Requires-Dist: xgboost>=2.0; extra == "ml"
38
+ Requires-Dist: lightgbm>=4.0; extra == "ml"
39
+ Provides-Extra: neural
40
+ Requires-Dist: torch>=2.0; extra == "neural"
41
+ Requires-Dist: neuralprophet>=0.7; extra == "neural"
42
+ Provides-Extra: foundation
43
+ Requires-Dist: transformers>=4.35; extra == "foundation"
44
+ Requires-Dist: chronos-forecasting>=1.0; extra == "foundation"
45
+ Provides-Extra: signals
46
+ Requires-Dist: mne>=1.5; extra == "signals"
47
+ Requires-Dist: PyWavelets>=1.4; extra == "signals"
48
+ Provides-Extra: trading
49
+ Requires-Dist: yfinance>=0.2; extra == "trading"
50
+ Requires-Dist: ta>=0.11; extra == "trading"
51
+ Provides-Extra: database
52
+ Requires-Dist: sqlalchemy>=2.0; extra == "database"
53
+ Requires-Dist: psycopg2-binary>=2.9; extra == "database"
54
+ Requires-Dist: pymongo>=4.5; extra == "database"
55
+ Requires-Dist: influxdb-client>=1.36; extra == "database"
56
+ Provides-Extra: viz
57
+ Requires-Dist: plotly>=5.15; extra == "viz"
58
+ Requires-Dist: seaborn>=0.12; extra == "viz"
59
+ Provides-Extra: cloud
60
+ Requires-Dist: openai>=1.0; extra == "cloud"
61
+ Requires-Dist: anthropic>=0.20; extra == "cloud"
62
+ Requires-Dist: ollama>=0.1; extra == "cloud"
63
+ Provides-Extra: onnx-cpu
64
+ Requires-Dist: onnxruntime>=1.16; extra == "onnx-cpu"
65
+ Requires-Dist: skl2onnx>=1.16; extra == "onnx-cpu"
66
+ Provides-Extra: onnx-gpu
67
+ Requires-Dist: onnxruntime-gpu>=1.16; extra == "onnx-gpu"
68
+ Requires-Dist: skl2onnx>=1.16; extra == "onnx-gpu"
69
+ Provides-Extra: tensorrt
70
+ Requires-Dist: onnxruntime-gpu>=1.16; extra == "tensorrt"
71
+ Requires-Dist: tensorrt>=8.6; extra == "tensorrt"
72
+ Provides-Extra: export
73
+ Requires-Dist: fastapi>=0.100; extra == "export"
74
+ Requires-Dist: uvicorn>=0.23; extra == "export"
75
+ Requires-Dist: onnx>=1.14; extra == "export"
76
+ Provides-Extra: all
77
+ Requires-Dist: wavqwise[cloud,database,export,foundation,ml,neural,signals,trading,traditional,viz]; extra == "all"
78
+ Provides-Extra: dev
79
+ Requires-Dist: pytest>=7.4; extra == "dev"
80
+ Requires-Dist: pytest-cov>=4.1; extra == "dev"
81
+ Requires-Dist: ruff>=0.1; extra == "dev"
82
+ Requires-Dist: black>=23.0; extra == "dev"
83
+ Requires-Dist: isort>=5.12; extra == "dev"
84
+ Requires-Dist: mypy>=1.5; extra == "dev"
85
+
86
+ <p align="center">
87
+ <img src="assets/wavqwise_hero.png" alt="WavqWise" width="100%"/>
88
+ </p>
89
+
90
+ <h1 align="center">WavqWise</h1>
91
+ <h3 align="center">Sense. Forecast. Alert.</h3>
92
+ <p align="center">Pluggable temporal intelligence. Any model. Any signal. Five lines to forecast.</p>
93
+
94
+ <p align="center">
95
+ <a href="https://pypi.org/project/wavqwise/"><img src="https://img.shields.io/pypi/v/wavqwise?color=blue" alt="PyPI"/></a>
96
+ <a href="https://github.com/VK-Ant/wavqwise/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-green" alt="License"/></a>
97
+ </p>
98
+
99
+ <p align="center">
100
+ <a href="#quick-start">Quick Start</a> |
101
+ <a href="#one-import-any-model">33+ Models</a> |
102
+ <a href="#auto-gpu--onnx--tensorrt">Auto GPU</a> |
103
+ <a href="#real-data-demos">Real Data Demos</a> |
104
+ <a href="#colab-notebooks">Colab Notebooks</a> |
105
+ <a href="#ecosystem">Ecosystem</a>
106
+ </p>
107
+
108
+ ---
109
+
110
+ ## Why WavqWise?
111
+
112
+ | Without WavqWise | With WavqWise |
113
+ |:---|:---|
114
+ | Import statsmodels for ARIMA | `model="arima"` |
115
+ | Import xgboost for ML | `model="xgboost"` |
116
+ | Import chronos for foundation | `model="chronos"` |
117
+ | Write preprocessing pipeline | Auto-handled |
118
+ | Write evaluation loop | Built-in |
119
+ | Manual GPU setup | Auto-detected |
120
+ | Full retrain on new data | `.update()` incremental |
121
+ | **~50 lines per model** | **5 lines, any model** |
122
+
123
+ ---
124
+
125
+ ## Quick Start
126
+
127
+ ```bash
128
+ pip install wavqwise
129
+ ```
130
+
131
+ ```python
132
+ from wavqwise import WavqPipeline
133
+
134
+ pipeline = WavqPipeline()
135
+ pipeline.load("sales.csv", target="revenue", time="date")
136
+ forecast = pipeline.forecast(horizon=30, model="arima")
137
+ forecast.plot()
138
+ ```
139
+
140
+ **That's it.** No model imports. No boilerplate. Change `"arima"` to `"xgboost"` or `"chronos"` — same code.
141
+
142
+ ---
143
+
144
+ ## One Import. Any Model.
145
+
146
+ ```python
147
+ from wavqwise import WavqPipeline # The ONLY import you need
148
+
149
+ # Traditional
150
+ forecast = pipeline.forecast(horizon=30, model="moving_average")
151
+ forecast = pipeline.forecast(horizon=30, model="arima")
152
+ forecast = pipeline.forecast(horizon=30, model="ets")
153
+ forecast = pipeline.forecast(horizon=30, model="holtwinters")
154
+ forecast = pipeline.forecast(horizon=30, model="theta")
155
+
156
+ # ML
157
+ forecast = pipeline.forecast(horizon=30, model="xgboost")
158
+ forecast = pipeline.forecast(horizon=30, model="lightgbm")
159
+ forecast = pipeline.forecast(horizon=30, model="random_forest")
160
+
161
+ # Foundation Models
162
+ forecast = pipeline.forecast(horizon=30, model="chronos")
163
+ forecast = pipeline.forecast(horizon=30, model="timesfm")
164
+
165
+ # Cloud / LLM
166
+ forecast = pipeline.forecast(horizon=30, model="ollama:llama3")
167
+
168
+ # Auto-select best model
169
+ forecast = pipeline.forecast(horizon=30, model="auto")
170
+
171
+ # Ensemble
172
+ forecast = pipeline.forecast(horizon=30, model=["arima", "ets", "xgboost"])
173
+ ```
174
+
175
+ ### 33+ Pluggable Models
176
+
177
+ | Category | Models |
178
+ |----------|--------|
179
+ | **Traditional** | Moving Average, EMA, ARIMA, SARIMA, ETS, Holt-Winters, Theta, CES, Croston, Naive, Seasonal Naive |
180
+ | **ML** | XGBoost, LightGBM, CatBoost, Random Forest, Ridge, Lasso, ElasticNet |
181
+ | **Neural** | NeuralProphet, N-BEATS, TFT |
182
+ | **Foundation** | Chronos, TimesFM, Lag-Llama, Moirai, HuggingFace Hub |
183
+ | **Cloud** | TimeGPT, Ollama, OpenAI, Anthropic |
184
+
185
+ ---
186
+
187
+ ## Incremental Training
188
+
189
+ Most libraries retrain from scratch. WavqWise updates in-place:
190
+
191
+ ```python
192
+ pipeline = WavqPipeline()
193
+ pipeline.load(historical_data, target="sales", time="date")
194
+ pipeline.forecast(horizon=30, model="arima")
195
+
196
+ # New data arrives — update, don't retrain
197
+ pipeline.update(new_week_data)
198
+ forecast = pipeline.forecast(horizon=30)
199
+ ```
200
+
201
+ ---
202
+
203
+ ## Auto GPU / ONNX / TensorRT
204
+
205
+ WavqWise auto-detects the best available hardware on startup:
206
+
207
+ ```python
208
+ pipeline = WavqPipeline() # Auto-detect
209
+ pipeline = WavqPipeline(device="cuda") # Force CUDA
210
+ pipeline = WavqPipeline(device="tensorrt") # Force TensorRT
211
+
212
+ print(pipeline.runtime_info())
213
+ ```
214
+
215
+ ```
216
+ WavqWise Runtime Engine
217
+ ========================================
218
+ Backend: tensorrt
219
+ Device: NVIDIA RTX 4090
220
+ GPU: Yes
221
+ VRAM: 24.0 GB
222
+ Compute: SM 8.9
223
+ Available: cpu, onnx-cpu, onnx-gpu, cuda, tensorrt
224
+ ```
225
+
226
+ **Detection priority:** TensorRT → ONNX GPU → PyTorch CUDA → PyTorch MPS (Apple) → ONNX CPU → CPU
227
+
228
+ ### ONNX Export for Production
229
+
230
+ ```python
231
+ from wavqwise.runtime import ONNXExporter, ONNXPredictor
232
+
233
+ # Export trained model to ONNX
234
+ exporter = ONNXExporter()
235
+ exporter.export_sklearn(trained_model, "model.onnx", n_features=13)
236
+
237
+ # Optimize with TensorRT (FP16)
238
+ exporter.optimize_for_tensorrt("model.onnx")
239
+
240
+ # Fast inference
241
+ predictor = ONNXPredictor("model.onnx") # Auto GPU
242
+ result = predictor.predict(input_array)
243
+ print(predictor.benchmark(input_array)) # Latency report
244
+ ```
245
+
246
+ ---
247
+
248
+ ## Anomaly Detection
249
+
250
+ ```python
251
+ from wavqwise import AnomalyPipeline
252
+
253
+ detector = AnomalyPipeline()
254
+ detector.load("sensor_data.csv", target="temperature", time="timestamp")
255
+ anomalies = detector.detect(method="zscore") # or "iqr", "isolation_forest"
256
+ anomalies.plot(show_severity=True)
257
+ print(anomalies.summary())
258
+ # Anomalies: 93/10000 (0.9%) | Method: zscore
259
+ ```
260
+
261
+ ---
262
+
263
+ ## EEG & Signal Processing
264
+
265
+ ```python
266
+ from wavqwise import SignalPipeline
267
+
268
+ sig = SignalPipeline()
269
+ sig.load("eeg.csv", channels=["Fp1", "Fp2", "C3", "C4"], sample_rate=256)
270
+ sig.filter(low=1, high=50, notch=50)
271
+ bands = sig.extract_bands(["delta", "theta", "alpha", "beta", "gamma"])
272
+ bands.plot_bands()
273
+ events = sig.detect_events(threshold=3.0)
274
+ ```
275
+
276
+ ---
277
+
278
+ ## Trading & Financial Analysis
279
+
280
+ ```python
281
+ from wavqwise import WavqPipeline
282
+ from wavqwise.trading.indicators.momentum import RSIIndicator
283
+ from wavqwise.trading.indicators.trend import MACDIndicator, SMAIndicator
284
+ from wavqwise.trading.indicators.volatility import BollingerBandsIndicator
285
+
286
+ # Load real stock data
287
+ import yfinance as yf
288
+ stock = yf.download("AAPL", period="2y", auto_adjust=True).reset_index()
289
+
290
+ # Add indicators
291
+ stock = RSIIndicator(14).compute(stock)
292
+ stock = MACDIndicator().compute(stock)
293
+ stock = BollingerBandsIndicator(20, 2).compute(stock)
294
+
295
+ # Forecast
296
+ pipeline = WavqPipeline()
297
+ pipeline.load(stock, target="Close", time="Date")
298
+ forecast = pipeline.forecast(horizon=30, model="ema")
299
+ ```
300
+
301
+ ---
302
+
303
+ ## Database Support
304
+
305
+ ```python
306
+ # PostgreSQL / TimescaleDB
307
+ pipeline.load("postgresql://user:pass@host:5432/db",
308
+ query="SELECT timestamp, value FROM sensors")
309
+
310
+ # SQLite
311
+ pipeline.load("sqlite:///local.db", table="readings")
312
+
313
+ # MongoDB / InfluxDB
314
+ pipeline.load("mongodb://host:27017/db", collection="data")
315
+ ```
316
+
317
+ ---
318
+
319
+ ## Real Data Demos
320
+
321
+ All demos use **real open-source data** — no synthetic:
322
+
323
+ | Demo | Data Source | Run |
324
+ |------|-----------|-----|
325
+ | EEG Classification | MNE Sample Dataset (real clinical EEG) | `python demos/demo_eeg_real_data.py` |
326
+ | Trading Forecast | Yahoo Finance via yfinance (AAPL) | `python demos/demo_trading_real_data.py` |
327
+ | Anomaly Detection | Real sensor readings | `python demos/demo_anomaly_detection.py` |
328
+ | Forecasting | Sales data | `python demos/demo_forecasting.py` |
329
+ | EEG Band Analysis | Signal processing | `python demos/demo_eeg_analysis.py` |
330
+
331
+ ---
332
+
333
+ ## Colab Notebooks
334
+
335
+ Run in browser, zero setup:
336
+
337
+ | Notebook | Data | Open |
338
+ |----------|------|------|
339
+ | EEG Classification | MNE real EEG | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/VK-Ant/wavqwise/blob/main/demos/notebooks/wavqwise_eeg_real_data.ipynb) |
340
+ | Trading Forecast | yfinance AAPL/TSLA/MSFT | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/VK-Ant/wavqwise/blob/main/demos/notebooks/wavqwise_trading_real_data.ipynb) |
341
+
342
+ ---
343
+
344
+ ## CLI
345
+
346
+ ```bash
347
+ # Forecast
348
+ wavqwise forecast --input data.csv --target sales --model arima --horizon 30
349
+
350
+ # Anomaly detection
351
+ wavqwise detect --input sensor.csv --target temperature --method zscore
352
+
353
+ # List models
354
+ wavqwise models
355
+ ```
356
+
357
+ ---
358
+
359
+ ## Install Options
360
+
361
+ ```bash
362
+ pip install wavqwise # Core (numpy, pandas, sklearn)
363
+ pip install wavqwise[traditional] # + ARIMA, SARIMA, ETS, Theta
364
+ pip install wavqwise[ml] # + XGBoost, LightGBM, CatBoost
365
+ pip install wavqwise[neural] # + NeuralProphet, N-BEATS, TFT
366
+ pip install wavqwise[foundation] # + Chronos, TimesFM, Moirai
367
+ pip install wavqwise[signals] # + EEG, spectral analysis (MNE)
368
+ pip install wavqwise[trading] # + yfinance, indicators, backtest
369
+ pip install wavqwise[database] # + PostgreSQL, MongoDB, InfluxDB
370
+ pip install wavqwise[onnx-gpu] # + ONNX Runtime GPU
371
+ pip install wavqwise[tensorrt] # + TensorRT optimization
372
+ pip install wavqwise[all] # Everything
373
+ ```
374
+
375
+ ---
376
+
377
+ ## Docker
378
+
379
+ ```bash
380
+ docker-compose -f docker/docker-compose.yml up -d
381
+ # WavqWise + TimescaleDB + Grafana ready at localhost:8888
382
+ ```
383
+
384
+ ## Ecosystem
385
+
386
+ WavqWise is part of the **VK-Ant pluggable AI ecosystem** — six libraries, one architecture:
387
+
388
+ | Library | Domain | Tagline | PyPI |
389
+ |---------|--------|---------|------|
390
+ | [SightRAG](https://github.com/VK-Ant/SightRAG) | Vision | See. Search. Retrieve. | [![PyPI](https://img.shields.io/pypi/v/sightrag?color=blue)](https://pypi.org/project/sightrag/) |
391
+ | [Sonarwise](https://github.com/VK-Ant/sonarwise) | Audio | Hear. Search. Retrieve. | [![PyPI](https://img.shields.io/pypi/v/sonarwise?color=blue)](https://pypi.org/project/sonarwise/) |
392
+ | [Docqwise](https://github.com/VK-Ant/docqwise) | Documents | Read. Extract. Retrieve. | [![PyPI](https://img.shields.io/pypi/v/docqwise?color=blue)](https://pypi.org/project/docqwise/) |
393
+ | **WavqWise** | **Temporal** | **Sense. Forecast. Alert.** | [![PyPI](https://img.shields.io/pypi/v/wavqwise?color=blue)](https://pypi.org/project/wavqwise/) |
394
+ | [Adaptive Intelligence](https://github.com/VK-Ant/adaptive-intelligence) | Orchestration | Learn. Remember. Adapt. | [![PyPI](https://img.shields.io/pypi/v/adaptive-intelligence?color=blue)](https://pypi.org/project/adaptive-intelligence/) |
395
+ | [LLMEvalKit](https://github.com/VK-Ant/llmevalkit) | Evaluation | Evaluate. Score. Improve. | [![PyPI](https://img.shields.io/pypi/v/llmevalkit?color=blue)](https://pypi.org/project/llmevalkit/) |
396
+
397
+ ---
398
+
399
+ ## Contributing
400
+
401
+ ```bash
402
+ git clone https://github.com/VK-Ant/wavqwise.git
403
+ cd wavqwise
404
+ pip install -e ".[dev]"
405
+ make test # 18 tests (smoke + sanity + A/B)
406
+ make lint # ruff + mypy
407
+ ```
408
+
409
+ ---
410
+
411
+ ## License
412
+
413
+ Apache 2.0 License
414
+
415
+ ## Author
416
+
417
+ Venkatkumar Rajan