{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [], "gpuType": "T4" }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" }, "accelerator": "GPU" }, "cells": [ { "cell_type": "code", "source": [ "!pip -q install numpy matplotlib warp-lang torch" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "6nCegUGTE8jg", "outputId": "f5a7ce52-8c68-4867-f906-f6a572caf491" }, "execution_count": 1, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m136.4/136.4 MB\u001b[0m \u001b[31m8.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25h" ] } ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "OhI3LExdEd0t", "outputId": "28967416-10ef-4f44-e3ad-e4743cfdc491" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "==========================================================================\n", " TopoDevPOC — Developing POC Pattern Enumerator\n", " n = 39 candles | 38 transitions | device = cuda\n", " GPU = Tesla T4\n", "==========================================================================\n", "\n", "[THEOREM] Total unique developing POC patterns for n=39\n", " Bullish (non-increasing) : 2^38 = 274,877,906,944\n", " Bearish (non-decreasing) : 2^38 = 274,877,906,944\n", " Total (2^39) : 549,755,813,888\n", "\n", "[MATRIX] A = [[1,1],[1,1]] | v_0 = [1,1]^T\n", " A^37 = [[68719476736, 68719476736],\n", " [68719476736, 68719476736]]\n", " B_39 = 1^T · A^37 · v_0 = 274,877,906,944\n", " Expected 2^{n-1} = 274,877,906,944\n", " [OK] 2 × 274,877,906,944 = 549,755,813,888 ✓\n", "\n", "[SAMPLE] 100 patterns sampled on GPU (torch.randint)\n", " Sampling time: 276.10 ms\n", "\n", "==========================================================================\n", " OUTPUT 1 — TERNARY MATRICES (1×38, values ∈ {-1,0,+1})\n", " Format: [#] Direction | PatternID | M = [m_0 … m_37]\n", "==========================================================================\n", " [ 1] Bullish | ID= 167790361200 | M=[0,0,0,1,1,1,0,0,1,0,1,1,1,0,1,1,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,0,0,1,0]\n", " [ 2] Bearish | ID= 112296131307 | M=[-1, 0,-1, 0,-1,-1,-1, 0,-1, 0,-1,-1,-1,-1,-1, 0,-1,-1,-1,-1, 0,-1, 0,-1, 0,-1, 0, 0,-1, 0, 0, 0,-1, 0,-1,-1, 0, 0]\n", " [ 3] Bullish | ID= 369064015028 | M=[0,1,0,1,1,0,1,0,0,1,0,1,1,1,1,1,0,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,1,0,1,0,1]\n", " [ 4] Bearish | ID= 397679224723 | M=[-1, 0, 0,-1, 0, 0,-1,-1,-1,-1, 0, 0,-1,-1, 0,-1,-1,-1, 0, 0, 0, 0,-1,-1,-1,-1, 0,-1, 0, 0,-1, 0, 0,-1,-1,-1, 0,-1]\n", " [ 5] Bullish | ID= 37927295500 | M=[0,1,1,0,0,0,0,0,1,0,1,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0]\n", " [ 6] Bullish | ID= 286312365648 | M=[0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,1,0,0,1,0,1,0,1,0,1,0,0,0,0,1]\n", " [ 7] Bearish | ID= 299333570369 | M=[ 0, 0, 0, 0, 0,-1, 0,-1,-1,-1,-1, 0, 0,-1,-1,-1,-1, 0,-1, 0,-1, 0,-1,-1, 0, 0, 0,-1,-1, 0,-1,-1, 0,-1, 0, 0, 0,-1]\n", " [ 8] Bearish | ID= 180886373753 | M=[ 0, 0,-1,-1,-1,-1, 0,-1, 0,-1, 0, 0, 0, 0, 0,-1,-1, 0,-1, 0,-1, 0,-1,-1, 0,-1,-1,-1, 0, 0, 0, 0,-1, 0,-1, 0,-1, 0]\n", " [ 9] Bullish | ID= 367632183586 | M=[1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,0,1,0,1,0,0,1,0,0,0,1,1,0,0,1,1,0,1,0,1,0,1]\n", " [ 10] Bullish | ID= 524916622536 | M=[0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,0,1,1,0,0,0,1,0,1,1,1,1]\n", " [ 11] Bullish | ID= 31775345360 | M=[0,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,0,1,0,1,1,1,1,1,0,1,0,0,1,1,0,1,1,1,0,0,0,0]\n", " [ 12] Bullish | ID= 425035078904 | M=[0,0,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,1,0,1,1,1,1,0,1,0,0,0,1,1]\n", " [ 13] Bullish | ID= 220258295520 | M=[0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,0,1,0,1,0,1,1,0,0,0,0,1,0,0,1,0,1,1,0,0,1,1,0]\n", " [ 14] Bearish | ID= 369470979075 | M=[-1, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1,-1,-1, 0,-1,-1,-1,-1,-1, 0,-1, 0, 0, 0,-1,-1, 0, 0, 0, 0, 0, 0,-1,-1, 0,-1, 0,-1]\n", " [ 15] Bearish | ID= 318324601329 | M=[ 0, 0, 0,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0,-1,-1, 0,-1,-1,-1, 0, 0, 0, 0,-1, 0,-1, 0, 0,-1]\n", " [ 16] Bearish | ID= 147404907673 | M=[ 0, 0,-1,-1, 0, 0,-1, 0, 0,-1, 0, 0,-1,-1, 0, 0, 0,-1, 0, 0, 0, 0, 0, 0,-1, 0, 0,-1, 0,-1, 0, 0,-1, 0, 0, 0,-1, 0]\n", " [ 17] Bearish | ID= 371069085929 | M=[ 0, 0,-1, 0,-1,-1,-1, 0, 0, 0,-1, 0,-1,-1,-1, 0, 0, 0, 0,-1,-1,-1, 0,-1, 0,-1, 0, 0,-1,-1, 0, 0,-1,-1, 0,-1, 0,-1]\n", " [ 18] Bearish | ID= 2330012161 | M=[ 0, 0, 0, 0, 0, 0, 0, 0,-1, 0,-1, 0,-1, 0, 0,-1, 0, 0, 0, 0,-1,-1,-1, 0,-1, 0,-1, 0, 0, 0,-1, 0, 0, 0, 0, 0, 0, 0]\n", " [ 19] Bearish | ID= 419107634965 | M=[ 0,-1, 0,-1, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1, 0,-1, 0, 0, 0, 0,-1,-1, 0, 0,-1, 0,-1, 0, 0,-1,-1, 0, 0, 0, 0,-1,-1]\n", " [ 20] Bullish | ID= 479318507150 | M=[1,1,1,0,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,0,1,1]\n", " [ 21] Bearish | ID= 319608669591 | M=[-1,-1, 0,-1, 0, 0,-1,-1, 0,-1, 0, 0, 0,-1, 0,-1, 0, 0,-1, 0,-1, 0, 0, 0,-1, 0,-1, 0,-1,-1, 0, 0,-1, 0,-1, 0, 0,-1]\n", " [ 22] Bullish | ID= 534756389730 | M=[1,0,0,0,1,1,0,1,1,0,0,1,1,1,1,0,1,1,0,1,1,1,1,1,0,0,0,0,0,0,1,0,0,1,1,1,1,1]\n", " [ 23] Bullish | ID= 234063416010 | M=[1,0,1,0,0,1,1,0,1,0,1,0,0,1,0,0,0,1,0,0,0,1,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,0]\n", " [ 24] Bullish | ID= 259589951898 | M=[1,0,1,1,0,0,1,1,0,0,0,1,0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0]\n", " [ 25] Bullish | ID= 33069957648 | M=[0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0,0,0,0]\n", " [ 26] Bullish | ID= 386376948582 | M=[1,1,0,0,1,1,0,1,1,0,1,1,0,1,0,0,0,1,1,1,0,1,1,1,0,1,0,1,1,1,1,1,0,0,1,1,0,1]\n", " [ 27] Bearish | ID= 137526752343 | M=[-1,-1, 0,-1, 0,-1, 0, 0, 0,-1, 0,-1,-1, 0,-1,-1,-1, 0,-1,-1,-1, 0, 0,-1, 0,-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1, 0]\n", " [ 28] Bearish | ID= 466989440093 | M=[ 0,-1,-1,-1, 0,-1, 0, 0, 0,-1,-1,-1, 0,-1, 0,-1, 0,-1,-1,-1,-1, 0,-1, 0,-1, 0,-1,-1,-1, 0,-1, 0, 0,-1,-1, 0,-1,-1]\n", " [ 29] Bearish | ID= 30541739875 | M=[-1, 0, 0, 0,-1,-1, 0,-1,-1,-1, 0,-1,-1,-1,-1,-1, 0,-1,-1, 0,-1,-1, 0, 0, 0,-1,-1,-1, 0, 0, 0,-1,-1,-1, 0, 0, 0, 0]\n", " [ 30] Bullish | ID= 256289197764 | M=[0,1,0,0,0,1,1,0,1,1,1,0,0,1,1,0,1,1,0,0,0,0,0,0,0,1,1,0,1,0,1,1,1,0,1,1,1,0]\n", " [ 31] Bullish | ID= 463423679574 | M=[1,1,0,1,0,1,0,0,0,1,1,0,1,0,0,0,0,1,0,1,1,0,0,0,1,1,0,0,1,1,1,1,1,0,1,0,1,1]\n", " [ 32] Bearish | ID= 269170438337 | M=[ 0, 0, 0, 0, 0,-1,-1, 0, 0, 0, 0,-1,-1,-1,-1, 0,-1,-1,-1, 0, 0,-1,-1,-1,-1, 0,-1, 0,-1, 0,-1, 0,-1,-1,-1,-1,-1, 0]\n", " [ 33] Bearish | ID= 535223428555 | M=[-1, 0,-1, 0, 0,-1,-1,-1, 0,-1, 0, 0,-1,-1, 0,-1, 0,-1,-1, 0, 0,-1,-1,-1, 0,-1,-1,-1, 0, 0,-1, 0, 0,-1,-1,-1,-1,-1]\n", " [ 34] Bearish | ID= 295288782235 | M=[-1, 0,-1,-1, 0, 0,-1,-1, 0,-1,-1,-1,-1, 0, 0,-1, 0,-1, 0,-1, 0, 0,-1, 0, 0, 0, 0, 0, 0,-1,-1, 0, 0,-1, 0, 0, 0,-1]\n", " [ 35] Bearish | ID= 343554777039 | M=[-1,-1,-1, 0, 0,-1,-1,-1,-1,-1,-1,-1, 0,-1,-1,-1, 0,-1, 0,-1,-1,-1, 0,-1, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0,-1]\n", " [ 36] Bearish | ID= 547418250595 | M=[-1, 0, 0, 0,-1,-1, 0,-1, 0,-1,-1,-1, 0, 0,-1,-1,-1, 0,-1, 0,-1, 0,-1, 0, 0,-1, 0,-1,-1,-1, 0,-1,-1,-1,-1,-1,-1,-1]\n", " [ 37] Bullish | ID= 177868470766 | M=[1,1,1,0,1,1,1,1,0,0,1,1,1,1,0,1,0,0,1,0,0,1,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,0]\n", " [ 38] Bullish | ID= 294601994596 | M=[0,1,0,0,1,1,0,1,0,0,0,1,1,0,1,1,0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,1]\n", " [ 39] Bullish | ID= 57969416624 | M=[0,0,0,1,1,0,1,1,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,0,1,1,0,0,0]\n", " [ 40] Bullish | ID= 27863637690 | M=[1,0,1,1,1,0,1,0,1,1,1,1,0,1,0,1,0,1,1,0,0,1,1,0,0,1,1,1,1,1,0,0,1,1,0,0,0,0]\n", " [ 41] Bullish | ID= 224985691976 | M=[0,0,1,0,0,1,0,1,1,1,0,1,1,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,1,0,1,1,0]\n", " [ 42] Bearish | ID= 487090078369 | M=[ 0, 0, 0, 0,-1, 0,-1, 0,-1, 0, 0, 0, 0,-1,-1, 0, 0,-1, 0,-1, 0,-1,-1, 0, 0, 0,-1, 0,-1,-1, 0,-1, 0, 0, 0,-1,-1,-1]\n", " [ 43] Bullish | ID= 4141515848 | M=[0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0]\n", " [ 44] Bullish | ID= 197888556010 | M=[1,0,1,0,1,1,1,1,1,0,1,1,1,0,1,1,1,0,0,1,0,0,0,1,1,0,0,1,0,0,0,0,1,1,1,0,1,0]\n", " [ 45] Bearish | ID= 434117278173 | M=[ 0,-1,-1,-1, 0,-1,-1,-1, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0,-1,-1, 0,-1,-1, 0, 0,-1, 0, 0, 0,-1, 0,-1, 0, 0,-1,-1]\n", " [ 46] Bullish | ID= 538864504842 | M=[1,0,1,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,1,0,1,1,0,1,1,0,1,1,1,0,1,0,1,1,1,1,1]\n", " [ 47] Bullish | ID= 95860229666 | M=[1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,1,0,1,1,0,1,1,0,0,0,1,0,1,0,0,1,1,0,1,0,0]\n", " [ 48] Bearish | ID= 175140355631 | M=[-1,-1,-1, 0,-1, 0, 0, 0,-1,-1,-1,-1,-1, 0,-1,-1, 0,-1,-1, 0,-1, 0, 0,-1,-1,-1, 0, 0, 0,-1,-1, 0, 0, 0,-1, 0,-1, 0]\n", " [ 49] Bearish | ID= 229634663885 | M=[ 0,-1,-1, 0, 0,-1,-1,-1, 0,-1, 0, 0,-1,-1,-1, 0,-1, 0,-1, 0, 0,-1, 0,-1,-1,-1, 0,-1,-1,-1, 0,-1, 0,-1, 0,-1,-1, 0]\n", " [ 50] Bearish | ID= 215659952263 | M=[-1,-1, 0, 0, 0, 0,-1, 0, 0, 0,-1,-1,-1, 0,-1,-1, 0,-1, 0,-1, 0,-1, 0, 0,-1,-1, 0,-1,-1, 0, 0, 0,-1, 0, 0,-1,-1, 0]\n", " [ 51] Bearish | ID= 88951779299 | M=[-1, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1, 0,-1,-1, 0, 0, 0, 0, 0,-1,-1,-1,-1,-1, 0,-1, 0,-1,-1, 0,-1, 0, 0,-1, 0,-1, 0, 0]\n", " [ 52] Bearish | ID= 93340530549 | M=[ 0,-1, 0,-1,-1,-1, 0,-1,-1,-1, 0,-1,-1,-1, 0,-1,-1,-1, 0, 0, 0, 0,-1,-1,-1, 0,-1,-1,-1, 0,-1,-1, 0,-1, 0,-1, 0, 0]\n", " [ 53] Bearish | ID= 520761088879 | M=[-1,-1,-1, 0,-1,-1, 0,-1,-1, 0,-1,-1, 0, 0,-1,-1,-1,-1, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0,-1, 0, 0,-1,-1,-1,-1]\n", " [ 54] Bullish | ID= 427826220636 | M=[0,1,1,1,0,1,0,0,1,1,1,0,0,0,0,0,1,1,1,0,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,0,1,1]\n", " [ 55] Bullish | ID= 483254597582 | M=[1,1,1,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1]\n", " [ 56] Bullish | ID= 99519992790 | M=[1,1,0,1,0,1,1,1,1,0,0,1,0,0,1,0,1,0,1,1,0,1,1,1,1,0,1,0,1,0,0,1,1,1,0,1,0,0]\n", " [ 57] Bullish | ID= 318036678048 | M=[0,0,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,1,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,1]\n", " [ 58] Bullish | ID= 465354264024 | M=[0,0,1,1,0,1,1,1,0,1,1,0,0,0,1,0,1,1,0,0,0,1,0,1,0,0,1,1,0,1,0,0,0,1,1,0,1,1]\n", " [ 59] Bearish | ID= 257366456073 | M=[ 0, 0,-1, 0, 0, 0, 0,-1,-1,-1, 0,-1,-1,-1, 0, 0, 0,-1,-1,-1,-1, 0, 0, 0, 0,-1,-1, 0,-1,-1,-1,-1,-1, 0,-1,-1,-1, 0]\n", " [ 60] Bearish | ID= 438801001563 | M=[-1, 0,-1,-1, 0,-1, 0, 0, 0,-1,-1, 0,-1,-1,-1,-1,-1, 0, 0,-1, 0, 0,-1, 0,-1, 0,-1, 0,-1, 0, 0, 0,-1,-1, 0, 0,-1,-1]\n", " [ 61] Bullish | ID= 524444180016 | M=[0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,1,0,1,1,0,1,1,0,0,0,0,1,0,1,1,1,1]\n", " [ 62] Bearish | ID= 326267911843 | M=[-1, 0, 0, 0,-1, 0,-1, 0,-1,-1,-1,-1,-1, 0, 0,-1, 0,-1, 0,-1, 0, 0, 0,-1,-1,-1, 0,-1,-1,-1,-1,-1,-1, 0,-1, 0, 0,-1]\n", " [ 63] Bullish | ID= 79552418304 | M=[0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,1,0,0,0,1,1,0,1,1,0,1,0,0,0,0,1,0,1,0,0,1,0,0]\n", " [ 64] Bearish | ID= 47263338937 | M=[ 0, 0,-1,-1,-1, 0,-1,-1, 0, 0, 0,-1, 0,-1, 0,-1, 0,-1,-1,-1, 0, 0, 0,-1, 0, 0, 0, 0, 0, 0, 0,-1,-1, 0,-1, 0, 0, 0]\n", " [ 65] Bearish | ID= 175808306983 | M=[-1,-1, 0, 0,-1, 0, 0,-1,-1,-1,-1,-1, 0,-1,-1,-1, 0,-1,-1,-1,-1,-1,-1, 0,-1,-1,-1, 0,-1,-1,-1, 0, 0, 0,-1, 0,-1, 0]\n", " [ 66] Bullish | ID= 482859874250 | M=[1,0,1,0,0,1,1,1,1,1,0,1,1,1,1,0,0,0,0,1,1,0,1,0,0,1,1,0,1,1,0,0,0,0,0,1,1,1]\n", " [ 67] Bullish | ID= 437378623348 | M=[0,1,0,1,1,1,0,1,1,1,0,0,1,0,0,0,0,1,1,0,0,1,1,1,0,1,0,1,0,1,1,1,0,1,0,0,1,1]\n", " [ 68] Bearish | ID= 400478158341 | M=[ 0,-1, 0, 0, 0, 0, 0, 0,-1,-1,-1,-1,-1, 0,-1,-1,-1, 0,-1,-1, 0,-1, 0, 0,-1,-1,-1,-1,-1, 0, 0,-1, 0,-1,-1,-1, 0,-1]\n", " [ 69] Bearish | ID= 401295312607 | M=[-1,-1,-1,-1, 0,-1,-1, 0,-1,-1, 0, 0, 0, 0,-1, 0, 0, 0, 0,-1, 0, 0, 0,-1,-1,-1,-1, 0,-1,-1, 0,-1, 0,-1,-1,-1, 0,-1]\n", " [ 70] Bullish | ID= 418612558654 | M=[1,1,1,1,1,0,0,1,1,0,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,1,0,1,1,1,0,1,0,0,0,0,1,1]\n", " [ 71] Bullish | ID= 85827056944 | M=[0,0,0,1,1,0,0,1,0,1,0,1,1,1,1,0,0,0,0,1,1,0,1,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0]\n", " [ 72] Bullish | ID= 128616350616 | M=[0,0,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,1,0,0,1,1,1,1,1,0,1,1,1,0,0]\n", " [ 73] Bearish | ID= 314776501053 | M=[ 0,-1,-1,-1,-1, 0, 0,-1,-1, 0,-1,-1,-1, 0, 0, 0, 0,-1, 0, 0,-1, 0, 0, 0,-1, 0,-1, 0, 0,-1, 0,-1, 0, 0,-1, 0, 0,-1]\n", " [ 74] Bullish | ID= 210744214082 | M=[1,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,1,0,1,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0,1,1,0]\n", " [ 75] Bearish | ID= 231440688619 | M=[-1, 0,-1, 0,-1,-1,-1,-1, 0,-1, 0, 0,-1, 0,-1, 0, 0, 0, 0,-1,-1,-1,-1, 0,-1, 0, 0, 0,-1,-1,-1,-1, 0,-1, 0,-1,-1, 0]\n", " [ 76] Bearish | ID= 266647084447 | M=[-1,-1,-1,-1, 0, 0,-1,-1, 0,-1,-1,-1, 0, 0,-1,-1,-1,-1, 0, 0,-1,-1, 0,-1, 0,-1, 0,-1, 0, 0, 0, 0,-1,-1,-1,-1,-1, 0]\n", " [ 77] Bullish | ID= 198293842838 | M=[1,1,0,1,0,0,1,1,1,0,1,0,1,1,1,1,1,0,1,1,1,0,0,1,1,0,1,0,1,0,0,0,1,1,1,0,1,0]\n", " [ 78] Bearish | ID= 357662675445 | M=[ 0,-1, 0,-1,-1,-1,-1,-1, 0, 0, 0,-1, 0,-1, 0,-1,-1, 0,-1,-1, 0,-1, 0, 0,-1,-1, 0, 0, 0,-1, 0,-1,-1, 0, 0,-1, 0,-1]\n", " [ 79] Bullish | ID= 273125219496 | M=[0,0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,1,0,0,1,1,1,1,1,1,1,0]\n", " [ 80] Bullish | ID= 75425469868 | M=[0,1,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,1,1,1,1,0,0,0,1,1,0,0,0,1,0,0]\n", " [ 81] Bearish | ID= 195189967611 | M=[-1, 0,-1,-1,-1,-1,-1, 0,-1, 0,-1, 0, 0, 0,-1, 0,-1, 0,-1,-1,-1, 0, 0, 0,-1, 0, 0,-1,-1,-1, 0,-1, 0,-1,-1, 0,-1, 0]\n", " [ 82] Bearish | ID= 225512663559 | M=[-1,-1, 0, 0, 0, 0, 0, 0,-1, 0,-1, 0,-1, 0, 0, 0,-1, 0,-1,-1, 0, 0,-1,-1, 0, 0, 0, 0, 0, 0,-1, 0, 0,-1, 0,-1,-1, 0]\n", " [ 83] Bearish | ID= 78254493955 | M=[-1, 0, 0, 0, 0, 0, 0,-1, 0, 0, 0,-1, 0,-1,-1, 0, 0,-1, 0,-1, 0,-1, 0, 0, 0, 0,-1,-1,-1, 0, 0, 0,-1, 0, 0,-1, 0, 0]\n", " [ 84] Bullish | ID= 389605294658 | M=[1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,1,0,1,1,0,1]\n", " [ 85] Bearish | ID= 373561087563 | M=[-1, 0,-1, 0, 0,-1, 0, 0,-1,-1, 0,-1, 0,-1,-1,-1, 0, 0,-1,-1,-1,-1,-1,-1, 0, 0,-1,-1,-1,-1,-1, 0,-1,-1, 0,-1, 0,-1]\n", " [ 86] Bullish | ID= 444857134536 | M=[0,0,1,0,0,1,1,1,0,1,1,0,1,0,0,1,0,1,1,0,0,0,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1]\n", " [ 87] Bearish | ID= 490743440237 | M=[ 0,-1,-1, 0,-1,-1, 0,-1,-1, 0, 0, 0,-1, 0,-1, 0,-1,-1, 0,-1, 0, 0,-1, 0,-1, 0, 0, 0, 0,-1, 0, 0,-1, 0, 0,-1,-1,-1]\n", " [ 88] Bearish | ID= 379217567217 | M=[ 0, 0, 0,-1,-1,-1,-1,-1, 0,-1,-1,-1, 0,-1,-1, 0, 0, 0, 0, 0,-1, 0, 0,-1,-1, 0,-1, 0, 0,-1, 0, 0, 0, 0,-1,-1, 0,-1]\n", " [ 89] Bullish | ID= 225620347090 | M=[1,0,0,1,0,1,1,0,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,1,0]\n", " [ 90] Bearish | ID= 222579730557 | M=[ 0,-1,-1,-1,-1,-1, 0, 0, 0, 0,-1, 0,-1, 0, 0,-1, 0, 0,-1, 0, 0,-1,-1, 0,-1, 0, 0,-1, 0,-1,-1,-1,-1, 0, 0,-1,-1, 0]\n", " [ 91] Bearish | ID= 191729915761 | M=[ 0, 0, 0,-1,-1,-1, 0,-1,-1,-1, 0,-1, 0,-1, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1, 0,-1, 0, 0,-1,-1, 0,-1, 0]\n", " [ 92] Bearish | ID= 119739270581 | M=[ 0,-1, 0,-1,-1, 0,-1,-1, 0,-1, 0, 0, 0,-1, 0, 0, 0,-1, 0, 0, 0, 0, 0,-1, 0, 0, 0, 0,-1,-1,-1,-1,-1, 0,-1,-1, 0, 0]\n", " [ 93] Bullish | ID= 485971249076 | M=[0,1,0,1,1,0,1,1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,1,1,1]\n", " [ 94] Bearish | ID= 216427290349 | M=[ 0,-1,-1, 0,-1,-1,-1, 0,-1,-1,-1,-1, 0,-1, 0, 0,-1, 0, 0,-1, 0, 0, 0, 0, 0,-1, 0, 0,-1,-1, 0, 0,-1, 0, 0,-1,-1, 0]\n", " [ 95] Bearish | ID= 425495675577 | M=[ 0, 0,-1,-1,-1, 0,-1, 0,-1, 0, 0, 0, 0,-1,-1, 0, 0,-1, 0, 0, 0, 0,-1,-1, 0, 0, 0,-1, 0, 0, 0,-1,-1, 0, 0, 0,-1,-1]\n", " [ 96] Bearish | ID= 63855804407 | M=[-1,-1, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1, 0,-1,-1, 0, 0, 0, 0,-1,-1,-1,-1, 0,-1,-1, 0,-1,-1,-1, 0, 0, 0]\n", " [ 97] Bearish | ID= 69480015969 | M=[ 0, 0, 0, 0,-1,-1, 0, 0, 0, 0,-1, 0,-1,-1,-1, 0, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1,-1, 0,-1, 0, 0, 0, 0, 0, 0,-1, 0, 0]\n", " [ 98] Bearish | ID= 256615250465 | M=[ 0, 0, 0, 0,-1, 0, 0, 0,-1, 0,-1,-1,-1,-1,-1,-1, 0,-1, 0,-1,-1,-1, 0,-1,-1,-1,-1,-1,-1, 0,-1,-1,-1, 0,-1,-1,-1, 0]\n", " [ 99] Bullish | ID= 488221437982 | M=[1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,1,1,0,1,0,1,1,0,0,0,1,1,1]\n", " [100] Bearish | ID= 89681994059 | M=[-1, 0,-1, 0, 0,-1, 0,-1, 0, 0, 0, 0,-1, 0,-1, 0,-1,-1, 0,-1,-1,-1, 0,-1, 0, 0, 0, 0,-1,-1,-1, 0, 0,-1, 0,-1, 0, 0]\n", "\n", "==========================================================================\n", " OUTPUT 2 — SYMBOLIC SEQUENCES (Σ, length 38)\n", " Format: [#] Direction | PatternID | Σ = σ_0 σ_1 … σ_37\n", "==========================================================================\n", " [ 1] Bullish | ID= 167790361200 | Σ = = = = > > > = = > = > > > = > > = > = > = = = > = = = > = = = > > > = = > =\n", " [ 2] Bearish | ID= 112296131307 | Σ = < = < = < < < = < = < < < < < = < < < < = < = < = < = = < = = = < = < < = =\n", " [ 3] Bullish | ID= 369064015028 | Σ = = > = > > = > = = > = > > > > > = > > = > > > > = > > = > > > > = > = > = >\n", " [ 4] Bearish | ID= 397679224723 | Σ = < = = < = = < < < < = = < < = < < < = = = = < < < < = < = = < = = < < < = <\n", " [ 5] Bullish | ID= 37927295500 | Σ = = > > = = = = = > = > > = = > = = > = = > = > = = > = > = > > = = = > = = =\n", " [ 6] Bullish | ID= 286312365648 | Σ = = = = > = > = = > > > > > > > > > = > = = = > > = = > = > = > = > = = = = >\n", " [ 7] Bearish | ID= 299333570369 | Σ = = = = = = < = < < < < = = < < < < = < = < = < < = = = < < = < < = < = = = <\n", " [ 8] Bearish | ID= 180886373753 | Σ = = = < < < < = < = < = = = = = < < = < = < = < < = < < < = = = = < = < = < =\n", " [ 9] Bullish | ID= 367632183586 | Σ = > = = = > = = > = = = > > > > > = > = > = = > = = = > > = = > > = > = > = >\n", " [ 10] Bullish | ID= 524916622536 | Σ = = = > = = > > = = > = = = = = = = = > > > > = > > > = > > = = = > = > > > >\n", " [ 11] Bullish | ID= 31775345360 | Σ = = = = > = > > = > = > = = > = > = > = > > > > > = > = = > > = > > > = = = =\n", " [ 12] Bullish | ID= 425035078904 | Σ = = = > > > > > = = > > > = = > = = = = > = = = = > > = > > > > = > = = = > >\n", " [ 13] Bullish | ID= 220258295520 | Σ = = = = = > > > = > > > > = > > = > = > = > > = = = = > = = > = > > = = > > =\n", " [ 14] Bearish | ID= 369470979075 | Σ = < = = = = = = = = < < < < = < < < < < = < = = = < < = = = = = = < < = < = <\n", " [ 15] Bearish | ID= 318324601329 | Σ = = = = < < < < < = = = < < < < < < < < < = = < < = < < < = = = = < = < = = <\n", " [ 16] Bearish | ID= 147404907673 | Σ = = = < < = = < = = < = = < < = = = < = = = = = = < = = < = < = = < = = = < =\n", " [ 17] Bearish | ID= 371069085929 | Σ = = = < = < < < = = = < = < < < = = = = < < < = < = < = = < < = = < < = < = <\n", " [ 18] Bearish | ID= 2330012161 | Σ = = = = = = = = = < = < = < = = < = = = = < < < = < = < = = = < = = = = = = =\n", " [ 19] Bearish | ID= 419107634965 | Σ = = < = < = = = < < < < < < < < = < = = = = < < = = < = < = = < < = = = = < <\n", " [ 20] Bullish | ID= 479318507150 | Σ = > > > = = = > = > > > > > > > > > = > > = = > > = = > > = = > > > > > = > >\n", " [ 21] Bearish | ID= 319608669591 | Σ = < < = < = = < < = < = = = < = < = = < = < = = = < = < = < < = = < = < = = <\n", " [ 22] Bullish | ID= 534756389730 | Σ = > = = = > > = > > = = > > > > = > > = > > > > > = = = = = = > = = > > > > >\n", " [ 23] Bullish | ID= 234063416010 | Σ = > = > = = > > = > = > = = > = = = > = = = > = > > > > > > > = = > > = > > =\n", " [ 24] Bullish | ID= 259589951898 | Σ = > = > > = = > > = = = > = > = = = > = = = > > = = = = > > > = = = > > > > =\n", " [ 25] Bullish | ID= 33069957648 | Σ = = = = > = = = = > = = = = = > > > > > > = = = > > = = > > = > > > > = = = =\n", " [ 26] Bullish | ID= 386376948582 | Σ = > > = = > > = > > = > > = > = = = > > > = > > > = > = > > > > > = = > > = >\n", " [ 27] Bearish | ID= 137526752343 | Σ = < < = < = < = = = < = < < = < < < = < < < = = < = < = = = = = = = = = = < =\n", " [ 28] Bearish | ID= 466989440093 | Σ = = < < < = < = = = < < < = < = < = < < < < = < = < = < < < = < = = < < = < <\n", " [ 29] Bearish | ID= 30541739875 | Σ = < = = = < < = < < < = < < < < < = < < = < < = = = < < < = = = < < < = = = =\n", " [ 30] Bullish | ID= 256289197764 | Σ = = > = = = > > = > > > = = > > = > > = = = = = = = > > = > = > > > = > > > =\n", " [ 31] Bullish | ID= 463423679574 | Σ = > > = > = > = = = > > = > = = = = > = > > = = = > > = = > > > > > = > = > >\n", " [ 32] Bearish | ID= 269170438337 | Σ = = = = = = < < = = = = < < < < = < < < = = < < < < = < = < = < = < < < < < =\n", " [ 33] Bearish | ID= 535223428555 | Σ = < = < = = < < < = < = = < < = < = < < = = < < < = < < < = = < = = < < < < <\n", " [ 34] Bearish | ID= 295288782235 | Σ = < = < < = = < < = < < < < = = < = < = < = = < = = = = = = < < = = < = = = <\n", " [ 35] Bearish | ID= 343554777039 | Σ = < < < = = < < < < < < < = < < < = < = < < < = < = < < < < < < < < < < = = <\n", " [ 36] Bearish | ID= 547418250595 | Σ = < = = = < < = < = < < < = = < < < = < = < = < = = < = < < < = < < < < < < <\n", " [ 37] Bullish | ID= 177868470766 | Σ = > > > = > > > > = = > > > > = > = = > = = > > > = = > = > > = > = = > = > =\n", " [ 38] Bullish | ID= 294601994596 | Σ = = > = = > > = > = = = > > = > > = > = = > = > > > > = > = = > = = > = = = >\n", " [ 39] Bullish | ID= 57969416624 | Σ = = = = > > = > > = = > > = = = > > > > > > = = > > > > > > > = > = > > = = =\n", " [ 40] Bullish | ID= 27863637690 | Σ = > = > > > = > = > > > > = > = > = > > = = > > = = > > > > > = = > > = = = =\n", " [ 41] Bullish | ID= 224985691976 | Σ = = = > = = > = > > > = > > = = > = = = > > = = = > = = = > > = = = > = > > =\n", " [ 42] Bearish | ID= 487090078369 | Σ = = = = = < = < = < = = = = < < = = < = < = < < = = = < = < < = < = = = < < <\n", " [ 43] Bullish | ID= 4141515848 | Σ = = = > = = > = = = > = = = = > = > = > > = > > = > > = > > > > = = = = = = =\n", " [ 44] Bullish | ID= 197888556010 | Σ = > = > = > > > > > = > > > = > > > = = > = = = > > = = > = = = = > > > = > =\n", " [ 45] Bearish | ID= 434117278173 | Σ = = < < < = < < < = = < < < < < < < < = = < < = < < = = < = = = < = < = = < <\n", " [ 46] Bullish | ID= 538864504842 | Σ = > = > = = = = = = = = > = > > > > = = > = > > = > > = > > > = > = > > > > >\n", " [ 47] Bullish | ID= 95860229666 | Σ = > = = = > = = = > > = = = = = > > > = > > = > > = = = > = > = = > > = > = =\n", " [ 48] Bearish | ID= 175140355631 | Σ = < < < = < = = = < < < < < = < < = < < = < = = < < < = = = < < = = = < = < =\n", " [ 49] Bearish | ID= 229634663885 | Σ = = < < = = < < < = < = = < < < = < = < = = < = < < < = < < < = < = < = < < =\n", " [ 50] Bearish | ID= 215659952263 | Σ = < < = = = = < = = = < < < = < < = < = < = < = = < < = < < = = = < = = < < =\n", " [ 51] Bearish | ID= 88951779299 | Σ = < = = = < < < < < < < = < < = = = = = < < < < < = < = < < = < = = < = < = =\n", " [ 52] Bearish | ID= 93340530549 | Σ = = < = < < < = < < < = < < < = < < < = = = = < < < = < < < = < < = < = < = =\n", " [ 53] Bearish | ID= 520761088879 | Σ = < < < = < < = < < = < < = = < < < < = = = < < < < < < < < = = < = = < < < <\n", " [ 54] Bullish | ID= 427826220636 | Σ = = > > > = > = = > > > = = = = = > > > = > > = = = > > > = = > > > = = = > >\n", " [ 55] Bullish | ID= 483254597582 | Σ = > > > = = > > > > > = > > > > > > > = > > = = = = > = = = = > = = = = > > >\n", " [ 56] Bullish | ID= 99519992790 | Σ = > > = > = > > > > = = > = = > = > = > > = > > > > = > = > = = > > > = > = =\n", " [ 57] Bullish | ID= 318036678048 | Σ = = = = = > = > > = > = > = = > = > > = > > > = = = > > = = = = = > = > = = >\n", " [ 58] Bullish | ID= 465354264024 | Σ = = = > > = > > > = > > = = = > = > > = = = > = > = = > > = > = = = > > = > >\n", " [ 59] Bearish | ID= 257366456073 | Σ = = = < = = = = < < < = < < < = = = < < < < = = = = < < = < < < < < = < < < =\n", " [ 60] Bearish | ID= 438801001563 | Σ = < = < < = < = = = < < = < < < < < = = < = = < = < = < = < = = = < < = = < <\n", " [ 61] Bullish | ID= 524444180016 | Σ = = = = > > = = = > > > > = = = > > > > = = > = > > = > > = = = = > = > > > >\n", " [ 62] Bearish | ID= 326267911843 | Σ = < = = = < = < = < < < < < = = < = < = < = = = < < < = < < < < < < = < = = <\n", " [ 63] Bullish | ID= 79552418304 | Σ = = = = = = = = = > = = > = = > > = = = > > = > > = > = = = = > = > = = > = =\n", " [ 64] Bearish | ID= 47263338937 | Σ = = = < < < = < < = = = < = < = < = < < < = = = < = = = = = = = < < = < = = =\n", " [ 65] Bearish | ID= 175808306983 | Σ = < < = = < = = < < < < < = < < < = < < < < < < = < < < = < < < = = = < = < =\n", " [ 66] Bullish | ID= 482859874250 | Σ = > = > = = > > > > > = > > > > = = = = > > = > = = > > = > > = = = = = > > >\n", " [ 67] Bullish | ID= 437378623348 | Σ = = > = > > > = > > > = = > = = = = > > = = > > > = > = > = > > > = > = = > >\n", " [ 68] Bearish | ID= 400478158341 | Σ = = < = = = = = = < < < < < = < < < = < < = < = = < < < < < = = < = < < < = <\n", " [ 69] Bearish | ID= 401295312607 | Σ = < < < < = < < = < < = = = = < = = = = < = = = < < < < = < < = < = < < < = <\n", " [ 70] Bullish | ID= 418612558654 | Σ = > > > > > = = > > = > > > = > = = = = = = > = > > > = > > > = > = = = = > >\n", " [ 71] Bullish | ID= 85827056944 | Σ = = = = > > = = > = > = > > > > = = = = > > = > > > = > > > > > > > = = > = =\n", " [ 72] Bullish | ID= 128616350616 | Σ = = = > > = = > > > = = = = > > > = = = = > = = = > = = > > > > > = > > > = =\n", " [ 73] Bearish | ID= 314776501053 | Σ = = < < < < = = < < = < < < = = = = < = = < = = = < = < = = < = < = = < = = <\n", " [ 74] Bullish | ID= 210744214082 | Σ = > = = = = > = = > = = = = = > > = > = > = > = > = = = > = = = > = = = > > =\n", " [ 75] Bearish | ID= 231440688619 | Σ = < = < = < < < < = < = = < = < = = = = < < < < = < = = = < < < < = < = < < =\n", " [ 76] Bearish | ID= 266647084447 | Σ = < < < < = = < < = < < < = = < < < < = = < < = < = < = < = = = = < < < < < =\n", " [ 77] Bullish | ID= 198293842838 | Σ = > > = > = = > > > = > = > > > > > = > > > = = > > = > = > = = = > > > = > =\n", " [ 78] Bearish | ID= 357662675445 | Σ = = < = < < < < < = = = < = < = < < = < < = < = = < < = = = < = < < = = < = <\n", " [ 79] Bullish | ID= 273125219496 | Σ = = = > = > = > = = > > > = = = = = = > = = = > > > > = > = = > > > > > > > =\n", " [ 80] Bullish | ID= 75425469868 | Σ = = > > = > = > > = > = > = > = > = > = > > = > > > > > = = = > > = = = > = =\n", " [ 81] Bearish | ID= 195189967611 | Σ = < = < < < < < = < = < = = = < = < = < < < = = = < = = < < < = < = < < = < =\n", " [ 82] Bearish | ID= 225512663559 | Σ = < < = = = = = = < = < = < = = = < = < < = = < < = = = = = = < = = < = < < =\n", " [ 83] Bearish | ID= 78254493955 | Σ = < = = = = = = < = = = < = < < = = < = < = < = = = = < < < = = = < = = < = =\n", " [ 84] Bullish | ID= 389605294658 | Σ = > = = = = > = = > = = = = = = > = = > = = > = = > > = > > = > = > = > > = >\n", " [ 85] Bearish | ID= 373561087563 | Σ = < = < = = < = = < < = < = < < < = = < < < < < < = = < < < < < = < < = < = <\n", " [ 86] Bullish | ID= 444857134536 | Σ = = = > = = > > > = > > = > = = > = > > = = = > > > = = > = = > > > > = = > >\n", " [ 87] Bearish | ID= 490743440237 | Σ = = < < = < < = < < = = = < = < = < < = < = = < = < = = = = < = = < = = < < <\n", " [ 88] Bearish | ID= 379217567217 | Σ = = = = < < < < < = < < < = < < = = = = = < = = < < = < = = < = = = = < < = <\n", " [ 89] Bullish | ID= 225620347090 | Σ = > = = > = > > = = = > = = > = > = > = = = = = = = = > = = = > = = > = > > =\n", " [ 90] Bearish | ID= 222579730557 | Σ = = < < < < < = = = = < = < = = < = = < = = < < = < = = < = < < < < = = < < =\n", " [ 91] Bearish | ID= 191729915761 | Σ = = = = < < < = < < < = < = < = = < < < < < < < < < = = = < = < = = < < = < =\n", " [ 92] Bearish | ID= 119739270581 | Σ = = < = < < = < < = < = = = < = = = < = = = = = < = = = = < < < < < = < < = =\n", " [ 93] Bullish | ID= 485971249076 | Σ = = > = > > = > > > > = = = > > = = > = = > = = = > > = = > = = > = = = > > >\n", " [ 94] Bearish | ID= 216427290349 | Σ = = < < = < < < = < < < < = < = = < = = < = = = = = < = = < < = = < = = < < =\n", " [ 95] Bearish | ID= 425495675577 | Σ = = = < < < = < = < = = = = < < = = < = = = = < < = = = < = = = < < = = = < <\n", " [ 96] Bearish | ID= 63855804407 | Σ = < < = < < < < < < < < < < = = = < = < < = = = = < < < < = < < = < < < = = =\n", " [ 97] Bearish | ID= 69480015969 | Σ = = = = = < < = = = = < = < < < = = < = < = < = < = < < = < = = = = = = < = =\n", " [ 98] Bearish | ID= 256615250465 | Σ = = = = = < = = = < = < < < < < < = < = < < < = < < < < < < = < < < = < < < =\n", " [ 99] Bullish | ID= 488221437982 | Σ = > > > > = = = = = = = > > > > > > = = = = > = = = > > = > = > > = = = > > >\n", " [100] Bearish | ID= 89681994059 | Σ = < = < = = < = < = = = = < = < = < < = < < < = < = = = = < < < = = < = < = =\n", "\n", "==========================================================================\n", " OUTPUT 3 — DEVELOPING POC CHARTS (100 patterns)\n", "==========================================================================\n", " [SAVED] TopoDevPOC_n39_100samples.png\n", "\n", " ASCII CLI Charts — first 10 samples (right side = C_0 = newest)\n", "\n", " [ 1] Bullish | ID=167790361200 | strict_moves=17/38\n", " POC range: oldest=50 → newest=67\n", " ┌───────────────────────────────────────┐\n", " │ ●····│\n", " │ ·●··●● │\n", " │ ·●●● │\n", " │ ·●● │\n", " │ ···●···●·● │\n", " │ ●●···● │\n", " │·●··● │\n", " └───────────────────────────────────────┘\n", " Σ (first 12): = = = > > > = = > = > > …\n", "\n", " [ 2] Bearish | ID=112296131307 | strict_moves=22/38\n", " POC range: oldest=50 → newest=28\n", " ┌───────────────────────────────────────┐\n", " │··●● │\n", " │ ·●···●··●·● │\n", " │ ·●·●●● │\n", " │ ●·●● │\n", " │ ●●●·● │\n", " │ ·●●●·● │\n", " │ ·●·│\n", " └───────────────────────────────────────┘\n", " Σ (first 12): < = < = < < < = < = < < …\n", "\n", " [ 3] Bullish | ID=369064015028 | strict_moves=25/38\n", " POC range: oldest=50 → newest=75\n", " ┌───────────────────────────────────────┐\n", " │ ●·●··│\n", " │ ●·●··●·● │\n", " │ ·●●●● │\n", " │ ●●·●● │\n", " │ ·●●·●● │\n", " │ ·●●●● │\n", " │●·●·● │\n", " └───────────────────────────────────────┘\n", " Σ (first 12): = > = > > = > = = > = > …\n", "\n", " [ 4] Bearish | ID=397679224723 | strict_moves=21/38\n", " POC range: oldest=50 → newest=29\n", " ┌───────────────────────────────────────┐\n", " │●·● │\n", " │ ●●··●··● │\n", " │ ·●●● │\n", " │ ●····●●● │\n", " │ ·●●··● │\n", " │ ●●●··● │\n", " │ ··●·│\n", " └───────────────────────────────────────┘\n", " Σ (first 12): < = = < = = < < < < = = …\n", "\n", " [ 5] Bullish | ID=37927295500 | strict_moves=14/38\n", " POC range: oldest=50 → newest=64\n", " ┌───────────────────────────────────────┐\n", " │ ●··│\n", " │ ·●·····● │\n", " │ ··●● │\n", " │ ·●··●··● │\n", " │ ·●··● │\n", " │ ●·● │\n", " │···●···● │\n", " └───────────────────────────────────────┘\n", " Σ (first 12): = > > = = = = = > = > > …\n", "\n", " [ 6] Bullish | ID=286312365648 | strict_moves=19/38\n", " POC range: oldest=50 → newest=69\n", " ┌───────────────────────────────────────┐\n", " │ ·●····│\n", " │ ●●··● │\n", " │ ●●● │\n", " │ ·●●●● │\n", " │ ··●●···● │\n", " │ ·●·●·● │\n", " │●····● │\n", " └───────────────────────────────────────┘\n", " Σ (first 12): = = = > = > = = > > > > …\n", "\n", " [ 7] Bearish | ID=299333570369 | strict_moves=19/38\n", " POC range: oldest=50 → newest=31\n", " ┌───────────────────────────────────────┐\n", " │●···● │\n", " │ ·●●·● │\n", " │ ●···●● │\n", " │ ·●·●·●● │\n", " │ ●●··● │\n", " │ ●●● │\n", " │ ·●······│\n", " └───────────────────────────────────────┘\n", " Σ (first 12): = = = = = < = < < < < = …\n", "\n", " [ 8] Bearish | ID=180886373753 | strict_moves=18/38\n", " POC range: oldest=50 → newest=32\n", " ┌───────────────────────────────────────┐\n", " │·●·● │\n", " │ ·●····●● │\n", " │ ●·●● │\n", " │ ·●·●·● │\n", " │ ●·····●·● │\n", " │ ·●●● │\n", " │ ●···│\n", " └───────────────────────────────────────┘\n", " Σ (first 12): = = < < < < = < = < = = …\n", "\n", " [ 9] Bullish | ID=367632183586 | strict_moves=18/38\n", " POC range: oldest=50 → newest=68\n", " ┌───────────────────────────────────────┐\n", " │ ···●·│\n", " │ ●···●··● │\n", " │ ●●● │\n", " │ ··●·●·● │\n", " │ ··●●···● │\n", " │ ·●·●● │\n", " │●·● │\n", " └───────────────────────────────────────┘\n", " Σ (first 12): > = = = > = = > = = = > …\n", "\n", " [10] Bullish | ID=524916622536 | strict_moves=18/38\n", " POC range: oldest=50 → newest=68\n", " ┌───────────────────────────────────────┐\n", " │ ··●···│\n", " │ ········●··●● │\n", " │ ●●● │\n", " │ ●●·● │\n", " │ ···●●·● │\n", " │ ●●·● │\n", " │●● │\n", " └───────────────────────────────────────┘\n", " Σ (first 12): = = > = = > > = = > = = …\n", "\n", "==========================================================================\n", " SUMMARY\n", "==========================================================================\n", " n (candles) = 39\n", " Transitions per pattern = 38\n", " Total patterns [2^39] = 549,755,813,888\n", " Bullish [2^38] = 274,877,906,944\n", " Bearish [2^38] = 274,877,906,944\n", " Matrix B_n validated = 274,877,906,944 ✓\n", " Samples generated = 100\n", " Chart file = TopoDevPOC_n39_100samples.png\n", " Compute device = cuda\n", " Wall-clock (sample+decode) = 13032.35 ms\n", "==========================================================================\n", "\n", " CONVERSION FORMULAS (tex Sec. V)\n", " Symbolic → Ternary:\n", " Bullish: '>' → +1, '=' → 0\n", " Bearish: '<' → -1, '=' → 0\n", " Ternary → Symbolic:\n", " +1 → '>', 0 → '=', -1 → '<'\n", "\n", " TEMPORAL CONVENTION:\n", " Chart x-axis: left = C_{-38} (oldest) → right = C_0 (newest)\n", " Bullish pattern: POC non-increasing toward right (higher on left)\n", " Bearish pattern: POC non-decreasing toward right (lower on left)\n", "==========================================================================\n" ] } ], "source": [ "#!/usr/bin/env python3\n", "\"\"\"\n", "TopoDevPOC_n39.py\n", "Topologically Unique Developing Point of Control Patterns\n", "Pre-market K-Lines, n = 39 three-minute candlesticks\n", "\n", "Paper : TopoDevPOC.tex (ConQ Research Team, Continual Quasars)\n", "Compute: Vectorized NumPy + GPU Torch (T4) + Warp branchless ops\n", " Architectural patterns from core_engine_v11.py (Hyper-Warp Edition)\n", "\n", "Outputs (CLI):\n", " 1. Total combination count for n=39\n", " 2. Matrix state-transition validation\n", " 3. 100 random ternary matrices (1×38 each)\n", " 4. 100 random symbolic sequences (length-38 strings)\n", " 5. 100 developing_poc charts saved as PNG + ASCII CLI preview\n", "\n", "Run on Google Colab T4:\n", " !python TopoDevPOC_n39.py\n", "\"\"\"\n", "\n", "# ── stdlib ────────────────────────────────────────────────────────────────────\n", "import os, sys, time, math\n", "import numpy as np\n", "\n", "# ── matplotlib (non-interactive for Colab CLI) ────────────────────────────────\n", "import matplotlib\n", "matplotlib.use('Agg')\n", "import matplotlib.pyplot as plt\n", "import matplotlib.ticker as mticker\n", "\n", "# ── GPU setup (T4 Colab) ─────────────────────────────────────────────────────\n", "try:\n", " import torch\n", " HAS_CUDA = torch.cuda.is_available()\n", " DEVICE = 'cuda' if HAS_CUDA else 'cpu'\n", "except ImportError:\n", " HAS_CUDA = False\n", " DEVICE = 'cpu'\n", " torch = None\n", "\n", "# Optional Warp (core_engine_v11.py pattern) ─────────────────────────────────\n", "HAS_WARP = False\n", "try:\n", " import warp as wp\n", " wp.init()\n", " wp.set_module_options({\"enable_backward\": False, \"fast_math\": True, \"max_unroll\": 8})\n", " HAS_WARP = bool(wp.get_cuda_devices())\n", "except Exception:\n", " pass\n", "\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "# CONSTANTS (tex Section II)\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "N = 39 # pre-market 3-min candles (C_0 … C_{-(n-1)})\n", "N_TRANS = N - 1 # 38 adjacent-pair relations\n", "N_SAMPLES = 100\n", "SEED = int(time.time() * 1000) & 0x7FFFFFFF\n", "\n", "SEP = \"=\" * 74\n", "\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "# 0. HEADER\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "print(SEP)\n", "print(\" TopoDevPOC — Developing POC Pattern Enumerator\")\n", "print(f\" n = {N} candles | {N_TRANS} transitions | device = {DEVICE}\")\n", "if HAS_CUDA and torch:\n", " print(f\" GPU = {torch.cuda.get_device_name(0)}\")\n", "if HAS_WARP:\n", " print(f\" Warp = enabled (branchless kernel path)\")\n", "print(SEP)\n", "\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "# SECTION 1 — COMBINATORIAL ENUMERATION (tex Theorem, Sec. III)\n", "#\n", "# Bullish: each of (n-1) transitions ∈ {>, =} → 2^(n-1) patterns\n", "# Bearish: each of (n-1) transitions ∈ {<, =} → 2^(n-1) patterns\n", "# Total : 2^(n-1) + 2^(n-1) = 2^n (disjoint families)\n", "# n=39 : 2^39 = 549,755,813,888\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "TOTAL = 1 << N # exact Python int (arbitrary precision)\n", "HALF = 1 << (N - 1)\n", "\n", "print(f\"\\n[THEOREM] Total unique developing POC patterns for n={N}\")\n", "print(f\" Bullish (non-increasing) : 2^{N-1} = {HALF:,}\")\n", "print(f\" Bearish (non-decreasing) : 2^{N-1} = {HALF:,}\")\n", "print(f\" Total (2^{N}) : {TOTAL:,}\")\n", "\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "# SECTION 2 — MATRIX STATE-TRANSITION VALIDATION (tex Sec. IV)\n", "#\n", "# States : S_0 (equality), S_± (strict move)\n", "# A = [[1,1],[1,1]] (fully-connected 2-state digraph)\n", "# v_0 = [1,1]^T (both states reachable initially)\n", "#\n", "# B_n = 1^T · A^(n-2) · v_0\n", "# = 2^(n-3) · 1^T · A · 1 (using A^k = 2^(k-1)·A for k≥1)\n", "# = 2^(n-3) · 4 = 2^(n-1) per direction\n", "#\n", "# Implementation: exact Python-int matrix exponentiation (no float rounding)\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "\n", "def _mm2(A, B):\n", " \"\"\"Exact 2×2 matrix multiply with Python arbitrary-precision ints.\"\"\"\n", " return [\n", " [A[0][0]*B[0][0] + A[0][1]*B[1][0], A[0][0]*B[0][1] + A[0][1]*B[1][1]],\n", " [A[1][0]*B[0][0] + A[1][1]*B[1][0], A[1][0]*B[0][1] + A[1][1]*B[1][1]],\n", " ]\n", "\n", "def _mpow2(M, k):\n", " \"\"\"Fast 2×2 matrix power, exact ints, O(log k).\"\"\"\n", " if k == 0: return [[1,0],[0,1]]\n", " if k == 1: return M\n", " h = _mpow2(M, k >> 1)\n", " s = _mm2(h, h)\n", " return s if (k & 1) == 0 else _mm2(s, M)\n", "\n", "A_mat = [[1,1],[1,1]]\n", "v0 = [1, 1]\n", "A_pow = _mpow2(A_mat, N - 2)\n", "# 1^T · A^(n-2) · v0\n", "Av0_0 = A_pow[0][0]*v0[0] + A_pow[0][1]*v0[1]\n", "Av0_1 = A_pow[1][0]*v0[0] + A_pow[1][1]*v0[1]\n", "B_n = Av0_0 + Av0_1 # = 1^T · (A^(n-2)·v0)\n", "\n", "print(f\"\\n[MATRIX] A = [[1,1],[1,1]] | v_0 = [1,1]^T\")\n", "print(f\" A^{N-2} = [[{A_pow[0][0]}, {A_pow[0][1]}],\")\n", "print(f\" [{A_pow[1][0]}, {A_pow[1][1]}]]\")\n", "print(f\" B_{N} = 1^T · A^{N-2} · v_0 = {B_n:,}\")\n", "print(f\" Expected 2^{{n-1}} = {HALF:,}\")\n", "assert B_n == HALF, f\"Matrix B_n mismatch: {B_n} ≠ {HALF}\"\n", "assert 2 * B_n == TOTAL, f\"Total mismatch: {2*B_n} ≠ {TOTAL}\"\n", "print(f\" [OK] 2 × {B_n:,} = {TOTAL:,} ✓\")\n", "\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "# SECTION 3 — PATTERN ENCODING SCHEME\n", "#\n", "# Each of the 2^39 patterns maps bijectively to a 39-bit integer:\n", "# bit 0 : direction (0 = Bullish, 1 = Bearish)\n", "# bits 1 … N-1 : transitions (1 = strict move, 0 = equality)\n", "#\n", "# pattern_id ∈ [0, 2^39) uniquely identifies every valid pattern.\n", "#\n", "# Ternary matrix m ∈ {+1,0}^(n-1) for bullish,\n", "# m ∈ {-1,0}^(n-1) for bearish.\n", "# Bijection: m_k = sign(direction) × trans_bit_k\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "# SECTION 4 — GPU-ACCELERATED RANDOM SAMPLING\n", "# Generate (N_SAMPLES × N) binary matrix at once on T4 GPU.\n", "# Inspired by core_engine_v11.py XOR-shift PRNG kernel design.\n", "# bits[:,0] = direction flags\n", "# bits[:,1:] = N_TRANS transition flags per pattern\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "\n", "t_sample = time.perf_counter()\n", "\n", "if HAS_WARP:\n", " # ── Warp branchless path (core_engine_v11.py style) ─────────────────────\n", " # Launch one thread per sample; XOR-shift fills N bits per thread.\n", " _seed_wp = SEED\n", "\n", " @wp.kernel\n", " def k_rng_bits(seed: int, N_cols: int,\n", " out: wp.array(dtype=wp.int8)):\n", " tid = wp.tid()\n", " rng = wp.uint32(seed) ^ wp.uint32(tid)\n", " if rng == wp.uint32(0):\n", " rng = wp.uint32(123456789)\n", " base = tid * N_cols\n", " for col in range(N_cols):\n", " rng = rng ^ (rng << wp.uint32(13))\n", " rng = rng ^ (rng >> wp.uint32(17))\n", " rng = rng ^ (rng << wp.uint32(5))\n", " out[base + col] = wp.int8(int(rng) & 1)\n", "\n", " out_wp = wp.zeros(N_SAMPLES * N, dtype=wp.int8, device='cuda')\n", " wp.launch(k_rng_bits, dim=N_SAMPLES, block_dim=128,\n", " inputs=[_seed_wp, N, out_wp], device='cuda')\n", " wp.synchronize()\n", " bits_np = out_wp.numpy().reshape(N_SAMPLES, N)\n", " print(f\"\\n[SAMPLE] {N_SAMPLES} patterns sampled via Warp XOR-shift kernel\")\n", "\n", "elif HAS_CUDA and torch is not None:\n", " # ── Torch GPU path ───────────────────────────────────────────────────────\n", " gen = torch.Generator(device='cuda')\n", " gen.manual_seed(SEED)\n", " bits_t = torch.randint(0, 2, (N_SAMPLES, N), device='cuda',\n", " generator=gen, dtype=torch.int8)\n", " bits_np = bits_t.cpu().numpy()\n", " print(f\"\\n[SAMPLE] {N_SAMPLES} patterns sampled on GPU (torch.randint)\")\n", "\n", "else:\n", " # ── CPU NumPy fallback ────────────────────────────────────────────────────\n", " rng_cpu = np.random.default_rng(SEED)\n", " bits_np = rng_cpu.integers(0, 2, size=(N_SAMPLES, N), dtype=np.int8)\n", " print(f\"\\n[SAMPLE] {N_SAMPLES} patterns sampled on CPU (NumPy)\")\n", "\n", "sample_ms = (time.perf_counter() - t_sample) * 1e3\n", "print(f\" Sampling time: {sample_ms:.2f} ms\")\n", "\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "# SECTION 5 — VECTORISED DECODING (NumPy, no Python loops over patterns)\n", "#\n", "# bits[:,0] → direction array (0=Bullish, 1=Bearish), shape (100,)\n", "# bits[:,1:] → trans array, shape (100, 38)\n", "# ternary_mat: +trans if Bullish, -trans if Bearish → shape (100, 38)\n", "# sign: Bullish→+1, Bearish→-1, broadcast multiply\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "\n", "dir_bits = bits_np[:, 0].astype(np.int8) # 0 or 1\n", "trans = bits_np[:, 1:].astype(np.int8) # (100,38), values 0 or 1\n", "signs = 1 - 2 * dir_bits # 0→+1 (bull), 1→-1 (bear)\n", "ternary = (signs[:, None] * trans).astype(np.int8) # (100,38): +1/0/-1\n", "\n", "# Compact 39-bit pattern IDs\n", "pows64 = (np.uint64(1) << np.arange(N, dtype=np.uint64))\n", "pat_ids = (bits_np.astype(np.uint64) * pows64[None, :]).sum(axis=1)\n", "\n", "# Symbolic sequences: vectorised char lookup\n", "# Bullish (sign=+1): trans=1 → '>', trans=0 → '='\n", "# Bearish (sign=-1): trans=1 → '<', trans=0 → '='\n", "SYM_BULL = np.array(['=', '>'], dtype='15d} | M={row_str}\")\n", "\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "# OUTPUT 2 — SYMBOLIC SEQUENCES (length 38)\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "print(f\"\\n{SEP}\")\n", "print(f\" OUTPUT 2 — SYMBOLIC SEQUENCES (Σ, length {N_TRANS})\")\n", "print(f\" Format: [#] Direction | PatternID | Σ = σ_0 σ_1 … σ_37\")\n", "print(SEP)\n", "\n", "for i in range(N_SAMPLES):\n", " d_label = \"Bullish\" if dir_bits[i] == 0 else \"Bearish\"\n", " pid = int(pat_ids[i])\n", " seq_str = ' '.join(sym_matrix[i])\n", " print(f\" [{i+1:3d}] {d_label:7s} | ID={pid:>15d} | Σ = {seq_str}\")\n", "\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "# OUTPUT 3 — CHARTS\n", "# (a) Full matplotlib figure: 10×10 grid, saved to PNG\n", "# (b) ASCII CLI preview for first 10 patterns\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "print(f\"\\n{SEP}\")\n", "print(f\" OUTPUT 3 — DEVELOPING POC CHARTS (100 patterns)\")\n", "print(SEP)\n", "\n", "# ── x-axis: position 0=oldest C_{-(N-1)}, N-1=newest C_0 ──────────────────\n", "x_pos = np.arange(N, dtype=np.float32)\n", "x_tick_pos = [0, 9, 19, 29, N-1]\n", "x_tick_lbl = [f'C_{{-{N-1}}}', f'C_{{-29}}', f'C_{{-19}}', f'C_{{-9}}', 'C_0']\n", "\n", "ROWS, COLS = 10, 10\n", "fig = plt.figure(figsize=(COLS * 3.2, ROWS * 2.0))\n", "fig.suptitle(\n", " f\"TopoDevPOC — 100 Random Developing POC Patterns \"\n", " f\"n={N} pre-market 3-min K-lines\\n\"\n", " f\"Total pattern space: 2^{N} = {TOTAL:,} \"\n", " f\"(Bullish: {HALF:,} | Bearish: {HALF:,})\",\n", " fontsize=10, y=1.005\n", ")\n", "\n", "for i in range(N_SAMPLES):\n", " ax = fig.add_subplot(ROWS, COLS, i + 1)\n", " poc = poc_disp[i]\n", " is_bull = (dir_bits[i] == 0)\n", " color = '#1a6eb5' if is_bull else '#c0392b'\n", " label = 'B↑' if is_bull else 'B↓'\n", "\n", " # Background shade\n", " ax.set_facecolor('#f7f9fc' if is_bull else '#fdf4f4')\n", "\n", " # POC line\n", " ax.plot(x_pos, poc, color=color, linewidth=1.2, zorder=3)\n", "\n", " # Mark strict-move positions (non-zero ternary in display coords)\n", " # Transition k corresponds to display segment [N-2-k, N-1-k]\n", " # Highlight the newer-side node at display index N-1-k = N-1-k\n", " strict_k = np.where(ternary[i] != 0)[0] # transition indices\n", " strict_disp = (N - 1 - strict_k).astype(int) # display x-positions\n", " if strict_disp.size > 0:\n", " ax.scatter(strict_disp, poc[strict_disp],\n", " color=color, s=5, zorder=5, linewidths=0)\n", "\n", " # Flat segments (equality)\n", " flat_k = np.where(ternary[i] == 0)[0]\n", " flat_disp = (N - 1 - flat_k).astype(int)\n", " if flat_disp.size > 0:\n", " ax.scatter(flat_disp, poc[flat_disp],\n", " color='gray', s=3, zorder=4, linewidths=0, alpha=0.5)\n", "\n", " n_strict = int(np.abs(ternary[i]).sum())\n", " pid_short = int(pat_ids[i]) % 10**9 # last 9 digits for readability\n", " ax.set_title(f\"#{i+1} {label} mv={n_strict} …{pid_short:09d}\",\n", " fontsize=5.5, pad=2, color=color)\n", "\n", " ax.set_xlim(-0.5, N - 0.5)\n", " ax.set_xticks(x_tick_pos)\n", " ax.set_xticklabels(['←old', '', '', '', 'new→'], fontsize=3.5)\n", " ax.tick_params(axis='y', labelsize=3.5)\n", " ax.yaxis.set_major_locator(mticker.MaxNLocator(4))\n", " for sp in ('top', 'right'):\n", " ax.spines[sp].set_visible(False)\n", " ax.spines['left'].set_color(color)\n", " ax.spines['left'].set_linewidth(1.5)\n", " ax.spines['bottom'].set_color('#cccccc')\n", "\n", "plt.tight_layout(rect=[0, 0, 1, 1])\n", "chart_path = \"TopoDevPOC_n39_100samples.png\"\n", "plt.savefig(chart_path, dpi=110, bbox_inches='tight')\n", "plt.close(fig)\n", "print(f\" [SAVED] {chart_path}\")\n", "\n", "# ── ASCII CLI chart for first 10 patterns ────────────────────────────────────\n", "H = 7 # chart height in rows\n", "W = 39 # chart width = N\n", "\n", "print(f\"\\n ASCII CLI Charts — first 10 samples (right side = C_0 = newest)\\n\")\n", "for i in range(10):\n", " poc = poc_disp[i]\n", " d_lbl = \"Bullish\" if dir_bits[i] == 0 else \"Bearish\"\n", " pid = int(pat_ids[i])\n", " n_mv = int(np.abs(ternary[i]).sum())\n", " pmin, pmax = poc.min(), poc.max()\n", " span = pmax - pmin if pmax != pmin else 1.0\n", "\n", " # Map each x-position to a row\n", " rows = (H - 1 - ((poc - pmin) / span * (H - 1))).round().astype(int)\n", " rows = np.clip(rows, 0, H - 1)\n", "\n", " grid = [[' '] * W for _ in range(H)]\n", " for j in range(W):\n", " r = rows[j]\n", " # Strict-move node in the pair ending at display j:\n", " # transition index k = N-1-j (if j < N-1)\n", " is_strict = (j < N - 1) and (ternary[i, N - 2 - j] != 0)\n", " grid[r][j] = '●' if is_strict else '·'\n", " # Connect with horizontal dash where poc is flat\n", " for row_idx in range(H):\n", " line = grid[row_idx]\n", " for j in range(1, W):\n", " if line[j] == ' ' and rows[j] == row_idx:\n", " line[j] = '-'\n", "\n", " print(f\" [{i+1:2d}] {d_lbl:7s} | ID={pid} | strict_moves={n_mv}/{N_TRANS}\")\n", " poc_hi = poc[N-1]; poc_lo = poc[0]\n", " print(f\" POC range: oldest={poc_lo:.0f} → newest={poc_hi:.0f}\")\n", " print(f\" ┌{'─'*W}┐\")\n", " for row_idx in range(H):\n", " print(f\" │{''.join(grid[row_idx])}│\")\n", " print(f\" └{'─'*W}┘\")\n", " sym_preview = ' '.join(sym_matrix[i, :12]) + ' …'\n", " print(f\" Σ (first 12): {sym_preview}\\n\")\n", "\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "# FINAL SUMMARY\n", "# ─────────────────────────────────────────────────────────────────────────────\n", "total_ms = (time.perf_counter() - t_sample) * 1e3\n", "print(SEP)\n", "print(\" SUMMARY\")\n", "print(SEP)\n", "print(f\" n (candles) = {N}\")\n", "print(f\" Transitions per pattern = {N_TRANS}\")\n", "print(f\" Total patterns [2^{N}] = {TOTAL:,}\")\n", "print(f\" Bullish [2^{N-1}] = {HALF:,}\")\n", "print(f\" Bearish [2^{N-1}] = {HALF:,}\")\n", "print(f\" Matrix B_n validated = {B_n:,} ✓\")\n", "print(f\" Samples generated = {N_SAMPLES}\")\n", "print(f\" Chart file = {chart_path}\")\n", "print(f\" Compute device = {DEVICE}\")\n", "print(f\" Wall-clock (sample+decode) = {total_ms:.2f} ms\")\n", "print(SEP)\n", "print()\n", "print(\" CONVERSION FORMULAS (tex Sec. V)\")\n", "print(\" Symbolic → Ternary:\")\n", "print(\" Bullish: '>' → +1, '=' → 0\")\n", "print(\" Bearish: '<' → -1, '=' → 0\")\n", "print(\" Ternary → Symbolic:\")\n", "print(\" +1 → '>', 0 → '=', -1 → '<'\")\n", "print()\n", "print(\" TEMPORAL CONVENTION:\")\n", "print(f\" Chart x-axis: left = C_{{-{N-1}}} (oldest) → right = C_0 (newest)\")\n", "print(\" Bullish pattern: POC non-increasing toward right (higher on left)\")\n", "print(\" Bearish pattern: POC non-decreasing toward right (lower on left)\")\n", "print(SEP)" ] } ] }