Skip to main content

Index future simple stat and time-series test module

Project description

Simple Backtest Module (Personal Usage)

Chang Sun | 孙畅

Email

Author Package License README

Install and Update

pip install --upgrade sc-backtest

or (if slow)

pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple sc-backtest

Simple Test

  • Check for factor validity
    • Statistical:
      • CDF
      • Markout
      • Hist
      • ...
    • Time-Series:
      • Sign-Trade
      • Value-Trade
      • ...
# x: factors
# y: asset's future ret

import pandas as pd
import numpy as np
from sc_backtest import simpletest, dataset

data = dataset.get_data('adj_close_price', frequency=5)
x = data.pct_change(240).iloc[:, 0]
y = data.pct_change().shift(-1).iloc[:, 0]
st = simpletest()
st.plot_cdf(x, y)
st.plot_composite(x, y)

Backtest (bt)

  • Backtest
    • get_report
    • get_pnl_plot
    • round_test
    • ...
# x: factors
# y: asset's future ret

import pandas as pd
import numpy as np
from sc_backtest import simpletest, bt, dataset

data = dataset.get_data('adj_close_price', frequency=5)
x = data.pct_change(240).iloc[:, 0]
y = data.pct_change().shift(-1).iloc[:, 0]
st = simpletest()
data = st.simple_pnl(x, y, data_return=True)
report = bt.get_report(data['delta_med'], y)
bt.get_pnl_plot(data['delta_med'], y)

Technical Analysis (ta)

Reference: ta

import pandas as pd
import numpy as np
from sc_backtest import ta, dataset

data = dataset.get_data('adj_close_price', frequency=5)
macd_diff = ta.trend.macd(data.iloc[:, 0]).macd_diff()

Technical Analysis2 (ta2)

Variou moving average function and stat model

  • sma, ema, wma, ...
  • rsi, atr, ...
  • z_score, div_std, de_mean, ...
import pandas as pd
import numpy as np
from sc_backtest import ta2, dataset

data = dataset.get_data('adj_close_price', frequency=5)
wma = ta2.wma(data.iloc[:, 0], window=5)

DataFrame Function (df_func)

# example

def df_sim_yoy(window):
    def _sim_yoy(x):
        temp = pd.DataFrame(x)
        return (temp - temp.shift(window)) / ((temp.abs() + temp.shift(window).abs()) / 2)

    _sim_yoy.__name__ = f'df_sim_yoy_{int(window)}'
    return _sim_yoy

Example

Input your factor and underlying asset's future return with index type as DatetimeIndex and get the composite factor analysis stat and simple-pnl time-series plots.

# x: factors
# y: asset's future ret

import pandas as pd
import numpy as np
from sc_backtest import simpletest, bt, dataset, ta2

data = dataset.get_data('adj_close_price', frequency=5)
x = data.pct_change().apply(lambda x: ta2.ema(x, window=240))
y = data.pct_change().shift(-1)
st = simpletest()
st.plot_composite_cs(x, y, ic=True, horizon=5)
bt.get_pnl_plot(x, y, alpha=True)

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

sc-backtest-0.1.14.tar.gz (45.6 MB view hashes)

Uploaded Source

Built Distribution

sc_backtest-0.1.14-py3-none-any.whl (46.7 MB view hashes)

Uploaded Python 3

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