options-backtesting/delta_targeting_backtest.py

41 lines
1.3 KiB
Python

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'
))