JSPM

@nepse-toolkit/analysis

0.2.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 15
  • Score
    100M100P100Q57007F
  • License MIT

Technical indicators, screening strategies, and backtesting for NEPSE

Package Exports

  • @nepse-toolkit/analysis

Readme

@nepse-toolkit/analysis

Technical indicators, screening strategies, fundamental valuation, and backtesting for NEPSE.

Part of the nepse-toolkit monorepo.

Features

Technical Indicators (9)

All indicators account for NEPSE's 10% daily circuit breaker limit.

  • SMA / EMA — Simple and Exponential Moving Averages
  • RSI — Relative Strength Index with circuit-aware extremes at 30/70
  • MACD — Moving Average Convergence Divergence (12/26/9)
  • Bollinger Bands — 20-period with squeeze detection
  • ATR — Average True Range capped at 10% circuit limit
  • VWAP — Volume Weighted Average Price
  • OBV — On Balance Volume for accumulation/distribution
  • Stochastic — %K/%D oscillator for overbought/oversold

Screening Strategies (7)

Strategy Signal
oversold_bounce RSI(14) < 30 with recovery signal
momentum_breakout SMA(20) crosses above SMA(50) with volume
high_volume_surge Volume 2x+ above 20-day average
golden_cross Recent SMA(20)/SMA(50) golden cross
bollinger_squeeze Narrowing Bollinger Bands
value_picks P/E < 15 with ROE > 10%
dividend_champions Dividend yield > 3%

Fundamental Analysis

  • Graham intrinsic value, DDM, PBV fair value
  • Portfolio P&L with Nepal capital gains tax (5% long-term / 7.5% short-term)
  • Position sizing based on risk tolerance

Backtesting

Test strategies against historical data with Sharpe ratio, max drawdown, win rate, and profit factor.

Install

npm install @nepse-toolkit/analysis

Usage

import { calculateIndicators, screenStocks, BacktestEngine } from "@nepse-toolkit/analysis";

// Technical analysis
const signals = calculateIndicators(ohlcvData);

// Screen stocks
const opportunities = screenStocks(stocksData, "oversold_bounce");

// Backtest
const engine = new BacktestEngine();
const results = engine.run("momentum_breakout", historicalData);

License

MIT