alphaear-predictor
Market prediction skill using Kronos. Use when user needs finance market time-series forecasting or news-aware finance market adjustments.
Savant verdict: Review advised
Security analysis or source-hub review identified patterns requiring attention.
Live evaluation
Not evaluated yet. Workspaces can request a live evaluation.
Security assessment
Risk score
28/100
Recommendation
CAUTION
Severity
MEDIUM
Savant decision
Review advised
The assessment recommends caution with a risk score of 20/100 or more; review its findings before use. Static security analysis completed.
4 patterns found
- MCP Least Privilege: Skill declares no tool scope ('permissions' or 'allowed-tools') but code capabilities were detected: env, file_read, network.medium · SKILL.md:1 · Without declared permissions the skill's intent is opaque and cannot be validated.
- Dangerous Code Execution: torch.load(latest_model, map_location=device)medium · scripts/kronos_predictor.py:83 · Untrusted data is passed to an insecure deserializer (pickle, marshal, dill, jsonpickle, joblib, yaml.load without a safe Loader, or torch.load without weights_only). These deserializers reconstruct arbitrary objects and invoke callables during loading, so deserializing attacker-controlled bytes is equivalent to arbitrary code execution.
- Data Exfiltration: https://api.z.ai/medium · scripts/utils/llm/factory.py:75 · Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
- Dangerous Code Execution: torch.load(path, map_location=self.device)medium · scripts/utils/predictor/evaluation.py:39 · Untrusted data is passed to an insecure deserializer (pickle, marshal, dill, jsonpickle, joblib, yaml.load without a safe Loader, or torch.load without weights_only). These deserializers reconstruct arbitrary objects and invoke callables during loading, so deserializing attacker-controlled bytes is equivalent to arbitrary code execution.
Structure
- Ships 32 executable scriptsscripts/__init__.py, scripts/forecast_agent.py, scripts/json_utils.py, scripts/kronos_predictor.py, scripts/predictor/model/__init__.py, …. Review what they do before enabling the skill for agents with tool access.
- No license declaredConfirm you may reuse this skill before importing it into your repository.
- The source hub's security checks flagged this skillGen Agent Trust Hub: warn (The alphaear-predictor skill provides tools for financial market analysis and forecasting. While well-designed, it contains a security risk in its model loading logic where it may deserialize local files using the insecure pickle format. Additionally, the skill's reliance on processing external financial news creates a surface for indirect prompt injection attacks.); Socket: warn (1 alert: gptAnomaly); Snyk: warn (Risk: MEDIUM · 1 issue); Runlayer: fail (10/33 files flagged)
SKILL.md
---
name: alphaear-predictor
description: Market prediction skill using Kronos. Use when user needs finance market time-series forecasting or news-aware finance market adjustments.
---
# AlphaEar Predictor Skill
## Overview
This skill utilizes the Kronos model (via `KronosPredictorUtility`) to perform time-series forecasting and adjust predictions based on news sentiment.
## Capabilities
### 1. Forecast Market Trends
### 1. Forecast Market Trends
**Workflow:**
1. **Generate Base Forecast**: Use `scripts/kronos_predictor.py` (via `KronosPredictorUtility`) to generate the technical/quantitative forecast.
2. **Adjust Forecast (Agentic)**: Use the **Forecast Adjustment Prompt** in `references/PROMPTS.md` to subjectively adjust the numbers based on latest news/logic.
**Key Tools:**
- `KronosPredictorUtility.get_base_forecast(df, lookback, pred_len, news_text)`: Returns `List[KLinePoint]`.
**Example Usage (Python):**
```python
from scripts.utils.kronos_predictor import KronosPredictorUtility
from scripts.utils.database_manager import DatabaseManager
db = DatabaseManager()
predictor = KronosPredictorUtility()
# Forecast
forecast = predictor.predict("600519", horizon="7d")
print(forecast)
```
## Configuration
This skill requires the **Kronos** model and an embedding model.
1. **Kronos Model**:
- Ensure `exports/models` directory exists in the project root.
- Place trained news projector weights (e.g., `kronos_news_v1.pt`) in `exports/models/`.
- Or depend on the base model (automatically downloaded).
> [!CAUTION]
> **Model Security**: This skill loads model weights from `exports/models`. We use `weights_only=True` and only scan for the `kronos_news_*.pt` pattern. Ensure you only place trusted checkpoints in this directory.
2. **Environment Variables**:
- `EMBEDDING_MODEL`: Path or name of the embedding model (default: `sentence-transformers/all-MiniLM-L6-v2`).
- `KRONOS_MODEL_PATH`: Optional path to override model loading.
## Dependencies
- `torch`
- `transformers`
- `sentence-transformers`
- `pandas`
- `numpy`
- `scikit-learn`