Python Forum

Full Version: Backtesting trading strategy
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hallo

This is my last question for my thesis.

I’m about to backtest my strategy, but ran into the problem that i have some price data from Eikon that i have to use. I tried with backtesting.py but ran into 2 problems. 1 The dataset must include open, high, low and close. In my dataset i only have the adjusted close price. 2 Is that i can only find examples for a single stocks and not an index/portfolio.

Then i thought that maybe the best solution was to loop over my dataset with my strategy, but i’m open for other solutions too if you have a better idea.

The strategy i have to test is a long/short strategy and i have all the historical holding positions in 2 pandas dataframes called long and short, with an index={1,2,3..} and all the holding positions in the cells.
My test set is the stock names in the columns a Date index={1-1-2000,2-1-2000} and and prices in the cells.

I think i must convert the long and short to have the same index as my test set, but i can't override the index. The test set and long and short have the same lenght and is for the same period.
I tried to set the index like this:
short.reindex(test_set)
and get this error:
Error:
ValueError: Index data must be 1-dimensional
I tried to reset the index of my test_set too with ".reset_index", but the index is not reset Think

An examples of my long, short and test_set:
long = (['Index', '0', '1'],
        ['0','stock_a','stock_b'],
        ['1','stock_a','Stock_c']

short = (['Index', '0', '1'],
         ['0','stock_c','stock_d'],
         ['1','stock_b','Stock_d']
So for the long strategy, in day 0 i buy stock_a and stock_b. For day 1 i keep stock_a, sell stock_b and buy stock_c

And an example of my test_set
test_set=(['Index','   stock_a','stock_b','stock_c','stock_d','stock_e'],
          ['1-1-2000',  100,      200,      300,      200,      250],
          ['2-1-2000',  101,      203,      299,      205,      251])
So after i have set the index, how do i loop over it and backtest it, and is it possible to include transaction cost if there is a trade?

best regards Big Grin
I now did solve the first problem about set the index to be the same.
The solution is:
test_set.index = pd.to_numeric(long.index)
My only problem now is to use the value of the cells(stock names) in long and short to pick the right values from the columns in test_set.

Anybody who knows it?