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
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
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
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
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
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)
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)
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))
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])
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])