在之前我在「超級簡略的單股買賣模擬器 」中實現了一個非常簡單的股票買賣模擬器,今天我們要重起爐灶,讓這東西來評斷我們的預測結果好不好XD
有時真是佩服自己的機智 哼哼哼 :)
當時實現的內容就是我將一筆一筆的action
和「當下的price
」輸入進去,這個env
每次的action
都會更新它的「資產(assets)」,那麼我們今天就來把預測結果和真實的price
依照順序丟進去,不就可以了嗎?
再次佩服我的機智 (其實從一開始就計畫了XD
當沖就是只做當天買賣的意思,我們對我們的環境初始設一個「現有的資產」讓他自己投資看看
我真的等不及想看看結果了
好的,首先測試一天
github
)from tools import stockEvn_single as single_env
env = single_env()
test_sc = MinMaxScaler()
test_sc.updatePatameter(sc_parameter)
def predict_once(index):
info = env.getInfo()
result = [info['assets']]
stock_value = [info['stock value']]
test_x, test_y, sc_parameter = create_dataset(path=paths[index], input_days=input_days, output_days=output_days)
test_x[np.isnan(test_x)] = 0
model_pred = model.predict(test_x)
pred = np.argmax(model_pred, axis=-1)
test_real = test_x[:, -1, 0]
test_real = test_sc.getInverseData(test_real)
output_action = pred
for i, action in enumerate(output_action):
env.doAction(test_real[i], action, model_pred[i, action])
info = env.getInfo()
result.append(info['assets'])
stock_value.append(info['stock value'])
env.doAction(test_real[-1], 0, 1)
return result, stock_value
assets, stock_value = predict_once(1700)
# Visualising the results
plt.plot(assets, color = 'blue', label = 'assets')
# plt.plot(stock_value, color = 'red', label = 'stock value')
# plt.plot(output_prices, color = 'blue', label = 'Predicted Google Stock Price')
plt.title('Prediction')
plt.xlabel('Time(moment)')
plt.ylabel('Real')
plt.legend()
plt.show()
- | LOSS | pred=1500 |
---|---|---|
結果 |
參數
結果
喔挖屋,太猛了吧? 是賺的耶 (其實我怕我是不是天數之類的又shift錯了,目前是看不出來Orz
但這個結果只能代表這一天,所以我們把所有的天數加進來看看XD
因為我總共的dataset
有1901
筆,而用於訓練和驗證則用掉1500
筆,所以最後測試我用從第1501
至1900
筆。來看看結果吧 !
等...等等...真的假的?
其實我真的很不確定我到底天數的shift
有沒有問題XD,不過儘管這是真的,但其中並未考慮「手續費」問題和「買賣量」問題,是單純從「價格」面著手而已,所以不要太興奮Orz
方法
選擇參數
獨立參數
offset
= 0.015結果
- | 方法一 | 方法二 |
---|---|---|
結果 |
等...「方法二」那什麼東西
其實一開始看我也看不是很懂,想說是不是哪裡資料又用錯了...然後仔細一看y
軸單位...怎麼是1e8
?所以...我看了什麼? 1000滾到2億? 這不可能啊? 方法一是五倍,方法二是十的五次方倍? 花惹發?
想太多
我目前的env
只是一個簡單的實現,但其並未考慮到掛牌量的問題和手續費問題,接下來可以對env
擴充功能後再來看一下實際效果XD
希望不會反轉成虧的Orz
env_01_model_02_LSTM_base_action_predict
env_01_model_04_LSTM_base_action_predict