def test_getitem(self):
        s0 = create_strategy(lambda universe: [])
        s1 = create_strategy(lambda universe: [])
        container = StrategyDict({"s0": s0, "s1": s1})

        assert container["s0"] == s0
        assert container["s1"] == s1
    def test_values(self):
        s0 = create_strategy(lambda universe: [])
        s1 = create_strategy(lambda universe: [])
        container = StrategyContainer(s0=s0, s1=s1)

        for i, strategy in enumerate(container.values()):
            assert strategy == [s0, s1][i]
 def test_repr(self):
     s0 = create_strategy(lambda universe: [])
     s1 = create_strategy(lambda universe: [])
     container = StrategyList([s0, s1])
     assert (
         repr(container) == "StrategyList([strategy(<lambda>), strategy(<lambda>)])"
     )
    def test_key(self):
        s0 = create_strategy(lambda universe: [])
        s1 = create_strategy(lambda universe: [])
        container = StrategyContainer(s0=s0, s1=s1)

        for i, name in enumerate(container.keys()):
            assert name == ["s0", "s1"][i]
    def test_getitem(self):
        s0 = create_strategy(lambda universe: [])
        s1 = create_strategy(lambda universe: [])
        container = StrategyList([s0, s1])

        assert container[0] == s0
        assert container[1] == s1
    def test_logic(self):
        s0 = create_strategy(lambda universe: [trade("A")])
        s1 = create_strategy(lambda universe: [trade("B"), trade("C")])
        container = StrategyContainer(s0=s0, s1=s1)
        universe = ...

        result = container(universe)
        assert container(universe) == s0(universe) + s1(universe)
 def test_repr(self):
     s0 = create_strategy(lambda universe: [])
     s1 = create_strategy(lambda universe: [])
     container = StrategyDict({"s0": s0, "s1": s1})
     assert (
         repr(container)
         == "StrategyDict(OrderedDict([('s0', strategy(<lambda>)), ('s1', strategy(<lambda>))]))"
     )
 def test_append(self):
     s0 = create_strategy(lambda universe: [])
     s1 = create_strategy(lambda universe: [])
     container = StrategyList([])
     container.append(s0)
     assert container[0] == s0
     container.append(s1)
     assert container[1] == s1
 def test_len(self):
     s0 = create_strategy(lambda universe: [])
     s1 = create_strategy(lambda universe: [])
     container = StrategyContainer()
     assert len(container) == 0
     container.add_strategy("s0", s0)
     assert len(container) == 1
     container.add_strategy("s1", s1)
     assert len(container) == 2
    def test_items(self):
        s0 = create_strategy(lambda universe: [])
        s1 = create_strategy(lambda universe: [])
        container = StrategyContainer(s0=s0, s1=s1)

        for (k1), (k2, _) in zip(container.keys(), container.items()):
            assert k1 == k2
        for (v1), (_, v2) in zip(container.values(), container.items()):
            assert v1 == v2
    def test_add_strategy(self):
        s0 = create_strategy(lambda universe: [])
        s1 = create_strategy(lambda universe: [])

        container = StrategyContainer()
        assert container._strategies == OrderedDict()
        container.add_strategy("s0", s0)
        assert container._strategies == OrderedDict({"s0": s0})
        container.add_strategy("s1", s1)
        assert container._strategies == OrderedDict({"s0": s0, "s1": s1})
    def test_setitem(self):
        s0 = create_strategy(lambda universe: [])
        s1 = create_strategy(lambda universe: [])
        t0 = create_strategy(lambda universe: [])
        t1 = create_strategy(lambda universe: [])
        container = StrategyDict({"s0": s0, "s1": s1})

        container["s0"] = t0
        assert container["s0"] == t0

        container["s1"] = t1
        assert container["s1"] == t1
    def test_setitem(self):
        s0 = create_strategy(lambda universe: [])
        s1 = create_strategy(lambda universe: [])
        t0 = create_strategy(lambda universe: [])
        t1 = create_strategy(lambda universe: [])
        container = StrategyList([s0, s1])

        container[0] = t0
        assert container[0] == t0

        container[1] = t1
        assert container[1] == t1
Example #14
0
 def test_set_params(self):
     strategy = create_strategy(self.my_strategy, param_1=1.0, param_2=2.0)
     assert strategy.get_params() == {"param_1": 1.0, "param_2": 2.0}
     strategy.set_params(param_1=3.0)
     assert strategy.get_params() == {"param_1": 3.0, "param_2": 2.0}
     with pytest.raises(ValueError):
         strategy.set_params(nonexistent_param=1.0)
Example #15
0
 def test_score_deprecation_warning(self):
     """
     `strategy.evaluate` is deprecated
     """
     strategy = create_strategy(self.my_strategy, param_1=1.0, param_2=2.0)
     with pytest.raises(DeprecationWarning):
         strategy.evaluate(None)
 def test_add_strategy_typeerror(self):
     s = create_strategy(lambda universe: [])
     container = StrategyContainer()
     with pytest.raises(TypeError):
         container.add_strategy(0, s)
     with pytest.raises(TypeError):
         container.add_strategy("name", None)
Example #17
0
    def test_run_trades(self, verbose):
        """Test if trades are the same with call"""
        strategy = create_strategy(self.my_strategy, param_1=1.0, param_2=2.0)
        universe = self.universe

        result = strategy.run(universe, verbose=verbose).trades
        expected = strategy(universe)

        assert result == expected
Example #18
0
 def test_abs_exposure(self):
     universe = pd.DataFrame(
         {
             "A0": [1.0, 2.0, 3.0, 4.0, 5.0],
             "A1": [2.0, 3.0, 4.0, 5.0, 6.0],
             "A2": [3.0, 4.0, 5.0, 6.0, 7.0],
         },
         dtype=float,
     )
     strategy = create_strategy(lambda _: [
         [1, -1] * trade(["A0", "A2"], entry=1, exit=3),
         [-1, 2] * trade(["A1", "A2"], entry=2, exit=4),
     ]).run(universe, verbose=False)
     result = strategy.abs_exposure()
     expect = pd.Series([0, 0, 8, 15, 20], index=universe.index)
     pd.testing.assert_series_equal(result, expect, check_dtype=False)
Example #19
0
 def test_exposure(self):
     universe = pd.DataFrame(
         {
             "A0": [1.0, 2.0, 3.0, 4.0, 5.0],
             "A1": [2.0, 3.0, 4.0, 5.0, 6.0],
             "A2": [3.0, 4.0, 5.0, 6.0, 7.0],
         },
         dtype=float,
     )
     strategy = create_strategy(lambda universe: [
         [1, -1] * trade(["A0", "A2"], entry=1, exit=3),
         [-1, 2] * trade(["A1", "A2"], entry=2, exit=4),
     ]).run(universe, verbose=False)
     result = strategy.exposure()
     expect = pd.DataFrame(
         [[0, 0, 0], [0, 0, 0], [3, 0, -5], [4, -5, 6], [0, -6, 14]],
         index=universe.index,
         columns=universe.columns,
     )
     pd.testing.assert_frame_equal(result, expect, check_dtype=False)
Example #20
0
    def test_get_params(self):
        strategy = create_strategy(self.my_strategy, param_1=1.0, param_2=2.0)
        assert strategy.get_params() == {"param_1": 1.0, "param_2": 2.0}

        strategy = MyStrategy(param_1=1.0, param_2=2.0)
        assert strategy.get_params() == {}
Example #21
0
if __name__ == "__main__":
    sys.path.append("..")
    seaborn.set_style("whitegrid")

    # ---

    import pandas as pd

    import epymetheus as ep
    from epymetheus.benchmarks import dumb_strategy

    # ---

    my_strategy = ep.create_strategy(dumb_strategy,
                                     profit_take=20.0,
                                     stop_loss=-10.0)

    # ---

    from epymetheus.datasets import fetch_usstocks

    universe = fetch_usstocks()
    print(">>> universe.head()")
    print_as_comment(universe.head())

    print(">>> my_strategy.run(universe)")
    my_strategy.run(universe)

    # ---
Example #22
0
    def test_repr(self):
        strategy = create_strategy(my_func, param_1=1.0, param_2=2.0)
        assert repr(strategy) == "strategy(my_func, param_1=1.0, param_2=2.0)"

        strategy = MyStrategy(param_1=1.0, param_2=2.0)
        assert repr(strategy) == "MyStrategy"
Example #23
0
    def test_init_from_func(self):
        strategy = create_strategy(self.my_strategy, param_1=1.0, param_2=2.0)
        universe = self.universe

        assert strategy(universe) == [1.0 * trade("A"), 2.0 * trade("B")]
Example #24
0
 def test_run_notradeerror(self, verbose):
     strategy = create_strategy(lambda universe: [])
     universe = self.universe
     with pytest.raises(NoTradeError):
         strategy.run(universe, verbose=verbose)
    def test_list(self):
        s0 = create_strategy(lambda universe: [])
        s1 = create_strategy(lambda universe: [])
        container = StrategyList([s0, s1])

        assert container.list() == [s0, s1]
    def test_dict(self):
        s0 = create_strategy(lambda universe: [])
        s1 = create_strategy(lambda universe: [])
        container = StrategyDict({"s0": s0, "s1": s1})

        assert container.dict() == OrderedDict(s0=s0, s1=s1)