{"id":19262476,"url":"https://github.com/cdeck3r/yasmape","last_synced_at":"2026-07-05T01:31:20.469Z","repository":{"id":114500881,"uuid":"544509492","full_name":"cdeck3r/YASMaPE","owner":"cdeck3r","description":"Practical exercise in ML system engineering with an application to stock market prediction","archived":false,"fork":false,"pushed_at":"2023-04-06T20:26:56.000Z","size":4050,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-23T18:46:59.945Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","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/cdeck3r.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":"2022-10-02T16:57:01.000Z","updated_at":"2022-10-02T17:17:05.000Z","dependencies_parsed_at":"2023-05-17T08:46:26.619Z","dependency_job_id":null,"html_url":"https://github.com/cdeck3r/YASMaPE","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cdeck3r/YASMaPE","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdeck3r%2FYASMaPE","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdeck3r%2FYASMaPE/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdeck3r%2FYASMaPE/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdeck3r%2FYASMaPE/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdeck3r","download_url":"https://codeload.github.com/cdeck3r/YASMaPE/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdeck3r%2FYASMaPE/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35141083,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-04T02:00:05.987Z","response_time":113,"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":"2024-11-09T19:31:52.743Z","updated_at":"2026-07-05T01:31:20.422Z","avatar_url":"https://github.com/cdeck3r.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# YASMaPE\n\nYASMaPE stands for _Yet another stock market prediction experiment_.\n\nTechnically, this project is an practical exercise in machine learning (ML) system engineering. It is about to play around with powerful tools and to experiment with ML systems designs. \n\nThe stock market supplies time series data as input to this project. This is highly attractive: fresh as well as historical time series data is available and standardized, but the data generating process is hidden and unveils surprisingly complex behaviors. \n\n**Disclaimer:** This project is highly experimental. Do not use for investment decisions.\n\n## Project Information\n\nIn this project, we want to evaluate chart indicators for stock recommendations. Chart indicators are empirical hearsay and popular folklore about the stock market. There is neither a scientific foundation nor a derivation from first principles. \n\nAs a consequence, our analysis is purely based on statistical correlations of stock prices with these indicators. We aim to exploit the situation that _sometimes_ these correlations turn out to be useful. So, for a stock recommendation we formulate the following prediction problem.\n\n\u003e **Prediction Problem:** When do today's indicators correlate with future returns?\n\nFurther, we aim at traders with a low budget. This constraints our recommendations as follows:\n\n1. single stock investments over diversified portfolios\n1. long-term return over short-term decisions\n1. buy/sell delays over intraday trading\n\nAs a result, we formulate the project goal.\n\n\u003e **Goal:** Enable a solution approach for the prediction problem in an application contrained by budget, diversity and delays.\n\n\n## Technical Approach\n\nThe project's experiments compile features from 70+ chart indicators for a stock and use Uber's deep learning framework [Ludwig](https://ludwig-ai.github.io/ludwig-docs/) to make predictions. In the refined prediction problem, we formulate regressions and classifications problems involving\n\n* returns across various horizons\n* return larger than a given threshold\n\nYASMaPE is [multi-container Docker application](https://docs.docker.com/compose/). Each container runs idempotent workflows implemented using [snakemake](https://snakemake.readthedocs.io/en/stable/). Distributed coordination across containers is supported by [celery](https://docs.celeryq.dev/en/stable/index.html). \n\n\n## Documentation\n\nPlease see [`docs`](docs) folder for an extensive documentation \n\n## Software System Setup\n\nA `docker-compose` file provides a setup for a multi-container application composed of containers as microservices, which are loosely coupled by a distributed task queue. The ML pipelines are controlled via the [director](https://ovh.github.io/celery-director/) on http://localhost:8000.\nThe diagram below depicts the containers, their dependencies and ports (number in circles). The diagram sources from this [medium.com article](https://medium.com/@krishnakummar/creating-block-diagrams-from-your-docker-compose-yml-da9d5a2450b4).\n\n![docker-compose dependencies](docs/docker-compose.png)\n\n\n**Setup:** Start in project's root dir and create a `.env` file with the content shown below.\n```\n# .env file\n\n# In the container, this is the directory where the code is found\n# Example:\nAPP_ROOT=/YASMaPE\n\n# the HOST directory containing directories to be mounted into containers\n# Example:\nVOL_DIR=/dev/YASMaPE\n```\n\n**Create** docker image. Please see [Dockerfiles/](Dockerfiles directory) for details.\n\n```bash\ndocker-compose build yasmape\ndocker-compose build ludwig\ndocker-compose build jupyter\ndocker-compose build mlflow\ndocker-compose build director\n```\n\n**Spin up** the containers and get a shell from a container\n```bash\ndocker-compose up -d yasmape\ndocker-compose up -d ludwig\ndocker-compose up -d jupyter\ndocker-compose up -d director\n\n# optionally, get a shell on the yasmape container\ndocker exec -it yasmape /bin/bash\n```\n\nFinally, point you browser to http://localhost:8000 to retrieve the director interface to run the ML pipelines for distributed processing across the containers.\n\n## License\n\nInformation provided in the [LICENSE](LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdeck3r%2Fyasmape","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdeck3r%2Fyasmape","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdeck3r%2Fyasmape/lists"}