twopirllc / pandas-ta

Technical Analysis Indicators - Pandas TA is an easy to use Python 3 Pandas Extension with 150+ Indicators
https://twopirllc.github.io/pandas-ta/
MIT License
5.28k stars 1.04k forks source link

Roadmap for features, indicators #299

Closed luisbarrancos closed 2 years ago

luisbarrancos commented 3 years ago

@twopirllc i'm not sure if this is the place to discuss this, perhaps, hence the ticket. Feel free to correct me if that's not the case. Do you have a roadmap for the features you would like to see implemented, technical indicators, strategies, examples, notebooks, general roadmap targets for Pandas-TA? On the medium to long-term? Perhaps this is of interest to other users and developers here.

twopirllc commented 3 years ago

Hello @luisbarrancos,

This is probably the best place for now.

Near-Mid Term Goals


Mid-Long Term Goals


There is a lot I want to accomplish and that's just off the top of my head. In the past six to twelve months the package has become too big for one person to maintain in their spare time. 😓

Kind Regards, KJ

luisbarrancos commented 3 years ago

Hello @luisbarrancos,

Hello @twopirllc

This is probably the best place for now.

Near-Mid Term Goals

* **Any** _Good First Issues_ or _Help Wanted_ Tags

* Resolve outstanding Issues

  * It is difficult to move forward with new features/indicators when treading through lingering Issues

That's understandable, i hope to be able to contribute to fixing some issues.

* Complete _Indicators_ on the [Project Board](https://github.com/twopirllc/pandas-ta/projects/1)

Thank you, i overlooked that.

  * Also it needs to be updated with remaining Indicators from TA Lib that are currently not implemented by Pandas TA

Is there a consensus on the best way to deal with multiple expectations for an indicator? I assume that Pandas-TA by default assumes the TAlib behaviour, but what would be the best way to deal with other behaviours? I.e, some users might expect the same as TradingView, or MetaTrader4/MetaTrader5, or MotiveWave

  * Implement them using strictly in _numpy_ at a minimum.

* Integrate AlphaVantage's Data [ta.av()](https://github.com/twopirllc/pandas-ta/blob/e6792701d73a59cfd51087b10ac1cf54b66f1185/pandas_ta/utils/_data.py#L7) like `ta.yf()`.

I confess i haven't delved a lot into this functionality and been using YFinance. Are other platforms already implemented and/or being considered? I.e, TwelveData, IEXCloud, PolygonIO, Tiingo, Alpaca, Intrinio, and so on?

  * Also [Sentiment Investor ](https://sentimentinvestor.com/) integration.

* I had a Poll for including a [YAML configuration](https://github.com/twopirllc/pandas-ta/issues/258) but removed it due to lack of traction. 🤷🏼‍♂️

I missed that. It would get my vote by i'm not sure it would suffice.

  * Similarily I asked for submissions with more [Example Notebooks](https://github.com/twopirllc/pandas-ta/issues/54) but again no traction or interest.

I think i can help there, though my interest here is in plotting indicators in a modern and intuitive way, mostly with PlotLy, in spite of its somewhat verbosity compared to the competition.

Mid-Long Term Goals

* More comprehensive documentation and examples.

* Possible plot options (matplotlib/bokeh/mplfinance)

Do you think it would be worthwhile to the end user to have several plotting backends available? From my experience, Bokeh, Plotly seem to be the most powerful, specially plotly with its jupyter notebook or even standalone dashboards via Dash.

* Convert original code into _numpy_ versions.

  * Perhaps even _numba_ if Pandas TA detects they have _numba_ installed just like it detects if the user has TA Lib installed using the [Imports dict](https://github.com/twopirllc/pandas-ta/blob/e6792701d73a59cfd51087b10ac1cf54b66f1185/pandas_ta/__init__.py#L24) in `__init__.py`.

* Figuring out how to do _Incremental Computations_ as discussed in Issue #288.

* Investigate and potentially refactor the majority of indicators to have a [`@append_info` decorator](https://github.com/polakowo/vectorbt/issues/145) to improve integration with other potential packages like [**vectorbt**](https://github.com/polakowo/vectorbt)

That's an interesting topic, thanks for the heads up.

* Further simplify the user ETL pipeline from Data to TA/ Backtesting/ AIML/ Visualization to trade execution.

* Possibly locally store in sqlite3 data downloaded from Yahoo Finance currently being pulled using [ta.yf()](https://github.com/twopirllc/pandas-ta/blob/e6792701d73a59cfd51087b10ac1cf54b66f1185/pandas_ta/utils/_data.py#L44)

Do you think SQLite3 is the best DB choice for OHLC+V timeseries? Live/streaming data as well? It's not my area of expertise but there seem to be several suitable choices here. What's your (and everyone's) view on Arctic, (see article, or PyStore, with article here, Timescale, InfluxDB, KDB+. There's an interesting overview here.

There is a lot I want to accomplish and that's just off the top of my head. In the past six to twelve months the package has become too big for one person to maintain in their spare time. sweat

I understand and share your view on fixing outstanding issues before considering adding more features. Thanks for your hard work, Pandas-TA is incredibly useful already.

Kind Regards, KJ

Regards, Luis

twopirllc commented 3 years ago

@luisbarrancos,

That's understandable, i hope to be able to contribute to fixing some issues.

That would be great! I appreciate it.

Thank you, i overlooked that.

Yeah, sometimes I forget to look at it as well. I will try soon to update it.

I think i can help there, though my interest here is in plotting indicators in a modern and intuitive way, mostly with PlotLy, in spite of its somewhat verbosity compared to the competition.

Nice. I still haven't figured out how I want to do it. Open to ideas and discussion. 💡 Also I came across this YT Video with Yves Hilpisch on Streaming Financial Data and Plots with Plotly. It might have some ideas as well.

Do you think it would be worthwhile to the end user to have several plotting backends available? From my experience, Bokeh, Plotly seem to be the most powerful, specially plotly with its jupyter notebook or even standalone dashboards via Dash.

Yes. At a minimum, Pandas TA supports Numpy and Pandas and their dependencies. So at a minimum matplotlib but I am open to extensions including plotly via the Imports dict. I use Imports to determine if they have a package installed, so it's features can extend Pandas TA.

Is there a consensus on the best way to deal with multiple expectations for an indicator? I assume that Pandas-TA by default assumes the TAlib behaviour, but what would be the best way to deal with other behaviours? I.e, some users might expect the same as TradingView, or MetaTrader4/MetaTrader5, or MotiveWave

Regarding accuracy, you are correct. TA Lib at a minimum. Usually public TradingView implementations are the most common after TA Lib. Others less so since it's harder to extract the data and indicator values from their platforms to run correlations tests.

I confess i haven't delved a lot into this functionality and been using YFinance. Are other platforms already implemented and/or being considered? I.e, TwelveData, IEXCloud, PolygonIO, Tiingo, Alpaca, Intrinio, and so on?

Have you tried the YFinance functionality of Pandas TA using df.ta.ticker() yet? I have already written a wrapper for AlphaVantage's API, it just needs to be integrated like yfinance. Next up would be Alpaca. Others as needed or requested.

Do you think SQLite3 is the best DB choice for OHLC+V timeseries? Live/streaming data as well? It's not my area of expertise but there seem to be several suitable choices here. What's your (and everyone's) view on Arctic, (see article, or PyStore, with article here, Timescale, InfluxDB, KDB+. There's an interesting overview here.

I plan to use SQLite3 to store general data like Company Info, Financials, et al; which it is more than suited for. True, SQLite3 is not the best for OHLCV timeseries but it should be optional. I have read about and looked at all kinds of Databases, but I want to keep the difficulty from none to easy for most users. As pointed out in the article How to Store Financial Data a ..., it depends on use case. Sadly the prior poll (yaml settings, notebook examples, et al) sample sizes have been poor, so it makes it hard to understand what most users are doing and in what capacity.

I understand and share your view on fixing outstanding issues before considering adding more features. Thanks for your hard work, Pandas-TA is incredibly useful already.

Thanks! I am not fixated on handling all outstanding issues before extending it with more features. Quite the contrary. I want to keep moving forward with features while supporting a small reasonable set of Issues.

Thanks, KJ

zlpatel commented 3 years ago

@luisbarrancos for charts, have you looked into bokeh.js? I use backtesting.py framework which uses bokeh.js to plot graphs which are interactive and is stored as html so you can save and open it from any browser.

luisbarrancos commented 3 years ago

@zlpatel hi, i actually did. For backtesting i tried Backtrader and VectorBT. I'm mostly using Plotly since you can easily make some small dashboards with DASH.