def generate_random_exits(self, prob=None, seed=None, wait=1): """Generate exit signals randomly. If `prob` is None, see `vectorbt.signals.nb.generate_rand_ex_nb`. Otherwise, see `vectorbt.signals.nb.generate_rand_ex_by_prob_nb`. ## Example After each entry in `sig`, generate exactly one exit: ```python-repl >>> sig.vbt.signals.generate_random_exits(seed=42) a b c 2020-01-01 False False False 2020-01-02 False True False 2020-01-03 True False False 2020-01-04 False True False 2020-01-05 False False True ``` After each entry in `sig` and at each time step, generate exit with 50% probability: ```python-repl >>> sig.vbt.signals.generate_random_exits(prob=0.5, seed=42) a b c 2020-01-01 False False False 2020-01-02 True False False 2020-01-03 False False False 2020-01-04 False False False 2020-01-05 False False True ``` """ if prob is not None: obj, prob = reshape_fns.broadcast(self._obj, prob, keep_raw=[False, True]) return obj.vbt.wrapper.wrap(nb.generate_rand_ex_by_prob_nb( obj.vbt.to_2d_array(), prob, wait, obj.ndim == 2, seed=seed)) return self.wrapper.wrap(nb.generate_rand_ex_nb(self.to_2d_array(), wait, seed=seed))
def generate_random_exits( self, prob: tp.Optional[tp.ArrayLike] = None, seed: tp.Optional[int] = None, wait: int = 1, wrap_kwargs: tp.KwargsLike = None) -> tp.SeriesFrame: """Generate exit signals randomly. If `prob` is None, see `vectorbt.signals.nb.generate_rand_ex_nb`. Otherwise, see `vectorbt.signals.nb.generate_rand_ex_by_prob_nb`. ## Example After each entry in `sig`, generate exactly one exit: ```python-repl >>> sig.vbt.signals.generate_random_exits(seed=42) a b c 2020-01-01 False False False 2020-01-02 False True False 2020-01-03 True False False 2020-01-04 False True False 2020-01-05 False False True ``` After each entry in `sig` and at each time step, generate exit with 50% probability: ```python-repl >>> sig.vbt.signals.generate_random_exits(prob=0.5, seed=42) a b c 2020-01-01 False False False 2020-01-02 True False False 2020-01-03 False False False 2020-01-04 False False False 2020-01-05 False False True ``` """ if prob is not None: obj, prob = reshape_fns.broadcast(self._obj, prob, keep_raw=[False, True]) exits = nb.generate_rand_ex_by_prob_nb(obj.vbt.to_2d_array(), prob, wait, obj.ndim == 2, seed=seed) return obj.vbt.wrapper.wrap(exits, **merge_dicts({}, wrap_kwargs)) exits = nb.generate_rand_ex_nb(self.to_2d_array(), wait, seed=seed) return self.wrapper.wrap(exits, **merge_dicts({}, wrap_kwargs))