trigerr 0.7.3__tar.gz → 0.7.4__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.
- {trigerr-0.7.3/trigerr.egg-info → trigerr-0.7.4}/PKG-INFO +1 -1
- {trigerr-0.7.3 → trigerr-0.7.4}/tests/test_brokerage.py +21 -3
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/__init__.py +1 -1
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/utils.py +9 -6
- {trigerr-0.7.3 → trigerr-0.7.4/trigerr.egg-info}/PKG-INFO +1 -1
- {trigerr-0.7.3 → trigerr-0.7.4}/LICENSE +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/README.md +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/pyproject.toml +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/setup.cfg +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/tests/test_bt_orders.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/tests/test_crypto_utils.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/tests/test_data_market.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/tests/test_exit_mutex.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/tests/test_historical_client_config.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/tests/test_ledger_contract.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/tests/test_live_orders_correlation.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/tests/test_logging_utils.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/tests/test_orders_schema.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/tests/test_package.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/tests/test_reference_symbol_details.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/tests/test_schema_parity.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/tests/test_symbols.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/config.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/crypto_utils.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/custom_indicators.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/data/__init__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/data/historical.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/data/market.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/data/reference.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/framework/__init__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/framework/bt_state.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/framework/candle_transforms.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/framework/catalog.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/framework/clock.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/framework/compiler.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/framework/data_feeds.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/framework/execution_core.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/framework/exit_engine.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/framework/expressions.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/framework/instrument.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/framework/point_in_time.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/framework/position_sizing.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/framework/tick_sources.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/jobs.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/orders/__init__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/orders/backtest.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/orders/live.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/orders/orders_utils.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/orders/virtual.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/symbols.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/__init__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/__main__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/_typing.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/candle/__init__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/candle/cdl_doji.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/candle/cdl_inside.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/candle/cdl_pattern.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/candle/cdl_z.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/candle/ha.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/core.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/custom.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/cycle/__init__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/cycle/ebsw.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/cycle/reflex.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/ma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/maps.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/__init__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/ao.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/apo.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/bias.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/bop.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/brar.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/cci.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/cfo.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/cg.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/cmo.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/coppock.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/crsi.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/cti.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/dm.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/er.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/eri.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/exhc.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/fisher.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/inertia.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/kdj.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/kst.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/macd.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/mom.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/pgo.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/ppo.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/psl.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/qqe.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/roc.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/rsi.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/rsx.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/rvgi.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/slope.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/smc.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/smi.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/squeeze.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/squeeze_pro.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/stc.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/stoch.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/stochf.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/stochrsi.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/tmo.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/trix.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/tsi.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/uo.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/momentum/willr.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/__init__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/alligator.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/alma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/dema.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/ema.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/fwma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/hilo.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/hl2.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/hlc3.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/hma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/hwma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/ichimoku.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/jma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/kama.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/linreg.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/mama.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/mcgd.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/midpoint.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/midprice.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/ohlc4.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/pivots.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/pwma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/rma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/sinwma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/sma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/smma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/ssf.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/ssf3.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/supertrend.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/swma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/t3.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/tema.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/trima.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/vidya.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/wcp.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/wma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/overlap/zlma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/performance/__init__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/performance/drawdown.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/performance/log_return.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/performance/percent_return.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/py.typed +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/statistics/__init__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/statistics/entropy.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/statistics/kurtosis.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/statistics/mad.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/statistics/median.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/statistics/quantile.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/statistics/skew.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/statistics/stdev.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/statistics/tos_stdevall.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/statistics/variance.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/statistics/zscore.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/__init__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/adx.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/alphatrend.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/amat.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/aroon.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/chop.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/cksp.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/decay.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/decreasing.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/dpo.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/ht_trendline.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/increasing.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/long_run.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/psar.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/qstick.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/rwi.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/short_run.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/trendflex.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/ttm_trend.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/vhf.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/vortex.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/trend/zigzag.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/utils/__init__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/utils/_candles.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/utils/_core.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/utils/_math.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/utils/_numba.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/utils/_signals.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/utils/_study.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/utils/_time.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/utils/_validate.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/__init__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/aberration.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/accbands.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/atr.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/atrts.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/bbands.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/chandelier_exit.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/donchian.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/hwc.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/kc.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/massi.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/natr.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/pdist.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/rvi.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/thermo.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/true_range.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volatility/ui.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/__init__.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/ad.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/adosc.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/aobv.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/cmf.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/efi.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/eom.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/kvo.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/mfi.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/nvi.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/obv.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/pvi.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/pvo.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/pvol.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/pvr.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/pvt.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/tsv.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/vhm.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/vp.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/vwap.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr/ta/volume/vwma.py +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr.egg-info/SOURCES.txt +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr.egg-info/dependency_links.txt +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr.egg-info/requires.txt +0 -0
- {trigerr-0.7.3 → trigerr-0.7.4}/trigerr.egg-info/top_level.txt +0 -0
|
@@ -41,9 +41,27 @@ def test_bse_options_use_the_bse_rate(exchange):
|
|
|
41
41
|
assert charges(buy_price=90, sell_price=100, quantity=1000, exchange=exchange) == (272.99, 9727.01)
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
def
|
|
45
|
-
#
|
|
46
|
-
|
|
44
|
+
def test_a_short_is_charged_on_its_real_legs():
|
|
45
|
+
# callers pass the ENTRY as buy_price and the EXIT as sell_price whatever the side (net_pl relies on it), and a short is
|
|
46
|
+
# sold first. Sold at 100, bought back at 90: the same two fills as the long above, so the same charges (STT on the 100
|
|
47
|
+
# it sold, stamp duty on the 90 it bought); gross is (100 - 90) x 1,100 = +11,000
|
|
48
|
+
assert charges(buy_price=100, sell_price=90, quantity=1100, position_type="SHORT") == (303.04, 10696.96)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def test_a_losing_short_pays_stt_on_the_premium_it_sold():
|
|
52
|
+
# 17 lots of 65 (1,105), sold at 85.5, bought back at 95.05. sold 94,477.50 | bought 105,030.25 | turnover 199,507.75
|
|
53
|
+
# brokerage 40 | SEBI 0.20 | exchange 70.89 | STT 142 (94,477.50 x 0.15%) | stamp 3.15 (105,030.25 x 0.003%) | GST 20.00
|
|
54
|
+
# -> 276.24; gross is (85.5 - 95.05) x 1,105 = -10,552.75. STT on the 105,030.25 bought back would make it 291.92.
|
|
55
|
+
assert charges(buy_price=85.5, sell_price=95.05, quantity=1105, position_type="SHORT") == (276.24, -10828.99)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@pytest.mark.parametrize("kwargs", [dict(market_type="options"), dict(market_type="futures"), dict(market_type="equity", exchange="NSE")])
|
|
59
|
+
def test_a_short_costs_what_the_same_fills_cost_as_real_legs(kwargs):
|
|
60
|
+
# the OMS prices a manual exit by its real legs (buy = the exit, sell = the entry) on the default LONG side, while
|
|
61
|
+
# strategies pass entry/exit with SHORT: the same two fills have to come out the same, charges and net
|
|
62
|
+
as_short = charges(buy_price=120, sell_price=95, quantity=300, position_type="SHORT", **kwargs)
|
|
63
|
+
as_real_legs = charges(buy_price=95, sell_price=120, quantity=300, **kwargs)
|
|
64
|
+
assert as_short == as_real_legs
|
|
47
65
|
|
|
48
66
|
|
|
49
67
|
# ---- futures: one Nifty lot (75) bought at 22,000, sold at 22,100
|
|
@@ -1511,6 +1511,9 @@ def calculate_brokerage(buy_price, sell_price, quantity, broker="zerodha", marke
|
|
|
1511
1511
|
clearing_charge = 0
|
|
1512
1512
|
# Orders carry the segment they went to ("NFO" for NSE options and futures), cash symbols the exchange.
|
|
1513
1513
|
nse = exchange in ("NSE", "NFO", "XNSE")
|
|
1514
|
+
# Callers pass the ENTRY as buy_price and the EXIT as sell_price whatever the side (net_pl below relies on it).
|
|
1515
|
+
# STT falls on the sale and stamp duty on the purchase, and a short is sold first: its entry is the sale.
|
|
1516
|
+
bought, sold = (sell_price, buy_price) if position_type.upper() == "SHORT" else (buy_price, sell_price)
|
|
1514
1517
|
# Statutory rates in force from 1 April 2026: exchange charges per NSE/FA/73061 (from 1 March 2026), STT on
|
|
1515
1518
|
# futures and options per Budget 2026. Not modelled: STT on exercised options, physical settlement.
|
|
1516
1519
|
|
|
@@ -1544,13 +1547,13 @@ def calculate_brokerage(buy_price, sell_price, quantity, broker="zerodha", marke
|
|
|
1544
1547
|
stt_fees = 0.025
|
|
1545
1548
|
|
|
1546
1549
|
# Calculating STT Charge
|
|
1547
|
-
stt_charge = round(quantity *
|
|
1550
|
+
stt_charge = round(quantity * sold * stt_fees / 100, 2)
|
|
1548
1551
|
|
|
1549
1552
|
# Calculating Transaction Fees
|
|
1550
1553
|
transaction_charge = round(turnover * transaction_fees / 100, 2)
|
|
1551
1554
|
|
|
1552
1555
|
# Calculating Stamp Fees
|
|
1553
|
-
stamp_charge = round(quantity *
|
|
1556
|
+
stamp_charge = round(quantity * bought * stamp_fees / 100, 2)
|
|
1554
1557
|
|
|
1555
1558
|
elif market_type == "futures":
|
|
1556
1559
|
broker_fees = _in_brokerage(broker, "futures", turnover, no_of_orders)
|
|
@@ -1559,13 +1562,13 @@ def calculate_brokerage(buy_price, sell_price, quantity, broker="zerodha", marke
|
|
|
1559
1562
|
stt_fees = 0.05
|
|
1560
1563
|
|
|
1561
1564
|
# Calculating STT Charge
|
|
1562
|
-
stt_charge = round(quantity *
|
|
1565
|
+
stt_charge = round(quantity * sold * stt_fees / 100)
|
|
1563
1566
|
|
|
1564
1567
|
# Calculating Transaction Fees
|
|
1565
1568
|
transaction_charge = round(turnover * transaction_fees / 100, 2)
|
|
1566
1569
|
|
|
1567
1570
|
# Calculating Stamp Fees
|
|
1568
|
-
stamp_charge = round(quantity *
|
|
1571
|
+
stamp_charge = round(quantity * bought * stamp_fees / 100, 2)
|
|
1569
1572
|
|
|
1570
1573
|
else:
|
|
1571
1574
|
broker_fees = 20 * no_of_orders
|
|
@@ -1575,10 +1578,10 @@ def calculate_brokerage(buy_price, sell_price, quantity, broker="zerodha", marke
|
|
|
1575
1578
|
stt_fees = 0.15
|
|
1576
1579
|
|
|
1577
1580
|
# Calculating STT Charge
|
|
1578
|
-
stt_charge = round(quantity *
|
|
1581
|
+
stt_charge = round(quantity * sold * stt_fees / 100)
|
|
1579
1582
|
|
|
1580
1583
|
# Calculating Stamp Fees
|
|
1581
|
-
stamp_charge = round(quantity *
|
|
1584
|
+
stamp_charge = round(quantity * bought * stamp_fees / 100, 2)
|
|
1582
1585
|
|
|
1583
1586
|
# Calculating Transaction Fees
|
|
1584
1587
|
transaction_charge = round(turnover * transaction_fees / 100, 2)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|