Add script for backtesting delta targeted strategies
This commit is contained in:
parent
d80be9d245
commit
2c4fd834bb
41
delta_targeting_backtest.py
Normal file
41
delta_targeting_backtest.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
from os import getenv
|
||||||
|
from pandas import concat
|
||||||
|
|
||||||
|
from backtesting import backtest_iron_condor
|
||||||
|
from backtesting.delta_targeting import create_strategies
|
||||||
|
from plotting import BacktestChart, plot
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
start_date = datetime(2016, 1, 1)
|
||||||
|
end_date = datetime.now()
|
||||||
|
|
||||||
|
delta_target = float(getenv('DELTA_TARGET'))
|
||||||
|
entry_times = getenv('ENTRY_TIMES').split(',')
|
||||||
|
|
||||||
|
backtest_results = []
|
||||||
|
|
||||||
|
for entry_time in entry_times:
|
||||||
|
call_spread_strategy, put_spread_strategy = create_strategies(delta_target, entry_time)
|
||||||
|
|
||||||
|
backtest_result = backtest_iron_condor(
|
||||||
|
f'{int(delta_target * 100)} Delta Iron Condor @ {call_spread_strategy.trade_entry_time}',
|
||||||
|
call_spread_strategy,
|
||||||
|
put_spread_strategy,
|
||||||
|
start_date,
|
||||||
|
end_date
|
||||||
|
)
|
||||||
|
|
||||||
|
backtest_results.append(backtest_result)
|
||||||
|
|
||||||
|
combined_backtest_results = concat(backtest_results)
|
||||||
|
summed_results = combined_backtest_results.groupby('Date')['Cumulative Profit'].sum().reset_index()
|
||||||
|
|
||||||
|
plot(BacktestChart(
|
||||||
|
dates = summed_results['Date'],
|
||||||
|
profit = summed_results['Cumulative Profit'],
|
||||||
|
title = f'{int(delta_target * 100)} Delta Iron Condor'
|
||||||
|
))
|
Loading…
Reference in New Issue
Block a user