# Import libraries
import numpy as np
import pandas as pd
import datetime as dt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import optuna
from sklearn.metrics import confusion_matrix
# from sklearn.metrics import plot_confusion_matrix
from sklearn.metrics import accuracy_score, confusion_matrix, ConfusionMatrixDisplay
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib as mpl
import matplotlib.ticker as ticker
# How to install talib https://tkstock.site/2018/08/22/post-593/
import talib as ta
# Evaluation function
def win_loss(Y_test, pred):
# Data framing of Series type data
test_y2 = pd.DataFrame(Y_test)
# Store forecast results
test_y2['pred'] = pred
# Define each cell of the confusion matrix
m1 = len(test_y2[(test_y2['Maguro']==1) & (test_y2['pred']==1)])
m2 = len(test_y2[(test_y2['Maguro']==1) & (test_y2['pred']==0)])
m3 = len(test_y2[(test_y2['Maguro']==1) & (test_y2['pred']==-1)])
m4 = len(test_y2[(test_y2['Maguro']==0) & (test_y2['pred']==1)])
m5 = len(test_y2[(test_y2['Maguro']==0) & (test_y2['pred']==0)])
m6 = len(test_y2[(test_y2['Maguro']==0) & (test_y2['pred']==-1)])
m7 = len(test_y2[(test_y2['Maguro']==-1) & (test_y2['pred']==1)])
m8 = len(test_y2[(test_y2['Maguro']==-1) & (test_y2['pred']==0)])
m9 = len(test_y2[(test_y2['Maguro']==-1) & (test_y2['pred']==-1)])
# Calculation of total number of transactions, percentage of large wins, percentage of large losses, and
try:
mall=m1+m2+m3+m4+m5+m6+m7+m8+m9
ma=m1+m3+m4+m6+m7+m9
mb=(m1+m9)/ma
mc=(m3+m7)/ma
win_loss_ratio = mb/mc
except ZeroDivisionError:
win_loss_ratio = 0
# Output of various model evaluation indices
return win_loss_ratio