13.08.2022 Views

advanced-algorithmic-trading

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

365

25.6 Full Code

# monthly_rebalance_run.py

import datetime

import click

from qstrader import settings

from qstrader.compat import queue

from qstrader.price_parser import PriceParser

from qstrader.price_handler.yahoo_daily_csv_bar import \

YahooDailyCsvBarPriceHandler

from qstrader.strategy.monthly_liquidate_rebalance_strategy import \

MonthlyLiquidateRebalanceStrategy

from qstrader.strategy import Strategies, DisplayStrategy

from qstrader.position_sizer.rebalance import \

LiquidateRebalancePositionSizer

from qstrader.risk_manager.example import ExampleRiskManager

from qstrader.portfolio_handler import PortfolioHandler

from qstrader.compliance.example import ExampleCompliance

from qstrader.execution_handler.ib_simulated import \

IBSimulatedExecutionHandler

from qstrader.statistics.tearsheet import TearsheetStatistics

from qstrader.trading_session.backtest import Backtest

def run_monthly_rebalance(

config, testing, filename,

benchmark, ticker_weights, title_str,

start_date, end_date, equity

):

config = settings.from_file(config, testing)

tickers = [t for t in ticker_weights.keys()]

# Set up variables needed for backtest

events_queue = queue.Queue()

csv_dir = config.CSV_DATA_DIR

initial_equity = PriceParser.parse(equity)

# Use Yahoo Daily Price Handler

price_handler = YahooDailyCsvBarPriceHandler(

csv_dir, events_queue, tickers,

start_date=start_date, end_date=end_date

)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!