Skip to main content

TALi++ - Incremental Technical Analysis Library

Project description

TALIpp - Incremental Technical Analysis Library

talipp (or tali++) is a Python library implementing financial indicators for technical analysis. The distinctive feature of the library is its incremental computation which fits extremely well real-time applications or applications with iterative input in general.

Unlike existing libraries for technical analysis which typically have to work on the whole input vector in order to calculate new values of indicators, talipp due to its incremental architecture calculates new indicators' values exclusively based on the delta input data. That implies, among others, it requires O(1) time to produce new values in comparison to O(n) (or worse) required by other libraries.

Supported incremental operations include:

  • appending new values to the input
  • updating the last input value
  • removing arbitrary number of the input values

Besides the already mentioned superior time complexity for delta input operations, talipp's incremental approach immediately offers other interesting features for free, such as indicator chaining or building new indicators combined from other indicators. See section with examples to get an idea.

Incremental nature of talipp naturally excels in applications with frequent CUD operations but it can be used for charting, back-testing, ... as any other existing library.

Last but not least, talipp is a very young project and therefore open to any suggestions of amending the API to users' liking. You are encouraged to come up with proposals.


What's new in version 1.1.0

  • indicator chaining
  • delta input values can be added as a single values as well as a list

For the full history of changes see CHANGELOG.


List of incremental indicators

talipp currently provides below set of indicators. If your favourite indicator is missing, then create a ticket via GitHub Issues and there is a chance that it will be included in the future version of the library.

Type Indicators
trend Average Directional Index (ADX)
Awesome Oscillator (AO)
Ichimoku Kinko Hyo
Know Sure Thing (KST)
Moving Average Convergence Divergence (MACD)
Mass Index
Moving Average (ALMA, SMA, SMMA, DEMA, EMA, HMA, TEMA, VWMA, WMA)
Parabolic SAR
SFX TOR
support/resistance High/Low Pivots
momentum Chaikin Oscillator
Rate of Change (ROC)
Relative strength index (RSI)
Stochastic Oscillator
Stochastic RSI
Ultimate Oscillator (UO)
volume Accumulation/Distribution (ADL)
On-balance Volume (OBV)
volatility Average True Range (ATR)
Bollinger Bands (BB)
Donchian Channel (DC)
Keltner Channel (KC)
Standard deviation

Installation

pip install talipp

In case you want to install the latest version from the repo, use

pip install git+https://github.com/nardew/talipp.git@master

Examples

Consult examples folder to see usage of every single indicator included in the library. To get the basic look and feel of the API, see below.

from talipp.indicators import EMA, Stoch
from talipp.ohlcv import OHLCVFactory

# EMA indicator ([float] -> [float])
ema = EMA(period = 3, input_values = [1, 3, 5, 7, 9, 2, 4, 6, 8, 10])

# treat indicators as any other list
print(f'EMA(3): {ema}') # [3.0, 5.0, 7.0, 4.5, 4.25, 5.125, 6.5625, 8.28125]
print(f'Last EMA value: {ema[-1]}') # 8.28125

# append a new input value incrementally
ema.add_input_value(11)
print(f'EMA after adding a new value:      {ema}') # [3.0, 5.0, 7.0, 4.5, 4.25, 5.125, 6.5625, 8.28125, 9.640625]

# change the last added value
ema.update_input_value(15)
print(f'EMA after updating the last value: {ema}') # [3.0, 5.0, 7.0, 4.5, 4.25, 5.125, 6.5625, 8.28125, 11.640625]

# change the last added value again
ema.update_input_value(18)
print(f'EMA after updating the last value: {ema}') # [3.0, 5.0, 7.0, 4.5, 4.25, 5.125, 6.5625, 8.28125, 13.140625]

# remove the last added value
ema.remove_input_value()
print(f'EMA after removing the last value: {ema}') # [3.0, 5.0, 7.0, 4.5, 4.25, 5.125, 6.5625, 8.28125]

# STOCH indicator ([OHLCV] -> [composite])
stoch = Stoch(5, 3, OHLCVFactory.from_dict({
    'high':     [5, 10, 15, 20, 25, 30, 35],
    'low':      [1, 4, 7, 10, 13, 16, 19],
    'close':    [3, 9, 8, 19, 18, 17, 19]
}))

# print result as a list of composite values for 'k' and 'd' output parameters
print(f'Stoch(5, 3) composite result: {stoch}') # [StochVal(k=70.83333333333333, d=None), StochVal(k=50.0, d=None), StochVal(k=42.857142857142854, d=54.563492063492056)]

# print result as lists per output parameters
print(f'Stoch(5, 3) decomposed result: {stoch.to_lists()}') # {'k': [70.83333333333333, 50.0, 42.857142857142854], 'd': [None, None, 54.563492063492056]} 

# Indicator chaining
sma1 = SMA(3)
sma2 = SMA(3, input_indicator = sma1)
sma3 = SMA(3, input_indicator = sma2)

sma1.add_input_value([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(f"SMA1: {sma1}") # [2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]
print(f"SMA2: {sma2}") # [3.0, 4.0, 5.0, 6.0, 7.0, 8.0]
print(f"SMA3: {sma3}") # [4.0, 5.0, 6.0, 7.0]

Contact

  • to report issues, bugs, corrections or to propose new features use preferably Github Issues
  • for topics requiring more personal approach feel free to send an e-mail to

Support

If you like the library and you feel like you want to support its further development, enhancements and bug fixing, then it will be of great help and most appreciated if you:

  • file bugs, proposals, pull requests, ...
  • spread the word
  • donate an arbitrary tip
    • BTC: 3GJPT6H6WeuTWR2KwDSEN5qyJq95LEErzf
    • ETH: 0xC7d8673Ee1B01f6F10e40aA416a1b0A746eaBe68

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

talipp-1.1.0.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

talipp-1.1.0-py3-none-any.whl (28.8 kB view details)

Uploaded Python 3

File details

Details for the file talipp-1.1.0.tar.gz.

File metadata

  • Download URL: talipp-1.1.0.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.7.9

File hashes

Hashes for talipp-1.1.0.tar.gz
Algorithm Hash digest
SHA256 1762ee7827a8dbcc9cf2ded1b238ffb2bd237f082a6e10548238428df976484c
MD5 ec1ad6470ce9c1e2d3d0edc4cfa0a431
BLAKE2b-256 30390aa582b9e33bea2ac96ef1a7c065fb68360b3c8aee0c94f15f2adc1fc948

See more details on using hashes here.

File details

Details for the file talipp-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: talipp-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 28.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.7.9

File hashes

Hashes for talipp-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0343bdc4fa265231ddc1a1661c2cc3c1b36b3466e3409c0cdda0df5562ca38cd
MD5 1ed324bf0de93bce680effd97ab47134
BLAKE2b-256 edc0026cd4e296f763ea474609fdef1836435a3dd9be42dbf3d2b85969be27f4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page