{"_id":"@tradejs/strategy-cup-and-handle","_rev":"26-e36727695fb8a8d5b786289e814bd124","name":"@tradejs/strategy-cup-and-handle","dist-tags":{"stable-candidate":"3.0.6","latest":"3.0.6","beta":"3.0.6-beta.17","beta-candidate":"3.0.6-beta.17"},"versions":{"3.0.0":{"name":"@tradejs/strategy-cup-and-handle","version":"3.0.0","keywords":["tradejs","trading","strategy","plugin","backtesting"],"author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"license":"BUSL-1.1","_id":"@tradejs/strategy-cup-and-handle@3.0.0","maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"homepage":"https://tradejs.dev","bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"dist":{"shasum":"9d483ce1dac49491a3d28f3712b8c4082cd23992","tarball":"https://registry.npmjs.org/@tradejs/strategy-cup-and-handle/-/strategy-cup-and-handle-3.0.0.tgz","fileCount":7,"integrity":"sha512-k6BE2UhPpkgyAaq43SlLOIxFiCj4pI6kI98S2aGAo/MJDOXjRBORrLpHdFfzOucWZ4q2zCvE4JFXP8oz1yS9YA==","signatures":[{"sig":"MEUCIGwL3iDvYFaQQ5CvztnUHbhJn1zpJtFn5uOF31p8mcEVAiEA9BmWSwiABjl4SDAaM93oHIvMVyyZvjpmd/Cf+2eovJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tradejs%2fstrategy-cup-and-handle@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74393},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":"24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"72811be2cada545dc1a4d4862a58edde733abe40","scripts":{"test":"jest --runInBand","build":"tsup","checks":"yarn format:check && yarn typecheck && yarn test && yarn build","typecheck":"tsc -p ./tsconfig.json --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"tradejs-dev","email":"aleksnick01@gmail.com"},"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"_npmVersion":"11.17.0","description":"CupAndHandle strategy plugin for TradeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.2.5","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/strategy-cup-and-handle_3.0.0_1786967872203_0.033206267633793196","host":"s3://npm-registry-packages-npm-production"}},"3.0.1-beta.2":{"name":"@tradejs/strategy-cup-and-handle","version":"3.0.1-beta.2","keywords":["tradejs","trading","strategy","plugin","backtesting","ai","claude","codex"],"author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"license":"BUSL-1.1","_id":"@tradejs/strategy-cup-and-handle@3.0.1-beta.2","maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"homepage":"https://tradejs.dev","bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"dist":{"shasum":"4298e6588ee9a9b3d3f25ebb389a8f4d5907bb18","tarball":"https://registry.npmjs.org/@tradejs/strategy-cup-and-handle/-/strategy-cup-and-handle-3.0.1-beta.2.tgz","fileCount":9,"integrity":"sha512-ImfNJYV34hZLaqSFumLFnnEuX58zGfL3sLJxp9NA7NmVGXyfcKmn5slY4s3/yfF1l6108Oq6xLL9cJ75eUu/mA==","signatures":[{"sig":"MEUCIQDNVHoCXPrSlb9Uk8U1bAgbV4yb7B4c9QqiQhyaFLXoKQIgNKGP2oaJtXKAnXMCeLxggdzf1PWsXZKQonSnTzt9dYw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tradejs%2fstrategy-cup-and-handle@3.0.1-beta.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92348},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":"24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"38277e14244bdd6f7a7f4681d0b71e449c449fa6","scripts":{"test":"jest --runInBand","build":"tsup","checks":"yarn format:check && yarn typecheck && yarn test && yarn build","typecheck":"tsc -p ./tsconfig.json --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"tradejs-dev","email":"aleksnick01@gmail.com"},"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"_npmVersion":"11.17.0","description":"Cup-and-handle and inverse-pattern strategy with pivot geometry, breakout confirmation, retests, and structural risk for TradeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.2.5","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/strategy-cup-and-handle_3.0.1-beta.2_1787219602213_0.27015036138560244","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@tradejs/strategy-cup-and-handle","version":"3.0.1","keywords":["tradejs","trading","strategy","plugin","backtesting","ai","claude","codex"],"author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"license":"BUSL-1.1","_id":"@tradejs/strategy-cup-and-handle@3.0.1","maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"homepage":"https://tradejs.dev","bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"dist":{"shasum":"0e75ea8b06161264dc08011a2dd70f3ae2e4996b","tarball":"https://registry.npmjs.org/@tradejs/strategy-cup-and-handle/-/strategy-cup-and-handle-3.0.1.tgz","fileCount":9,"integrity":"sha512-GqpNXfLy3QgKK3eLaRpVeOteuxDxobcocq+je+UzkvUNk/XH+wcSFZXP4OkkVH2bgwRT3hJRrzaL7dYPztSlNw==","signatures":[{"sig":"MEUCIFmtHEQBXYTQTivgmQJYO8dKuLo/krWb8HcimQh6UT4aAiEAhJw9wWOyP09PHfQVKfEPrbYSU6Kd1eW4/HmuKF71WLs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tradejs%2fstrategy-cup-and-handle@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92341},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":"24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"38277e14244bdd6f7a7f4681d0b71e449c449fa6","scripts":{"test":"jest --runInBand","build":"tsup","checks":"yarn format:check && yarn typecheck && yarn test && yarn build","typecheck":"tsc -p ./tsconfig.json --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"tradejs-dev","email":"aleksnick01@gmail.com"},"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"_npmVersion":"11.17.0","description":"Cup-and-handle and inverse-pattern strategy with pivot geometry, breakout confirmation, retests, and structural risk for TradeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.2.5","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/strategy-cup-and-handle_3.0.1_1787220492727_0.3902831979483987","host":"s3://npm-registry-packages-npm-production"}},"3.0.2-beta.4":{"name":"@tradejs/strategy-cup-and-handle","version":"3.0.2-beta.4","keywords":["tradejs","trading","strategy","plugin","backtesting","ai","claude","codex"],"author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"license":"BUSL-1.1","_id":"@tradejs/strategy-cup-and-handle@3.0.2-beta.4","maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"homepage":"https://tradejs.dev","bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"dist":{"shasum":"aa979c7c494c24c7a4d8b57c2cb97e9efbfe46e6","tarball":"https://registry.npmjs.org/@tradejs/strategy-cup-and-handle/-/strategy-cup-and-handle-3.0.2-beta.4.tgz","fileCount":9,"integrity":"sha512-DOlKbFCjEofiptu9v/jxM5HsrQr6FqCTb4DZY5AdCsA07tgVKramfSF5CTZJjdzAF+nF6Ppv6H/53JTZuMGsQw==","signatures":[{"sig":"MEUCIAt+Hk7Tm5insVi5XFNE6ugXNKlapPn86Mb3/rdijEEHAiEAtYrUcLWxdixd/Ldio2yX64Z4nBaJwctaFIQvTeSfAUI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tradejs%2fstrategy-cup-and-handle@3.0.2-beta.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92955},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":"24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"aff565a2ff6439f9fe5b642fc7fec0f00e6f1b10","scripts":{"test":"jest --runInBand","build":"tsup","checks":"yarn format:check && yarn typecheck && yarn test && yarn build","typecheck":"tsc -p ./tsconfig.json --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"tradejs-dev","email":"aleksnick01@gmail.com"},"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"_npmVersion":"11.17.0","description":"Cup-and-handle and inverse-pattern strategy with pivot geometry, breakout confirmation, retests, and structural risk for TradeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.2.5","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/strategy-cup-and-handle_3.0.2-beta.4_1787230385781_0.6066744933145045","host":"s3://npm-registry-packages-npm-production"}},"3.0.2-beta.5":{"name":"@tradejs/strategy-cup-and-handle","version":"3.0.2-beta.5","keywords":["tradejs","trading","strategy","plugin","backtesting","crypto","bybit","binance","coinbase","ai","claude","codex"],"author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"license":"BUSL-1.1","_id":"@tradejs/strategy-cup-and-handle@3.0.2-beta.5","maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"homepage":"https://tradejs.dev","bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"dist":{"shasum":"d70f15aefc801d01c6081b607f7b972daee41e93","tarball":"https://registry.npmjs.org/@tradejs/strategy-cup-and-handle/-/strategy-cup-and-handle-3.0.2-beta.5.tgz","fileCount":9,"integrity":"sha512-DccEqwR29E6PuIYn6//pgvQhFDLBePQ40PedprXAE3LWmMhWEXAquhQuQl5SJjIZYJ00dIxsIGsQPPRqZoUYyA==","signatures":[{"sig":"MEUCIDXCvduH7Axmodxu+19qqnaPFl2DITVpQ7gFAUcqKcLRAiEAorBrUWmBewDUK5QHgLgeGMtpER8/7ygBm8xbaL8ntL4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tradejs%2fstrategy-cup-and-handle@3.0.2-beta.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93448},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":"24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"3b8f3106fddc8c829d3aa0e344311344f9cee5a0","scripts":{"test":"jest --runInBand","build":"tsup","checks":"yarn format:check && yarn typecheck && yarn test && yarn build","typecheck":"tsc -p ./tsconfig.json --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"tradejs-dev","email":"aleksnick01@gmail.com"},"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"_npmVersion":"11.17.0","description":"Cup-and-handle and inverse-pattern strategy with pivot geometry, breakout confirmation, retests, and structural risk for TradeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.2.5","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^29.5.14","@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.1"},"peerDependencies":{"@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/strategy-cup-and-handle_3.0.2-beta.5_1787231541301_0.2755165149105727","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@tradejs/strategy-cup-and-handle","version":"3.0.2","keywords":["tradejs","trading","strategy","plugin","backtesting","crypto","bybit","binance","coinbase","ai","claude","codex"],"author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"license":"BUSL-1.1","_id":"@tradejs/strategy-cup-and-handle@3.0.2","maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"homepage":"https://tradejs.dev","bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"dist":{"shasum":"cea2996e168952223681e8d83b3979952c5b1b70","tarball":"https://registry.npmjs.org/@tradejs/strategy-cup-and-handle/-/strategy-cup-and-handle-3.0.2.tgz","fileCount":9,"integrity":"sha512-ccVyR1CZWEO50ShI5nFGz7e7asrO8AZFF9pncg2l2oyzGzdwM5mush2KWJcxDCmdNgki/JYUUNa4yqXwQhOTZQ==","signatures":[{"sig":"MEUCIQD+bNhwOgNawxp6r+a84yXVOZofbP/A1LLxMN2zP/0QwQIgQURy/weVwXputfKEUFUvT++vi3W9b9R0HbHsgwqwk0g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tradejs%2fstrategy-cup-and-handle@3.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93441},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":"24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"3b8f3106fddc8c829d3aa0e344311344f9cee5a0","scripts":{"test":"jest --runInBand","build":"tsup","checks":"yarn format:check && yarn typecheck && yarn test && yarn build","typecheck":"tsc -p ./tsconfig.json --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"tradejs-dev","email":"aleksnick01@gmail.com"},"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"_npmVersion":"11.17.0","description":"Cup-and-handle and inverse-pattern strategy with pivot geometry, breakout confirmation, retests, and structural risk for TradeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.2.5","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^29.5.14","@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.1"},"peerDependencies":{"@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/strategy-cup-and-handle_3.0.2_1787232540834_0.5394134612104269","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-beta.7":{"name":"@tradejs/strategy-cup-and-handle","version":"3.0.3-beta.7","keywords":["tradejs","trading","strategy","plugin","backtesting","crypto","bybit","binance","coinbase","ai","claude","codex"],"author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"license":"BUSL-1.1","_id":"@tradejs/strategy-cup-and-handle@3.0.3-beta.7","maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"homepage":"https://tradejs.dev","bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"dist":{"shasum":"a1ea5b0c41e51c40a5230509094481dbea342379","tarball":"https://registry.npmjs.org/@tradejs/strategy-cup-and-handle/-/strategy-cup-and-handle-3.0.3-beta.7.tgz","fileCount":9,"integrity":"sha512-B8/FmY1fzA0Dvj6oy7F9rjS4Ud4zlEFuJzgx5eO6tqWbMHYLwZxkWVAdh9sApXJjIp2bnCBeJP1qzAa9YOp4uw==","signatures":[{"sig":"MEYCIQCxIf56DzHBEDVZE5FtzYBAZkf6iNuppp+Jx8koWw2vWgIhAPqJbRH+CQIY/r4Tvecnuius7yagtiZQzXNzpiLZ98kR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tradejs%2fstrategy-cup-and-handle@3.0.3-beta.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93505},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":"24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"4af562972d923ece8cfd5b353d617f542ecbd76a","scripts":{"test":"jest --runInBand","build":"tsup","checks":"yarn format:check && yarn typecheck && yarn test && yarn build","typecheck":"tsc -p ./tsconfig.json --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"tradejs-dev","email":"aleksnick01@gmail.com"},"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"_npmVersion":"11.17.0","description":"Cup-and-handle and inverse-pattern strategy with pivot geometry, breakout confirmation, retests, and structural risk for TradeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.2.5","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^29.5.14","@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.1"},"peerDependencies":{"@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/strategy-cup-and-handle_3.0.3-beta.7_1787310583114_0.8101653346847746","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"@tradejs/strategy-cup-and-handle","version":"3.0.3","keywords":["tradejs","trading","strategy","plugin","backtesting","crypto","bybit","binance","coinbase","ai","claude","codex"],"author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"license":"BUSL-1.1","_id":"@tradejs/strategy-cup-and-handle@3.0.3","maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"homepage":"https://tradejs.dev","bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"dist":{"shasum":"f7fb40b6adf7a2bb7db1fee27ba4e1469dc61d41","tarball":"https://registry.npmjs.org/@tradejs/strategy-cup-and-handle/-/strategy-cup-and-handle-3.0.3.tgz","fileCount":9,"integrity":"sha512-xop/zoxBiO0tKeAgmz2wWG1WgBr1yY/AB6H1l7thuALvtMPWTgUXUWpeiuNauutyvprL9Q6D8IYdKUfKUz+IYw==","signatures":[{"sig":"MEYCIQCtIs+2fgvMxcIwcHs/WhLWSGlRopLY0r46h/Zuez4ETAIhAJYt6W2JVRTKOtTkbjEm5fyZ8CSVGzTtDNsEY1jNs5LP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tradejs%2fstrategy-cup-and-handle@3.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93498},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":"24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"7e5c73b921df2ea6e64eef2f93dd60b0649bfb82","scripts":{"test":"jest --runInBand","build":"tsup","checks":"yarn format:check && yarn typecheck && yarn test && yarn build","typecheck":"tsc -p ./tsconfig.json --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"tradejs-dev","email":"aleksnick01@gmail.com"},"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"_npmVersion":"11.17.0","description":"Cup-and-handle and inverse-pattern strategy with pivot geometry, breakout confirmation, retests, and structural risk for TradeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.2.5","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^29.5.14","@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.1"},"peerDependencies":{"@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/strategy-cup-and-handle_3.0.3_1787546235242_0.11146468688701083","host":"s3://npm-registry-packages-npm-production"}},"3.0.4-beta.11":{"name":"@tradejs/strategy-cup-and-handle","version":"3.0.4-beta.11","keywords":["tradejs","trading","strategy","plugin","backtesting","crypto","bybit","binance","coinbase","ai","claude","codex"],"author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"license":"BUSL-1.1","_id":"@tradejs/strategy-cup-and-handle@3.0.4-beta.11","maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"homepage":"https://tradejs.dev","bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"dist":{"shasum":"af75f4de89bfbf9393c88de9a3c5c8c60b1534c1","tarball":"https://registry.npmjs.org/@tradejs/strategy-cup-and-handle/-/strategy-cup-and-handle-3.0.4-beta.11.tgz","fileCount":9,"integrity":"sha512-FuLT0BksXIow9NFMlS/ET6VdSj7Dk+ClYnK1Gb783o8Eq8Byo8bhPyF9W4vGk5NE1QQ7lHB96zfY09LxePqE5A==","signatures":[{"sig":"MEYCIQDYYyTFn+g8MR0WgEy1FcoHHsMPlE1M9dchjOSIJ1EF3gIhAPV6OQ/Uhzjaa3GqrYbLfpL2R3oC/Zp00foWqTfA83gc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tradejs%2fstrategy-cup-and-handle@3.0.4-beta.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":102526},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":"24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0dfa7766958119bdd0c4454adf786eb7601c31e3","scripts":{"test":"jest --runInBand","build":"tsup","checks":"yarn format:check && yarn typecheck && yarn test && yarn build","typecheck":"tsc -p ./tsconfig.json --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"tradejs-dev","email":"aleksnick01@gmail.com"},"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"_npmVersion":"11.17.0","description":"Cup-and-handle and inverse-pattern strategy with pivot geometry, breakout confirmation, retests, and structural risk for TradeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.2.5","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^29.5.14","@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.1"},"peerDependencies":{"@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/strategy-cup-and-handle_3.0.4-beta.11_1787645463836_0.8143586317718621","host":"s3://npm-registry-packages-npm-production"}},"3.0.4":{"name":"@tradejs/strategy-cup-and-handle","version":"3.0.4","keywords":["tradejs","trading","strategy","plugin","backtesting","crypto","bybit","binance","coinbase","ai","claude","codex"],"author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"license":"BUSL-1.1","_id":"@tradejs/strategy-cup-and-handle@3.0.4","maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"homepage":"https://tradejs.dev","bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"dist":{"shasum":"d37d2e67243bf04d97f3e1cc19a8cb9fdc9dbab5","tarball":"https://registry.npmjs.org/@tradejs/strategy-cup-and-handle/-/strategy-cup-and-handle-3.0.4.tgz","fileCount":9,"integrity":"sha512-53Ai5FwYp82ENZum7VhmmQh+MrxUMKJL6kSDr9Duh+DbNbBMMJL5EZLD8zKuBXb9z4GWqeQxpfknoadxih9HCA==","signatures":[{"sig":"MEYCIQDtzPmkpYKkaAzV0xtQ2f+vqWiiFUJpFacdHHoZiVd00gIhAN6gkE8MtElKtOHVUYx3nXSUuNF63KbprQiQr8vO1foU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tradejs%2fstrategy-cup-and-handle@3.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":102518},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":"24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0dfa7766958119bdd0c4454adf786eb7601c31e3","scripts":{"test":"jest --runInBand","build":"tsup","checks":"yarn format:check && yarn typecheck && yarn test && yarn build","typecheck":"tsc -p ./tsconfig.json --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"tradejs-dev","email":"aleksnick01@gmail.com"},"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"_npmVersion":"11.17.0","description":"Cup-and-handle and inverse-pattern strategy with pivot geometry, breakout confirmation, retests, and structural risk for TradeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.2.5","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^29.5.14","@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.1"},"peerDependencies":{"@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/strategy-cup-and-handle_3.0.4_1787645559332_0.02648737496661524","host":"s3://npm-registry-packages-npm-production"}},"3.0.5-beta.15":{"name":"@tradejs/strategy-cup-and-handle","version":"3.0.5-beta.15","keywords":["tradejs","trading","strategy","plugin","backtesting","crypto","bybit","binance","coinbase","ai","claude","codex"],"author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"license":"BUSL-1.1","_id":"@tradejs/strategy-cup-and-handle@3.0.5-beta.15","maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"homepage":"https://tradejs.dev","bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"dist":{"shasum":"02cb6f6dc4f1b8bffc5a19b9ba8c06daa6171159","tarball":"https://registry.npmjs.org/@tradejs/strategy-cup-and-handle/-/strategy-cup-and-handle-3.0.5-beta.15.tgz","fileCount":9,"integrity":"sha512-qa/FF9rLWZECOHkLtdYv3+dXjt3sVW4MW8FNrb5iCRpcw60nWD45GWTtiaVV/ypHMXYI7Ci7KevlZSjHqL79Dg==","signatures":[{"sig":"MEQCIEC1LrThGUV4PC2ICZufXopbaMbLCuwnwPPz7n5zE2jLAiAeXVjBJLstXCVtOL7RRuLKGPqDGeOayjujtVswLSAeCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tradejs%2fstrategy-cup-and-handle@3.0.5-beta.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":102839},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":"24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"bbfda39731b15011ce215f238eb738901597dbda","scripts":{"test":"jest --runInBand","build":"tsup","checks":"yarn format:check && yarn typecheck && yarn test && yarn build","typecheck":"tsc -p ./tsconfig.json --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"tradejs-dev","email":"aleksnick01@gmail.com"},"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"_npmVersion":"11.19.0","description":"Cup-and-handle and inverse-pattern strategy with pivot geometry, breakout confirmation, retests, and structural risk for TradeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.2.5","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^29.5.14","@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.5"},"peerDependencies":{"@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.5"},"_npmOperationalInternal":{"tmp":"tmp/strategy-cup-and-handle_3.0.5-beta.15_1788858564382_0.12014106954615755","host":"s3://npm-registry-packages-npm-production"}},"3.0.5":{"name":"@tradejs/strategy-cup-and-handle","version":"3.0.5","keywords":["tradejs","trading","strategy","plugin","backtesting","crypto","bybit","binance","coinbase","ai","claude","codex"],"author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"license":"BUSL-1.1","_id":"@tradejs/strategy-cup-and-handle@3.0.5","maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"homepage":"https://tradejs.dev","bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"dist":{"shasum":"5fe65545d5e32ab8d25df86391da0aecc47880f3","tarball":"https://registry.npmjs.org/@tradejs/strategy-cup-and-handle/-/strategy-cup-and-handle-3.0.5.tgz","fileCount":9,"integrity":"sha512-/0qruEJ4zQmwCJbhvGeL1bCZjjSQeHjAHM7/viVMJAn4S58J6SpY2zj5d9Qm1njIjCKzvrB4lfovW3a2OqdHTA==","signatures":[{"sig":"MEUCIDA2WIs5/LtTIPyvxEBgF4RO2YdzXlCBYbr+90xq4bPQAiEAvDeR2XigoPiTDZDS5Zs+Zuu8X2GKl9PuVXyEwAJPAfA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tradejs%2fstrategy-cup-and-handle@3.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":102831},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":"24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"bbfda39731b15011ce215f238eb738901597dbda","scripts":{"test":"jest --runInBand","build":"tsup","checks":"yarn format:check && yarn typecheck && yarn test && yarn build","typecheck":"tsc -p ./tsconfig.json --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"tradejs-dev","email":"aleksnick01@gmail.com"},"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"_npmVersion":"11.19.0","description":"Cup-and-handle and inverse-pattern strategy with pivot geometry, breakout confirmation, retests, and structural risk for TradeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.2.5","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^29.5.14","@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.5"},"peerDependencies":{"@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.5"},"_npmOperationalInternal":{"tmp":"tmp/strategy-cup-and-handle_3.0.5_1788858948162_0.9571117975250847","host":"s3://npm-registry-packages-npm-production"}},"3.0.6-beta.17":{"name":"@tradejs/strategy-cup-and-handle","version":"3.0.6-beta.17","keywords":["tradejs","trading","strategy","plugin","backtesting","crypto","bybit","binance","coinbase","ai","claude","codex"],"author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"license":"BUSL-1.1","_id":"@tradejs/strategy-cup-and-handle@3.0.6-beta.17","maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"homepage":"https://tradejs.dev","bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"dist":{"shasum":"62a3c70ac46a9455d7e3744d673ee3d06aa64215","tarball":"https://registry.npmjs.org/@tradejs/strategy-cup-and-handle/-/strategy-cup-and-handle-3.0.6-beta.17.tgz","fileCount":9,"integrity":"sha512-QSuKcOQcKsNpBiu3KyHgoHkhYUqsbovLJCV6Uo6MMgBlG9EZ7Q44QQYB+ayISVH24p8DwMQnvMWMHrCSlS+QVA==","signatures":[{"sig":"MEUCID/lewptZLYAOWVgYwd5w1ZyYFSBtvLqZzqOAtprYHpvAiEApqQ+9CQhBXPwo1R0lgtq7+2u6ZbJtht9NtZxfRDkyOM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCyzL8fE6CnJt8RE2/CZYf6hUCahOb7zi5EvUJDBWZ1VwIhAJnk3qd63K6sd9RCSbvar4OuZSn3FUBkOw2yKiJjIF18","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tradejs%2fstrategy-cup-and-handle@3.0.6-beta.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":102839},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":"24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"e1df5f1fe1bea4c5a13fc85bed07dd0765f7febe","scripts":{"test":"jest --runInBand","build":"tsup","checks":"yarn format:check && yarn typecheck && yarn test && yarn build","typecheck":"tsc -p ./tsconfig.json --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"tradejs-dev","email":"aleksnick01@gmail.com"},"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"_npmVersion":"11.19.0","description":"Cup-and-handle and inverse-pattern strategy with pivot geometry, breakout confirmation, retests, and structural risk for TradeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.2.5","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^29.5.14","@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.5"},"peerDependencies":{"@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.5"},"_npmOperationalInternal":{"tmp":"tmp/strategy-cup-and-handle_3.0.6-beta.17_1789133088515_0.00841647006126367","host":"s3://npm-registry-packages-npm-production"}},"3.0.6":{"_id":"@tradejs/strategy-cup-and-handle@3.0.6","bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"dist":{"shasum":"0dffc32a34a45ecc0aee9cb42d1b91290c18ed68","tarball":"https://registry.npmjs.org/@tradejs/strategy-cup-and-handle/-/strategy-cup-and-handle-3.0.6.tgz","fileCount":9,"integrity":"sha512-rTzMax3HH/AOhTuaq4Bybn0PBmNscyX8qX2qcxUjc54lFjvbD3M2UFRi0DwjpvosZQ89UcyFECSpz833yazrWw==","signatures":[{"sig":"MEYCIQDJL+PHdzuyzpABOfjvCeClXU4TUW3mcrqL43byByGRdwIhAOoWugaMSsU3zC1lusAPvaRVZgqDSFuooGh8LkSBC8iK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFGvuEQd/HwwN8aUr3Mb/9D5j15FBxREWnZSEKW8kMELAiAH7CQ1WFQk2uDmwWqebNLR7NzeENC+Fbg3JHkiYFMX7g=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tradejs%2fstrategy-cup-and-handle@3.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":102831},"main":"./dist/index.cjs","name":"@tradejs/strategy-cup-and-handle","type":"module","types":"./dist/index.d.ts","author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"module":"./dist/index.js","engines":{"node":"24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"e1df5f1fe1bea4c5a13fc85bed07dd0765f7febe","license":"BUSL-1.1","scripts":{"test":"jest --runInBand","build":"tsup","checks":"yarn format:check && yarn typecheck && yarn test && yarn build","typecheck":"tsc -p ./tsconfig.json --noEmit","format:check":"prettier --check ."},"version":"3.0.6","_npmUser":{"name":"tradejs-dev","email":"aleksnick01@gmail.com"},"homepage":"https://tradejs.dev","keywords":["tradejs","trading","strategy","plugin","backtesting","crypto","bybit","binance","coinbase","ai","claude","codex"],"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"_npmVersion":"11.19.0","description":"Cup-and-handle and inverse-pattern strategy with pivot geometry, breakout confirmation, retests, and structural risk for TradeJS.","directories":{},"maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.2.5","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^29.5.14","@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.5"},"peerDependencies":{"@tradejs/core":"^3.0.1","@tradejs/types":"^3.0.1","@tradejs/strategy-kit":"^3.0.5"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/strategy-cup-and-handle_3.0.6_1789378015053_0.2715689132664856"}}},"time":{"created":"2026-08-17T11:57:51.963Z","modified":"2026-09-14T09:26:55.580Z","3.0.0":"2026-08-17T11:57:52.346Z","3.0.1-beta.2":"2026-08-20T09:53:22.354Z","3.0.1":"2026-08-20T10:08:12.872Z","3.0.2-beta.4":"2026-08-20T12:53:05.918Z","3.0.2-beta.5":"2026-08-20T13:12:21.470Z","3.0.2":"2026-08-20T13:29:00.991Z","3.0.3-beta.7":"2026-08-21T11:09:43.300Z","3.0.3":"2026-08-24T04:37:15.390Z","3.0.4-beta.11":"2026-08-25T08:11:03.984Z","3.0.4":"2026-08-25T08:12:39.468Z","3.0.5-beta.15":"2026-09-08T09:09:24.515Z","3.0.5":"2026-09-08T09:15:48.310Z","3.0.6-beta.17":"2026-09-11T13:24:48.609Z","3.0.6":"2026-09-14T09:26:55.180Z"},"bugs":{"url":"https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/issues"},"author":{"url":"https://github.com/aleksnick","name":"aleksnick"},"license":"BUSL-1.1","homepage":"https://tradejs.dev","keywords":["tradejs","trading","strategy","plugin","backtesting","crypto","bybit","binance","coinbase","ai","claude","codex"],"repository":{"url":"git+https://github.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle.git","type":"git"},"description":"Cup-and-handle and inverse-pattern strategy with pivot geometry, breakout confirmation, retests, and structural risk for TradeJS.","maintainers":[{"name":"tradejs-dev","email":"aleksnick01@gmail.com"}],"readme":"# @tradejs/strategy-cup-and-handle\n\nTradeJS strategy plugin providing `CupAndHandle`.\n\n## Strategy overview\n\n`CupAndHandle` detects bullish cup-and-handle and bearish inverse formations\nfrom replayable pivots. It validates rim similarity, cup depth and symmetry,\nhandle depth, and pattern age, then enters on breakout, close acceptance, or\nretest with geometry-derived stops and targets.\n\nThe optional `CUPHANDLE_REQUIRE_PATH_QUALITY` guard requires both cup legs to\nprogress on more than half of their comparable closes. In deterministic\n`AI_MODE: \"gate\"`, the strategy-local gate approves both LONG and SHORT signals\nonly when the nearest resistance has at least 19 hits and the target's\n20-period beta to ETH is non-negative. Missing gate features fail closed.\n\n## Logic at a glance\n\n![CupAndHandle strategy logic](https://raw.githubusercontent.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/main/docs/strategy-logic.svg)\n\n## Signal on an example chart\n\nThe chart labels the two rims, rounded cup, bounded handle, and the rim breakout that turns the completed formation into a LONG signal.\n\n![CupAndHandle signal on an illustrative ticker chart](https://raw.githubusercontent.com/TradeJS-Dev/TradeJS-Strategy-CupAndHandle/main/docs/signal-example.svg)\n\nThe illustration is schematic, not market data. Exact thresholds, confirmation\nrules, and risk parameters come from the active TradeJS strategy config.\n\n## Install\n\n```bash\nyarn add @tradejs/strategy-cup-and-handle\n```\n\nRegister the package in `tradejs.config.ts`:\n\n```ts\nimport { defineConfig } from \"@tradejs/core/config\";\n\nexport default defineConfig({\n  strategies: [\"@tradejs/strategy-cup-and-handle\"],\n});\n```\n\nThe package exports `strategyEntries` for the TradeJS plugin loader together\nwith its strategy definitions, manifests, default configs, and public AI/ML\nadapters. Strategy implementation changes are released from this repository,\nindependently of the TradeJS engine.\n\n## Development\n\n```bash\nyarn install --immutable\nyarn checks\n```\n\nPublishing is beta-first and delegated to the pinned\n`TradeJS-Workflows@v1` reusable workflow. A relevant push publishes a unique\nprerelease and moves the npm `beta` tag only after the repository checks pass\nand the published tarball imports successfully in a clean npm consumer. The\ncurrent verified beta is promoted to one stable `latest`\nrelease by the weekly automation; production never consumes prereleases.\n\nKeywords: ai, claude, codex.\n\n## Runtime host contract\n\nAll `@tradejs/*` runtime packages are peer dependencies. The consuming TradeJS Project owns their exact installed versions and package manifest, so this package never loads a hidden nested engine, types package, indicator package, or Strategy Kit. Repository builds use matching dev dependencies only.\n","readmeFilename":"README.md"}