Example #1
0
def test_buy_and_hold_baseline_with_multiple_assets(make_ready_env, datums):
    datums.add().rows([1], [2], [0.5], [4])
    datums.add().rows([1], [1], [3], [2])
    env = make_ready_env(cash=10)
    assert unpack_info(idle_step(env))['baseline'] == 1.5
    assert unpack_info(idle_step(env))['baseline'] == 3.5 / 2
    assert unpack_info(idle_step(env))['baseline'] == 3
Example #2
0
def test_reset_baseline_datums(make_ready_env, datums, baseline_datums):
    datums.add().rows([1], [2], [0.5])
    baseline_datums.rows(10, 5, 20)
    env = make_ready_env(cash=10, baseline=baseline_datums)
    assert unpack_info(idle_step(env))['baseline'] == 0.5
    assert unpack_info(idle_step(env))['baseline'] == 2
    env.reset()
    assert unpack_info(idle_step(env))['baseline'] == 0.5
    assert unpack_info(idle_step(env))['baseline'] == 2
Example #3
0
def test_commission_fees_are_not_deducted_when_assets_are_not_moved(
        make_ready_env, datums):
    datums.add().rows([1], [1], [2])
    env = make_ready_env(cash=10, commission=0.1)
    assert unpack_reward(idle_step(env)) == 1.0
    assert unpack_reward(idle_step(env)) == 1.0
Example #4
0
def test_idle_reward(make_ready_env, datums):
    datums.add().rows([1], [1], [2])
    env = make_ready_env(cash=10)
    assert unpack_reward(idle_step(env)) == 1.0
Example #5
0
def test_by_default_use_buy_and_hold_baseline(make_ready_env, datums):
    datums.add().rows([1], [2], [0.5], [4])
    env = make_ready_env(cash=10)
    assert unpack_info(idle_step(env))['baseline'] == 2
    assert unpack_info(idle_step(env))['baseline'] == 0.5
    assert unpack_info(idle_step(env))['baseline'] == 4
Example #6
0
def test_raise_error_when_upcoming_invalid_datum_is_encountered(
        make_ready_env, datums, invalid):
    datums.add().rows([2], [1], [invalid])
    env = make_ready_env()
    with pytest.raises(DatumsError):
        idle_step(env)
Example #7
0
def test_raise_an_error_when_stepping_past_done(make_ready_env, datums):
    datums.add().rows([1], [2])
    env = make_ready_env()
    list(until_done(env, [1, 0]))
    with pytest.raises(PortfolioResetNeeded):
        idle_step(env)
Example #8
0
def test_environment_is_done_at_the_last_observation(make_ready_env, datums):
    datums.add().rows([1], [2], [3])
    env = make_ready_env()
    assert not unpack_done(idle_step(env))
    assert unpack_done(idle_step(env))
Example #9
0
def test_resetting_the_environment_resets_observations(make_ready_env, datums):
    datums.add().rows([1], [2], [3])
    env = make_ready_env()
    assert_obs_eq(unpack_obs(idle_step(env)), [2])
    env.reset()
    assert_obs_eq(unpack_obs(idle_step(env)), [2])
Example #10
0
def test_stepping_the_environment_returns_next_observation(
        make_ready_env, datums):
    datums.add().rows([1], [2], [3])
    env = make_ready_env()
    assert_obs_eq(unpack_obs(idle_step(env)), [2])
    assert_obs_eq(unpack_obs(idle_step(env)), [3])