{"id":48462730,"url":"https://github.com/the-pulse-engine/pulse-engine_market_intelligence_platform","last_synced_at":"2026-04-26T09:01:30.208Z","repository":{"id":348456817,"uuid":"1198186507","full_name":"The-Pulse-Engine/Pulse-Engine_Market_Intelligence_Platform","owner":"The-Pulse-Engine","description":"An explainable market analysis system that combines technical indicators and news sentiment to generate clear buy/sell signals with reasoning through an interactive dashboard","archived":false,"fork":false,"pushed_at":"2026-04-06T18:49:54.000Z","size":404,"stargazers_count":11,"open_issues_count":9,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-07T03:03:03.227Z","etag":null,"topics":["cryptocurrency","data-analysis","data-pipeline","financial-analysis","market-analysis","python","sentiment-analysis","stock-market","streamlit","trading-signals"],"latest_commit_sha":null,"homepage":"https://pulseengine.streamlit.app/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/The-Pulse-Engine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"Docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"ko_fi":"bhargavaramkrishnapur"}},"created_at":"2026-04-01T07:34:04.000Z","updated_at":"2026-04-06T18:49:58.000Z","dependencies_parsed_at":"2026-04-05T01:01:19.258Z","dependency_job_id":null,"html_url":"https://github.com/The-Pulse-Engine/Pulse-Engine_Market_Intelligence_Platform","commit_stats":null,"previous_names":["codex-crusader/le_market_intelligence_platform","the-pulse-engine/pulse-engine_market_intelligence_platform"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/The-Pulse-Engine/Pulse-Engine_Market_Intelligence_Platform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Pulse-Engine%2FPulse-Engine_Market_Intelligence_Platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Pulse-Engine%2FPulse-Engine_Market_Intelligence_Platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Pulse-Engine%2FPulse-Engine_Market_Intelligence_Platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Pulse-Engine%2FPulse-Engine_Market_Intelligence_Platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Pulse-Engine","download_url":"https://codeload.github.com/The-Pulse-Engine/Pulse-Engine_Market_Intelligence_Platform/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Pulse-Engine%2FPulse-Engine_Market_Intelligence_Platform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31539229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"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":["cryptocurrency","data-analysis","data-pipeline","financial-analysis","market-analysis","python","sentiment-analysis","stock-market","streamlit","trading-signals"],"created_at":"2026-04-07T03:00:24.731Z","updated_at":"2026-04-26T09:01:30.201Z","avatar_url":"https://github.com/The-Pulse-Engine.png","language":"Python","funding_links":["https://ko-fi.com/bhargavaramkrishnapur","https://ko-fi.com/M4M11X86KI"],"categories":[],"sub_categories":[],"readme":"# PulseEngine                        [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/M4M11X86KI)\n\n[![Python](https://img.shields.io/badge/Python-3.11%2B-3776AB?style=flat-square\u0026logo=python\u0026logoColor=white)](https://www.python.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-22c55e?style=flat-square)](LICENSE)\n[![Streamlit](https://img.shields.io/badge/Streamlit-1.54%2B-FF4B4B?style=flat-square\u0026logo=streamlit\u0026logoColor=white)](https://streamlit.io/)\n[![pandas](https://img.shields.io/badge/pandas-2.0%2B-150458?style=flat-square\u0026logo=pandas\u0026logoColor=white)](https://pandas.pydata.org/)\n[![Plotly](https://img.shields.io/badge/Plotly-6.6%2B-3F4F75?style=flat-square\u0026logo=plotly\u0026logoColor=white)](https://plotly.com/)\n[![Data: Yahoo Finance](https://img.shields.io/badge/Data-Yahoo%20Finance-6001D2?style=flat-square)](https://finance.yahoo.com/)\n[![News: RSS Feeds](https://img.shields.io/badge/News-12%20RSS%20Feeds-FFA500?style=flat-square)](https://en.wikipedia.org/wiki/RSS)\n[![Assets: 24 Tracked](https://img.shields.io/badge/Assets-24%20Tracked-0ea5e9?style=flat-square)]()\n[![PRs Welcome](https://img.shields.io/badge/PRs-Welcome-brightgreen?style=flat-square)](CONTRIBUTING.md)\n[![Disclaimer](https://img.shields.io/badge/Disclaimer-Not%20Financial%20Advice-red?style=flat-square)](Docs/DISCLAIMER.md)\n\nOriginally Created by *Bhargavaram Krishnapur (Codex-Crusader)*\n\n_LINK TO LIVE DEPLOYMENT: [HERE!!!](https://pulseengine.streamlit.app/)_\n\n![updated_dashboard](https://github.com/user-attachments/assets/335208b5-ae20-4ec5-b9a8-959b4ff41b55)\n\n---\n\nA real-time market analysis dashboard that combines technical price indicators, multi-source news sentiment, and event-driven signal generation into a single composite score for 24 tracked assets across commodities, cryptocurrencies, technology equities, and market indices.\n\nAll data is sourced from free, publicly available feeds. No proprietary APIs, no paid data subscriptions, and no trading execution. The platform is an analytical tool only.\n\n---\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Features](#features)\n- [Architecture](#architecture)\n- [Asset Coverage](#asset-coverage)\n- [Quick Start](#quick-start)\n- [Quick Start (Docker)](#quick-start-docker)\n- [Installation](#installation)\n- [Running the Dashboard](#running-the-dashboard)\n- [Running a Full Scan](#running-a-full-scan)\n- [Configuration](#configuration)\n- [Signal Interpretation](#signal-interpretation)\n- [Data Storage](#data-storage)\n- [Backtesting](#backtesting)\n- [Project Structure](#project-structure)\n- [Documentation](#documentation)\n- [Roadmap](#roadmap)\n- [Contributing](#contributing)\n- [Disclaimer](#disclaimer)\n- [License](#license)\n\n---\n\n## Overview\n\nThe platform processes data from two independent sources on each analysis cycle:\n\n- **Price data** — 30-day OHLCV history fetched from Yahoo Finance via `yfinance`\n- **News data** — up to 300 articles ingested in parallel from 12 curated RSS feeds, deduplicated using Jaccard similarity, and scored using VADER sentiment analysis augmented with a financial lexicon\n\nThese two streams are merged into a composite signal score ranging from -10 (Strong Bearish) to +10 (Strong Bullish) using weighted contributions from six sub-components: trend direction, price momentum, RSI oscillator reading, news sentiment, trend strength, and market/sector context. Each asset class applies its own weighting profile to reflect how different market types respond to different signal types.\n\nHistorical snapshots are persisted to compressed JSON files on disk. A background scan thread processes all 24 assets every 30 minutes without blocking the dashboard UI.\n\n---\n\n## Features\n\n| Feature | Detail |\n|---|---|\n| Signal scoring | Composite score -10 to +10 across 6 weighted components |\n| Asset classes | Commodities, Cryptocurrency, Tech Stocks, Market Indices |\n| News ingestion | 12 public RSS feeds, parallel fetch, Jaccard deduplication |\n| Sentiment engine | VADER with injected financial lexicon, keyword fallback |\n| Event detection | 8 event categories (central bank, geopolitical, earnings, etc.) |\n| Market context | Sector peer comparison and benchmark alignment analysis |\n| Background scan | Full 24-asset scan every 30 minutes via daemon thread |\n| Historical storage | Compressed per-asset JSON snapshots with tiered retention |\n| Backtesting | Hit-rate evaluation by signal strength and label |\n| Retention policy | Full detail 7 days, reduced detail 30 days, deleted after 60 days |\n| Dashboard | Streamlit wide-layout with auto-refresh every 90 seconds |\n| Top movers | Live 24h gainers and losers in sidebar |\n| Market heatmap | Category-level 24h change heatmap |\n| Category overview | Tabular summary of all assets in selected category |\n\n---\n\n## Architecture\n\n```mermaid\nflowchart TD\n    A([Dashboard Start]) --\u003e B[_maybe_trigger_scan]\n    B --\u003e C{Scan due?}\n    C --\u003e|No| D[Serve cached data]\n    C --\u003e|Yes| E[Acquire singleton lock]\n    E --\u003e F{Lock free?}\n    F --\u003e|No| D\n    F --\u003e|Yes| G[Spawn daemon thread]\n    G --\u003e H[run_scan — all 24 assets]\n    D --\u003e I[User selects asset]\n    H --\u003e J[fetch_news_articles]\n    I --\u003e K[cached_history]\n    J --\u003e L[analyse_asset loop]\n    K --\u003e M[compute_price_metrics]\n    M --\u003e N[compute_momentum_metrics]\n    N --\u003e O[correlate_news]\n    O --\u003e P[compute_signal_score]\n    P --\u003e Q[build_explanation]\n    Q --\u003e R[save_snapshot]\n    L --\u003e R\n    R --\u003e S[Dashboard renders]\n    S --\u003e T{Auto-refresh 90s}\n    T --\u003e B\n```\n\n---\n\n## Asset Coverage\n\n[![Commodities](https://img.shields.io/badge/Commodities-8%20Assets-a16207?style=flat-square)](#asset-coverage)\n[![Cryptocurrency](https://img.shields.io/badge/Cryptocurrency-5%20Assets-7c3aed?style=flat-square)](#asset-coverage)\n[![Tech%20Stocks](https://img.shields.io/badge/Tech%20Stocks-7%20Assets-0284c7?style=flat-square)](#asset-coverage)\n[![Market%20Indices](https://img.shields.io/badge/Market%20Indices-4%20Assets-059669?style=flat-square)](#asset-coverage)\n\n| Category | Assets |\n|---|---|\n| Commodities | Gold, Silver, Crude Oil, Natural Gas, Copper, Platinum, Wheat, Corn |\n| Cryptocurrency | Bitcoin, Ethereum, Monero, Solana, Litecoin |\n| Tech Stocks | Apple, Microsoft, NVIDIA, Google, Amazon, Meta, Tesla |\n| Market Indices | S\u0026P 500, NASDAQ, Dow Jones, VIX (Fear Index) |\n\n---\n\n## Quick Start\n\n```bash\n# 1. Clone the repository\ngit clone https://github.com/The-Pulse-Engine/Pulse-Engine_Market_Intelligence_Platform.git\ncd Pulse-Engine_Market_Intelligence_Platform\n\n# 2. Create and activate a virtual environment\n# Python 3.11–3.14 are all supported\npython -m venv .venv\n# Windows\n.venv\\Scripts\\activate\n# macOS / Linux\nsource .venv/bin/activate\n\n# 3. Install dependencies\npip install -r requirements.txt\n\n# Optional: install developer tooling for tests and linting\npip install -r requirements-dev.txt\n\n# 4. Run the local dashboard\nstreamlit run pulseengine/local/dashboard.py\n```\n\nThe dashboard opens at `http://localhost:8501`. A full-market background scan starts automatically on first load and repeats every 30 minutes.\n\n---\n\n## Quick Start (Docker)\n\n```bash\ndocker build -t market-intel .\ndocker run -p 8501:8501 market-intel\n```\n\nDashboard available at `http://localhost:8501`.\n\n---\n\n## Installation\n\n### Automated Installer (Recommended)\n\nThe repo ships with a cross-platform installer that handles environment creation, dependency installation, and launch-script generation in one step.\n\n**Windows (PowerShell):**\n```powershell\npowershell -ExecutionPolicy Bypass -File install.ps1\n```\n\n**macOS / Linux:**\n```bash\nbash install.sh\n```\n\n**Or run the installer directly with Python:**\n```bash\npython install.py\n```\n\nThe installer will:\n1. Verify Python 3.11–3.14 is available\n2. Create `.venv/` using `python -m venv`\n3. Install all dependencies from `requirements.txt`\n4. Verify all key packages import correctly inside the venv\n5. Generate a platform-appropriate launch script in the repo root\n\nAfter the installer completes, launch the dashboard with:\n- **Windows:** double-click `launch.bat`, or run `launch.bat` / `.\\launch.ps1` in a terminal\n- **macOS/Linux:** run `./launch.sh`\n\n---\n\n### Requirements\n\n- Python 3.11–3.14 (all supported; `pip install -r requirements.txt` works out of the box on all four versions)\n- Internet connection (Yahoo Finance and RSS feeds)\n\n### Dependencies\n\n| Package | Minimum Version | Purpose |\n|---|---|---|\n| streamlit | 1.54.0 | Dashboard framework |\n| yfinance | 1.2.1 | Price history via Yahoo Finance |\n| pandas | 2.3.3 | DataFrame operations |\n| plotly | 6.6.0 | Interactive charts and heatmap |\n| feedparser | 6.0.12 | RSS feed ingestion |\n| vaderSentiment | 3.3.2 | Sentiment analysis |\n\nInstall the pinned runtime dependencies first:\n\n```bash\npip install -r requirements.txt\n```\n\nFor development, linting, and testing tools, install:\n\n```bash\npip install -r requirements-dev.txt\n```\n\n---\n\n## Running the Dashboard\n\nIf you used the automated installer, use the generated launch script:\n\n```bash\n# Windows\nlaunch.bat\n# or\n.\\launch.ps1\n\n# macOS / Linux\n./launch.sh\n```\n\nOr run directly:\n\n```bash\nstreamlit run pulseengine/local/dashboard.py\n```\n\nFor the lightweight web demo, use:\n\n```bash\nstreamlit run pulseengine/web/dashboard.py\n```\n\nOn startup the dashboard:\n\n1. Renders the sidebar with category and asset selectors\n2. Checks whether a full-market scan is due\n3. Launches a background daemon thread to scan all 24 assets if the last scan summary is missing or older than 30 minutes\n4. Displays `System initializing — full market scan running in background...` while the scan is active\n5. Fetches price and news data for the currently selected asset and renders the full analysis panel\n\nYou can also enter any valid Yahoo Finance ticker in the sidebar (for example `PLTR`, `ARM`, `TSM`, `BRK-B`) to run arbitrary ticker analysis locally without editing `config/settings.py`.\nFor custom tickers, keywords are auto-generated from ticker metadata and the dashboard applies low-news-confidence safeguards when coverage is sparse.\n\nThe sidebar shows the scan status (running / N minutes ago / pending first run) and a manual `Run full scan now` button.\n\n---\n\n## Running a Full Scan\n\nThe scan pipeline can be executed independently of the dashboard:\n\n```bash\n# Full verbose scan — saves snapshots and summary\npython -m app.scan\n\n# Suppress per-asset log lines\npython -m app.scan --quiet\n\n# Validate pipeline without writing any files\npython -m app.scan --dry-run\n```\n\nOutput is written to:\n- `market_data/\u003cAssetName\u003e_YYYYMMDD.json.gz` — per-asset daily snapshot\n- `market_data/_scan_summary.json.gz` — hierarchical summary of latest scan\n\n---\n\n## Configuration\n\nAll tunable values are in `config/settings.py`. No magic numbers exist anywhere else in the codebase.\n\n| Constant | Default | Description |\n|---|---|---|\n| `LOOKBACK_DAYS` | 30 | Price history window in days |\n| `NEWS_MAX_AGE_HOURS` | 96 | Maximum article age accepted |\n| `NEWS_MAX_ARTICLES` | 300 | Article pool cap before correlation |\n| `PRICE_CACHE_TTL` | 90 s | Dashboard price cache lifetime |\n| `NEWS_CACHE_TTL` | 300 s | Dashboard news cache lifetime |\n| `SCAN_INTERVAL_MINUTES` | 30 | Background scan frequency |\n| `MAX_WORKERS` | 4 | Parallel threads for data fetching |\n| `RSI_PERIOD` | 14 | RSI calculation window |\n| `MOMENTUM_PERIOD` | 10 | Rate-of-change calculation window |\n| `DEDUP_SIMILARITY_THRESHOLD` | 0.65 | Jaccard cutoff for deduplication |\n| `PRICE_CHANGE_THRESHOLD` | 2.0 % | Threshold for significant move alert |\n| `RELEVANCE_HIGH` | 6 | Score threshold for high-relevance news |\n| `RELEVANCE_MEDIUM` | 3 | Score threshold for medium-relevance news |\n| `STORAGE_FULL_DETAIL_DAYS` | 7 | Days to retain full snapshots |\n| `STORAGE_REDUCED_DETAIL_DAYS` | 30 | Days to retain reduced snapshots |\n| `STORAGE_MAX_DAYS` | 60 | Days before snapshot deletion |\n\n### Signal Thresholds\n\n| Label | Score Range |\n|---|---|\n| Strong Bullish | \u003e= 6.0 |\n| Bullish | \u003e= 3.0 |\n| Slightly Bullish | \u003e= 1.0 |\n| Neutral | -1.0 to 1.0 |\n| Slightly Bearish | \u003e= -3.0 |\n| Bearish | \u003e= -6.0 |\n| Strong Bearish | \u003c -6.0 |\n\n## Signal Interpretation\n\nSignal scores are a compact summary of price action, momentum, sentiment, and context.\nUse the ranges below as a quick interpretation guide when scanning assets in the dashboard:\n\n| Score Range | Interpretation |\n|---|---|\n| +6 to +10 | Strong Bullish |\n| +2 to +6 | Bullish |\n| -2 to +2 | Neutral |\n| -6 to -2 | Bearish |\n| -10 to -6 | Strong Bearish |\n\nThese ranges are intentionally broad so the label remains readable even as individual\nsignal components shift over time.\n\n### Per-Asset-Class Signal Weights\n\n| Component | Crypto | Tech Stocks | Commodities | Indices |\n|---|---|---|---|---|\n| Trend | 1.2x | 1.2x | 1.3x | 1.5x |\n| Momentum | 1.8x | 1.0x | 1.0x | 1.2x |\n| RSI | 0.8x | 1.0x | 0.8x | 0.5x |\n| Sentiment | 1.2x | 1.6x | 1.2x | 1.0x |\n| Trend Strength | 1.2x | 1.0x | 1.0x | 1.2x |\n| Context | 0.5x | 1.2x | 1.2x | 1.5x |\n\n---\n\n## Data Storage\n\nSnapshots are stored as gzip-compressed JSON files under `market_data/`:\n\n```\nmarket_data/\n  Gold_20260401.json.gz\n  Bitcoin_20260401.json.gz\n  ...\n  _scan_summary.json.gz\n```\n\n### Retention Tiers\n\n| Age | Fields Retained |\n|---|---|\n| 0 – 7 days | Full snapshot including top 5 headlines |\n| 8 – 30 days | Reduced: price, change_1d, signal_score, signal_label, trend, rsi, roc_10d, trend_strength |\n| \u003e 60 days | Deleted automatically after each scan |\n\n---\n\n## Backtesting\n\nThe backtesting module evaluates historical signal accuracy by comparing the signal score on day N with the actual price direction from day N to day N+1.\n\n```python\nfrom app.backtest import evaluate_signal_accuracy\nresult = evaluate_signal_accuracy(\"Gold\", lookback=20)\nprint(result[\"hit_rate\"])\n```\n\nResults are broken down by:\n- Overall hit rate\n- Accuracy by signal strength (strong / moderate / weak)\n- Accuracy per signal label\n- Current win or loss streak\n\n---\n\n## Project Structure\n\n```\npulse_engine_1/\n  app/\n    __init__.py\n    analysis.py         Re-export shim + CLI entry point (wraps src/ modules)\n    scan.py             Full-market batch scan pipeline\n    backtest.py         Historical signal accuracy evaluation\n  dashboard/\n    __init__.py\n    main.py             Streamlit dashboard controller\n    components.py       Reusable UI rendering functions\n    styles.py           CSS theming for the dashboard\n    data.py             Cached data loaders and staleness helpers\n  storage/\n    __init__.py\n    storage.py          Compressed snapshot persistence and retention\n  config/\n    __init__.py\n    settings.py         All configuration constants\n  src/\n    __init__.py\n    engine.py           Pipeline orchestration (analyse_asset, run_full_scan)\n    price.py            Yahoo Finance fetching and price metrics\n    news.py             RSS fetching, deduplication, and clustering\n    signals.py          Signal scoring, event detection, news correlation\n    context.py          Sector and market context analysis\n    explanation.py      Human-readable narrative generation\n    sentiment.py        VADER + financial-lexicon sentiment scoring\n    errors.py           Custom exception types (PipelineError hierarchy)\n  assets/\n    icons/\n      favicon.ico\n    logo/\n      pulseengine_logo.png\n  tests/\n    conftest.py              Shared fixtures\n    test_core.py             Sanity and invariant tests for pure functions\n    test_pipeline.py         Smoke tests for end-to-end pipelines\n    test_logic_coverage.py   Edge case coverage for scoring, sentiment, dedup\n    test_storage_and_scan.py Storage round-trip, retention, dry-run scan, backtest\n    MAINTENANCE.md           Guide for updating the test suite\n  Docs/\n    code_flow.md        Detailed execution flow diagrams\n    variable_list.md    Complete variable and constant reference\n    ROADMAP.md          Project direction, milestones, and contributor lanes\n    CHANGELOG.md        All notable changes by version\n    DISCLAIMER.md       Legal and financial disclaimer\n    CONTRIBUTORS.md     List of project contributors\n  requirements.txt      Python dependencies\n  requirements-dev.txt  Test dependencies (pytest, pytest-mock)\n  install.py            Cross-platform local installer (creates .venv, installs deps, generates launch scripts)\n  install.sh            macOS/Linux wrapper — detects compatible Python 3.11–3.14 and delegates to install.py\n  install.ps1           Windows PowerShell wrapper — same Python detection, delegates to install.py\n  launch.bat            Windows batch launcher (generated by install.py, git-ignored)\n  launch.ps1            Windows PowerShell launcher (generated by install.py, git-ignored)\n  launch.sh             macOS/Linux launcher with executable bit set (generated by install.py, git-ignored)\n  README.md             This file\n  CONTRIBUTING.md       Contribution guidelines\n  LICENSE               MIT License\n  .gitignore            Git ignore rules\n  .vscode/\n    launch.json         VS Code debug/run configurations\n  .idea/\n    runConfigurations/  PyCharm run/debug configurations\n  market_data/          Runtime snapshot directory (git-ignored)\n```\n\n---\n\n## Documentation\n\n| Document | Description |\n|---|---|\n| [Docs/code_flow.md](Docs/code_flow.md) | Step-by-step execution flow for every pipeline with Mermaid diagrams |\n| [Docs/variable_list.md](Docs/variable_list.md) | Complete reference of all variables, constants, and return structures |\n| [CONTRIBUTING.md](CONTRIBUTING.md) | How to report issues, propose changes, and submit pull requests |\n| [Docs/CONTRIBUTORS.md](Docs/CONTRIBUTORS.md) | All project contributors |\n| [Docs/DISCLAIMER.md](Docs/DISCLAIMER.md) | Financial, legal, and data accuracy disclaimers |\n| [Docs/CHANGELOG.md](Docs/CHANGELOG.md) | All notable changes by version |\n| [Docs/ROADMAP.md](Docs/ROADMAP.md) | Project direction, milestones, and contributor lanes |\n\n---\n\n## Contributing\n\nContributions are welcome. Please read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request. All contributors must follow the code style and testing requirements described there.\n\n[![Open Issues](https://img.shields.io/github/issues/The-Pulse-Engine/Pulse-Engine_Market_Intelligence_Platform?style=flat-square)](https://github.com/The-Pulse-Engine/Pulse-Engine_Market_Intelligence_Platform/issues)\n[![Pull Requests](https://img.shields.io/github/issues-pr/The-Pulse-Engine/Pulse-Engine_Market_Intelligence_Platform?style=flat-square)](https://github.com/The-Pulse-Engine/Pulse-Engine_Market_Intelligence_Platform/pulls)\n\n---\n\n## Roadmap\n\nPulseEngine is being built toward a local-first desktop application — a full-power EXE that runs entirely on your machine with no cloud dependency, no accounts, and no data leaving your device. The Streamlit deployment is a live demo with restricted features.\n\nPlanned milestones:\n- **v0.3** — Arbitrary ticker support _(local installer shipped; repo restructure done in v0.2.1)_\n- **v0.4** — Desktop EXE via PyInstaller, GitHub Actions build pipeline\n- **v0.5** — FinBERT running locally, offline mode, export features\n- **v1.0** — Full market coverage, dynamic asset discovery, all stocks\n\nSee [Docs/ROADMAP.md](Docs/ROADMAP.md) for the full breakdown including what's out of scope and how to contribute to specific milestones.\n\n---\n\n## Disclaimer\n\nThis software is provided for informational and educational purposes only. It does not constitute financial advice, investment advice, trading advice, or any other form of advice. See [DISCLAIMER.md](Docs/DISCLAIMER.md) for the full disclaimer.\n\n---\n\n## License\n\nThis project is licensed under the MIT License. See [LICENSE](LICENSE) for the full text.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-22c55e?style=flat-square)](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-pulse-engine%2Fpulse-engine_market_intelligence_platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthe-pulse-engine%2Fpulse-engine_market_intelligence_platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-pulse-engine%2Fpulse-engine_market_intelligence_platform/lists"}