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)
Exemple #4
0
    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()
Exemple #6
0
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()
Exemple #7
0
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 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 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)
Exemple #10
0
    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)