Eksperimen Trading Saham Menggunakan Deep Reinforcement Learning – 1

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.

Sharing is caring:

Leave a Comment