def load_tagged_tt_trades(**kwargs): assign_output = get_tagged_tt_fills(**kwargs) aggregate_trades = assign_output['aggregate_trades'] con = msu.get_my_sql_connection(**kwargs) final_alias_dictionary = {} unique_alias_list = aggregate_trades['alias'].unique() open_strategy_frame = ts.get_open_strategies() for i in range(len(unique_alias_list)): if ~open_strategy_frame['alias'].str.contains(unique_alias_list[i]).any(): print('Need to create ' + unique_alias_list[i]) if '_ocs' in unique_alias_list[i]: gen_output = ts.generate_db_strategy_from_alias_and_class(alias=unique_alias_list[i], strategy_class='ocs') final_alias_dictionary[unique_alias_list[i]] = gen_output['alias'] else: final_alias_dictionary[unique_alias_list[i]] = unique_alias_list[i] aggregate_trades['alias_final'] = [final_alias_dictionary[x] for x in aggregate_trades['alias']] aggregate_trades['alias'] = aggregate_trades['alias_final'] ts.load_trades_2strategy(trade_frame=aggregate_trades,con=con,**kwargs) if 'con' not in kwargs.keys(): con.close()
def hedge_strategy_against_delta(**kwargs): con = msu.get_my_sql_connection(**kwargs) print(kwargs['alias']) hedge_results = get_hedge_4strategy(alias=kwargs['alias'], con=con) trade_frame = pd.DataFrame() trade_frame['ticker'] = hedge_results['underlying_ticker'] trade_frame['option_type'] = None trade_frame['strike_price'] = np.NaN trade_frame['trade_price'] = hedge_results['hedge_price'] trade_frame['trade_quantity'] = hedge_results['hedge'] trade_frame['instrument'] = 'F' trade_frame['real_tradeQ'] = True trade_frame['alias'] = kwargs['alias'] tas.load_trades_2strategy(trade_frame=trade_frame,con=con) trade_frame['trade_quantity'] = -trade_frame['trade_quantity'] trade_frame['alias'] = 'delta_oct16' tas.load_trades_2strategy(trade_frame=trade_frame,con=con) if 'con' not in kwargs.keys(): con.close()
def execDetailsEnd(self, reqId: int): super().execDetailsEnd(reqId) print("ExecDetailsEnd. ", reqId) trade_frame = self.trade_frame trade_frame['real_tradeQ'] = True trade_frame['ticker_head'] = [cmi.get_contract_specs(x)['ticker_head'] for x in trade_frame['ticker']] if pth.exists(self.trade_file): order_frame = pd.read_csv(self.trade_file,names=['order_id','ticker','urgency','strategy_class']) print(order_frame['order_id']) print(trade_frame['order_id']) for i in range(len(trade_frame.index)): selected_frame = order_frame[order_frame['order_id'] == trade_frame['order_id'].iloc[i]] if len(selected_frame.index)>0: if selected_frame['strategy_class'].iloc[0]=='delta_hedge': trade_frame.loc[i,'alias'] = self.delta_alias elif self.trade_assignment_by_tickerhead: for key, value in self.trade_assignment_by_tickerhead.items(): trade_frame.loc[trade_frame['ticker_head'] == key,'alias'] = value else: trade_frame['alias'] = 'delta_Oct18_2' trade_frame = trade_frame[pd.notnull(trade_frame['alias'])] trade_frame.reset_index(inplace=True, drop=True) ts.load_trades_2strategy(trade_frame=trade_frame, con=self.con)
def execDetails(self, reqId: int, contract: Contract, execution: Execution): super().execDetails(reqId, contract, execution) try: self.log.info('ExecDetails: ' + str(reqId) + ', ' + contract.symbol + ', ' + contract.secType + ', ' + contract.currency + ', ' + str(execution.execId) + ', ' + str(execution.orderId) + ', ' + str(execution.shares)) ticker = ib_contract.get_db_ticker_from_ib_contract( ib_contract=contract, contract_id_dictionary=self.contractIDDictionary) if execution.side == 'BOT': trade_quantity = execution.shares elif execution.side == 'SLD': trade_quantity = -execution.shares trade_frame = pd.DataFrame.from_items([ ('alias', [self.db_alias]), ('ticker', [ticker]), ('option_type', [None]), ('strike_price', [np.nan]), ('trade_price', [execution.price]), ('trade_quantity', [trade_quantity]), ('instrument', ['F']), ('real_tradeQ', [True]) ]) ts.load_trades_2strategy(trade_frame=trade_frame, con=self.con) except Exception: self.log.error('execDetails failed', exc_info=True)
def hedge_strategy_against_delta(**kwargs): con = msu.get_my_sql_connection(**kwargs) print(kwargs['alias']) if 'intraday_price_frame' in kwargs.keys(): hedge_results = get_hedge_4strategy( alias=kwargs['alias'], intraday_price_frame=kwargs['intraday_price_frame'], con=con) else: hedge_results = get_hedge_4strategy(alias=kwargs['alias'], con=con) trade_frame = pd.DataFrame() trade_frame['ticker'] = hedge_results['underlying_ticker'] trade_frame['option_type'] = None trade_frame['strike_price'] = np.NaN trade_frame['trade_price'] = hedge_results['hedge_price'] trade_frame['trade_quantity'] = hedge_results['hedge'] trade_frame['instrument'] = 'F' trade_frame['real_tradeQ'] = True trade_frame['alias'] = kwargs['alias'] tas.load_trades_2strategy(trade_frame=trade_frame, con=con) trade_frame['trade_quantity'] = -trade_frame['trade_quantity'] trade_frame['alias'] = kwargs['delta_alias'] tas.load_trades_2strategy(trade_frame=trade_frame, con=con) if 'con' not in kwargs.keys(): con.close()
def load_manual_entry_trades(**kwargs): trade_frame = assign_trades_2strategies(trade_source='manual_entry') con = msu.get_my_sql_connection(**kwargs) ts.load_trades_2strategy(trade_frame=trade_frame,con=con,**kwargs) if 'con' not in kwargs.keys(): con.close()
def load_tagged_tt_trades(**kwargs): assign_output = get_tagged_tt_fills(**kwargs) con = msu.get_my_sql_connection(**kwargs) ts.load_trades_2strategy(trade_frame=assign_output['aggregate_trades'],con=con,**kwargs) if 'con' not in kwargs.keys(): con.close()
def create_paper_strategy_from_strategy_sheet(**kwargs): id = kwargs['id'] strategy_class = kwargs['strategy_class'] size = kwargs['size'] report_date = kwargs['report_date'] strategy_id = ts.generate_db_strategy_from_strategy_sheet(id=id,strategy_class=strategy_class, report_date=report_date) trade_frame = generate_paper_trades_from_strategy_sheet(id=id,strategy_class=strategy_class,size=size,report_date=report_date) ts.load_trades_2strategy(trade_frame=trade_frame,strategy_id=strategy_id)
def execDetails(self, reqId: int, contract: Contract, execution: Execution): super().execDetails(reqId, contract, execution) try: self.log.info('ExecDetails: ' + str(reqId) + ', ' + contract.symbol + ', ' + contract.secType + ', ' + contract.currency + ', ' + str(execution.execId) + ', ' + str(execution.orderId) + ', ' + str(execution.shares)) if contract.secType!='BAG': ticker = ib_contract.get_db_ticker_from_ib_contract(ib_contract=contract,contract_id_dictionary=self.contractIDDictionary) with open(self.output_dir + '/fillsDetail.csv', 'a') as file: file.write(str(execution.orderId) + ',' + str(execution.execId) + ',' + str(ticker) + ',' + str(execution.price) + ',' + str(execution.shares) + ',' + str(execution.side)) file.write('\n') overnight_calendars = self.overnight_calendars selection_index = overnight_calendars['working_order_id']==execution.orderId strategy_alias = overnight_calendars.loc[selection_index,'alias'].values[0] if execution.side=='BOT': trade_quantity = execution.shares elif execution.side=='SLD': trade_quantity = -execution.shares if strategy_alias in self.open_strategy_list: strategy_alias_2write = strategy_alias else: db_strategy_output = ts.generate_db_strategy_from_alias(alias=strategy_alias,con=self.con,description_string='strategy_class=ocs&betSize=' + str(self.bet_size) + '&ticker1=' +overnight_calendars.loc[selection_index,'ticker1'].values[0] + '&ticker2=' +overnight_calendars.loc[selection_index, 'ticker2'].values[0]) strategy_alias_2write = db_strategy_output['alias'] overnight_calendars.loc[selection_index, 'alias'] = strategy_alias_2write self.open_strategy_list.append(strategy_alias_2write) self.overnight_calendars = overnight_calendars trade_frame = pd.DataFrame.from_items([('alias', [strategy_alias_2write]), ('ticker', [ticker]), ('option_type', [None]), ('strike_price', [np.nan]), ('trade_price', [execution.price]), ('trade_quantity', [trade_quantity]), ('instrument', ['F']), ('real_tradeQ', [True])]) ts.load_trades_2strategy(trade_frame=trade_frame, con=self.con) except Exception: self.log.error('execDetails failed', exc_info=True)
def create_paper_strategy_from_strategy_sheet(**kwargs): id = kwargs['id'] strategy_class = kwargs['strategy_class'] size = kwargs['size'] report_date = kwargs['report_date'] strategy_id = ts.generate_db_strategy_from_strategy_sheet( id=id, strategy_class=strategy_class, report_date=report_date) trade_frame = generate_paper_trades_from_strategy_sheet( id=id, strategy_class=strategy_class, size=size, report_date=report_date) ts.load_trades_2strategy(trade_frame=trade_frame, strategy_id=strategy_id)