Sebelum memulai tutorial ini, satu hal yang perlu ditegaskan adalah, tutorial ini tidak menjanjikan return dari trading saham.
Tujuan tutorial ini adalah eksperimental menggunakan Deep Reinforcement Learning untuk melakukan trading saham.
Agar bisa mengikuti tutorial ini, harus sudah memahami Teori dari Reinforcement Learning.
Disarankan untuk menggunakan Google Colab karena Anda tidak perlu instalasi library yang digunakan, yaitu TensorFlow 2 dan Pandas data reader.
Langkah pertama adalah import library yang digunakan
import math import random import numpy as np import pandas as pd import tensorflow as tf import matplotlib.pyplot as plt import pandas_datareader as data_reader from tqdm import tqdm_notebook, tqdm from collections import deque
Selanjutnya kita buat class untuk membuat struktur dari AI Trader boot.
Fungsi pertama dari class adalah constructor yang akan dijalankan setiap kali class dibuat. Parameter yang diperlukan adalah
- state_size
- action_space, menunjukan aksi dari bot yaitu Stay, Buy atau Sell.
- model_name, isi sesuai kebutuhan Anda, pada tutorial digunakan nama AITrader.
class AI_Trader():
def __init__(self, state_size, action_space=3, model_name="AITrader"): #Stay, Buy, Sell
self.state_size = state_size
self.action_space = action_space
self.memory = deque(maxlen=2000)
self.inventory = []
self.model_name = model_name
self.gamma = 0.95
self.epsilon = 1.0
self.epsilon_final = 0.01
self.epsilon_decay = 0.995
self.model = self.model_builder()
Fungsi init akan melakukan inisialisasi parameter yang dibutuhkan dari class. Berikut beberapa parameter yang perlu diperhatikan
self.memory = deque(maxlen=2000)
deque adalah library Deque (Doubly Ended Queue) diimplementasikan menggunakan module collections. Berfungsi seperti list, namun lebih cepat dalam melakukan proses append dan pop operations.
deque(maxlen=2000), berarti kita hanya akan menampung maksimum 2000 element.
self.inventory = []
inventory untuk menyimpan data saham yang sudah dibeli. Perhatian: Kita hanya bisa menjual saham yang sudah pernah kita beli.
self.gamma = 0.95
gamma berguna untuk memaksimalkan current reward terhadap long time reward.
self.epsilon = 1.0
epsilon untuk menentukan action, apakah random atau menggunakan model action. Nilai awal adalah 1, yang berarti semua action akan dilakukan random, karena logikanya model belum melalui proses training saat pertama kali dijalankan.
Seiring dengan proses training, nilai epsilon akan kita kurangi.
self.epsilon_final = 0.01
epsilon_final adalah pembatas proses pengurangan nilai epsilon diatas. Jika sudah mencapai nilai epsilon_final, nilai epsilon tidak akan dikurangi lagi.
self.epsilon_decay = 0.995
epsilon_decay untuk menentukan kecepatan model dalam mengurangi nilai epsilon.
Pada modul selanjutnya kita akan membuat fungsi kedua dari class, yaitu otak dari AI trader.