{"id":26786161,"url":"https://github.com/derekahn/gaps-list","last_synced_at":"2025-10-10T10:13:37.596Z","repository":{"id":282584465,"uuid":"949043801","full_name":"derekahn/gaps-list","owner":"derekahn","description":"Simple node.js program(s) that format and filter daily gaps into a tradingview watch list","archived":false,"fork":false,"pushed_at":"2025-03-15T15:26:47.000Z","size":54,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-29T11:35:58.042Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/derekahn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-15T14:49:08.000Z","updated_at":"2025-03-15T15:26:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"a4d7cc65-3523-47f8-8383-bf8941810485","html_url":"https://github.com/derekahn/gaps-list","commit_stats":null,"previous_names":["derekahn/gaps-list"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/derekahn/gaps-list","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekahn%2Fgaps-list","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekahn%2Fgaps-list/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekahn%2Fgaps-list/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekahn%2Fgaps-list/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/derekahn","download_url":"https://codeload.github.com/derekahn/gaps-list/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekahn%2Fgaps-list/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279003486,"owners_count":26083594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-29T11:35:50.195Z","updated_at":"2025-10-10T10:13:37.591Z","avatar_url":"https://github.com/derekahn.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gaps List\n\nSimple node.js program(s) that format and filter daily gaps into a tradingview watch list.\n\n- `format.js` formats an expected `Gaps\\ \\ \\\u0026\\ Earnings\\ -\\ Gaps\\ List.csv` to a [trading view watchlist](https://www.tradingview.com/support/solutions/43000487233-how-to-import-or-export-watchlist/) compatible format\n- `filter.js` filters out tickers with low volume, too low and too high prices\n\n## Quick Start\n\nProject setup and execution:\n\n```bash\n$ npm install\n\n$ node format.js\n\n$ node filter.js\n```\n\n**Import List**:\n\n![import](./assets/import.png)\n\n**Select file**:\n\n![file selection](./assets/select.png)\n\n**Watch list**:\n\n![watchlist](./assets/watchlist.png)\n\n## format.js\n\nProgram is expecting filename to be `Gaps \u0026 Earnings - Gaps List.csv`\n\nExpecting `csv` to be formatted like:\n\n```csv\n,,,,,,,,,,,,,,\n,Complete List,,,Trimmed List,,,Favorite Gaps,,,\"\"\"Unique\"\" Gaps\",,,,\n,Up ,Down,,Up ,Down,,Bullish,Bearish,,Secondary,Ex-div,Spin-off,Buyout,Split\n,ACNT,ADBE,,ACNT,ADBE,,FEMY,PATH,,ATEN (notes),,,,\n,ADV,ADTX,,ADV,AEO,,,S,,SPIR,,,,\n,AISPW,AEO,,CCLD,ATEN,,,CERO,,,,,,\n,AVAH,AEYE,,DG,CERO,,,,,,,,,\n,BBW,AIEV,,DLTR,CMI,,,,,,,,,\n,BIDU,AREB,,FEMY,CMTL,,,,,,,,,\n,BKYI,ATEN,,GIII,CSCI,,,,,,,,,\n,CCLD,BABA,,HMR,DLTH,,,,,,,,,\n,CRVO,BHAT,,INTC,GDS,,,,,,,,,\n,DG,BTMD,,IONQ,MNSO,,,,,,,,,\n,DLTR,BURU,,LUCK,NET,,,,,,,,,\n,DMN,CDLX,,MGTX,NOVA,,,,,,,,,\n,FEMY,CLRB,,QBTS,PATH,,,,,,,,,\n,FFNW,CMI,,RAIL,PCAR,,,,,,,,,\n,FN,CMTL,,SATL,S,,,,,,,,,\n,FUTU,CSCI,,XCUR,SAP,,,,,,,,,\n,GIII,CTMX,,WCT,SPIR,,,,,,,,,\n,HAIN,DLTH,,,SSL,,,,,,,,,\n,HMR,ECOR,,,TSM,,,,,,,,,\n,INTC,GDS,,,VNET,,,,,,,,,\n,INTW,HCTI,,,,,,,,,,,,\n,IONQ,HEPA,,,,,,,,,,,,\n,IONX,HIT,,,,,,,,,,,,\n,IPA,HPH,,,,,,,,,,,,\n,LUCD,IRBT,,,,,,,,,,,,\n,LUCK,MNSO,,,,,,,,,,,,\n,MGTX,MXCT,,,,,,,,,,,,\n,MYNZ,NOVA,,,,,,,,,,,,\n,NVO,ONCO,,,,,,,,,,,,\n,NYXH,PALI,,,,,,,,,,,,\n,ODC,PATH,,,,,,,,,,,,\n,PHAR,PBM,,,,,,,,,,,,\n,QBTS,PCAR,,,,,,,,,,,,\n,QMMM,PESI,,,,,,,,,,,,\n,RAIL,PSTV,,,,,,,,,,,,\n,RNAZ,PWM,,,,,,,,,,,,\n,SATL,S,,,,,,,,,,,,\n,SNES,SAP,,,,,,,,,,,,\n,SPGC,SBSW,,,,,,,,,,,,\n,TRNR,SCNX,,,,,,,,,,,,\n,UPB,SOUNW,,,,,,,,,,,,\n,WLGS,SPHL,,,,,,,,,,,,\n,XCUR,SPIR,,,,,,,,,,,,\n,ZBIO,SSL,,,,,,,,,,,,\n,WCT,STI,,,,,,,,,,,,\n,,TSM,,,,,,,,,,,,\n,,ULY,,,,,,,,,,,,\n,,VNET,,,,,,,,,,,,\n,,VSTE,,,,,,,,,,,,\n```\n\nUsage:\n\n```bash\n$ node format.js\n```\n\n## filter.js\n\nProgram is expecting filename to be `complete_list.csv`\n\nExpecting `csv` to be formatted like:\n\n```csv\n###🐂 Bullish\nFEMY\n\n###🐻 Bearish\nPATH\nS\nCERO\n\n###⬆️ Gap Up\nACNT\nADV\nCCLD\nDG\nDLTR\nFEMY\nGIII\nHMR\nINTC\nIONQ\nLUCK\nMGTX\nQBTS\nRAIL\nSATL\nXCUR\nWCT\n\n###⬇️ Gap Down\nADBE\nAEO\nATEN\nCERO\nCMI\nCMTL\nCSCI\nDLTH\nGDS\nMNSO\nNET\nNOVA\nPATH\nPCAR\nS\nSAP\nSPIR\nSSL\nTSM\nVNET\n\n###👍 Other Gap Ups\nAISPW\nAVAH\nBBW\nBIDU\nBKYI\nCRVO\nDMN\nFFNW\nFN\nFUTU\nHAIN\nINTW\nIONX\nIPA\nLUCD\nMYNZ\nNVO\nNYXH\nODC\nPHAR\nQMMM\nRNAZ\nSNES\nSPGC\nTRNR\nUPB\nWLGS\nZBIO\n\n###👎 Other Gap Downs\nADTX\nAEYE\nAIEV\nAREB\nBABA\nBHAT\nBTMD\nBURU\nCDLX\nCLRB\nCTMX\nECOR\nHCTI\nHEPA\nHIT\nHPH\nIRBT\nMXCT\nONCO\nPALI\nPBM\nPESI\nPSTV\nPWM\nSBSW\nSCNX\nSOUNW\nSPHL\nSTI\nULY\nVSTE\n```\n\nUsage:\n\n```bash\n$ node filter.js\n```\n\nYou can change the options:\n\n```bash\nUsage: node filter-tickers.js [inputFile] [outputFile] [options]\n\nArguments:\n  inputFile     Path to the input CSV file (default: ${INPUT_FILE})\n  outputFile    Path to the output CSV file (default: ${OUTPUT_FILE})\n\nOptions:\n  --cache-only  Use only cached volume and price data (no API calls)\n  --help        Display this help information\n\nExamples:\n  node filter-tickers.js\n  node filter-tickers.js my_watchlist.csv filtered_watchlist.csv\n  node filter-tickers.js --cache-only\n```\n\n## Shell Alias\n\nRecommend adding this to your your `rc` (`.zshrc`, `.bashrc`) so anywhere in the terminal you can just execute:\n\n`$ gaps`\n\nTakes some strong opinionated conventions of filenames and paths though\n\n```bash\nfunction gaps() {\n    # Set up paths\n    DOWNLOAD_DIR=\"$HOME/Downloads\"\n    WATCHLIST_DIR=\"$HOME/code/watchlist\"\n    INPUT_FILE=\"Gaps  \u0026 Earnings - Gaps List.csv\"\n    FORMATTED_OUTPUT=\"🕳️_gaps.csv\"\n\n    # Move downloaded file to watchlist directory\n    mv \"$DOWNLOAD_DIR/$INPUT_FILE\" \"$WATCHLIST_DIR/\"\n    cd \"$WATCHLIST_DIR\"\n\n    # Clean up previous files\n    rm -f complete_list.csv \\\n          price_cache.json \\\n          volume_cache.json \\\n          filtered_list_report.txt \\\n          filtered_list.csv \\\n          2\u003e/dev/null || true\n\n    # Process data\n    echo \"Formatting data...\"\n    node format.js\n\n    echo \"Filtering tickers...\"\n    node filter.js\n\n    # Move result back to downloads\n    cp filtered_list.csv \"$FORMATTED_OUTPUT\"\n    mv \"$FORMATTED_OUTPUT\" \"$DOWNLOAD_DIR/\"\n\n    # Return to downloads directory\n    cd \"$DOWNLOAD_DIR/\"\n\n    echo \"✅ Process complete! Filtered gaps file available in Downloads.\"\n}\n```\n\nExample:\n\n```bash\n$ gaps\n\nFormatting data...\nStarting conversion...\nTotal rows: 52\nFound \"Complete List\" at index 1\nFound \"Trimmed List\" at index 4\nFound \"Favorite Gaps\" at index 7\nComplete List Up: column 1, Down: column 2\nTrimmed List Up: column 4, Down: column 5\nFavorite Gaps Bullish: column 7, Bearish: column 8\n\nComplete List Up (before filtering): 45 symbols\nComplete List Down (before filtering): 49 symbols\nTrimmed List Up: 17 symbols\nTrimmed List Down: 20 symbols\nComplete List Up (after filtering): 28 symbols\nComplete List Down (after filtering): 31 symbols\nFavorite Gaps Bullish: 1 symbols\nFavorite Gaps Bearish: 3 symbols\n\nConversion complete! Output saved to complete_list.csv\n\nOutput preview:\n###🐂 Bullish,FEMY,###🐻 Bearish,PATH,S,CERO,###⬆️ Gap Up,ACNT,ADV,CCLD,DG,DLTR,FEMY,GIII,HMR,INTC,IONQ,LUCK,MGTX,QBTS,RAIL,SATL,XCUR,WCT,###⬇️ Gap Down,ADBE,AEO,ATEN,CERO,CMI,CMTL,CSCI,DLTH,GDS,MNSO,...\n\nSections in output:\n- 🐂 Bullish: 1 symbols\n- 🐻 Bearish: 3 symbols\n- ⬆️ Gap Up: 17 symbols\n- ⬇️ Gap Down: 20 symbols\n- 👍 Other Gap Ups: 28 symbols (filtered)\n- 👎 Other Gap Downs: 31 symbols (filtered)\nFiltering tickers...\nReading input file: complete_list.csv\nSuccessfully read file, size: 567 bytes\nParsed 1 rows from CSV\nExtracted 96 potential ticker symbols\nExtract tickers: 0.541ms\nNeed to fetch price data for 96 tickers\nNeed to fetch volume data for 96 tickers\nFetching price data...\nPATH: $10.88\nCERO: $1.02\nDLTR: $64.56\nHMR: $3.45\nLUCK: $9.67\nXCUR: $12.83\nIONQ: $25.00\nFEMY: $1.57\nSATL: $3.58\nQBTS: $10.15\nWCT: $0.55\nGIII: $26.68\nMGTX: $7.79\nCCLD: $1.47\nDG: $79.02\nACNT: $12.45\nRAIL: $6.58\nS: $18.51\nINTC: $24.05\nADV: $1.70\nProgress: 20/96 (21%)\nATEN: $16.86\nMNSO: $20.69\nAVAH: $5.19\nDLTH: $2.28\nNET: $116.15\nCMTL: $1.76\nCSCI: $3.29\nTSM: $174.09\nAEO: $11.06\nCMI: $321.70\nPCAR: $99.21\nSAP: $263.88\nSPIR: $8.57\nADBE: $394.74\nAISPW: $0.93\nBBW: $36.49\nVNET: $11.65\nSSL: $4.33\nGDS: $35.27\nNOVA: $0.32\nProgress: 40/96 (42%)\nBIDU: $93.82\nCRVO: $6.44\nMYNZ: $4.37\nBKYI: $1.20\nIONX: $34.27\nIPA: $0.39\nDMN: $0.16\nHAIN: $3.81\nSNES: $2.19\nRNAZ: $0.78\nQMMM: $1.41\nINTW: $26.33\nPHAR: $8.95\nNYXH: $10.51\nFN: $220.00\nLUCD: $1.39\nFFNW: $22.53\nFUTU: $118.47\nNVO: $77.15\nODC: $48.27\nProgress: 60/96 (63%)\nSPGC: $0.10\nZBIO: $8.25\nHIT: $0.82\nHEPA: $0.02\nCLRB: $0.32\nWLGS: $4.08\nBURU: $0.23\nUPB: $9.61\nAEYE: $11.34\nBHAT: $0.03\nAIEV: $0.17\nECOR: $8.56\nAREB: $0.21\nTRNR: $1.26\nBTMD: $3.76\nBABA: $141.10\nHCTI: $0.45\nCDLX: $2.47\nCTMX: $0.65\nADTX: $0.02\nProgress: 80/96 (83%)\nPSTV: $0.68\nSOUNW: $4.17\nPESI: $7.29\nIRBT: $3.70\nSCNX: $1.49\nHPH: $0.16\nPWM: $0.53\nMXCT: $3.29\nPBM: $0.78\nPALI: $1.00\nONCO: $0.13\nSTI: $0.15\nULY: $0.29\nVSTE: $0.51\nSPHL: $0.60\nSBSW: $3.93\nProgress: 96/96 (100%)\nFetched price data for 96 tickers\nFetching volume data...\nS: 7,384,073.684 avg volume\nXCUR: 51,300 avg volume\nADV: 658,110.526 avg volume\nQBTS: 71,541,831.579 avg volume\nSATL: 820,273.684 avg volume\nGIII: 630,389.474 avg volume\nMGTX: 746,431.579 avg volume\nFEMY: 752,810.526 avg volume\nHMR: 10,330,841.176 avg volume\nLUCK: 510,642.105 avg volume\nIONQ: 20,260,284.211 avg volume\nCERO: 493,815.789 avg volume\nDLTR: 3,811,568.421 avg volume\nDG: 4,455,778.947 avg volume\nCCLD: 2,035,536.842 avg volume\nWCT: 9,795,726.316 avg volume\nRAIL: 322,742.105 avg volume\nPATH: 13,640,973.684 avg volume\nACNT: 31,426.316 avg volume\nINTC: 125,942,257.895 avg volume\nProgress: 20/96 (21%)\nNET: 4,657,073.684 avg volume\nAISPW: 34,950 avg volume\nDLTH: 42,121.053 avg volume\nAVAH: 395,278.947 avg volume\nGDS: 5,084,894.737 avg volume\nVNET: 15,365,500 avg volume\nBBW: 297,763.158 avg volume\nNOVA: 29,438,884.211 avg volume\nADBE: 3,800,173.684 avg volume\nSPIR: 688,563.158 avg volume\nCSCI: 42,342.105 avg volume\nATEN: 1,333,647.368 avg volume\nAEO: 6,277,536.842 avg volume\nTSM: 18,573,084.211 avg volume\nSAP: 1,373,063.158 avg volume\nCMTL: 528,263.158 avg volume\nMNSO: 1,184,984.211 avg volume\nCMI: 1,026,852.632 avg volume\nSSL: 908,805.263 avg volume\nPCAR: 3,115,994.737 avg volume\nProgress: 40/96 (42%)\nBIDU: 6,069,978.947 avg volume\nSNES: 267,105.263 avg volume\nIONX: 310,263.333 avg volume\nQMMM: 1,414,273.684 avg volume\nFUTU: 3,183,347.368 avg volume\nRNAZ: 2,415,100 avg volume\nLUCD: 816,957.895 avg volume\nNYXH: 31,678.947 avg volume\nHAIN: 2,272,936.842 avg volume\nIPA: 4,914,926.316 avg volume\nCRVO: 12,028,284.211 avg volume\nMYNZ: 204,826.316 avg volume\nBKYI: 369,310.526 avg volume\nFN: 901,178.947 avg volume\nDMN: 12,246,005.263 avg volume\nPHAR: 7,910.526 avg volume\nFFNW: 49,063.158 avg volume\nINTW: 364,010.526 avg volume\nODC: 41,347.368 avg volume\nNVO: 7,970,152.632 avg volume\nProgress: 60/96 (63%)\nTRNR: 38,744,005.263 avg volume\nZBIO: 138,042.105 avg volume\nWLGS: 931,431.579 avg volume\nBTMD: 265,952.632 avg volume\nBHAT: 99,548,152.632 avg volume\nAREB: 6,309,289.474 avg volume\nCDLX: 1,536,705.263 avg volume\nHEPA: 23,928,621.053 avg volume\nBURU: 39,361,615.789 avg volume\nECOR: 222,021.053 avg volume\nADTX: 184,749,752.632 avg volume\nAIEV: 1,822,210.526 avg volume\nSPGC: 49,837,126.316 avg volume\nBABA: 39,431,047.368 avg volume\nCTMX: 3,718,384.211 avg volume\nCLRB: 1,389,242.105 avg volume\nHIT: 3,220,078.947 avg volume\nHCTI: 11,468,752.632 avg volume\nAEYE: 193,631.579 avg volume\nUPB: 225,163.158 avg volume\nProgress: 80/96 (83%)\nIRBT: 3,226,531.579 avg volume\nONCO: 2,408,057.895 avg volume\nSCNX: 2,964,089.474 avg volume\nPBM: 456,521.053 avg volume\nPSTV: 26,857,657.895 avg volume\nPESI: 137,768.421 avg volume\nMXCT: 732,700 avg volume\nPALI: 713,084.211 avg volume\nSTI: 35,133,147.368 avg volume\nPWM: 331,294.737 avg volume\nULY: 8,973,263.158 avg volume\nHPH: 874,594.737 avg volume\nSBSW: 9,028,036.842 avg volume\nVSTE: 10,997,268.421 avg volume\nSOUNW: 150,457 avg volume\nSPHL: 2,016,615.789 avg volume\nProgress: 96/96 (100%)\nFetched volume data for 96 tickers\nData fetching: 5.768s\nFilter tickers: 0.665ms\n\nResults:\n- Total tickers: 96\n- Tickers meeting criteria: 23\n- Tickers filtered out: 73\nCreate filtered CSV: 2.02ms\n\nFiltered tickers saved to filtered_list.csv\nGenerate report: 9.051ms\nDetailed report saved to filtered_list_report.txt\nTotal execution time: 5.781s\n✅ Process complete! Filtered gaps file available in Downloads.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderekahn%2Fgaps-list","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fderekahn%2Fgaps-list","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderekahn%2Fgaps-list/lists"}