\documentclass[11pt]{article} \usepackage[margin=0.5in]{geometry} % Core packages \usepackage{amsmath,amssymb} \usepackage{tikz-cd,enumitem} \usepackage{xcolor} \usepackage{multicol} % Paragraphs \setlength{\parindent}{0pt} \setlength{\parskip}{1\baselineskip} \title{Simulated Trades} \author{algorembrant} \date{\today} \begin{document} \maketitle \section{Notations} Let: \begin{align*} t &= \text{be the \textcolor{red}{time-index}}\\ \overrightarrow{t} &= \text{be the \textcolor{red}{time-index from lookahead}, where $\overrightarrow{t} \in \{t+n\}$, where $n$ is additive indexer, and $n \in \{0,1,2,\ldots,\infty\}$}, \\ \overline{t} &= \text{be the any time-index in between $t$ and $\overrightarrow{t}$, where $t \le \overline{t} \le \overrightarrow{t}$} \\ E_t &= \text{be the \textcolor{red}{Entry Price} at $t$} \\ \Omega_{\overrightarrow{t}} &= \text{be the \textcolor{red}{Stoploss Price} at $\overrightarrow{t}$} \\ T_{\overrightarrow{t}} &= \text{be the \textcolor{red}{Takeprofit Price} at $\overrightarrow{t}$} \\ R_{\overrightarrow{t}} &= \text{be the \textcolor{red}{Recovery Price} at $\overrightarrow{t}$} \\ A_{\overrightarrow{t}} &= \text{be the \textcolor{red}{Adverseloss Price} at $\overrightarrow{t}$} \\ Q_{\overrightarrow{t}} &= \text{be the \textcolor{red}{$A_{\overrightarrow{t}}:\Omega_{\overrightarrow{t}}$ Ratio} or Q-Ratio at $\overrightarrow{t}$} \\ W_{\overrightarrow{t}} &= \text{be the \textcolor{red}{$R_{\overrightarrow{t}}:T_{\overrightarrow{t}}$ Ratio} or W-Ratio at $\overrightarrow{t}$} \\ Y_{\overrightarrow{t}} &= \text{be the \textcolor{red}{$\Omega_{\overrightarrow{t}}:T_{\overrightarrow{t}}$ Ratio} or Y-Ratio at $\overrightarrow{t}$} \\ V_t &= \{E_t, \Omega_{\overrightarrow{t}}, T_{\overrightarrow{t}}, R_{\overrightarrow{t}}, A_{\overrightarrow{t}}, Q_{\overrightarrow{t}}, W_{\overrightarrow{t}}, Y_{\overrightarrow{t}}\}, \text{ be the \textcolor{red}{Set of all Values}, where the values at $\overrightarrow{t}$ is being caried by $t$} \\ P &\in \{H,O,C,L\} = \text{be the \textcolor{red}{Price} and \{High,Open,Close,Low\} repectively} \\ \Omega_t &= \text{be the $\Omega_{\overrightarrow{t}}$ being brought back to time-index $t$ } \\ T_t &= \text{be the $T_{\overrightarrow{t}}$ being brought back to time-index $t$ } \\ R_t &= \text{be the $R_{\overrightarrow{t}}$ being brought back to time-index $t$ } \\ A_t &= \text{be the $A_{\overrightarrow{t}}$ being brought back to time-index $t$ } \\ Q_t &= \text{be the $Q_{\overrightarrow{t}}$ being brought back to time-index $t$ } \\ W_t &= \text{be the $W_{\overrightarrow{t}}$ being brought back to time-index $t$ } \\ Y_t &= \text{be the $Y_{\overrightarrow{t}}$ being brought back to time-index $t$ } \\ V_t &= \{E_t, \Omega_t, T_t, R_t, A_t, Q_t, W_t, Y_t\} \text{ is the same as }\{E_t, \Omega_{\overrightarrow{t}}, T_{\overrightarrow{t}}, R_{\overrightarrow{t}}, A_{\overrightarrow{t}}, Q_{\overrightarrow{t}}, W_{\overrightarrow{t}}, Y_{\overrightarrow{t}}\} \\ \mathcal{T}_t^{null} &= \text{be the null or invalid trade which represents as no trade at time-index $t$ was observed} \\ \mathcal{T}_t^{valid} &= \text{be the valid trade which represents as a eligible trade (either buyside or sellside) at time-index $t$ was observed} \\ J^T_{\overrightarrow{t}} &= \text{be the timeout time for Takeprofit target, from lookahead $\overrightarrow{t}$} \\ J^R_{\overrightarrow{t}} &= \text{be the timeout time for Recovery target, from lookahead $\overrightarrow{t}$} \\ F^T_{\overrightarrow{t}} &= \text{be the Close Price of timeout time for Takeprofit target, from lookahead $\overrightarrow{t}$} \\ F^R_{\overrightarrow{t}} &= \text{be the Close Price of timeout time for Recovery target, from lookahead $\overrightarrow{t}$} \\ J^T_t &= \text{be the $J^T_{\overrightarrow{t}}$ being brought back to time-index $t$} \\ J^R_t &= \text{be the $J^R_{\overrightarrow{t}}$ being brought back to time-index $t$} \\ F^T_t &= \text{be the $F^T_{\overrightarrow{t}}$ being brought back to time-index $t$} \\ F^R_t &= \text{be the $F^R_{\overrightarrow{t}}$ being brought back to time-index $t$} \\ \end{align*} \newpage \section{Values at time-index $t$} \subsection{Entry Price} By default, we will use 3-minute timeframe. Supposed its always to Buy and Sell at $E_t$ (we sell buy and sell at the Open Price based on the previous bar's Close price, therefore $E_t = O_t$) at the same time-index. \subsection{Stoploss Price} We start by calculating our \textcolor{red}{average of max imaginary adverse excursion}, which is formalized as: \begin{align} \omega &= \frac{1}{K}\sum_{t=0}^{K-1} \begin{cases} \text{if $O_{-t} < C_{-t}$}, \quad \max\left(O_{-t} - L_{-t},|O_{-t}-C_{{-t}-1}|,|L_{-t}-C_{{-t}-1}|\right)\\ \text{if $O_{-t} > C_{-t}$}, \quad \max\left(|O_{-t} - H_{-t}|,|O_{-t}-C_{{-t}-1}|,|H_{-t}-C_{{-t}-1}|\right) \end{cases} \end{align} That captures the average of wick and gaps within the total lookback $\textcolor{blue}{K}$, the default value is $K=20$ with a step of $1$, which does not include high-low ranges. Therefore the stoploss placement is: \begin{align} \Omega_t &= \begin{cases} \text{for $E_t^{buyside}$ }, \quad O_t -(\omega_{t-1} \cdot s_t\cdot m) \\ \text{for $E_t^{sellside}$ }, \quad O_t +(\omega_{t-1} \cdot s_t \cdot m) \end{cases},\quad \text{\textcolor{red}{Stoploss Price}} \end{align} Where $s_t$ is the live spread at the time-index which is provided by the broker in real time, $\textcolor{blue}{m}$ as multiplier, the default value is $m=10$ with a step of $5$. The index -1 from $\omega_{0-1}$ makes our projected stoploss valid and not exposed to lookahead bias. \section{Values at time-index lookahead $\overrightarrow{t}$} \subsection{Recovery Price} We start by calculating the $P^{\text{extreme}}_{\overline{t}}$ while the time moves forward. \begin{align} P^{\text{extreme}}_{\overline{t}} = \begin{cases} \text{for } E_t^{\text{buyside}}, & \displaystyle\max_{t \le \overline{t} \le \overrightarrow{t}} [\max P_{\overline{t}}] \\ \text{for } E_t^{\text{sellside}}, & \displaystyle\min_{t \le \overline{t} \le \overrightarrow{t}} [\min P_{\overline{t}}] \end{cases}, \quad \text{where $P_{\overline{t}} \in \{H_{\overrightarrow{t}}, O_{\overrightarrow{t}}, C_{\overrightarrow{t}}, L_{\overrightarrow{t}}\}$} \end{align} \begin{align} S_{\overrightarrow{t}} = \begin{cases} \text{for } E_t^{\text{buyside}}, & \left| \Omega_t - \displaystyle\max_{t \le \overline{t} \le \overrightarrow{t}} [\max P_{\overline{t}}] \right| \times d + \Omega_t \\ \text{for } E_t^{\text{sellside}}, & \left| \Omega_t - \displaystyle\min_{t \le \overline{t} \le \overrightarrow{t}} [\min P_{\overline{t}}] \right| \times d - \Omega_t \\ \end{cases}, \quad \text{Stop Creterion} \end{align} Where $\textcolor{blue}{d}$ is the divisor, and the default value is $d = 0.50$ with a step of $0.10$. The $S_{\overline{t}}$ is used as creteria, and if the price deeps beyond the boundary then we register that time as: \begin{align} R_{\overrightarrow{t}} = \begin{cases} \text{for $E_t^{buyside}$ }, & [\min P_{\overline{t}}] < S_{\overrightarrow{t}}^{buyside} \implies C_{\overrightarrow{t}} \\ \text{for $E_t^{sellside}$ }, & [\max P_{\overline{t}}] > S_{\overrightarrow{t}}^{sellside} \implies C_{\overrightarrow{t}} \end{cases}, \quad \text{\textcolor{red}{Recovery Price}} \end{align} \subsection{Takeprofit Price} Now that we have our $R_{\overrightarrow{t}}$, whe can now calculate for the best takeprofit levels, formalized as: \begin{align} T_{\overrightarrow{t}} = \begin{cases} \text{for $E_t^{buyside}$ }, & \displaystyle\left(\max_{t_{E_t} \le \overline{t} \le \overrightarrow{t}_{R_{\overrightarrow{t}}}} [\max P_{\overline{t}}] \right) - (s_t \times l) \\ \text{for $E_t^{sellside}$ }, & \displaystyle\left(\min_{t_{E_t} \le \overline{t} \le \overrightarrow{t}_{R_{\overrightarrow{t}}}} [\min P_{\overline{t}}] \right) + (s_t \times l) \end{cases}, \quad \text{\textcolor{red}{Takeprofit Price}} \end{align} Where $l$ is multiplier and the default value is $l = 2$, with a step of 1. \subsection{Adverse Price} Now that we have our $T_{\overline{t}}$, we can now calculate for the best adverseloss levels, formalized as: \begin{align} A_{\overrightarrow{t}} = \begin{cases} \text{for $E_t^{buyside}$ }, & \displaystyle\min_{t_{E_t} \le \overline{t} \le \overrightarrow{t}_{T_{\overrightarrow{t}}}} [\min P_{\overline{t}}] \\ \text{for $E_t^{sellside}$ }, & \displaystyle\max_{t_{E_t} \le \overline{t} \le \overrightarrow{t}_{T_{\overrightarrow{t}}}} [\max P_{\overline{t}}] \end{cases}, \quad \text{\textcolor{red}{Adverseloss Price}} \end{align} \subsection{Q-Ratio or $A_{\overrightarrow{t}}:\Omega_{\overrightarrow{t}}$ Ratio} And the ratio of Adverse Price relative to Stoploss Price is formalized as: \begin{align} Q_{\overrightarrow{t}} = \begin{cases} \text{for $E_t^{buyside}$ }, \quad \left|\displaystyle\frac{E_t - A_{\overrightarrow{t}}^{buyside}}{E_t - \Omega_t^{buyside}} \right| \\ \text{for $E_t^{sellside}$ }, \quad \left| \displaystyle\frac{E_t - A_{\overrightarrow{t}}^{sellside}}{E_t - \Omega_t^{sellside}} \right| \end{cases}, \quad \text{\textcolor{red}{$A_{\overrightarrow{t}}:\Omega_{\overrightarrow{t}}$ Ratio}} \end{align} \subsection{W-Ratio or $R_{\overrightarrow{t}}:T_{\overrightarrow{t}}$ Ratio} And the ratio of Revovery Price relative to the Takeprofit Price is formalized as: \begin{align} W_{\overrightarrow{t}} = \begin{cases} \text{for $E_t^{buyside}$ }, \quad \left| \displaystyle\frac{E_t - R_{\overrightarrow{t}}^{buyside}}{E_t - T_{\overrightarrow{t}}^{buyside}} \right| \\ \text{for $E_t^{sellside}$ }, \quad \left| \displaystyle\frac{E_t - R_{\overrightarrow{t}}^{sellside}}{E_t - T_{\overrightarrow{t}}^{sellside}} \right| \end{cases}, \quad \text{\textcolor{red}{$R_{\overrightarrow{t}}:T_{\overrightarrow{t}}$ Ratio}} \end{align} \subsection{Y-Ratio or $\Omega_{\overrightarrow{t}}:T_{\overrightarrow{t}}$ Ratio} And the ratio of Stoploss Price relative to the Takeprofit Price is formalized as: \begin{align} Y_{\overrightarrow{t}} = \begin{cases} \text{for $E_t^{buyside}$ }, \quad \left| \displaystyle\frac{E_t - \Omega_{\overrightarrow{t}}^{buyside}}{E_t - T_{\overrightarrow{t}}^{buyside}} \right| \\ \text{for $E_t^{sellside}$ }, \quad \left| \displaystyle\frac{E_t - \Omega_{\overrightarrow{t}}^{sellside}}{E_t - T_{\overrightarrow{t}}^{sellside}} \right| \end{cases}, \quad \text{\textcolor{red}{$\Omega_{\overrightarrow{t}}:T_{\overrightarrow{t}}$ Ratio}} \end{align} \section{Set of Values at time-index $t$} Therefore we can now contruct our $V_t$ which is a set of all values from time-index $t$ and time-index lookahed $\overrightarrow{t}$, amd we formalize it as: \begin{align} V_t = \{E_t, \Omega_{\overrightarrow{t}}, T_{\overrightarrow{t}}, R_{\overrightarrow{t}}, A_{\overrightarrow{t}}, Q_{\overrightarrow{t}}, W_{\overrightarrow{t}}, Y_{\overrightarrow{t}}\}, \quad \text{\textcolor{red}{Set of all Values}} \end{align} Notice that $V$ has a time-index of $t$. therefore it carries all values from both $t$ and $\overrightarrow{t}$. In addition, by using a dataframe-related terms, the $V_t$ is a set of all values written in the same row as \{datetime,open,high,low,close,tick volume\} csv variables. The same row. The same bar. Moving on, this methodology lags far more than a conventional indicators. Therefore it is best use as a new form of dataset rather than a trading signal. Like for example, a dataset which consists of best prices to order at that time, for engineering the Reward Function of a Reinforecement Learning Model. \section{The Valid $V_t$ at time-index $t$} \subsection{Deviating from $E_t$} First, we need to find the deviation values of Price-based elements such as $\{\Omega_{\overrightarrow{t}}, T_{\overrightarrow{t}}, R_{\overrightarrow{t}}, A_{\overrightarrow{t}}\}$ which are deviated from the $E_t$. Let $v$ be the element of $V_t$. Therefore we formalize it as: \begin{align} \text{Dev}(v) = \begin{cases} \left| E_t - \Omega_{\overrightarrow{t}} \right|, \quad \text{Stoploss Deviation} \\ \left| E_t - T_{\overrightarrow{t}} \right|, \quad \text{Takeprofit Deviation} \\ \left| E_t - R_{\overrightarrow{t}} \right|, \quad \text{Recovery Deviation} \\ \left| E_t - A_{\overrightarrow{t}} \right|, \quad \text{Adverse Deviation} \\ \end{cases} \end{align} \subsection{Simplifiying the Elements of $V_t$} Since all Elelements of $V_t$ with an index of $\overrightarrow{t}$ is being carried back to the same time-index as the $E_t$ which is $t$, therefore we could simplify is as: \begin{align} V_t = \{E_t, \Omega_{\overrightarrow{t}}, T_{\overrightarrow{t}}, R_{\overrightarrow{t}}, A_{\overrightarrow{t}}, Q_{\overrightarrow{t}}, W_{\overrightarrow{t}}, Y_{\overrightarrow{t}}\} \implies V_t = \{E_t, \Omega_t, T_t, R_t, A_t, Q_t, W_t, Y_t\} \end{align} \subsection{Assigning Points} Becauase all elements are simplified. Then the process goes like this: at time-index $t$, there will be both buy and sell entry, and each will calculated its corresponding elements to get their own $V_t$. But we care only one side (buyside $bs$ or sellside $ss$) which will have the Valid $V_t$. \begin{align} \text{Point }(v^{bs},v^{ss}) = \begin{cases} (E_t^{bs} \gtreqless E_t^{ss}) &\implies (1,1) \\ (\Omega_t^{{bs},{Dev}} > \Omega_t^{{ss},{Dev}}) &\implies (0,1) \\ (\Omega_t^{{bs},{Dev}} < \Omega_t^{{ss},{Dev}}) &\implies (1,0) \\ (T_t^{{bs},{Dev}} > T_t^{{ss},{Dev}}) &\implies (1,0) \\ (T_t^{{bs},{Dev}} < T_t^{{ss},{Dev}}) &\implies (0,1) \\ (R_t^{{bs},{Dev}} > R_t^{{ss},{Dev}}) &\implies (1,0) \\ (R_t^{{bs},{Dev}} < R_t^{{ss},{Dev}}) &\implies (0,1) \\ (A_t^{{bs},{Dev}} > A_t^{{ss},{Dev}}) &\implies (0,1) \\ (A_t^{{bs},{Dev}} < A_t^{{ss},{Dev}}) &\implies (1,0) \\ (Q_t^{bs} > Q_t^{ss}) &\implies (0,1) \\ (Q_t^{bs} < Q_t^{ss}) &\implies (1,0) \\ (W_t^{bs} > W_t^{ss}) &\implies (1,0) \\ (W_t^{bs} < W_t^{ss}) &\implies (0,1) \\ (Y_t^{bs} > Y_t^{ss}) &\implies (1,0) \\ (Y_t^{bs} < Y_t^{ss}) &\implies (0,1) \\ \end{cases} \end{align} Where $v$ is element of $V_t$. For Entry Price $v$ is clearly the same since we are entering at the same open price, therefore both gets 1 point. The Stoploss Price $v^{?}$ gets 1 point who ever is the lesser Stoploss Deviation. The Takeprofit Price $v^{?}$ gets 1 point who ever is the greater Takeprofit Deviation. The Recovery Price $v^{?}$ gets 1 point who ever is the greater Recovery Deviation. The Adverseloss Price $v^{?}$ gets 1 point who ever is the lesser Adverseloss Deviation. Moving on, the Q-Ratio $v^{?}$ gets 1 point who ever is the lesser. The W-Ratio $v^{?}$ gets 1 point who ever is the greater. The Y-Ratio $v^{?}$ gets 1 point who ever is the greater. \subsection{Score Calculator} \subsubsection{Normal Scoring} Since we now have a Points, we can now calculate for the Scoring calculator, which is formalized as: \begin{align} \text{Score}(V_t^{bs},V_t^{ss}) = \displaystyle\sum_{\text{all Point}(v^{bs})}(\text{Point}(v^{bs})), \sum_{\text{all Point}(v^{ss})}{\text{all}}(\text{Point}(v^{ss})) \end{align} In context, that will sum all the points of elements of each side (the buyside and sellside). Normally, one side will end up greater or lesser than the other. \subsubsection{Special Scoring} But here is the catch, some cases that the a trade have a not so ideal or invalid element, (say) an trade Entry with a Takeprofit Deviation is smaller that its Stoploss Deviation. Therefore we formalize the invalidity as automatically scores 0: \begin{align} \text{Score}(V_t^{bs},V_t^{ss}) = (Y_t^{bs} < 1) \oplus (Y_t^{ss} < 1) \implies (0,0) \end{align} Simply speaking, if the $Y_t$ of $V_t$ is less than one, then its automatically invalid. \subsection{Valid $V_t$} Since we now have the Scores in total. We can now decide what side to remain at time-index $t$, since we can only remain one side per time-index $t$. And we formalize that as: \begin{align} \text{Valid}(V_t^{bs},V_t^{ss}) = \begin{cases} (1,0), & \text{if } \left(\text{Score}(V_t^{bs}) > \text{Score}(V_t^{ss})\right), \quad \text{favor the buyside} \\ (0,1), & \text{otherwise}, \quad \text{favor the sellside} \end{cases} \end{align} \subsection{Null $V_t$} \begin{align} \text{Null}(V_t^{bs},V_t^{ss}) = \begin{cases} (1,0), & \text{if } \text{Score}(V_t^{bs}) = 0 \\ (0,1), & \text{if } \text{Score}(V_t^{ss}) = 0 \\ \end{cases} \end{align} \section{Organizing The Valid $V_t$'s} \subsection{Valid and Null Trades $\mathcal{T}$} As recall, the process includes both buy and sell entry at the same time-index $t$ which corresponding elements are calculated (lookahead calculations was performed and brought it back to the time-index $t$), then points are calculated to give the corresponding scores to validate, and therefore only one side remains (either the buyside or the sellside). That gives us another formalization: \begin{align} \mathcal{T}_t^{valid} = (\text{Valid }(V_t^{bs}) = 1) \oplus (\text{Valid }(V_t^{ss}) = 1) \end{align} And \begin{align} \mathcal{T}_t^{null} = (\text{Null }(V_t^{bs}) = 1) \land (\text{Null }(V_t^{ss}) = 1) \end{align} \subsection{Scaling the Number of Trades, Moving from one time-index $t$ to another $t$} Naturally, simulated trades are being conducted for each time-index $t$ (I recomend a parallel calculations for this becuase its heavy) and being filtered by assigning whether it is $\mathcal{T}_t^{valid}$ (which could be the buyside or the sellside) or $\mathcal{T}_t^{null}$ (which there is no side, no trade/s) is appropriate for each time-index $t$. Therefore our row data or time-series data will look like this; as example: \begin{align} \{\mathcal{T}_t^{valid}, \mathcal{T}_t^{null}, \mathcal{T}_t^{valid}, \mathcal{T}_t^{valid}, \mathcal{T}_t^{valid}, \mathcal{T}_t^{null},\ldots,\mathcal{T}_t^{?}\} \end{align} Which ${\mathcal{T}_t^{valid}}$ corresponding values and elements will either from buyside or sellside. \section{Recomendations Upon Implimentations} \subsection{Representing the Elements of $V_t$ on Chart} Representing these elements of $V_t$ on chart is confusing. At best, its recomended to represent $\{E_t, \Omega_{\overrightarrow{t}}, T_{\overrightarrow{t}}, R_{\overrightarrow{t}}, A_{\overrightarrow{t}} \}$ as a single dot for overlayed lineplot at time-index $t$. And $\{Q_{\overrightarrow{t}}, W_{\overrightarrow{t}}, Y_{\overrightarrow{t}}\}$ as a bar at time-index $t$ for barchart at separate pane because this cant be represented through prices. In addition, the $\{\Omega_{\overrightarrow{t}}^{Dev}, T_{\overrightarrow{t}}^{Dev}, R_{\overrightarrow{t}}^{Dev}, A_{\overrightarrow{t}}^{Dev} \}$ could be ploted using bar for barchart in another separate pane. \subsection{Dataset for Reinforecement Learning} Individual rows of a datafram from csv file may have a ow of \{datetime, open, high, low, close, tick volume\} as raw data. Therefore the new dataset may appear and will be organized like this, as the same row as the raw data: \{$\mathcal{T}_t^{valid}$, $\mathcal{T}_t^{null}$, $V_t^{bs}$, $V_t^{ss}$, $E_t$, $\Omega_t, T_t$, $R_t$, $A_t$, $Q_t$, $W_t$, $Y_t$, , $\Omega_t^{Dev}, T_t^{Dev}$, $R_t^{Dev}$, $A_t^{Dev}$ \} With that being said, lets introduc another element, which are the timeout time where we could use as a time indicator which the agent will conduct force out if the timeout time it reached, this in useful in out-of-sample-training or the agent is exposed in real-live environments where the targets have not reached like the Takeprofit target. And we formalized that as: \begin{align} J^T_{\overrightarrow{t}} &= \begin{cases} \text{Count}(t_{{0},{E_t^{bs}}},t_1,\ldots,t_{{j},{T_{\overrightarrow{t}}^{bs}}}), \quad \text{for buyside} \\ \text{Count}(t_{{0},{E_t^{ss}}},t_1,\ldots,t_{{j},{T_{\overrightarrow{t}}^{ss}}}), \quad \text{for sellside} \end{cases}, \quad \text{where we count the time it takes until the $Takeprofit$ target} \\ J^R_{\overrightarrow{t}} &= \begin{cases} \text{Count}(t_{{0},{E_t^{bs}}},t_1,\ldots,t_{{j},{R_{\overrightarrow{t}}^{bs}}}), \quad \text{for buyside} \\ \text{Count}(t_{{0},{E_t^{ss}}},t_1,\ldots,t_{{j},{R_{\overrightarrow{t}}^{ss}}}), \quad \text{for sellside} \end{cases}, \quad \text{where we count the time it takes until the $Recovery$ target} \end{align} Which both $J^T$ and $J^R$ is used to make the agent have a force timeout time to take out the trade if the pending targets arent reached during real-live environments. Ideally, once the timeout time is reached, use the close price of that timeout time to get out or force-exit the trade. Formalized as: \begin{align} F^T_{\overrightarrow{t}} &= \begin{cases} C_{\overrightarrow{t}}^{{J^T},{bs}}, \quad \text{for buyside} \\ C_{\overrightarrow{t}}^{{J^T},{ss}}, \quad \text{for sellside} \end{cases}, \quad \text{where we use the close price at timeout time $J^T_{\overrightarrow{t}}$} \\ F^R_{\overrightarrow{t}} &= \begin{cases} C_{\overrightarrow{t}}^{{J^R},{bs}}, \quad \text{for buyside} \\ C_{\overrightarrow{t}}^{{J^R},{ss}}, \quad \text{for sellside} \end{cases}, \quad \text{where we use the close price at timeout time $J^R_{\overrightarrow{t}}$} \end{align} \subsubsection{Simplifying the Notation} Because we are brigging the lookahead values $\overrightarrow{t}$ back to the time-index $t$, then we could simplify: \begin{align} J^T_{\overrightarrow{t}} &\implies J^T_t \\ J^R_{\overrightarrow{t}} &\implies J^R_t \\ F^T_{\overrightarrow{t}} &\implies F^T_t \\ F^R_{\overrightarrow{t}} &\implies F^R_t \end{align} \subsubsection{Final Form of the New Dataset} Therefore, our final form of dataset is: \begin{center} \{$\mathcal{T}_t^{valid}$, $\mathcal{T}_t^{null}$, $V_t^{bs}$, $V_t^{ss}$, $E_t$, $\Omega_t, T_t$, $R_t$, $A_t$, $Q_t$, $W_t$, $Y_t$, , $\Omega_t^{Dev}, T_t^{Dev}$, $R_t^{Dev}$, $A_t^{Dev}$, , $J^T_t$, $J^R_t$, $F^T_t$, $F^R_t$\} \end{center} Which is placed at the same row of the raw dataset whenever the trade is valid or null for that time-index $t$. Finally, we present it as: \begin{center} \{datetime, open, high, low, close, tick volume, , $\mathcal{T}_t^{valid}$, $\mathcal{T}_t^{null}$, $V_t^{bs}$, $V_t^{ss}$, $E_t$, $\Omega_t, T_t$, $R_t$, $A_t$, $Q_t$, $W_t$, $Y_t$, , $\Omega_t^{Dev}, T_t^{Dev}$, $R_t^{Dev}$, $A_t^{Dev}$, , $J^T_t$, $J^R_t$, $F^T_t$, $F^R_t$\} \end{center} \end{document}