No description
  • Python 98.4%
  • Dockerfile 1.6%
Find a file
katakrdp 147f74241d docs: add LLM-based final analysis layer with multi-model support
Integrate optional AI analysis using OpenAI-compatible endpoints. Adds
configuration wizard, CLI/gRPC overrides, and dual-mode inference:
single-model for direct decisions, multi-model for consensus analysis
with QUICK model critiques aggregated by DEEP model.

New files: ai_config.py (config management), ai_client.py (API client),
ai_analyzer.py (inference engine), AGENT.md (LLM protocol spec).
Updated CLI, gRPC server, and report rendering to surface AI verdicts
alongside numeric decision engine output.
2026-05-19 13:57:33 +00:00
asentry docs: add LLM-based final analysis layer with multi-model support 2026-05-19 13:57:33 +00:00
protos docs: add LLM-based final analysis layer with multi-model support 2026-05-19 13:57:33 +00:00
.dockerignore feat: add asentry stock analysis CLI and gRPC server 2026-05-19 13:32:53 +00:00
.gitignore feat: add asentry stock analysis CLI and gRPC server 2026-05-19 13:32:53 +00:00
AGENT.md docs: add LLM-based final analysis layer with multi-model support 2026-05-19 13:57:33 +00:00
docker-compose.yml feat: add asentry stock analysis CLI and gRPC server 2026-05-19 13:32:53 +00:00
Dockerfile feat: add asentry stock analysis CLI and gRPC server 2026-05-19 13:32:53 +00:00
GRPCUSAGE.md docs: add LLM-based final analysis layer with multi-model support 2026-05-19 13:57:33 +00:00
README.md docs: add LLM-based final analysis layer with multi-model support 2026-05-19 13:57:33 +00:00
requirements.txt feat: add asentry stock analysis CLI and gRPC server 2026-05-19 13:32:53 +00:00

Asentry-cli

Spek

  • bisa menjalankan dengan python cli
  • bisa juga berjalan sebagai server pthon gRPC

Fitur

  • mengambil data saham menggunakan yfinance2
  • memilih strategi analisi (Scalping/Short Swing, Trend Filtering, Volatility & Risk Management)
  • scalping menggunakan kombinasi analisis Bollinger Bands + RSI + Candlestick + Volume
  • Trend filtering menggunakan kombinasi analisis EMA (Exponential Moving Average) 20 & 50 + MACD
  • Volatility & Risk Management menggunakan kombinasi analisis ATR (Average True Range) + Fibonacci Extension
  • atau kombinasi dari ke 3 nya langsung
  • otomatis mengambil tick range, dan range tanggal nya berdasarkan date yang diminta user, misal user meminta tanggal 16-05-2026, maka akan otomatis mengambil data kebelakang mulai dari 16.05-2026,
  • advance sistem pengambilan keputusan
  • kalau mode cli maka return nya adalah .txt, kalau mode server ya kembalikan hasilnya lewat gRPC
  • buat menu utama yang bisa memilih menjalankan proyek ini dengan cara apa, cli mode atau gRPC
  • buat agar semua weight variabel yang digunakan bisa di konfigurasi manual namun sediakan default nya (yang terbaik secara general)

Instalasi

python -m venv .venv
# Windows PowerShell
.venv\Scripts\Activate.ps1
# Linux / macOS
source .venv/bin/activate

pip install -r requirements.txt

Cara menjalankan

Menu utama (interaktif)

python -m asentry

Akan menampilkan menu untuk memilih CLI mode atau gRPC server mode.

Mode CLI langsung

python -m asentry cli --symbol AAPL --date 2026-05-16 --strategy combined

Output akan disimpan ke reports/AAPL_2026-05-16_combined.txt. Tambahkan --print untuk juga mencetak isi laporan ke layar.

Pilihan strategi: scalping, trend, volatility, combined (default).

Override bobot/parameter, contoh:

python -m asentry cli -s BBCA.JK -d 2026-05-16 -S scalping \
  --set scalping.rsi_period=10 \
  --set scalping.rsi_oversold=25 \
  --set scalping.bb_weight=0.4

Section yang bisa di-override: scalping.*, trend.*, volatility.*, combined.*, decision.*. Lihat asentry/config.py untuk daftar field lengkap beserta nilai default.

Override interval/lookback secara manual juga bisa:

python -m asentry cli -s AAPL -d 2026-05-16 --interval 1h --lookback-days 90

Mode gRPC server

python -m asentry serve --host 0.0.0.0 --port 50051

Stub Python (asentry_pb2.py, asentry_pb2_grpc.py) akan otomatis digenerate dari protos/asentry.proto ke asentry/_grpc_gen/ saat pertama dijalankan.

Service: asentry.v1.AsentryService / RPC Analyze. Lihat protos/asentry.proto untuk skema request/response lengkap. Field include_report_text=true akan mengembalikan teks laporan yang sama dengan output mode CLI.

Auto tick & range

User cukup memberi target_date. Sistem otomatis memilih tick (interval) dan jumlah hari ke belakang sesuai strategi:

Strategi Interval Lookback
scalping 15m 30 hari
trend 1d 365 hari
volatility 1d 180 hari
combined 1h 365 hari

Bisa di-override via --interval dan --lookback-days pada CLI atau field setara pada request gRPC.

Catatan

  • README awal menyebut yfinance2; paket di PyPI bernama yfinance, itulah yang dipakai di sini.
  • Output strategi: skor [-1.0, 1.0] (negatif bearish, positif bullish)
    • confidence [0.0, 1.0]. Decision engine memetakan keduanya ke STRONG_BUY / BUY / HOLD / SELL / STRONG_SELL berdasar threshold di DecisionThresholds (juga overridable via --set decision.*).
  • Laporan bukan saran finansial.

Analisis akhir dengan AI (opsional)

Selain decision engine numerik, Asentry punya lapisan analisis akhir berbasis LLM via endpoint OpenAI-compatible (OpenAI, OpenRouter, Together, Groq, vLLM, Ollama OpenAI mode, LM Studio, dll.).

Tiga strategi pemanggilan model:

  • off : tidak panggil AI (default).
  • single : satu model menerima ringkasan analisis dan memutuskan langsung.
  • multi : daftar QUICK models mengkritik tiap sudut analisis, hasilnya digabung lalu diberikan ke DEEP model sebagai pengambil keputusan akhir.

Semua model wajib mengikuti protokol respons di AGENT.md (output satu objek JSON sesuai skema). File itu otomatis dimuat sebagai system prompt dan tidak perlu disertakan secara manual.

Konfigurasi model

Masuk wizard:

python -m asentry config
# atau pilih "3) Model Config (AI)" di menu utama
python -m asentry              # lalu ketik 3

Wizard akan meminta:

  1. Base URL endpoint (mis. https://api.openai.com/v1, https://openrouter.ai/api/v1, http://localhost:11434/v1).
  2. API key.
  3. Mengambil daftar model dari endpoint (GET /models); pilih dengan nomor atau ketik nama langsung.
  4. Pilih mode (off / single / multi).
  5. Pilih SINGLE model (mode single) atau DEEP model + daftar QUICK models (mode multi).

Konfigurasi disimpan ke ~/.asentry/ai_config.json (lokasinya bisa diubah via env ASENTRY_AI_CONFIG). Lihat status saat ini:

python -m asentry config show

Override via environment

Field di config bisa di-override per proses:

Env Keterangan
ASENTRY_AI_BASE_URL Base URL endpoint
ASENTRY_AI_API_KEY API key
ASENTRY_AI_MODE off / single / multi
ASENTRY_AI_SINGLE_MODEL Nama model SINGLE
ASENTRY_AI_DEEP_MODEL Nama model DEEP
ASENTRY_AI_QUICK_MODELS Daftar QUICK, dipisah koma
ASENTRY_AI_CONFIG Path file config (default ~/.asentry/ai_config.json)

Override via CLI

# Mode single, override sekali jalan
python -m asentry cli -s AAPL -d 2026-05-16 -S combined \
  --ai-mode single --ai-single-model gpt-4o-mini

# Mode multi
python -m asentry cli -s AAPL -d 2026-05-16 -S combined \
  --ai-mode multi \
  --ai-deep-model gpt-4o \
  --ai-quick-model gpt-4o-mini --ai-quick-model llama-3.1-8b-instruct

Flag tambahan: --ai-base-url, --ai-api-key, --ai-temperature, --ai-max-tokens. Hasil AI muncul sebagai blok AI FINAL ANALYSIS di file laporan .txt.

Mode gRPC

AnalyzeRequest punya field AI yang setara: ai_mode, ai_base_url, ai_api_key, ai_single_model, ai_deep_model, ai_quick_models, ai_temperature, ai_max_tokens. Kalau dikirim kosong, server pakai konfigurasi ~/.asentry/ai_config.json / environment-nya sendiri.

AnalyzeResponse.ai (message AIBlock) berisi mode, enabled, error, final (AIVerdict), dan quick (list AIVerdict untuk mode multi). Detail field di protos/asentry.proto dan GRPCUSAGE.md.