{"id":16703346,"url":"https://github.com/krystianity/coinpusher","last_synced_at":"2026-03-15T22:47:53.242Z","repository":{"id":41287853,"uuid":"104638329","full_name":"krystianity/coinpusher","owner":"krystianity","description":":chart_with_upwards_trend: real-time cryptocurrency chart prediction based on neuronal-networks :bowtie:","archived":false,"fork":false,"pushed_at":"2023-01-11T18:46:43.000Z","size":989,"stargazers_count":167,"open_issues_count":17,"forks_count":48,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-10-19T06:55:34.979Z","etag":null,"topics":["bitcoin","bitstamp","charts","cryptocurrency","ethereum","litecoin","neuronal-network","prediction","real-time"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/krystianity.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}},"created_at":"2017-09-24T11:18:25.000Z","updated_at":"2025-09-28T10:56:43.000Z","dependencies_parsed_at":"2023-02-09T04:17:42.891Z","dependency_job_id":null,"html_url":"https://github.com/krystianity/coinpusher","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/krystianity/coinpusher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krystianity%2Fcoinpusher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krystianity%2Fcoinpusher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krystianity%2Fcoinpusher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krystianity%2Fcoinpusher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krystianity","download_url":"https://codeload.github.com/krystianity/coinpusher/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krystianity%2Fcoinpusher/sbom","scorecard":{"id":570980,"data":{"date":"2025-08-11","repo":{"name":"github.com/krystianity/coinpusher","commit":"069283f29d1f25fd06c9bef7b2b338fec103cdda"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/24 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Mozilla Public License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 6 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"30 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-9vvw-cc9w-f27h","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-qrmc-fj45-qfc2","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-9qj9-36jm-prpv","Warn: Project is vulnerable to: GHSA-44pw-h2cw-w3vq","Warn: Project is vulnerable to: GHSA-jp4x-w63m-7wgm","Warn: Project is vulnerable to: GHSA-c429-5p7v-vgjp","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-wrvr-8mpx-r7pp","Warn: Project is vulnerable to: GHSA-446m-mv8f-q348","Warn: Project is vulnerable to: GHSA-8hfj-j24r-96c4","Warn: Project is vulnerable to: GHSA-wc69-rhjr-hc9g","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-g7q5-pjjr-gqvp","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-g78m-2chm-r7qv"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T16:21:08.796Z","repository_id":41287853,"created_at":"2025-08-20T16:21:08.796Z","updated_at":"2025-08-20T16:21:08.796Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30553588,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-15T15:03:43.933Z","status":"ssl_error","status_checked_at":"2026-03-15T15:03:37.630Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["bitcoin","bitstamp","charts","cryptocurrency","ethereum","litecoin","neuronal-network","prediction","real-time"],"created_at":"2024-10-12T19:07:59.054Z","updated_at":"2026-03-15T22:47:53.225Z","avatar_url":"https://github.com/krystianity.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# real-time cryptocurrency course neuronal network prediction\n\n## for bitcoin, ethereum, litecoin on the Bitstamp platform\n\n### :gem: :chart_with_upwards_trend:\n\n![graph screenshot](opener.png)\n\n## Overview\n\n* [Info](#info)\n* [Requires](#requires)\n* [Installation](#installation)\n* [Interfaces](#interfaces)\n* [Training Neuronal Networks](#training-neuronal-networks)\n* [How does it work?](#how-does-it-work)\n* [Additional](#additional)\n* [Client Info](#client-info)\n* [Adjusting Configuration](#adjusting-configuration)\n* [Attaching a trade bot](#attaching-a-trade-bot)\n* [More Screenshots](#more-screenshots)\n* [License](#license)\n\n## Donate\n\n* If this client helped you, feel free to buy me a :beer:\n* BTC: `3FX5SGcizKVwsezqFRbDVgQ7UhGwx6XArU`\n* ETH: `0x54e0a18386eb7831de38a438cd3fc0162e5d33e6`\n* LTC: `MUJgac5DYntbvjH7zLAjjjm3z9QgPfVLgH`\n* Donations are much appreciated.\n* If you dont want to give away money, starring the project is also a way of saying\n    thank you :)\n\n## Info\n\n* automatically builds a dataset for each currency on live-trades from `https://www.bitstamp.net` using the pusher api\n* LSTM neuronal networks can be trained on the fly in child-processes on the latest data with a simple web-request and a prediction is applied on any incoming live trade\n* the future course for the next ~ 10 minutes is predicted\n* information is shared with a front-end application that updates trades and predictions in\n    real-time charts\n* dataset and networks are constantly updated and stored in files\n* rates its own performance by remembering predictions it made and comparing them to the real\n    state of the currencies course\n* emits events that make it easy to implement auto-trading of the currencies\n\n## Requires\n\n* Node.js \u003e 8\n* yarn -\u003e `npm i -g yarn`\n\n## Installation\n\n* clone this repo\n* install dependencies via `yarn`\n* start 3 processes for each currency\n* `yarn bitcoin`, `yarn ethereum`, `yarn litecoin`\n* it is also possible to run them individually\n* open `http://localhost:3333/` in your browser\n\n## Interfaces\n\n* visit `http://localhost:3333/` for an overview\n* find the chart graph @ `http://localhost:3333/graph` \n    (note: the front-end will always connect to any instance that is available\n    even if you start 3 processes you will only need to open the front-end on one of them)\n* find the performance graph @ `http://localhost:3333/graph/performance.html`\n* get infos about the instances @ `http://localhost:3333/coinstreams` alt :3334 and :3335\n* get performance stats @ `http://localhost:3333/stats` alt :3334 and :3335\n\n## Training Neuronal Networks\n\n* `curl http://localhost:3333/nn/train/btceur`\n* `curl http://localhost:3334/nn/train/etheur`\n* `curl http://localhost:3335/nn/train/ltceur`\n* Training will fork a child process that reads the dataset from disk,\n    runs etl, trains the network and stores its serialised form back on disk,\n    when the child process exits successfully the parent process will re-read \n    the neuronal network from disk an deserialise it, the new version will instantly\n    apply predictions on incoming trades\n\n## How does it work?\n\n* Coinpusher.js starts a Coinstream.js for every configured currency,\n    as well as SocketServer (http interface + websocket server)\n* The coinstream will subscribe to a currency topic and receive live-trade events,\n    which he will append to a file at `./streams/${currency}.fs`, which is why you can stop\n    and start the process whenever you want, it will always reload data that is already stored\n    and continue writing to the stream file\n* The socket-server will expose http endpoints to trigger actions of coinpusher and also to retreive\n    information about the current state, as well as expose a websocket interface for the client apps\n    which will receive a lot of packages for predictions, live trades or performance data to display\n    them in HTML charts\n* Neuronal Networks can be trained on the fly (triggered by http endpoints) they are also stored on\n    disk at `./nets/${currency}.nn`, networks are also reloaded on process start\n* If a network is present in memory, it will predict on every incoming live trade, prediction\n    results are attached to the trade objects and send broadcasted to the clients\n* Based on timing ~ 12 minutes constant predictions are made that will stick in in front-end charts\n    as well as they build the basis for future performance tests, as we can use them in the future to compare the predictions with the actually course state (price) these are called \"drifts\"\n* Whenever drifts are created or compared they also emit events and broadcast packets to the client\n    to 1. identify possibly actions for trading bots e.g. buy and sell and 2. to rate the performance of the network's prediction in the real-world\n* The system is developed to be a little generic, meaning that changing neuronal network intput and output vectors, or stream sources, or timings can be done with little effort, as the the rest of the system adapts to the values on the fly e.g. relative array sizes a.m.m..\n\n## Additional\n\n* When I talk about \"currency\" I am actually talking about the currency-pairs of bistamp e.g. etheur\n* You are responsible for your own damage, if you use this project to predict bot actions\n\n## Client Info\n\n* The client codes uses ECMA6+ features without transpiling them, you will need an up to date version of Google Chrome or Mozilla Firefox for this work properly\n* the client also ships with 2 external libraries:\n* [Plotly.js](https://plot.ly/javascript/)\n* [Moment.js](https://momentjs.com)\n\n## Adjusting Configuration\n\n* To alter the dataset size etc. checkout the \"const\" variables in the first lines of `./lib/Coinpusher.js`\n* To adjust the network layers checkout \"createNewNetwork()\" in `./lib/NeuronalNetworkFactory.js`\n* To adjust the network architecture checkout the `./lib/NeuronalNetwork.js` helper class\n* To change `input-` and `output-vectors` of the network take a look at the `ETLS` object of `./lib/Coinpusher.js`\n* Websocket \u0026 HTTP setup can be found in `./lib/SocketServer.js`\n* Changing the port of the http and websocket server can be done by altering the arguments \n    in \"start()\" of `./lib/Coinpusher.js`\n\n## Attaching a trade bot\n\nIts actually quite easy to get started:\n\n```javascript\n    const {Bitstamp, CURRENCY} = require(\"node-bitstamp\");\n    //you can also install via npm i coinpusher or yarn add coinpusher\n    const {Coinpusher} = require(\"coinpusher\"); //alt. require(\"./lib/Coinpusher.js\");\n\n    const bitstamp = new Bitstamp({\n        key,\n        secret,\n        clientId\n    });\n\n    const cp = new Coinpusher();\n    cp.start(CURRENCY.BTC_EUR, 3333).then(() =\u003e {\n        \n        //subscribe to the drift event (apprx. emmits every ~ 12 minutes)\n        //the prediction will be placed in the future apprx. ~ 9,6 minutes\n        //the timing are apprx. because they depend on the output vector size which is configurable\n        //we currently set the size to 278 and assume n seconds distance between trades e.g. 278 * 5 seconds\n        //the futureValue is a median value taken from the last 20% of outputs\n        cp.on(\"drift\", data =\u003e {\n\n            const {\n                id, //uuid.v4\n                drift, // e.g. -12.5\n                timestamp, // unix seconds\n                currentValue, // current course value -\u003e 3440.0\n                futureValue, // predicted course value -\u003e 3452.5\n                timestampFormatted, //YYYY-MM-DD HH:mm:ss\n                currency //btceur\n            } = data;\n\n            //depening on the last action buy or sell you can now plan\n            //the next action you might make\n\n            //buy\n            bitstamp.buyLimitOrder(amount, price, currency, limit_price, daily_order);\n\n            //or sell\n            bitstamp.sellLimitOrder(amount, price, currency, limit_price, daily_order);\n\n            //obviously this requires some additional tracking of account capacity\n            //limit tresholds, as well as taking care of fee calculations.. etc..\n        });\n    });\n```\n\nMore infos about the Bitstamp API client can be found [here](https://github.com/krystianity/node-bitstamp)\n\n## More Screenshots\n\n![graph screenshot](graph.png)\n\n![performance screenshot](performance.png)\n\n## License\n\n* Mozilla Public License Version 2.0\n* Contact me if you need help or require a different license\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrystianity%2Fcoinpusher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkrystianity%2Fcoinpusher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrystianity%2Fcoinpusher/lists"}