For code/output blocks: Use ``` (aka backtick or grave accent) in a single line before and after the block. See: http://commonmark.org/help/
Broker cash adjust delay
-
Hi,
How could I simulate the following behavior in BT:Once a position is closed (D+0) and there is profit, the broker will pay you only 3 days after, in D+3 (these are the rules in Brazil)
I need to incorporate this in my backtest. I guess it has to do with checksubmit, but how could I delay the cash adjust?
-
Hi,
Did you solve that? Im trying to backtest mutual funds and need to simulate this behavior, typycally the mutual funds admin spend 3/4 days to make a change here in latin america.
So I decided to implement this logic into any strategy code but open to recieve some feedback in order to have a better implementation. I´d rather to put this logic into cerebro/order management.
def nextstart(self): self.order= None self.diacambio = 0 self.fondo="In" self.buy(self.data0) def __init__(self, **kwargs): self.__dict__.update(kwargs) super().__init__() self.signal_buy = [False] self.signal_sell = [False] self.data0_emarapida = EMA(self.data0.close,period=self.p.emarapida,plotname="FastEMAPLOT", plot=False) self.data0_emalenta = EMA(self.data0.close,period=self.p.emalenta,plotname="SlowEMA", plot=False) self.crossoverEMA = CrossOver(self.data0_emalenta, self.data0_emarapida, plotname="CrossOver", plot=False) def next(self): self.diacambio = self.diacambio + 1 if self.crossoverEMA[0] > 0 and self.fondo == "Out": self.signal_buy[0] = True if self.crossoverEMA[0] < 0 and self.fondo == "In": self.signal_sell[0] = True if self.diacambio >= self.p.delayed: if self.fondo == "Order Buy": self.order=self.buy(data=self.data0) #self.log("BUY EXECUTED " + self.data0._name) self.fondo ="In" self.signal_buy[0] = False return elif self.fondo == "Order Sell": self.order=self.sell(data=self.data0) #self.log("SELL EXECUTED" + self.data0._name) self.fondo ="Out" self.signal_sell[0] = False return if self.fondo == "Out": if self.signal_buy[0] == True : self.log("BUY " + self.data0._name) self.fondo ="Order Buy" self.diacambio = 0 return elif self.fondo == "In": if self.signal_sell[0] == True : self.log("SELL " + self.data0._name) self.fondo ="Order Sell" self.diacambio = 0 return