Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions custom_otree_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@ def initialize_many_from_folder(cls, directory):
'test_input_file': ('tests', 'test_input_file'),
'peg_proportion': ('parameters', 'peg-proportion'),
'post_session_delay': ('session', 'post-session-delay'),
'short_delay': ('parameters', 'short-delay'),
'long_delay': ('parameters', 'long-delay')
}
}

8 changes: 6 additions & 2 deletions hft/market_environments.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
config_field_type={
'initial_endowment': int,
'speed_cost': float,
'technology_unit_cost': float
'technology_unit_cost': float,
'short_delay': float,
'long_delay': float,
},
fields_to_scale={
'initial_endowment': 10000,
Expand All @@ -27,7 +29,9 @@
'player': {
'initial_endowment': 'cash',
'speed_unit_cost': 'speed_unit_cost',
'default_role': 'default_role'
'default_role': 'default_role',
'short_delay': 'short_delay',
'long_delay': 'long_delay',
}
},
checkpoint={
Expand Down
11 changes: 5 additions & 6 deletions hft/trader.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,9 +138,6 @@ def delay(self, order_delay_time):

class ELOTrader(BaseTrader):

default_delay = 0.5
short_delay = 0.1
long_delay = 0.5
tracked_market_facts = ('best_bid', 'volume_at_best_bid', 'next_bid', 'best_offer',
'volume_at_best_offer', 'next_offer', 'signed_volume', 'e_best_bid',
'e_best_offer', 'e_signed_volume', 'tax_rate', 'reference_price')
Expand All @@ -159,6 +156,8 @@ class ELOTrader(BaseTrader):

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.short_delay = kwargs.get('short_delay', self.default_delay)
self.long_delay = kwargs.get('long_delay', self.default_delay)
self.technology_subscription = Subscription(
'speed_tech', self.player_id, kwargs.get('speed_unit_cost', 0))
self.sliders = {'slider_a_x': 0, 'slider_a_y': 0, 'slider_a_z': 0}
Expand All @@ -176,10 +175,10 @@ def set_initial_strategy(self, slider_a_x, slider_a_y, slider_a_z, role, speed_o
self.trader_role = self.trader_state_factory.get_trader_state(role)
self.delayed = speed_on
if speed_on:
self.delay = self.trader_role.short_delay
self.delay = self.short_delay
self.technology_subscription.activate()
else:
self.delay = self.trader_role.long_delay
self.delay = self.long_delay
self.technology_subscription.deactivate()
speed_cost = self.technology_subscription.invoice()
self.speed_cost += speed_cost
Expand Down Expand Up @@ -337,4 +336,4 @@ def order_canceled(self, event):
def order_executed(self, event):
super().order_executed(event)
self.midpoint_peg = event.message.midpoint_peg


11 changes: 5 additions & 6 deletions hft/trader_state.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,7 @@ def cancel_all_orders(self, trader, event):

class ELOTraderState(TraderState):

short_delay = 0.1
long_delay = 0.5
default_delay = 0.5
event_dispatch = {
'speed_change': 'speed_technology_change',
'role_change': 'state_change',
Expand All @@ -76,19 +75,19 @@ def state_change(self, trader, event):
trader.disable_offer = False
log.debug('trader %s: offers enabled.' % trader.tag)

def speed_technology_change(self, trader, event, short_delay=short_delay,
long_delay=long_delay, **kwargs):
def speed_technology_change(self, trader, event, short_delay=default_delay,
long_delay=default_delay, **kwargs):
try:
new_state = event.message.value
except AttributeError:
new_state = kwargs['value']
trader.delayed = new_state
if new_state is True:
trader.delay = short_delay
trader.delay = trader.short_delay
trader.technology_subscription.activate()
log.debug('player %s subscribes to technology.' % trader.player_id)
else:
trader.delay = long_delay
trader.delay = trader.long_delay
trader.technology_subscription.deactivate()
speed_cost = trader.technology_subscription.invoice()
trader.speed_cost += speed_cost
Expand Down
2 changes: 1 addition & 1 deletion hft/utility.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ def ensure_results_ready(subsession_id, market_id, record_cls, num_players,
elo_args_fields = (
'subsession_id', 'market_id', 'id', 'id_in_group', 'default_role',
'exchange_host', 'exchange_port')
elo_kwargs_fields = ('cash', 'speed_unit_cost')
elo_kwargs_fields = ('cash', 'speed_unit_cost', 'short_delay', 'long_delay')
def elo_otree_player_converter(otree_player):
args = [getattr(otree_player, field) for field in elo_args_fields]
kwargs = {field: getattr(otree_player, field) for field in elo_kwargs_fields}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ parameters:
k-reference-price: 0.7
k-signed-volume: 0.5
tax-rate: 0.1
short-delay: 0.05
long-delay: 0.25

session:
session-name: ELO_Development_Session_3_rounds_3_150_sec_sv_on
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ parameters:
k-reference-price: 0.7
k-signed-volume: 0.5
tax-rate: 0.1
short-delay: 0.05
long-delay: 0.25

session:
session-name: ELO_Development_Session_3_rounds_3_150_sec_sv_off
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ parameters:
k-reference-price: 0.7
k-signed-volume: 0.5
tax-rate: 0.1
short-delay: 0.05
long-delay: 0.25

session:
session-name: ELO_Development_Session_3_rounds_1_150_sec
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ parameters:
k-reference-price: 0.2
k-signed-volume: 0.5
tax-rate: 0.1
short-delay: 0.05
long-delay: 0.25

session:
session-name: ELO_Session_3_rounds_1_180_sec
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ parameters:
k-reference-price: 0.7
k-signed-volume: 0.5
tax-rate: 0.1
short-delay: 0.05
long-delay: 0.25

session:
session-name: ELO_Development_Session_3_rounds_1_150_sec_8_traders
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ parameters:
k-reference-price: 0.7
k-signed-volume: 0.5
tax-rate: 0.1
short-delay: 0.05
long-delay: 0.25

session:
session-name: ELO_Development_Session_3_rounds_3_150_sec_sv_on_FBA
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ parameters:
k-reference-price: 0.2
k-signed-volume: 0.5
tax-rate: 0.1
short-delay: 0.05
long-delay: 0.25

session:
session-name: FBA_ELO_Session_3_rounds_1_180_sec
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ parameters:
k-signed-volume: 0.5
tax-rate: 0.1
peg-proportion: 0.5
short-delay: 0.05
long-delay: 0.25

session:
session-name: ELO_Development_Session_3_rounds_3_150_sec_sv_off_iex
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ parameters:
k-signed-volume: 0.5
tax-rate: 0.1
peg-proportion: 0.5

short-delay: 0.05
long-delay: 0.25

session:
session-name: IEX_ELO_Session_3_rounds_1_180_sec
Expand Down