Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
b4601b7
partial random seeding
rrseelam Jun 26, 2024
a44edc3
full random seeding - must add test for consistency
rrseelam Jun 26, 2024
9719dc2
completed random seeding
rrseelam Jul 1, 2024
83777c7
prints for testing - to be removed later
rrseelam Jul 1, 2024
c5774b9
added random sampling to each agent to prevent identical private values
rrseelam Jul 1, 2024
9a1ec05
cleanup
rrseelam Jul 1, 2024
249e4e0
cleanup
rrseelam Jul 1, 2024
526750a
cleanup
rrseelam Jul 1, 2024
ecb2ba5
add more features to the observations
wyz2368 May 26, 2024
b1bef55
remove cash, reset PV and fundamental
wyz2368 May 31, 2024
7b07883
"fix reward function and include PV in obs for spoofer"
wyz2368 Jun 6, 2024
aa99468
"update static MM"
wyz2368 Jun 20, 2024
23850fc
"upload before running noMM and static MM"
wyz2368 Jun 21, 2024
ee8cf65
"upload before running noMM and static MM"
wyz2368 Jun 21, 2024
87bc526
"upload before running noMM and static MM"
wyz2368 Jun 21, 2024
e10b549
"upload before running noMM and static MM"
wyz2368 Jun 21, 2024
3dc821b
"remove from marketsim"
wyz2368 Jun 21, 2024
4a62ce7
"recover from marketsim"
wyz2368 Jun 21, 2024
05d0d25
"recover from marketsim"
wyz2368 Jun 21, 2024
7e17fd5
"add sys to import from parent class"
wyz2368 Jun 28, 2024
a428433
"add sys to import from parent class"
wyz2368 Jun 28, 2024
d8ea579
"add sys to import from parent class"
wyz2368 Jun 28, 2024
c6d25f2
"update bash"
wyz2368 Jun 28, 2024
3ccee8c
"update bash"
wyz2368 Jun 28, 2024
0455058
"update bash"
wyz2368 Jun 28, 2024
5c5304a
"update bash"
wyz2368 Jun 29, 2024
7e32b58
"update bash"
wyz2368 Jun 29, 2024
36fa608
"update reward"
wyz2368 Jul 27, 2024
8abf5af
partial random seeding
rrseelam Jun 26, 2024
f5f04ef
full random seeding - must add test for consistency
rrseelam Jun 26, 2024
e8fa6c2
completed random seeding
rrseelam Jul 1, 2024
55c36f3
added random sampling to each agent to prevent identical private values
rrseelam Jul 1, 2024
a466011
cleanup
rrseelam Jul 1, 2024
63998e2
rebased, changed seeding for PR
rrseelam Jul 31, 2024
7380cb3
Merge branch 'master' into random_seeding
rrseelam Aug 1, 2024
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
22 changes: 15 additions & 7 deletions marketsim/MM/simMM.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,12 @@ def __init__(self,
p=2,
k_min=5,
k_max=20,
max_position=100
max_position=100,
random_seed: int = None
):

random.seed(random_seed)
torch.seed(random.randint(1, 4096))

if shade is None:
shade = [250, 500]
Expand Down Expand Up @@ -71,8 +75,8 @@ def __init__(self,

self.markets = []
for _ in range(num_assets):
fundamental = LazyGaussianMeanReverting(mean=mean, final_time=sim_time+1, r=r, shock_var=shock_var)
self.markets.append(Market(fundamental=fundamental, time_steps=sim_time))
fundamental = LazyGaussianMeanReverting(mean=mean, final_time=sim_time+1, r=r, shock_var=shock_var, random_seed=random.randint(1, 4096))
self.markets.append(Market(fundamental=fundamental, time_steps=sim_time, random_seed=random.randint(1, 4096)))

self.agents = {}
for agent_id in range(num_background_agents):
Expand All @@ -85,8 +89,10 @@ def __init__(self,
market=self.markets[0],
q_max=q_max,
shade=shade,
pv_var=pv_var
))
pv_var=pv_var,
random_seed=random.randint(1,4096)
)
)

self.arrivals_MM[self.arrival_times_MM[self.arrival_index_MM].item()].append(self.num_background_agents)
self.arrival_index_MM += 1
Expand All @@ -106,15 +112,17 @@ def __init__(self,
p=p,
k_min=k_min,
k_max=k_max,
max_position=max_position
max_position=max_position,
random_seed=random.randint(1,4096)
)
else: # ladder policy
self.MM = MMAgent(
agent_id=self.num_background_agents,
market=self.markets[0],
K=K,
xi=xi,
omega=omega
omega=omega,
random_seed=random.randint(1,4096)
)
self.agents[self.num_background_agents] = self.MM

Expand Down
7 changes: 5 additions & 2 deletions marketsim/agent/extented_zi_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@


class ZIAgent(Agent):
def __init__(self, agent_id: int, market: Market, q_max: int, offset: float, eta: float, shade: List):
def __init__(self, agent_id: int, market: Market, q_max: int, pv_var: int, offset: float, eta: float, shade: List, random_seed: int = None):

random.seed(random_seed)

self.agent_id = agent_id
self.market = market
self.pv = PrivateValues(q_max)
self.pv = PrivateValues(q_max, pv_var, random_seed=random.randint(1,4096))
self.position = 0
self.offset = offset
self.eta = eta
Expand Down
8 changes: 6 additions & 2 deletions marketsim/agent/hbl_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,14 @@

class HBLAgent(Agent):
def __init__(self, agent_id: int, market: Market, q_max: int, shade: List, L: int, pv_var: float,
arrival_rate: float):
arrival_rate: float, random_seed: int = None):

random.seed(random_seed)
np.random.seed(random.randint(1,4096))

self.agent_id = agent_id
self.market = market
self.pv = PrivateValues(q_max, pv_var)
self.pv = PrivateValues(q_max, pv_var, random_seed=random.randint(1,4096))
self.position = 0
self.shade = shade
self.cash = 0
Expand Down
5 changes: 4 additions & 1 deletion marketsim/agent/market_maker.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@


class MMAgent(Agent):
def __init__(self, agent_id: int, market: Market, xi: float, K: int, omega: float):
def __init__(self, agent_id: int, market: Market, xi: float, K: int, omega: float, random_seed: int = None):

random.seed(random_seed)

self.agent_id = agent_id
self.market = market

Expand Down
6 changes: 5 additions & 1 deletion marketsim/agent/market_maker_beta.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,11 @@ def __init__(self,
p=2,
k_min=5,
k_max=20,
max_position=15):
max_position=15,
random_seed: int = None):

random.seed(random_seed)
np.random.seed(random.randint(1,4096))

self.agent_id = agent_id
self.market = market
Expand Down
9 changes: 6 additions & 3 deletions marketsim/agent/spoofer.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,13 @@


class SpoofingAgent(Agent):
def __init__(self, agent_id: int, market: Market, q_max: int, pv_var: float, order_size:int, spoofing_size: int, normalizers: dict):
def __init__(self, agent_id: int, market: Market, q_max: int, pv_var: float, order_size:int, spoofing_size: int, normalizers: dict, random_seed: int = None):

random.seed(random_seed)

self.agent_id = agent_id
self.market = market
self.pv = PrivateValues(q_max, pv_var)
self.pv = PrivateValues(q_max, pv_var, random_seed=random.randint(1,4096))
self.position = 0
self.spoofing_size = spoofing_size
self.order_size = order_size
Expand Down Expand Up @@ -75,7 +78,7 @@ def get_pos_value(self) -> float:
return self.pv.value_at_position(self.position)

def reset(self):
self.pv = PrivateValues(self.q_max, self.pv_var)
self.pv = PrivateValues(self.q_max, self.pv_var, random_seed=random.randint(1,4096))
self.position = 0
self.cash = 0
self.last_value = 0
Expand Down
10 changes: 7 additions & 3 deletions marketsim/agent/zero_intelligence_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,16 @@


class ZIAgent(Agent):
def __init__(self, agent_id: int, market: Market, q_max: int, shade: List, pv_var: float, eta: float = 1.0):
def __init__(self, agent_id: int, market: Market, q_max: int, shade: List, pv_var: float, eta: float = 1.0, random_seed: int = None):

random.seed(random_seed)
np.random.seed(random.randint(1, 4096))

self.agent_id = agent_id
self.market = market
self.q_max = q_max
self.pv_var = pv_var
self.pv = PrivateValues(q_max, pv_var)
self.pv = PrivateValues(q_max, pv_var, random_seed=random.randint(1, 4096))
self.position = 0
self.shade = shade
self.cash = 0
Expand Down Expand Up @@ -86,5 +90,5 @@ def get_pos_value(self) -> float:
def reset(self):
self.position = 0
self.cash = 0
self.pv = PrivateValues(self.q_max, self.pv_var)
self.pv = PrivateValues(self.q_max, self.pv_var, random_seed=random.randint(1, 4096))

7 changes: 5 additions & 2 deletions marketsim/event/event_queue.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@


class EventQueue:
def __init__(self, rand_seed: int = None):
self.rand = random.Random(rand_seed)
def __init__(self, random_seed: int = None):

random.seed(random_seed)

self.scheduled_activities = defaultdict(list)
self.current_time = 0

Expand All @@ -27,3 +29,4 @@ def get_current_time(self):

def set_time(self, t):
self.current_time = t

7 changes: 6 additions & 1 deletion marketsim/fundamental/constant.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
import random
import torch

from fundamental_abc import Fundamental


class Constant(Fundamental):
def __init__(self, final_time: int, value: float):
def __init__(self, final_time: int, value: float, random_seed: int = None):

random.seed(random_seed)
torch.manual_seed(random.randint(1, 4096))

self.fundamental_values = torch.ones(final_time, dtype=torch.float32)*value

def get_value_at(self, time: int) -> float:
Expand Down
7 changes: 6 additions & 1 deletion marketsim/fundamental/lazy_mean_reverting.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import random
import torch
from marketsim.fundamental.fundamental_abc import Fundamental

Expand All @@ -13,7 +14,11 @@ class LazyGaussianMeanReverting(Fundamental):
shock_var (float): The variance of the Gaussian shocks.
shock_mean (float, optional): The mean of the Gaussian shocks. Default is 0.
"""
def __init__(self, final_time: int, mean: float, r: float, shock_var: float, shock_mean: float = 0):
def __init__(self, final_time: int, mean: float, r: float, shock_var: float, shock_mean: float = 0, random_seed: int = None):

random.seed(random_seed)
torch.manual_seed(random.randint(1, 4096))

self.final_time = final_time
self.mean = torch.tensor(mean, dtype=torch.float32)
self.r = torch.tensor(r, dtype=torch.float32)
Expand Down
7 changes: 6 additions & 1 deletion marketsim/fundamental/mean_reverting.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
import random
import torch
from .fundamental_abc import Fundamental


class GaussianMeanReverting(Fundamental):
def __init__(self, final_time: int, mean: float, r: float, shock_var: float, shock_mean: float = 0):
def __init__(self, final_time: int, mean: float, r: float, shock_var: float, shock_mean: float = 0, random_seed: int = None):

random.seed(random_seed)
torch.manual_seed(random.randint(1, 4096))

self.final_time = final_time
self.mean = torch.tensor(mean, dtype=torch.float32)
self.r = torch.tensor(r, dtype=torch.float32)
Expand Down
Loading