<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Emma Saka</title>
    <description>The latest articles on DEV Community by Emma Saka (@emma019).</description>
    <link>https://dev.to/emma019</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3631496%2Fcf6b9dba-e46c-4ef8-8966-e9ce11f15ba0.png</url>
      <title>DEV Community: Emma Saka</title>
      <link>https://dev.to/emma019</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/emma019"/>
    <language>en</language>
    <item>
      <title>[Python] Quantifying Mark Minervini's VCP Strategy: Automating US Stock Scanning to AI Diagnosis</title>
      <dc:creator>Emma Saka</dc:creator>
      <pubDate>Sun, 15 Feb 2026 01:20:49 +0000</pubDate>
      <link>https://dev.to/emma019/python-quantifying-mark-minervinis-vcp-strategy-automating-us-stock-scanning-to-ai-diagnosis-3mdc</link>
      <guid>https://dev.to/emma019/python-quantifying-mark-minervinis-vcp-strategy-automating-us-stock-scanning-to-ai-diagnosis-3mdc</guid>
      <description>&lt;h1&gt;
  
  
  [Python] Quantifying Mark Minervini's VCP Strategy: Automating US Stock Scanning to AI Diagnosis
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Last updated:&lt;/strong&gt; February 15, 2026&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Posted:&lt;/strong&gt; February 15, 2026&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In US stock investing, Mark Minervini's advocated &lt;strong&gt;VCP (Volatility Contraction Pattern)&lt;/strong&gt; and &lt;strong&gt;RS (Relative Strength)&lt;/strong&gt; — measuring relative strength against the overall market — are extremely powerful techniques.&lt;/p&gt;

&lt;p&gt;However, it is physically impossible for individual investors to visually scan hundreds or thousands of stocks every day to find those that "perfectly match the conditions right now." Moreover, humans are inevitably influenced by emotions, leading to delayed stop-losses or entries without solid reasoning.&lt;/p&gt;

&lt;p&gt;To address this, I built &lt;strong&gt;"SENTINEL PRO"&lt;/strong&gt;, an integrated US stock scanner that combines technicals, fundamentals, and AI diagnosis — turning my own investment discipline into a system for efficiency and objectivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Deliverables
&lt;/h2&gt;

&lt;p&gt;The developed code and demo site are publicly available here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/EMMA019/US-stocks" rel="noopener noreferrer"&gt;https://github.com/EMMA019/US-stocks&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Live Demo: &lt;a href="https://us-stockssc.streamlit.app/" rel="noopener noreferrer"&gt;https://us-stockssc.streamlit.app/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;※ The demo site runs on Streamlit Cloud and uses yfinance for data retrieval.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. System Design Philosophy
&lt;/h2&gt;

&lt;p&gt;"SENTINEL PRO" is not just a simple screener — it automatically filters and evaluates stocks in the following three steps:&lt;/p&gt;

&lt;p&gt;① Quantitative Technical Analysis (VCP Scoring)&lt;/p&gt;

&lt;p&gt;I defined subjective "price contraction" as an objective 105-point score using a custom algorithm.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tightness (40pt): Compares high-low ranges over 20/30/40/60 days to detect volatility contraction.&lt;/li&gt;
&lt;li&gt;Volume (30pt): Checks if recent volume has dried up relative to historical averages.&lt;/li&gt;
&lt;li&gt;MA Alignment (30pt): Confirms perfect order in 50/150/200-day moving averages (rising trend).&lt;/li&gt;
&lt;li&gt;Pivot Bonus (5pt): Measures proximity to recent high (pivot point).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;② Mathematical Position Sizing&lt;/p&gt;

&lt;p&gt;To strictly manage risk, position size is calculated backward from allowable loss per trade (e.g., 1.5% of total capital), adjusted for volatility.&lt;/p&gt;

&lt;p&gt;Shares = min( (Total Capital × Account Risk %) / (Entry - Stop) , (Total Capital × 0.4) / Entry )&lt;/p&gt;

&lt;p&gt;③ AI Qualitative Diagnosis&lt;/p&gt;

&lt;p&gt;For stocks filtered by quantitative scan, the latest news and insider activity are fed into DeepSeek (AI) via API. This generates a final report considering risks and catalysts invisible in pure technicals.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Tech Stack and Automation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Language: Python 3.11&lt;/li&gt;
&lt;li&gt;Libraries: yfinance (data fetch), pandas (analysis), streamlit (UI), plotly (visualization)&lt;/li&gt;
&lt;li&gt;Infrastructure: GitHub Actions (daily auto-run), Streamlit Cloud&lt;/li&gt;
&lt;li&gt;Notification: LINE Notify API&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub Actions automatically scans after US market close, saves results as JSON, and sends LINE notifications with details for any "ACTION" (immediate consideration) stocks that match criteria.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Real Trade Example: Corning (GLW)
&lt;/h2&gt;

&lt;p&gt;Here’s an actual example of how the system performed in February 2026.&lt;/p&gt;

&lt;p&gt;Corning (GLW), a major optical fiber company, saw a sharp RS surge due to a massive contract news with Meta. The system detected a temporary tight contraction (VCP) and triggered a signal.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Content&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ticker&lt;/td&gt;
&lt;td&gt;Corning (GLW)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Entry Price&lt;/td&gt;
&lt;td&gt;$116.00 (filled on 2/7)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exit Price&lt;/td&gt;
&lt;td&gt;$130.30 (filled on 2/11)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Return&lt;/td&gt;
&lt;td&gt;+12.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Holding Period&lt;/td&gt;
&lt;td&gt;4 trading days&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Insight&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The system captured the tight flag formation after the surge. Additionally, the insider monitoring engine detected high-level selling near highs, allowing mechanical profit-taking at the target R-multiple without chasing further.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Summary
&lt;/h2&gt;

&lt;p&gt;"SENTINEL PRO" aims to eliminate "indecision" from investing through engineering.&lt;/p&gt;

&lt;p&gt;There is no holy grail in investing, but &lt;strong&gt;systematically finding high-expectancy patterns and taking mathematically correct risks&lt;/strong&gt; is an effective way to improve long-term survival probability.&lt;/p&gt;

&lt;p&gt;The source code is open on GitHub. Feel free to fork it and customize with your own strategies.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/EMMA019/US-stocks" rel="noopener noreferrer"&gt;https://github.com/EMMA019/US-stocks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;This article and tool are for educational and research purposes only and do not constitute investment advice or recommendations to buy/sell any specific securities. All investment decisions are your own responsibility.&lt;/p&gt;

</description>
      <category>python</category>
      <category>ai</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
