AI4Finance-Foundation / AI4Finance-Foundation/FinRL_Podracer

delta_stock comparing scaled action to unscaled available_amount

未关闭
#2 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Python
星标
507
派生
121
PR 合并指标
30 天内没有已合并 PR

描述

This doesn't look right to me when I stepped through it. My code includes Interactive Brokers commissions but othewise the same

```
if action > 0: # buy_stock
available_amount = self.account // adj
delta_stock = min(available_amount, action)
self.stocks[index] += delta_stock
if USE_IB_COST:
comm = max(delta_stock * TRANSACTION_FEE_PER_SHARE, 1.0)

else:
comm = (adj * delta_stock) * self.transaction_fee_percent

self.account -= adj * delta_stock + comm

elif self.stocks[index] > 0: # sell_stock
delta_stock = min(-action, self.stocks[index])
if USE_IB_COST:
comm = max(delta_stock * TRANSACTION_FEE_PER_SHARE, 1.0)

else:
comm = (adj * delta_stock) * self.transaction_fee_percent

self.account += adj * delta_stock - comm

```

A typical `action` value on the 3rd line above is 0.295 while the `available_amount` is unscaled at say 47778. So action will always be the minimum.

I assume this is your scaling

```
state = np.hstack((
self.account * 2 ** -16,
self.day_npy * 2 ** -8,
self.stocks * 2 ** -12,
), ).astype(np.float32)

```

Looks like a bug to me. Why not use MinMaxScaler?

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。