Skip to content

tsiwt/techscore_us

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TechScore US β€” Technical Indicator Stock Scorer

License: GPL v3 Python 3.8+ yfinance Streamlit App

A 10-indicator composite scoring system (0–100) for US stocks. Available as a desktop app (PyQt5) and a free online web app (Streamlit).

Main Window


🌐 Try It Online β€” No Install Required

πŸ‘‰ https://techscoreus-ztfzltktgnuxnvcjv5pk4n.streamlit.app/

The Streamlit web version runs entirely in your browser. Zero install, zero cost.

Desktop (PyQt5) Web (Streamlit)
Install required? Yes β€” Python + pip No β€” just open the link
Where it runs Your local machine Streamlit Community Cloud
Stock pools S&P 500, NASDAQ-100, Dow 30, single ticker Same
10 indicators + scoring βœ… βœ…
Real-time quote refresh βœ… β€” (planned)
CSV export Auto-save to local folder Download button in browser
Double-click β†’ Yahoo Finance βœ… Clickable ticker links
Company name lookup βœ… (slow for large pools) Omitted (avoids cloud timeout)
Works in restricted regions? Requires proxy / VPN Yes β€” cloud server fetches data directly

Features

  • 10 Technical Indicators β€” RSI, MACD, KDJ, Bollinger %B, MA Cross, Volume Ratio, ATR%, OBV Trend, Williams %R, CCI
  • Multiple Stock Pools β€” S&P 500, NASDAQ-100, Dow Jones 30, or single ticker lookup
  • Composite Scoring β€” Weighted average of 10 sub-scores, normalized to 0–100
  • Real-time Quotes β€” Refresh current price & daily change % via Yahoo Finance (desktop)
  • Auto-save CSV β€” Results auto-saved with timestamps; reload anytime
  • Color-coded Table β€” High scores highlighted in red, low scores in green; sortable columns
  • Score Distribution Chart β€” Visual histogram of score ranges (web version)
  • Double-click to Web β€” Opens Yahoo Finance page for any stock (desktop)
  • Auto-load on Startup β€” Automatically loads the most recent CSV when reopened (desktop)

Screenshots

Desktop β€” Main Scoring Interface

Main Window

Desktop β€” Indicator Scoring Guide

Indicator Guide


Quick Start β€” Desktop Version (PyQt5)

1. Install Dependencies

pip install yfinance pandas numpy PyQt5

2. Run

python techscore_us.py

3. Basic Workflow

  1. Click Update & Score β†’ Select stock pool (start with "Test 10 stocks") β†’ OK
  2. Wait for download & scoring to complete (auto-saves CSV)
  3. Click Refresh Quotes to get latest prices
  4. Double-click any row to open its Yahoo Finance page
  5. Click column headers to sort (e.g., sort by Score descending)

Quick Start β€” Web Version (Streamlit)

Option A: Use the Hosted App (Recommended)

Just open https://techscoreus-ztfzltktgnuxnvcjv5pk4n.streamlit.app/ in your browser.

  1. In the left sidebar, select Stock Pool or enter a Single Ticker
  2. Adjust the History (calendar days) slider (recommend β‰₯ 150)
  3. Click πŸš€ Run Scoring and wait for the progress bar to finish
  4. View results in the color-coded table; filter by score range
  5. Click ⬇️ Download CSV to save results locally

Option B: Run Locally

pip install streamlit yfinance pandas numpy lxml html5lib
streamlit run streamlit_app.py

Opens automatically at http://localhost:8501.

Option C: Deploy Your Own Instance

  1. Fork this repo
  2. Go to share.streamlit.io β†’ Sign in with GitHub
  3. New app β†’ Select your fork β†’ Branch: main β†’ Main file path: streamlit_app.py
  4. Click Deploy β†’ Wait 2–3 minutes β†’ Your app is live

For Users in Regions with Restricted Internet Access

πŸ’‘ The Streamlit web version does NOT require a proxy or VPN β€” the cloud server fetches data from Yahoo Finance directly. If you are in a network-restricted region, the web version is the easiest option.

The desktop version uses yfinance which accesses query1.finance.yahoo.com. This may be blocked or unstable in certain countries or regions due to network restrictions.

Option A: Switch VPN / Proxy to Global Mode

If your VPN or proxy client (e.g., Clash, V2rayN, Shadowsocks, Surge, WireGuard, etc.) is running, switch to Global Mode and run directly:

python techscore_us.py

Option B: Set Proxy Environment Variable

Find your proxy client's local HTTP port, then:

Linux / macOS:

export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
python techscore_us.py

Windows CMD:

set HTTPS_PROXY=http://127.0.0.1:7890
set HTTP_PROXY=http://127.0.0.1:7890
python techscore_us.py

Windows PowerShell:

$env:HTTPS_PROXY="http://127.0.0.1:7890"
$env:HTTP_PROXY="http://127.0.0.1:7890"
python techscore_us.py
Proxy Client Common Port
Clash 7890
V2rayN 10809
Shadowsocks 1080
Surge 6152

Tip: If your browser can open finance.yahoo.com but the script times out, it usually means your proxy only covers browser traffic. Setting the environment variables above will route Python's traffic through the proxy as well.


Indicator Weights & Scoring

Indicator Weight What It Measures
MACD(12,26,9) 15% Trend momentum & direction
RSI(14) 12% Overbought / oversold
KDJ(9,3,3) 12% Stochastic momentum
MA Cross(5/20) 12% Short vs medium trend
Bollinger %B(20) 10% Price position within bands
Volume Ratio(20d) 10% Current vs average volume
OBV Trend(5d) 10% Volume-weighted price direction
ATR%(14) 7% Volatility as % of price
Williams %R(14) 6% Momentum oscillator
CCI(14) 6% Price deviation from mean

Scoring Philosophy

Higher score = more oversold / bullish signals.

This is a contrarian / mean-reversion scoring model. A score of 80+ means the stock is showing multiple oversold signals β€” it does not guarantee a rebound.

Score Ranges

Score Interpretation Table Color
75–100 Strongly oversold / bullish signals Red background
60–74 Moderately oversold Orange background
45–59 Neutral No highlight
0–44 Overbought / bearish signals Green background

File Structure

techscore-us/
β”œβ”€β”€ LICENSE                    # GPLv3
β”œβ”€β”€ README.md
β”œβ”€β”€ requirements.txt           # Streamlit Cloud dependencies
β”œβ”€β”€ techscore_us.py            # Desktop app (PyQt5)
β”œβ”€β”€ streamlit_app.py           # Web app (Streamlit)
β”œβ”€β”€ main_us.png                # Screenshot: main window
β”œβ”€β”€ techexplain_us.png         # Screenshot: indicator guide
└── TechScore_Data_US/         # Auto-created at runtime by desktop version (git-ignored)
    β”œβ”€β”€ pool_cache.json        # Stock pool cache (7-day TTL)
    └── Predictions/
        └── TechScore_US_2025-XX-XX_XXXX.csv

Performance Notes

Stock Pool Tickers Download Time* Scoring Time
Test 10 10 ~10 sec < 1 sec
Dow 30 30 ~15 sec < 1 sec
NASDAQ-100 ~100 ~30 sec ~2 sec
S&P 500 ~500 ~1–3 min ~5 sec

*Download times depend on network speed and Yahoo Finance rate limits. Uses batch yf.download() for efficiency. Streamlit Cloud may be slightly slower due to shared resources.


Requirements

Desktop Version

  • Python 3.8+
  • OS: Windows / macOS / Linux
  • Libraries: yfinance>=0.2.31, pandas>=1.5, numpy>=1.23, PyQt5>=5.15

Web Version

  • Python 3.8+
  • Libraries (see requirements.txt): streamlit>=1.32.0, yfinance>=0.2.36, pandas>=2.0, numpy>=1.24, lxml, html5lib
  • Or just use the hosted app β€” no local install needed

Disclaimer

This software is for research and educational purposes only.

  • It does not constitute any investment advice or recommendation.
  • All investment decisions and associated risks are solely the responsibility of the user.
  • Past technical indicator patterns do not guarantee future price movements.

License

This project is licensed under the GNU General Public License v3.0.


Related Projects


Contributing

Contributions are welcome! Please feel free to:

  1. Open an Issue for bugs or feature requests
  2. Submit a Pull Request with improvements
  3. ⭐ Star this repo if you find it useful

About

Technical indicator stock scorer for US stocks. 10 indicators, composite scoring (0-100), PyQt5 GUI. Supports S&P 500, NASDAQ-100, Dow 30.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages