Created
November 4, 2025 12:06
-
-
Save kumrzz/cb141f25bb036120ee22b2b67219c0ee to your computer and use it in GitHub Desktop.
signal_tests_USATECH_IDXUSD_04nov2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "id": "39913a98", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# %pip install pandas matplotlib numpy" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 21, | |
| "id": "ef45c721", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "import pandas as pd\n", | |
| "import numpy as np\n", | |
| "import matplotlib.pyplot as plt" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 67, | |
| "id": "3b17d530", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# === Load close-only CSV ===\n", | |
| "file_path = \"/Users/kumar.ghosh/kgtest/lemaske/USATECH.IDXUSD_Candlestick_1_M_BID_14.06.2025-14.07.2025.csv\"\n", | |
| "df = pd.read_csv(file_path, header=None, names=[\"Close\"])\n", | |
| "# 1-minute timestamps for one month\n", | |
| "df[\"Datetime\"] = pd.date_range(start=\"2025-06-14\", periods=len(df), freq=\"min\")\n", | |
| "df.set_index(\"Datetime\", inplace=True)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 78, | |
| "id": "265fde72", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Load unadulterated CSV from Dukascopy at https://www.dukascopy.com/trading-tools/widgets/quotes/historical_data_feed\n", | |
| "file_path = \"/Users/kumar.ghosh/kgtest/lemaske/USATECH.IDXUSD_Candlestick_1_M_BID_27.10.2023-27.10.2025.csv\"\n", | |
| "df = pd.read_csv(file_path)\n", | |
| "# 1-minute timestamps for one month\n", | |
| "df[\"Datetime\"] = pd.date_range(start=\"2023-10-27\", periods=len(df), freq=\"min\")\n", | |
| "df.set_index(\"Datetime\", inplace=True)\n", | |
| "df.drop(['Open', 'High', 'Low', 'Local time', 'Volume'], axis=1, inplace=True)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 79, | |
| "id": "8b246b2d", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# === Parameters ===\n", | |
| "rolling_period = 34 # Rolling EMA VWAP window (minutes)\n", | |
| "b2_mult = 1.75 # Entry SD band\n", | |
| "b4_mult = 4.0 # Stop SD band\n", | |
| "capital = 10000\n", | |
| "risk_per_trade = 0.04 * capital\n", | |
| "\n", | |
| "# === VWAP & STD approximation ===\n", | |
| "def ema(series, length):\n", | |
| " return series.ewm(span=length, adjust=False).mean()\n", | |
| "\n", | |
| "src = df[\"Close\"]\n", | |
| "volume = pd.Series(np.ones(len(src)), index=src.index) # Assume constant volume\n", | |
| "\n", | |
| "p = ema(src * volume, rolling_period)\n", | |
| "vol = ema(volume, rolling_period)\n", | |
| "vwap_r = p / vol\n", | |
| "sn = ema(volume * (src - vwap_r.shift(1)) * (src - vwap_r), rolling_period)\n", | |
| "std_r = np.sqrt(sn / vol)\n", | |
| "\n", | |
| "# === Bands ===\n", | |
| "b2_dn = vwap_r - b2_mult * std_r\n", | |
| "b2_up = vwap_r + b2_mult * std_r\n", | |
| "b4_dn = vwap_r - b4_mult * std_r\n", | |
| "b4_up = vwap_r + b4_mult * std_r\n", | |
| "\n", | |
| "# === Trade signals ===\n", | |
| "df[\"longSignal\"] = (src.shift(2) < b2_dn.shift(2)) & (src.shift(1) < b2_dn.shift(1))\n", | |
| "df[\"shortSignal\"] = (src.shift(2) > b2_up.shift(2)) & (src.shift(1) > b2_up.shift(1))\n", | |
| "\n", | |
| "# === Simulation ===\n", | |
| "in_trade = False\n", | |
| "position = None\n", | |
| "balance = capital\n", | |
| "equity_curve = []\n", | |
| "trades = []\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 80, | |
| "id": "72fd024d", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "for i in range(len(df)):\n", | |
| " price = src.iloc[i]\n", | |
| " time = df.index[i]\n", | |
| "\n", | |
| " if not in_trade:\n", | |
| " # Long entry condition\n", | |
| " if df[\"longSignal\"].iloc[i]:\n", | |
| " entry = price\n", | |
| " sl = b4_dn.iloc[i]\n", | |
| " tp = b2_up.iloc[i]\n", | |
| " risk = entry - sl\n", | |
| " if risk > 0:\n", | |
| " qty = risk_per_trade / risk\n", | |
| " position = {\"side\": \"long\", \"entry\": entry, \"sl\": sl, \"tp\": tp, \"qty\": qty, \"entry_time\": time}\n", | |
| " in_trade = True\n", | |
| "\n", | |
| " # Short entry condition\n", | |
| " elif df[\"shortSignal\"].iloc[i]:\n", | |
| " entry = price\n", | |
| " sl = b4_up.iloc[i]\n", | |
| " tp = b2_dn.iloc[i]\n", | |
| " risk = sl - entry\n", | |
| " if risk > 0:\n", | |
| " qty = risk_per_trade / risk\n", | |
| " position = {\"side\": \"short\", \"entry\": entry, \"sl\": sl, \"tp\": tp, \"qty\": qty, \"entry_time\": time}\n", | |
| " in_trade = True\n", | |
| "\n", | |
| " else:\n", | |
| " # Manage active position\n", | |
| " if position[\"side\"] == \"long\":\n", | |
| " if price <= position[\"sl\"]: # Stop hit\n", | |
| " pnl = (position[\"sl\"] - position[\"entry\"]) * position[\"qty\"]\n", | |
| " balance += pnl\n", | |
| " trades.append({\n", | |
| " \"Side\": \"Long\",\n", | |
| " \"Entry Time\": position[\"entry_time\"],\n", | |
| " \"Exit Time\": time,\n", | |
| " \"Entry Price\": position[\"entry\"],\n", | |
| " \"Exit Price\": position[\"sl\"],\n", | |
| " \"P/L\": pnl\n", | |
| " })\n", | |
| " in_trade = False\n", | |
| " elif price >= position[\"tp\"]: # Target hit\n", | |
| " pnl = (position[\"tp\"] - position[\"entry\"]) * position[\"qty\"]\n", | |
| " balance += pnl\n", | |
| " trades.append({\n", | |
| " \"Side\": \"Long\",\n", | |
| " \"Entry Time\": position[\"entry_time\"],\n", | |
| " \"Exit Time\": time,\n", | |
| " \"Entry Price\": position[\"entry\"],\n", | |
| " \"Exit Price\": position[\"tp\"],\n", | |
| " \"P/L\": pnl\n", | |
| " })\n", | |
| " in_trade = False\n", | |
| "\n", | |
| " elif position[\"side\"] == \"short\":\n", | |
| " if price >= position[\"sl\"]: # Stop hit\n", | |
| " pnl = (position[\"entry\"] - position[\"sl\"]) * position[\"qty\"]\n", | |
| " balance += pnl\n", | |
| " trades.append({\n", | |
| " \"Side\": \"Short\",\n", | |
| " \"Entry Time\": position[\"entry_time\"],\n", | |
| " \"Exit Time\": time,\n", | |
| " \"Entry Price\": position[\"entry\"],\n", | |
| " \"Exit Price\": position[\"sl\"],\n", | |
| " \"P/L\": pnl\n", | |
| " })\n", | |
| " in_trade = False\n", | |
| " elif price <= position[\"tp\"]: # Target hit\n", | |
| " pnl = (position[\"entry\"] - position[\"tp\"]) * position[\"qty\"]\n", | |
| " balance += pnl\n", | |
| " trades.append({\n", | |
| " \"Side\": \"Short\",\n", | |
| " \"Entry Time\": position[\"entry_time\"],\n", | |
| " \"Exit Time\": time,\n", | |
| " \"Entry Price\": position[\"entry\"],\n", | |
| " \"Exit Price\": position[\"tp\"],\n", | |
| " \"P/L\": pnl\n", | |
| " })\n", | |
| " in_trade = False\n", | |
| "\n", | |
| " equity_curve.append(balance)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 81, | |
| "id": "a8e90ab7", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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", | |
| "text/plain": [ | |
| "<Figure size 1000x500 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Total Trades: 3738\n", | |
| " Side Entry Time Exit Time Entry Price Exit Price \\\n", | |
| "0 Short 2023-10-27 00:04:00 2023-10-27 00:05:00 14211.039 14212.627512 \n", | |
| "1 Short 2023-10-27 00:06:00 2023-10-27 00:13:00 14216.599 14221.323942 \n", | |
| "2 Short 2023-10-27 00:17:00 2023-10-27 01:17:00 14228.389 14200.376420 \n", | |
| "3 Short 2023-10-27 02:42:00 2023-10-27 03:18:00 14214.069 14224.776419 \n", | |
| "4 Short 2023-10-27 06:00:00 2023-10-27 07:59:00 14229.789 14217.973649 \n", | |
| "5 Long 2023-10-27 08:02:00 2023-10-27 08:05:00 14210.859 14197.459825 \n", | |
| "6 Long 2023-10-27 08:06:00 2023-10-27 09:32:00 14196.269 14235.382775 \n", | |
| "7 Short 2023-10-27 13:34:00 2023-10-27 14:44:00 14233.829 14255.286520 \n", | |
| "8 Short 2023-10-27 15:06:00 2023-10-27 15:42:00 14269.809 14206.940415 \n", | |
| "9 Long 2023-10-27 15:43:00 2023-10-27 16:05:00 14200.739 14270.280271 \n", | |
| "\n", | |
| " P/L \n", | |
| "0 -400.000000 \n", | |
| "1 -400.000000 \n", | |
| "2 606.190227 \n", | |
| "3 -400.000000 \n", | |
| "4 364.796956 \n", | |
| "5 -400.000000 \n", | |
| "6 702.330965 \n", | |
| "7 -400.000000 \n", | |
| "8 727.956545 \n", | |
| "9 666.941838 \n", | |
| "\n", | |
| "Final Balance: $96485.84\n", | |
| "Total Return: 864.86%\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "df[\"Balance\"] = equity_curve\n", | |
| "\n", | |
| "# === Results ===\n", | |
| "final_balance = df[\"Balance\"].iloc[-1]\n", | |
| "total_return = (final_balance - capital) / capital * 100\n", | |
| "\n", | |
| "# === Equity Curve ===\n", | |
| "plt.figure(figsize=(10,5))\n", | |
| "plt.plot(df.index, df[\"Balance\"], label=\"Equity Curve\", linewidth=1.5)\n", | |
| "plt.title(f\"Backtest Results — Final Balance: ${final_balance:.2f} ({total_return:.2f}%)\")\n", | |
| "plt.xlabel(\"Time\")\n", | |
| "plt.ylabel(\"Account Balance ($)\")\n", | |
| "plt.legend()\n", | |
| "plt.grid(True)\n", | |
| "plt.show()\n", | |
| "\n", | |
| "# === Trade Summary ===\n", | |
| "trades_df = pd.DataFrame(trades)\n", | |
| "print(\"Total Trades:\", len(trades_df))\n", | |
| "print(trades_df.head(10)) # show first 10\n", | |
| "print(f\"\\nFinal Balance: ${final_balance:.2f}\")\n", | |
| "print(f\"Total Return: {total_return:.2f}%\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 58, | |
| "id": "1a5d9616", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>Close</th>\n", | |
| " <th>longSignal</th>\n", | |
| " <th>shortSignal</th>\n", | |
| " <th>Balance</th>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>Datetime</th>\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>2025-06-30 00:00:00</th>\n", | |
| " <td>22599.109</td>\n", | |
| " <td>False</td>\n", | |
| " <td>False</td>\n", | |
| " <td>10000.000000</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2025-06-30 00:01:00</th>\n", | |
| " <td>22602.587</td>\n", | |
| " <td>False</td>\n", | |
| " <td>False</td>\n", | |
| " <td>10000.000000</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2025-06-30 00:02:00</th>\n", | |
| " <td>22605.309</td>\n", | |
| " <td>False</td>\n", | |
| " <td>False</td>\n", | |
| " <td>10000.000000</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2025-06-30 00:03:00</th>\n", | |
| " <td>22606.989</td>\n", | |
| " <td>False</td>\n", | |
| " <td>False</td>\n", | |
| " <td>10000.000000</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2025-06-30 00:04:00</th>\n", | |
| " <td>22614.321</td>\n", | |
| " <td>False</td>\n", | |
| " <td>False</td>\n", | |
| " <td>10000.000000</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>...</th>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2025-07-14 23:55:00</th>\n", | |
| " <td>22830.332</td>\n", | |
| " <td>False</td>\n", | |
| " <td>False</td>\n", | |
| " <td>18309.579156</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2025-07-14 23:56:00</th>\n", | |
| " <td>22828.609</td>\n", | |
| " <td>False</td>\n", | |
| " <td>False</td>\n", | |
| " <td>18309.579156</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2025-07-14 23:57:00</th>\n", | |
| " <td>22824.465</td>\n", | |
| " <td>False</td>\n", | |
| " <td>False</td>\n", | |
| " <td>18309.579156</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2025-07-14 23:58:00</th>\n", | |
| " <td>22824.199</td>\n", | |
| " <td>False</td>\n", | |
| " <td>False</td>\n", | |
| " <td>18309.579156</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2025-07-14 23:59:00</th>\n", | |
| " <td>22824.553</td>\n", | |
| " <td>False</td>\n", | |
| " <td>False</td>\n", | |
| " <td>18309.579156</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "<p>21600 rows × 4 columns</p>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " Close longSignal shortSignal Balance\n", | |
| "Datetime \n", | |
| "2025-06-30 00:00:00 22599.109 False False 10000.000000\n", | |
| "2025-06-30 00:01:00 22602.587 False False 10000.000000\n", | |
| "2025-06-30 00:02:00 22605.309 False False 10000.000000\n", | |
| "2025-06-30 00:03:00 22606.989 False False 10000.000000\n", | |
| "2025-06-30 00:04:00 22614.321 False False 10000.000000\n", | |
| "... ... ... ... ...\n", | |
| "2025-07-14 23:55:00 22830.332 False False 18309.579156\n", | |
| "2025-07-14 23:56:00 22828.609 False False 18309.579156\n", | |
| "2025-07-14 23:57:00 22824.465 False False 18309.579156\n", | |
| "2025-07-14 23:58:00 22824.199 False False 18309.579156\n", | |
| "2025-07-14 23:59:00 22824.553 False False 18309.579156\n", | |
| "\n", | |
| "[21600 rows x 4 columns]" | |
| ] | |
| }, | |
| "execution_count": 58, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "df" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "id": "2a55b86a", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python 3", | |
| "language": "python", | |
| "name": "python3" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython3", | |
| "version": "3.14.0" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 5 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment