Skip to content

Releases: AlanFokCo/EasyQuant

v1.0.3

22 May 16:59

Choose a tag to compare

Overview

This release focuses on Web Strategy Studio enhancements, security hardening, bug
fixes, and documentation improvements.


Web Strategy Studio

New Features

  • Auto-logout on authentication failure: Users are automatically logged out when
    JWT token expires or becomes invalid (401 response), with seamless redirect to login
    page
  • Preset users configuration: Add support for configuring preset users via
    users.yaml file (recommended) or EQ_PRESET_USERS environment variable
  • Smart polling for history panel: Backtest history list only polls when there are
    active (running/queued) runs, reducing unnecessary API calls

UX Improvements

  • Fixed sidebar navigation: Navigation buttons (history, compare, data) now
    respond correctly to clicks
  • Removed registration page: Simplified login flow — users must be pre-configured
    by server
  • Loading indicators: Added loading states for login button, stock search, and
    backtest runs
  • Hover states: Enhanced button hover effects with visual feedback
  • Translated labels: Key UI labels translated to Chinese (e.g., "初始资金",
    "使用本地数据")
  • Accessibility: Added aria-live="polite" for toast notifications, improved
    keyboard navigation

Bug Fixes

  • Race condition in run_queue.py: Fixed semaphore acquisition order to prevent
    queue corruption
  • Stream hub buffer operations: Added async lock for concurrent buffer access
  • Stock picker search cancellation: AbortController cancels previous requests when
    new search starts
  • Unmount state handling: Added mountedRef to prevent setState on unmounted
    components
  • JWT leak in URLs: Fixed JWT token appearing in URLs when opening reports in new
    tabs

Security

  • Harden authentication: Improved JWT handling and token validation
  • Environment variable leak: Filter sensitive variables (EQ_JWT_SECRET,
    EQ_ADMIN_PASSWORD) from subprocess environment
  • Static reports mount removed: Reports now served through authenticated API
    endpoint only

eqlib Core

Bug Fixes

  • NaN handling in financial calculations: Added pd.isna() and np.isfinite()
    checks in Sharpe ratio, Sortino ratio, max drawdown, and beta calculations — returns
    stable values for edge cases (empty data, zero volatility)

Documentation

  • README (English & Chinese): Added Web Studio section, improved Quick Start
    guidance (PyPI vs source install)
  • User Guide: Added Web Studio alternative for browser-based users
  • Tutorials: Added Web Studio as learning path option
  • FAQ: Added 6 new Web Studio questions (login, deployment, troubleshooting)

GitHub Pages

  • New hero card: Added "Web 工作室" (Web Studio) card on homepage
  • Card icons: Added emoji icons for each hero card (🚀, 📖, 🎓, 🌐, 🔧)
  • Hover effects: Enhanced card hover with elevation animation and shadow
  • Search shortcut hint: Shows "⌘K 快捷搜索" when search input focused
  • Focus-visible states: Improved accessibility for keyboard navigation
  • Back-to-top animation: Added fade-in-up animation
  • Navigation indicator: Added blue accent bar for active navigation items

Installation

pip install easyquant-eqlib --upgrade

---
Upgrade Notes for Web Studio Users

1. Update preset users: Create web_strategy_studio/backend/users.yaml:

preset_users:
  - username: your_username
    password: your_password
2. JWT secret for production: Set stable JWT secret to prevent logout after restart:

export EQ_JWT_SECRET="your-secure-random-key"
3. Admin password: Change default admin password:

export EQ_ADMIN_PASSWORD="your-secure-password"

---
Full Changelog: https://github.com/AlanFokCo/EasyQuant/compare/v1.0.2...v1.0.3

v1.0.0

15 May 15:06
2911e90

Choose a tag to compare


🚀 What's New

Web Strategy Studio

  • Full-featured browser-based strategy editor & backtesting workbench
  • Monaco code editor with Python syntax highlighting, autocompletion, and static
    analysis
  • Real-time SSE log streaming + progress bar + Toast notifications
  • Backtest history panel with metrics comparison (up to 5 runs)
  • Embedded HTML report preview (equity curve, K-line chart, monthly returns, trade
    log)
  • One-line startup (npm run dev:all) / Docker Compose deployment / Nginx reverse
    proxy

Bug Fixes

  • Fixed zero-trade bug caused by data preloading timing in engine.py
  • Fixed division-by-zero crashes when starting_cash=0 (report.py ×4,
    attribution.py)
  • Fixed Python 3.9 ForwardRef compatibility (X | NoneOptional[X])
  • Fixed REPORT_MISSING caused by relative artifact_dir path
  • Fixed MissingGreenlet in compare_runs via selectinload eager loading
  • Fixed deprecated pandas reindex(method="nearest")get_indexer
  • Fixed frontend 404 cleanup for stale strategy IDs + error display

Documentation

  • Web Studio user manual with 5 annotated screenshots
  • Environment setup & deployment guide (local dev / Docker / Nginx)

Full Changelog: https://github.com/AlanFokCo/EasyQuant/compare/v1.0.0