AlgoAnalyzer is a package for designing your trading strategies and run simulations to backtest your strategies and check their robustness
[
{
"Ticker": "YESBANK.NS", # This is the Symbol Name
"Capital": 100000, # Define the capital you want to trade with
"Method": "EMA", # Define the technical indicator you want to use
"Short_Term_Period": 20, # Define the short term period for the technical indicator
"Long_Term_Period": 50, # Define the long term period for the technical indicator
"look_back_period": "1y", # Avalible Lookback periods are “1d”, “5d”, “1mo”, “3mo”, “6mo”, “1y”, “2y”, “5y”, “10y”, “ytd”, “max”
"interval": "1d",
"stop_loss": 5 # Define stoploss for damage control
}
]
-
Method: Define the technical indicator you want to use (As of now the package supports these indicators)
-
-
interval: Define the data interval for the technical indicator (It is generally advised to use 1d interval unless you to setup an Intraday strategy)
Once you have defined your strategy, you can run the simulation by passing initialzing the runner class and then invoking the get_res() method.
Charts will be generated for each strategy and the charts will be saved as interactive html files in the same directory as the python file.
Final Results will be saved in a {timestamp}_results.json file in the same directory as the python file.
from AlgoAnalyzer import Analyzer as a
if __name__ == "__main__":
Jobs = [
{
"Ticker": "YESBANK.NS",
"Capital": 100000,
"Method": "EMA",
"Short_Term_Period": 20,
"Long_Term_Period": 50,
# Avalible Lookback periods are “1d”, “5d”, “1mo”, “3mo”, “6mo”, “1y”, “2y”, “5y”, “10y”, “ytd”, “max”
"look_back_period": "1y",
"interval": "1d",
# "stop_loss": 5
},
{
"Ticker": "ZEEMEDIA.NS",
"Capital": 100000,
"Method": "SMA",
"Short_Term_Period": 5,
"Long_Term_Period": 10,
# Avalible Lookback periods are “1d”, “5d”, “1mo”, “3mo”, “6mo”, “1y”, “2y”, “5y”, “10y”, “ytd”, “max”
"look_back_period": "6mo",
"interval": "1d",
# "stop_loss": 5
},
{
"Ticker": "ZOMATO.NS",
"Capital": 100000,
"Method": "MACD",
# Avalible Lookback periods are “1d”, “5d”, “1mo”, “3mo”, “6mo”, “1y”, “2y”, “5y”, “10y”, “ytd”, “max”
"look_back_period": "1y",
"interval": "1d",
},
]
a.Analyzer(Jobs).get_res()
It is important to have this code snippet in your file since multiprocessing module is used internally and not having this could possibly lead to errors
if __name__ == "__main__":
{
"summary": [
{
"10020_YESBANK.NS_EMA": {
"Net_PL": -3487.9485216140747,
"Buy_Signals": [
{
"Shares": 7751,
"Date": "2021-09-27T00:00:00",
"Investment_Value": 99987.89704322815,
"Action": "Buy",
"Buy_Price": 12.899999618530273
},
{
"Shares": 6893,
"Date": "2021-12-09T00:00:00",
"Investment_Value": 96502.0,
"Action": "Buy",
"Buy_Price": 14.0
}
],
"Sell_Signals": [
{
"Shares": 7751,
"Date": "2021-11-26T00:00:00",
"Investment_Value": 96499.94852161407,
"Action": "Sell",
"Sell_Price": 12.449999809265137,
"Net_PL": -3487.9485216140747
}
],
"Job_ID": 10020,
"Job_details": {
"Ticker": "YESBANK.NS",
"Capital": 100000,
"Method": "EMA",
"Short_Term_Period": 20,
"Long_Term_Period": 50,
"look_back_period": "1y",
"interval": "1d"
},
"Current_Investment": {
"Shares": 6893,
"Date": "2021-12-09T00:00:00",
"Investment_Value": 96502.0,
"Action": "Buy",
"Buy_Price": 14.0
},
"Chart": [
"YESBANK_50_20_EMA_10020_2022-01-14T17_50_02_377762.html"
]
}
},
{
"22996_ZEEMEDIA.NS_SMA": {
"Net_PL": 41241.543095588684,
"Buy_Signals": [
{
"Shares": 11049,
"Date": "2021-09-02T00:00:00",
"Investment_Value": 99993.4521074295,
"Action": "Buy",
"Buy_Price": 9.050000190734863
},
{
"Shares": 11597,
"Date": "2021-11-11T00:00:00",
"Investment_Value": 151920.70442390442,
"Action": "Buy",
"Buy_Price": 13.100000381469727
},
{
"Shares": 10619,
"Date": "2021-12-07T00:00:00",
"Investment_Value": 132206.5479745865,
"Action": "Buy",
"Buy_Price": 12.449999809265137
}
],
"Sell_Signals": [
{
"Shares": 11049,
"Date": "2021-10-12T00:00:00",
"Investment_Value": 151923.75,
"Action": "Sell",
"Sell_Price": 13.75,
"Net_PL": 51930.297892570496
},
{
"Shares": 11597,
"Date": "2021-11-22T00:00:00",
"Investment_Value": 132205.79557609558,
"Action": "Sell",
"Sell_Price": 11.399999618530273,
"Net_PL": -19714.908847808838
},
{
"Shares": 10619,
"Date": "2021-12-22T00:00:00",
"Investment_Value": 141232.7020254135,
"Action": "Sell",
"Sell_Price": 13.300000190734863,
"Net_PL": 9026.154050827026
}
],
"Job_ID": 22996,
"Job_details": {
"Ticker": "ZEEMEDIA.NS",
"Capital": 100000,
"Method": "SMA",
"Short_Term_Period": 5,
"Long_Term_Period": 10,
"look_back_period": "6mo",
"interval": "1d"
},
"Chart": [
"ZEEMEDIA_10_5_SMA_22996_2022-01-14T17_50_01_931633.html"
]
}
},
{
"21828_ZOMATO.NS_MACD": {
"Net_PL": -16501.861557006836,
"Buy_Signals": [
{
"Shares": 706,
"Date": "2021-07-29T00:00:00",
"Investment_Value": 99934.30215454102,
"Action": "Buy",
"Buy_Price": 141.5500030517578
},
{
"Shares": 694,
"Date": "2021-08-13T00:00:00",
"Investment_Value": 95320.90423583984,
"Action": "Buy",
"Buy_Price": 137.35000610351562
},
{
"Shares": 681,
"Date": "2021-08-18T00:00:00",
"Investment_Value": 91900.94792175293,
"Action": "Buy",
"Buy_Price": 134.9499969482422
},
{
"Shares": 644,
"Date": "2021-08-31T00:00:00",
"Investment_Value": 86650.20196533203,
"Action": "Buy",
"Buy_Price": 134.5500030517578
},
{
"Shares": 600,
"Date": "2021-10-18T00:00:00",
"Investment_Value": 86430.00183105469,
"Action": "Buy",
"Buy_Price": 144.0500030517578
},
{
"Shares": 586,
"Date": "2021-11-10T00:00:00",
"Investment_Value": 79725.30178833008,
"Action": "Buy",
"Buy_Price": 136.0500030517578
},
{
"Shares": 645,
"Date": "2021-12-31T00:00:00",
"Investment_Value": 88622.99606323242,
"Action": "Buy",
"Buy_Price": 137.39999389648438
},
{
"Shares": 627,
"Date": "2022-01-13T00:00:00",
"Investment_Value": 83453.7038269043,
"Action": "Buy",
"Buy_Price": 133.10000610351562
}
],
"Sell_Signals": [
{
"Shares": 706,
"Date": "2021-08-05T00:00:00",
"Investment_Value": 95274.69784545898,
"Action": "Sell",
"Sell_Price": 134.9499969482422,
"Net_PL": -4659.604309082031
},
{
"Shares": 694,
"Date": "2021-08-17T00:00:00",
"Investment_Value": 91955.0,
"Action": "Sell",
"Sell_Price": 132.5,
"Net_PL": -3365.9042358398438
},
{
"Shares": 681,
"Date": "2021-08-23T00:00:00",
"Investment_Value": 86657.25,
"Action": "Sell",
"Sell_Price": 127.25,
"Net_PL": -5243.69792175293
},
{
"Shares": 644,
"Date": "2021-09-20T00:00:00",
"Investment_Value": 86489.20196533203,
"Action": "Sell",
"Sell_Price": 134.3000030517578,
"Net_PL": -161.0
},
{
"Shares": 600,
"Date": "2021-10-25T00:00:00",
"Investment_Value": 79619.99816894531,
"Action": "Sell",
"Sell_Price": 132.6999969482422,
"Net_PL": -6810.003662109375
},
{
"Shares": 586,
"Date": "2021-12-01T00:00:00",
"Investment_Value": 88720.39642333984,
"Action": "Sell",
"Sell_Price": 151.39999389648438,
"Net_PL": 8995.094635009766
},
{
"Shares": 645,
"Date": "2022-01-07T00:00:00",
"Investment_Value": 83366.25,
"Action": "Sell",
"Sell_Price": 129.25,
"Net_PL": -5256.746063232422
}
],
"Job_ID": 21828,
"Job_details": {
"Ticker": "ZOMATO.NS",
"Capital": 100000,
"Method": "MACD",
"look_back_period": "1y",
"interval": "1d"
},
"Current_Investment": {
"Shares": 627,
"Date": "2022-01-13T00:00:00",
"Investment_Value": 83453.7038269043,
"Action": "Buy",
"Buy_Price": 133.10000610351562
},
"Chart": [
"ZOMATO.NS_macd_signal_21828_2022-01-14T17_50_02_041010.html",
"ZOMATO_candle_21828_2022-01-14T17_50_02_349608.html"
]
}
}
]
}