algorembrant's picture
Upload 4 files
d09db33 verified
Raw
History Blame Contribute Delete
23 kB
\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}