openbacktesting 0.2.0__py3-none-any.whl

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 (350) hide show
  1. openbacktesting/__init__.py +85 -0
  2. openbacktesting/aggregation.py +8 -0
  3. openbacktesting/broker/__init__.py +54 -0
  4. openbacktesting/broker/commission.py +57 -0
  5. openbacktesting/broker/core.py +1122 -0
  6. openbacktesting/broker/execution.py +62 -0
  7. openbacktesting/broker/instrument.py +106 -0
  8. openbacktesting/broker/ledger.py +60 -0
  9. openbacktesting/broker/models.py +236 -0
  10. openbacktesting/broker/observations.py +99 -0
  11. openbacktesting/broker/requests.py +192 -0
  12. openbacktesting/broker/sizing.py +76 -0
  13. openbacktesting/colors.py +175 -0
  14. openbacktesting/data/__init__.py +20 -0
  15. openbacktesting/data/aggregation.py +39 -0
  16. openbacktesting/data/context.py +30 -0
  17. openbacktesting/data/core.py +218 -0
  18. openbacktesting/data/generators.py +54 -0
  19. openbacktesting/data/strategy_data.py +103 -0
  20. openbacktesting/data/timeframe.py +69 -0
  21. openbacktesting/engine.py +34 -0
  22. openbacktesting/helpers.py +77 -0
  23. openbacktesting/indicator_api.py +10 -0
  24. openbacktesting/indicator_methods.py +123 -0
  25. openbacktesting/indicator_types.py +19 -0
  26. openbacktesting/indicators/__init__.py +7 -0
  27. openbacktesting/indicators/api.py +97 -0
  28. openbacktesting/indicators/calculus.py +75 -0
  29. openbacktesting/indicators/candles/__init__.py +0 -0
  30. openbacktesting/indicators/candles/cdl_doji.py +17 -0
  31. openbacktesting/indicators/candles/cdl_engulfing.py +14 -0
  32. openbacktesting/indicators/candles/cdl_eveningstar.py +15 -0
  33. openbacktesting/indicators/candles/cdl_hammer.py +14 -0
  34. openbacktesting/indicators/candles/cdl_harami.py +14 -0
  35. openbacktesting/indicators/candles/cdl_inside.py +14 -0
  36. openbacktesting/indicators/candles/cdl_marubozu.py +14 -0
  37. openbacktesting/indicators/candles/cdl_morningstar.py +15 -0
  38. openbacktesting/indicators/candles/cdl_shootingstar.py +14 -0
  39. openbacktesting/indicators/candles/cdl_z.py +28 -0
  40. openbacktesting/indicators/candles/ha.py +19 -0
  41. openbacktesting/indicators/catalog.json +8348 -0
  42. openbacktesting/indicators/common.py +94 -0
  43. openbacktesting/indicators/cycles/__init__.py +0 -0
  44. openbacktesting/indicators/cycles/dsp.py +10 -0
  45. openbacktesting/indicators/cycles/ebsw.py +10 -0
  46. openbacktesting/indicators/cycles/ht_dcperiod.py +10 -0
  47. openbacktesting/indicators/cycles/ht_dcphase.py +10 -0
  48. openbacktesting/indicators/cycles/ht_phasor.py +17 -0
  49. openbacktesting/indicators/cycles/ht_sine.py +17 -0
  50. openbacktesting/indicators/cycles/ht_trendmode.py +10 -0
  51. openbacktesting/indicators/cycles/msw.py +19 -0
  52. openbacktesting/indicators/methods.py +5762 -0
  53. openbacktesting/indicators/momentum/__init__.py +0 -0
  54. openbacktesting/indicators/momentum/ac.py +9 -0
  55. openbacktesting/indicators/momentum/ao.py +10 -0
  56. openbacktesting/indicators/momentum/apo.py +10 -0
  57. openbacktesting/indicators/momentum/bias.py +10 -0
  58. openbacktesting/indicators/momentum/bop.py +10 -0
  59. openbacktesting/indicators/momentum/brar.py +26 -0
  60. openbacktesting/indicators/momentum/cci.py +10 -0
  61. openbacktesting/indicators/momentum/cfo.py +10 -0
  62. openbacktesting/indicators/momentum/cg.py +10 -0
  63. openbacktesting/indicators/momentum/cmo.py +10 -0
  64. openbacktesting/indicators/momentum/coppock.py +10 -0
  65. openbacktesting/indicators/momentum/crsi.py +28 -0
  66. openbacktesting/indicators/momentum/cti.py +10 -0
  67. openbacktesting/indicators/momentum/dm.py +17 -0
  68. openbacktesting/indicators/momentum/er.py +10 -0
  69. openbacktesting/indicators/momentum/eri.py +17 -0
  70. openbacktesting/indicators/momentum/fisher.py +17 -0
  71. openbacktesting/indicators/momentum/fosc.py +10 -0
  72. openbacktesting/indicators/momentum/gator.py +13 -0
  73. openbacktesting/indicators/momentum/ibs.py +7 -0
  74. openbacktesting/indicators/momentum/inertia.py +22 -0
  75. openbacktesting/indicators/momentum/kdj.py +18 -0
  76. openbacktesting/indicators/momentum/kst.py +30 -0
  77. openbacktesting/indicators/momentum/lrsi.py +10 -0
  78. openbacktesting/indicators/momentum/macd.py +27 -0
  79. openbacktesting/indicators/momentum/macdext.py +27 -0
  80. openbacktesting/indicators/momentum/macdfix.py +18 -0
  81. openbacktesting/indicators/momentum/mom.py +10 -0
  82. openbacktesting/indicators/momentum/pgo.py +10 -0
  83. openbacktesting/indicators/momentum/pmo.py +13 -0
  84. openbacktesting/indicators/momentum/po.py +10 -0
  85. openbacktesting/indicators/momentum/ppo.py +20 -0
  86. openbacktesting/indicators/momentum/psl.py +12 -0
  87. openbacktesting/indicators/momentum/pvo.py +20 -0
  88. openbacktesting/indicators/momentum/qqe.py +31 -0
  89. openbacktesting/indicators/momentum/rci.py +20 -0
  90. openbacktesting/indicators/momentum/rmi.py +7 -0
  91. openbacktesting/indicators/momentum/roc.py +10 -0
  92. openbacktesting/indicators/momentum/rocp.py +10 -0
  93. openbacktesting/indicators/momentum/rocr.py +10 -0
  94. openbacktesting/indicators/momentum/rocr100.py +10 -0
  95. openbacktesting/indicators/momentum/rsi.py +10 -0
  96. openbacktesting/indicators/momentum/rsx.py +10 -0
  97. openbacktesting/indicators/momentum/rvgi.py +26 -0
  98. openbacktesting/indicators/momentum/slope.py +17 -0
  99. openbacktesting/indicators/momentum/smc_sweep.py +18 -0
  100. openbacktesting/indicators/momentum/smi.py +21 -0
  101. openbacktesting/indicators/momentum/smi_stochastic.py +15 -0
  102. openbacktesting/indicators/momentum/squeeze.py +47 -0
  103. openbacktesting/indicators/momentum/squeeze_pro.py +53 -0
  104. openbacktesting/indicators/momentum/stc.py +20 -0
  105. openbacktesting/indicators/momentum/stoch.py +19 -0
  106. openbacktesting/indicators/momentum/stochf.py +19 -0
  107. openbacktesting/indicators/momentum/stochrsi.py +19 -0
  108. openbacktesting/indicators/momentum/td_seq.py +17 -0
  109. openbacktesting/indicators/momentum/trix.py +19 -0
  110. openbacktesting/indicators/momentum/trixh.py +20 -0
  111. openbacktesting/indicators/momentum/tsi.py +26 -0
  112. openbacktesting/indicators/momentum/uo.py +22 -0
  113. openbacktesting/indicators/momentum/vwmacd.py +20 -0
  114. openbacktesting/indicators/momentum/wavetrend.py +15 -0
  115. openbacktesting/indicators/momentum/willr.py +10 -0
  116. openbacktesting/indicators/overlap/__init__.py +0 -0
  117. openbacktesting/indicators/overlap/alligator.py +13 -0
  118. openbacktesting/indicators/overlap/alma.py +33 -0
  119. openbacktesting/indicators/overlap/anchored_vwap.py +50 -0
  120. openbacktesting/indicators/overlap/anchored_vwap_bands.py +13 -0
  121. openbacktesting/indicators/overlap/avgprice.py +10 -0
  122. openbacktesting/indicators/overlap/dema.py +10 -0
  123. openbacktesting/indicators/overlap/ema.py +12 -0
  124. openbacktesting/indicators/overlap/frama.py +29 -0
  125. openbacktesting/indicators/overlap/fwma.py +10 -0
  126. openbacktesting/indicators/overlap/hilo.py +26 -0
  127. openbacktesting/indicators/overlap/hl2.py +10 -0
  128. openbacktesting/indicators/overlap/hlc3.py +10 -0
  129. openbacktesting/indicators/overlap/hma.py +10 -0
  130. openbacktesting/indicators/overlap/ht_trendline.py +10 -0
  131. openbacktesting/indicators/overlap/hwma.py +10 -0
  132. openbacktesting/indicators/overlap/ichimoku.py +44 -0
  133. openbacktesting/indicators/overlap/jma.py +10 -0
  134. openbacktesting/indicators/overlap/kama.py +10 -0
  135. openbacktesting/indicators/overlap/linreg.py +15 -0
  136. openbacktesting/indicators/overlap/linregangle.py +10 -0
  137. openbacktesting/indicators/overlap/linregintercept.py +10 -0
  138. openbacktesting/indicators/overlap/linregslope.py +10 -0
  139. openbacktesting/indicators/overlap/ma.py +10 -0
  140. openbacktesting/indicators/overlap/ma_envelopes.py +16 -0
  141. openbacktesting/indicators/overlap/mama.py +17 -0
  142. openbacktesting/indicators/overlap/mavp.py +17 -0
  143. openbacktesting/indicators/overlap/mcgd.py +10 -0
  144. openbacktesting/indicators/overlap/medprice.py +10 -0
  145. openbacktesting/indicators/overlap/midpoint.py +10 -0
  146. openbacktesting/indicators/overlap/midprice.py +10 -0
  147. openbacktesting/indicators/overlap/mmar.py +21 -0
  148. openbacktesting/indicators/overlap/ohlc4.py +10 -0
  149. openbacktesting/indicators/overlap/pwma.py +10 -0
  150. openbacktesting/indicators/overlap/rainbow.py +25 -0
  151. openbacktesting/indicators/overlap/rma.py +10 -0
  152. openbacktesting/indicators/overlap/sinwma.py +10 -0
  153. openbacktesting/indicators/overlap/sma.py +14 -0
  154. openbacktesting/indicators/overlap/ssf.py +10 -0
  155. openbacktesting/indicators/overlap/supertrend.py +21 -0
  156. openbacktesting/indicators/overlap/swma.py +10 -0
  157. openbacktesting/indicators/overlap/t3.py +10 -0
  158. openbacktesting/indicators/overlap/tema.py +10 -0
  159. openbacktesting/indicators/overlap/trima.py +10 -0
  160. openbacktesting/indicators/overlap/tsf.py +10 -0
  161. openbacktesting/indicators/overlap/typprice.py +10 -0
  162. openbacktesting/indicators/overlap/vidya.py +10 -0
  163. openbacktesting/indicators/overlap/vwap.py +10 -0
  164. openbacktesting/indicators/overlap/vwma.py +10 -0
  165. openbacktesting/indicators/overlap/wcp.py +10 -0
  166. openbacktesting/indicators/overlap/wma.py +10 -0
  167. openbacktesting/indicators/overlap/zlma.py +10 -0
  168. openbacktesting/indicators/performance/__init__.py +0 -0
  169. openbacktesting/indicators/performance/drawdown.py +18 -0
  170. openbacktesting/indicators/performance/log_return.py +10 -0
  171. openbacktesting/indicators/performance/percent_return.py +10 -0
  172. openbacktesting/indicators/predicates.py +88 -0
  173. openbacktesting/indicators/registry.py +571 -0
  174. openbacktesting/indicators/runtime.py +290 -0
  175. openbacktesting/indicators/statistics/__init__.py +0 -0
  176. openbacktesting/indicators/statistics/beta.py +10 -0
  177. openbacktesting/indicators/statistics/correl.py +10 -0
  178. openbacktesting/indicators/statistics/entropy.py +10 -0
  179. openbacktesting/indicators/statistics/kurtosis.py +10 -0
  180. openbacktesting/indicators/statistics/mad.py +10 -0
  181. openbacktesting/indicators/statistics/md.py +10 -0
  182. openbacktesting/indicators/statistics/median.py +10 -0
  183. openbacktesting/indicators/statistics/mode.py +48 -0
  184. openbacktesting/indicators/statistics/quantile.py +10 -0
  185. openbacktesting/indicators/statistics/skew.py +10 -0
  186. openbacktesting/indicators/statistics/stderr.py +10 -0
  187. openbacktesting/indicators/statistics/stdev.py +10 -0
  188. openbacktesting/indicators/statistics/variance.py +10 -0
  189. openbacktesting/indicators/statistics/zscore.py +10 -0
  190. openbacktesting/indicators/trend/__init__.py +0 -0
  191. openbacktesting/indicators/trend/adx.py +28 -0
  192. openbacktesting/indicators/trend/adxr.py +28 -0
  193. openbacktesting/indicators/trend/amat.py +19 -0
  194. openbacktesting/indicators/trend/aroon.py +18 -0
  195. openbacktesting/indicators/trend/atr_stop.py +33 -0
  196. openbacktesting/indicators/trend/chop.py +20 -0
  197. openbacktesting/indicators/trend/cksp.py +17 -0
  198. openbacktesting/indicators/trend/cpr.py +57 -0
  199. openbacktesting/indicators/trend/decay.py +10 -0
  200. openbacktesting/indicators/trend/decreasing.py +18 -0
  201. openbacktesting/indicators/trend/dpo.py +12 -0
  202. openbacktesting/indicators/trend/dx.py +19 -0
  203. openbacktesting/indicators/trend/edecay.py +10 -0
  204. openbacktesting/indicators/trend/increasing.py +18 -0
  205. openbacktesting/indicators/trend/long_run.py +10 -0
  206. openbacktesting/indicators/trend/minus_dm.py +10 -0
  207. openbacktesting/indicators/trend/pivot_points.py +89 -0
  208. openbacktesting/indicators/trend/pivothigh.py +23 -0
  209. openbacktesting/indicators/trend/pivotlow.py +23 -0
  210. openbacktesting/indicators/trend/plus_dm.py +10 -0
  211. openbacktesting/indicators/trend/pmax.py +18 -0
  212. openbacktesting/indicators/trend/psar.py +19 -0
  213. openbacktesting/indicators/trend/qstick.py +10 -0
  214. openbacktesting/indicators/trend/sarext.py +35 -0
  215. openbacktesting/indicators/trend/short_run.py +10 -0
  216. openbacktesting/indicators/trend/tsignals.py +26 -0
  217. openbacktesting/indicators/trend/ttm_trend.py +16 -0
  218. openbacktesting/indicators/trend/vhf.py +10 -0
  219. openbacktesting/indicators/trend/volatility_stop.py +33 -0
  220. openbacktesting/indicators/trend/vortex.py +17 -0
  221. openbacktesting/indicators/trend/xsignals.py +29 -0
  222. openbacktesting/indicators/types.py +344 -0
  223. openbacktesting/indicators/utility/__init__.py +0 -0
  224. openbacktesting/indicators/utility/barssince.py +21 -0
  225. openbacktesting/indicators/utility/change.py +7 -0
  226. openbacktesting/indicators/utility/cross.py +12 -0
  227. openbacktesting/indicators/utility/crossover.py +11 -0
  228. openbacktesting/indicators/utility/crossunder.py +11 -0
  229. openbacktesting/indicators/utility/cum.py +7 -0
  230. openbacktesting/indicators/utility/falling.py +10 -0
  231. openbacktesting/indicators/utility/highest.py +7 -0
  232. openbacktesting/indicators/utility/highestbars.py +29 -0
  233. openbacktesting/indicators/utility/lowest.py +7 -0
  234. openbacktesting/indicators/utility/lowestbars.py +29 -0
  235. openbacktesting/indicators/utility/percentile_linear_interpolation.py +12 -0
  236. openbacktesting/indicators/utility/percentile_nearest_rank.py +16 -0
  237. openbacktesting/indicators/utility/percentrank.py +7 -0
  238. openbacktesting/indicators/utility/range.py +8 -0
  239. openbacktesting/indicators/utility/rising.py +10 -0
  240. openbacktesting/indicators/utility/rolling_count.py +12 -0
  241. openbacktesting/indicators/utility/rolling_sum.py +7 -0
  242. openbacktesting/indicators/utility/running_max.py +7 -0
  243. openbacktesting/indicators/utility/running_min.py +7 -0
  244. openbacktesting/indicators/utility/shift.py +7 -0
  245. openbacktesting/indicators/utility/valuewhen.py +25 -0
  246. openbacktesting/indicators/volatility/__init__.py +0 -0
  247. openbacktesting/indicators/volatility/aberration.py +21 -0
  248. openbacktesting/indicators/volatility/accbands.py +20 -0
  249. openbacktesting/indicators/volatility/adr.py +7 -0
  250. openbacktesting/indicators/volatility/atr.py +12 -0
  251. openbacktesting/indicators/volatility/avolume.py +10 -0
  252. openbacktesting/indicators/volatility/bbands.py +20 -0
  253. openbacktesting/indicators/volatility/ce.py +25 -0
  254. openbacktesting/indicators/volatility/cvi.py +10 -0
  255. openbacktesting/indicators/volatility/donchian.py +20 -0
  256. openbacktesting/indicators/volatility/hvol.py +10 -0
  257. openbacktesting/indicators/volatility/hwc.py +27 -0
  258. openbacktesting/indicators/volatility/kc.py +27 -0
  259. openbacktesting/indicators/volatility/massi.py +10 -0
  260. openbacktesting/indicators/volatility/natr.py +19 -0
  261. openbacktesting/indicators/volatility/pdist.py +10 -0
  262. openbacktesting/indicators/volatility/rvi.py +21 -0
  263. openbacktesting/indicators/volatility/starc.py +11 -0
  264. openbacktesting/indicators/volatility/thermo.py +28 -0
  265. openbacktesting/indicators/volatility/true_range.py +31 -0
  266. openbacktesting/indicators/volatility/ui.py +10 -0
  267. openbacktesting/indicators/volume/__init__.py +0 -0
  268. openbacktesting/indicators/volume/ad.py +10 -0
  269. openbacktesting/indicators/volume/adosc.py +19 -0
  270. openbacktesting/indicators/volume/aobv.py +31 -0
  271. openbacktesting/indicators/volume/cmf.py +12 -0
  272. openbacktesting/indicators/volume/efi.py +12 -0
  273. openbacktesting/indicators/volume/emv.py +10 -0
  274. openbacktesting/indicators/volume/eom.py +19 -0
  275. openbacktesting/indicators/volume/iii.py +9 -0
  276. openbacktesting/indicators/volume/kvo.py +28 -0
  277. openbacktesting/indicators/volume/marketfi.py +10 -0
  278. openbacktesting/indicators/volume/mfi.py +12 -0
  279. openbacktesting/indicators/volume/nvi.py +26 -0
  280. openbacktesting/indicators/volume/obv.py +10 -0
  281. openbacktesting/indicators/volume/pvi.py +26 -0
  282. openbacktesting/indicators/volume/pvol.py +10 -0
  283. openbacktesting/indicators/volume/pvr.py +10 -0
  284. openbacktesting/indicators/volume/pvt.py +10 -0
  285. openbacktesting/indicators/volume/rvol.py +8 -0
  286. openbacktesting/indicators/volume/vfi.py +18 -0
  287. openbacktesting/indicators/volume/vosc.py +10 -0
  288. openbacktesting/indicators/volume/wad.py +10 -0
  289. openbacktesting/indicators/volume/wvad.py +9 -0
  290. openbacktesting/inputs.py +51 -0
  291. openbacktesting/lib.py +31 -0
  292. openbacktesting/logs.py +129 -0
  293. openbacktesting/optimization.py +8 -0
  294. openbacktesting/optimizer/__init__.py +25 -0
  295. openbacktesting/optimizer/_semantics.py +155 -0
  296. openbacktesting/optimizer/identity.py +45 -0
  297. openbacktesting/optimizer/models.py +92 -0
  298. openbacktesting/optimizer/plan.py +129 -0
  299. openbacktesting/optimizer/portfolio-result.schema.json +4984 -0
  300. openbacktesting/optimizer/query.py +257 -0
  301. openbacktesting/optimizer/runner.py +98 -0
  302. openbacktesting/optimizer/storage.py +261 -0
  303. openbacktesting/optimizer/validation.py +64 -0
  304. openbacktesting/parallel.py +9 -0
  305. openbacktesting/plotting/__init__.py +23 -0
  306. openbacktesting/plotting/collector.py +509 -0
  307. openbacktesting/plotting/encoding.py +102 -0
  308. openbacktesting/plotting/types.py +92 -0
  309. openbacktesting/portfolio/__init__.py +15 -0
  310. openbacktesting/portfolio/analysis.py +245 -0
  311. openbacktesting/portfolio/builder.py +381 -0
  312. openbacktesting/portfolio/catalog.json +1404 -0
  313. openbacktesting/portfolio/helpers.py +92 -0
  314. openbacktesting/portfolio/metrics.py +186 -0
  315. openbacktesting/portfolio/models.py +63 -0
  316. openbacktesting/portfolio/periods.py +164 -0
  317. openbacktesting/portfolio/rates.py +14 -0
  318. openbacktesting/portfolio/snapshot.py +111 -0
  319. openbacktesting/portfolio/stats.py +272 -0
  320. openbacktesting/portfolio/trades.py +136 -0
  321. openbacktesting/portfolio/trading.py +215 -0
  322. openbacktesting/py.typed +0 -0
  323. openbacktesting/runtime.py +330 -0
  324. openbacktesting/simulation/__init__.py +17 -0
  325. openbacktesting/simulation/collection.py +13 -0
  326. openbacktesting/simulation/config.py +241 -0
  327. openbacktesting/simulation/core.py +528 -0
  328. openbacktesting/simulation/optimization.py +326 -0
  329. openbacktesting/simulation/parallel.py +145 -0
  330. openbacktesting/simulation/variants.py +107 -0
  331. openbacktesting/strategy/__init__.py +19 -0
  332. openbacktesting/strategy/bar_state.py +14 -0
  333. openbacktesting/strategy/base.py +810 -0
  334. openbacktesting/strategy/declaration.py +90 -0
  335. openbacktesting/strategy/helpers.py +198 -0
  336. openbacktesting/strategy/inputs.py +460 -0
  337. openbacktesting/strategy/sizing.py +80 -0
  338. openbacktesting/strategy/templates.py +160 -0
  339. openbacktesting/strategy_data.py +10 -0
  340. openbacktesting/test/BTCUSD.csv +157 -0
  341. openbacktesting/test/EURUSD.csv +5001 -0
  342. openbacktesting/test/GOOG.csv +2149 -0
  343. openbacktesting/test/__init__.py +29 -0
  344. openbacktesting/test/__main__.py +11 -0
  345. openbacktesting/test/_test.py +1312 -0
  346. openbacktesting/util.py +31 -0
  347. openbacktesting-0.2.0.dist-info/METADATA +151 -0
  348. openbacktesting-0.2.0.dist-info/RECORD +350 -0
  349. openbacktesting-0.2.0.dist-info/WHEEL +4 -0
  350. openbacktesting-0.2.0.dist-info/licenses/LICENSE +202 -0
@@ -0,0 +1,10 @@
1
+ """ta.fwma: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.fwma import fwma as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, asc, talib):
9
+ result = _calculate(close=close, length=length, asc=asc, talib=talib)
10
+ return named_series(result, "ta.fwma", "fwma")
@@ -0,0 +1,26 @@
1
+ """ta.hilo: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.hilo import hilo as _calculate
4
+
5
+ from ..common import named_frame
6
+
7
+
8
+ def compute(*, high, low, close, high_length, low_length, mamode, talib):
9
+ result = _calculate(
10
+ high=high,
11
+ low=low,
12
+ close=close,
13
+ high_length=high_length,
14
+ low_length=low_length,
15
+ mamode=mamode,
16
+ talib=talib,
17
+ )
18
+ return named_frame(
19
+ result,
20
+ "ta.hilo",
21
+ {
22
+ f"HILO_{high_length}_{low_length}": "hilo",
23
+ f"HILOl_{high_length}_{low_length}": "long",
24
+ f"HILOs_{high_length}_{low_length}": "short",
25
+ },
26
+ )
@@ -0,0 +1,10 @@
1
+ """ta.hl2: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.hl2 import hl2 as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, high, low, talib):
9
+ result = _calculate(high=high, low=low, talib=talib)
10
+ return named_series(result, "ta.hl2", "hl2")
@@ -0,0 +1,10 @@
1
+ """ta.hlc3: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.hlc3 import hlc3 as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, high, low, close, talib):
9
+ result = _calculate(high=high, low=low, close=close, talib=talib)
10
+ return named_series(result, "ta.hlc3", "hlc3")
@@ -0,0 +1,10 @@
1
+ """ta.hma: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.hma import hma as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, talib):
9
+ result = _calculate(close=close, length=length, talib=talib)
10
+ return named_series(result, "ta.hma", "hma")
@@ -0,0 +1,10 @@
1
+ """ta.ht_trendline: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.ht_trendline import ht_trendline as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, talib):
9
+ result = _calculate(close=close, talib=talib)
10
+ return named_series(result, "ta.ht_trendline", "ht_trendline")
@@ -0,0 +1,10 @@
1
+ """ta.hwma: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.hwma import hwma as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, na, nb, nc, talib):
9
+ result = _calculate(close=close, na=na, nb=nb, nc=nc, talib=talib)
10
+ return named_series(result, "ta.hwma", "hwma")
@@ -0,0 +1,44 @@
1
+ """ta.ichimoku: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.ichimoku import ichimoku as _calculate
4
+
5
+ from ..common import named_frame
6
+
7
+
8
+ def compute(
9
+ *,
10
+ high,
11
+ low,
12
+ close,
13
+ tenkan,
14
+ kijun,
15
+ senkou,
16
+ include_chikou,
17
+ lookahead,
18
+ as_dataframe,
19
+ append_span,
20
+ talib,
21
+ ):
22
+ result = _calculate(
23
+ high=high,
24
+ low=low,
25
+ close=close,
26
+ tenkan=tenkan,
27
+ kijun=kijun,
28
+ senkou=senkou,
29
+ include_chikou=include_chikou,
30
+ lookahead=lookahead,
31
+ as_dataframe=as_dataframe,
32
+ append_span=append_span,
33
+ talib=talib,
34
+ )
35
+ return named_frame(
36
+ result,
37
+ "ta.ichimoku",
38
+ {
39
+ f"ISA_{tenkan}": "span_a",
40
+ f"ISB_{kijun}": "span_b",
41
+ f"ITS_{tenkan}": "tenkan",
42
+ f"IKS_{kijun}": "kijun",
43
+ },
44
+ )
@@ -0,0 +1,10 @@
1
+ """ta.jma: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.jma import jma as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, phase, talib):
9
+ result = _calculate(close=close, length=length, phase=phase, talib=talib)
10
+ return named_series(result, "ta.jma", "jma")
@@ -0,0 +1,10 @@
1
+ """ta.kama: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.kama import kama as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, fast, slow, drift, talib):
9
+ result = _calculate(close=close, length=length, fast=fast, slow=slow, drift=drift, talib=talib)
10
+ return named_series(result, "ta.kama", "kama")
@@ -0,0 +1,15 @@
1
+ """ta.linreg: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ import numpy as np
4
+ from pandas_ta_classic.overlap.linreg import linreg as _calculate
5
+
6
+ from ..common import named_series
7
+
8
+
9
+ def compute(*, close, length, talib, offset):
10
+ result = _calculate(close=close, length=length, talib=talib)
11
+ if offset and result is not None:
12
+ slope = _calculate(close=close, length=length, talib=talib, slope=True)
13
+ with np.errstate(over="ignore", invalid="ignore"):
14
+ result = result - slope * float(offset)
15
+ return named_series(result, "ta.linreg", "linreg")
@@ -0,0 +1,10 @@
1
+ """ta.linregangle: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.linregangle import linregangle as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, talib):
9
+ result = _calculate(close=close, length=length, talib=talib)
10
+ return named_series(result, "ta.linregangle", "linregangle")
@@ -0,0 +1,10 @@
1
+ """ta.linregintercept: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.linregintercept import linregintercept as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, talib):
9
+ result = _calculate(close=close, length=length, talib=talib)
10
+ return named_series(result, "ta.linregintercept", "linregintercept")
@@ -0,0 +1,10 @@
1
+ """ta.linregslope: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.linregslope import linregslope as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, talib):
9
+ result = _calculate(close=close, length=length, talib=talib)
10
+ return named_series(result, "ta.linregslope", "linregslope")
@@ -0,0 +1,10 @@
1
+ """ta.ma: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.ma import ma as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, source, name, length, talib):
9
+ result = _calculate(source=source, name=name, length=length, talib=talib)
10
+ return named_series(result, "ta.ma", "ma")
@@ -0,0 +1,16 @@
1
+ """ta.ma_envelopes: Independent formula with a fixed initialization contract."""
2
+
3
+ import pandas as pd
4
+
5
+ from ..calculus import average, clean
6
+
7
+
8
+ def compute(*, close, length, percent, mamode):
9
+ middle = clean(close).rolling(length).mean() if mamode == "sma" else average(close, length)
10
+ return pd.DataFrame(
11
+ {
12
+ "middle": middle,
13
+ "upper": middle * (1 + percent / 100),
14
+ "lower": middle * (1 - percent / 100),
15
+ }
16
+ )
@@ -0,0 +1,17 @@
1
+ """ta.mama: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.mama import mama as _calculate
4
+
5
+ from ..common import named_frame
6
+
7
+
8
+ def compute(*, close, fastlimit, slowlimit, talib):
9
+ result = _calculate(close=close, fastlimit=fastlimit, slowlimit=slowlimit, talib=talib)
10
+ return named_frame(
11
+ result,
12
+ "ta.mama",
13
+ {
14
+ f"MAMA_{fastlimit}_{slowlimit}": "mama",
15
+ f"FAMA_{fastlimit}_{slowlimit}": "fama",
16
+ },
17
+ )
@@ -0,0 +1,17 @@
1
+ """ta.mavp: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.mavp import mavp as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, periods, minperiod, maxperiod, mamode, talib):
9
+ result = _calculate(
10
+ close=close,
11
+ periods=periods,
12
+ minperiod=minperiod,
13
+ maxperiod=maxperiod,
14
+ mamode=mamode,
15
+ talib=talib,
16
+ )
17
+ return named_series(result, "ta.mavp", "mavp")
@@ -0,0 +1,10 @@
1
+ """ta.mcgd: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.mcgd import mcgd as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, c, talib):
9
+ result = _calculate(close=close, length=length, c=c, talib=talib)
10
+ return named_series(result, "ta.mcgd", "mcgd")
@@ -0,0 +1,10 @@
1
+ """ta.medprice: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.medprice import medprice as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, high, low, talib):
9
+ result = _calculate(high=high, low=low, talib=talib)
10
+ return named_series(result, "ta.medprice", "medprice")
@@ -0,0 +1,10 @@
1
+ """ta.midpoint: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.midpoint import midpoint as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, talib):
9
+ result = _calculate(close=close, length=length, talib=talib)
10
+ return named_series(result, "ta.midpoint", "midpoint")
@@ -0,0 +1,10 @@
1
+ """ta.midprice: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.midprice import midprice as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, high, low, length, talib):
9
+ result = _calculate(high=high, low=low, length=length, talib=talib)
10
+ return named_series(result, "ta.midprice", "midprice")
@@ -0,0 +1,21 @@
1
+ """ta.mmar: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.mmar import mmar as _calculate
4
+
5
+ from ..common import named_frame
6
+
7
+
8
+ def compute(*, close, length, talib):
9
+ result = _calculate(close=close, length=length, talib=talib)
10
+ return named_frame(
11
+ result,
12
+ "ta.mmar",
13
+ {
14
+ f"MMAR_{length}": "ma1",
15
+ f"MMAR_{length + 5}": "ma2",
16
+ f"MMAR_{length + 10}": "ma3",
17
+ f"MMAR_{length + 15}": "ma4",
18
+ f"MMAR_{length + 20}": "ma5",
19
+ f"MMAR_{length + 25}": "ma6",
20
+ },
21
+ )
@@ -0,0 +1,10 @@
1
+ """ta.ohlc4: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.ohlc4 import ohlc4 as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, open_, high, low, close, talib):
9
+ result = _calculate(open_=open_, high=high, low=low, close=close, talib=talib)
10
+ return named_series(result, "ta.ohlc4", "ohlc4")
@@ -0,0 +1,10 @@
1
+ """ta.pwma: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.pwma import pwma as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, asc, talib):
9
+ result = _calculate(close=close, length=length, asc=asc, talib=talib)
10
+ return named_series(result, "ta.pwma", "pwma")
@@ -0,0 +1,25 @@
1
+ """ta.rainbow: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.rainbow import rainbow as _calculate
4
+
5
+ from ..common import named_frame
6
+
7
+
8
+ def compute(*, close, length, talib):
9
+ result = _calculate(close=close, length=length, talib=talib)
10
+ return named_frame(
11
+ result,
12
+ "ta.rainbow",
13
+ {
14
+ "RAINBOW_1": "ma1",
15
+ "RAINBOW_2": "ma2",
16
+ "RAINBOW_3": "ma3",
17
+ "RAINBOW_4": "ma4",
18
+ "RAINBOW_5": "ma5",
19
+ "RAINBOW_6": "ma6",
20
+ "RAINBOW_7": "ma7",
21
+ "RAINBOW_8": "ma8",
22
+ "RAINBOW_9": "ma9",
23
+ "RAINBOW_10": "ma10",
24
+ },
25
+ )
@@ -0,0 +1,10 @@
1
+ """ta.rma: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.rma import rma as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, talib):
9
+ result = _calculate(close=close, length=length, talib=talib)
10
+ return named_series(result, "ta.rma", "rma")
@@ -0,0 +1,10 @@
1
+ """ta.sinwma: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.sinwma import sinwma as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, talib):
9
+ result = _calculate(close=close, length=length, talib=talib)
10
+ return named_series(result, "ta.sinwma", "sinwma")
@@ -0,0 +1,14 @@
1
+ """ta.sma: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.sma import sma as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, offset, talib):
9
+ result = _calculate(close=close, length=length, offset=offset, talib=talib)
10
+ return named_series(result, "ta.sma", "sma")
11
+
12
+
13
+ def compute_pandas(*, close, length, offset):
14
+ return close.rolling(length, min_periods=length).mean().shift(offset).rename("sma")
@@ -0,0 +1,10 @@
1
+ """ta.ssf: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.ssf import ssf as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, poles, talib):
9
+ result = _calculate(close=close, length=length, poles=poles, talib=talib)
10
+ return named_series(result, "ta.ssf", "ssf")
@@ -0,0 +1,21 @@
1
+ """ta.supertrend: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.supertrend import supertrend as _calculate
4
+
5
+ from ..common import named_frame
6
+
7
+
8
+ def compute(*, high, low, close, length, multiplier, talib):
9
+ result = _calculate(
10
+ high=high, low=low, close=close, length=length, multiplier=multiplier, talib=talib
11
+ )
12
+ return named_frame(
13
+ result,
14
+ "ta.supertrend",
15
+ {
16
+ f"SUPERT_{length}_{multiplier}": "trend",
17
+ f"SUPERTd_{length}_{multiplier}": "direction",
18
+ f"SUPERTl_{length}_{multiplier}": "long",
19
+ f"SUPERTs_{length}_{multiplier}": "short",
20
+ },
21
+ )
@@ -0,0 +1,10 @@
1
+ """ta.swma: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.swma import swma as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, asc, talib):
9
+ result = _calculate(close=close, length=length, asc=asc, talib=talib)
10
+ return named_series(result, "ta.swma", "swma")
@@ -0,0 +1,10 @@
1
+ """ta.t3: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.t3 import t3 as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, a, talib):
9
+ result = _calculate(close=close, length=length, a=a, talib=talib)
10
+ return named_series(result, "ta.t3", "t3")
@@ -0,0 +1,10 @@
1
+ """ta.tema: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.tema import tema as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, talib):
9
+ result = _calculate(close=close, length=length, talib=talib)
10
+ return named_series(result, "ta.tema", "tema")
@@ -0,0 +1,10 @@
1
+ """ta.trima: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.trima import trima as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, talib):
9
+ result = _calculate(close=close, length=length, talib=talib)
10
+ return named_series(result, "ta.trima", "trima")
@@ -0,0 +1,10 @@
1
+ """ta.tsf: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.tsf import tsf as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, talib):
9
+ result = _calculate(close=close, length=length, talib=talib)
10
+ return named_series(result, "ta.tsf", "tsf")
@@ -0,0 +1,10 @@
1
+ """ta.typprice: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.typprice import typprice as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, high, low, close, talib):
9
+ result = _calculate(high=high, low=low, close=close, talib=talib)
10
+ return named_series(result, "ta.typprice", "typprice")
@@ -0,0 +1,10 @@
1
+ """ta.vidya: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.vidya import vidya as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, drift, talib):
9
+ result = _calculate(close=close, length=length, drift=drift, talib=talib)
10
+ return named_series(result, "ta.vidya", "vidya")
@@ -0,0 +1,10 @@
1
+ """ta.vwap: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.vwap import vwap as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, high, low, close, volume, anchor, talib):
9
+ result = _calculate(high=high, low=low, close=close, volume=volume, anchor=anchor, talib=talib)
10
+ return named_series(result, "ta.vwap", "vwap")
@@ -0,0 +1,10 @@
1
+ """ta.vwma: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.vwma import vwma as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, volume, length, talib):
9
+ result = _calculate(close=close, volume=volume, length=length, talib=talib)
10
+ return named_series(result, "ta.vwma", "vwma")
@@ -0,0 +1,10 @@
1
+ """ta.wcp: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.wcp import wcp as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, high, low, close, talib):
9
+ result = _calculate(high=high, low=low, close=close, talib=talib)
10
+ return named_series(result, "ta.wcp", "wcp")
@@ -0,0 +1,10 @@
1
+ """ta.wma: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.wma import wma as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, asc, talib):
9
+ result = _calculate(close=close, length=length, asc=asc, talib=talib)
10
+ return named_series(result, "ta.wma", "wma")
@@ -0,0 +1,10 @@
1
+ """ta.zlma: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.overlap.zlma import zlma as _calculate
4
+
5
+ from ..common import named_series
6
+
7
+
8
+ def compute(*, close, length, mamode, talib):
9
+ result = _calculate(close=close, length=length, mamode=mamode, talib=talib)
10
+ return named_series(result, "ta.zlma", "zlma")
File without changes
@@ -0,0 +1,18 @@
1
+ """ta.drawdown: Computation wrapper for the pinned dependency with canonical outputs."""
2
+
3
+ from pandas_ta_classic.performance.drawdown import drawdown as _calculate
4
+
5
+ from ..common import named_frame
6
+
7
+
8
+ def compute(*, close, talib):
9
+ result = _calculate(close=close, talib=talib)
10
+ return named_frame(
11
+ result,
12
+ "ta.drawdown",
13
+ {
14
+ "DD": "absolute",
15
+ "DD_PCT": "percent",
16
+ "DD_LOG": "logarithmic",
17
+ },
18
+ )