Upload folder using huggingface_hub
Browse files- server/finenv_environment.py +12 -6
server/finenv_environment.py
CHANGED
|
@@ -73,7 +73,7 @@ class FinenvEnvironment(Environment):
|
|
| 73 |
|
| 74 |
return FinenvObservation(
|
| 75 |
stock=self.stock,
|
| 76 |
-
market=self.market.value,
|
| 77 |
price=self.stock_price,
|
| 78 |
shares=self.shares,
|
| 79 |
cash=self.cash,
|
|
@@ -96,12 +96,17 @@ class FinenvEnvironment(Environment):
|
|
| 96 |
|
| 97 |
|
| 98 |
if action.type == "init":
|
|
|
|
|
|
|
|
|
|
| 99 |
self.stock = action.stock
|
| 100 |
-
self.market = StockExchangeMarket(action.market.
|
|
|
|
|
|
|
| 101 |
|
| 102 |
self.initial_cash = action.initial_cash or 10000.0
|
| 103 |
self.max_steps = action.max_steps or 100
|
| 104 |
-
self.task = action.task_type.
|
| 105 |
|
| 106 |
self.cash = self.initial_cash
|
| 107 |
self.shares = 0
|
|
@@ -162,7 +167,7 @@ class FinenvEnvironment(Environment):
|
|
| 162 |
new_value = self.cash + self.shares * self.stock_price
|
| 163 |
reward = (new_value - old_value) / self.initial_cash
|
| 164 |
reward = max(min(reward, 1.0), -1.0)
|
| 165 |
-
|
| 166 |
|
| 167 |
done = self._state.step_count >= self.max_steps
|
| 168 |
if done:
|
|
@@ -170,15 +175,16 @@ class FinenvEnvironment(Environment):
|
|
| 170 |
profit = final_value - self.initial_cash
|
| 171 |
|
| 172 |
if self.task == "easy":
|
| 173 |
-
score = min(max(profit / 0.01*self.initial_cash, 0), 1)
|
| 174 |
|
| 175 |
elif self.task == "medium":
|
| 176 |
-
score = min(max(profit / 0.05*self.initial_cash, 0), 1)
|
| 177 |
|
| 178 |
elif self.task == "hard":
|
| 179 |
score = min(max((profit / self.initial_cash) / 0.1, 0), 1)
|
| 180 |
|
| 181 |
reward = score
|
|
|
|
| 182 |
|
| 183 |
return FinenvObservation(
|
| 184 |
stock=self.stock,
|
|
|
|
| 73 |
|
| 74 |
return FinenvObservation(
|
| 75 |
stock=self.stock,
|
| 76 |
+
market=self.market.value if self.market else None,
|
| 77 |
price=self.stock_price,
|
| 78 |
shares=self.shares,
|
| 79 |
cash=self.cash,
|
|
|
|
| 96 |
|
| 97 |
|
| 98 |
if action.type == "init":
|
| 99 |
+
if not action.stock or not action.market:
|
| 100 |
+
raise ValueError("Stock and market required for init")
|
| 101 |
+
|
| 102 |
self.stock = action.stock
|
| 103 |
+
self.market = StockExchangeMarket(action.market.lower())
|
| 104 |
+
|
| 105 |
+
|
| 106 |
|
| 107 |
self.initial_cash = action.initial_cash or 10000.0
|
| 108 |
self.max_steps = action.max_steps or 100
|
| 109 |
+
self.task = action.task_type.lower() if action.task_type else "easy"
|
| 110 |
|
| 111 |
self.cash = self.initial_cash
|
| 112 |
self.shares = 0
|
|
|
|
| 167 |
new_value = self.cash + self.shares * self.stock_price
|
| 168 |
reward = (new_value - old_value) / self.initial_cash
|
| 169 |
reward = max(min(reward, 1.0), -1.0)
|
| 170 |
+
reward=float(reward)
|
| 171 |
|
| 172 |
done = self._state.step_count >= self.max_steps
|
| 173 |
if done:
|
|
|
|
| 175 |
profit = final_value - self.initial_cash
|
| 176 |
|
| 177 |
if self.task == "easy":
|
| 178 |
+
score = min(max(profit / (0.01 * self.initial_cash), 0), 1)
|
| 179 |
|
| 180 |
elif self.task == "medium":
|
| 181 |
+
score = min(max(profit / (0.05 * self.initial_cash), 0), 1)
|
| 182 |
|
| 183 |
elif self.task == "hard":
|
| 184 |
score = min(max((profit / self.initial_cash) / 0.1, 0), 1)
|
| 185 |
|
| 186 |
reward = score
|
| 187 |
+
reward=float(reward)
|
| 188 |
|
| 189 |
return FinenvObservation(
|
| 190 |
stock=self.stock,
|