screamer 2.2.0__tar.gz → 2.2.1__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 (1094) hide show
  1. {screamer-2.2.0 → screamer-2.2.1}/CMakeLists.txt +1 -1
  2. {screamer-2.2.0 → screamer-2.2.1}/PKG-INFO +1 -1
  3. {screamer-2.2.0 → screamer-2.2.1}/js/README.md +24 -1
  4. screamer-2.2.1/js/docs-guide/environments.md +80 -0
  5. {screamer-2.2.0 → screamer-2.2.1}/js/docs-guide/getting-started.md +4 -0
  6. {screamer-2.2.0 → screamer-2.2.1}/js/docs-guide/index.md +2 -1
  7. screamer-2.2.1/js/docs-guide/live-demo.md +51 -0
  8. screamer-2.2.1/js/examples/live-trades.html +387 -0
  9. {screamer-2.2.0 → screamer-2.2.1}/js/package-lock.json +1 -0
  10. {screamer-2.2.0 → screamer-2.2.1}/js/package.json +3 -1
  11. {screamer-2.2.0 → screamer-2.2.1}/js/src/codes.ts +3 -1
  12. {screamer-2.2.0 → screamer-2.2.1}/js/typedoc.json +3 -0
  13. {screamer-2.2.0 → screamer-2.2.1}/pyproject.toml +3 -3
  14. {screamer-2.2.0 → screamer-2.2.1}/screamer/__init__.py +1 -1
  15. {screamer-2.2.0 → screamer-2.2.1}/wasm/CMakeLists.txt +1 -1
  16. {screamer-2.2.0 → screamer-2.2.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  17. {screamer-2.2.0 → screamer-2.2.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  18. {screamer-2.2.0 → screamer-2.2.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  19. {screamer-2.2.0 → screamer-2.2.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  20. {screamer-2.2.0 → screamer-2.2.1}/.github/workflows/build-wheels.yml +0 -0
  21. {screamer-2.2.0 → screamer-2.2.1}/.github/workflows/docs.yml +0 -0
  22. {screamer-2.2.0 → screamer-2.2.1}/.github/workflows/js-docs.yml +0 -0
  23. {screamer-2.2.0 → screamer-2.2.1}/.github/workflows/js-publish.yml +0 -0
  24. {screamer-2.2.0 → screamer-2.2.1}/.github/workflows/tests.yml +0 -0
  25. {screamer-2.2.0 → screamer-2.2.1}/.gitignore +0 -0
  26. {screamer-2.2.0 → screamer-2.2.1}/.readthedocs.yaml +0 -0
  27. {screamer-2.2.0 → screamer-2.2.1}/AUTHORS.md +0 -0
  28. {screamer-2.2.0 → screamer-2.2.1}/CHANGELOG.md +0 -0
  29. {screamer-2.2.0 → screamer-2.2.1}/CODE_OF_CONDUCT.md +0 -0
  30. {screamer-2.2.0 → screamer-2.2.1}/CONTRIBUTING.md +0 -0
  31. {screamer-2.2.0 → screamer-2.2.1}/LICENSE +0 -0
  32. {screamer-2.2.0 → screamer-2.2.1}/Makefile +0 -0
  33. {screamer-2.2.0 → screamer-2.2.1}/README.md +0 -0
  34. {screamer-2.2.0 → screamer-2.2.1}/SECURITY.md +0 -0
  35. {screamer-2.2.0 → screamer-2.2.1}/benchmarks/__init__.py +0 -0
  36. {screamer-2.2.0 → screamer-2.2.1}/benchmarks/_compare/COMPARISON.md +0 -0
  37. {screamer-2.2.0 → screamer-2.2.1}/benchmarks/_compare/comparison.png +0 -0
  38. {screamer-2.2.0 → screamer-2.2.1}/benchmarks/build_compiled.py +0 -0
  39. {screamer-2.2.0 → screamer-2.2.1}/benchmarks/make_comparison_tables.py +0 -0
  40. {screamer-2.2.0 → screamer-2.2.1}/benchmarks/make_plots.py +0 -0
  41. {screamer-2.2.0 → screamer-2.2.1}/benchmarks/make_rank_plot.py +0 -0
  42. {screamer-2.2.0 → screamer-2.2.1}/benchmarks/make_speed_chart.py +0 -0
  43. {screamer-2.2.0 → screamer-2.2.1}/benchmarks/reference_impls.py +0 -0
  44. {screamer-2.2.0 → screamer-2.2.1}/benchmarks/run_benchmarks.py +0 -0
  45. {screamer-2.2.0 → screamer-2.2.1}/benchmarks/run_streaming_benchmarks.py +0 -0
  46. {screamer-2.2.0 → screamer-2.2.1}/benchmarks/streaming_compiled.pyx +0 -0
  47. {screamer-2.2.0 → screamer-2.2.1}/benchmarks/streaming_impls.py +0 -0
  48. {screamer-2.2.0 → screamer-2.2.1}/bindings/bindings.cpp +0 -0
  49. {screamer-2.2.0 → screamer-2.2.1}/bindings/bindings_core.cpp +0 -0
  50. {screamer-2.2.0 → screamer-2.2.1}/bindings/bindings_dag.cpp +0 -0
  51. {screamer-2.2.0 → screamer-2.2.1}/bindings/bindings_ew.cpp +0 -0
  52. {screamer-2.2.0 → screamer-2.2.1}/bindings/bindings_expanding.cpp +0 -0
  53. {screamer-2.2.0 → screamer-2.2.1}/bindings/bindings_fin.cpp +0 -0
  54. {screamer-2.2.0 → screamer-2.2.1}/bindings/bindings_math.cpp +0 -0
  55. {screamer-2.2.0 → screamer-2.2.1}/bindings/bindings_micro.cpp +0 -0
  56. {screamer-2.2.0 → screamer-2.2.1}/bindings/bindings_misc.cpp +0 -0
  57. {screamer-2.2.0 → screamer-2.2.1}/bindings/bindings_preprocessing.cpp +0 -0
  58. {screamer-2.2.0 → screamer-2.2.1}/bindings/bindings_rolling.cpp +0 -0
  59. {screamer-2.2.0 → screamer-2.2.1}/bindings/bindings_signal.cpp +0 -0
  60. {screamer-2.2.0 → screamer-2.2.1}/bindings/bindings_streams.cpp +0 -0
  61. {screamer-2.2.0 → screamer-2.2.1}/devtools/__init__.py +0 -0
  62. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/AD.py +0 -0
  63. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ADOSC.py +0 -0
  64. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ADX.py +0 -0
  65. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ADXR.py +0 -0
  66. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ATR.py +0 -0
  67. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Abs.py +0 -0
  68. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Acos.py +0 -0
  69. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Add.py +0 -0
  70. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/And.py +0 -0
  71. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Asin.py +0 -0
  72. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Atan.py +0 -0
  73. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Atan2.py +0 -0
  74. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/BOP.py +0 -0
  75. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Butter.py +0 -0
  76. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ButterBandpass.py +0 -0
  77. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ButterBandstop.py +0 -0
  78. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ButterHighpass.py +0 -0
  79. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/CCI.py +0 -0
  80. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Cart2Polar.py +0 -0
  81. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Ceil.py +0 -0
  82. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Clip.py +0 -0
  83. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Cos.py +0 -0
  84. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Cube.py +0 -0
  85. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/CumMax.py +0 -0
  86. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/CumMin.py +0 -0
  87. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/CumProd.py +0 -0
  88. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/CumSum.py +0 -0
  89. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/DEMA.py +0 -0
  90. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/DX.py +0 -0
  91. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Decycler.py +0 -0
  92. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Detrend.py +0 -0
  93. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Diff.py +0 -0
  94. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Diff2.py +0 -0
  95. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Div.py +0 -0
  96. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Drawdown.py +0 -0
  97. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Elu.py +0 -0
  98. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Equal.py +0 -0
  99. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Erf.py +0 -0
  100. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Erfc.py +0 -0
  101. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/EwBeta.py +0 -0
  102. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/EwCorr.py +0 -0
  103. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/EwCov.py +0 -0
  104. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/EwGarmanKlassVar.py +0 -0
  105. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/EwKurt.py +0 -0
  106. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/EwMean.py +0 -0
  107. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/EwParkinsonVar.py +0 -0
  108. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/EwRms.py +0 -0
  109. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/EwRogersSatchellVar.py +0 -0
  110. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/EwSkew.py +0 -0
  111. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/EwStd.py +0 -0
  112. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/EwVar.py +0 -0
  113. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/EwZscore.py +0 -0
  114. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Exp.py +0 -0
  115. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ExpandingKurt.py +0 -0
  116. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ExpandingMax.py +0 -0
  117. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ExpandingMean.py +0 -0
  118. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ExpandingMin.py +0 -0
  119. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ExpandingProd.py +0 -0
  120. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ExpandingSkew.py +0 -0
  121. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ExpandingSlope.py +0 -0
  122. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ExpandingStd.py +0 -0
  123. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ExpandingSum.py +0 -0
  124. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ExpandingVar.py +0 -0
  125. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Ffill.py +0 -0
  126. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/FillNa.py +0 -0
  127. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/First.py +0 -0
  128. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Floor.py +0 -0
  129. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/FracDiff.py +0 -0
  130. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/GreaterEqual.py +0 -0
  131. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/GreaterThan.py +0 -0
  132. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/HawkesIntensity.py +0 -0
  133. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Hold.py +0 -0
  134. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/HullMA.py +0 -0
  135. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Hypot.py +0 -0
  136. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Identity.py +0 -0
  137. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/IsFinite.py +0 -0
  138. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/IsNan.py +0 -0
  139. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/KAMA.py +0 -0
  140. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/KalmanFilter.py +0 -0
  141. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Lag.py +0 -0
  142. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Last.py +0 -0
  143. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/LessEqual.py +0 -0
  144. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/LessThan.py +0 -0
  145. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Linear.py +0 -0
  146. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Linear2.py +0 -0
  147. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Log.py +0 -0
  148. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/LogReturn.py +0 -0
  149. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/MACD.py +0 -0
  150. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/MAMA.py +0 -0
  151. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/MFI.py +0 -0
  152. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/MaxDrawdown.py +0 -0
  153. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/MinusDI.py +0 -0
  154. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/MinusDM.py +0 -0
  155. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Momentum.py +0 -0
  156. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/MovingAverage.py +0 -0
  157. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Mul.py +0 -0
  158. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/NATR.py +0 -0
  159. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/NegPart.py +0 -0
  160. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Not.py +0 -0
  161. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/NotEqual.py +0 -0
  162. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/OBV.py +0 -0
  163. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Or.py +0 -0
  164. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/PlusDI.py +0 -0
  165. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/PlusDM.py +0 -0
  166. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Polar2Cart.py +0 -0
  167. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/PosPart.py +0 -0
  168. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Power.py +0 -0
  169. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ROC.py +0 -0
  170. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ROCP.py +0 -0
  171. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/ROCR.py +0 -0
  172. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Relu.py +0 -0
  173. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Return.py +0 -0
  174. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingArgmax.py +0 -0
  175. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingArgmin.py +0 -0
  176. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingBeta.py +0 -0
  177. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingCorr.py +0 -0
  178. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingCov.py +0 -0
  179. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingGarmanKlassVar.py +0 -0
  180. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingHitRate.py +0 -0
  181. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingIqr.py +0 -0
  182. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingKurt.py +0 -0
  183. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingMad.py +0 -0
  184. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingMax.py +0 -0
  185. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingMean.py +0 -0
  186. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingMedian.py +0 -0
  187. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingMedianAD.py +0 -0
  188. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingMin.py +0 -0
  189. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingOU.py +0 -0
  190. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingParkinsonVar.py +0 -0
  191. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingPoly1.py +0 -0
  192. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingPoly2.py +0 -0
  193. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingQuantile.py +0 -0
  194. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingRSI.py +0 -0
  195. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingRange.py +0 -0
  196. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingRms.py +0 -0
  197. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingRogersSatchellVar.py +0 -0
  198. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingSigmaClip.py +0 -0
  199. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingSkew.py +0 -0
  200. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingStd.py +0 -0
  201. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingSum.py +0 -0
  202. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingVWAP.py +0 -0
  203. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingVar.py +0 -0
  204. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingYangZhangVar.py +0 -0
  205. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RollingZscore.py +0 -0
  206. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/RoofingFilter.py +0 -0
  207. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Round.py +0 -0
  208. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/SchmittTrigger.py +0 -0
  209. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Selu.py +0 -0
  210. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Sigmoid.py +0 -0
  211. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Sign.py +0 -0
  212. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Sin.py +0 -0
  213. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Softsign.py +0 -0
  214. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Sqrt.py +0 -0
  215. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Square.py +0 -0
  216. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Stoch.py +0 -0
  217. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/StochRSI.py +0 -0
  218. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Sub.py +0 -0
  219. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/SuperSmoother.py +0 -0
  220. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/TEMA.py +0 -0
  221. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/TRIMA.py +0 -0
  222. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/TRIX.py +0 -0
  223. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Tanh.py +0 -0
  224. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/TrueRange.py +0 -0
  225. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/UltimateOscillator.py +0 -0
  226. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/WMA.py +0 -0
  227. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/Where.py +0 -0
  228. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/WilliamsR.py +0 -0
  229. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/__init__.py +0 -0
  230. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/_ohlc_vol.py +0 -0
  231. {screamer-2.2.0 → screamer-2.2.1}/devtools/baselines/_windowing.py +0 -0
  232. {screamer-2.2.0 → screamer-2.2.1}/devtools/build_function_index.py +0 -0
  233. {screamer-2.2.0 → screamer-2.2.1}/devtools/build_help_registry.py +0 -0
  234. {screamer-2.2.0 → screamer-2.2.1}/devtools/build_topic_pages.py +0 -0
  235. {screamer-2.2.0 → screamer-2.2.1}/devtools/check_pure_headers.sh +0 -0
  236. {screamer-2.2.0 → screamer-2.2.1}/devtools/data/deribit.trades.btc-perpetual.20230804T000000.20230805T000000.csv +0 -0
  237. {screamer-2.2.0 → screamer-2.2.1}/devtools/data/deribit.trades.eth-perpetual.20230804T000000.20230805T000000.csv +0 -0
  238. {screamer-2.2.0 → screamer-2.2.1}/devtools/data/deribit_trade_download.py +0 -0
  239. {screamer-2.2.0 → screamer-2.2.1}/devtools/design_experiments/interface_v2.ipynb +0 -0
  240. {screamer-2.2.0 → screamer-2.2.1}/devtools/generate_screamer__init__.py +0 -0
  241. {screamer-2.2.0 → screamer-2.2.1}/devtools/inject_nan_footnote.py +0 -0
  242. {screamer-2.2.0 → screamer-2.2.1}/devtools/prompts/template_baseline.txt +0 -0
  243. {screamer-2.2.0 → screamer-2.2.1}/devtools/prompts/template_doc.txt +0 -0
  244. {screamer-2.2.0 → screamer-2.2.1}/devtools/report_baselines.py +0 -0
  245. {screamer-2.2.0 → screamer-2.2.1}/devtools/report_binding.py +0 -0
  246. {screamer-2.2.0 → screamer-2.2.1}/devtools/report_class_args.py +0 -0
  247. {screamer-2.2.0 → screamer-2.2.1}/devtools/report_docs.py +0 -0
  248. {screamer-2.2.0 → screamer-2.2.1}/devtools/stream_diagrams.py +0 -0
  249. {screamer-2.2.0 → screamer-2.2.1}/devtools/topics.py +0 -0
  250. {screamer-2.2.0 → screamer-2.2.1}/devtools/wasm/gen_dag_oracle.py +0 -0
  251. {screamer-2.2.0 → screamer-2.2.1}/devtools/wasm/gen_oracle.py +0 -0
  252. {screamer-2.2.0 → screamer-2.2.1}/devtools/wasm/gen_ts_api.py +0 -0
  253. {screamer-2.2.0 → screamer-2.2.1}/devtools/wasm/gen_wasm_bindings.py +0 -0
  254. {screamer-2.2.0 → screamer-2.2.1}/devtools/wasm/gen_wasm_manifest.py +0 -0
  255. {screamer-2.2.0 → screamer-2.2.1}/devtools/wasm/wasm_manifest.json +0 -0
  256. {screamer-2.2.0 → screamer-2.2.1}/docs/Makefile +0 -0
  257. {screamer-2.2.0 → screamer-2.2.1}/docs/_static/css/custom.css +0 -0
  258. {screamer-2.2.0 → screamer-2.2.1}/docs/_static/diagrams/combine_latest.svg +0 -0
  259. {screamer-2.2.0 → screamer-2.2.1}/docs/_static/diagrams/dropna.svg +0 -0
  260. {screamer-2.2.0 → screamer-2.2.1}/docs/_static/diagrams/filter.svg +0 -0
  261. {screamer-2.2.0 → screamer-2.2.1}/docs/_static/diagrams/merge.svg +0 -0
  262. {screamer-2.2.0 → screamer-2.2.1}/docs/by_group/backtesting-risk.rst +0 -0
  263. {screamer-2.2.0 → screamer-2.2.1}/docs/by_group/data-prep.rst +0 -0
  264. {screamer-2.2.0 → screamer-2.2.1}/docs/by_group/indicators.rst +0 -0
  265. {screamer-2.2.0 → screamer-2.2.1}/docs/by_group/machine-learning.rst +0 -0
  266. {screamer-2.2.0 → screamer-2.2.1}/docs/by_group/math-logic.rst +0 -0
  267. {screamer-2.2.0 → screamer-2.2.1}/docs/by_group/microstructure.rst +0 -0
  268. {screamer-2.2.0 → screamer-2.2.1}/docs/by_group/smoothing-filters.rst +0 -0
  269. {screamer-2.2.0 → screamer-2.2.1}/docs/by_group/statistics.rst +0 -0
  270. {screamer-2.2.0 → screamer-2.2.1}/docs/by_group/streaming.rst +0 -0
  271. {screamer-2.2.0 → screamer-2.2.1}/docs/by_group_index.rst +0 -0
  272. {screamer-2.2.0 → screamer-2.2.1}/docs/changelog.rst +0 -0
  273. {screamer-2.2.0 → screamer-2.2.1}/docs/choosing_an_operator.md +0 -0
  274. {screamer-2.2.0 → screamer-2.2.1}/docs/conf.py +0 -0
  275. {screamer-2.2.0 → screamer-2.2.1}/docs/conventions.md +0 -0
  276. {screamer-2.2.0 → screamer-2.2.1}/docs/function_index.txt +0 -0
  277. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_dag/Pipeline.md +0 -0
  278. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwBeta.md +0 -0
  279. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwCorr.md +0 -0
  280. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwCov.md +0 -0
  281. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwGarmanKlassVar.md +0 -0
  282. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwGarmanKlassVol.md +0 -0
  283. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwKurt.md +0 -0
  284. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwMean.md +0 -0
  285. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwParkinsonVar.md +0 -0
  286. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwParkinsonVol.md +0 -0
  287. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwRms.md +0 -0
  288. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwRogersSatchellVar.md +0 -0
  289. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwRogersSatchellVol.md +0 -0
  290. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwSkew.md +0 -0
  291. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwStd.md +0 -0
  292. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwVar.md +0 -0
  293. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_ew/EwZscore.md +0 -0
  294. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_expanding/ExpandingKurt.md +0 -0
  295. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_expanding/ExpandingMax.md +0 -0
  296. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_expanding/ExpandingMean.md +0 -0
  297. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_expanding/ExpandingMin.md +0 -0
  298. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_expanding/ExpandingProd.md +0 -0
  299. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_expanding/ExpandingSkew.md +0 -0
  300. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_expanding/ExpandingSlope.md +0 -0
  301. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_expanding/ExpandingStd.md +0 -0
  302. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_expanding/ExpandingSum.md +0 -0
  303. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_expanding/ExpandingVar.md +0 -0
  304. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/BacktestL1Orders.md +0 -0
  305. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/BacktestL1Target.md +0 -0
  306. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/BacktestL1TradesOrders.md +0 -0
  307. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/BacktestOHLCOrders.md +0 -0
  308. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/BacktestOHLCTarget.md +0 -0
  309. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/BacktestPriceTarget.md +0 -0
  310. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/BacktestReport.md +0 -0
  311. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/BacktestTradesOrders.md +0 -0
  312. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/BacktestTradesTarget.md +0 -0
  313. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/BayesianRegression.md +0 -0
  314. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/Drawdown.md +0 -0
  315. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/LogReturn.md +0 -0
  316. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/MaxDrawdown.md +0 -0
  317. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/PortfolioReport.md +0 -0
  318. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/ROC.md +0 -0
  319. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/ROCP.md +0 -0
  320. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/ROCR.md +0 -0
  321. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/Return.md +0 -0
  322. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingAlpha.md +0 -0
  323. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingBeta.md +0 -0
  324. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingCVaR.md +0 -0
  325. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingCalmar.md +0 -0
  326. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingCorr.md +0 -0
  327. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingCov.md +0 -0
  328. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingDownsideDeviation.md +0 -0
  329. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingHitRate.md +0 -0
  330. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingInfoRatio.md +0 -0
  331. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingLinearRegression.md +0 -0
  332. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingMaxDrawdown.md +0 -0
  333. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingOmega.md +0 -0
  334. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingPercentile.md +0 -0
  335. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingRank.md +0 -0
  336. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingResidualStd.md +0 -0
  337. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingSharpe.md +0 -0
  338. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingSortino.md +0 -0
  339. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingSpread.md +0 -0
  340. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/RollingTSF.md +0 -0
  341. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/backtest_report.md +0 -0
  342. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_fin/choosing_a_backtest_engine.md +0 -0
  343. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Abs.md +0 -0
  344. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Acos.md +0 -0
  345. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Add.md +0 -0
  346. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/And.md +0 -0
  347. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Asin.md +0 -0
  348. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Atan.md +0 -0
  349. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Atan2.md +0 -0
  350. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Cart2Polar.md +0 -0
  351. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Ceil.md +0 -0
  352. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Cos.md +0 -0
  353. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Cube.md +0 -0
  354. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Div.md +0 -0
  355. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Elu.md +0 -0
  356. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Equal.md +0 -0
  357. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Erf.md +0 -0
  358. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Erfc.md +0 -0
  359. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Exp.md +0 -0
  360. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Floor.md +0 -0
  361. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/GreaterEqual.md +0 -0
  362. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/GreaterThan.md +0 -0
  363. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Hypot.md +0 -0
  364. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/IsFinite.md +0 -0
  365. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/IsNan.md +0 -0
  366. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/LessEqual.md +0 -0
  367. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/LessThan.md +0 -0
  368. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Linear.md +0 -0
  369. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Linear2.md +0 -0
  370. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Log.md +0 -0
  371. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Mul.md +0 -0
  372. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/NegPart.md +0 -0
  373. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Not.md +0 -0
  374. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/NotEqual.md +0 -0
  375. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Or.md +0 -0
  376. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Polar2Cart.md +0 -0
  377. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/PosPart.md +0 -0
  378. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Power.md +0 -0
  379. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Relu.md +0 -0
  380. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Round.md +0 -0
  381. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Selu.md +0 -0
  382. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Sigmoid.md +0 -0
  383. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Sign.md +0 -0
  384. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Sin.md +0 -0
  385. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Softsign.md +0 -0
  386. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Sqrt.md +0 -0
  387. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Square.md +0 -0
  388. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Sub.md +0 -0
  389. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Tanh.md +0 -0
  390. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_math/Where.md +0 -0
  391. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/AmihudIlliquidity.md +0 -0
  392. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/BulkVolumeClassifier.md +0 -0
  393. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/ContOFI.md +0 -0
  394. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/EffectiveSpread.md +0 -0
  395. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/EwKyleLambda.md +0 -0
  396. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/HawkesIntensity.md +0 -0
  397. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/LeeReadySign.md +0 -0
  398. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/MicroPrice.md +0 -0
  399. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/OFI.md +0 -0
  400. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/Propagator.md +0 -0
  401. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/QueueImbalance.md +0 -0
  402. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/RealizedSpread.md +0 -0
  403. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/RollSpread.md +0 -0
  404. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/RollingKyleLambda.md +0 -0
  405. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/RollingOrderImbalance.md +0 -0
  406. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/SignedVolume.md +0 -0
  407. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/TickRuleSign.md +0 -0
  408. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_micro/VPIN.md +0 -0
  409. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_misc/CumMax.md +0 -0
  410. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_misc/CumMin.md +0 -0
  411. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_misc/CumProd.md +0 -0
  412. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_misc/CumSum.md +0 -0
  413. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_misc/Detrend.md +0 -0
  414. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_misc/Diff.md +0 -0
  415. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_misc/Diff2.md +0 -0
  416. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_misc/First.md +0 -0
  417. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_misc/Identity.md +0 -0
  418. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_misc/Lag.md +0 -0
  419. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_misc/Last.md +0 -0
  420. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_misc/Momentum.md +0 -0
  421. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_preprocessing/Clip.md +0 -0
  422. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_preprocessing/Ffill.md +0 -0
  423. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_preprocessing/FillNa.md +0 -0
  424. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/AD.md +0 -0
  425. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/ADOSC.md +0 -0
  426. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/ADX.md +0 -0
  427. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/ADXR.md +0 -0
  428. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/ATR.md +0 -0
  429. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/BOP.md +0 -0
  430. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/BollingerBands.md +0 -0
  431. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/CCI.md +0 -0
  432. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/DEMA.md +0 -0
  433. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/DX.md +0 -0
  434. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/DonchianChannels.md +0 -0
  435. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/Hampel.md +0 -0
  436. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/HullMA.md +0 -0
  437. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/ImpulseClip.md +0 -0
  438. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/KAMA.md +0 -0
  439. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/KeltnerChannels.md +0 -0
  440. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/MACD.md +0 -0
  441. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/MFI.md +0 -0
  442. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/MinusDI.md +0 -0
  443. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/MinusDM.md +0 -0
  444. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/NATR.md +0 -0
  445. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/OBV.md +0 -0
  446. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/PlusDI.md +0 -0
  447. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/PlusDM.md +0 -0
  448. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingArgmax.md +0 -0
  449. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingArgmin.md +0 -0
  450. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingGarmanKlassVar.md +0 -0
  451. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingGarmanKlassVol.md +0 -0
  452. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingHurst.md +0 -0
  453. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingIqr.md +0 -0
  454. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingKurt.md +0 -0
  455. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingMad.md +0 -0
  456. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingMax.md +0 -0
  457. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingMean.md +0 -0
  458. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingMedian.md +0 -0
  459. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingMedianAD.md +0 -0
  460. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingMin.md +0 -0
  461. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingMinMax.md +0 -0
  462. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingOU.md +0 -0
  463. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingParkinsonVar.md +0 -0
  464. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingParkinsonVol.md +0 -0
  465. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingPoly1.md +0 -0
  466. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingPoly2.md +0 -0
  467. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingQuantile.md +0 -0
  468. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingRSI.md +0 -0
  469. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingRange.md +0 -0
  470. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingRms.md +0 -0
  471. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingRogersSatchellVar.md +0 -0
  472. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingRogersSatchellVol.md +0 -0
  473. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingSigmaClip.md +0 -0
  474. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingSkew.md +0 -0
  475. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingStd.md +0 -0
  476. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingSum.md +0 -0
  477. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingVWAP.md +0 -0
  478. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingVar.md +0 -0
  479. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingYangZhangVar.md +0 -0
  480. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingYangZhangVol.md +0 -0
  481. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/RollingZscore.md +0 -0
  482. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/Stoch.md +0 -0
  483. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/StochRSI.md +0 -0
  484. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/TEMA.md +0 -0
  485. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/TRIMA.md +0 -0
  486. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/TRIX.md +0 -0
  487. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/TrueRange.md +0 -0
  488. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/UltimateOscillator.md +0 -0
  489. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/WMA.md +0 -0
  490. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_rolling/WilliamsR.md +0 -0
  491. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/Butter.md +0 -0
  492. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/ButterBandpass.md +0 -0
  493. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/ButterBandstop.md +0 -0
  494. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/ButterHighpass.md +0 -0
  495. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/CycleAmplitude.md +0 -0
  496. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/CycleFrequency.md +0 -0
  497. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/CyclePhase.md +0 -0
  498. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/CycleSine.md +0 -0
  499. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/Decycler.md +0 -0
  500. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/DominantCycle.md +0 -0
  501. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/FracDiff.md +0 -0
  502. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/HilbertPhasor.md +0 -0
  503. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/Hold.md +0 -0
  504. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/InstantaneousTrendline.md +0 -0
  505. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/KalmanFilter.md +0 -0
  506. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/MAMA.md +0 -0
  507. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/MovingAverage.md +0 -0
  508. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/RoofingFilter.md +0 -0
  509. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/SchmittTrigger.md +0 -0
  510. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/SuperSmoother.md +0 -0
  511. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_signal/TrendMode.md +0 -0
  512. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_streams/CombineLatest.md +0 -0
  513. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_streams/Delay.md +0 -0
  514. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_streams/Dropna.md +0 -0
  515. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_streams/Filter.md +0 -0
  516. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_streams/Merge.md +0 -0
  517. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_streams/Resample.md +0 -0
  518. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_streams/Select.md +0 -0
  519. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_streams/Stream.md +0 -0
  520. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_streams/from_pandas.md +0 -0
  521. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_streams/split.md +0 -0
  522. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_streams/to_pandas.md +0 -0
  523. {screamer-2.2.0 → screamer-2.2.1}/docs/functions_supervised/forecast_pairs.md +0 -0
  524. {screamer-2.2.0 → screamer-2.2.1}/docs/img/3lines.png +0 -0
  525. {screamer-2.2.0 → screamer-2.2.1}/docs/img/per_column.png +0 -0
  526. {screamer-2.2.0 → screamer-2.2.1}/docs/img/speed.png +0 -0
  527. {screamer-2.2.0 → screamer-2.2.1}/docs/img/speed_chart.png +0 -0
  528. {screamer-2.2.0 → screamer-2.2.1}/docs/index.rst +0 -0
  529. {screamer-2.2.0 → screamer-2.2.1}/docs/installation.md +0 -0
  530. {screamer-2.2.0 → screamer-2.2.1}/docs/make.bat +0 -0
  531. {screamer-2.2.0 → screamer-2.2.1}/docs/microstructure.md +0 -0
  532. {screamer-2.2.0 → screamer-2.2.1}/docs/multistream.md +0 -0
  533. {screamer-2.2.0 → screamer-2.2.1}/docs/nan_and_warmup.md +0 -0
  534. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/01-quickstart-polymorphic-api.ipynb +0 -0
  535. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/02-window-statistics.ipynb +0 -0
  536. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/03-financial-indicators.ipynb +0 -0
  537. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/04-signal-processing.ipynb +0 -0
  538. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/05-nan-handling.ipynb +0 -0
  539. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/06-streaming-live-events.ipynb +0 -0
  540. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/07-multi-stream-operators.ipynb +0 -0
  541. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/08-pipelines.ipynb +0 -0
  542. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/09-bars-from-ticks.ipynb +0 -0
  543. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/10-custom-and-multi-column-bars.ipynb +0 -0
  544. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/11-microstructure-order-flow.ipynb +0 -0
  545. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/12-microstructure-price-impact.ipynb +0 -0
  546. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/13-microstructure-toxicity-and-book.ipynb +0 -0
  547. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/14-backtesting-a-signal.ipynb +0 -0
  548. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/15-event-driven-backtests.ipynb +0 -0
  549. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/16-supervised-forecasting.ipynb +0 -0
  550. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/17-filtering-and-forecasting-with-uncertainty.ipynb +0 -0
  551. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/18-pairs-and-mean-reversion.ipynb +0 -0
  552. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/19-cycle-and-spectral-analysis.ipynb +0 -0
  553. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/README.md +0 -0
  554. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/data/deribit_btc_perp_6h.csv +0 -0
  555. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/data/deribit_eth_perp_6h.csv +0 -0
  556. {screamer-2.2.0 → screamer-2.2.1}/docs/notebooks/index.md +0 -0
  557. {screamer-2.2.0 → screamer-2.2.1}/docs/performance.md +0 -0
  558. {screamer-2.2.0 → screamer-2.2.1}/docs/pipelines.md +0 -0
  559. {screamer-2.2.0 → screamer-2.2.1}/docs/polymorphic_api.md +0 -0
  560. {screamer-2.2.0 → screamer-2.2.1}/docs/references_index.rst +0 -0
  561. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-05-20-help-json-structure-refactor.md +0 -0
  562. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-02-multistream-plan1-node-core.md +0 -0
  563. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-02-multistream-plan2-merge-pace.md +0 -0
  564. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-02-multistream-plan3-combine-latest.md +0 -0
  565. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-02-multistream-plan4-filter-split-api.md +0 -0
  566. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-02-multistream-plan5-docs-identity.md +0 -0
  567. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-03-dag1-definition.md +0 -0
  568. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-03-dag2a-evalop-arithmetic.md +0 -0
  569. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-03-dag2b1-bulk-evalop.md +0 -0
  570. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-03-dag2b2-wide-edge-functornode.md +0 -0
  571. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-03-dag2b3-combinelatest-fanout.md +0 -0
  572. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-03-dag2b4-compiler.md +0 -0
  573. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-03-dag2b5a-streaming.md +0 -0
  574. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-03-dag2b5b-cutover.md +0 -0
  575. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-03-demo-notebooks.md +0 -0
  576. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-04-stream-index-model-redesign.md +0 -0
  577. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-04-stream-shaping-dag-phaseA.md +0 -0
  578. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-04-stream-shaping-dag-phaseB-resample.md +0 -0
  579. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-08-windowed-aggregation-plan.md +0 -0
  580. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-09-unified-streaming-stage1-functor-core.md +0 -0
  581. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-10-unified-streaming-stage2-dag-lazy-callable.md +0 -0
  582. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-10-unified-streaming-stage3-single-input-operators.md +0 -0
  583. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-10-unified-streaming-stage3b-multi-input-operators.md +0 -0
  584. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-10-unified-streaming-stage4-resample-freq.md +0 -0
  585. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-11-node-core-step1-unify-node-contract.md +0 -0
  586. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-11-node-core-step2-operator-ports.md +0 -0
  587. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-11-node-core-step3a-filter-mask-gate.md +0 -0
  588. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-11-node-core-step3c-dropna-select-node-backing.md +0 -0
  589. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-11-node-core-step3e-api-collapse-camelcase.md +0 -0
  590. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-11-resample-redesign-implementation-plan.md +0 -0
  591. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-15-microstructure-flow-operators-plan.md +0 -0
  592. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-15-microstructure-flow-operators-tranche-1b-plan.md +0 -0
  593. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-18-backtest-fill-models.md +0 -0
  594. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-18-docs-navigation-redesign.md +0 -0
  595. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-20-backtest-engine-suite.md +0 -0
  596. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-20-unified-backtest-engine-api.md +0 -0
  597. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-22-bayesian-regression.md +0 -0
  598. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-22-delay-and-forecast-pairs.md +0 -0
  599. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-23-v1.0-api-hardening.md +0 -0
  600. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-23-v1.0-tier3-doc-examples.md +0 -0
  601. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-23-v1.0-tier4-onboarding.md +0 -0
  602. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-24-delay-watermark-reorder.md +0 -0
  603. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-28-resample-infobars-hold.md +0 -0
  604. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-30-adaptive-overlays.md +0 -0
  605. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-30-cycle-core.md +0 -0
  606. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-30-dmi-family.md +0 -0
  607. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-07-30-ehlers-filter-foundation.md +0 -0
  608. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-08-01-nanobind-migration.md +0 -0
  609. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-08-02-js-docs.md +0 -0
  610. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-08-02-wasm-phase1-base-class-split.md +0 -0
  611. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-08-02-wasm-phase2-embind-codegen.md +0 -0
  612. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-08-02-wasm-phase3-ts-api.md +0 -0
  613. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-08-02-wasm-phase5-dag-pipeline.md +0 -0
  614. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/plans/2026-08-02-wasm-phase6-packaging.md +0 -0
  615. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-05-20-help-json-structure-refactor-design.md +0 -0
  616. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-02-multistream-foundation-design.md +0 -0
  617. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-03-dag-definition-design.md +0 -0
  618. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-03-dag2-cpp-engine-design.md +0 -0
  619. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-03-demo-notebooks-design.md +0 -0
  620. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-04-notebook-docs-integration-design.md +0 -0
  621. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-04-stream-index-model-redesign.md +0 -0
  622. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-04-stream-shaping-dag-phaseA-design.md +0 -0
  623. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-04-stream-shaping-dag-phaseB-resample-design.md +0 -0
  624. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-06-dag-visualization-serialization-design.md +0 -0
  625. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-06-despiking-filters-design.md +0 -0
  626. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-06-topic-taxonomy-proposal.md +0 -0
  627. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-06-topic-taxonomy-unified-frontmatter-plan.md +0 -0
  628. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-06-topics.yml +0 -0
  629. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-08-multicolumn-bars-lazy-agg-design.md +0 -0
  630. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-08-windowed-aggregation-design.md +0 -0
  631. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-09-unified-streaming-model-design.md +0 -0
  632. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-11-node-core-step3-api-collapse-design.md +0 -0
  633. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-11-resample-redesign-freq-agg-functor-design.md +0 -0
  634. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-11-unified-cpp-node-core-architecture-design.md +0 -0
  635. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-15-microstructure-flow-operators-design.md +0 -0
  636. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-16-lazy-path-cpp-design.md +0 -0
  637. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-17-backtest-foundation-signal-design.md +0 -0
  638. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-18-backtest-fill-models-design.md +0 -0
  639. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-18-docs-navigation-redesign.md +0 -0
  640. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-20-backtest-engine-suite-design.md +0 -0
  641. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-20-schmitt-trigger-initial-state-design.md +0 -0
  642. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-20-unified-backtest-engine-api.md +0 -0
  643. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-22-bayesian-regression-design.md +0 -0
  644. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-22-delay-and-forecast-pairs-design.md +0 -0
  645. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-23-v1.0-readiness-assessment.md +0 -0
  646. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-24-delay-watermark-reorder-design.md +0 -0
  647. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-28-resample-infobars-hold-design.md +0 -0
  648. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-30-ehlers-cycle-and-dmi-tranche-design.md +0 -0
  649. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-07-30-fracdiff-design.md +0 -0
  650. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/specs/2026-08-02-wasm-js-binding-design.md +0 -0
  651. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/spikes/2026-08-01-nanobind/CMakeLists.txt +0 -0
  652. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/spikes/2026-08-01-nanobind/REPORT.md +0 -0
  653. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/spikes/2026-08-01-nanobind/nb_spike.cpp +0 -0
  654. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/spikes/2026-08-01-nanobind/smoke_test.py +0 -0
  655. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/spikes/2026-08-01-nanobind/spike_helper.py +0 -0
  656. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/spikes/2026-08-02-wasm/.gitignore +0 -0
  657. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/spikes/2026-08-02-wasm/REPORT.md +0 -0
  658. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/spikes/2026-08-02-wasm/build.sh +0 -0
  659. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/spikes/2026-08-02-wasm/driver.mjs +0 -0
  660. {screamer-2.2.0 → screamer-2.2.1}/docs/superpowers/spikes/2026-08-02-wasm/spike.cpp +0 -0
  661. {screamer-2.2.0 → screamer-2.2.1}/docs/topics.yml +0 -0
  662. {screamer-2.2.0 → screamer-2.2.1}/docs/usage.md +0 -0
  663. {screamer-2.2.0 → screamer-2.2.1}/examples/lag_example.py +0 -0
  664. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/ad.h +0 -0
  665. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/adosc.h +0 -0
  666. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/adx.h +0 -0
  667. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/adxr.h +0 -0
  668. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/amihud_illiquidity.h +0 -0
  669. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/arithmetic.h +0 -0
  670. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/atr.h +0 -0
  671. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/backtest_l1_orders.h +0 -0
  672. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/backtest_l1_target.h +0 -0
  673. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/backtest_l1trades_orders.h +0 -0
  674. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/backtest_ohlc_orders.h +0 -0
  675. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/backtest_ohlc_target.h +0 -0
  676. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/backtest_price_target.h +0 -0
  677. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/backtest_report.h +0 -0
  678. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/backtest_trades_orders.h +0 -0
  679. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/backtest_trades_target.h +0 -0
  680. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/bayesian_regression.h +0 -0
  681. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/bollinger_bands.h +0 -0
  682. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/bop.h +0 -0
  683. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/bulk_volume_classifier.h +0 -0
  684. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/butter.h +0 -0
  685. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/butter_bandpass.h +0 -0
  686. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/butter_bandstop.h +0 -0
  687. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/butter_highpass.h +0 -0
  688. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/cci.h +0 -0
  689. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/clip.h +0 -0
  690. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/async_generator.h +0 -0
  691. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/base.h +0 -0
  692. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/buffer.h +0 -0
  693. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/cast_double.h +0 -0
  694. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/dispatch.h +0 -0
  695. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/eval_op.h +0 -0
  696. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/float_info.h +0 -0
  697. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/function_traits.h +0 -0
  698. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/functor_base.h +0 -0
  699. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/lazy_eval_iterator.h +0 -0
  700. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/market_price.h +0 -0
  701. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/math.h +0 -0
  702. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/order_statistic_tree.h +0 -0
  703. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/transform.h +0 -0
  704. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/common/transform_4.h +0 -0
  705. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/cont_ofi.h +0 -0
  706. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/cum_max.h +0 -0
  707. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/cum_min.h +0 -0
  708. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/cum_prod.h +0 -0
  709. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/cum_sum.h +0 -0
  710. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/cycle_amplitude.h +0 -0
  711. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/cycle_frequency.h +0 -0
  712. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/cycle_phase.h +0 -0
  713. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/cycle_sine.h +0 -0
  714. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/broadcast.h +0 -0
  715. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/collector.h +0 -0
  716. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/combine_latest_node.h +0 -0
  717. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/compiled_graph.h +0 -0
  718. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/delay_node.h +0 -0
  719. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/driver.h +0 -0
  720. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/dropna_node.h +0 -0
  721. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/filter_node.h +0 -0
  722. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/frame.h +0 -0
  723. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/functor_node.h +0 -0
  724. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/graph.h +0 -0
  725. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/resample_generic_node.h +0 -0
  726. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/resample_node.h +0 -0
  727. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/resample_params.h +0 -0
  728. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/resettable.h +0 -0
  729. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dag/select_node.h +0 -0
  730. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/decycler.h +0 -0
  731. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dema.h +0 -0
  732. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/block_extremum.h +0 -0
  733. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/delay_buffer.h +0 -0
  734. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/dmi_core.h +0 -0
  735. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/fir_core.h +0 -0
  736. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/hilbert_cycle.h +0 -0
  737. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/l1_fill.h +0 -0
  738. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/monotonic_deque.h +0 -0
  739. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/ohlc_fill.h +0 -0
  740. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/pnl_account.h +0 -0
  741. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/robust_window.h +0 -0
  742. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/rolling_mean.h +0 -0
  743. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/rolling_sum.h +0 -0
  744. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/start_policy.h +0 -0
  745. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/target_front.h +0 -0
  746. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/trades_fill.h +0 -0
  747. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detail/wilder_smoother.h +0 -0
  748. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/detrend.h +0 -0
  749. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/diff.h +0 -0
  750. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/diff2.h +0 -0
  751. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dominant_cycle.h +0 -0
  752. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/donchian_channels.h +0 -0
  753. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/drawdown.h +0 -0
  754. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/dx.h +0 -0
  755. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/effective_spread.h +0 -0
  756. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/ew_beta.h +0 -0
  757. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/ew_corr.h +0 -0
  758. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/ew_cov.h +0 -0
  759. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/ew_kurt.h +0 -0
  760. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/ew_mean.h +0 -0
  761. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/ew_rms.h +0 -0
  762. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/ew_skew.h +0 -0
  763. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/ew_std.h +0 -0
  764. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/ew_var.h +0 -0
  765. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/ew_zscore.h +0 -0
  766. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/expanding_kurt.h +0 -0
  767. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/expanding_max.h +0 -0
  768. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/expanding_mean.h +0 -0
  769. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/expanding_min.h +0 -0
  770. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/expanding_prod.h +0 -0
  771. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/expanding_skew.h +0 -0
  772. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/expanding_slope.h +0 -0
  773. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/expanding_std.h +0 -0
  774. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/expanding_sum.h +0 -0
  775. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/expanding_var.h +0 -0
  776. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/ffill.h +0 -0
  777. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/fillna.h +0 -0
  778. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/first.h +0 -0
  779. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/frac_diff.h +0 -0
  780. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/garman_klass.h +0 -0
  781. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/geometry.h +0 -0
  782. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/hampel.h +0 -0
  783. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/hawkes_intensity.h +0 -0
  784. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/hilbert_phasor.h +0 -0
  785. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/hold.h +0 -0
  786. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/hull_ma.h +0 -0
  787. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/impulse_clip.h +0 -0
  788. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/instantaneous_trendline.h +0 -0
  789. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/kalman_filter.h +0 -0
  790. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/kama.h +0 -0
  791. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/keltner_channels.h +0 -0
  792. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/lag.h +0 -0
  793. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/last.h +0 -0
  794. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/lee_ready_sign.h +0 -0
  795. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/linear.h +0 -0
  796. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/linear2.h +0 -0
  797. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/log_return.h +0 -0
  798. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/logic.h +0 -0
  799. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/macd.h +0 -0
  800. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/mama.h +0 -0
  801. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/max_drawdown.h +0 -0
  802. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/mfi.h +0 -0
  803. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/micro_price.h +0 -0
  804. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/minus_di.h +0 -0
  805. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/minus_dm.h +0 -0
  806. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/momentum.h +0 -0
  807. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/moving_average.h +0 -0
  808. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/natr.h +0 -0
  809. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/obv.h +0 -0
  810. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/ofi.h +0 -0
  811. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/parkinson.h +0 -0
  812. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/plus_di.h +0 -0
  813. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/plus_dm.h +0 -0
  814. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/portfolio_report.h +0 -0
  815. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/power.h +0 -0
  816. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/propagator.h +0 -0
  817. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/realized_spread.h +0 -0
  818. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/return.h +0 -0
  819. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/roc.h +0 -0
  820. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rocp.h +0 -0
  821. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rocr.h +0 -0
  822. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rogers_satchell.h +0 -0
  823. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/roll_spread.h +0 -0
  824. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_alpha.h +0 -0
  825. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_argmax.h +0 -0
  826. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_argmin.h +0 -0
  827. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_beta.h +0 -0
  828. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_calmar.h +0 -0
  829. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_corr.h +0 -0
  830. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_cov.h +0 -0
  831. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_cvar.h +0 -0
  832. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_downside_deviation.h +0 -0
  833. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_hit_rate.h +0 -0
  834. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_hurst.h +0 -0
  835. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_info_ratio.h +0 -0
  836. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_iqr.h +0 -0
  837. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_kurt.h +0 -0
  838. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_linear_regression.h +0 -0
  839. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_mad.h +0 -0
  840. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_max.h +0 -0
  841. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_max_drawdown.h +0 -0
  842. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_mean.h +0 -0
  843. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_median.h +0 -0
  844. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_median_ad.h +0 -0
  845. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_min.h +0 -0
  846. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_min_max.h +0 -0
  847. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_omega.h +0 -0
  848. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_ou.h +0 -0
  849. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_percentile.h +0 -0
  850. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_poly1.h +0 -0
  851. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_poly2.h +0 -0
  852. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_quantile.h +0 -0
  853. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_range.h +0 -0
  854. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_rank.h +0 -0
  855. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_residual_std.h +0 -0
  856. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_rms.h +0 -0
  857. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_rsi.h +0 -0
  858. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_sharpe.h +0 -0
  859. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_sigma_clip.h +0 -0
  860. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_skew.h +0 -0
  861. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_sortino.h +0 -0
  862. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_spread.h +0 -0
  863. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_std.h +0 -0
  864. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_sum.h +0 -0
  865. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_tsf.h +0 -0
  866. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_var.h +0 -0
  867. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/rolling_zscore.h +0 -0
  868. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/roofing_filter.h +0 -0
  869. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/schmitt_trigger.h +0 -0
  870. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/signal/bessel.h +0 -0
  871. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/signal/butter.h +0 -0
  872. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/signal/ehlers.h +0 -0
  873. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/signal/signal.h +0 -0
  874. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/stoch.h +0 -0
  875. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/stoch_rsi.h +0 -0
  876. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/streams/collector_sink.h +0 -0
  877. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/streams/combine_latest.h +0 -0
  878. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/streams/driver.h +0 -0
  879. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/streams/event.h +0 -0
  880. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/streams/functor_node.h +0 -0
  881. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/streams/merge_source.h +0 -0
  882. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/streams/py_source.h +0 -0
  883. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/streams/vector_source.h +0 -0
  884. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/super_smoother.h +0 -0
  885. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/tema.h +0 -0
  886. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/tick_rule_sign.h +0 -0
  887. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/transform_functions.h +0 -0
  888. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/trend_mode.h +0 -0
  889. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/trima.h +0 -0
  890. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/trix.h +0 -0
  891. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/true_range.h +0 -0
  892. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/ultimate_oscillator.h +0 -0
  893. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/vpin.h +0 -0
  894. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/vwap.h +0 -0
  895. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/williams_r.h +0 -0
  896. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/wma.h +0 -0
  897. {screamer-2.2.0 → screamer-2.2.1}/include/screamer/yang_zhang.h +0 -0
  898. {screamer-2.2.0 → screamer-2.2.1}/js/.gitignore +0 -0
  899. {screamer-2.2.0 → screamer-2.2.1}/js/docs-guide/lifecycle.md +0 -0
  900. {screamer-2.2.0 → screamer-2.2.1}/js/docs-guide/parity.md +0 -0
  901. {screamer-2.2.0 → screamer-2.2.1}/js/docs-guide/pipeline.md +0 -0
  902. {screamer-2.2.0 → screamer-2.2.1}/js/docs-guide/regimes.md +0 -0
  903. {screamer-2.2.0 → screamer-2.2.1}/js/scripts/pack-smoke.sh +0 -0
  904. {screamer-2.2.0 → screamer-2.2.1}/js/src/combinators.ts +0 -0
  905. {screamer-2.2.0 → screamer-2.2.1}/js/src/errors.ts +0 -0
  906. {screamer-2.2.0 → screamer-2.2.1}/js/src/generated/ops.d.ts +0 -0
  907. {screamer-2.2.0 → screamer-2.2.1}/js/src/generated/ops.ts +0 -0
  908. {screamer-2.2.0 → screamer-2.2.1}/js/src/generated/screamer.d.mts +0 -0
  909. {screamer-2.2.0 → screamer-2.2.1}/js/src/generated/screamer.mjs.d.ts +0 -0
  910. {screamer-2.2.0 → screamer-2.2.1}/js/src/index.ts +0 -0
  911. {screamer-2.2.0 → screamer-2.2.1}/js/src/loader.ts +0 -0
  912. {screamer-2.2.0 → screamer-2.2.1}/js/src/ndarray.ts +0 -0
  913. {screamer-2.2.0 → screamer-2.2.1}/js/src/node.ts +0 -0
  914. {screamer-2.2.0 → screamer-2.2.1}/js/src/pipeline.ts +0 -0
  915. {screamer-2.2.0 → screamer-2.2.1}/js/src/runtime.ts +0 -0
  916. {screamer-2.2.0 → screamer-2.2.1}/js/test/combinators.test.ts +0 -0
  917. {screamer-2.2.0 → screamer-2.2.1}/js/test/dag_lifetime.test.ts +0 -0
  918. {screamer-2.2.0 → screamer-2.2.1}/js/test/dag_parity.test.ts +0 -0
  919. {screamer-2.2.0 → screamer-2.2.1}/js/test/lifecycle.test.ts +0 -0
  920. {screamer-2.2.0 → screamer-2.2.1}/js/test/live.test.ts +0 -0
  921. {screamer-2.2.0 → screamer-2.2.1}/js/test/loader.test.ts +0 -0
  922. {screamer-2.2.0 → screamer-2.2.1}/js/test/ops.test.ts +0 -0
  923. {screamer-2.2.0 → screamer-2.2.1}/js/test/parity.test.ts +0 -0
  924. {screamer-2.2.0 → screamer-2.2.1}/js/test/pipeline.test.ts +0 -0
  925. {screamer-2.2.0 → screamer-2.2.1}/js/test/reducer.test.ts +0 -0
  926. {screamer-2.2.0 → screamer-2.2.1}/js/test/regimes.test.ts +0 -0
  927. {screamer-2.2.0 → screamer-2.2.1}/js/test/runtime.test.ts +0 -0
  928. {screamer-2.2.0 → screamer-2.2.1}/js/tsconfig.cjs.json +0 -0
  929. {screamer-2.2.0 → screamer-2.2.1}/js/tsconfig.json +0 -0
  930. {screamer-2.2.0 → screamer-2.2.1}/poetry.lock +0 -0
  931. {screamer-2.2.0 → screamer-2.2.1}/pytest.ini +0 -0
  932. {screamer-2.2.0 → screamer-2.2.1}/screamer/_async.py +0 -0
  933. {screamer-2.2.0 → screamer-2.2.1}/screamer/_functor_params.py +0 -0
  934. {screamer-2.2.0 → screamer-2.2.1}/screamer/backtest.py +0 -0
  935. {screamer-2.2.0 → screamer-2.2.1}/screamer/dag.py +0 -0
  936. {screamer-2.2.0 → screamer-2.2.1}/screamer/dag_io.py +0 -0
  937. {screamer-2.2.0 → screamer-2.2.1}/screamer/dag_viz.py +0 -0
  938. {screamer-2.2.0 → screamer-2.2.1}/screamer/data/help.json +0 -0
  939. {screamer-2.2.0 → screamer-2.2.1}/screamer/microstructure.py +0 -0
  940. {screamer-2.2.0 → screamer-2.2.1}/screamer/streams.py +0 -0
  941. {screamer-2.2.0 → screamer-2.2.1}/screamer/supervised.py +0 -0
  942. {screamer-2.2.0 → screamer-2.2.1}/src/screamer/common/async_generator.cpp +0 -0
  943. {screamer-2.2.0 → screamer-2.2.1}/src/screamer/common/base.cpp +0 -0
  944. {screamer-2.2.0 → screamer-2.2.1}/src/screamer/common/dispatch.cpp +0 -0
  945. {screamer-2.2.0 → screamer-2.2.1}/src/screamer/common/functor_base.cpp +0 -0
  946. {screamer-2.2.0 → screamer-2.2.1}/src/screamer/common/math.cpp +0 -0
  947. {screamer-2.2.0 → screamer-2.2.1}/src/screamer/detail/start_policy.cpp +0 -0
  948. {screamer-2.2.0 → screamer-2.2.1}/tasks.py +0 -0
  949. {screamer-2.2.0 → screamer-2.2.1}/tests/__init__.py +0 -0
  950. {screamer-2.2.0 → screamer-2.2.1}/tests/_dag_oracle.py +0 -0
  951. {screamer-2.2.0 → screamer-2.2.1}/tests/param_cases.py +0 -0
  952. {screamer-2.2.0 → screamer-2.2.1}/tests/regime_helpers.py +0 -0
  953. {screamer-2.2.0 → screamer-2.2.1}/tests/test_adx_and_volume.py +0 -0
  954. {screamer-2.2.0 → screamer-2.2.1}/tests/test_arithmetic.py +0 -0
  955. {screamer-2.2.0 → screamer-2.2.1}/tests/test_atr_family.py +0 -0
  956. {screamer-2.2.0 → screamer-2.2.1}/tests/test_backtest.py +0 -0
  957. {screamer-2.2.0 → screamer-2.2.1}/tests/test_baseline_coverage.py +0 -0
  958. {screamer-2.2.0 → screamer-2.2.1}/tests/test_baseline_defaults.py +0 -0
  959. {screamer-2.2.0 → screamer-2.2.1}/tests/test_baselines.py +0 -0
  960. {screamer-2.2.0 → screamer-2.2.1}/tests/test_bayesian_regression.py +0 -0
  961. {screamer-2.2.0 → screamer-2.2.1}/tests/test_build_help_registry.py +0 -0
  962. {screamer-2.2.0 → screamer-2.2.1}/tests/test_channels_and_yz.py +0 -0
  963. {screamer-2.2.0 → screamer-2.2.1}/tests/test_combine_latest_flush.py +0 -0
  964. {screamer-2.2.0 → screamer-2.2.1}/tests/test_contract_compliance.py +0 -0
  965. {screamer-2.2.0 → screamer-2.2.1}/tests/test_cumulative.py +0 -0
  966. {screamer-2.2.0 → screamer-2.2.1}/tests/test_cycle.py +0 -0
  967. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_build.py +0 -0
  968. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_codes_sync.py +0 -0
  969. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_compile.py +0 -0
  970. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_delay.py +0 -0
  971. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_dropna.py +0 -0
  972. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_engine.py +0 -0
  973. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_exec.py +0 -0
  974. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_identity.py +0 -0
  975. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_io.py +0 -0
  976. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_lazy.py +0 -0
  977. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_public_api.py +0 -0
  978. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_resample.py +0 -0
  979. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_select.py +0 -0
  980. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_stream.py +0 -0
  981. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_viz.py +0 -0
  982. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dag_watermark.py +0 -0
  983. {screamer-2.2.0 → screamer-2.2.1}/tests/test_diff2.py +0 -0
  984. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dmi.py +0 -0
  985. {screamer-2.2.0 → screamer-2.2.1}/tests/test_doc_coverage.py +0 -0
  986. {screamer-2.2.0 → screamer-2.2.1}/tests/test_documented_defaults.py +0 -0
  987. {screamer-2.2.0 → screamer-2.2.1}/tests/test_dropna_node_backing.py +0 -0
  988. {screamer-2.2.0 → screamer-2.2.1}/tests/test_ehlers_filters.py +0 -0
  989. {screamer-2.2.0 → screamer-2.2.1}/tests/test_evalop.py +0 -0
  990. {screamer-2.2.0 → screamer-2.2.1}/tests/test_evalop_registry.py +0 -0
  991. {screamer-2.2.0 → screamer-2.2.1}/tests/test_ew_moments.py +0 -0
  992. {screamer-2.2.0 → screamer-2.2.1}/tests/test_ew_pair.py +0 -0
  993. {screamer-2.2.0 → screamer-2.2.1}/tests/test_expanding.py +0 -0
  994. {screamer-2.2.0 → screamer-2.2.1}/tests/test_extremum_worst_case.py +0 -0
  995. {screamer-2.2.0 → screamer-2.2.1}/tests/test_filter_gate.py +0 -0
  996. {screamer-2.2.0 → screamer-2.2.1}/tests/test_filter_node_graph.py +0 -0
  997. {screamer-2.2.0 → screamer-2.2.1}/tests/test_first_last.py +0 -0
  998. {screamer-2.2.0 → screamer-2.2.1}/tests/test_frac_diff.py +0 -0
  999. {screamer-2.2.0 → screamer-2.2.1}/tests/test_functor_params.py +0 -0
  1000. {screamer-2.2.0 → screamer-2.2.1}/tests/test_geometry.py +0 -0
  1001. {screamer-2.2.0 → screamer-2.2.1}/tests/test_hampel.py +0 -0
  1002. {screamer-2.2.0 → screamer-2.2.1}/tests/test_hold.py +0 -0
  1003. {screamer-2.2.0 → screamer-2.2.1}/tests/test_impulse_clip.py +0 -0
  1004. {screamer-2.2.0 → screamer-2.2.1}/tests/test_input_dtypes.py +0 -0
  1005. {screamer-2.2.0 → screamer-2.2.1}/tests/test_io_size.py +0 -0
  1006. {screamer-2.2.0 → screamer-2.2.1}/tests/test_kama.py +0 -0
  1007. {screamer-2.2.0 → screamer-2.2.1}/tests/test_lazy_iterator_lifetime.py +0 -0
  1008. {screamer-2.2.0 → screamer-2.2.1}/tests/test_lazy_streaming.py +0 -0
  1009. {screamer-2.2.0 → screamer-2.2.1}/tests/test_length1_rank_dispatch.py +0 -0
  1010. {screamer-2.2.0 → screamer-2.2.1}/tests/test_linear2.py +0 -0
  1011. {screamer-2.2.0 → screamer-2.2.1}/tests/test_logic_ops.py +0 -0
  1012. {screamer-2.2.0 → screamer-2.2.1}/tests/test_macd.py +0 -0
  1013. {screamer-2.2.0 → screamer-2.2.1}/tests/test_math_transforms.py +0 -0
  1014. {screamer-2.2.0 → screamer-2.2.1}/tests/test_matrix.py +0 -0
  1015. {screamer-2.2.0 → screamer-2.2.1}/tests/test_merge_lazy_cpp.py +0 -0
  1016. {screamer-2.2.0 → screamer-2.2.1}/tests/test_microstructure.py +0 -0
  1017. {screamer-2.2.0 → screamer-2.2.1}/tests/test_module_loader.py +0 -0
  1018. {screamer-2.2.0 → screamer-2.2.1}/tests/test_momentum_family.py +0 -0
  1019. {screamer-2.2.0 → screamer-2.2.1}/tests/test_moving_averages.py +0 -0
  1020. {screamer-2.2.0 → screamer-2.2.1}/tests/test_multi_resample_dict.py +0 -0
  1021. {screamer-2.2.0 → screamer-2.2.1}/tests/test_nan_input_compliance.py +0 -0
  1022. {screamer-2.2.0 → screamer-2.2.1}/tests/test_nan_start_policy_compliance.py +0 -0
  1023. {screamer-2.2.0 → screamer-2.2.1}/tests/test_nan_warmup.py +0 -0
  1024. {screamer-2.2.0 → screamer-2.2.1}/tests/test_ntuple_input.py +0 -0
  1025. {screamer-2.2.0 → screamer-2.2.1}/tests/test_ohlc_volatility.py +0 -0
  1026. {screamer-2.2.0 → screamer-2.2.1}/tests/test_one_input_multi_output.py +0 -0
  1027. {screamer-2.2.0 → screamer-2.2.1}/tests/test_op_config_shape.py +0 -0
  1028. {screamer-2.2.0 → screamer-2.2.1}/tests/test_oscillators_hlc.py +0 -0
  1029. {screamer-2.2.0 → screamer-2.2.1}/tests/test_overlays.py +0 -0
  1030. {screamer-2.2.0 → screamer-2.2.1}/tests/test_parity_registration.py +0 -0
  1031. {screamer-2.2.0 → screamer-2.2.1}/tests/test_performance_risk.py +0 -0
  1032. {screamer-2.2.0 → screamer-2.2.1}/tests/test_pos_neg_part.py +0 -0
  1033. {screamer-2.2.0 → screamer-2.2.1}/tests/test_pure_headers.py +0 -0
  1034. {screamer-2.2.0 → screamer-2.2.1}/tests/test_range_volatility.py +0 -0
  1035. {screamer-2.2.0 → screamer-2.2.1}/tests/test_regression_family.py +0 -0
  1036. {screamer-2.2.0 → screamer-2.2.1}/tests/test_resample_advance.py +0 -0
  1037. {screamer-2.2.0 → screamer-2.2.1}/tests/test_resample_bars.py +0 -0
  1038. {screamer-2.2.0 → screamer-2.2.1}/tests/test_resample_clock.py +0 -0
  1039. {screamer-2.2.0 → screamer-2.2.1}/tests/test_resample_cumulative.py +0 -0
  1040. {screamer-2.2.0 → screamer-2.2.1}/tests/test_resample_dict_agg.py +0 -0
  1041. {screamer-2.2.0 → screamer-2.2.1}/tests/test_resample_fill.py +0 -0
  1042. {screamer-2.2.0 → screamer-2.2.1}/tests/test_resample_freq_window.py +0 -0
  1043. {screamer-2.2.0 → screamer-2.2.1}/tests/test_resample_functor_agg.py +0 -0
  1044. {screamer-2.2.0 → screamer-2.2.1}/tests/test_resample_ohlcv.py +0 -0
  1045. {screamer-2.2.0 → screamer-2.2.1}/tests/test_risk_stats.py +0 -0
  1046. {screamer-2.2.0 → screamer-2.2.1}/tests/test_rolling_argmin_argmax.py +0 -0
  1047. {screamer-2.2.0 → screamer-2.2.1}/tests/test_rolling_corr.py +0 -0
  1048. {screamer-2.2.0 → screamer-2.2.1}/tests/test_rolling_hurst.py +0 -0
  1049. {screamer-2.2.0 → screamer-2.2.1}/tests/test_rolling_iqr.py +0 -0
  1050. {screamer-2.2.0 → screamer-2.2.1}/tests/test_rolling_mad.py +0 -0
  1051. {screamer-2.2.0 → screamer-2.2.1}/tests/test_rolling_median_ad.py +0 -0
  1052. {screamer-2.2.0 → screamer-2.2.1}/tests/test_rolling_range.py +0 -0
  1053. {screamer-2.2.0 → screamer-2.2.1}/tests/test_rolling_rsi.py +0 -0
  1054. {screamer-2.2.0 → screamer-2.2.1}/tests/test_rolling_two_input.py +0 -0
  1055. {screamer-2.2.0 → screamer-2.2.1}/tests/test_schmitt_trigger.py +0 -0
  1056. {screamer-2.2.0 → screamer-2.2.1}/tests/test_select_node_backing.py +0 -0
  1057. {screamer-2.2.0 → screamer-2.2.1}/tests/test_signal.py +0 -0
  1058. {screamer-2.2.0 → screamer-2.2.1}/tests/test_start_policies.py +0 -0
  1059. {screamer-2.2.0 → screamer-2.2.1}/tests/test_stoch.py +0 -0
  1060. {screamer-2.2.0 → screamer-2.2.1}/tests/test_stream_columns.py +0 -0
  1061. {screamer-2.2.0 → screamer-2.2.1}/tests/test_stream_type.py +0 -0
  1062. {screamer-2.2.0 → screamer-2.2.1}/tests/test_stream_vs_batch.py +0 -0
  1063. {screamer-2.2.0 → screamer-2.2.1}/tests/test_stream_vs_generator.py +0 -0
  1064. {screamer-2.2.0 → screamer-2.2.1}/tests/test_streams_combine.py +0 -0
  1065. {screamer-2.2.0 → screamer-2.2.1}/tests/test_streams_combine_latest.py +0 -0
  1066. {screamer-2.2.0 → screamer-2.2.1}/tests/test_streams_core.py +0 -0
  1067. {screamer-2.2.0 → screamer-2.2.1}/tests/test_streams_delay.py +0 -0
  1068. {screamer-2.2.0 → screamer-2.2.1}/tests/test_streams_identity.py +0 -0
  1069. {screamer-2.2.0 → screamer-2.2.1}/tests/test_streams_merge.py +0 -0
  1070. {screamer-2.2.0 → screamer-2.2.1}/tests/test_streams_polymorphism.py +0 -0
  1071. {screamer-2.2.0 → screamer-2.2.1}/tests/test_streams_public_api.py +0 -0
  1072. {screamer-2.2.0 → screamer-2.2.1}/tests/test_streams_resample.py +0 -0
  1073. {screamer-2.2.0 → screamer-2.2.1}/tests/test_streams_select.py +0 -0
  1074. {screamer-2.2.0 → screamer-2.2.1}/tests/test_streams_shape.py +0 -0
  1075. {screamer-2.2.0 → screamer-2.2.1}/tests/test_supervised_forecast_pairs.py +0 -0
  1076. {screamer-2.2.0 → screamer-2.2.1}/tests/test_tensor.py +0 -0
  1077. {screamer-2.2.0 → screamer-2.2.1}/tests/test_third_party_alignment.py +0 -0
  1078. {screamer-2.2.0 → screamer-2.2.1}/tests/test_ts_api_fresh.py +0 -0
  1079. {screamer-2.2.0 → screamer-2.2.1}/tests/test_v1_api_hardening.py +0 -0
  1080. {screamer-2.2.0 → screamer-2.2.1}/tests/test_view.py +0 -0
  1081. {screamer-2.2.0 → screamer-2.2.1}/tests/test_wasm_codegen_fresh.py +0 -0
  1082. {screamer-2.2.0 → screamer-2.2.1}/tests/test_williams_r.py +0 -0
  1083. {screamer-2.2.0 → screamer-2.2.1}/tests/test_wma.py +0 -0
  1084. {screamer-2.2.0 → screamer-2.2.1}/wasm/.gitignore +0 -0
  1085. {screamer-2.2.0 → screamer-2.2.1}/wasm/build-wasm.sh +0 -0
  1086. {screamer-2.2.0 → screamer-2.2.1}/wasm/dag_bindings.cpp +0 -0
  1087. {screamer-2.2.0 → screamer-2.2.1}/wasm/dag_embind.h +0 -0
  1088. {screamer-2.2.0 → screamer-2.2.1}/wasm/embind_runtime.h +0 -0
  1089. {screamer-2.2.0 → screamer-2.2.1}/wasm/generated/bindings_wasm.cpp +0 -0
  1090. {screamer-2.2.0 → screamer-2.2.1}/wasm/smoke/dag_oracle.json +0 -0
  1091. {screamer-2.2.0 → screamer-2.2.1}/wasm/smoke/dag_smoke.mjs +0 -0
  1092. {screamer-2.2.0 → screamer-2.2.1}/wasm/smoke/oracle.json +0 -0
  1093. {screamer-2.2.0 → screamer-2.2.1}/wasm/smoke/oracle_reducer.json +0 -0
  1094. {screamer-2.2.0 → screamer-2.2.1}/wasm/smoke/smoke.mjs +0 -0
@@ -1,5 +1,5 @@
1
1
  cmake_minimum_required(VERSION 3.18)
2
- project(screamer VERSION 2.2.0 LANGUAGES CXX)
2
+ project(screamer VERSION 2.2.1 LANGUAGES CXX)
3
3
 
4
4
  # Set the default build type to Release for optimizations
5
5
  if(NOT CMAKE_BUILD_TYPE)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: screamer
3
- Version: 2.2.0
3
+ Version: 2.2.1
4
4
  Summary: Screamingly fast financial technical indicators with C++ performance and Python simplicity, built for both time series analysis and real-time, event-driven streaming.
5
5
  Keywords: streaming,indicators,real-time,algorithmic,trading,low-latency
6
6
  Author-Email: Thijs van den Berg <thijs@sitmo.com>
@@ -25,6 +25,21 @@ await ready();
25
25
  const op = RollingMean(3);
26
26
  ```
27
27
 
28
+ ## Node, bundlers, and the browser
29
+
30
+ The import above works in Node (18+) and through any bundler (Vite, Next.js, webpack,
31
+ esbuild), which inlines the embedded-WASM module. In a plain browser with no build step,
32
+ import from a CDN URL instead (browser use needs 2.2.1 or newer):
33
+
34
+ ```html
35
+ <script type="module">
36
+ import { ready, RollingMean }
37
+ from "https://cdn.jsdelivr.net/npm/@screamer-labs/screamer@2.2.1/dist/index.js";
38
+ await ready();
39
+ const sma = RollingMean(3);
40
+ </script>
41
+ ```
42
+
28
43
  ## Calling an op: four input regimes
29
44
 
30
45
  An op factory like `RollingMean(3)` returns a callable. That callable dispatches on its
@@ -94,8 +109,16 @@ package: same operators, same causal semantics, same numerics. Its outputs are
94
109
  verified against the Python package's outputs, and batch and streaming calls on the
95
110
  same data give identical results.
96
111
 
112
+ ## Live demo
113
+
114
+ Watch the smoothing operators run on a live exchange trade feed in the browser:
115
+ [screamer-labs.github.io/screamer/live-trades.html](https://screamer-labs.github.io/screamer/live-trades.html).
116
+ The self-contained source is [`examples/live-trades.html`](examples/live-trades.html).
117
+
97
118
  ## Learn more
98
119
 
99
- Full documentation, the function reference, and example notebooks are at
120
+ The JavaScript reference and guide are at
121
+ [screamer-labs.github.io/screamer](https://screamer-labs.github.io/screamer/). Full documentation,
122
+ the function reference, and example notebooks are at
100
123
  [screamer.readthedocs.io](https://screamer.readthedocs.io/en/latest/). Source and
101
124
  issues live at [github.com/screamer-labs/screamer](https://github.com/screamer-labs/screamer).
@@ -0,0 +1,80 @@
1
+ ---
2
+ title: Node, bundlers, and the browser
3
+ ---
4
+
5
+ # Node, bundlers, and the browser
6
+
7
+ screamer.js is one package that runs in Node and in the browser. The API is identical everywhere;
8
+ only how you point the runtime at the package differs. In every environment the rule is the same:
9
+ call `await ready()` once before constructing any operator, because the WebAssembly module loads
10
+ asynchronously.
11
+
12
+ Browser use (a bundler or a CDN) requires version **2.2.1 or newer**. Earlier versions load only
13
+ under Node.
14
+
15
+ ## Node
16
+
17
+ Node 18 or newer. Install and import by name:
18
+
19
+ ```js
20
+ // npm i @screamer-labs/screamer
21
+ import { ready, RollingMean } from "@screamer-labs/screamer";
22
+
23
+ await ready();
24
+ const sma = RollingMean(3);
25
+ console.log(sma([1, 2, 3, 4])); // [ NaN, NaN, 2, 3 ]
26
+ ```
27
+
28
+ The package ships one self-contained module with the WebAssembly embedded, so there is no separate
29
+ `.wasm` file to resolve.
30
+
31
+ ## Browser with a bundler
32
+
33
+ Vite, Next.js, webpack, Rollup, esbuild, and similar tools need no special configuration. Install
34
+ and import exactly as in Node; the bundler inlines the embedded-WASM module into your output:
35
+
36
+ ```js
37
+ // npm i @screamer-labs/screamer
38
+ import { ready, RollingMean } from "@screamer-labs/screamer";
39
+
40
+ await ready();
41
+ const sma = RollingMean(3);
42
+ ```
43
+
44
+ The bare specifier `@screamer-labs/screamer` resolves through the bundler (or an import map). A raw
45
+ browser cannot resolve a bare specifier, which is what the CDN form below handles.
46
+
47
+ ## Browser without a build step (CDN)
48
+
49
+ Import from a full URL inside a module script. jsDelivr serves the published module directly:
50
+
51
+ ```html
52
+ <script type="module">
53
+ import { ready, RollingMean }
54
+ from "https://cdn.jsdelivr.net/npm/@screamer-labs/screamer@2.2.1/dist/index.js";
55
+
56
+ await ready();
57
+
58
+ const sma = RollingMean(3);
59
+ console.log(Array.from(sma(new Float64Array([1, 2, 3, 4])))); // [ NaN, NaN, 2, 3 ]
60
+ </script>
61
+ ```
62
+
63
+ Pin the version (`@2.2.1`) so loads are reproducible. The module embeds its WebAssembly, so nothing
64
+ else needs to be fetched or configured.
65
+
66
+ To avoid a third-party origin (for offline use, a strict Content-Security-Policy, or full control),
67
+ copy the package's `dist/` directory next to your page and import it with a relative URL. The
68
+ [Live demo](./live-demo.md) does this; its
69
+ [source](https://github.com/screamer-labs/screamer/blob/main/js/examples/live-trades.html) shows
70
+ the pattern.
71
+
72
+ ## The rule in every environment
73
+
74
+ `await ready()` resolves the WebAssembly module once and caches it; a second call awaits the same
75
+ load. Construct operators after it, never before. Each op owns memory on the WASM side, so call
76
+ `.dispose()` when you are done with it (or use `using` where your runtime supports it). See
77
+ [Lifecycle](./lifecycle.md).
78
+
79
+ Requirements: Node 18+, or any browser with WebAssembly, which is every current browser on desktop
80
+ and mobile.
@@ -9,6 +9,10 @@ npm i @screamer-labs/screamer
9
9
  The package ships one self-contained WASM module. There is no separate `.wasm` asset to fetch
10
10
  and no build step on the consumer side.
11
11
 
12
+ The examples below use a bare import, which resolves under Node or a bundler. To load screamer in
13
+ the browser (through a bundler or straight from a CDN with no build step), see
14
+ [Node, bundlers, and the browser](./environments.md).
15
+
12
16
  ## Load the module once
13
17
 
14
18
  screamer.js compiles to WebAssembly, and WebAssembly modules instantiate asynchronously
@@ -37,4 +37,5 @@ RollingMean(3)(new Float64Array([1, 2, 3, 4])); // Float64Array [NaN, NaN, 2, 3]
37
37
  ```
38
38
 
39
39
  Start with [Getting started](./getting-started.md) for the async load step and your first
40
- `Pipeline`.
40
+ `Pipeline`, or watch the operators run on a live trade feed in the
41
+ [Live demo](./live-demo.md).
@@ -0,0 +1,51 @@
1
+ ---
2
+ title: Live demo
3
+ ---
4
+
5
+ # Live demo
6
+
7
+ **[Open the live demo](https://screamer-labs.github.io/screamer/live-trades.html)** to watch
8
+ screamer smoothing operators run on a live crypto trade feed in your browser.
9
+
10
+ The page connects to a public exchange WebSocket (Coinbase or Binance, no API key), keeps a
11
+ fixed window of the most recent trades, and pushes each incoming trade through four operators as
12
+ it arrives. It plots the raw price with an EWMA (span 12), a slower EWMA (span 40), a 30-trade
13
+ simple moving average, and an Ehlers SuperSmoother, updating on every trade.
14
+
15
+ ## What it shows
16
+
17
+ Each operator is called one trade at a time, scalar in and scalar out:
18
+
19
+ ```js
20
+ import { ready, EwMean, RollingMean, SuperSmoother } from "@screamer-labs/screamer";
21
+
22
+ await ready();
23
+
24
+ const fast = EwMean(undefined, 12); // EWMA, span 12
25
+ const slow = EwMean(undefined, 40); // EWMA, span 40
26
+ const sma = RollingMean(30); // simple moving average, 30 trades
27
+ const ss = SuperSmoother(30); // Ehlers SuperSmoother, period 30
28
+
29
+ // on each trade from the feed:
30
+ function onTrade(price) {
31
+ const a = fast(price);
32
+ const b = slow(price);
33
+ const c = sma(price); // NaN until the 30-trade window fills
34
+ const d = ss(price);
35
+ // ...plot a, b, c, d against the raw price
36
+ }
37
+ ```
38
+
39
+ These are the same operators, with the same numerics, you would call on a stored array. Feeding
40
+ them a live stream one value at a time and feeding them a historical array in one pass produce
41
+ identical results, so a strategy tested on history runs unchanged on the live feed. See
42
+ [Parity with Python](./parity.md) and the four input regimes in
43
+ [Getting started](./getting-started.md).
44
+
45
+ ## Running it yourself
46
+
47
+ The demo is a single self-contained HTML file at
48
+ [`js/examples/live-trades.html`](https://github.com/screamer-labs/screamer/blob/main/js/examples/live-trades.html).
49
+ It loads screamer from a CDN, so it needs internet access for both the module and the trade feed.
50
+ If the chart stays empty, the default exchange may be restricted in your region; switch the feed
51
+ selector to the other exchange.
@@ -0,0 +1,387 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>screamer.js — live trades + streaming filters</title>
7
+ <style>
8
+ :root {
9
+ --bg: #0d1117; --panel: #161b22; --line: #232a33;
10
+ --fg: #e6edf3; --muted: #8b949e;
11
+ --raw: #c9d1d9;
12
+ --live: #3fb950; --warn: #d29922; --dead: #f85149;
13
+ }
14
+ * { box-sizing: border-box; }
15
+ html, body { margin: 0; height: 100%; }
16
+ body {
17
+ background: var(--bg); color: var(--fg);
18
+ font: 14px/1.45 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
19
+ display: flex; flex-direction: column; min-height: 100%;
20
+ }
21
+ header { padding: 16px 20px 8px; }
22
+ h1 { margin: 0; font-size: 17px; font-weight: 650; letter-spacing: .2px; }
23
+ h1 .mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; color: #58a6ff; }
24
+ .sub { color: var(--muted); font-size: 12.5px; margin-top: 3px; }
25
+ .bar {
26
+ display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: center;
27
+ padding: 6px 20px 12px;
28
+ }
29
+ .bar label { color: var(--muted); font-size: 12px; margin-right: 5px; }
30
+ select, button {
31
+ background: var(--panel); color: var(--fg); border: 1px solid var(--line);
32
+ border-radius: 6px; padding: 5px 9px; font-size: 12.5px; cursor: pointer;
33
+ }
34
+ button:hover, select:hover { border-color: #3d4653; }
35
+ .pill {
36
+ display: inline-flex; align-items: center; gap: 7px;
37
+ background: var(--panel); border: 1px solid var(--line);
38
+ border-radius: 999px; padding: 4px 11px; font-size: 12px; color: var(--muted);
39
+ }
40
+ .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--muted); }
41
+ .dot.live { background: var(--live); box-shadow: 0 0 0 3px rgba(63,185,80,.18); }
42
+ .dot.connecting { background: var(--warn); }
43
+ .dot.dead { background: var(--dead); }
44
+ .price { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13px; color: var(--fg); }
45
+ .grow { flex: 1; }
46
+ #wrap { flex: 1; padding: 0 12px 4px; min-height: 260px; position: relative; }
47
+ canvas { width: 100%; height: 100%; display: block; }
48
+ #overlay {
49
+ position: absolute; inset: 0; display: none; align-items: center; justify-content: center;
50
+ text-align: center; padding: 24px; color: var(--muted);
51
+ }
52
+ #overlay .box { max-width: 460px; }
53
+ #overlay code { color: #f0883e; font-family: ui-monospace, Menlo, monospace; }
54
+ .legend {
55
+ display: flex; flex-wrap: wrap; gap: 8px 18px; padding: 8px 20px 4px;
56
+ }
57
+ .lg { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; }
58
+ .sw { width: 22px; height: 3px; border-radius: 2px; }
59
+ .lg .nm { color: var(--muted); }
60
+ .lg .vl { font-family: ui-monospace, Menlo, monospace; min-width: 62px; }
61
+ footer { color: var(--muted); font-size: 11.5px; padding: 4px 20px 14px; }
62
+ footer a { color: #58a6ff; text-decoration: none; }
63
+ </style>
64
+ </head>
65
+ <body>
66
+ <header>
67
+ <h1><span class="mono">screamer.js</span> &nbsp;·&nbsp; live trades with streaming filters</h1>
68
+ <div class="sub">
69
+ Each incoming trade is pushed through the smoothing operators one value at a time, the exact
70
+ same operators you would run on a historical array, running here in WebAssembly.
71
+ </div>
72
+ </header>
73
+
74
+ <div class="bar">
75
+ <span><label>feed</label>
76
+ <select id="source">
77
+ <option value="coinbase">Coinbase · BTC-USD</option>
78
+ <option value="binance">Binance · BTC/USDT</option>
79
+ </select>
80
+ </span>
81
+ <span><label>window</label>
82
+ <select id="window">
83
+ <option value="120">120 trades</option>
84
+ <option value="240" selected>240 trades</option>
85
+ <option value="480">480 trades</option>
86
+ </select>
87
+ </span>
88
+ <button id="pause">Pause</button>
89
+ <button id="reset">Reset</button>
90
+ <span class="grow"></span>
91
+ <span class="pill"><span id="dot" class="dot"></span><span id="status">starting…</span></span>
92
+ <span class="pill">last <span id="last" class="price">—</span></span>
93
+ <span class="pill"><span id="rate">0</span> trades/s</span>
94
+ </div>
95
+
96
+ <div id="wrap">
97
+ <canvas id="chart"></canvas>
98
+ <div id="overlay"><div class="box"></div></div>
99
+ </div>
100
+
101
+ <div class="legend" id="legend"></div>
102
+
103
+ <footer>
104
+ Powered by <a href="https://www.npmjs.com/package/@screamer-labs/screamer" target="_blank" rel="noopener">@screamer-labs/screamer</a>.
105
+ Public trade feeds, no API key. If a feed shows no data it may be geo-restricted, switch feeds above.
106
+ </footer>
107
+
108
+ <script type="module">
109
+ // ---------------------------------------------------------------------------
110
+ // Load screamer.js. On the docs site a same-origin bundle sits next to this
111
+ // page (built to a broad target, most robust across browsers incl. mobile
112
+ // Safari); the CDN entries are fallbacks when the file is opened standalone.
113
+ // ---------------------------------------------------------------------------
114
+ const SOURCES = [
115
+ new URL("./vendor/screamer/index.js", import.meta.url).href, // same-origin (docs site)
116
+ "https://cdn.jsdelivr.net/npm/@screamer-labs/screamer@2.2.0/dist/index.js", // raw published ESM
117
+ "https://esm.sh/@screamer-labs/screamer@2.2.0", // transformed fallback
118
+ ];
119
+ async function loadScreamer() {
120
+ const errs = [];
121
+ for (const url of SOURCES) {
122
+ try { return await import(url); }
123
+ catch (e) {
124
+ const where = url.startsWith("http") ? new URL(url).host : "same-origin";
125
+ errs.push(where + " — " + String((e && e.message) || e));
126
+ }
127
+ }
128
+ throw new Error(errs.join("\n"));
129
+ }
130
+
131
+ const overlay = document.getElementById("overlay");
132
+ function fail(html) {
133
+ overlay.querySelector(".box").innerHTML = html;
134
+ overlay.style.display = "flex";
135
+ }
136
+
137
+ let S;
138
+ try {
139
+ S = await loadScreamer();
140
+ await S.ready();
141
+ } catch (e) {
142
+ const detail = String((e && e.message) || e)
143
+ .replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/\n/g, "<br>");
144
+ fail(`Could not load <code>@screamer-labs/screamer</code>.<br><br>` +
145
+ `This page needs internet access for the module and the trade feed.<br><br>` +
146
+ `<small style="color:#f0883e">${detail}</small>`);
147
+ throw e;
148
+ }
149
+
150
+ // ---------------------------------------------------------------------------
151
+ // Smoothing operators. Each is a screamer op called once per trade (streaming
152
+ // scalar in, scalar out). Rebuilt on reset so their state starts clean.
153
+ // ---------------------------------------------------------------------------
154
+ const SPECS = [
155
+ { name: "EWMA · span 12", color: "#f5a623", make: () => S.EwMean(undefined, 12) },
156
+ { name: "EWMA · span 40", color: "#4a90e2", make: () => S.EwMean(undefined, 40) },
157
+ { name: "SMA · 30", color: "#7ed321", make: () => S.RollingMean(30) },
158
+ { name: "SuperSmoother · 30", color: "#e05a8f", make: () => S.SuperSmoother(30) },
159
+ ];
160
+
161
+ let N = 240; // fixed display window (number of recent trades)
162
+ let prices = []; // raw trade prices, newest last
163
+ let filters = []; // { name, color, op, buf[] }
164
+ let paused = false;
165
+ let dirty = true;
166
+ const arrivals = []; // recent arrival timestamps, for trades/sec
167
+
168
+ function buildFilters() {
169
+ filters = SPECS.map(s => ({ name: s.name, color: s.color, op: s.make(), buf: [] }));
170
+ }
171
+ function reset() {
172
+ prices = [];
173
+ buildFilters();
174
+ arrivals.length = 0;
175
+ dirty = true;
176
+ }
177
+ buildFilters();
178
+
179
+ function onTrade(price) {
180
+ arrivals.push(performance.now());
181
+ prices.push(price);
182
+ for (const f of filters) f.buf.push(f.op(price)); // <- streaming, one trade at a time
183
+ while (prices.length > N) {
184
+ prices.shift();
185
+ for (const f of filters) f.buf.shift();
186
+ }
187
+ document.getElementById("last").textContent = fmt(price);
188
+ dirty = true;
189
+ }
190
+
191
+ // ---------------------------------------------------------------------------
192
+ // Public trade feeds. Each normalizes its messages to a numeric price.
193
+ // ---------------------------------------------------------------------------
194
+ const FEEDS = {
195
+ coinbase: {
196
+ label: "Coinbase BTC-USD",
197
+ url: "wss://ws-feed.exchange.coinbase.com",
198
+ onopen: (ws) => ws.send(JSON.stringify({
199
+ type: "subscribe", product_ids: ["BTC-USD"], channels: ["matches"],
200
+ })),
201
+ price: (m) => (m.type === "match" || m.type === "last_match") ? parseFloat(m.price) : NaN,
202
+ },
203
+ binance: {
204
+ label: "Binance BTC/USDT",
205
+ url: "wss://stream.binance.com:9443/ws/btcusdt@trade",
206
+ onopen: null,
207
+ price: (m) => m.e === "trade" ? parseFloat(m.p) : NaN,
208
+ },
209
+ };
210
+
211
+ let ws = null, source = "coinbase", retry = 0, reconnectTimer = null;
212
+
213
+ function setStatus(state, text) {
214
+ document.getElementById("dot").className = "dot " + (state || "");
215
+ document.getElementById("status").textContent = text;
216
+ }
217
+
218
+ function connect() {
219
+ clearTimeout(reconnectTimer);
220
+ const feed = FEEDS[source];
221
+ setStatus("connecting", "connecting to " + feed.label + "…");
222
+ let sock;
223
+ try { sock = new WebSocket(feed.url); }
224
+ catch (e) { scheduleReconnect(); return; }
225
+ ws = sock;
226
+ sock.onopen = () => {
227
+ retry = 0;
228
+ if (feed.onopen) feed.onopen(sock);
229
+ setStatus("live", "live · " + feed.label);
230
+ };
231
+ sock.onmessage = (ev) => {
232
+ if (paused) return;
233
+ let m; try { m = JSON.parse(ev.data); } catch { return; }
234
+ const p = feed.price(m);
235
+ if (Number.isFinite(p)) onTrade(p);
236
+ };
237
+ sock.onerror = () => { try { sock.close(); } catch {} };
238
+ sock.onclose = () => {
239
+ if (sock !== ws) return; // superseded by a newer connection
240
+ setStatus("dead", "disconnected · retrying…");
241
+ scheduleReconnect();
242
+ };
243
+ }
244
+ function scheduleReconnect() {
245
+ retry = Math.min(retry + 1, 6);
246
+ reconnectTimer = setTimeout(connect, 400 * retry);
247
+ }
248
+ function switchFeed(next) {
249
+ source = next;
250
+ if (ws) { ws.onclose = null; try { ws.close(); } catch {} ws = null; }
251
+ reset();
252
+ connect();
253
+ }
254
+
255
+ // ---------------------------------------------------------------------------
256
+ // Canvas rendering. Fixed, right-anchored scrolling window. The price axis is
257
+ // scaled from the raw trades only; filter lines are clipped to the plot, so a
258
+ // filter's warm-up transient never distorts the view.
259
+ // ---------------------------------------------------------------------------
260
+ const canvas = document.getElementById("chart");
261
+ const ctx = canvas.getContext("2d");
262
+ let cssW = 0, cssH = 0, dpr = 1;
263
+
264
+ function resize() {
265
+ const r = canvas.getBoundingClientRect();
266
+ cssW = Math.max(320, r.width); cssH = Math.max(240, r.height);
267
+ dpr = window.devicePixelRatio || 1;
268
+ canvas.width = Math.round(cssW * dpr);
269
+ canvas.height = Math.round(cssH * dpr);
270
+ ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
271
+ dirty = true;
272
+ }
273
+ window.addEventListener("resize", resize);
274
+
275
+ const PADL = 12, PADR = 74, PADT = 14, PADB = 20;
276
+
277
+ function fmt(v) {
278
+ if (!Number.isFinite(v)) return "—";
279
+ return v.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 });
280
+ }
281
+
282
+ function lastFinite(arr) {
283
+ for (let i = arr.length - 1; i >= 0; i--) if (Number.isFinite(arr[i])) return arr[i];
284
+ return NaN;
285
+ }
286
+
287
+ function render() {
288
+ requestAnimationFrame(render);
289
+
290
+ // trades/sec (rolling 1s), refreshed every frame regardless of new data
291
+ const now = performance.now();
292
+ while (arrivals.length && now - arrivals[0] > 1000) arrivals.shift();
293
+ document.getElementById("rate").textContent = arrivals.length;
294
+
295
+ if (!dirty) return;
296
+ dirty = false;
297
+
298
+ ctx.clearRect(0, 0, cssW, cssH);
299
+ const plotW = cssW - PADL - PADR, plotH = cssH - PADT - PADB;
300
+
301
+ const finite = prices.filter(Number.isFinite);
302
+ if (finite.length < 2) {
303
+ ctx.fillStyle = "#8b949e"; ctx.font = "13px -apple-system, sans-serif";
304
+ ctx.textAlign = "center";
305
+ ctx.fillText("waiting for trades…", PADL + plotW / 2, PADT + plotH / 2);
306
+ return;
307
+ }
308
+
309
+ let lo = Math.min(...finite), hi = Math.max(...finite);
310
+ if (hi - lo < 1e-9) { hi += 1; lo -= 1; }
311
+ const pad = (hi - lo) * 0.08; lo -= pad; hi += pad;
312
+
313
+ const len = prices.length;
314
+ const step = plotW / (N - 1);
315
+ const X = (i) => PADL + plotW - (len - 1 - i) * step;
316
+ const Y = (p) => PADT + (1 - (p - lo) / (hi - lo)) * plotH;
317
+
318
+ // grid + right-side price labels
319
+ ctx.strokeStyle = "#232a33"; ctx.fillStyle = "#8b949e";
320
+ ctx.lineWidth = 1; ctx.font = "11px ui-monospace, Menlo, monospace"; ctx.textAlign = "left";
321
+ const ROWS = 5;
322
+ for (let k = 0; k <= ROWS; k++) {
323
+ const y = PADT + (k / ROWS) * plotH;
324
+ ctx.beginPath(); ctx.moveTo(PADL, y); ctx.lineTo(PADL + plotW, y); ctx.stroke();
325
+ const price = hi - (k / ROWS) * (hi - lo);
326
+ ctx.fillText(fmt(price), PADL + plotW + 8, y + 3);
327
+ }
328
+
329
+ // clip everything data-related to the plot rectangle
330
+ ctx.save();
331
+ ctx.beginPath(); ctx.rect(PADL, PADT, plotW, plotH); ctx.clip();
332
+
333
+ // raw price
334
+ drawLine(prices, "#c9d1d9", 1, 0.55, X, Y);
335
+ // filters
336
+ for (const f of filters) drawLine(f.buf, f.color, 1.8, 1, X, Y);
337
+
338
+ ctx.restore();
339
+
340
+ // legend values
341
+ const legend = document.getElementById("legend");
342
+ const rows = [
343
+ { name: "raw price", color: "#c9d1d9", v: lastFinite(prices) },
344
+ ...filters.map(f => ({ name: f.name, color: f.color, v: lastFinite(f.buf) })),
345
+ ];
346
+ legend.innerHTML = rows.map(r =>
347
+ `<span class="lg"><span class="sw" style="background:${r.color}"></span>` +
348
+ `<span class="nm">${r.name}</span><span class="vl">${fmt(r.v)}</span></span>`
349
+ ).join("");
350
+ }
351
+
352
+ function drawLine(arr, color, w, alpha, X, Y) {
353
+ ctx.strokeStyle = color; ctx.lineWidth = w; ctx.globalAlpha = alpha;
354
+ ctx.lineJoin = "round"; ctx.beginPath();
355
+ let pen = false;
356
+ for (let i = 0; i < arr.length; i++) {
357
+ const v = arr[i];
358
+ if (!Number.isFinite(v)) { pen = false; continue; } // break the line on NaN (warm-up)
359
+ const x = X(i), y = Y(v);
360
+ if (pen) ctx.lineTo(x, y); else { ctx.moveTo(x, y); pen = true; }
361
+ }
362
+ ctx.stroke(); ctx.globalAlpha = 1;
363
+ }
364
+
365
+ // ---------------------------------------------------------------------------
366
+ // Controls
367
+ // ---------------------------------------------------------------------------
368
+ document.getElementById("source").addEventListener("change", (e) => switchFeed(e.target.value));
369
+ document.getElementById("window").addEventListener("change", (e) => {
370
+ N = parseInt(e.target.value, 10);
371
+ while (prices.length > N) { prices.shift(); for (const f of filters) f.buf.shift(); }
372
+ dirty = true;
373
+ });
374
+ document.getElementById("pause").addEventListener("click", (e) => {
375
+ paused = !paused; e.target.textContent = paused ? "Resume" : "Pause";
376
+ });
377
+ document.getElementById("reset").addEventListener("click", reset);
378
+
379
+ // ---------------------------------------------------------------------------
380
+ // Go
381
+ // ---------------------------------------------------------------------------
382
+ resize();
383
+ connect();
384
+ requestAnimationFrame(render);
385
+ </script>
386
+ </body>
387
+ </html>
@@ -10,6 +10,7 @@
10
10
  "license": "MIT",
11
11
  "devDependencies": {
12
12
  "@types/node": "^20.0.0",
13
+ "esbuild": "^0.28.1",
13
14
  "tsx": "^4.0.0",
14
15
  "typedoc": "^0.28.20",
15
16
  "typescript": "^5.5.0"
@@ -55,10 +55,12 @@
55
55
  "prepack": "npm run build:wasm:single && npm run build",
56
56
  "pack-smoke": "bash scripts/pack-smoke.sh",
57
57
  "test": "node --import tsx --test test/*.test.ts",
58
- "docs": "npm run build:wasm && typedoc"
58
+ "docs": "npm run build:wasm:single && typedoc && npm run build:esm && npm run docs:demo",
59
+ "docs:demo": "mkdir -p docs-site/vendor/screamer/generated && esbuild dist/index.js --bundle --format=esm --target=es2017 --outfile=docs-site/vendor/screamer/index.js && cp dist/generated/screamer.mjs docs-site/vendor/screamer/generated/screamer.mjs && cp examples/live-trades.html docs-site/live-trades.html"
59
60
  },
60
61
  "devDependencies": {
61
62
  "@types/node": "^20.0.0",
63
+ "esbuild": "^0.28.1",
62
64
  "tsx": "^4.0.0",
63
65
  "typedoc": "^0.28.20",
64
66
  "typescript": "^5.5.0"
@@ -63,6 +63,8 @@ export const CODES = {
63
63
  };
64
64
 
65
65
  // `node --import tsx src/codes.ts --dump` prints CODES as JSON for the gate.
66
- if (process.argv.includes("--dump")) {
66
+ // Guarded so this module also evaluates in the browser, where `process` is
67
+ // undefined (importing it otherwise throws "process is not defined").
68
+ if (typeof process !== "undefined" && process.argv?.includes("--dump")) {
67
69
  process.stdout.write(JSON.stringify(CODES));
68
70
  }
@@ -6,6 +6,8 @@
6
6
  "readme": "docs-guide/index.md",
7
7
  "projectDocuments": [
8
8
  "docs-guide/getting-started.md",
9
+ "docs-guide/environments.md",
10
+ "docs-guide/live-demo.md",
9
11
  "docs-guide/regimes.md",
10
12
  "docs-guide/lifecycle.md",
11
13
  "docs-guide/pipeline.md",
@@ -15,6 +17,7 @@
15
17
  "excludeExternals": true,
16
18
  "categorizeByGroup": true,
17
19
  "navigationLinks": {
20
+ "Live demo": "https://screamer-labs.github.io/screamer/live-trades.html",
18
21
  "Python docs": "https://screamer.readthedocs.io/",
19
22
  "GitHub": "https://github.com/screamer-labs/screamer"
20
23
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  name = "screamer"
4
4
 
5
- version = "2.2.0"
5
+ version = "2.2.1"
6
6
 
7
7
  requires-python = ">=3.12"
8
8
 
@@ -115,7 +115,7 @@ dev = [
115
115
 
116
116
  [tool.poetry]
117
117
  name = "screamer"
118
- version = "2.2.0"
118
+ version = "2.2.1"
119
119
  description = "Screamingly fast financial technical indicators with C++ performance and Python simplicity, built for both time series analysis and real-time, event-driven streaming."
120
120
  # Package author. Per-operator contributors are credited in AUTHORS.md.
121
121
  authors = ["Thijs van den Berg <thijs@sitmo.com>"]
@@ -202,7 +202,7 @@ build-backend = "scikit_build_core.build"
202
202
  wheel.py-api = "cp312"
203
203
 
204
204
  [tool.bumpversion]
205
- current_version = "2.2.0"
205
+ current_version = "2.2.1"
206
206
  commit = true
207
207
  tag = true
208
208
  allow_dirty = false