Coder Social home page Coder Social logo

achalvats / infertrade Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ta-oliver/infertrade

0.0 0.0 0.0 11.95 MB

Open source trading and investment strategy library designed for accessibility and compatibility

License: Apache License 2.0

Python 94.51% Shell 0.46% Makefile 3.28% Batchfile 1.76%

infertrade's Introduction

InferTrade

InferTrade

infertrade is an open source trading and investment strategy library designed for accessibility and compatibility.

The infertrade package seeks to achieve three objectives:

  • Simplicity: a simple pandas to pandas interface that those experienced in trading but new to Python can easily use.

  • Gateway to data science: classes that allow rules created for the infertrade simple interface to be used with scikit-learn functionality for prediction and calibration. (fit, transform, predict, pipelines, gridsearch) and scikit-learn compatible libraries, like feature-engine.

  • The best open source trading strategies: wrapping functionality to allow strategies from any open source Python libraries with compatible licences, such as ta to be used with the infertrade interface.

The project is licenced under the Apache 2.0 licence.

Connection to InferTrade.com

Many thanks for looking into the infertrade package!

I created InferTrade.com to provide cutting edge statistical analysis in an accessible free interface. The intention was to help individuals and small firms have access to the same quality of analysis as large institutions for systematic trading and to allow more time to be spent on creating good signals rather than backtesting and strategy verification. If someone has done the hard work of gaining insights into markets I wanted them to be able to compete in a landscape of increasingly automated statistically-driven market participants. A huge amount of effort has been made by the trading and AI/ML communities to create open source packages with powerful diagnostic functionality, which means you do not need to build a large and complex in-house analytics library to be able to support your investment decisions with solid statistical machine learning. However there remain educational and technical barriers to using this community-created wealth if you are not an experience programmer or do not have mathematical training. I want InferTrade.com to allow everyone trading in markets to have access without barriers - cost, training or time - to be competitive, with an easy to use interface that both provides direct analysis and education insights to support your trading.

The initial impetus for the creation of this open source package, infertrade was to ensure any of our users finding an attractive strategy on InferTrade.com could easily implement the rule in Python and have full access to the code to fully understand every aspect of how it works. By adding wrapper for existing libraries we hope to support further independent backtesting by users with their own preferred choice of trading libraries. We at InferStat heavily use open source in delivering InferTrade.com's functionality and we also wanted to give something back to the trading and data science community. The Apache 2.0 licence is a permissive licence, so that you can use or build upon infertrade for your personal, community or commercial projects.

The infertrade package and InferTrade.com will be adding functionality each week, and we are continually seeking to improve the experience and support the package and website provides for traders, portfolio managers and other users. Gaining feedback on new features is extremely helpful for us to improve our UX and design, as are any ideas for enhancements that would help you to trade better. If you would like to assist me in turning InferTrade into the leading open source trading platform we can offer participation in our Beta Testing programme (sign up link). You can also fork this repository and make direct improvements to the package.

Best, Tom Oliver

InferStat Founder and CEO

Contact Us

This was InferStat's first open source project and we welcome your thoughts for improvements to code structure, documentation or any changes that would support your use of the library.

If you would like assistance with using the infertrade you can email us at [email protected] or book a video call

If you would like to contribute to the package, e.g. to add support for an additional package or library, please see our contributing information.

Quickstart

Please note the project requires Python 3.7 or higher due to dependent libraries used.

See Windows or Linux guides for installation details.

Installing Python 3.7 on newer Ubuntu systems.

Python 3.7 is not among the packages maintained by Ubuntu after 18.04. If regular installation fails, there are two methods to install it:

  • Install from a PPA
  • Compile from source

It is recommended that you do the install from the PPA first:

> apt update
> sudo apt install software-properties-common
> sudo add-apt-repository ppa:deadsnakes/ppa
> sudo apt-get install python3.7-tk

If you get SSL errors while using pip, you will have to install from source. Thankfully, this is not an unreasonable task. It is detailed Josh Spicer's blog post: SSL issues with Python 3.7 Install From Source.

My First InferTrade Rule

import pandas as pd
import matplotlib.pyplot as plt

def my_first_infertrade_rule(df: pd.DataFrame) -> pd.DataFrame:
    df["allocation"] = 0.0
    df["allocation"][df.pct_change() > 0.02] = 0.5     
    return df
    
my_dataframe = pd.read_csv("example_market_data.csv")    
my_dataframe_with_allocations = my_first_infertrade_rule(my_dataframe)
my_dataframe_with_allocations.plot(["close"], ["allocation"])
plt.show()

image

Basic usage with community functions

"Community" functions are those declared in this repository, not retrieved from an external package. They are all exposed at infertrade.algos.community.

from infertrade.algos.community import normalised_close, scikit_signal_factory
from infertrade.data.simulate_data import simulated_market_data_4_years_gen
signal_transformer = scikit_signal_factory(normalised_close)
signal_transformer.fit_transform(simulated_market_data_4_years_gen())

Usage with TA

from infertrade.algos.community import scikit_signal_factory
from infertrade.data.simulate_data import simulated_market_data_4_years_gen
from infertrade.algos import ta_adaptor
from ta.trend import AroonIndicator
adapted_aroon = ta_adaptor(AroonIndicator, "aroon_down", window=1)
signal_transformer = scikit_signal_factory(adapted_aroon)
signal_transformer.fit_transform(simulated_market_data_4_years_gen())

Calculate positions with simple position function

from infertrade.algos.community.allocations import constant_allocation_size
from infertrade.utilities.operations import scikit_allocation_factory
from infertrade.data.simulate_data import simulated_market_data_4_years_gen

position_transformer = scikit_allocation_factory(constant_allocation_size)
position_transformer.fit_transform(simulated_market_data_4_years_gen())
# TODO add example with parameters

Example of position calculation via kelly just based on signal generation

from infertrade.algos.community import scikit_signal_factory
from infertrade.data.simulate_data import simulated_market_data_4_years_gen
from infertrade.utilities.operations import PositionsFromPricePrediction, PricePredictionFromSignalRegression
from sklearn.pipeline import make_pipeline
from infertrade.algos import ta_adaptor
from ta.trend import AroonIndicator

adapted_aroon = ta_adaptor(AroonIndicator, "aroon_down", window=1)

pipeline = make_pipeline(scikit_signal_factory(adapted_aroon),
                         PricePredictionFromSignalRegression(),
                         PositionsFromPricePrediction()
                         )

pipeline.fit_transform(simulated_market_data_4_years_gen())

Creating simulated data for testing

For convenience, the infertrade.data module contains some basic functions for simulating market data.

import matplotlib.pyplot as plt
from infertrade.data.simulate_data import simulated_market_data_4_years_gen
simulated_market_data_4_years_gen().plot(y=["open", "close", "high", "low", "last"])
plt.show()

image

import matplotlib.pyplot as plt
from infertrade.data.simulate_data import simulated_correlated_equities_4_years_gen
simulated_correlated_equities_4_years_gen().plot(y=["price", "signal"])
plt.show()

image

infertrade's People

Contributors

ta-oliver avatar fhashim avatar fernando-az-infertrade avatar hodlerfolyf avatar bi-kash avatar joshua-mason-inferstat avatar dimapes avatar stephencairnsinferstat avatar such3r avatar andjakocic avatar ctaptyem avatar alejandroguiradogarcia avatar alindavid avatar pawkw avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.