ARQ31/IDX-AI-Market-Surveillance

GitHub: ARQ31/IDX-AI-Market-Surveillance

基于Isolation Forest无监督学习算法的印尼股票市场实时异常检测与可视化仪表板,帮助用户快速识别价格和成交量的统计异常。

Stars: 0 | Forks: 0

# 🛡️ IDX AI 市场监控仪表板 这是一个基于人工智能 (AI) 的印度尼西亚股票市场 (Bursa Efek Indonesia) 监控系统,旨在实时检测异常的价格和成交量变动。该项目灵感来自于交易所监管机构实施的 **Unusual Market Activity (UMA)** 概念。 该仪表板使用 **Isolation Forest**(一种*无监督机器学习*算法),基于历史和技术数据来检测股票走势中的异常情况。 ## ✨ 核心功能 - **📡 实时数据流水线**:直接从 Yahoo Finance (`yfinance`) 获取股票数据,并进行*实时*处理,无需手动运行数据收集脚本。 - **🤖 AI 异常检测**:使用 *Isolation Forest* 模型生成异常分数(0.00 到 1.00),并将股票风险分类为 *Normal*、*Low Risk*、*Medium Risk* 和 *High Risk*。 - **📊 市场风险热力图**:交互式可视化市场风险地图,直观展示今天哪些股票正经历最极端的波动。 - **🔍 深度股票分析**:专属页面用于查看交互式图表(K 线图与成交量),配有精准标记,明确指示异常发生的时间点。 - **⚡ 自动刷新**:仪表板每 5 分钟自动更新数据,确保您始终查看到最新的市场状况。 ## 🛠️ 系统架构 该项目已升级为直连流水线 (live pipeline) 系统: - `src/config.py`:集中配置文件(股票代码列表、模型参数、风险阈值)。 - `src/data_pipeline.py`:集成了*数据获取 (Data Fetching)*、*特征工程 (Feature Engineering)* 和 *异常检测 (Anomaly Detection)* 的流水线。 - `dashboard.py`:主 Streamlit 应用程序(多页面仪表板)。 - *注:保留了旧版离线脚本(`collect_data.py`、`feature_engineering.py`、`anomaly_model.py`),以满足批量/离线数据处理的需求。* ## 📐 分析的技术特征 系统在将每只股票输入 AI 模型之前,会计算 8 项指标: 1. **Daily Return**(每日价格变动) 2. **Volume Change**(每日成交量变动) 3. **Volume Spike Ratio**(成交量相较于 20 天平均值的激增比例) 4. **Price Range Percentage**(最高价和最低价之间的幅度) 5. **Price Gap MA20**(价格偏离 20 天移动平均线的差值) 6. **Rolling Volatility 20**(过去 20 天的波动率) 7. **Return Z-Score**(收益相较于其正常模式的极端程度) 8. **Volume Z-Score**(成交量相较于其正常模式的极端程度) ## 🚀 安装与使用指南 ### 通过 Streamlit Community Cloud 访问(在线仪表板) 您可以直接在线访问该仪表板,无需在本地计算机上进行安装。请点击以下链接: 👉 **[在线仪表板:IDX AI Market Surveillance](https://idx-ai-market-surveillance.streamlit.app/)** *(注:请将上述 URL 替换为您在 Streamlit Community 上部署后的链接)* ### 在本地计算机上运行 (Localhost) #### 1. 系统要求 请确保您使用的是 **Python 3.8** 或更高版本。 ### 2. 安装依赖项 打开终端并运行以下命令,以安装所有必需的 *library*: ``` pip install -r requirements.txt ``` ### 3. 运行仪表板 安装完成后,使用以下命令运行 Streamlit: ``` streamlit run dashboard.py ``` 应用程序将自动在您的浏览器中打开(通常地址为 `http://localhost:8501`)。 ## ⚙️ 配置(可选) 您可以通过 `src/config.py` 文件修改系统设置: - **修改默认股票**:在 `DEFAULT_TICKERS` 列表中添加或删除股票代码。请务必为 BEI(印尼证券交易所)的股票添加 `.JK` 后缀(例如:`BBRI.JK`)。 - **历史数据窗口**:修改变量 `HISTORY_DAYS`(默认为 180 天),以调整模型用于学习市场“正常模式”的历史数据回溯长度。 此外,在浏览器中打开仪表板时,您还可以直接通过侧边栏 (sidebar) 添加股票代码。 ## ⚠️ 免责声明 **非投资建议。** 本仪表板纯粹出于**教育、研究和作品集展示目的**而开发。异常检测结果(如 High Risk 等)并不构成对特定股票买入、卖出或持有的建议。本系统无法确切判定是否存在市场操纵行为(如囤积居奇/拉抬出货),它仅仅是检测出当前的价格和成交量模式在统计数据上“偏离”了其历史正常模式。任何投资决定均完全由个人自行承担责任。
标签:Apex, Isolation Forest, Kubernetes, Streamlit, 异常检测, 机器学习, 股票监控, 访问控制, 逆向工具, 金融科技