Melanjutkan dari modul sebelumnya, pada modul ini kita akan membuat beberapa helper function untuk kebutuhan project ini.
Sigmoid function berguna untuk menghitung perbedaan harga saham.
def sigmoid(x): return 1 / (1 + math.exp(-x))
Fungsi berikutnya adalah agar harga saham dapat ditampilkan dengan format yang mudah dibaca.
def stocks_price_format(n):
if n < 0:
return "- $ {0:2f}".format(abs(n))
else:
return "$ {0:2f}".format(abs(n))
Fungsi berikutnya adalah data loader. Untuk load data saham, kita menggunakan library DataReader dari Pandas. Data source free dapat diperoleh dari yahoo.
Untuk kebutuhan tutorial ini, data yang akan digunakan adalah data harga close. Anda bisa mencoba perintah berikut untuk melihat gambaran data yang kita tarik dari yahoo.
dataset = data_reader.DataReader('AAPL', data_source="yahoo")

def dataset_loader(stock_name): #Complete the dataset loader function dataset = data_reader.DataReader(stock_name, data_source="yahoo") start_date = str(dataset.index[0]).split()[0] end_date = str(dataset.index[-1]).split()[0] close = dataset['Close'] return close
Fungsi terakhir untuk tutorial ini adalah fungsi state creator, fungsi ini menentukan state (aksi beli, jual, atau hold) berdasarkan perubahan harga dalam jangka window_size, misalnya perubahan harga saham Apple dalam 5 hari.
def state_creator(data, timestep, window_size):
starting_id = timestep - window_size + 1
if starting_id >= 0:
windowed_data = data[starting_id:timestep+1]
else:
windowed_data = - starting_id * [data[0]] + list(data[0:timestep+1])
state = []
for i in range(window_size - 1):
state.append(sigmoid(windowed_data[i+1] - windowed_data[i]))
return np.array([state])
Sampai disini fungsi helper sudah selesai dibuat. Pada modul berikutnya kita akan mulai melakukan training model.